Neu: BACKLOG.md. Haelt fest, was bewusst zurueckgestellt wurde, damit es nicht stillschweigend liegen bleibt. - song_detail_sheet_test.dart haengt und ist uebersprungen: inklusive der vier bereits widerlegten Verdachtsmomente (runWithClient erreicht das Sheet, drift unter testWidgets, einzelne Provider) und dem naechsten Schritt. Fachlich deckt metadaten_uebernahme_test.dart den Zweck ab. - Kein Wiederherstellen einzeln geloeschter Titel (Papierkorb am Server waere denkbar, bewusst nicht gebaut). Das TODO im Test verweist jetzt auf die Datei. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FpPu4nuKjKKeX1RpdDeX81
2.6 KiB
Backlog
Bekannte offene Punkte, die bewusst zurückgestellt wurden. Nichts hier ist vergessen — es ist entschieden, es später zu machen. Erledigtes wandert raus (die Geschichte steht im CHANGELOG).
🧪 Widget-Test song_detail_sheet_test.dart hängt (übersprungen)
Stand: 2026-08-21 · Auswirkung: nur Tests, die App ist nicht betroffen
Der Test Übernahme eines Online-Vorschlags setzt metadataEdited bleibt beim
Aufbau des Widget-Baums hängen und kommt nie zurück — auch nach 13+
Minuten kein Abbruch. Da flutter test alle Dateien in einem Lauf abarbeitet,
blockierte er den gesamten Testlauf. Er ist deshalb mit skip: true und
einem TODO im Code markiert; der Lauf ist damit wieder in ~20 Sekunden durch.
Fachlich ist nichts ungeprüft: Was der Test absichern sollte, prüft
test/library/metadaten_uebernahme_test.dart ohne Widgets — inklusive der
Regel, dass eine übernommene Online-Korrektur metadataEdited setzt und
den nächsten Bibliotheks-Scan damit überlebt.
Was schon eingegrenzt ist:
| Verdacht | Ergebnis |
|---|---|
http.runWithClient erreicht den State im Modal-Sheet nicht |
❌ widerlegt — eigene Sonde zeigt MockClient auch im Sheet |
drift unter testWidgets blockiert (fehlendes runAsync) |
❌ widerlegt — upsertSongs + watchSongs().first laufen durch |
Einer der Provider blockiert pumpWidget |
❌ widerlegt — MeloDb, CategoryService, AppSettings einzeln geprüft |
Zusammenspiel showModalBottomSheet + Providerbaum |
⏳ offen — der Hänger tritt zwischen pumpWidget und dem ersten tap auf |
Nächster Schritt: Den Testkörper schrittweise abspecken (Providerbaum
minimieren, Sheet durch eine normale Route ersetzen) bis der Hänger
verschwindet — die letzte entfernte Zutat ist die Ursache. Ein
tester.pumpWidget(const SizedBox()) mit anschließendem pump() am Testende
hat bei online_screen_test.dart einen verwandten Aufräum-Timer von drift
gelöst und ist einen Versuch wert.
📥 Kein Wiederherstellen gelöschter Titel
Stand: 2026-08-21 · Auswirkung: Datenverlust im Fehlerfall möglich
Löschungen wirken über den Geräte-Abgleich in beide Richtungen. Gegen
versehentliche Massenlöschung schützt die Sicherheitsbremse
(loeschBremseGreift), aber eine einzelne irrtümliche Löschung ist
endgültig: Datei und Navidrome-Verknüpfung sind weg, sobald kein Konto den
Titel mehr aktiv hat.
Denkbar wäre ein Papierkorb am Server (Datei erst nach X Tagen wirklich löschen). Bewusst nicht gebaut — erst beobachten, ob es in der Praxis gebraucht wird.