music-assistant-server

Branch:dev-lidarr-plugin

Commit Details

Make Sendspin on Cast devices opt-in and mark it experimental (#6081)

# What does this implement/fix?

Sendspin on Chromecast devices is now switched off by default and marked
as experimental. The experience isn't good enough to be on by default:
playback is rarely in sync without setting a delay by hand per speaker,
and some recent Cast firmwares can't run the Sendspin receiver at all.
There is no way to tell which ones in advance, so you only find out the
first time you play something.

Devices that already have it running keep working, untouched.

- On a newly discovered Cast device, Sendspin is off. It appears in the
device's output protocol settings with a warning explaining the caveats,
ready to be switched on.
- An existing setup keeps Sendspin enabled and keeps its tuned playback
delay. It only gains the warning.
- A Cast device that reports it can't run Sendspin at all is no longer
offered it. Its Sendspin output is removed and never offered again,
instead of staying around behind an alert.
- Any output protocol can be flagged experimental by its provider. It
then defaults to off and shows the provider's warning above the enable
toggle.

**Related issue (if applicable):**

- https://github.com/orgs/sendspin/projects/1#

## 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.
- [ ] 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.
Forgejo

Author

Marcel van der Veldt<[email protected]>
August 28, 2026 at 02:02 PM UTC

Committer

Marcel van der Veldt<[email protected]>
August 29, 2026 at 12:28 AM UTC
455additions
12deletions
11files changed

Parent commits

Changes

11 files
+455-12

Changed Files (11)

music_assistant/
music_assistant/controllers/config/
music_assistant/providers/chromecast/
music_assistant/providers/sendspin/
music_assistant/translations/
tests/controllers/config/
tests/providers/sendspin/
music_assistant/constants.py
+1-1
music_assistant/controllers/config/players.py
+40-2
music_assistant/providers/chromecast/constants.py
music_assistant/providers/chromecast/sendspin_bridge.py
+71-6
music_assistant/providers/sendspin/constants.py
music_assistant/providers/sendspin/player.py
-1
music_assistant/providers/sendspin/strings.json
music_assistant/strings.json
music_assistant/translations/en.json
+4-1
tests/controllers/config/test_output_protocol_entries.py
+1
tests/providers/sendspin/test_bridge_manager.py
+338-1