8.0.0-rc.4 (2026-08-11)
⚠ BREAKING CHANGES
condition: initializedis nowfalsewhenever the
card is not usable, andtrigger: initializedfires each time the card
starts up rather than only the first time. Setever: trueon either to
keep the previous behaviour.
🚀 Features
- Add a simple mode to the visual card editor (#2588) (e29c082)
- Add experimental rewrite of go2rtc live provider (MSE/WebRTC/MP4/MJPEG) (#2580) (c02c692), closes #2556 #2450
- Allow disabling the call controls (#2615) (3b8835e), closes #2587
- Answer or reject inbound calls from menu (#2620) (0f8593f), closes #2587
- Automatically recover from frozen live streams (#2569) (fb1bbc7), closes #2099
- Compress related editor fields into grid rows (#2589) (f28b16a)
- Modernize the visual card editor. (#2586) (b6e1de5)
- Show the build date on the loading banner of unreleased builds (#2659) (5676908)
- Surface the provider's error cause in the media_unavailable notification (#2599) (448fa2d), closes #2592
- Trigger automations on call answered, rejected and hung up (#2591) (87ecbc7)
- Use the card's own pan & zoom with the
webrtc-cardlive provider (#2630) (e9e6d9f), closes #2628
🐛 Bug Fixes
- Clear stale media unavailable errors when a camera recovers (#2627) (15b08db), closes #2576
- Clear the
initializedcondition state when the card is not usable (#2646) (17146c8), closes #2642 - Connect the microphone when an inbound call is answered (#2609) (#2612) (8f95354)
- Correct status bar alignment in Safari (#2581) (e204ec1), closes #2578
- Correctly bind MJPEG stream URL in the
halive provider (#2305) (#2600) (cd53ebd) - Do not activate pan & zoom on a detached element (#2640) (51c0fab), closes #2633
- Ensure a bare
ptz_digitalaction resets the zoom (#2635) (a736f3d), closes #2632 - Ensure no camera outlives a failed initialization (#2657) (9f88aac)
- Error when a zoomable element is removed during zoom initialization (#2624) (231e308), closes #2410
- Exponentially back off initialization-error retries (#2579) (#2605) (f419798)
- Guard the ha provider MJPEG stream URL against a missing access_token (#2602) (6817d27), closes #2601
- Highlight folder icon for correct folder / media (#2560) (6a6d65d), closes #2128 #2129
- Ignore startup triggers from cameras without the trigger capability (#2621) (8d44fce), closes #2103
- Improve
media_queryretry behavior (#2603) (54f75be) - Match state trigger/condition semantics to HA (#2565) (9f956fe), closes #2530
- Only report a live error from the visible ha-camera-stream player (#2596) (8c36637), closes #2583
- Prevent microphone auto-disconnect during calls and restore the removed microphone
connectedcondition (#2597) (5a549c0), closes #2590 - Prevent the media grid from collapsing when its cells are unchanged (#2608) (5f2c7f5), closes #2306
- Report and retry media failures for every camera in a grid (#2658) (c137f4c), closes #2637 #2099
- Report media failures once per failure (#2666) (5e199b5)
- Restore keyboard focus for
keytriggers (#2634) (#2639) (f240646) - Restore picture element actions on Home Assistant 2026.8+ (#2670) (45f88a8), closes #2663
- Should recover from an interrupted initialization (#2673) (a8aa9ec)
- Size the expanded dialog and grid columns to their content (#2611) (2a84f19), closes #2607
- Stop a released PTZ key ending another held key's movement (#2675) (70ca0a9), closes #2668
- Stop PTZ movement and browser key handling from fighting (#2674) (3808a1b), closes #2623
- Stop the live media frame collapsing while a stream loads (#2671) (98a0084), closes #2574
- Stop the webrtc-card provider recreating its player on every render (#2629) (70abb39), closes #2625
- Use auto_unmute as input to stream selection for HA (#2562) (3494706), closes #2479
📚 Documentation
🚨 Tests
- Add a browser based test harness (#2641) (e590f72)
- Add a test harness for the built card (#2653) (2d124fe)
- Add browser based tests for keyboard focus handling (#2647) (5d247d4)
- Add browser tests for the media viewing gallery and viewer (#2661) (673d8fe)
- Add regression test for media info stability (#2571) (5662e48), closes #2563
- Also run firefox & webkit automated tests (#2651) (18ea725)
- Remove unnecessary
jsdomenvironment declarations (#2616) (a0fd464) - Split browser test-utils (#2662) (8d8d486), closes #2660
- Split test utilities to improve test times (#2622) (ad89aa9)
- Split the test suite into isolation groups for faster runs (#2613) (c4c6058)
👷 Continuous Integration
🔨 Code Refactoring
- Replace Rollup with Vite (#2656) (80ec92e)
- Stamp build information in as "defines" (#2654) (06bcfd5)
🐎 Performance Improvements
🔧 Chores
- Add missing close keyword: close #2438 (#2468) (8ebb88c)
- Add missing close keyword: close #2525 (#2553) (3a78a8d)
- Add missing close keyword: close #2529 (#2427) (3bb5ccd)
- deps: bump actions/upload-artifact from 6 to 7 (#2655) (fc8f958), closes actions/upload-artifact#754 actions/upload-artifact#762 actions/upload-artifact#764 actions/upload-artifact#754 #797 #796 #795 #764 #762 #754
- deps: bump release-drafter/release-drafter from 7.5.1 to 7.6.0 (#2585) (2400e20), closes #1649 #1645 #1646 #1642 #1650 #1648 #1644 #1667 #1654 #1653 #1661 #1656 #1663 #1662 #1655 #1660 #1669 #1670 #1641 #1657 #1666 #1659 #1658 #1660 #1642 #1667 #1657 #1666 #1654 #1653 #1661 #1656 #1659
- deps: bump release-drafter/release-drafter from 7.6.0 to 7.7.0 (#2636) (6807fd7), closes #1687 #1556 #1674 #1683 #1668 #1665 #1664 #1678 #1677 #1676 #1675 #1672 #1682 #1686 #1685 #1687 #1686 #1685 #1683 #1682 #1668 #1665 #1664
- Enable
noImplicitAnyacross the codebase (#2667) (a8ce6ac) - Replace deprecated 'node' module resolution with 'bundler' and tighten compiler options (#2594) (2ca4aa9)
- Replace ts-prune with knip (#2595) (7d66c5f), closes #2593
- Run checks, tests and build as parallel jobs (#2614) (37b07f0)
- Switch coverage from
istanbulto thev8provider for speed (#2619) (ababe13) - Upgrade to Vitest 4 and regroup tests for performance (#2618) (0c3d46a)