What's new in Kiosk Satellite 2026.8.67
Camera views round out their transport ladder: cameras that cannot stream at all now play over MJPEG, and opening a view no longer flashes white.
New: MJPEG for cameras that cannot stream
- Every Home Assistant camera entity serves Home Assistant's camera proxy stream, and Kiosk Satellite now uses it as the transport of last resort: stills-only cameras such as UniFi package cameras show a live picture instead of failing, and any other Home Assistant camera whose WebRTC and HLS paths fail on a device switches to MJPEG on its own.
- The Home Assistant import now accepts every camera entity, and a hand-added Home Assistant camera asks Home Assistant what the entity really offers instead of assuming WebRTC and HLS, so the formats label in the Cameras list tells the truth (a package camera reads just "MJPEG").
- A transport the server itself refuses is skipped immediately rather than retried three times before moving on, so a camera lands on its working transport in seconds.
Fixed: White flash when a camera view opens
- Opening a camera view flashed white for a moment as it slid up. Two causes stacked: hls.js was parsed in the page's critical path, delaying the first black paint (it now loads deferred), and Android composites a fresh WebView's default white background for a frame or two before any page paints at all (the view now keeps a black cover over the WebView until the page reports its first frame). Verified frame by frame on an Echo Show 8 screen recording.
- The bundled hls.js is now the light build, the same file the Voice Satellite integration ships: a third smaller and quicker to parse, dropping only subtitle, alternate-audio and DRM support that a camera stream never carries.
Fixed: Kiosk mode and sidebar-aware cards
- Cards that make room for the Home Assistant sidebar (navbar-card among them) now sit flush to the screen edge when kiosk mode hides the sidebar. The frontend publishes the sidebar's width under two names across generations, and kiosk mode only zeroed the older one, so cards reading the newer variable kept dodging a sidebar that was no longer there.