/
/
/
# What does this implement/fix? An announcement volume is worked out and applied to the AirPlay speaker just before its stream starts, but the stream-start volume sync then replaced it with the level the parent player reported. On a device that offers a Chromecast or DLNA interface next to AirPlay (a receiver or TV merged into one player), the parent reports the idle sibling interface's level while nothing is playing, so the announcement played at that level and the announcement volume setting was quietly ignored. Follow-up to #5674, which made the volume *decision* aware of which interface carries the audio. This fixes the remaining case where the requested volume itself was overwritten. **Related issue (if applicable):** - follow-up to #5674 ## Types of changes - [ ] 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` - [x] Maintenance / chore — `maintenance` - [ ] CI / workflow change — `ci` - [ ] Dependencies bump — `dependencies` ### Changes - A stream session now carries the volume that was requested for it, and the stream-start sync keeps that level instead of adopting the parent's. Announcements without a volume strategy request no volume and still take their level from the parent, as before. - The unity gain reset still applies: a control that owns the volume of this output attenuates on the device itself, so the requested level must not land on top of it. - The mute release still runs for announcements, so a leftover mute cannot silence the clip (the case #5674 fixed). - Added tests for the kept volume, the unity gain reset, the mute release and the session wiring. ## 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.