🎵 The oUTSKIRTs Player - Changelog
🚀 Build 32 (Current)
🎲 Fast Random-sortering
- Ensartet sortering: Visuelt playlist og afspiller følger nu samme tilfældige rækkefølge
- Fast random-sortering - samme rækkefølge i UI og afspilning
- Løst duplikerede randomiseringer mellem komponenter
- Stabil oplevelse under afspilning
- Generelt tilgængelig sortering: Ikke længere afhængig af eksperimentelle funktioner
- Sortering fungerer altid uanset eksperimentelle indstillinger
- Ren adskillelse mellem sortering og eksperimentelle funktioner
- Forbedret brugeroplevelse med klar funktionalitet
- Bland-knap til random: Generer ny tilfældig rækkefølge med ét klik
- Smart bland-knap der kun vises ved random-sortering
- Øjeblikkelig ny rækkefølge-generation
- Visuel feedback og debug-logging
- Brugerindstilling for sortering: Vis/skjul sorteringskontroller efter behov
- Dedikeret indstilling i settings-menuen
- Persistent indstilling huskes mellem sessioner
- Brugervenlig kontrol over UI-kompleksitet
🎯 Forbedret Sorteringsoplevelse
- Konsistent sortering: Samme rækkefølge i UI og afspilning uanset metode
- Nyeste først: Sorteret efter ændringsdato
- Alfabetisk: Sorteret efter filnavn
- Tilfældig: Stabil rækkefølge med bland-mulighed
- Smart sortering-kontrol: Intelligent håndtering af sorteringstilstande
- Automatisk rydning af random-ordrer ved skift til andre metoder
- Optimeret hukommelsesforbrug
- Problemfri navigation mellem forskellige sorteringsmetoder
🚀 Build 31 (Current)
🔔 Nyt Notifikationssystem
- Automatisk tjek for nye numre: Hver 2. time mellem 08:00-22:00
- Smart baseline-system forhindrer falske positive ved første aktivering
- Intelligent ny-sang-detektion med MD5-hash sammenligning
- Batterioptimereret med WorkManager og netværks-begrænsninger
- Android-notifikationer: Direkte afspilning af nye numre
- 'Afspil nye numre' knap i notifikationen
- Perfekt dansk grammatik: '1 ny sang tilføjet' vs 'X nye sange
tilføjet'
- Persistent indstilling huskes mellem app-sessioner
- Test og fejlfinding: Manuel funktionalitet til udviklere
- 'Tjek for nye numre nu' knap til øjeblikkelig test
- Nulstil baseline-knap til test-formål
- Eksperimentel funktion i indstillingsmenuen
⚡ Ydeevne og Stabilitet
- Timeout-beskyttelse: App hænger ikke længere ved
server-problemer
- Forbedret HTTP-anmodninger med connection og read timeouts
- Optimeret opstartsydelse med hurtigere feeder API
- Korrekt API-endpoint brug (get_latest_songs)
🚀 Build 30
🌐 Komplet Oversættelses-system Migration
- Dynamisk sprogskift: Sprog kan nu ændres uden app-genstart
- UI opdateres øjeblikkeligt ved sprogskift
- Ingen app-genstart nødvendig
- Hurtigere og mere flydende brugeroplevelse
- Komplet string migration: Alle UI-strings bruger nu det nye
StringManager system
- Erstattet alle context.getString() og stringResource() kald
- Centraliseret string-håndtering
- Konsistent oversættelse på tværs af alle UI-komponenter
- Forbedret kodebase: Optimeret string management
- Fjernet afhængighed af Android's traditionelle string-resources
- Forbedret UI-responsivitet ved sprogskift
- Komplet migration af alle dialog-komponenter
🔧 Tekniske forbedringer
- StringManager integration: Ny centraliseret string-håndtering
- LocaleHelper opdatering: Integreret med StringManager for
dynamiske opdateringer
- LocalizedText component: Ny Compose UI-komponent til automatisk
sprogopdatering
🐛 Bug fixes
- Løst problemer med sprogskift der afbrød afspilning
- Fikset UI-komponenter der ikke opdateredes ved sprogskift
- Forbedret null-safety i string formatting
🚀 Build 27
📁 Ny Opdateringsstruktur
- Opdateret mappe-struktur: APK-filer er nu organiseret i
separate mapper
- App/Stable - Stabile builds til almindelig brug
- App/Dev - Development builds til test
- App/Oldbuilds - Ældre builds til arkivering
- App-mappen vises ikke længere i mappe-browseren
- Branch Preference (Eksperimentel): Vælg hvilken branch du vil
følge
- Stable - Tjek kun stable branch for opdateringer
- Development - Tjek både stable og development branches
- Kun tilgængelig når "Eksperimentelle funktioner" er aktiveret
- Development builds kan være ustabile
- Forbedret build-navigation: Builds er nu organiseret i fold-ud
lister
- Separate sektioner for Stable, Development og gamle builds
- Bedre oversigt over tilgængelige builds
- Klar indikation af build-type og status
🔧 Tekniske forbedringer
- Forbedret opdateringssystem: Støtte for flere build-branches
- DataStore integration: Branch preference gemmes lokalt
- Intelligent opdateringschecks: Tjekker relevante mapper baseret
på indstillinger
🐛 Bug fixes
- App-mappen vises ikke længere i musik-browseren
- Forbedret fejlhåndtering ved opdateringschecks
🚀 Build 26
🎵 Afspilnings-forbedringer
- Ingen automatisk sangvalg ved opstart: Appen husker ikke
længere sidste sang ved opstart
- Ingen sang vælges automatisk når appen starter
- Afspilning starter kun ved eksplicit brugerhandling
- Brugeren har fuld kontrol over hvad der afspilles
- Forbedret "Næste" og "Forrige" funktionalitet: Konsistent
adfærd i app og notifikation
- "Næste" og "forrige" knapper virker nu ens i app og notifikation
- Afspilning starter automatisk ved sangskift
- Løst timing-problemer med Media3 queue og afspilning
- Sprogskift uden afbrydelse: Sprogskift afbryder ikke længere
afspilning
- Gemmer afspilningstilstand (sang, position, afspilningstilstand) ved
sprogskift
- Genindlæser UI med det nye sprog uden at genstarte app'en
- Gendanner afspilningstilstanden efter sprogskift
- Meget hurtigere overgang end tidligere genstart
🔧 Tekniske forbedringer
- Forbedret state management: Bedre håndtering af
afspilningstilstand
- Optimeret sprogskift: Ny funktion der bevarer afspilning ved
sprogskift
- Timing-optimering: Løst problemer med Media3 queue og
afspilning
🐛 Bug fixes
- Fikset problem hvor appen automatisk valgte og startede afspilning ved opstart
- Løst problem hvor "næste" i app ikke startede afspilning
- Fikset sprogskift der afbrød afspilning
- Forbedret brugeroplevelse ved sangskift
🚀 Build 25
🎮 Player Størrelse Forbedringer
- Gendannet Indstillinger Player Minimering: Playeren minimeres
nu automatisk når man går til indstillinger
- Playeren minimeres til 25% af skærmhøjden når indstillingsmenuen åbnes
- Når man forlader indstillinger vender playeren tilbage til sin tidligere
størrelse
- Smooth animation med 300ms overgang for bedre brugeroplevelse
- Forbedret Player Størrelses-håndtering: Optimeret logik for
player-størrelse genindlæsning
- Gemmer brugerens valgte player-størrelse når man går til indstillinger
- Genindlæser korrekt størrelse når man forlader indstillinger
- Opdaterer gemt størrelse når brugeren ændrer player-størrelse manuelt
📱 Opdaterings-dialog Forbedringer
- Responsiv Opdaterings-dialog: Forbedret dialog-størrelse for
små telefoner
- Øget dialog-højde fra 35% til 60% på små telefoner
- Øget dialog-højde fra 35% til 45% på normale telefoner
- Tilpasset tekst-størrelse og knap-højde for bedre synlighed
- Scrollbar Dialog: Tilføjet scroll-funktionalitet for sikkerhed
- Alt indhold er nu tilgængeligt uanset skærmstørrelse
- Scroll vises kun når det er nødvendigt
- Fremtidssikker løsning der håndterer ekstra indhold
- Optimeret UI for Små Enheder: Mindre padding og spacing på små
telefoner
- Reduceret padding fra 24dp til 20dp på små telefoner
- Mindre spacing mellem elementer for at spare plads
- Større knapper (44dp) der er lettere at trykke på
🔧 Tekniske Forbedringer
- Animeret Player Størrelse: Implementeret smooth animation for
player-størrelse ændringer
- Forbedret State Management: Bedre håndtering af
player-størrelse state
- Responsiv Design: Optimeret UI for alle enhedsstørrelser
🐛 Bug Fixes
- Gendannet funktionalitet til at minimere player når man går til indstillinger
- Fikset problem hvor opdaterings-dialog var for lille på små telefoner
- Løst problem hvor knapper i opdaterings-dialog ikke var synlige
- Forbedret brugeroplevelse på små enheder
🚀 Build 22
🔧 Telemetri System Overhaul
- Session-baseret Tracking: Komplet redesign af telemetri systemet for præcis spilletids-måling
- Implementeret incremental play timer der kun tracker spilletid siden sidste event
- Play segments starter ved play/resume/seek og stopper ved pause/complete/stop
- Eliminerer dobbelt-tælling og akkumulering af spilletid
- Pause-tid Ekskludering: Pause-tid tælles ikke længere som spilletid
- Når sang pauses, registreres kun faktisk spilletid siden sidste event
- Ved resume starter ny timer fra nul
- Seek operationer starter nye play segments for korrekt tid-tracking
- Intelligent Event Håndtering: Forbedret event-logik for præcise statistikker
- Forhindrer falske pause events under sang-skift
- Korrekt håndtering af naturlig sang-afslutning vs manuel skip
- Backend validering forhindrer dobbelt-registrering inden for 5 sekunder
📊 Forbedret Statistik Nøjagtighed
- Akkurat Spilletids-rapportering: Hver pause/complete sender kun incremental spilletid
- Første pause: kun spilletid siden start
- Anden pause: kun spilletid siden resume (ikke akkumuleret)
- Sang completion: kun spilletid siden sidste resume
- Session vs Incremental Tracking: Intelligent skelnen mellem event-typer
- Stop events (sang-skift): sender total session spilletid
- Pause/complete events: sender kun incremental spilletid siden sidste event
- Seek Håndtering: Seek operationer påvirker ikke spilletids-beregninger
- Stopper current segment før seek
- Starter nyt segment efter seek
- Seek-tid tælles ikke som spilletid
🛠️ Tekniske Forbedringer
- Session Variabel Nulstilling: Komplet reset af alle timers ved sang-skift
- Debug Logging: Udvidet logging for telemetri debugging og validering
- Backend Validering: PHP backend accepterer duration fra både play_stop og play_complete events
🐛 Bug Fixes
- Løst problem med dobbelt-registrering af spilletid når sange slutter naturligt
- Fikset pause-tid der blev inkluderet i total spilletid
- Elimineret falske pause events under automatisk sang-overgang
- Rettet forkert duration-beregning ved manuel sang-skift under pause
🚀 Build 20
💬 Kommentar System Forbedringer
- Forbedret Kommentar Workflow: Dialogen lukker ikke længere når man sender kommentarer
- Kommentarfeltet nulstilles automatisk efter indsendelse
- Dialogen skifter til "All feedback" fanen for at vise den nye kommentar
- Brugeroplevelsen er nu mere intuitiv og effektiv
- Optimeret Kommentar Interface: Kommentarfeltet starter altid tomt når dialogen åbnes
- Gør det hurtigere at skrive nye kommentarer
- Fjerner behovet for at slette gammel tekst først
- Tidligere indstillinger (alias/privacy) gemmes stadig
- Fikset Anonym Visning: Løst problem med "null" i kommentarlister
- Både rigtige NULL og tekst-strengen "null" vises nu som "anonym"
- Konsistent håndtering på tværs af alle feedback-visninger
- Forbedret data-integritet for eksisterende kommentarer
🔧 System Optimering
- Fjernet WiFi Status Logging: Elimineret regelmæssig WiFi status logging for mindre støj i logs
- Forbedret Data Håndtering: Bedre null-værdi håndtering i database/API kommunikation
🐛 Bug Fixes
- Løst problem hvor kommentarfelt ikke blev nulstillet efter indsendelse
- Fikset race condition mellem UI state og data refresh
- Forbedret anonym-visning for både eksisterende og nye kommentarer
🚀 Build 18
🎮 Android TV Navigation & UX Forbedringer
- Øget Minimum Player Størrelse: Hævet fra 40% til 45% på Android TV for bedre synlighed
- Implementeret Dobbelt-klik Toggle: Forbedret dobbelt-klik funktionalitet med intelligent toggle
- Dobbelt-klik på player area toggler mellem maksimeret (80%) og gemte størrelse
- Dobbelt-klik på faner minimerer player til gemte størrelse (alle enheder)
- Toggle-logik detekterer om player er maksimeret (>75%) og skifter tilsvarende
- Forbedret Dobbelt-klik Navigation: Fikset kompatibilitet med alle input-metoder
- Hybrid løsning kombinerer onClick til enkelt-klik og detectTapGestures til dobbelt-klik
- Enkelt-klik virker med keyboard, fjernbetjening, mus og touch
- Dobbelt-klik virker kun med mus og touch (som forventet)
- Tab navigation fungerer korrekt med fjernbetjening og keyboard
🎨 UI & Brugerinteraktion
- Responsive Størrelses-kontrol: Forbedret brugeroplevelse på alle enheder
- Cross-platform Kompatibilitet: Funktionalitet virker på Android TV, tablets, telefoner og desktop
🐛 Bug Fixes
- Fikset dobbelt-klik på faner der ikke virkede på grund af onClick konflikter
- Løst tab navigation problemer efter dobbelt-klik implementation
- Forbedret input-metode kompatibilitet for alle enheds-typer
🚀 Build 16
🎮 Android TV Navigation & UX Forbedringer
- Intelligent Player Resizing: Dynamisk player skalering baseret på fokus navigation
- 80% størrelse når fokus er på player controls (play/pause/prev/next/cast/lyrics/settings)
- 45% størrelse ved navigation i tabs eller indhold (sange/mapper/favoritter)
- 25% størrelse når indstillingsmenu er åben
- Dobbelt-klik Størrelses-kontrol: Hurtig player størrelse ændring via dobbelt-klik
- Dobbelt-klik i player området toggler mellem maksimeret og standard størrelse (alle enheder)
- Dobbelt-klik på faner minimerer playeren til standard størrelse (alle enheder)
- Fjernet Splitter Bar: Kan ikke bruges med fjernbetjening på Android TV
- Forbedret Tab Navigation: Pil-op fra alle faner går til play-knappen
- Intelligent Navigation: Up/right navigation fra content areas optimeret
- Up går kun til fane fra øverste element i lister
- Right skifter til næste fane
- Responsive Control Skalering: Player controls skaleres intelligently baseret på player størrelse (60%-100% skalering sikrer synlighed ved alle størrelser)
- Forbedret Lyrik Tilgængelighed: Lyrik-knap flyttet til player area på Android TV (tilgængelig via fjernbetjening navigation, behold floating button på andre enheder)
- Optimeret Ikon Synlighed: Separate skalering for ikoner vs. knapper på Android TV - ikoner forbliver 95% størrelse selv når player er minimeret til 45%
🎨 UI Forbedringer
- Play Button Farveindikation: Grøn/blå (primary) når afspilling + pause ikon, Orange/lilla (secondary) når pause + play ikon. Glow-effekt matcher knap-farve
- Small Screen Fixes: Løst kritisk problem med forsvindende ikoner - øget minimum scale factor til 75% for alle UI elementer og hævet minimum player højde til 30%
- Reduceret Glow: Automatisk deaktivering på små afspillere for bedre ydeevne
🐛 Bug Fixes
- Fikset ikoner der forsvandt på små Android TV skærme
- Løst navigation problemer hvor fokus ikke kunne nå lyrik-knap
- Forbedret UI responsiveness på forskellige skærmstørrelser
- 🎯 Forbedret Android TV player fokus-håndtering
- 🔘 Alle player-knapper (play/pause, prev/next, cast, settings) holder nu spilleren maksimeret
- 📱 Playeren forbliver maksimeret når man navigerer rundt på alle knapper i player-feltet
- 🎮 Kun minimering når man navigerer væk fra player-feltet helt (tabs/indhold)
- ⚡ Responsive scaling af cast og settings knapper baseret på player størrelse
- 🎨 Forbedret brugeroplevelse på Android TV/Google TV
- 🎵 Lyrik-knap flyttet til player-feltet på Android TV/Google TV for nem adgang med fjernbetjening
- 📺 Lyrik-knap placeret til venstre for cast-knappen på TV-platforme
- 🖱️ Beholder original lyrik-knap placering på ikke-TV enheder med mus/touch
- 🔄 Autoplay for Cast afspilning implementeret
- 📡 Cast autoplay virker nu korrekt på alle enheder
- 🎵 Autoplay indstilling synkroniseres mellem UI og service
- ⚡ Telemetri dobbelt-regning problem løst
- 📊 Duration statistikker baseres nu kun på play_stop events
- 🔧 Elimineret dobbelt duration for sange spillet helt færdigt
- 📈 Forbedret statistik nøjagtighed for både Cast og lokal afspilning
- 🔗 Klikbare navigation links i statistik dashboard
- 📱 Enheds-statistikker viser nu separat app vs Cast afspilningstid
- 🎯 Sang-navne linker til detaljerede sang-statistikker
- 🖥️ Enheds-navne linker til detaljerede enheds-statistikker
- 📊 Komplet telemetri-system implementeret
- 🎵 Afspilningsstatistikker sendes til server
- 📈 Dashboard med real-time statistikker og analytics
- 🔐 Password-beskyttet admin interface
- 💾 MySQL database til lagring af telemetri-data
- 📱 Enheds- og sang-statistikker tracking
- 🎯 Completion percentage og afspilningstid registrering
- 📡 Cast vs lokal afspilning differentiation
- 🗂️ Mapper filtreret til kun at vise dem med MP3-filer
- 🧹 Code cleanup - fjernet Cast diagnostik og legacy kode
- 🔧 Telemetri dobbelt-registrering og timing-problemer løst
- 📄 Komplet telemetri dokumentation (TELEMETRY.md)
- 📡 Komplet Google Cast integration implementeret
- 🎵 Cast button i player med enheds-dialog og forbindelse
- 🖼️ Cover art på Cast-enheder via lokal HTTP server
- ⏭️ Autoplay til næste sang ved Cast afspilning
- 📍 Real-time position tracking og scrubber kontrol
- 🌊 Waveform generation og visning under Cast
- 🔄 Fresh cover art hentning ved sang-skifte
- 🔐 MD5 hash for unikke billede-IDs (ingen kollisioner)
- ⚡ Proper HTTP protokol med CORS understøttelse
- 🛠️ Concurrent job management for waveform generation
- 📱 Forbedret UI spacing mellem Cast og Settings knapper
- 🌐 Fuld dansk/engelsk lokalisering af Cast funktioner
- 🎚️ Scrubber type persistence implementeret
- ⚙️ Cast system simplificeret til kun custom receiver
- 📋 App information med version, build og dato
- 📝 Changelog funktionalitet tilføjet
- 🔧 Settings refaktoriseret til korrekt struktur
- 🔄 App restart synkronisering implementeret
- 🎵 Musikservice bevarer tilstand ved app-genstart
- 📱 UI synkroniseres automatisk med afspiller-tilstand
- 📜 Auto-scroll i lyrics viewer
- 🎯 Følg automatisk knap med visuel feedback
- ⚡ Smooth scrolling til aktuel linje
- 🔧 Forbedret lyrics performance med LazyColumn
- 🔤 Specialtegn i filnavne understøttes
- 📂 Forbedret håndtering af &, +, # i både rødder og undermapper
- 🎵 SRT filer findes nu korrekt i alle mapper
- 🐛 Fejlrettelser i URL encoding
- 🎤 SRT lyrics support implementeret
- 📝 Automatisk lyrik-indlæsning fra SRT filer
- ⏰ Tidssynkroniseret tekst-visning
- 🔍 Omfattende debug logging tilføjet
- 🌐 Komplet internationalisering (Dansk/Engelsk)
- 🏳️ Automatisk sprogdetection baseret på system
- 🇩🇰 Danske flag-ikoner og sprogvælger
- 🔄 Automatisk app-genstart ved sprogskift
- 🎨 Dark/Light theme support
- 🎵 Grundlæggende musikafspiller funktionalitet
- 📱 Material Design 3 UI
- ⭐ Favoritter system
- 📂 Mappe-browsing fra server
- 🔊 Waveform visualisering
- 🎚️ Player kontroller (play, pause, skip)
- 🎨 Cover art display
- 🔄 Shuffle og autoplay funktioner