Tinker-Feedback: 5 Bugfixes (Shuffle/Repeat, Full-Cover, Auto-Play, Scan-Button, Back-Geste) #6

Open
dustin wants to merge 10 commits from fix/tinker-feedback into fix/p0-vollwertigkeit
Owner

Zusammenfassung

Fuenf von Tinker gemeldete Bugs, je mit Root-Cause-Untersuchung vor dem Fix (systematic-debugging):

  • Shuffle/Wiederholung: _transformEvent() setzte shuffleMode/repeatMode nie im PlaybackState -> Anzeige blieb immer "aus", Buttons schalteten nie richtig um. Betrifft auch den Sperrbildschirm (gleiche Datenquelle).
  • Auto-Play pausiert: keine AudioSession-Konfiguration im ganzen Projekt -> Android verlor beim automatischen Songwechsel den Audio-Fokus.
  • Kein Full-Cover beim Song-Tap: NowPlayingScreen existierte schon, wurde aber nur vom Mini-Player geoeffnet, nicht bei Song-Tap in Bibliothek/Playlist/Server-Titeln.
  • Doppelter Scan-Button: auf Android taten "Musik scannen" und "Erneut scannen" exakt dasselbe (identischer Code-Pfad) -> zweiter Button auf Android entfernt, auf Desktop bleiben beide (dort unterschiedlich).
  • Back-Geste minimiert die App: Tab-Wechsel liefen nur ueber setState, nie ueber Navigator.push -> System-Zurueck-Geste hatte auf Nicht-Start-Tabs nichts zum Poppen. Jetzt per PopScope abgefangen: springt zuerst zu Tab 0 zurueck.

Nicht Teil dieses PRs (bereits geklaert, kein Code noetig)

  • YouTube-Login bei Tinker: serverseitig durch Passwort-Abgleich geloest (Hermes).
  • "Dolby"-Effekt: oeffnet System-Klangeffekte des Geraets, auf Tinkers Handy (kein Xiaomi/POCO) fehlt der passende Systemdialog -- dokumentierte Geraete-Grenze, kein Bug.
  • Gemeinsame Navidrome-Bibliothek (Privacy-Anliegen): architektonisch beabsichtigt (Familie teilt Musik), bewusst unveraendert.
  • "Zuletzt hinzugefuegt"-Ansicht: existiert bereits als Standard-Sortierung in "Meine Musik".

Verifikation

  • 593 Tests gruen, 1 bekannter Skip, 0 fehlgeschlagen.
  • flutter analyze: keine Befunde.

Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com

## Zusammenfassung Fuenf von Tinker gemeldete Bugs, je mit Root-Cause-Untersuchung vor dem Fix (systematic-debugging): - **Shuffle/Wiederholung**: `_transformEvent()` setzte `shuffleMode`/`repeatMode` nie im `PlaybackState` -> Anzeige blieb immer "aus", Buttons schalteten nie richtig um. Betrifft auch den Sperrbildschirm (gleiche Datenquelle). - **Auto-Play pausiert**: keine `AudioSession`-Konfiguration im ganzen Projekt -> Android verlor beim automatischen Songwechsel den Audio-Fokus. - **Kein Full-Cover beim Song-Tap**: `NowPlayingScreen` existierte schon, wurde aber nur vom Mini-Player geoeffnet, nicht bei Song-Tap in Bibliothek/Playlist/Server-Titeln. - **Doppelter Scan-Button**: auf Android taten "Musik scannen" und "Erneut scannen" exakt dasselbe (identischer Code-Pfad) -> zweiter Button auf Android entfernt, auf Desktop bleiben beide (dort unterschiedlich). - **Back-Geste minimiert die App**: Tab-Wechsel liefen nur ueber `setState`, nie ueber `Navigator.push` -> System-Zurueck-Geste hatte auf Nicht-Start-Tabs nichts zum Poppen. Jetzt per `PopScope` abgefangen: springt zuerst zu Tab 0 zurueck. ## Nicht Teil dieses PRs (bereits geklaert, kein Code noetig) - YouTube-Login bei Tinker: serverseitig durch Passwort-Abgleich geloest (Hermes). - "Dolby"-Effekt: oeffnet System-Klangeffekte des Geraets, auf Tinkers Handy (kein Xiaomi/POCO) fehlt der passende Systemdialog -- dokumentierte Geraete-Grenze, kein Bug. - Gemeinsame Navidrome-Bibliothek (Privacy-Anliegen): architektonisch beabsichtigt (Familie teilt Musik), bewusst unveraendert. - "Zuletzt hinzugefuegt"-Ansicht: existiert bereits als Standard-Sortierung in "Meine Musik". ## Verifikation - 593 Tests gruen, 1 bekannter Skip, 0 fehlgeschlagen. - `flutter analyze`: keine Befunde. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
dustin added 5 commits 2026-08-27 14:15:42 +00:00
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012A2pmbnVNPiHdyf2GW8eLP
Tab-Wechsel in HomeShell laufen nur über setState (IndexedStack +
BottomNavigationBar), nie über Navigator.push — eine System-Zurück-Geste
hatte auf Nicht-Start-Tabs also nie eine Route zum Poppen und minimierte
stattdessen die App. build() jetzt in ein PopScope gewickelt, das bei
_index != 0 zuerst zu Tab 0 zurückspringt.
dustin added 2 commits 2026-08-29 09:34:15 +00:00
- 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
Betraf alle drei Nutzer (Dustin, Baka, Tinker), nicht nur einen: IndexedStack
baut Download-Tab und YT-Suche beim App-Start gleichzeitig, beide loesen
unabhaengig voneinander autoAnmelden() aus. Ohne In-Flight-Absicherung gingen
zwei fast-gleichzeitige Login-Requests an denselben Server, von denen einer
abgelehnt wurde - obwohl die Zugangsdaten korrekt waren.

- BakaAuth.autoAnmelden() haengt einen ueberlappenden Aufruf jetzt an den
  bereits laufenden Login-Versuch an, statt einen zweiten Request zu senden.
- Anmelde-Dialog im Download-Tab zeigt den tatsaechlich bekannten
  Navidrome-Benutzernamen statt immer "Baka" vorauszufuellen.
- Navidrome-Dialog in den Einstellungen waehlt den zuletzt bekannten
  Benutzer vor statt immer "Baka".
dustin added 1 commit 2026-08-29 10:39:47 +00:00
Nach erfolgreichem manuellem Login im "Baka-Konto"-Dialog wird das neue
Passwort jetzt zusätzlich in NavidromeService persistiert (dafür ergänzt:
öffentlicher serverUrl-Getter) — vorher schrieb der Dialog es nur ins
BakaAuth-Token, nie zurück in die lokale Navidrome-Ablage, aus der
autoAnmelden() sich beim nächsten App-Start bedient. Ohne diesen Fix kam
der Auto-Login-Fehler nach Ablauf des 7-Tage-Tokens garantiert wieder.

Zusätzlich hält BakaAuth.letzterAutoLoginFehler jetzt den Fehlertext des
letzten Auto-Login-Versuchs fest, statt ihn zu verwerfen — bisher war aus
der App nicht diagnostizierbar, woran ein Auto-Login scheiterte.
dustin added 1 commit 2026-08-29 10:51:53 +00:00
Items in song_list.dart und artist_list.dart faden/rutschen beim ersten
Erscheinen gestaffelt statt abrupt ein — angelehnt an HyperOS' fließende
Motion-Sprache. Läuft einmal pro Element, respektiert Reduce-Motion und
deckelt die Verzögerung ab Index 12.
dustin added 1 commit 2026-08-29 16:10:00 +00:00
Das Passwortfeld im Baka-Konto-Anmelde-Dialog wurde vor dem Absenden und
vor dem Speichern nicht getrimmt — ein durch Autofill eingefügtes
Leerzeichen ließ korrekte Logins scheitern. Gleicher Fix wie bereits in
settings_screen.dart (Commit 3d1e00646a) für denselben Symptom-Typ.
You are not authorized to merge this pull request.
This pull request can be merged automatically.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin fix/tinker-feedback:fix/tinker-feedback
git checkout fix/tinker-feedback
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dustin/Melo#6