Skip to content

v0.8.29

Choose a tag to compare

@github-actions github-actions released this 21 Sep 19:35
· 135 commits to fed52c72b444d5d3a3157290acd8c55bdefd8c8e since this release

Live playback samples name the browser's decoder and count its freezes

  • The card's browser samples in the integration's diagnostics download add the
    browser's decoder name (video_decoder, a product string such as FFmpeg
    or ExternalDecoder, kept only within 64 characters of a fixed character
    set), whether the browser calls that decoder power efficient
    (video_decoder_power_efficient), and the inbound video counters
    freezeCount, totalFreezesDuration, pauseCount, totalPausesDuration,
    totalDecodeTime, totalProcessingDelay,
    framesAssembledFromMultiplePackets and totalAssemblyTime as
    video_freezes, video_freeze_ms, video_pauses, video_pause_ms,
    video_decode_ms, video_processing_ms, video_assembled and
    video_assembly_ms, durations in whole milliseconds. Missing values stay
    absent and the integration accepts only these bounded scalars, as for the
    existing fields. See live diagnostics.
  • Why: the 2026-09-20 run on #94 (integration 0.8.28, bridge 0.8.23, NVIDIA
    T600, Google Chrome 153 on Windows) reached the 1800-second cap but dropped
    to the JPEG fallback at 54.6 s with zero packet loss, a jitter-buffer wait
    per frame growing from 54 ms to 914 ms, 68 dropped frames and eight PLI.
    The four samples could not tell an H.264 stream the browser's decoder
    rejects from decoding or timing on the PC. With these fields the next
    download can. Refs #94, #106.
  • Nothing else changes: the five sample stages, the last eight attempts, the
    retention window, the bridge and the card's playback behaviour are the same.

Upgrade and rollback

Update the integration to 0.8.29 in HACS, restart Home Assistant and refresh
the dashboard. The bridge stays at 0.8.23. To roll back, restore integration
0.8.28 from your backup.

Source commit: fed52c72b444d5d3a3157290acd8c55bdefd8c8e

Validation: Integration and card 0.8.29, bridge unchanged at 0.8.23. Diagnostics only: every browser sample of a live WebRTC attempt adds the browser's decoder name and power-efficient flag and its freeze, pause, decode, processing and assembly counters, bounded scalars projected by the same allowlist as the existing fields. No change to playback, the sample stages, retention, the bridge, device commands or media paths, so no new hardware test is needed. Evidence: CI on the merged commit (ruff, mypy, pytest at 96.9 percent coverage, card build matching the committed bundle, Playwright card suite with go2rtc). Motivation: the 2026-09-20 run on issue 94 dropped from WebRTC to the JPEG fallback at 54.6 s with zero packet loss and a growing jitter-buffer wait, and its samples could not separate a rejected NVENC stream from decoding in the browser. Reported hardware evidence stays reported, not independently reproduced.

Download checksums and exact component versions are included in the release assets.