Alben und Kuenstler offline mitnehmen; Zwischenspeicher bekommt eine Grenze
Bisher landete Musik nur zufaellig auf dem Geraet: was man abspielte, blieb nebenbei liegen. Gezielt "dieses Album fuer die Zugfahrt" gab es nicht. Und dieser Zwischenspeicher wuchs unbegrenzt — es gab nur "alles loeschen". Zwei getrennte Ablagen. Bewusste Downloads liegen NICHT im Cache-Ordner: den darf Android bei Speichernot jederzeit selbst leeren, und genau das darf einem mitgenommenen Album nicht passieren. Sie liegen deshalb neben der Datenbank im Support-Ordner. Die Grenze gilt nur fuer den Zufalls-Cache; Downloads sind unbegrenzt und werden nie verdraengt. - Download-Pfeil je Album und Kuenstler, mit Fortschritt und Abbruch - Rueckfrage ab 30 Titeln samt Groessenschaetzung - Obergrenze wahlbar (aus / 512 MB / 1 / 2 / 4 / 8 GB), Standard 2 GB; am laengsten nicht Gehoertes weicht zuerst - Liste "Heruntergeladen" mit Titel, Kuenstler, Groesse, einzeln oder alle entfernbar (Schema 10) - Wiedergabe nimmt erst den Download, dann den Zwischenspeicher Aus dem Code-Review nachgebessert, vier ernste Punkte: "aus" (0 MB) schaltete das Aufraeumen ab statt das Zwischenspeichern und liess den Cache unbegrenzt wachsen; wer sich erst waehrend der Sitzung am Server anmeldete, konnte gar nichts laden; die Verdraengung konnte Dateien loeschen, die die laufende Warteschlange schon als Quelle eingetragen hatte (Abbruch mitten im Album, ohne Rueckfall aufs Streamen); und ein heruntergeladener Titel wurde beim Abspielen ein zweites Mal in den Cache geholt. Dazu sechs kleinere und der "zuletzt gehoert"-Stempel, der beim Aufbau der Warteschlange statt beim Abspielen gesetzt wurde. Nebenbei aufgeraeumt, weil die Dateien ohnehin offen waren: keine Emoji als Knoepfe mehr, kein Colors.redAccent und kein grey.shade mehr im ganzen Projekt, und die Einstellungen heissen nicht mehr "Settings". 433 Tests gruen (vorher 411), 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
80948f1ad5
commit
b42e045e67
@@ -5,6 +5,77 @@ Format angelehnt an [Keep a Changelog](https://keepachangelog.com/de/1.0.0/).
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
### 📥 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
|
||||
nebenbei liegen. Gezielt „dieses Album für die Zugfahrt" gab es nicht. Und
|
||||
dieser Zwischenspeicher wuchs **unbegrenzt** — es gab nur „alles löschen".
|
||||
|
||||
- 📥 **Download-Pfeil neben jedem Album und Künstler** im Bereich
|
||||
Download → Server. Während es läuft, steht oben ein Fortschritt mit
|
||||
Abbruch-Knopf.
|
||||
- ⚠️ **Rückfrage bei großen Mengen.** Ein Album geht ohne Nachfrage durch;
|
||||
ab 30 Titeln fragt die App erst („347 Titel, geschätzt etwa 2100 MB").
|
||||
Ein ganzer Künstler soll niemandem aus Versehen das Datenvolumen kosten.
|
||||
- 🗂️ **Zwei getrennte Töpfe.** Bewusste Downloads liegen **nicht** im
|
||||
Cache-Ordner. Der Grund ist keine Geschmacksfrage: den Cache-Ordner darf
|
||||
Android bei Speichernot jederzeit selbst leeren — genau das darf einem
|
||||
Album, das man mitgenommen hat, nicht passieren. Downloads liegen deshalb
|
||||
neben der Datenbank, wo das System nichts anrührt.
|
||||
- 🚧 **Obergrenze für den Zwischenspeicher**, voreingestellt 2 GB, in den
|
||||
Einstellungen wählbar (aus / 512 MB / 1 / 2 / 4 / 8 GB). Ist sie erreicht,
|
||||
fliegt das am längsten nicht Gehörte zuerst raus. **Heruntergeladene Titel
|
||||
sind davon nie betroffen** — wer ein Album mitnimmt, hat das entschieden,
|
||||
und die App nimmt es ihm nicht wieder weg.
|
||||
- 📋 **Liste „Heruntergeladen"** in den Einstellungen: Titel, Künstler,
|
||||
Größe, einzeln oder alle entfernbar. Sie kommt aus der Datenbank und nicht
|
||||
aus dem Ordner — die Dateien heißen nach einem Hash und stünden dort sonst
|
||||
als „a3f9…mp3".
|
||||
- ▶️ **Die Wiedergabe schaut erst in die Downloads, dann in den
|
||||
Zwischenspeicher.** Ein mitgenommener Titel hängt nie am Netz, auch wenn
|
||||
zufällig eine Cache-Kopie existiert, die morgen verdrängt sein kann.
|
||||
- 🧹 **Nebenbei aufgeräumt** (die Dateien waren ohnehin offen): die
|
||||
Emoji-Knöpfe „📀 Alben" und „🎤 Künstler" heißen jetzt schlicht „Alben"
|
||||
und „Künstler", das grelle `Colors.redAccent` ist überall dem Melo-Rot
|
||||
gewichen, und die Einstellungen heißen nicht mehr „Settings".
|
||||
- 🔍 **Aus dem Code-Review nachgebessert — zehn Punkte, vier davon ernst:**
|
||||
**(1)** „Aus" bewirkte das Gegenteil. Bei 0 MB übersprang die App das
|
||||
Aufräumen ganz, legte aber weiter jeden Titel ab — genau der unbegrenzt
|
||||
wachsende Speicher, den diese Änderung beheben soll. „Aus" heißt jetzt
|
||||
wirklich: nichts behalten.
|
||||
**(2)** Wer sich erst **in** der Sitzung am Musikserver anmeldete, konnte
|
||||
nichts herunterladen. Der Dienst hielt eine eigene Verbindung, die nur
|
||||
beim App-Start eingerichtet wurde; die Titelliste kam, der Download lief
|
||||
ins Leere. Erst ein Neustart half.
|
||||
**(3)** Die Aufräum-Aktion konnte Dateien löschen, die die **laufende**
|
||||
Warteschlange schon als Quelle eingetragen hatte — die Wiedergabe wäre
|
||||
mitten im Album abgebrochen, ohne auf Streamen zurückzufallen. Benutzte
|
||||
Dateien sind jetzt geschützt; im Zweifel bleibt die App lieber kurz über
|
||||
der Grenze, als die Musik abzuwürgen.
|
||||
**(4)** Ein bewusst heruntergeladener Titel wurde beim Abspielen **noch
|
||||
einmal** in den Zwischenspeicher geladen — doppelter Platz, doppeltes
|
||||
Datenvolumen.
|
||||
Dazu sechs kleinere: ein einzelner Fehlschlag verdeckte nicht mehr den
|
||||
Erfolg der übrigen Titel („18 heruntergeladen · 2 fehlgeschlagen"); eine
|
||||
Datei ohne Buchführungs-Zeile (App mittendrin beendet) wird jetzt
|
||||
nachgetragen statt für immer unsichtbar zu bleiben; zweimal antippen meldet
|
||||
nicht mehr fälschlich Erfolg; „Lädt 21 von 20" gibt es nicht mehr; eine
|
||||
gesenkte Grenze wirkt sofort statt erst beim nächsten gestreamten Titel;
|
||||
und drei ungenutzte Methoden sind raus.
|
||||
|
||||
- 🕐 **Auch aus dem Review:** Der „zuletzt gehört"-Stempel wurde beim
|
||||
**Aufbau** der Warteschlange gesetzt — damit hatten nach einem Albumstart
|
||||
fünfzig Dateien fast denselben Zeitstempel und die Verdrängung wusste nicht
|
||||
mehr, was wirklich gehört wurde. Gestempelt wird jetzt, wenn ein Titel
|
||||
tatsächlich losspielt.
|
||||
|
||||
- ✅ **Getestet:** 433 Tests grün (vorher 411), `flutter analyze` ohne
|
||||
Befund, Release-APK gebaut. Neu: 13 Tests für die Verdrängungs-Regel
|
||||
(welche Datei weicht wann, bei gleichem Zeitstempel nie zufällig, und
|
||||
benutzte Dateien nie) und 9 für Rückfrage-Schwelle, Größenschätzung und
|
||||
Dateinamen.
|
||||
|
||||
|
||||
### ▶️ Man sieht jetzt, welcher Titel gerade läuft (2026-08-23)
|
||||
|
||||
Bisher scrollte man durch die Bibliothek und musste raten, wo man gerade
|
||||
|
||||
Reference in New Issue
Block a user