[0.9.6] - 2026-06-10
Added
- Direct WebRTC camera mode (idea recycled from #95, thanks @erus71an):
- New opt-in "WebRTC direct, no go2rtc" camera mode that signals the printer's WebRTC endpoint directly from Home Assistant (browser-style base64-JSON SDP on
:8000/call/webrtc_local), bypassing go2rtc entirely. - Available as an alternative for any WebRTC-capable printer — try it if the default go2rtc path doesn't work on your firmware (e.g. newer K1C). The K2-family go2rtc path is unchanged and remains the default.
- The frontend offer is reduced to video-only, wrapped/unwrapped as the printer expects, and the answer's media-line order is rebuilt to match Home Assistant's original offer.
- New opt-in "WebRTC direct, no go2rtc" camera mode that signals the printer's WebRTC endpoint directly from Home Assistant (browser-style base64-JSON SDP on
- Custom camera URL mode (#92, thanks @OptimusGREEN):
- New "Custom camera URL" mode to point the camera at any external stream —
http(s)MJPEG/snapshot URLs are served directly, andrtsp://(and similar) streams are ingested through go2rtc. - Useful for printers without a built-in camera, or to substitute an existing IP camera.
- New "Custom camera URL" mode to point the camera at any external stream —
- Spanish translations (
es.json, thanks @ofdezdz / Óscar Fernández Díaz):- Adds a full Spanish translation of the integration's config and options UI, extended to cover the reorganized options menu and the new custom-camera-URL field.
Changed
- Options flow reorganized into a menu:
- The printer Options dialog is now a menu with Camera, Notifications, Power switch, and Connection & performance sub-pages.
- Each sub-page loads fresh, so mode-dependent fields are always correct — previously a single combined page couldn't re-render when the camera mode changed, leaving stale/irrelevant fields (e.g. go2rtc fields showing while "Custom URL" was selected).
- Submitting a sub-page stages its changes and returns you to the menu (the back arrow returns without staging); Save and apply writes everything at once, so the printer reloads only once no matter how many sections you edit.
- Camera options refresh:
- The camera-mode dropdown now lists Auto, MJPEG, WebRTC (go2rtc), WebRTC direct, and Custom URL, with clearer labels and help text.
- The custom-URL field appears when the custom mode is selected, with validation for a complete URL.
- Auto-detection now probes both
/calland/call/webrtc_localWebRTC signaling endpoints.
- WebSocket handshake parity:
- The client now advertises the printer web UI's
wsslicersubprotocol on the WebSocket handshake. Servers that don't use it simply ignore it (RFC 6455), so this is compatible with existing printers.
- The client now advertises the printer web UI's
Fixed
- WebSocket availability now requires real data:
- The printer is reported available/connected only after the first valid telemetry frame, not on the bare TCP/WebSocket handshake — preventing brief "available" flashes against a socket that never streams data.
- Reconnect backoff is reset only after a connection survives at least 10 seconds, so rapid connect/drop flapping keeps backing off instead of masquerading as healthy reconnects.
- The heartbeat watchdog measures silence from the connect time until the first frame, avoiding a premature "connection dead" verdict right after connecting.
Internal
- #88 diagnostics: added debug logging of the negotiated WebRTC video codec/profile on stream start, to help diagnose the brief pre-keyframe visual artifact reported on some K2 cameras (no behavior change).