Skip to content

Settings Phase 6: Sonos Runtime#166

Open
msgerbush wants to merge 50 commits intoGudsfile:mainfrom
msgerbush:feature/phase6-sonos-runtime
Open

Settings Phase 6: Sonos Runtime#166
msgerbush wants to merge 50 commits intoGudsfile:mainfrom
msgerbush:feature/phase6-sonos-runtime

Conversation

@msgerbush
Copy link
Copy Markdown
Contributor

@msgerbush msgerbush commented Mar 27, 2026

Refs #156. Depends on #165.

Summary

  • resolve persisted Sonos selected_group settings into a concrete runtime coordinator/member target before playback startup
  • carry the resolved Sonos group through runtime config and enforce the saved topology once during Sonos player initialization
  • preserve override precedence for manual Sonos targets, and harden startup against stale discovery data with saved-host fallback
  • roll back partial regrouping if startup enforcement fails, and add focused coverage for runtime resolution, validation, wiring, and Sonos recovery paths

Notes

This focuses on actually building and targeting the desired Sonos speaker groups from the settings. Once this is connected to the UI, it will allow us to create and update speaker groups (#128 and #129). A lot of extra work went into making it fault-tolerant since querying and editing the Sonos topology requires a lot of network requests.

This is the last feature that we need to support in the settings, after this the remaining work for #126 is to do a pass on the CLI UX (#158) and to wire up a new Settings UI (#157).

# Conflicts:
#	jukebox/adapters/inbound/config.py
#	jukebox/di_container.py
#	tests/jukebox/adapters/inbound/test_config.py
#	tests/jukebox/test_jukebox_di_container.py
…om/msgerbush/jukebox into feature/phase2-settings-write

# Conflicts:
#	tests/jukebox/settings/test_resolve.py
…gs-write

# Conflicts:
#	discstore/adapters/inbound/api_controller.py
#	discstore/adapters/inbound/config.py
#	discstore/app.py
#	discstore/di_container.py
#	jukebox/app.py
#	jukebox/settings/__init__.py
#	jukebox/settings/file_settings_repository.py
#	jukebox/settings/resolve.py
#	jukebox/settings/service_protocols.py
#	tests/discstore/adapters/inbound/test_api_controller.py
#	tests/discstore/adapters/inbound/test_config.py
#	tests/discstore/test_discstore_app.py
#	tests/jukebox/settings/test_resolve.py
@msgerbush msgerbush force-pushed the feature/phase6-sonos-runtime branch from 742dae0 to 69937b6 Compare March 30, 2026 03:12
@msgerbush msgerbush force-pushed the feature/phase6-sonos-runtime branch from 93d99bc to 244cd05 Compare March 30, 2026 04:26
@msgerbush msgerbush force-pushed the feature/phase6-sonos-runtime branch from 244cd05 to 5552808 Compare March 30, 2026 04:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant