Commit Graph
29 Commits
Author SHA1 Message Date
Dustin d555a7f146 v2.36 — Sprint 1: Behebe Issues #1 (Zurück-Button), #5 (Ausgeloggt), #4 (Berechtigungen)
Issue #1: CloudScreen Zurück-Button — onZurueck Callback statt Navigator.pop()
- CloudScreen erhält VoidCallback? onZurueck Parameter
- Bei onZurueck != null → Callback (Tab-Wechsel in home_screen)
- Fallback: Navigator.pop(context) für Standalone-Nutzung

Issue #5: Token wird nur bei HTTP 401 gelöscht
- _tokenOnlinePruefen(): nur statusCode == 401 → false
- 5xx, andere Fehler, Netzwerkfehler → true (Token behalten)
- Verhindert Ausloggen bei temporären Server-Problemen

Issue #4: Android 13+ Berechtigungen beim App-Start
- main.dart: frageSpeicherZugriff() + POST_NOTIFICATIONS nach Auth-Init
- musik_scanner.dart: Permission-Check vor externen Ordnern in _sammleMusikPfade()

Build: ⏭️ (no APK)
2026-08-02 15:48:08 +02:00
Dustin 15993b1d0a v2.35 — Vollständiges Sync-System: Playlisten, Favoriten, Auto-Sync, Persistent Login, Benutzerdefinierte Namen
## Server (melo_cloud.py v3.0.0)
- Neue DB-Tabellen: user_playlists, user_playlist_songs, user_favorites, user_history, sync_meta
- Playlist-Endpunkte: GET/POST /api/cloud/playlists, GET /api/cloud/playlists/<id>, POST songs, DELETE songs, PUT positions
- Favoriten-Endpunkte: GET/POST /api/cloud/favorites, POST /api/cloud/favorites/toggle
- History-Endpunkte: GET/POST /api/cloud/history (mit Dedup)
- Rename-Endpunkt: POST /api/cloud/rename (custom_title/custom_artist)
- Sync-Endpunkte: POST /api/cloud/sync-all, GET /api/cloud/sync-status
- delete-all erweitert um Playlists + Favorites + History

## App
- db_helper.dart: Migration v4→v5 (cloud_id, cloud_title, cloud_artist, server_favorites, sync_metadata)
- auth_service.dart: Token-Validierung beim Start (online check + Offline-Fallback), Persistent Login
- cloud_service.dart: Neue Methoden für Playlists (CRUD), Favorites (get/sync/toggle), Rename, History, syncAll/syncStatus
- cloud_screen.dart: Komplett-Rewrite mit Sync-Modus (Manuell/Auto), Intervall-Auswahl, Sync-Fortschritt-Anzeige, Playlist-Verwaltung, Favoriten-Anzeige + Umbenennen, Sync-Info-Karte, nächster Sync
- main.dart: Auto-Sync beim App-Start (nur wenn konfiguriert + fällig)

## Flutter Analyze
- 0 neue Issues — nur 7 pre-existing
2026-08-01 19:32:35 +02:00
Dustin 2b06a8e496 fix: Cloud-Status sofort anzeigen (kein leerer Ladekreis) 2026-08-01 18:23:19 +02:00
Dustin ac543eb84b fix: CloudService silent error → logging, Status zeigt Token-Fehler an 2026-08-01 18:15:04 +02:00
Dustin a7dbf5e9e1 fix: Login-Fehlermeldung zeigt jetzt saubere Server-Nachricht, Passwort-Reset Baka 2026-08-01 18:08:10 +02:00
Dustin 30c85f823e debug: Body-Inhalt im Login-Fehler anzeigen 2026-08-01 18:04:01 +02:00
Dustin ebd3131117 debug: auth-response logging + Body-Länge im Fehler 2026-08-01 17:51:10 +02:00
Dustin a495a183d8 fix: Login-Fehlerhandler — 200 ohne Token abfangen, Server-Nachrichten parsen 2026-08-01 17:44:05 +02:00
Dustin 7f17a5afd6 v2.33 — Login vereinfacht: keine Registrierung, Navidrome auto-sync, nur eine Anmeldung 2026-08-01 17:36:02 +02:00
Dustin 7d5cae64d1 fix: syntax error in player_service (missing }); 2026-08-01 16:54:05 +02:00
Dustin f00fd445f5 fix: code-review #2 — dedup MagicBytes, auth für check_corrupted, UI-Flag, merged player streams, jq-JSON 2026-08-01 16:48:45 +02:00
Dustin 2d4c7c8b98 v2.32 — Defekte Musik erkennen (Magic Bytes, ffprobe, DB-Flag, UI) 2026-08-01 16:40:42 +02:00
Dustin 4a05c76199 fix: code-review findings — error handling, null safety, persist settings, auth header 2026-08-01 15:09:48 +02:00
Dustin 669a02304e fix: code-review warnings — deprecated APIs, debugPrint→Logger, unused import 2026-08-01 15:08:05 +02:00
Dustin cdb137f724 fix: stale cloud_einstellungen.dart entfernt (Rebase-Artefakt) 2026-08-01 15:06:26 +02:00
Dustin 36c744d6e3 v2.31 — Login, Einstellungen & Cloud Sync Redesign
- Login-Screen im Melo-Design (Schwarz+Rot) mit Baka-Auth JWT
- AuthService fuer Token-Management ueber baka-net.de/auth
- Registrierungs-Modus + 'Ohne Login fortfahren'
- Navidrome-Credentials optional im Login aufklappbar

- SettingsScreen ersetzt AlertDialog
- BottomNav navigiert statt Dialog zu triggern
- Cloud Sync, Server verbinden, Diagnosedaten, App-Info, Abmelden

- CloudEinstellungen-Dialog entfernt, alles in CloudScreen konsolidiert
- Hardcode login('Baka','') entfernt → AuthService.benutzer
- Gradient-Statuskarte, animierte Segment-Intervall-Auswahl
- JWT Authorization statt Klartext-Passwort

- AppConfig: API-Key defaultValue entfernt (kein Fallback-Leak)
- Build crasht ohne --dart-define MELO_API_KEY

Build: split APK (arm64 19.6M, armeabi 17.1M, x86_64 21.1M)
2026-08-01 15:03:22 +02:00
Hermes (Server) 77a20422be Security-Fixes aus dem flutter-security Audit
CRIT:
- Cloud-Token jetzt in flutter_secure_storage (Keystore/Keychain) statt SharedPreferences, mit Migration alter Eintraege
- usesCleartextTraffic entfernt (kein HTTP-Klartext mehr)
HIGH:
- Path-Traversal gefixt: p.basename bei YouTube-Download, Navidrome-Download und Cloud-Auto-Sync
MED:
- allowBackup=false (kein Backup von Token-Daten)
- Navidrome-Salt kryptographisch sicher (Random.secure statt Timestamp)
2026-08-01 13:10:18 +02:00
Hermes (Server) 8b6a04ead8 Fix: Review-Findings korrigiert (Tag-Leiste, Profil, Singleton u.a.)
CRIT:
- Tag-Leiste: Toggle-Kopf 'Tags & Filter' eingebaut (war unerreichbar) + TagStats
- Profil: Cloud-Count vor Dialog aufloesen (kein 'Instance of Future' mehr)
HIGH:
- CloudEinstellungen: toten Sync-Timer entfernt (echter Timer im ViewModel)
- StatistikCard + RecentWidget jetzt eingebaut (gesamtMB/gesamtMin endlich genutzt)
- CloudService als Singleton (konsistenter Token-Zustand in allen Services)
MED/LOW:
- Playlist-Erkennung nur noch via list= Parameter
- Player: fehlende Quelle wird geloggt statt still
- song_tile: null-ID-Guard vor Tag-Dialog
- Scanner-Log mit Exception-Objekt
- FavoritenService: anzahlFavoriten() fuer StatistikCard
2026-07-31 15:42:54 +02:00
Hermes (Server) b3aedc53f9 Feature: Cloud-Daten loeschen in Einstellungen (3s-Halten)
- Einstellungen > Cloud-Daten loeschen: 'Nur Musik' oder 'Komplett vom Server'
- 3-Sekunden-Gedrueckthalten-Button zur Bestaetigung (Fortschrittsbalken)
- Warnhinweis: Wird SOFORT geloescht, nicht rueckgaengig machbar
- Server: delete-music/delete-all Endpunkte mit Dedup-sicherem Registry-Cleanup
- Loeschen nur des eigenen Kontos (User aus Token, kein IDOR)
2026-07-31 15:39:19 +02:00
Hermes (Server) 519bdd4e23 Feature: Jederzeit von 'nur lokal' auf Cloud wechseln + Abmelden-Fix
- Profil-Dialog: 'Cloud aktivieren' erscheint im Lokal-Modus -> setzt Modus + Login
- Abmelden loescht jetzt wirklich das Token (CloudService.logout)
- _zeigeProfil liest Modus vor dem Dialog
2026-07-31 15:37:00 +02:00
Hermes (Server) f9b6e57606 Feature: Login freiwillig - einmalige Modus-Wahl beim ersten Start
- Erster Start: Dialog 'Cloud (empfohlen)' oder 'Nur lokal' -> wird gespeichert
- Cloud gewaehlt: direkt Login-Dialog (Name + Passwort)
- Lokal gewaehlt: App nutzt nur lokale Musik, kein Login noetig
- Spaeter jederzeit im Cloud-Tab einloggbar
2026-07-31 15:35:34 +02:00
Hermes (Server) 19e4aac62e Feature: Login-Effekte pro Person (Akzentfarbe + Sound + Begruessung)
- UserEffekt: Baka = rot + Fanfare, Tinker = tuerkis + Chime, Standard-Ping
- MeloTheme: dynamische Akzentfarbe via ValueNotifier (Theme wechselt live)
- Ausloeser: App-Start (wenn Token vorhanden) + nach erfolgreichem Login
- Assets: 3 kurze WAV-Sounds (assets/sounds/)
- Web: /whoami-Endpoint (Caddy) + Willkommens-Banner auf baka-net.de
2026-07-31 15:34:04 +02:00
Hermes (Server) 9a880b0f21 Security: Cloud-Auth auf Bearer-JWT umgestellt (IDOR-Luecke geschlossen)
- cloud_service: echter Login gegen baka-auth, Token statt X-API-Key/X-User
- app_config: hartcodierten API-Key-Default entfernt
- download_service + melo_logger: Bearer-Token statt X-API-Key
- navidrome: Passwort in flutter_secure_storage (Keychain/Keystore)
- song: token-haltige stream_url wird nicht mehr in SQLite persistiert
- cloud_screen: Pfad-Traversal beim Download-Dateinamen gefixt (p.basename)
- home_screen: Login-Dialog mit Passwort-Feld, Auto-Sync nutzt restoreLogin
2026-07-31 14:31:12 +02:00
Hermes (Server) 3e9389ab59 Melo v2.10 - YouTube Proxy, Download-Screen, Logger, iOS 2026-07-26 14:24:10 +02:00
Hermes (Server) b4baef5875 Next Level Setup: Qualitäts-Gate + Projekt-Regeln (.hermes.md) 2026-07-24 10:37:13 +02:00
Hermes (Server) a417b191a1 Fix: onAddToPlaylist im SongTile Konstruktor hinzugefügt 2026-07-24 08:57:37 +02:00
Hermes (Server) b43ccd4c0d Code Review Optimierungen: Typsicherheit, Scanner-Performance, DB Upgrade Template, Division Guard 2026-07-24 08:33:30 +02:00
Hermes (Server) c7828b851c Navidrome-Integration, Widgets (Recent + Tag-Statistik) 2026-07-23 22:23:28 +02:00
Dustin-Mike Jens Hähnel 94a4063070 Initial commit 2026-07-23 14:31:28 +02:00