Linked Playlists (one Playlist type) #39

Closed
opened 2026-10-07 19:44:13 +02:00 by SBDeveloper · 1 comment
Owner

Parent

Part of #32

What to build

Replace the Playlist / Source Playlist split with one Playlist type that has zero or one Source link. Deezer playlists appear as Playlists linked to Deezer. Deezer Tracks added or removed in-app write through to Deezer. Tracks from other Sources stay app-side and are marked not on Deezer. Syncing lets Deezer own its Tracks and keeps app-side extras anchored after the Track that preceded them (re-anchoring to the previous survivor, or the start, if that Track disappears). Creating and copying Deezer playlists keep working. Existing stored Playlists load unchanged and Offline marking of a whole Playlist covers all its Tracks. The old UI merges its two playlist pages into one so the app keeps working (throwaway, replaced by the sidebar).

Acceptance criteria

  • Core tests with a Deezer fixture: write-through add/remove; other-Source Track stays app-side and is marked; remote change arrives; extras keep position; anchor removal re-anchors; unlinked Playlist unchanged; old stored Playlists load
  • Make Playlist offline covers Tracks of every Source in it
  • Old UI shows one Playlists page; Source Playlist code and wording removed

Blocked by

## Parent Part of #32 ## What to build Replace the Playlist / Source Playlist split with one Playlist type that has zero or one Source link. Deezer playlists appear as Playlists linked to Deezer. Deezer Tracks added or removed in-app write through to Deezer. Tracks from other Sources stay app-side and are marked not on Deezer. Syncing lets Deezer own its Tracks and keeps app-side extras anchored after the Track that preceded them (re-anchoring to the previous survivor, or the start, if that Track disappears). Creating and copying Deezer playlists keep working. Existing stored Playlists load unchanged and Offline marking of a whole Playlist covers all its Tracks. The old UI merges its two playlist pages into one so the app keeps working (throwaway, replaced by the sidebar). ## Acceptance criteria - [ ] Core tests with a Deezer fixture: write-through add/remove; other-Source Track stays app-side and is marked; remote change arrives; extras keep position; anchor removal re-anchors; unlinked Playlist unchanged; old stored Playlists load - [ ] Make Playlist offline covers Tracks of every Source in it - [ ] Old UI shows one Playlists page; Source Playlist code and wording removed ## Blocked by - #33
Author
Owner

Implemented in 4e45271: one Playlist type with optional Source link, write-through for linked Source Tracks, app-side extras anchored on sync, old Source Playlist code and UI page removed. Reorder is not written through (no plugin call); noted in ADR 0004.

Implemented in 4e45271: one Playlist type with optional Source link, write-through for linked Source Tracks, app-side extras anchored on sync, old Source Playlist code and UI page removed. Reorder is not written through (no plugin call); noted in ADR 0004.
Sign in to join this conversation.
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
SBDeveloper/medley#39
No description provided.