Playlist page shows Recommendations from Sources #99
Labels
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Blocks
#102 Opt-in: local files seed Recommendations
SBDeveloper/medley
#103 Spotify plugin implements recommendations
SBDeveloper/medley
#104 YouTube plugin implements recommendations
SBDeveloper/medley
Reference
SBDeveloper/medley#99
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What to build
A Playlist page shows Recommendations: Tracks a Source proposes from the Tracks already in the Playlist (ADR 0024, glossary term Recommendation).
A Source opts in through a new optional
recommendationsexport in the plugin contract (seed TrackRefs in, Tracks out), documented next tocontinuation. The host samples up to about 25 seeds per Source from that Source's own Tracks in the Playlist, asks every Source that holds seeds and exports it, ranks by how many seeds agree, interleaves, dedupes, and drops Tracks already in the Playlist (Library Tracks are kept). The Deezer plugin implements the export. The Playlist page shows about 20 under the Tracks.Each row has Play, Add (the normal add path, so it writes through on a Linked Playlist, ADR 0004) and Dismiss (remembered per Playlist on the Device, not synced). A Refresh button asks again with a new sample. The list is cached per Playlist on the Device and dropped when the Playlist changes; adding a Recommendation only removes its row. Hidden in Offline mode (ADR 0019). A Playlist with no Source Tracks shows nothing.
Acceptance criteria
recommendationsexport; a Source without it is skipped without errorBlocked by
None (can start immediately)
Implemented in
fb10594,74fdfc2and8c88358(not pushed yet). Recommendations export in the plugin contract, host seeding/ranking/dedupe/exclusion, Deezer implementation, Playlist page section with Play/Add/Dismiss/Refresh, per-Playlist dismissals and cache, hidden offline. Core integration tests in crates/core/tests/recommendations.rs plus unit tests. Not covered: the local-file opt-in setting from ADR 0024 (out of scope here).