Zuletzt zeigt zuletzt Gehörtes statt neu Hinzugefügtes; Herz sitzt jetzt neben dem Songnamen
- MeloDb.watchRecentlyPlayed(): wertet PlaybackHistory statt dateAddedMs aus, ein mehrfach gehörter Song erscheint nur einmal, an der Position seines jüngsten Abspielens (Subquery mit GROUP BY songId / MAX(playedAtMs)). - "Zuletzt" (Karte + RecentlyPlayedScreen, vormals RecentlyAddedScreen) in my_music_screen.dart nutzt jetzt watchRecentlyPlayed() statt watchRecent(). - Herz im Vollbild-Player: aus der AppBar-actions-Row entfernt, sitzt jetzt direkt neben dem Songtitel in _Angaben (now_playing_screen.dart). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012A2pmbnVNPiHdyf2GW8eLP
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
90b63c467e
commit
2cabe36a6c
@@ -5,6 +5,60 @@ Format angelehnt an [Keep a Changelog](https://keepachangelog.com/de/1.0.0/).
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
### 🎧 "Zuletzt" zeigte neu Hinzugefügtes statt zuletzt Gehörtem; Herz saß fern vom Songnamen (2026-08-29)
|
||||
|
||||
- 🐛 **Der Schnellzugriff "Zuletzt" auf "Meine Musik" zeigte "zuletzt hinzugefügte" Songs,
|
||||
nicht "zuletzt gehörte"** — von Tinker gemeldet. Sowohl die Karte als auch der
|
||||
Vollbild-Screen dahinter nutzten `db.watchRecent()`, das nach `dateAddedMs`
|
||||
(Hinzufüge-Datum) sortiert, nicht nach dem tatsächlichen Abspielen.
|
||||
- 🔧 **Fix:** neue Methode `MeloDb.watchRecentlyPlayed()` (`database.dart`) wertet
|
||||
stattdessen die `PlaybackHistory`-Tabelle aus — eine Subquery ermittelt je Song per
|
||||
`GROUP BY songId` / `MAX(playedAtMs)` nur den jüngsten Play-Zeitpunkt, damit ein
|
||||
mehrfach gehörter Song nur einmal erscheint (an der Position seines letzten
|
||||
Abspielens), zurückverknüpft auf `songs` (ohne getombstonte). "Zuletzt" in
|
||||
`my_music_screen.dart` (Karte + Vollbild-Screen, `RecentlyAddedScreen` dafür in
|
||||
`RecentlyPlayedScreen` umbenannt) nutzt jetzt diese Methode.
|
||||
- 🐛 **Das Favoriten-Herz im Vollbild-Player saß oben in der AppBar**, weit weg vom
|
||||
Songnamen — ebenfalls von Tinker gemeldet.
|
||||
- 🔧 **Fix:** `_Herz` aus der AppBar-`actions`-Row entfernt und stattdessen direkt
|
||||
neben den Titel in `_Angaben` gesetzt (`now_playing_screen.dart`).
|
||||
- ✅ **Getestet:** 3 neue Unit-Tests für `watchRecentlyPlayed()` (RED→GREEN:
|
||||
Mehrfach-Play erscheint nur einmal an der neuesten Position, mehrere Songs
|
||||
absteigend sortiert, getombstonter Song mit Historie fehlt) sowie ein neuer
|
||||
Widget-Test, der bestätigt, dass das Herz nicht mehr in der AppBar, sondern in
|
||||
derselben Row wie der Songtitel sitzt. `flutter analyze` ohne Befund.
|
||||
|
||||
### 🔑 Auto-Anmeldung schlug beim App-Start fehl — betraf ALLE drei Nutzer (2026-08-29)
|
||||
|
||||
- 🐛 **Die automatische Baka-Anmeldung klappte beim App-Start oft nicht** —
|
||||
die App fragte dann nach dem "Baka-Konto", obwohl die Zugangsdaten
|
||||
korrekt waren. Betraf **alle drei Nutzer** (Dustin, Baka, Tinker), nicht
|
||||
nur einen — von Dustin selbst gemeldet und bei allen drei bestätigt.
|
||||
Grund: `main.dart` baut die 5 Haupt-Tabs über `IndexedStack` alle sofort
|
||||
beim ersten Frame, nicht erst beim Umschalten. Der Download-Tab und die
|
||||
YT-Suche lösen dabei beide unabhängig voneinander denselben Auto-Login
|
||||
aus (`pruefeServerUser()` → `BakaAuth.autoAnmelden()`) — praktisch
|
||||
gleichzeitig, mit denselben Zugangsdaten. `autoAnmelden()` hatte keine
|
||||
Schutzvorkehrung gegen so einen doppelten Aufruf (der `istAngemeldet`-
|
||||
Check lief synchron, bevor die erste Anfrage zurückkam), also gingen
|
||||
zwei fast-gleichzeitige Login-Anfragen an denselben Server raus — der
|
||||
lehnte vermutlich eine davon ab (Session-/Lock-Konflikt).
|
||||
- 🔧 **Fix:** `BakaAuth.autoAnmelden()` in `baka_auth.dart` hängt einen
|
||||
überlappenden Aufruf jetzt an den bereits laufenden Login-Versuch an
|
||||
(`_laufenderAutoLogin`), statt einen zweiten Request loszuschicken.
|
||||
- 🔧 **Nebenbei zwei kleine Anmelde-Dialoge korrigiert:** Der Anmelde-
|
||||
Dialog im Download-Tab (`downloads_screen.dart`) zeigte das
|
||||
Benutzername-Feld immer mit "Baka" vorausgefüllt, egal wer die App
|
||||
nutzt — zeigt jetzt den tatsächlich bekannten Navidrome-Benutzernamen
|
||||
(leer, falls keiner bekannt). Der Navidrome-Dialog in den Einstellungen
|
||||
(`settings_screen.dart`) wählte unter Baka/Tinker/Dustin immer "Baka"
|
||||
vor — wählt jetzt den zuletzt bekannten Benutzer vor, falls bekannt.
|
||||
- ✅ **Getestet:** neuer Unit-Test für `autoAnmelden()` (RED→GREEN, zwei
|
||||
gleichzeitige Aufrufe lösen nur noch einen HTTP-Request aus statt
|
||||
zwei) sowie ein neuer Widget-Test für die Benutzername-Vorbelegung im
|
||||
Download-Tab-Dialog (RED→GREEN). Volle Suite grün, `flutter analyze`
|
||||
ohne Befund.
|
||||
|
||||
### ⬅️ Zurück-Geste auf Nicht-Start-Tabs minimierte die App (2026-08-27)
|
||||
|
||||
- 🐛 **Auf "Favoriten" (oder einem anderen Tab außer "Meine Musik") tippen und
|
||||
|
||||
Reference in New Issue
Block a user