Skip to content

Add the music provider seam behind the Tidal shim - #11

Draft
chrispmonkey wants to merge 2 commits into
PenumbraOS:masterfrom
chrispmonkey:pr2-provider-seam
Draft

Add the music provider seam behind the Tidal shim#11
chrispmonkey wants to merge 2 commits into
PenumbraOS:masterfrom
chrispmonkey:pr2-provider-seam

Conversation

@chrispmonkey

Copy link
Copy Markdown
Contributor

Stacks on #8. The Tidal-mock shim from #8 now resolves tracks through a
MusicProvider trait instead of hardcoding the test tone, so real providers
slot in behind a single seam.

Adds server-rs/src/music/ (the MusicProvider trait + a MockProvider
reference impl), a [music] provider config key, and refactors tidal_shim.rs
to drive off the provider. Only the mock exists today; each real provider lands
as its own PR.

The reviewable delta is server-rs/src/music/* and the tidal_shim.rs refactor
— the rest of the diff is #8 (already approved) and collapses to just the seam
once #8 merges. Draft until then.

The music experience is itself a Tidal client, so a hook rewrites its
api.tidal.com REST host to this server and stubs the session token, and
the server answers the play-music chain (search, tracks, playbackinfo)
with a local test tone. No external providers yet — this is the shim the
provider work plugs in behind.
Introduce a MusicProvider trait (search, queue, track, recommendations,
playback) and a built-in mock that plays the local test tone, and drive
the shim off Arc<dyn MusicProvider> instead of canned data. A new source
is now a new impl in its own file selected by [music] provider — the shim
and core server files never change to add one.
@agg23

agg23 commented Aug 15, 2026

Copy link
Copy Markdown
Member

Rebase after merge

So you're aware, you can use stacked PRs now in GitHub, and I generally recommend people do not force push to PRs as it is difficult to review the changes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants