Files
Melo/CHANGELOG.md
T

6.9 KiB
Raw Blame History

Changelog

Alle nennenswerten Änderungen an diesem Projekt werden hier dokumentiert. Format angelehnt an Keep a Changelog.

[Unreleased]

🎉 RELEASE BUILD v3: Phase 2 + Login + Auto-Bugreport System!

Build Date: 2026-08-19 21:30
APK (Release/Universal): app-release.apk (22.3 MB) — Mit Auto-Logger + Login-Improvements!
APK (ARM64-Specific): app-arm64-v8a-release.apk (21 MB) — Optimal für POCO X7 Pro
Tests: 70/70
Build Status: SUCCESS

Neue Features in dieser Build:

  • Login-Verbesserungen: Auto-URL + User-Buttons + Gast-Modus
  • 📊 Auto-Bugreport System: Logger sendet Fehler sofort + andere Logs gesammelt zum Server
    • Device-Info (Model + OS) + Timestamp + Stack-Traces
    • Integration in Navidrome-Service für Login-Fehler-Diagnose
  • 📝 Alle Phase-2-Features (Sync, Caching, Player, Controls)
  • 🔒 Secure Credential-Speicherung
  • 🎵 Enhanced MiniPlayer mit Skip-Buttons

Phase 2 (Part 1-8 Completed — MILESTONE!)

  • 🗄️ Auto-Caching: Lieder werden automatisch beim Streamen lokal gespeichert!
    • Cache-First-Logik: Existierende Dateien lokal spielen
    • Fallback: Vom Server streamen wenn kein Cache
    • Cache-Speicher-Status in Settings (MB/KB/B) mit Clear-Button
  • 🗄️ CacheManager: MD5-Hash-basierte Cache-Verwaltung (getCacheSize, clearCache)
  • 📴 Offline-Mode: Toggle in Settings aktiviert Offline-Betrieb (nur gecachte Lieder spielen)
  • 🎤 Artist-Browse: Toggle in Navidrome-Tab zwischen Albums ↔ Künstler, Tap lädt alle Songs des Künstlers
  • 🌟 Favoriten-Sync: Button in Settings lädt Server-Favoriten und importiert sie lokal
  • 📊 History-Sync: Wiedergabe-Position vom Server laden + alle 5s zum Server senden (Subsonic-Bookmarks)
  • 📋 Playlisten-Sync: Button in Settings lädt alle Server-Playlisten (mit 🌐 Präfix zur Unterscheidung)
  • 🔒 Lock-Screen Controls: Notification mit Play/Pause/Skip-Buttons auf Android Lock Screen
  • 🎵 Enhanced MiniPlayer: Now-Playing Widget auf allen Tabs mit Skip-Buttons + Progress-Bar
  • 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)