1000 installs! thanks everyone!
[0.9.5] - 2026-05-22
Fixed
- K2 WebRTC Camera Instability after 0.9.4 (#88 follow-up):
- Fixed an
'Stream' object has no attribute 'get'error that fired on every snapshot and WebRTC offer when the go2rtc stream already existed. - The 0.9.4 "verify existing source matches" check incorrectly treated
streams.list()entries as dicts; thego2rtc-clientlibrary actually returnsStreamdataclasses with aproducers: list[Producer]field. The misuse raised on every call, was swallowed by the generic exception handler, and forced a delete-and-recreate of the active stream on every snapshot / offer — producing the flicker, repeated 30s loads, and intermittent unavailability reported on 0.9.4. - The verification now inspects
Stream.producers[*].url, so the upgrade-path self-healing (recreate a leftover stream that points at a wrong source) is preserved without breaking the steady state.
- Fixed an
Changed
- Printer Card Sizing for Wrapped Telemetry (#91, thanks @Ahmed-max):
- The printer Lovelace card now reports a larger card size when its telemetry pills naturally wrap onto a second line, so Home Assistant reserves the right amount of vertical space and the next dashboard tile no longer overlaps the wrapped row.
- Added a debounced
ResizeObserveron the telemetry area; observers and timers are cleaned up on disconnect. Wrapping behavior itself is unchanged.
Internal
- Shutdown Robustness:
- WebSocket client shutdown now reliably ignores expected
asyncio.CancelledErrorduring teardown so it no longer surfaces as a spurious error in logs.
- WebSocket client shutdown now reliably ignores expected
Testing
- Added regression tests covering the
Streamdataclass shape returned bygo2rtc_client.streams.list()— both "existing stream with correct source is left alone" and "existing stream with stale source is recreated". - Stabilized the static pytest suite by reading source files as UTF-8 and added layout tests for telemetry-driven card sizing.