github dermotduffy/advanced-camera-card v8.0.0

5 hours ago

8.0.0 (2026-08-28)

⚠ BREAKING CHANGES

  • selected and unselected are removed from live.microphone.auto_unmute / auto_mute. A camera change ends any call and the microphone only carries audio during a call, so neither were useful.
  • live.microphone.disconnect_seconds is removed. The microphone is released when a call ends, so there is no idle countdown to configure. Use live.microphone.always_connected to hold it open instead.
  • The microphone_connect and microphone_disconnect actions are removed. The card owns the microphone lifecycle; microphone_mute and microphone_unmute remain.
  • call is removed from live.microphone.auto_mute, whose default is now []. The microphone is muted when a call ends regardless of this option.
  • microphone_unmute has no effect outside a call. Nothing carries the audio at any other time, so the request is ignored rather than opening the microphone.
  • condition: initialized is now false whenever the card is not usable, and trigger: initialized fires each time the card starts up rather than only the first time. Set ever: true on either to keep the previous behaviour.
  • Automations now follow Home Assistant's triggers: / conditions: / actions: model. Automations require a triggers: block and conditions: no longer wake an automation; actions_not is removed in favour of an if / then / else action; the nested acc.trigger.* template paths and the ambient advanced_camera_card template namespace are removed (use the top-level trigger.* surface and the acc alias); trigger-only condition forms (config, valueless camera / view / state) are no longer valid conditions; and template-condition vs template-trigger truthiness now follow HA. Existing configs are upgraded automatically where a faithful conversion exists; anything that cannot be converted is recorded under __UPGRADE_FAILURE__ for manual migration.
  • The microphone condition previously bundled two unrelated signals: whether a two-way-audio session was connected and whether the microphone was muted. Connection state is now its own dedicated call condition, and microphone is reserved purely for mute state. Configs are upgraded automatically (the card rewrites affected conditions under overrides, elements, and automations).
  • The screensaver image mode now shows a random image from picsum.photos instead of the embedded default image. If you previously set image.mode: screensaver, change it to image.mode: default to restore the previous behavior.
  • Requires configuration change (automatic upgrade offered) to move from (e.g.) data_left_stop to data_end_left
  • Changes the behavior of the not condition when there is more than one condition present. Users who desire the previous behavior should wrap their conditions in an and first.
  • Renames: untrigger_seconds to untrigger_delay_seconds
  • media_type and events_type are retired under live, viewer and timeline configuration sections, instead media type is associated (once) with the camera under media.

🚀 Features

🐛 Bug Fixes

  • Add support for Reolink number based zooming (#2408) (95faddd), closes #2034
  • Add editor support for go2rtc metadata fetch timeout (#2372) (d5e1e02)
  • Add missing capabilities to editor (#2366) (87a85ce)
  • Add support for synchronously reseting go2rtc sessions (#2478) (9d088d7)
  • Always respect the returned MIME type (#2473) (31d0c93), closes #2449
  • automations on microphone connect not working (#2403) (ee23cb2), closes #2314
  • Avoid go2rtc renegotiation on camera selection change (#2483) (9a763db)
  • Avoid potential call-manager race condition (#2508) (ef9c9c8)
  • Button style issue introduced by HA 2026.3 (#2392) (#2394) (8223cae), closes #2390
  • Cancel the pending debounced resize when the media dimensions container disconnects (#2700) (2f74889), closes #2699
  • Change the not condition to exactly match the HA not condition (#2387) (ecc8ecf), closes #2383
  • Clear stale media unavailable errors when a camera recovers (#2627) (15b08db), closes #2576
  • Clear the initialized condition state when the card is not usable (#2646) (17146c8), closes #2642
  • Connect the microphone when an inbound call is answered (#2609) (#2612) (8f95354)
  • connection: re-initialize camera managers and event subscriptions on reconnect (#2389) (a81d723)
  • Correct status bar alignment in Safari (#2581) (e204ec1), closes #2578
  • Correctly bind MJPEG stream URL in the ha live provider (#2305) (#2600) (cd53ebd)
  • Do not activate pan & zoom on a detached element (#2640) (51c0fab), closes #2633
  • Don't allow gallery to scroll horizontally (#2428) (55732ea), closes #2424
  • Don't detect audio from stale webrtc connection (#2429) (9535bb8), closes #2417
  • Don't show presets menu when there's a single preset (#2404) (ae8b113), closes #2398
  • Download recordings with a video file extension (#2712) (8ee69be), closes #2711
  • Ensure a bare ptz_digital action 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)
  • Expose gallery and media views as media type agnostic (#2335) (21f9469)
  • Fix audio for cameras with mixed WebRTC/HLS capabilities (#2557) (937ba64), closes #2479
  • Fix leaky Frigate subscriptions/unsubscriptions (#2513) (37df382)
  • Fix off-by-one thumbnail for folder media (#2364) (504b027)
  • Fix styling and severity in status bar (#2352) (282983c)
  • 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
  • Hold the 2-way audio backchannel open for the shortest possible time (#2697) (11cc543), closes #2691 #2039 #2178 #2299 AlexxIT/go2rtc#1860 #2678
  • Honor configured home preset / merge presets. (#2553) (5c97e55)
  • Ignore startup triggers from cameras without the trigger capability (#2621) (8d44fce), closes #2103
  • Improve en strings (#2431) (a1202e8)
  • Improve media_query retry behavior (#2603) (54f75be)
  • Improve folder icon rendering (#2467) (056a038)
  • Improve review media filtering (#2322) (f4e905a)
  • Improve visual styling for transmitting/triggering (#2490) (f21a462)
  • Issue with height not adjusting (downwards) to aspect ratio (#2375) (40ad3b4), closes #2341
  • Keep the notification popup open while its text is selected (#2706) (965f2b4)
  • Keep the notification popup visible / centered (#2702) (0aebf3c), closes #2693
  • Lock the grid when the UI is locked (#2489) (090138a)
  • Lock thumbnails and timeline when UX is locked for calls (#2487) (9b75095)
  • Log problems to the console as warnings (once) (#2414) (16ca8d7)
  • Match state trigger/condition semantics to HA (#2565) (9f956fe), closes #2530
  • Move upgrade button to top of editor (#2687) (858c5d0)
  • Only report a live error from the visible ha-camera-stream player (#2596) (8c36637), closes #2583
  • Preload should reliably preload initial load (#2466) (d8ad347)
  • prevent infinite re-render loop from issue retry callbacks (#2550) (3fe5e40)
  • prevent infinite resize loop in media grid Masonry layout (#2413) (3f5a35c)
  • Prevent microphone auto-disconnect during calls and restore the removed microphone connected condition (#2597) (5a549c0), closes #2590
  • Prevent the media grid from collapsing when its cells are unchanged (#2608) (5f2c7f5), closes #2306
  • Propagate review filtered status (#2370) (dd25e19)
  • Reduce visual clutter on startup (#2709) (e6b93d5), closes #2584
  • Release the microphone to the browser when a call ends (#2685) (85d6811), closes #2681
  • Remove the microphone selection conditions (#2686) (c2f2586), closes #2679
  • Remove the unnecessary item limit from folder media (#2688) (84b90bc), closes #2573
  • Remove unused localization keys (#2432) (31f13f4)
  • Render sub-labels for Frigate reviews (#2468) (591f466), closes #2438
  • Report a go2rtc backchannel offer error as a failure rather than a missing capability (#2710) (543e5d0)
  • 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 key triggers (#2634) (#2639) (f240646)
  • Restore picture element actions on Home Assistant 2026.8+ (#2670) (45f88a8), closes #2663
  • Seek to the start of review media (#2353) (7dbf058)
  • Should faithfully use WebRTC card PTZ format data_* (#2396) (1d81e03), closes #2385
  • Should recover from an interrupted initialization (#2673) (a8aa9ec)
  • Size the expanded dialog and grid columns to their content (#2611) (2a84f19), closes #2607
  • Size the gallery fallback icon frame to fill the thumbnail box (#2705) (b2f3243), closes #2701
  • Status actions should not be clickable when status bar is hidden (#2406) (ebe6b2f)
  • 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 automatic upgrade from discarding valid configuration (#2692) (1e03e6a), closes #2689
  • 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
  • Various editor / diagnostic improvements (#2363) (df3614f), closes #2360 #2328
  • Various tiny fixes/improvements (#2433) (eb72a97)

📚 Documentation

🚨 Tests

👷 Continuous Integration

  • Add triage labels (priority, regression, fixed-pending-release) (#2555) (f1cf790)
  • Upload the bundle treemap visualization browser-viewable (#2617) (eccf7f3)

🔨 Code Refactoring

  • Accept unknown in errorToConsole to drop as Error casts (#2541) (95f35bd)
  • Centralize template render type assertion (#2538) (5572ec7)
  • Clone context when a view is cloned (#2493) (2acec49)
  • Convert protected methods to private (#2358) (0a67df9)
  • Convert the build scripts to TypeScript and group them (#2696) (2d7c86c), closes #2695
  • Migrate config schema from Zod v3 to Zod v4 (#2357) (529500e)
  • Refactor media loading manager for improved robustness (#2464) (bc36662)
  • Replace Rollup with Vite (#2656) (80ec92e)
  • Restructure condition evaluation into per-type evaluator classes (#2518) (12ae3b2)
  • Stamp build information in as "defines" (#2654) (06bcfd5)
  • Unify substream actions into substream_{on,off} (#2497) (f18e4cd)
  • Use toggleAttribute natively where possible (#2494) (48761f0)

🐎 Performance Improvements

  • bundle: lazy-load the nunjucks template engine (#2535) (ea251ca), closes #2531
  • Deduplicate concurrent Home Assistant registry list fetches (#2650) (4a7c1b6)
  • grid: improve layout responsiveness and remove selection transitions (#2400) (4fceade)
  • lazy-load js-yaml (~107KB) as needed (#2551) (d833edb), closes #2532
  • Variety of small type and performance fixes (#2367) (497e6e8)
  • Various rendering performance improvements (#2359) (46868ce)

🔧 Chores

Don't miss a new advanced-camera-card release

NewReleases is sending notifications on new releases.