Files
Melo/CHANGELOG.md
T

88 lines
5.1 KiB
Markdown

# Changelog
Alle nennenswerten Änderungen an diesem Projekt werden hier dokumentiert.
Format angelehnt an [Keep a Changelog](https://keepachangelog.com/de/1.0.0/).
## [Unreleased]
### Phase 2 (In Progress)
- 🗄️ **CacheManager**: Speichert gestreamte Musik lokal (MD5-Hash-basiert)
- 📴 **Offline-Mode Service**: Toggle für Offline-Betrieb (nur gecachte Songs)
- Infrastructure für Multi-Device Sync vorbereitet
### Added
- 🌐 **Musikserver-Tab** in Bibliothek: Zeige Alben vom Navidrome-Server, tippe um Album abzuspielen
- 📝 **Lyrics-Anzeige**: Lyrics-Button im Now-Playing Screen, Bottom-Sheet mit Song-Lyrics vom Server
- 🔀 **Shuffle & Repeat Modi**: Shuffle-Button (aktiv = rot), Repeat-Cycle (Off → All → One), beide im Player
- 🌐 Navidrome-Integration (Musikserver-Verbindung): Settings-Tab bietet Login/Logout für Subsonic-API-kompatible Server
- Navidrome-Service mit sichere Credential-Speicherung (Secure Storage + SharedPreferences)
- Server-Album-Browser: Lädt Alben vom Server, zeigt Songcount, tippe um Album in Queue zu laden
- Server-APIs erweitert: getArtists(), getArtistSongs(), setFavorite(), getFavorites(), getLyrics() (Phase 2 vorbereitet)
- Dependencies für Navidrome hinzugefügt: http, crypto, shared_preferences, flutter_secure_storage
### Known Limitations (Phase 2)
- Server-Favoriten-Sync: APIs vorhanden, UI-Integration in Phase 2
- Artist-Browse: APIs vorhanden, UI in Phase 2
- Server-Caching: Musik wird nicht lokal für Offline gecacht (Phase 2)
- Lyrics-Sync: Keine Timed-Synchronisation (Phase 2+)
## [1.0.0-alpha]
### Added
- Playlisten-Tab: Favoriten-Kurzeinstieg oben, Liste aller Playlisten mit Songanzahl,
Erstellen-Dialog (FAB), Löschen mit Bestätigung
- 🎵➕ Songs per Bottom-Sheet zu Playlisten hinzufügen (neuer Button in der Songliste,
neben dem Favoriten-Herz)
- Playlist-Detailansicht: Songs per Drag & Drop umsortieren, einzeln entfernen,
Antippen spielt die Playlist ab dieser Stelle
- Datenbank: Playlisten, Favoriten und Wiedergabe-Historie Tabellen (Drift, Schema v2)
- PlaylistService für Playlisten- und Favoriten-Verwaltung
- ❤️ Favoriten-Herz in der Songliste (ausgefüllt/leer)
- ❤️ Favoriten-Herz auch im Now-Playing-Screen (aktueller Song)
- Bibliothek: Künstler- und Alben-Tabs neben "Alle" — Songs werden clientseitig
aus der bestehenden Songliste gruppiert (alphabetisch sortiert, fehlender
Künstler/Album → "Unbekannt" / "Unbekanntes Album"); Antippen öffnet die
Songliste des jeweiligen Künstlers/Albums, Alben zeigen zusätzlich das Cover
- Warteschlangen-Ansicht (Queue-Button in der Now-Playing-AppBar): zeigt die
aktuelle Wiedergabeliste, hebt den laufenden Titel hervor, per Antippen
direkt zu einem Titel springen, Titel entfernen oder per Drag & Drop
umsortieren — ohne Änderungen am Audio-Handler (Queue wird clientseitig
neu berechnet und neu geladen)
- Wiedergabeposition wird alle 5 Sekunden gespeichert und beim erneuten
Abspielen eines Songs automatisch fortgesetzt (kein Resume bei den letzten
3 Sekunden eines Songs, um ein sofortiges Ende zu vermeiden)
- Settings-Tab: Bibliotheks-Statistik (Song-Anzahl + Gesamtspieldauer),
Musik-Berechtigung mit Link in die Systemeinstellungen, kurzer
"Über Melo"-Abschnitt — bewusst ohne Platzhalter für Profil/Cloud-Sync/
Geräte-Verwaltung, da es dafür noch kein Account-/Cloud-System gibt (Phase 2)
**Damit ist das komplette 5-Tab-MVP fertig: Player / Bibliothek / Playlisten /
Suche / Settings — inklusive Playlisten, Favoriten, Warteschlangen-Verwaltung,
Künstler-/Alben-Browsing und automatischem Fortsetzen der Wiedergabeposition.**
### Changed
- Now-Playing-Screen läuft jetzt als eigener Tab statt als gepushter Screen (kein Schließen-Button mehr in der AppBar)
- MediaItem trägt jetzt die Song-UUID mit (`extras['songId']`), nicht mehr nur die Datei-URI
- Finales 5-Tab-Layout: Player / Bibliothek / Playlisten / Suche / Settings (Playlisten und Settings vorerst als Platzhalter)
- "Zuletzt hinzugefügt" aus der alten Startseite ist jetzt Teil der Bibliothek (horizontale Leiste oben)
- MiniPlayer wird auf dem Player-Tab ausgeblendet (dort läuft schon die volle Ansicht)
### Fixed
- 🐛 Der APK-Build funktioniert jetzt überhaupt. Drei Dinge waren nötig:
`compileSdk = 37` und `kotlin.jvm.target.validation.mode=warning` existierten
bisher nur lokal auf dem Server und fehlten im Repo — ohne sie bricht der Build
ab, weil `permission_handler` SDK 37 verlangt. Zusätzlich hebt ein Gradle-
Workaround jetzt Plugin-Module mit zu altem `compileSdk` auf 36 an:
`on_audio_query_android` kompiliert gegen SDK 33, seine AndroidX-Abhängigkeiten
verlangen aber mindestens 34 (16 Metadaten-Konflikte).
### Removed
- Alte Startseite (`home_screen.dart`) entfernt — Funktionalität in die Bibliothek verschoben
### Known Issues
- Genre-Browsing fehlt noch: die `Songs`-Tabelle hat keine Genre-Spalte und
keiner der Scanner (scan_service.dart, android_scan.dart) liest Genre-
Metadaten aus den Dateien aus. Das ursprünglich geplante dritte Bibliotheks-
Tab "Genres" ist deshalb nicht umgesetzt — braucht eine Schema-Migration
plus Metadaten-Extraktion im Scanner (eigene Aufgabe, außerhalb dieses Tasks)