Commit Graph
16 Commits
Author SHA1 Message Date
Hermes (Server)andClaude Haiku 4.5 96d9f38a64 feat(playlists): Playlist-Detailansicht mit Drag&Drop-Umsortieren
PlaylistDetailScreen zeigt die Songs einer Playlist (watchPlaylistSongs),
erlaubt Entfernen einzelner Songs und Umsortieren per Drag & Drop
(ReorderableListView.builder). Tippen auf einen Song spielt die Playlist
ab dieser Stelle. Leer-Zustand mit Hinweistext.

Da bestehende position-Werte nach Einfügereihenfolge lückenhaft sein
können, schreibt das Umsortieren nicht nur den verschobenen Song um,
sondern vergibt für die gesamte Playlist neue lückenlose Positionen
(0..N-1): MeloDb.reorderAllPlaylistSongs (in einer Transaktion) +
PlaylistService.reorderAll als dünner Wrapper.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-08-18 17:19:56 +02:00
Hermes (Server)andClaude Haiku 4.5 4b5d77c196 docs: Changelog für Playlist-Hinzufügen-Button
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-08-18 17:19:42 +02:00
Hermes (Server)andClaude Haiku 4.5 fc9a6abdd7 feat(playlists): Songs per Bottom-Sheet zu Playlisten hinzufügen
Ohne Eintrittspunkt wären Playlisten unbenutzbar, da sie sonst nie Songs
erhalten könnten. SongList bekommt einen zusätzlichen Trailing-Button
(Icons.playlist_add) neben dem Favoriten-Herz, der ein Bottom-Sheet mit
allen Playlisten öffnet ("Neue Playlist" oben, dann bestehende). Antippen
hängt den Song ans Ende der gewählten Playlist an und zeigt eine SnackBar.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-08-18 17:19:29 +02:00
Hermes (Server)andClaude Haiku 4.5 822384b39f docs: Changelog für Playlisten-Tab
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-08-18 17:19:13 +02:00
Hermes (Server)andClaude Haiku 4.5 b2ac118b42 feat(playlists): add Playlisten-Tab mit Favoriten-Kurzeinstieg und Erstellen-Dialog
- PlaylistsScreen: Favoriten-ListTile oben (watchFavorites, pusht FavoritesListScreen),
  darunter alle Playlisten (watchPlaylists) mit Songanzahl, Löschen via Icon/Long-Press
  + Bestätigungsdialog
- CreatePlaylistDialog: Name-Eingabe, Erstellen-Button erst aktiv bei nicht-leerem Text,
  gibt die neue Playlist-ID zurück
- Leer-Zustand "Noch keine Playlisten" nach Vorbild von library_screen.dart
- main.dart: Playlisten-Platzhalter durch PlaylistsScreen ersetzt

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-08-18 17:18:56 +02:00
Hermes (Server)andClaude Haiku 4.5 492d3f19f9 docs: Changelog für finales 5-Tab-Layout
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-08-18 17:03:39 +02:00
Hermes (Server)andClaude Haiku 4.5 3a040b4661 feat(ui): finales 5-Tab-Layout (Player/Bibliothek/Playlisten/Suche/Settings)
- "Zuletzt hinzugefügt" aus dem alten HomeScreen in die Bibliothek verschoben:
  horizontal scrollende Leiste über der vollen Songliste, nur sichtbar wenn
  nicht leer und nicht gerade gescannt wird
- home_screen.dart entfernt (Funktionalität jetzt Teil von LibraryScreen)
- HomeShell-Tabs auf die finale Struktur umgestellt: NowPlayingScreen an
  Position 0, Playlisten- und Settings-Platzhalter an ihren finalen
  Positionen (werden in späteren Tasks durch echte Screens ersetzt)
- BottomNavigationBar-Icons/Labels an die neue Reihenfolge angepasst
- MiniPlayer wird ausgeblendet, solange der Now-Playing-Tab aktiv ist
  (redundant, da der Tab selbst schon die volle Wiedergabe-Ansicht zeigt)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-08-18 17:03:24 +02:00
Hermes (Server)andClaude Haiku 4.5 be1248d7ba docs: Changelog für Now-Playing-Tab und MediaItem-songId
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-08-18 17:01:47 +02:00
Hermes (Server)andClaude Haiku 4.5 2712ace665 feat(player): Now Playing als Tab statt Push-Screen, Favoriten-Herz
- songToMediaItem trägt jetzt die Song-UUID in extras['songId'], damit
  Downstream-Code (Favoriten-Button, später Playback-History) den echten
  Song wiederfinden kann statt nur die file-URI zu haben
- NowPlayingScreen: Schließen-Button entfernt (AppBar-leading), da der
  Screen jetzt als eigener Tab läuft statt gepusht zu werden
- FavoriteButton für den aktuellen Song in die AppBar-Actions eingebaut,
  reaktiv über einen verschachtelten StreamBuilder<MediaItem?>; ohne
  gültige songId (z.B. nichts spielt) wird kein Button gerendert

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-08-18 17:01:31 +02:00
Hermes (Server) 62c65e8eca docs: update changelog for favorite button 2026-08-18 15:30:02 +02:00
Hermes (Server)andClaude Haiku 4.5 db99e2b1f7 feat(ui): add favorite heart toggle, wire into song list
- Filled heart when favorited, outline when not (reactive via watchIsFavorite)
- Wired into every song list tile (library, search, playlists)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-08-18 15:29:51 +02:00
Hermes (Server) 5c8796d353 docs: update changelog for PlaylistService 2026-08-18 15:29:01 +02:00
Hermes (Server)andClaude Haiku 4.5 92f565b1d4 feat(services): add PlaylistService, wire into app providers
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-08-18 15:28:24 +02:00
Hermes (Server)andClaude Haiku 4.5 449fe4ce76 docs: update changelog for playlist schema
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-08-18 15:14:20 +02:00
Hermes (Server)andClaude Haiku 4.5 7478beeb11 fix(test): remove unused material import in sleep_timer_test
Pre-commit analyze gate requires zero issues; this pre-existing
warning was blocking the schema commit.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-08-18 15:14:00 +02:00
Hermes (Server)andClaude Haiku 4.5 d09a677315 feat(database): add Playlists, Favorites, PlaybackHistory tables
- Playlists + PlaylistSongs tables with position-ordered join query
- Favorites table with toggle + watch (reactive heart icon support)
- PlaybackHistory table for resume-position tracking
- Schema v2 with migration from v1
- Follows existing Songs/Folders sync-ready pattern (uuid id, updatedAtMs, deleted)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-08-18 15:13:44 +02:00