Album-Ansicht, mitlaufender Songtext, Cover-Cache, Server-Favoriten
Die letzten vier Punkte aus dem Review-Bericht.
G2 — Server-Bereich: Ein Tipp auf ein Album spielte sofort alles ab;
hineinsehen ging nicht. Jetzt Album- und Kuenstler-Ansicht mit Cover,
Kuenstler, Titelzahl, Gesamtdauer, "Abspielen"/"Zufaellig" und der
Titelliste; Antippen startet an dieser Stelle. Dazu "Mehr Alben laden" —
die Liste hoerte bei 50 auf, ohne dass etwas darauf hinwies.
NICHT umgesetzt: den Server-Bereich aus dem Download-Tab loesen (das
widerspricht Commit 34d6d8e, "Auf Wunsch von Dustin") und eine
Server-Suche (die Suche bleibt ausdruecklich rein lokal).
G8 — Songtext: Traegt der Text Zeitmarken, laeuft er mit; die aktive Zeile
ist hervorgehoben, Antippen springt an die Stelle. Ohne Zeitmarken bleibt
es eine Textwand — die App schaut nach, statt zu raten.
G10 — Cover bleiben liegen. Eigener Ordner, einmal geholt. Der Schluessel
haengt an der Album-Kennung, nicht an der Adresse: die traegt bei jedem
App-Start ein neues Token, und der Ordner waere sonst gewachsen, ohne je
einen Treffer zu liefern. Keine neue Abhaengigkeit.
G3 — Das Herz ist bei Server-Titeln nicht mehr ausgegraut, sondern
favorisiert am Server (star/unstar) — dort, wo der Favoriten-Abgleich sie
auch wieder abholt. Offen bleibt der schwere Teil: Wiedergabezaehler,
Historie und Kategorien braeuchten fuer Server-Titel eine Zeile in der
Bibliothek.
Aus dem Code-Review nachgebessert (sieben Punkte): das Herz behielt beim
Titelwechsel seinen Zustand; recycelte Listenzeilen zeigten kurz das Cover
der vorherigen; der neue Songtext bekam bei Server-Titeln die
Abspiel-Adresse statt der Server-Kennung und fand deshalb nie einen Text;
ein einmal fehlgeschlagenes Cover blieb die ganze Sitzung grau; "Server
nicht erreichbar" sah aus wie "Album hat keine Titel", womit der
Wiederholen-Knopf unerreichbar war; die Kuenstler-Ansicht waere immer leer
geblieben, weil getArtist die Titel gar nicht mitliefert; und zwei
gleichzeitige Cover-Abrufe konnten ein zerschnittenes Bild hinterlassen.
Selbst gefunden: das Haekchen "schon geladen" fragte pro Zeile die Platte
ab, bei jedem Positionswechsel neu. Jetzt einmal je Bildschirm.
457 Tests gruen (vorher 433), flutter analyze ohne Befund, Release-APK
gebaut.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013xAHJTJM6UUqmjUgk1PUEd
This commit is contained in:
co-authored by
Claude Opus 5
parent
b42e045e67
commit
0d76d8cc58
@@ -5,6 +5,94 @@ Format angelehnt an [Keep a Changelog](https://keepachangelog.com/de/1.0.0/).
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
### 🧩 Die letzten vier Punkte aus dem Review (2026-08-23)
|
||||
|
||||
**G2 — Server-Bereich.** Ein Tipp auf ein Album spielte sofort das ganze
|
||||
Album ab; hineinsehen ging nicht.
|
||||
|
||||
- 💿 **Album- und Künstler-Ansicht.** Großes Cover, Künstler, Titelzahl,
|
||||
Gesamtdauer, „Abspielen" und „Zufällig" — darunter die Titelliste mit
|
||||
Nummer und Dauer. Antippen startet **an dieser Stelle**, nicht am Anfang.
|
||||
Der laufende Titel ist auch hier markiert, und schon geladene Titel tragen
|
||||
ein Häkchen.
|
||||
- 📄 **Mehr als 50 Alben.** Die Liste hörte bei 50 auf, ohne dass etwas
|
||||
darauf hinwies. Jetzt gibt es „Mehr Alben laden", und wenn der Server
|
||||
weniger als eine volle Seite liefert, verschwindet der Knopf von selbst.
|
||||
- 🚫 **Nicht umgesetzt:** „Server-Bereich aus dem Download-Tab lösen" stand
|
||||
auch im Befund — das widerspricht aber Commit `34d6d8e` („Auf Wunsch von
|
||||
Dustin"), mit dem der Tab bewusst wieder „Download" heißt. Die
|
||||
Tab-Struktur bleibt unangetastet. Ebenso weggelassen: eine Suche über den
|
||||
Server, weil die Suche ausdrücklich rein lokal bleiben soll.
|
||||
|
||||
**G8 — Songtext läuft mit.** Bisher eine Textwand ohne Bezug zur Wiedergabe.
|
||||
|
||||
- 🎤 Trägt der Text Zeitmarken (LRC), läuft er jetzt **mit**: die aktuelle
|
||||
Zeile ist hell und größer, der Rest gedämpft, und die Ansicht schiebt sie
|
||||
in die Mitte. **Antippen springt an die Stelle im Lied.**
|
||||
- 📃 Ein Text ohne Zeitmarken bleibt eine Textwand — beides kommt vor, je
|
||||
nach Tag und Server, und die App schaut nach, statt zu raten.
|
||||
|
||||
**G10 — Cover bleiben jetzt da.** `Image.network` merkt sich Bilder nur im
|
||||
Arbeitsspeicher; nach jedem Neustart fragte jede Zeile ihr Cover erneut beim
|
||||
Server an, und ohne Netz gab es gar keins.
|
||||
|
||||
- 🖼️ Cover landen in einem eigenen Ordner und werden nur einmal geholt. Der
|
||||
Schlüssel hängt an der Album-Kennung, **nicht** an der Adresse — die trägt
|
||||
bei jedem App-Start ein neues Token, und der Ordner wäre sonst gewachsen,
|
||||
ohne je einen Treffer zu liefern.
|
||||
- 🧹 Bewusst im Cache-Ordner: ein Cover ist ersetzbar. Räumt Android auf,
|
||||
lädt es sich beim nächsten Mal neu — anders als die Musik-Downloads.
|
||||
- ⚠️ Nur echte Bilder werden abgelegt: Subsonic meldet Fehler mit HTTP 200
|
||||
und JSON, und das läge sonst dauerhaft als „Cover" im Ordner.
|
||||
|
||||
**Aus dem Code-Review nachgebessert — sieben Punkte:**
|
||||
|
||||
- 🤍 **Das Herz behielt beim Titelwechsel seinen Zustand.** Einen Server-Titel
|
||||
favorisieren, der Player geht zum nächsten — und der zeigte sich als
|
||||
Favorit, obwohl er nie einer war. Der nächste Tipp hätte ihn dann
|
||||
„entfavorisiert".
|
||||
- 🖼️ **Beim Scrollen zeigten Zeilen kurz das Cover der vorherigen.** Listen
|
||||
verwenden ihre Zeilen wieder; ohne Schlüssel behielt die Bildabfrage das
|
||||
alte Ergebnis, bis das neue da war — bei ungecachten Covern sekundenlang.
|
||||
Ein Rückschritt gegenüber dem vorherigen Stand, deshalb hier mitbehoben.
|
||||
- 🎤 **Der neue mitlaufende Songtext funktionierte für Server-Titel gar
|
||||
nicht.** Ihm wurde die Abspiel-Adresse statt der Server-Kennung
|
||||
übergeben; die App fragte den Server nach einem Titel namens „https://…"
|
||||
und bekam nie einen Text.
|
||||
- 🎨 **Ein Cover, das einmal nicht lud, blieb die ganze Sitzung grau.** Startet
|
||||
die App ohne Netz, waren alle Cover bis zum Neustart weg — auch wenn die
|
||||
Verbindung längst wieder stand. Fehlschläge werden nicht mehr gemerkt.
|
||||
- 🚨 **„Server nicht erreichbar" sah aus wie „Album hat keine Titel".** Beide
|
||||
Abfragen verschluckten ihre Fehler und lieferten eine leere Liste; der
|
||||
Wiederholen-Knopf, den ich gebaut hatte, war damit unerreichbar.
|
||||
- 🎸 **Die Künstler-Ansicht wäre immer leer geblieben.** Die App las die Titel
|
||||
aus `getArtist`, wo die Subsonic-Schnittstelle sie gar nicht mitliefert —
|
||||
Alben kommen dort ohne ihre Titel. Jetzt wird je Album nachgefragt.
|
||||
(Vorbestehend, aber ich habe einen ganzen Bildschirm darauf gebaut.)
|
||||
- 🧩 Dazu ein seltener, aber dauerhafter Fall: zwei gleichzeitige Abrufe
|
||||
desselben Covers schrieben in dieselbe Zwischendatei und konnten ein
|
||||
zerschnittenes Bild hinterlassen, das nie wieder verschwindet.
|
||||
|
||||
- 🧹 **Selbst gefunden:** Das Häkchen „schon geladen" fragte pro Zeile die
|
||||
Platte ab — und die Zeile zeichnet sich bei jedem Positionswechsel neu.
|
||||
Das wäre eine Dateiprüfung pro Sekunde und Titel gewesen. Jetzt einmal je
|
||||
Bildschirm aus der Datenbank.
|
||||
|
||||
- ✅ **Getestet:** 457 Tests grün (vorher 433), `flutter analyze` ohne Befund,
|
||||
Release-APK gebaut. Neu: 16 Tests für den LRC-Parser, 5 für den
|
||||
Cover-Schlüssel und 3 für die Album-Daten.
|
||||
|
||||
**G3 — Server-Titel nicht länger zweiter Klasse.**
|
||||
|
||||
- 🤍 Das Herz ist bei Server-Titeln nicht mehr ausgegraut, sondern
|
||||
favorisiert **am Server** (`star`/`unstar`) — genau dort, wo der
|
||||
Favoriten-Abgleich in den Einstellungen sie auch wieder abholt. Ein Titel
|
||||
der Bibliothek wird weiterhin lokal favorisiert.
|
||||
- ℹ️ Weiterhin offen: Wiedergabezähler, Historie und Kategorien gibt es für
|
||||
reine Server-Titel nicht — dafür bräuchten sie eine Zeile in der
|
||||
Bibliothek, und das wäre ein eigener Umbau.
|
||||
|
||||
|
||||
### 📥 Alben und Künstler offline mitnehmen — und der Zwischenspeicher hat endlich eine Grenze (2026-08-23)
|
||||
|
||||
Bisher landete Musik nur zufällig auf dem Gerät: was man abspielte, blieb
|
||||
|
||||
Reference in New Issue
Block a user