/
/
# What does this implement/fix? When a player's audio is carried by the Sendspin AirPlay bridge, tearing the bridge stream down leaves the underlying AirPlay player reporting "playing" with a frozen position. That phantom position then grows with the wall clock for as long as the player sits unused. When Music Assistant later hands the player's output over to AirPlay (for example when an AirPlay-only speaker joins the group), it resumes from that phantom position — hours past the end of the track — and the track is silently skipped. Cause: the bridge detaches the stream from the player before stopping it, so the stream's own "reset to idle" on stop is ignored as coming from a stale stream. - Reset the AirPlay player to idle/position 0 when the bridge tears its stream down, unless a newer stream has already taken over - Add regression tests for both cases **Related issue (if applicable):** - related issue N/A (found via server log triage) ## Types of changes <!-- Tick exactly one box. CI (.github/workflows/pr-labels.yaml) derives the label from the ticked box and applies it automatically; the release-notes generator uses that same label to slot this change into the next release notes. --> - [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.