Refactor Fully Kiosk to single-instance#3849
Conversation
🔒 Dependency Security Report✅ No dependency changes detected in this PR. |
|
why is this a breaking change if you can simply migrate the player configs ? |
|
Just because I think any groups will need to be recreated. Probably very small chance but I wanted to be cautious as we are getting heat from some users when we break stuff and dont tell them... |
| async def loaded_in_mass(self) -> None: | ||
| """Sync registered players against the current hosts config.""" | ||
| entries = cast("list[str]", self.config.get_value(CONF_MANUAL_IPS) or []) | ||
| new_ids = {f"fully_kiosk_{h}_{p}" for h, p in (_parse_host_entry(e) for e in entries)} |
There was a problem hiding this comment.
Why are we using new ids here rather than the old fully_kiosk.deviceInfo["deviceID"] ? I think using that would save you the migration logic + makes this change non breaking?
There was a problem hiding this comment.
The reason I went with host:port IDs is a bit of a chicken/egg thing. In the new setup the password lives on the player config rather than the provider, so by the time we register the player we haven't actually talked to the device yet and don't know its deviceID.
I guess we could preserve the old deviceID for existing installs by reading it out of the legacy player config during migration and keeping it around but it would mean two ID shapes coexisting (legacy = deviceID, new = host:port), which is doable but adds a bit of complexity to carry forward.
Given the only thing that I think would actually break is universal groups containing a Fully Kiosk player, and my guess is that is not that likely that many users would have that, I figured a one-time re-link was the lighter trade-off. Happy to do the preserve-old-ID approach though if you think it's worth it!
BREAKING CHANGE!
Refactored Fully Kiosk to single-instance, mirroring the MPD provider. Devices live in the provider config (host or host:port); password and SSL options are per-player so they show up in
needs_setupuntil the password is filled in.One-off migration in
controllers/config.pycollapses any existingfully_kiosk--*instances into the new shape and copies passwords/SSL across. Tagged for removal in 2.10.BREAKING CHANGE: player IDs change from device hardware ID to
fully_kiosk_<host>_<port>, so existing sync/universal group memberships, queues and per-player overrides won't be migrated and will have to be setup again.