Skip to content

[agent] Browse song radio without interrupting playback - #359

Open
alexng353 wants to merge 1 commit into
crmne:mainfrom
alexng353:codex/song-radio-browsing
Open

alexng353 wants to merge 1 commit into
crmne:mainfrom
alexng353:codex/song-radio-browsing

Conversation

@alexng353

@alexng353 alexng353 commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

[agent] Browse song radio without interrupting playback

  • Go to song radio opens a station page; Start song radio starts playback and opens Queue. The page keeps the seed song and artwork visible while loading and offers play and refresh controls.
  • Resolves stations and metadata through librespot’s existing typed context resolver. Browsing does not activate Connect, replace the queue, create playlists, or write listening history. The station may differ from Spotify’s own radio playlist.
  • Linux validation: formatter, Clippy with and without all features, both all-target test suites, doc tests, Rust docs, launcher tests, issue-assessment tests, and Jekyll. Demo screenshots and UI tests cover layout and actions; authenticated Spotify resolution and other platforms were not exercised in this revision.
Theme / size Before: playlist After: radio page
dark, 1240x800 Before After
dark, 760x800 Before After
light, 1240x800 Before After
light, 760x800 Before After

Co-Authored-By: GPT-6 (OpenAI) noreply@openai.com

@alexng353

alexng353 commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

Ok so update, I had codex decompile the spotify desktop app, then pull the precise way spotify "generates" the radio playlists, which is with the api endpoint /inspiredby-mix/v2/seed_to_playlist/{seed_uri}?response-format=json

I have no idea how maintainers want to move forward with this changset. I also have another change that makes the radio pages just render with librespot's built in radio API, but that generates different radios to the actual spotify internal ones (I think)

Please let me know what to do

--- More context ---

Librespot's station API hits GET https://<resolved-spclient-host>/context-resolve/v1/spotify:station:track:<song-id>, which returns real spotify radio data, but does not create a playlist on the user account like real spotify does.

I don't know if this behaviour is desirable or not (creating playlists on the user account), but for personal use I've built this so that it matches the behaviour I like.

I can also make it a settings toggle if that's desired. I've also got a local changeset that bypasses librespot's thing where they don't want to writeback recently played songs/playlists to spotify, which I'm using, and can upstream if that's wanted.

@alexng353
alexng353 marked this pull request as ready for review September 11, 2026 08:36

@crmne crmne left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The visible scope, browsing song radio separately from starting playback, fits. Please use your version backed by librespot’s existing typed context resolver. We can accept the station it provides without matching Spotify’s private radio playlist exactly.

Remove the inspiredby-mix endpoint and keep playlist creation and listening-history writeback out of this PR. Rebase that scoped version onto main and add the required tests and visual evidence.

@alexng353

Copy link
Copy Markdown
Contributor Author

The visible scope, browsing song radio separately from starting playback, fits. Please use your version backed by librespot’s existing typed context resolver. We can accept the station it provides without matching Spotify’s private radio playlist exactly.

Remove the inspiredby-mix endpoint and keep playlist creation and listening-history writeback out of this PR. Rebase that scoped version onto main and add the required tests and visual evidence.

Np. Just a question, does using the internal api break spotify tos lol
I didn't read it

Also, those other changes were not meant to be in this PR, that's my fault. Thanks for the comments.

Separate radio-page navigation from immediate station playback. Preserve
loading metadata, ignore stale responses, and retry restored pages when
the local playback session becomes ready. Keep private playlist creation
and listening-history reporting outside this change.

Include regression tests and isolated light/dark before-and-after captures.

Co-Authored-By: GPT-6 (OpenAI) <noreply@openai.com>
@alexng353
alexng353 force-pushed the codex/song-radio-browsing branch from 0e57e87 to 81ac67e Compare September 15, 2026 04:59
@alexng353 alexng353 changed the title Browse song radio without interrupting playback [agent] Browse song radio without interrupting playback Sep 15, 2026
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