/
/
# What does this implement/fix? Grouping an AirPlay speaker (a HomePod, for example) with a Sendspin speaker could leave it silent, and afterwards it would keep playing in compatibility mode. Starting the group asked the speaker to play a second time while it was still playing the first stream. The speaker accepted the new connection and dropped the old one. Music Assistant then read that dropped connection as the speaker failing, so it took the speaker out of the group it had just joined and remembered it as a device that needs compatibility mode. The result was silence, and a setting the user never chose that stuck around for every following playback. A log from one report shows six streaming processes started for a single speaker in seven minutes, with three of them sending audio to it at the same time. **Related issue (if applicable):** - found while investigating a "no audio, then lost the queue" report ## 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` Changes: - the Sendspin bridge stops a speaker's running stream before it starts its own, and gives up rather than starting a second one when that stream cannot be stopped - the bridge no longer loses track of a stream that the normal playback path started in the meantime - a stream that has already been replaced no longer removes the speaker from its group or tries to rejoin it - a stream that has already been replaced no longer switches the speaker to compatibility mode or to NTP timing ## 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.