/
/
# What does this implement/fix? Starting an external source like Spotify Connect or an AirPlay receiver wiped your queue, because the source was added to the queue as an item and replaced what was there. An external source is not something you queue up — it plays on the player. So it now does. Your queue keeps its items and just stops being what the player is playing, ready to resume when the source stops. Follows #5913. Existing clients need no change: a play request for a source is forwarded to `select_source`. - An external source is now a source on the player, not an item in its queue - Your queue survives a source starting, and is still there afterwards - The player shows the source, and what the source reports it is playing - Play, pause, next, previous and seek reach the source's own session - New `players/cmd/shuffle` and `players/cmd/repeat` apply to whatever is playing - The "queue managed by …" read-only queue is gone (a frontend PR removes the dead code) - `on_source_removed` and `on_source_transferred` become one `on_source_released` - An announcement no longer ends the source it interrupts, so the player goes back to it - A source is handed back when its plugin unloads, or when its stream never starts Radio is unaffected: it stays a queue item and its position still comes from its stream metadata. The override this changes was only ever applied to audio sources, and there are now tests pinning that. Known gap, accepted: shuffle and repeat on a Spotify Connect session are not reachable from the UI until a frontend change wires the new player commands — the buttons key on there being a queue, and there is no longer one while a source plays. **Related issue (if applicable):** - n/a ## Types of changes - [ ] Bugfix (non-breaking change which fixes an issue) — `bugfix` - [ ] New feature (non-breaking change which adds functionality) — `new-feature` - [x] Enhancement to an existing feature — `enhancement` - [ ] New music/player/metadata/plugin provider — `new-provider` - [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) — `breaking-change` - [ ] Refactor (no behaviour change) — `refactor` - [ ] Documentation only — `documentation` - [ ] Maintenance / chore — `maintenance` - [ ] CI / workflow change — `ci` - [ ] Dependencies bump — `dependencies` ## Checklist - [x] The code change is tested and works locally. - [x] `pre-commit run --all-files` passes. - [x] `pytest` passes, and tests have been added/updated under `tests/` where applicable. - [x] For changes to shared models, the companion PR in `music-assistant/models` is linked: music-assistant/models#372 (merged, released as 1.1.195 — pinned here). - [x] For changes affecting the UI, the companion PR in `music-assistant/frontend` is linked: music-assistant/frontend#2612 (merges after this one). - [x] I have read and complied with the project's [AI Policy](https://github.com/music-assistant/.github/blob/main/AI_POLICY.md) for any AI-assisted contributions. - [ ] I have [raised a PR against the documentation repository](https://github.com/music-assistant/music-assistant.io/blob/main/CONTRIBUTING.md) targeting the main or beta branch as appropriate.