/
/
# What does this implement/fix? In flow mode, Cast players get a special `command/<id>/next.mp3` pseudo item inserted into the cast queue — it is both the on-player next button and the recovery path when the flow stream dies (the device advances to it, fetches the url, and the server skips the queue to the next item). Two defects broke this path, surfaced while triaging the LG S95TR mid-queue dropouts in music-assistant/support#6108: 1. **The command url targeted the wrong queue for Universal Player children.** It was built with the cast child's own player id, but a protocol child does not own the active queue — its Universal Player parent does. On 2.10.0rc1 fetching the url raised `Queue ... is not active` from `PlayerQueuesController.next` (visible in the reporter's diagnostics), killing a 359-track queue over one hiccup; since the session hardening (#5819) the url resolves to `None` for children, so the recovery item was silently never inserted. `get_command_url` now resolves the active queue for the given player (no change for standalone players, where the player id already is the active queue id). 2. **The command item declared `contentType: audio/flac` but the url serves `silence.mp3`.** Google's receiver is lenient about the mismatch; strict vendor cast stacks (e.g. the LG S90T/S95TR soundbar module) report a media playback error instead — matching the reporter's `Soundbar reported a media playback error for .../next.mp3` — which ends the session rather than recovering it. The declaration now matches the served file. This does not address the LG's underlying stream drops themselves (those need the mid-queue idle recovery discussed in the issue), but it repairs the safety net that should have caught them. **Related issue (if applicable):** - related issue music-assistant/support#6108 ## Types of changes - [x] Bugfix (non-breaking change which fixes an issue) — `bugfix` - [ ] New feature (non-breaking change which adds functionality) — `new-feature` - [ ] 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. - [ ] For changes to shared models, the companion PR in `music-assistant/models` is linked. - [ ] For changes affecting the UI, the companion PR in `music-assistant/frontend` is linked. - [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. --------- Co-authored-by: Claude Fable 5 <[email protected]> Co-authored-by: Marcel van der Veldt <[email protected]>