What's new in Kiosk Satellite 2026.8.44
Two fixes: cloning a device through the raw settings API no longer duplicates its Sendspin player identity, and the Immich screensaver now validates and reports API key permissions honestly instead of blaming the network.
Fix: settings import no longer clones the device identity (#221)
POST /api/settings/importused to apply a settings dump verbatim, so provisioning a second device from another'sGET /api/settings/exportcarried the Sendspin player id along and the two devices kicked each other off Music Assistant in an endless reconnect loop, bypassing the identity handling the config import flow gained in #136. Thanks @dimatx for the report and the reproduction.- The endpoint now takes the same
adoptIdentityquery parameter as/api/config/import. The default (on) is a same-device restore that keeps the dump's identity; passadoptIdentity=0when cloning a device and it keeps its own device name, MQTT device id, Sendspin player id and Voice Satellite selection. - A device that already inherited an identity from an earlier verbatim import sheds it during such an import, so the ids regenerate cleanly on the next connect instead of keeping the collision.
Fix: Immich validation catches missing permissions, and a 403 is no longer "could not reach the server" (#222)
- Immich separates viewing previews (
asset.view) from downloading originals (asset.download), and the screensaver only ever fetches previews. An API key withoutasset.viewpassed "Validate connection", which only exercised album listing and asset search, and then every image failed at night with a misleading "Could not reach the Immich server". Thanks @DeltaEchoFour for the exemplary report, proxy logs included. - Validation now also fetches one preview, so a key missing the permission fails right at the button with a message naming
asset.view. - The screensaver now tells an answering-but-refusing server from an unreachable one: a 401 reads as a rejected key, a 403 names the missing permission, and "Could not reach the Immich server" is reserved for genuine transport failures such as DNS errors, refused connections and timeouts.
- Every failing Immich call is logged with its endpoint and HTTP status in the app's own log (the Logs tab of the remote admin, or
GET /api/logs), so the cause is visible without instrumenting a reverse proxy. - The Immich docs now name the three permissions a restricted key needs:
album.read,asset.readandasset.view.