# Changelog — prerelease archives This file archives detailed per-build notes for all alpha, beta and release-candidate cycles. Stable release summaries remain in [`CHANGELOG.md`](./CHANGELOG.md). Experimental **visual layout editor** work (former **alpha.2–alpha.20**) is preserved on branch **`future/2.0.0-visual-layout`** and is not part of the active `2.0.0` preview line — see [`docs/roadmap-2.0-visual-layout.md`](./docs/roadmap-2.0-visual-layout.md). For **stable** releases see [`CHANGELOG.md`](./CHANGELOG.md). The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). --- ## [2.0.0-alpha.58] - 2026-07-30 Fifty-eighth **`2.0.0`** alpha: HACS-ready packaging for the native Nodalia integration. ### Fixed - **HACS brand validation:** the integration now includes its Nodalia brand icon inside `custom_components/nodalia/brand`, allowing the repository to pass the Integration category checks. - **Release regression:** architecture tests require a valid, non-empty PNG brand asset so future integration releases cannot omit it. ## [2.0.0-alpha.57] - 2026-07-30 Fifty-seventh **`2.0.0`** alpha: native Home Assistant integration for Nodalia's server-side features. ### Added - **Nodalia integration:** HACS can now install Nodalia as a Home Assistant integration that serves and registers the complete card bundle automatically. - **Native background notifications:** persistent profiles, indexed entity listeners, presence rules, quiet hours, severity policies, cooldowns, custom conditions and shared dismissals now run inside Home Assistant without a package, webhook or `input_text` chunks. - **Native Climate schedules:** complete weekly schedules are stored and executed by the integration without helpers, shell commands or generated automations. - **Authenticated frontend bridge:** cards use Home Assistant's WebSocket connection to discover backend capabilities and synchronize profiles and schedules; writes require an administrator. - **Diagnostics and service:** privacy-preserving integration diagnostics and the `nodalia.test_notification` action make installation and delivery easier to verify. ### Changed - **HACS distribution:** the repository is now packaged as an Integration and includes the frontend bundle inside `custom_components/nodalia`. - **Migration safety:** legacy notification and Climate webhooks remain optional fallbacks while existing installations verify native delivery. - **Documentation and editors:** installation, one-time migration, profile selection and native schedule guidance are available throughout the README, examples and all supported editor/runtime locales. - **Automation:** version synchronization, HACS validation and CodeQL now cover both the JavaScript card suite and the Python integration. ### Tests - Added pure Python policy and schedule-engine tests, frontend/backend protocol contracts and release checks for the integrated HACS artifact. - Validated 380 JavaScript tests, 7 Python tests, all locale catalogs and the self-contained release bundle. ## [2.0.0-alpha.56] - 2026-07-29 Fifty-sixth **`2.0.0`** alpha: entity-native icons by default on Entity and Fav cards. ### Changed - **Entity Card icons:** new cards now inherit the Home Assistant entity icon by default, including state- and device-class-aware fallbacks when the entity does not define `attributes.icon`. - **Fav Card icons:** favorites now inherit their associated entity icon instead of showing a generic star in the usual case. - **Manual overrides:** explicitly configured icons remain higher priority than inherited icons, while active/inactive Entity Card icons retain the highest priority. - **Fallback behavior:** `mdi:tune` on Entity Card and `mdi:star-four-points` on Fav Card are now used only when no configured, native or inferred entity icon is available. ### Tests - Added source and browser regressions covering inherited, entity-defined and manual icons in Chromium and WebKit/iPhone. ## [2.0.0-alpha.55] - 2026-07-29 Fifty-fifth **`2.0.0`** alpha: Nodalia suggestions in Home Assistant's entity-first card picker. ### Added - **Entity-first card suggestions:** selecting an entity now offers the relevant Nodalia cards, including domain-specific cards alongside Entity Card and compatible multi-purpose cards. - **Structured suggestions:** scenes, calendars, media players, numeric sensors, news sensors and vacuums receive valid card-specific preview configurations using the selected entity. ### Changed - **Stub selection:** legacy Lovelace creation flows now prioritize explicitly selected entities, then Home Assistant fallback entities, before scanning the full state registry. - **Custom-card registration:** shared metadata automatically exposes each card's entity suggestion provider through Home Assistant's official `getEntitySuggestion` contract. ### Tests - Added domain-mapping, registration and selected-entity regressions plus full Chromium and WebKit/iPhone coverage for the new picker. ## [2.0.0-alpha.54] - 2026-07-29 Fifty-fourth **`2.0.0`** alpha: working Lovelace navigation actions on Person Card. ### Fixed - **Person Card navigation:** `tap_action`, `hold_action` and `double_tap_action` navigation now use Home Assistant's real history and `location-changed` flow, so dashboard paths and hash routes such as `#marcomap` open correctly. - **Browser regression:** navigation coverage now verifies the resulting browser URL in Chromium and WebKit/iPhone instead of accepting an unhandled card-local event. ## [2.0.0-alpha.53] - 2026-07-29 Fifty-third **`2.0.0`** alpha: standard Person Card actions and high-severity camera and vacuum safeguards. ### Added - **Person Card actions:** `tap_action`, `hold_action` and `double_tap_action` now support the standard Lovelace actions for navigation, more-info, toggle, URL opening and service execution, including strict service allowlists. - **Person Card editor:** all three gestures and their contextual action fields can be configured from the visual editor without writing YAML. ### Fixed - **Camera live view:** display recovery no longer tears down go2rtc during its initial negotiation; hard recovery is reserved for a stream that has already decoded a frame, preventing mobile reconnect storms and black or stuck feeds. - **Advanced Vacuum rooms:** selected room identifiers are preserved when integrations expose string or map-key IDs, and an invalid segment selection now reports an error instead of falling through to a whole-house `vacuum.start` call. ## [2.0.0-alpha.52] - 2026-07-29 Fifty-second **`2.0.0`** alpha: compact Advanced Vacuum platform controls in the visual editor. ### Fixed - **Advanced Vacuum editor:** the platform selector no longer stretches to the height of the adjacent MQTT help text, uses the same compact 40 px control height as the rest of the form and restores a clear dropdown chevron. - **Contextual configuration:** the platform selector uses the full editor width and the Valetudo MQTT topic is shown only when the Valetudo platform is selected. ## [2.0.0-alpha.51] - 2026-07-29 Fifty-first **`2.0.0`** alpha: broader Advanced Vacuum compatibility and live room tracking. ### Added - **Advanced Vacuum platforms:** automatic and explicit adapters for Roborock, Dreame Vacuum, Xiaomi Miio, current Ecovacs, legacy Deebot Universe, Matter/Home Assistant, Valetudo MQTT and generic `send_command` configurations. - **Live room tracking:** active room and area identifiers can be read from vacuum/map attributes or related Home Assistant entities, with optional explicit room and activity sensors in the visual editor. - **Standard area cleaning:** compatible entities can use Home Assistant's native `vacuum.clean_area` mapping, while vendor-specific room, zone and go-to actions retain their native service formats. ### Fixed - **Room highlighting:** live integration data now takes precedence over shared helper state; idle current-room sensors no longer leave stale highlights, while active rooms remain visible during mop-wash, drying and auto-empty interludes. - **Service safety:** native `clean_area` is selected only when the target vacuum advertises the feature, and configured map schemas cannot act on another vacuum or bypass strict service policy through a mismatched platform. ### Changed - **Advanced Vacuum editor:** platform selection defaults to automatic detection and exposes Valetudo topic, live-room entity, activity entity, attribute and auto-detection controls. - **Documentation and tests:** the compatibility matrix, configuration example and cross-platform regression suite document and lock the supported behavior. ## [2.0.0-rc.1] - 2026-07-28 First **`2.0.0`** release candidate: final pre-stable security, lifecycle, rendering, bundle and release audit. ### Fixed - **Tracked state:** Power Flow and Room Summary now invalidate against the complete set of entities that affect their projections, including camera, power, air-quality, lock, door, window and alert state. - **Interaction lifecycle:** long-press handlers reconnect cleanly across Entity, Light, Fan, Humidifier, Cover, Vacuum and Scenes; Fav animation frames are guarded after disconnect. - **Security:** Room Summary applies strict allowlists to configured service actions, while built-in controls retain their intended safe paths; navigation media routes validate destinations before use. - **Build integrity:** esbuild consumes in-memory input, generated artifacts use atomic writes, and release hashes are calculated from the exact buffers written to disk. ### Changed - **Release gate:** the complete unit/regression suite and Chromium/WebKit interaction suite cover the audited RC behavior. - **Compatibility loaders:** Alpha 49 and Alpha 50 remain as bounded aliases to the RC bundle. ## [2.0.0-alpha.50] - 2026-07-28 Fiftieth **`2.0.0`** alpha: reliable built-in controls, smoother media updates and resilient mobile camera playback. ### Fixed - **Vacuum Card:** Start, Pause, Stop, Dock, Locate, fan-speed and area-clean controls use the trusted built-in service path, so strict user-action allowlists cannot silently disable them. - **Navigation media:** volume adjustments patch their local controls without rebuilding and flashing the full card. - **Camera Card:** go2rtc startup is faster, fullscreen survives mobile orientation changes without a black video surface, and Safari audio recovery stays connected to the active stream lifecycle. - **Person Card:** compact default avatar and typography values align with the rest of the Nodalia visual family. ## [2.0.0-alpha.49] - 2026-07-28 Forty-ninth **`2.0.0`** alpha: hardened mobile notification policy and broader visual consistency. ### Fixed - **Notifications delivery:** foreground push requires an enabled mobile policy and valid targets; queued batches re-resolve presence, quiet hours, dismissal and background-sync policy at flush time. - **Notifications reactivity:** presence and shared-dismiss helpers are tracked, and quiet-hours boundaries schedule a policy wake-up instead of waiting for an unrelated Home Assistant update. - **Release validation:** filesystem checks avoid time-of-check/time-of-use races reported by CodeQL. ### Changed - **Visual family:** Person and Fav surfaces align more closely with shared card geometry and tinting, and Scenes supports a dedicated single-scene presentation alongside the mosaic mode. - **Security defaults and architecture:** service-action policy, support models and regression contracts were tightened ahead of the release-candidate audit. ## [2.0.0-alpha.48] - 2026-07-23 Forty-eighth **`2.0.0`** **`alpha`**: cohesive architecture and reliable single-file HACS editors. Release channel **`2.0.0-alpha.48`**. ### Fixed - **HACS visual editors:** `nodalia-cards.js` once again contains the complete editor runtime, preventing Safari's `Importing a module script failed` error when HACS installs only its declared entrypoint. - **Pointer focus feedback:** touch and mouse activation no longer leave the theme-colored focus outline around Entity, Gauge, Person, Insignia, Power Flow, Camera, or other Nodalia controls; keyboard interaction restores the accessible focus ring immediately. - **Entity Card selectors:** the icon bubble keeps its bounce without flashing at the end of the animation in Chromium or WebKit/iPhone. ### Changed - **Architecture:** shared configuration, lifecycle, focus, event, and rendering primitives now live in `nodalia-utils.js`; Notifications mobile policy, Room Summary projection, and Camera stream resolution use focused support models instead of view-controller duplication. - **HACS distribution:** the recommended and manual `nodalia-cards.js` entrypoint is self-contained; the explicit core + suite distribution retains the adjacent lazy editor chunk for advanced deployments that copy every artifact. - **Visual family:** shared metrics and semantic surfaces remain aligned across the card suite while Notifications Card keeps its existing presentation. - **Validation:** the release is covered by 322 unit tests and 14 Chromium/WebKit-iPhone browser tests, including HACS editor loading, pointer focus, keyboard accessibility, Entity selector bounce, and Notifications external-alert drafts. - **Compatibility loaders:** `2.0.0-alpha.46` and `2.0.0-alpha.47` remain available as lightweight loaders pointing to `2.0.0-alpha.48`. ## [2.0.0-alpha.47] - 2026-07-23 Forty-seventh **`2.0.0`** **`alpha`**: audited interactions, accessibility, and reproducible releases. Release channel **`2.0.0-alpha.47`**. ### Fixed - **Entity Card selector animation:** the icon bubble keeps its bounce while completed entrance classes are retired safely, preventing the final opacity flash in Chromium and WebKit/iPhone. - **Notifications external alerts:** incomplete alert rows remain editable instead of disappearing before their required fields are filled; emitted runtime configuration still excludes invalid drafts. - **Room Summary actions and rendering:** `hold_action` is reachable through a real pointer hold gesture, its following synthetic tap is suppressed, and only the active embedded panel is mounted. - **Keyboard and dialog accessibility:** primary surfaces on Entity, Gauge, Person, Insignia, Power Flow, and Camera support Enter/Space with visible focus; Camera, Media, Calendar, Weather, and Power Flow dialogs trap focus and restore it when closed. - **Runtime localization:** shared primary-action labels and card descriptions no longer fall back to hard-coded Spanish strings. - **Repository automation:** stale issue messages now use real line breaks and release guidance resolves the current alpha dynamically. ### Changed - **Lazy visual editor:** the 801 KB editor catalog is shipped as `nodalia-cards-editor-2.0.0-alpha.47.js` and loaded only when Lovelace requests an editor, reducing the HACS runtime bundle to about 3.0 MB. - **Release integrity:** CI now exercises Chromium and WebKit/iPhone, CodeQL scans JavaScript, and tagged releases validate their version, publish compatibility loaders, checksums and a CycloneDX SBOM, and create build attestations. - **Compatibility loaders:** `2.0.0-alpha.45` and `2.0.0-alpha.46` remain available as lightweight loaders pointing to `2.0.0-alpha.47`. ## [2.0.0-alpha.46] - 2026-07-23 Forty-sixth **`2.0.0`** **`alpha`**: stable Entity Card selector bounce. Release channel **`2.0.0-alpha.46`**. ### Fixed - **Entity Card selector feedback:** `select` and `input_select` entities keep the icon bubble bounce without animating the complete card content. - **Animation cleanup:** completed entrance classes are removed before press feedback and after their lifecycle, preventing the stale icon entrance animation from restarting when `is-pressing` is removed and eliminating the final bubble flash. ### Changed - **`bundle`:** version metadata promoted to `2.0.0-alpha.46`; `2.0.0-alpha.44` and `2.0.0-alpha.45` remain available as lightweight compatibility loaders. ## [2.0.0-alpha.45] - 2026-07-23 Forty-fifth **`2.0.0`** **`alpha`**: flicker-free selectors and a more cohesive visual family. Release channel **`2.0.0-alpha.45`**. ### Fixed - **Entity Card selectors:** opening `select` and `input_select` pickers keeps the icon bubble bounce but no longer scales the complete card content while the panel changes height and overflow, removing the visible card flash. ### Changed - **Device-family metrics:** Entity quick controls now match the shared `36px` control size, while Entity, Light, Fan, Humidifier, Cover, and Vacuum use the same `11px` chip type scale. - **Active surfaces:** Cover, Vacuum, Alarm, Person, and Favourite cards now share the same semantic accent gradient, top glaze, radial ambient halo, and theme-aware shadow language. - **Theme colors:** Cover uses Home Assistant's `--warning-color` for its active icon and slider instead of a fixed yellow. - **Favourite, Media Player, and News:** Favourite returns to the standard `28px` shell and divider border; embedded and standalone Media Players share title/subtitle scale; News uses the standard divider border while retaining its editorial typography. - **Reduced motion:** animated card surfaces use a shared Shadow DOM rule that collapses animation and transition timing when the operating system requests reduced motion. - **Visual documentation:** the styling reference defines the `28px` device/content, `30px` information/dial, and `32px` complex-surface archetypes. - **`bundle`:** version metadata promoted to `2.0.0-alpha.45`; `2.0.0-alpha.43` and `2.0.0-alpha.44` remain available as lightweight compatibility loaders. ## [2.0.0-alpha.44] - 2026-07-22 Forty-fourth **`2.0.0`** **`alpha`**: interaction polish, leaner startup, and runtime hardening. Release channel **`2.0.0-alpha.44`**. ### Fixed - **Entity Card selectors:** `select` and `input_select` taps now play the same content and icon bubble bounce as other entity domains before opening their option picker. - **Native Lovelace actions:** Light, Fan, Humidifier, Entity, Favourite, Cover, and Camera cards preserve YAML object service data and explicit targets; Light, Fan, and Humidifier also normalize `call-service`, `perform-action`, and navigation action objects. - **Runtime styles:** configurable style trees and empty-state CSS values are sanitized before interpolation, preventing malformed or injected declarations from escaping their intended value. - **Camera go2rtc lifecycle:** stalled WebSocket connections time out and retry, while full disconnects release Web Audio and recreate the media element cleanly before reconnecting. - **Graph history:** visible cards refresh stale history periodically and restore hover/media listeners after reconnecting to the DOM. - **Async recovery:** synchronous service-call failures can no longer strand Notifications queues, shared dismissals, Room Summary actions, or Advanced Vacuum cleaning flows. - **Advanced Vacuum calibration:** direct calibration point changes now invalidate the cached map transform even when the number of points stays unchanged. - **Room Summary editor:** edited configurations are renormalized before emission while runtime rendering reuses normalized configuration and a cached signature. ### Changed - **Camera presentation:** Camera Card now uses the edge-to-edge mosaic presentation exclusively, with up to four cameras placed automatically; obsolete presentation and layout selectors were removed from the visual editor. - **Editor startup:** shared translation rows and editor catalogs use compact positional storage and lazy reconstruction, reducing `nodalia-editor-ui.js` by about 39% and the complete bundle by about 11%. - **Repository security:** GitHub Actions dependencies are pinned to immutable commits, CI uses read-only repository permissions, and generated translation and bundle artifacts must be current before validation passes. - **`bundle`:** version metadata promoted to `2.0.0-alpha.44`; `2.0.0-alpha.42` and `2.0.0-alpha.43` remain available as lightweight compatibility loaders. ## [2.0.0-alpha.43] - 2026-07-22 Forty-third **`2.0.0`** **`alpha`**: audible Safari camera streams. Release channel **`2.0.0-alpha.43`**. ### Fixed - **Camera Safari audio output:** the popup-opening gesture now unlocks a persistent Web Audio output sourced from the native video element, allowing AAC audio from MSE to remain audible after asynchronous stream attachment. - **Camera WebRTC audio:** incoming Opus is routed through the already-unlocked output while video remains on an autoplay-safe stream, without duplicating the audio track. - **Camera mute state:** internal autoplay recovery no longer overwrites an explicit `muted: false`; native mute, unmute, and volume changes resume and control the effective output. ### Changed - **`bundle`:** version metadata promoted to `2.0.0-alpha.43`; `2.0.0-alpha.41` and `2.0.0-alpha.42` remain available as lightweight compatibility loaders. ## [2.0.0-alpha.42] - 2026-07-22 Forty-second **`2.0.0`** **`alpha`**: Safari-safe go2rtc audio negotiation. Release channel **`2.0.0-alpha.42`**. ### Fixed - **Camera WebRTC audio:** the native player now waits for the peer connection and installs one complete receiver stream containing both video and audio, matching the go2rtc and Advanced Camera Card Safari-compatible flow. - **Camera Safari fallback:** MSE negotiation no longer advertises Opus on Safari, which reports container support but cannot reliably play that audio path. - **Camera audio diagnostics:** the player reports whether a compatible audio track is available, still waiting for packets, or absent from the negotiated stream, and cleans up track listeners on fallback and disconnect. ### Changed - **`bundle`:** version metadata promoted to `2.0.0-alpha.42`; `2.0.0-alpha.40` and `2.0.0-alpha.41` remain available as lightweight compatibility loaders. ## [2.0.0-alpha.41] - 2026-07-22 Forty-first **`2.0.0`** **`alpha`**: audible native go2rtc playback. Release channel **`2.0.0-alpha.41`**. ### Fixed - **Camera go2rtc audio:** WebRTC audio and video now stay in the same media stream, so native player controls operate on the real audio track instead of a separate silent Web Audio path. - **Camera audio startup:** opening an unmuted stream primes playback during the user gesture with a temporary silent track, then replaces it with the incoming go2rtc audio track without requiring an extra button. - **Camera player controls:** manually muting or unmuting the native player now updates the effective playback state and is preserved by subsequent play attempts. ### Changed - **`bundle`:** version metadata promoted to `2.0.0-alpha.41`; `2.0.0-alpha.39` and `2.0.0-alpha.40` remain available as lightweight compatibility loaders. ## [2.0.0-alpha.40] - 2026-07-22 Fortieth **`2.0.0`** **`alpha`**: lean release history and bounded compatibility. Release channel **`2.0.0-alpha.40`**. ### Changed - **Repository releases:** historical GitHub releases and tags remain available for rollback and traceability, while the active branch keeps only the current bundle and the two immediately previous compatibility loaders. - **Compatibility policy:** `2.0.0-alpha.38` and `2.0.0-alpha.39` remain as lightweight aliases; older generated aliases and split artifacts are removed from the active package and repository tree. - **Release validation:** automated tests enforce unique lightweight compatibility loaders and a maximum retention count of two. - **`bundle`:** version metadata promoted to `2.0.0-alpha.40`. ## [2.0.0-alpha.39] - 2026-07-22 Thirty-ninth **`2.0.0`** **`alpha`**: reliable camera audio, patient recovery, and runtime audit. Release channel **`2.0.0-alpha.39`**. ### Fixed - **Camera live audio:** `muted: false` unlocks a Web Audio output during the popup-opening click and routes the delayed WebRTC audio track through it, while native volume and mute changes continue to control the output. - **Camera loading state:** recoverable WebSocket, transport, and decoder failures stay in the connecting state; the unavailable message appears only after the 30-second startup recovery window is exhausted. - **Camera connection races:** close events and async WebRTC callbacks from stale transports can no longer tear down a newer stream attempt. - **Camera signed paths:** empty or transient signing responses are evicted from cache and retried once instead of being cached for 24 hours as unusable endpoints. - **Camera preview cache:** failed timestamped image URLs are bounded and successful reloads are removed from the failure set. ### Changed - **Camera WebRTC startup:** signaling and ICE progress extend only the active WebRTC timeout, avoiding premature fallback without delaying transports that never answer. - **Camera stream memory:** the MSE pending queue is capped at 8 MB and MJPEG frames use revocable object URLs instead of byte-by-byte Base64 conversion. - **Compatibility loaders:** historical resource aliases now import the current versioned bundle instead of embedding dozens of duplicate 4.4 MB payloads. - **`bundle`:** version metadata promoted to `2.0.0-alpha.39`; `2.0.0-alpha.38` remains available as a compatibility loader. ## [2.0.0-alpha.38] - 2026-07-22 Thirty-eighth **`2.0.0`** **`alpha`**: faster camera startup with direct click-authorized audio. Release channel **`2.0.0-alpha.38`**. ### Fixed - **Camera loading indicator:** the connecting arc is a dimensionally stable CSS ring with a centered circular trajectory instead of a rotating icon glyph. - **Camera live audio:** streams configured with `muted: false` arm the video element during the click that opens the popup, allowing the incoming WebRTC audio track to start without a separate Nodalia unmute button. - **Camera loading state:** the silent audio preparation stream cannot be mistaken for a loaded camera frame or hide the preview early. ### Changed - **Camera Frigate startup:** signed go2rtc paths are prefetched and cached until shortly before their 24-hour expiry, removing repeated `auth/sign_path` waits when opening a camera. - **Camera go2rtc recovery:** WebRTC falls back after 4.5 seconds instead of 12 seconds, other transports use bounded per-mode timeouts, and reconnect delay is reduced from 5 to 2 seconds. - **`bundle`:** version metadata promoted to `2.0.0-alpha.38`; `2.0.0-alpha.37` remains available as a compatibility loader. ## [2.0.0-alpha.37] - 2026-07-21 Thirty-seventh **`2.0.0`** **`alpha`**: dynamic custom notification templates. Release channel **`2.0.0-alpha.37`**. ### Added - **Notifications custom templates:** custom titles and messages can use `{source}`, `{value}`, `{threshold}`, `{fan}`, `{time}`, `{entity}`, `{state}`, and attributes from the configured Home Assistant entity such as `{media_title}` and `{media_artist}`. - **Notifications entity references:** custom templates can read other entities with `{sensor.energy_price}`, `{sensor.energy_price.state}`, or `{sensor.energy_price.unit_of_measurement}`; media-player references resolve their friendly name and calendar references resolve their current message. - **Notifications actions:** custom action labels and URLs use the same template context as notification content. ### Fixed - **Notifications live updates:** entities referenced only inside custom templates are tracked and rerender the card when their state or attributes change. - **Notifications numeric values:** custom template measurements preserve Home Assistant's source precision instead of rounding energy prices and other decimal values to one decimal place. ### Changed - **`bundle`:** version metadata promoted to `2.0.0-alpha.37`; `2.0.0-alpha.36` remains available as a compatibility loader. ## [2.0.0-alpha.36] - 2026-07-21 Thirty-sixth **`2.0.0`** **`alpha`**: polished multi-camera live popups and audio recovery. Release channel **`2.0.0-alpha.36`**. ### Fixed - **Camera translations:** connecting, unavailable, and audio-unlock labels are generated into the runtime catalog for all 12 supported languages instead of falling back to English. - **Camera popup titles:** secondary mosaic cameras use their own Home Assistant friendly name while the configured card name remains scoped to the primary camera. - **Camera go2rtc audio:** `muted: false` is preserved when autoplay with sound is allowed; browser-blocked audio exposes a translated Nodalia unlock control without requiring native video controls. - **Camera embedded actions:** lock, switch, and input-boolean Entity Cards use a compact single-row layout that cannot cover the live stage. - **Camera editor:** action icons use Home Assistant's native `ha-icon-picker` instead of a plain text input. ### Changed - **`bundle`:** version metadata promoted to `2.0.0-alpha.36`; `2.0.0-alpha.35` remains available as a compatibility loader. ## [2.0.0-alpha.35] - 2026-07-21 Thirty-fifth **`2.0.0`** **`alpha`**: working native Frigate go2rtc popup playback. Release channel **`2.0.0-alpha.35`**. ### Fixed - **Camera native go2rtc player:** registered `nodalia-go2rtc-player` as a browser custom element before creating it, preventing the silent `Illegal constructor` failure that left the expanded view on its preview image. - **Camera live feedback:** Frigate/go2rtc popups now show a native connecting bubble, retain the preview until real media arrives, hide it after playback starts, and display a visible unavailable state when endpoint resolution or negotiation fails. - **Camera lifecycle:** player mounting now uses the Custom Elements lifecycle and cleanup accepts previously registered compatible player instances during dashboard resource reloads. ### Changed - **`bundle`:** version metadata promoted to `2.0.0-alpha.35`; `2.0.0-alpha.34` remains available as a compatibility loader. ## [2.0.0-alpha.34] - 2026-07-21 Thirty-fourth **`2.0.0`** **`alpha`**: native Frigate go2rtc playback without external camera cards. Release channel **`2.0.0-alpha.34`**. ### Added - **Camera native go2rtc player:** built-in WebSocket/WebRTC playback based on the official go2rtc VideoRTC protocol, with MSE, HLS, and MJPEG fallback modes, native mute/controls options, reconnect handling, and immediate connection cleanup when the expanded view closes. - **Camera Frigate transport:** `frigate_go2rtc` signs Home Assistant's same-origin `/api/frigate//mse/api/ws` endpoint, avoiding mixed-content requests and direct browser access to the Frigate server. - **Camera editor:** each camera exposes the native Frigate provider, stream name, Frigate instance ID, playback mode, mute state, and player controls across all 12 editor languages. ### Fixed - **Camera dependencies:** Frigate go2rtc playback no longer requires `custom:advanced-camera-card`; configurations created with the former `advanced_camera_card` provider migrate automatically to `frigate_go2rtc`. - **Camera direct go2rtc:** secure direct endpoints use the same native player, while HTTP endpoints can use `hass_web_proxy` when that integration is available. ### Changed - **`bundle`:** version metadata promoted to `2.0.0-alpha.34`; `2.0.0-alpha.33` remains available as a compatibility loader. ## [2.0.0-alpha.33] - 2026-07-19 Thirty-third **`2.0.0`** **`alpha`**: secure go2rtc playback inside HTTPS Home Assistant dashboards. Release channel **`2.0.0-alpha.33`**. ### Added - **Camera live providers:** optional `advanced_camera_card` provider mounts Advanced Camera Card in the expanded view with `live_provider: go2rtc`, camera entity, and per-camera stream name, reusing its Home Assistant/Frigate transport without exposing a direct HTTP iframe. - **Camera editor:** go2rtc through Advanced Camera Card is selectable independently for every camera across all 12 editor languages. ### Fixed - **Camera HTTPS playback:** direct HTTP go2rtc and iframe URLs are detected as mixed content under HTTPS and no longer replace the preview with a browser-blocked white frame. ### Changed - **`bundle`:** version metadata promoted to `2.0.0-alpha.33`; `2.0.0-alpha.32` remains available as a compatibility loader. ## [2.0.0-alpha.32] - 2026-07-19 Thirty-second **`2.0.0`** **`alpha`**: seamless camera mosaics and configurable live streams. Release channel **`2.0.0-alpha.32`**. ### Added - **Camera live view:** expanded cameras now use Home Assistant's native live player, preserving its WebRTC, HLS, and MJPEG negotiation with a native picture-card fallback. - **Camera live providers:** `camera_streams` assigns a provider to each camera; the visual editor supports Home Assistant, go2rtc/Frigate with server URL, stream name, and playback mode, plus an external player URL. - **Camera editor:** native live streams expose mute and player-control options, while go2rtc streams support automatic, WebRTC, MSE, HLS, and MJPEG modes across all 12 editor languages. ### Fixed - **Camera mosaic:** camera cells now touch edge to edge by default; `styles.preview.mosaic_gap` remains available for custom spacing. - **Camera live continuity:** Home Assistant state updates patch the mounted live player and expanded Nodalia controls without rebuilding the overlay or interrupting playback. ### Changed - **`bundle`:** version metadata promoted to `2.0.0-alpha.32`; `2.0.0-alpha.31` remains available as a compatibility loader. ## [2.0.0-alpha.31] - 2026-07-17 Thirty-first **`2.0.0`** **`alpha`**: per-camera Nodalia controls and direct camera opening. Release channel **`2.0.0-alpha.31`**. ### Added - **Camera expanded view:** `camera_actions` assigns independent controls to each camera; light, fan, humidifier, vacuum, cover, and climate entities render with their native Nodalia cards, while other domains use `nodalia-entity-card`. - **Camera editor:** each configured camera has its own visual list of entities, labels, icons, icon colors, toggle/more-info/service actions, and JSON service data. - **Camera examples:** the three-camera mosaic example now demonstrates camera-specific light and lock controls with native YAML service-data objects. ### Fixed - **Camera editor drafts:** adding a camera or camera action keeps the incomplete row mounted until an entity is selected instead of immediately discarding it during normalization. - **Camera actions:** YAML objects in `tap_service_data` and `tap_service_target` remain structured during normalization and are serialized correctly for embedded Nodalia cards. - **Camera mosaic:** render signatures now track every configured camera, keeping all previews current in automatic mosaics of up to four cameras. ### Changed - **Camera interaction:** removed the visible lower-right expand button; tapping a preview opens that camera directly, while the card's default tap opens the primary camera. - **Camera preview age:** previews younger than one minute show seconds and refresh every second; older labels retain the lower-frequency text-only refresh without reloading the image. - **Camera compatibility:** legacy `expanded_actions` remain supported on the primary camera when no camera-specific controls are configured. - **`bundle`:** version metadata promoted to `2.0.0-alpha.31`; `2.0.0-alpha.30` remains available as a compatibility loader. ## [2.0.0-alpha.30] - 2026-07-16 Thirtieth **`2.0.0`** **`alpha`**: native camera preview age bubbles. Release channel **`2.0.0-alpha.30`**. ### Added - **Camera preview:** a semitransparent Nodalia bubble in the lower-left corner shows the relative age of the native preview image using the same `last_updated` timestamp that refreshes its URL. - **Camera mosaic:** every camera preview receives its own localized age bubble. - **Camera editor:** `show_preview_age` controls the bubble from the visual editor and is translated across all 12 supported editor languages. ### Changed - **Camera preview age:** the relative label refreshes every 15 seconds by updating only its text, without re-rendering or reloading the camera image. - **`bundle`:** version metadata promoted to `2.0.0-alpha.30`; `2.0.0-alpha.29` remains available as a compatibility loader. ## [2.0.0-alpha.29] - 2026-07-16 Twenty-ninth **`2.0.0`** **`alpha`**: stable embedded controls and unified Hub bubbles. Release channel **`2.0.0-alpha.29`**. ### Fixed - **Room Summary Hub embeds:** Home Assistant state updates patch the Hub in place instead of replacing its complete shadow DOM, so embedded light, fan, humidifier, vacuum, entity, and media cards remain mounted while their state changes. - **Room Summary Hub embeds:** embedded card configuration is applied only when it actually changes and before the new `hass` state, avoiding redundant double renders when toggling a device. - **Room Summary Hub updates:** attribute-only changes use `last_updated`, keeping sliders, percentages, and other embedded state current without rebuilding the surrounding Hub. ### Changed - **Room Summary Hub controls:** temperature, humidity, occupancy, and smart quick actions now use the same raised circular bubble treatment as the right navigation rail; quick actions default to the matching 42px size. - **`bundle`:** version metadata promoted to `2.0.0-alpha.29`; `2.0.0-alpha.28` remains available as a compatibility loader. ## [2.0.0-alpha.28] - 2026-07-16 Twenty-eighth **`2.0.0`** **`alpha`**: published editor JSON fixes and review hardening. Release channel **`2.0.0-alpha.28`**. ### Fixed - **Room Summary embedded Media Player editor:** publishes the structured `service_data` JSON editing and validation work prepared in alpha.27, which was not released as a GitHub prerelease. - **Notifications background package:** casts templated `chunk_count` values to integers before numeric comparisons, preventing Home Assistant template type errors. - **Camera actions:** accepts service data already supplied as YAML objects instead of discarding it during JSON parsing. - **Camera image fallback:** records the original image `src` attribute after load failures, preventing relative and absolute URL mismatches from triggering repeated render attempts. - **Notifications mobile queue:** synchronous batch-delivery failures are converted to handled promise rejections so pending notifications continue draining. - **Translation tooling:** protected placeholders survive case changes and whitespace inserted by Google Translate instead of silently falling back to English. ### Changed - **`bundle`:** version metadata promoted to `2.0.0-alpha.28`; `2.0.0-alpha.27` remains available as a compatibility loader. ## [2.0.0-alpha.27] - 2026-07-15 Twenty-seventh **`2.0.0`** **`alpha`**: reliable JSON service actions in the Room Summary media editor. Release channel **`2.0.0-alpha.27`**. ### Fixed - **Room Summary embedded Media Player editor:** `service_data` objects loaded from YAML are shown as editable formatted JSON instead of `[object Object]`, and valid edits are emitted as structured objects. - **Room Summary embedded Media Player editor:** incomplete or non-object JSON is highlighted and no longer replaces the last valid action configuration; legacy `data` action payloads remain editable. - **Editor translations:** added the invalid-JSON validation message across all 12 supported editor languages. - **Bundle generation:** card bundles are built sequentially and validated for every registered card before publication, preventing incomplete parallel-build artifacts. ### Changed - **`bundle`:** version metadata promoted to `2.0.0-alpha.27`; `2.0.0-alpha.26` remains available as a compatibility loader. ## [2.0.0-alpha.26] - 2026-07-15 Twenty-sixth **`2.0.0`** **`alpha`**: a single, cleaner Room Summary Hub experience. Release channel **`2.0.0-alpha.26`**. ### Changed - **Room Summary:** Hub is now the only supported layout; legacy layout values are migrated to Hub automatically, and the visual editor no longer exposes obsolete layout, density, or non-Hub typography controls. - **Room Summary compact Hub:** the room icon bubble remains visible beside the room name, status chips, quick controls, and expand button. - **`bundle`:** version metadata promoted to `2.0.0-alpha.26`; `2.0.0-alpha.25` remains available as a compatibility loader. ## [2.0.0-alpha.25] - 2026-07-15 Twenty-fifth **`2.0.0`** **`alpha`**: collapsible Room Summary Hub and reliable embedded media actions. Release channel **`2.0.0-alpha.25`**. ### Added - **Room Summary Hub:** optional collapsible compact mode keeps the room name, temperature, humidity, occupancy, and contextual quick controls visible while hiding the navigation rail, embedded media player, and detail panels until expanded. - **Room Summary editor:** visual toggle for the collapsible compact Hub mode. ### Fixed - **Embedded Media Player editor:** service-data JSON drafts are preserved until the field change is committed, so leaving the field no longer clears valid action data. ### Changed - **`bundle`:** version metadata promoted to `2.0.0-alpha.25`; `2.0.0-alpha.24` remains available as a compatibility loader. ## [2.0.0-alpha.24] - 2026-07-15 Twenty-fourth **`2.0.0`** **`alpha`**: clearer Room Summary state and hierarchy. Release channel **`2.0.0-alpha.24`**. ### Fixed - **Room Summary Hub controls:** smart navigation and quick-action buttons keep stable icons and use the configured accent tint to communicate active device state. - **Room Summary Hub header:** room names receive a full-width row, with temperature, humidity, and occupancy chips grouped beneath so long names remain completely visible. - **Room Summary Hub panels:** sparse device lists and home controls align to the top when only one item is configured or no media player is present. ### Changed - **`bundle`:** version metadata promoted to `2.0.0-alpha.24`; `2.0.0-alpha.23` remains available as a compatibility loader. ## [2.0.0-alpha.23] - 2026-07-14 Twenty-third **`2.0.0`** **`alpha`**: complete Room Summary visual-editor scrolling. Release channel **`2.0.0-alpha.23`**. ### Fixed - **Room Summary editor:** nested native card editors no longer run the Lovelace dialog scroll clamp, so the full Summary form remains reachable below the embedded Media Player options. ### Changed - **`bundle`:** version metadata promoted to `2.0.0-alpha.23`; `2.0.0-alpha.22` remains available as a compatibility loader. ## [2.0.0-alpha.22] - 2026-07-14 Twenty-second **`2.0.0`** **`alpha`**: action hardening and complete translation coverage. Release channel **`2.0.0-alpha.22`**. ### Fixed - **Room Summary actions:** normalized Lovelace `toggle`, `call-service`, and `perform-action` tap/hold actions now execute, preserve explicit service targets, and keep hold navigation independent from the tap path. - **Translations:** completed recent Camera, News, Notifications, and Room Summary editor/runtime strings across all 12 supported languages, corrected Home Assistant cover/media terminology, and repaired translated placeholders. - **Translation validation:** runtime locales now require full key parity with English; editor and runtime checks reject altered placeholders and backticked config keys. ### Changed - **`bundle`:** version metadata promoted to `2.0.0-alpha.22`; `2.0.0-alpha.21` remains available as a compatibility loader. ## [2.0.0-alpha.21] - 2026-07-14 Twenty-first **`2.0.0`** **`alpha`**: flicker-free Room Summary Hub navigation. Release channel **`2.0.0-alpha.21`**. ### Added - **Room Summary editor:** native `nodalia-media-player` visual editor embedded directly in the media section, including multiple players, TV mode, labels, icons, visibility, power/tap actions, unavailable badge, layout, security, animations, and player/browser styles. - **Room Summary editor:** per-entity custom name and icon controls for embedded light, vacuum, fan, humidifier, and generic entity cards. - **Room Summary config:** `media_config` stores the complete native media-player configuration, while `embed_options` stores per-entity card presentation overrides; legacy entity string lists remain supported. ### Fixed - **Room Summary Hub:** panel navigation keeps every panel and embedded Nodalia card mounted, switching visibility in place instead of replacing the card shadow DOM. - **Room Summary Hub embeds:** embedded card entry duration is forced to zero while preserving their other interaction animations. - **Room Summary Hub media:** home and media-panel instances use separate cache slots so neither card moves between containers. - **Room Summary Hub media:** native media-player entry animation uses zero `panel_duration` inside hidden Hub panels, while browser and interaction animations remain available. - **Notifications background package:** direct or older webhook payloads now resolve per-entity `inherit`/`auto` through the smart-kind mobile policy before falling back to the global default. - **Compatibility loaders:** restored generated and published aliases for `1.3.5-alpha.1` through `1.3.5-alpha.10`, preventing dashboards pinned to those resource URLs from returning 404 after an upgrade. ### Changed - **`bundle`:** version metadata promoted to `2.0.0-alpha.21`. ## [2.0.0-alpha.20] - 2026-07-14 Twentieth **`2.0.0`** **`alpha`**: HACS license validation and smoother Room Summary Hub panel changes. Release channel **`2.0.0-alpha.20`**. ### Added - **Repository:** MIT license file recognized by GitHub and the HACS repository validator. ### Fixed - **Room Summary Hub:** embedded cards are cached by type and entity and reused between panels, avoiding the slight remount flicker when changing tabs. - **Room Summary Hub:** panel changes suppress the content entry animation while preserving it for the initial render. ### Changed - **`bundle`:** version metadata promoted to `2.0.0-alpha.20`. ## [2.0.0-alpha.19] - 2026-07-08 Nineteenth **`2.0.0`** **`alpha`**: Room Summary Hub humidifier and generic entity panels. Release channel **`2.0.0-alpha.19`**. ### Added - **Room Summary Hub:** `humidifiers[]` list with a dedicated sub-panel embedding `nodalia-humidifier-card` instances. - **Room Summary Hub:** `others[]` list with an **Others** sub-panel embedding `nodalia-entity-card` for any entity domain. - **Room Summary editor:** humidifiers and others entity list sections in the visual editor. ### Changed - **`bundle`:** version metadata promoted to `2.0.0-alpha.19`. ## [2.0.0-alpha.18] - 2026-07-08 Eighteenth **`2.0.0`** **`alpha`**: presence chip icon-only in Room Summary Hub. Release channel **`2.0.0-alpha.18`**. ### Changed - **Room Summary Hub:** occupied/vacant presence chip shows icon only (no text label); tooltip and `aria-label` remain for accessibility. - **`bundle`:** version metadata promoted to `2.0.0-alpha.18`. ## [2.0.0-alpha.17] - 2026-07-08 Seventeenth **`2.0.0`** **`alpha`**: Room Summary Hub design polish, typography controls, and stable card tinting. Release channel **`2.0.0-alpha.17`**. ### Added - **Room Summary Hub:** persistent header (room icon, name, status chips) on all sub-panels. - **Room Summary Hub:** icon-only contextual quick actions with accessible labels. - **Room Summary editor:** `styles.embed_off_tint` color picker for embedded off-state cards. - **Room Summary editor:** typography controls for general chips/metrics and hub-specific sizes (status chips, quick actions, embedded device titles/chips, cover rows). - **Media player:** `show_device_chip` config flag (hub embeds hide the device name chip). ### Changed - **Room Summary Hub:** smaller default status chips and compact icon-only quick actions. - **Room Summary Hub:** smaller embedded light/fan/vacuum titles and chips via `styles.hub.*` defaults. - **Room Summary Hub:** panel switches no longer replay the entry animation (reduces flicker). - **Room Summary card:** background, border, and overlays stay at the configured default tint — no accent highlight when lights, media, or presence are active. - **`bundle`:** version metadata promoted to `2.0.0-alpha.17`. ## [2.0.0-alpha.16] - 2026-07-08 Sixteenth **`2.0.0`** **`alpha`**: fix Hub embedded card clipping and restore real media player styling. Release channel **`2.0.0-alpha.16`**. ### Added - **Room Summary Hub:** `media_players[]` list for additional players in the media sub-panel (primary `media_player` stays on the home screen). ### Fixed - **Room Summary Hub embeds:** remove aggressive transparent/zero-padding overrides that clipped lights, vacuums, and fans. - **Room Summary Hub:** `overflow: visible` on hub card and embed hosts so expanded controls are not cut off. - **Room Summary Hub media:** embed uses native `nodalia-media-player` card chrome (rounded player, album art) with only accent tint overrides. - **Room Summary Hub lights/fans:** force `compact_layout_mode: never` inside embeds for full-width controls. ## [2.0.0-alpha.15] - 2026-07-08 Fifteenth **`2.0.0`** **`alpha`**: remove Menu Card from the bundle and ship Room Summary Hub polish. Release channel **`2.0.0-alpha.15`** (GitHub **prerelease**). ### Removed - **`menu`:** `custom:nodalia-menu-card` removed from the bundle, package files, examples, tests, and i18n catalog. Focus shifts to Room Summary, Camera, and Scenes for **2.0.0**. ### Added - **Room Summary editor:** collapsible **Styles** section with card accent and background color pickers. - **Room Summary Hub:** temp, humidity, and presence chips open **more-info** for their entities. ### Changed - **Room Summary Hub home:** temp/humidity/presence chips align to the right of the room name; contextual action row is actions-only (lights, covers, fans, climate, media). - **Room Summary Hub:** home strip and media sub-panel embed real **`nodalia-media-player`** cards. - **Room Summary Hub lights:** embedded light cards without brightness/color presets (slider + mode buttons only). - **Room Summary Hub embeds:** off-state cards blend with the summary tint instead of default light-card off colors. - **`bundle`:** version metadata promoted to `2.0.0-alpha.15`. ## [2.0.0-alpha.14] - 2026-07-08 Skipped public tag — changes folded into **`2.0.0-alpha.15`**. ## [2.0.0-alpha.13] - 2026-07-08 Thirteenth **`2.0.0`** **`alpha`**: Room Summary Hub parity with Nodalia cards. Release channel **`2.0.0-alpha.13`**. ### Added - **Room Summary Hub:** fans appear in the navigation rail with a dedicated sub-panel. - **Room Summary Hub:** lights, vacuums, and fans sub-panels embed real `nodalia-light-card`, `nodalia-vacuum-card`, and `nodalia-fan-card` instances (controls, tinting, sliders, chips). ### Changed - **Room Summary Hub home:** flat header layout — room icon top-left, name beside it, tinted temperature/humidity bubbles below; removed nested hero container. - **`bundle`:** version metadata promoted to `2.0.0-alpha.13`. ## [2.0.0-alpha.12] - 2026-07-07 Twelfth **`2.0.0`** **`alpha`**: republish after fixing a stale `v2.0.0-alpha.11` tag that briefly pointed at **1.3.5**. Release channel **`2.0.0-alpha.12`**. ### Changed - **`bundle`:** version metadata promoted to `2.0.0-alpha.12` so HACS fetches a fresh resource URL. ## [2.0.0-alpha.11] - 2026-07-07 Eleventh **`2.0.0`** **`alpha`**: Room Summary Hub editor fix and visual polish. Release channel **`2.0.0-alpha.11`**. ### Fixed - **Room Summary editor:** use `editorStatesSignature` instead of calling `editorFilteredStatesSignature` without a predicate (Safari error `S is not a function` / configuration error). - **Room Summary Hub:** remove nested gray containers; lights/vacuum/covers/media panels use Nodalia-style pill rows with icon bubbles, active gradients, and brightness sliders. ### Changed - **`bundle`:** version metadata promoted to `2.0.0-alpha.11`. ## [2.0.0-alpha.10] - 2026-07-07 Tenth **`2.0.0`** **`alpha`**: Room Summary Hub layout for per-room device control. Release channel **`2.0.0-alpha.10`**. ### Added - **`room_summary`:** new default **`hub`** layout with a home view (room hero bubble, temperature/humidity metrics, contextual quick actions, main media strip) and a right-side icon-only navigation rail. - **`room_summary`:** hub sub-panels for lights (toggle + brightness), covers, climate, vacuums, and media player controls. - **`room_summary`:** `vacuums` and `fans` entity lists for hub navigation and hot-room fan quick actions. - **`i18n` / `editor`:** hub layout plus vacuum/fan section labels. ### Changed - **`room_summary`:** default layout is now **`hub`** instead of **`standard`**. - **`bundle`:** version metadata promoted to `2.0.0-alpha.10`. ## [2.0.0-alpha.9] - 2026-07-07 Ninth **`2.0.0`** **`alpha`**: Camera, Room Summary, and Menu Card visual parity with core Nodalia cards. Release channel **`2.0.0-alpha.9`**. ### Changed - **`room_summary`:** active card shell (gradient, accent border, glow), circular icon bubble with depth, softer metric tiles, neutral quick-action pills, larger title typography. - **`menu`:** removed segmented double-frame chrome, pill items aligned to core chip styling, accent active state, card glow when a tab is active. - **`camera`:** 28px card radius with divider border, core chip tokens, card-mode preview inset radius, feed layout keeps flush media with padded header/chips, expand bubble matches entity controls. - **`bundle`:** version metadata promoted to `2.0.0-alpha.9`. ## [2.0.0-alpha.8] - 2026-07-07 Eighth **`2.0.0`** **`alpha`**: fix broken GitHub release tags that pointed at the stable **`1.3.5`** commit instead of the 2.0 bundle. Release channel **`2.0.0-alpha.8`**. ### Fixed - **`release`:** GitHub tags **`v2.0.0-alpha.6`** and **`v2.0.0-alpha.7`** were accidentally attached to the stable **`1.3.5`** commit, so HACS installs of those alphas never shipped Camera, Room Summary, or Menu Card even though the cards exist in the repo. - **`bundle`:** compatibility aliases now include **`nodalia-cards-2.0.0-alpha.7.js`**. ### Added - **`tests`:** release smoke test now asserts every module listed in **`CARD_PARTS`** is present in both the full bundle and the suite split. ### Changed - **`bundle`:** version metadata promoted to `2.0.0-alpha.8`. ## [2.0.0-alpha.7] - 2026-07-07 Seventh **`2.0.0`** **`alpha`**: restore compatibility aliases for versioned bundle URLs. Release channel **`2.0.0-alpha.7`**. ### Fixed - **`bundle`:** compatibility aliases now include **`nodalia-cards-2.0.0-alpha.3.js`** through **`nodalia-cards-2.0.0-alpha.6.js`**, so dashboards that still point at a pinned alpha resource keep loading the current bundle (Camera, Room Summary, and Menu Card included). - **`room_summary` / `menu`:** card picker registration now uses the same non-optional `registerCustomCard` path as the rest of the suite. ### Changed - **`bundle`:** version metadata promoted to `2.0.0-alpha.7`. ## [2.0.0-alpha.6] - 2026-07-07 Sixth **`2.0.0`** **`alpha`**: security hardening parity and Room Summary / Menu visual alignment. Release channel **`2.0.0-alpha.6`**. ### Fixed - **`fav`:** alarm actions now require a manually entered PIN whenever the visible code input is shown; stored/helper codes are no longer used as fallback in that state. - **`fav`:** Lovelace `perform-action` tap targets are preserved through normalization and service invocation (`tap_service_target`). - **`entity`:** built-in lock, cover, and select service invocations now respect `security.strict_service_actions` allowlists. - **`notifications`:** smart entity overrides with `mobile: inherit` resolve through the kind-level mobile policy instead of erasing per-kind `off` rules. - **`notifications`:** background mobile sync rejects payloads larger than the 40 helper chunks supported by the HA package. - **`notifications`:** foreground mobile delivery keeps a pending queue and drains alerts in batches instead of dropping them while a send timer is active. ### Changed - **`room_summary` / `menu`:** runtime styling aligned with Entity/Light Card surfaces; editors use shared entity/icon pickers, list reorder, and expanded display sections. - **`bundle`:** version metadata promoted to `2.0.0-alpha.6`. ## [2.0.0-alpha.5] - 2026-07-06 Fifth **`2.0.0`** **`alpha`**: Room Summary editor fixes and Camera Card feed/mosaic/actions. Release channel **`2.0.0-alpha.5`**. ### Added - **`camera`:** multi-camera mosaic layout (up to 4 cameras) with automatic 2-up, 3-up, and 2×2 grids. - **`camera`:** `presentation: feed` edge-to-edge camera preview (no card padding by default). - **`camera`:** `expanded_actions` buttons in the expanded camera overlay (lights, locks, services, toggle). - **`camera_editor`:** cameras list, presentation mode, and expanded actions sections in the visual editor. - **`examples`:** `camera-card-mosaic.yaml` based on real multi-camera dashboard usage. ### Fixed - **`room_summary_editor`:** entity pickers no longer collapse on click; add-entity now creates editable rows instead of being stripped by normalization. ### Changed - **`camera`:** default presentation is feed-style with hidden name/state/chips unless enabled. - **`bundle`:** version metadata promoted to `2.0.0-alpha.5`. ## [2.0.0-alpha.4] - 2026-07-06 Fourth **`2.0.0`** **`alpha`**: visual parity pass for Camera, Room Summary, and Menu. Release channel **`2.0.0-alpha.4`**. ### Changed - **`menu`:** runtime visual style aligned with Nodalia card surfaces (neutral active state, unified card container, and consistent empty state). - **`menu_editor`:** visual editor moved to the shared Nodalia editor style with localized labels and translated option values. - **`camera_editor`:** visual editor sections, labels, fields, and toggles now follow the shared Nodalia editor surface styling. - **`room_summary_editor`:** visual editor rewritten to use shared Nodalia editor layout, i18n label resolution, and dialog layout fix lifecycle hooks. - **`i18n`:** added `ed.menu.item_badge_color` in editor locales and regenerated editor catalog bundle. - **`bundle`:** version metadata promoted to `2.0.0-alpha.4`. ## [2.0.0-alpha.3] - 2026-07-06 Third **`2.0.0`** **`alpha`**: Room Summary Card and Nodalia Menu Card. Release channel **`2.0.0-alpha.3`**. ### Added - **`room_summary`:** new `custom:nodalia-room-summary-card` for room-level dashboards, with temperature, humidity, presence, lights, covers, climate, camera, media, security indicators, quick actions, multiple layouts, empty states, and initial visual editor. - **`menu`:** new `custom:nodalia-menu-card` for Nodalia-style horizontal dashboard navigation, with navigate/helper/action modes, active item detection, badges, mobile scrolling, variants, and initial visual editor. - **`i18n`:** English and Spanish runtime labels for Room Summary and Menu Card configuration, states, layouts, actions, and editor fields. - **`tests`:** regression coverage for Room Summary rendering, entity fallbacks, quick actions, Menu Card navigation/helper/action modes, active state, badges, and editor output. ### Changed - **`bundle`:** version metadata promoted to `2.0.0-alpha.3`. ### Fixed - **`notifications`:** background mobile sync now rejects configs larger than the 40-chunk package limit instead of marking truncated payloads as successful; foreground push is suppressed only after a successful background sync. - **`notifications`:** smart entity overrides with default `inherit` mobile no longer mask kind-level `off`/`push` policies when only title, message, or color are customized. - **`examples`:** background mobile package defaults to `local_only: true` and rejects oversized webhook payloads before writing helper chunks. - **`alarm_panel`:** visual editor releases the shared Lovelace dialog layout fix on disconnect, preventing leaked scroll listeners after closing the editor. ## [2.0.0-alpha.2] - 2026-07-03 Second **`2.0.0`** **`alpha`**: Notifications 2.0 mobile policy and context delivery. Release channel **`2.0.0-alpha.2`**. ### Added - **`notifications`:** normalized mobile push policies for `auto`, `push`, `card_only`, and `off` across smart entity overrides, smart alerts, custom notifications, and external alerts. - **`notifications`:** default mobile policy, quiet hours, away/home context gating, cooldown, similar-alert grouping, and external alert preparation for future Camera/Security events. - **`notifications`:** visual editor sections for mobile delivery, context controls, and per-alert policy. - **`examples`:** background mobile package support for policy-aware delivery, quiet hours, cooldown, presence context, and future external alerts. - **`i18n`:** English and Spanish labels for Notifications 2.0 mobile policy, context, delivery state, and external alert controls. - **`tests`:** regression coverage for mobile policy normalization, context gating, cooldown, threshold crossing, external alerts, editor output, and background payload delivery. ### Changed - **`notifications`:** background mobile sync now carries normalized delivery metadata while preserving 1.3.x configuration compatibility. - **`bundle`:** version metadata promoted to `2.0.0-alpha.2`. ## [2.0.0-alpha.1] - 2026-07-03 First **`2.0.0`** **`alpha`**: introduces the new Nodalia Camera Card. Release channel **`2.0.0-alpha.1`**. ### Added - **`camera`:** new `custom:nodalia-camera-card` with Nodalia-style camera preview, status chips, empty/unavailable states, basic expanded view, and initial visual editor. - **`camera`:** initial layouts for `live`, `snapshot`, `compact`, and `security`, with architecture prepared for future Frigate/event timeline integrations. - **`i18n`:** English and Spanish runtime labels for Camera Card states, editor fields, and expanded view controls. - **`tests`:** initial Camera Card registration, render, editor, and expanded-view regression coverage. ### Changed - **`bundle`:** version metadata promoted to `2.0.0-alpha.1`. ## [1.3.5-alpha.10] - 2026-07-03 Tenth **`1.3.5`** **`alpha`**: Scrollable Lovelace preview pane. Release channel **`1.3.5-alpha.10`**. ### Fixed - **`editor`:** Lovelace card preview panes can scroll internally again when the rendered preview is taller than the available editor space, while boundary wheel events remain contained so the dialog does not drift into empty space. - **`hacs`:** compatibility aliases now include **`nodalia-cards-1.3.5-alpha.9.js`** so dashboards still pointing at the previous alpha receive the preview scroll restoration. ## [1.3.5-alpha.9] - 2026-07-03 Ninth **`1.3.5`** **`alpha`**: Softer visual editor bottom clamp. Release channel **`1.3.5-alpha.9`**. ### Fixed - **`editor`:** shared visual editor scroll clamp now leaves a normal bottom breathing gap before correcting empty-space drift, so the Notifications editor reaches its lower edge smoothly instead of bouncing slightly upward. - **`hacs`:** compatibility aliases now include **`nodalia-cards-1.3.5-alpha.8.js`** so dashboards still pointing at the previous alpha receive the softer clamp. ## [1.3.5-alpha.8] - 2026-07-03 Eighth **`1.3.5`** **`alpha`**: Lovelace preview pane scroll containment. Release channel **`1.3.5-alpha.8`**. ### Fixed - **`editor`:** shared visual editor scroll fix now also contains the Lovelace card preview pane while the dialog is open, preventing wheel scrolling over the preview side from moving the editor into empty bottom space. - **`hacs`:** compatibility aliases now include **`nodalia-cards-1.3.5-alpha.7.js`** so dashboards still pointing at the previous alpha receive the preview-pane scroll fix. ## [1.3.5-alpha.7] - 2026-07-03 Seventh **`1.3.5`** **`alpha`**: Shadow DOM dialog scroll clamp. Release channel **`1.3.5-alpha.7`**. ### Fixed - **`editor`:** shared visual editor scroll clamp now walks Home Assistant's composed DOM tree across shadow roots and attaches to the actual Lovelace dialog scroll ancestors, preventing the Notifications editor from scrolling into empty bottom space when the real scroll container sits outside the card editor shadow tree. - **`hacs`:** compatibility aliases now include **`nodalia-cards-1.3.5-alpha.6.js`** so dashboards still pointing at the previous alpha receive the Shadow DOM scroll fix. ## [1.3.5-alpha.6] - 2026-07-03 Sixth **`1.3.5`** **`alpha`**: Persistent Notifications editor scroll clamp. Release channel **`1.3.5-alpha.6`**. ### Fixed - **`editor`:** Notifications visual editor now keeps a live scroll clamp attached while the Lovelace edit dialog is open, preventing wheel/trackpad scrolling from repeatedly drifting past the bottom of the real form into empty space. - **`hacs`:** compatibility aliases now include **`nodalia-cards-1.3.5-alpha.5.js`** so dashboards still pointing at the previous alpha receive the persistent scroll fix. ## [1.3.5-alpha.5] - 2026-07-03 Fifth **`1.3.5`** **`alpha`**: Notifications editor scroll clamp follow-up. Release channel **`1.3.5-alpha.5`**. ### Fixed - **`editor`:** Notifications visual editor no longer applies a fixed clipped height to the custom editor element; instead it clamps parent scroll only when the real form bottom has drifted above the visible editor area, preventing empty bottom scroll without hiding later sections. - **`hacs`:** compatibility aliases now include **`nodalia-cards-1.3.5-alpha.4.js`** so dashboards still pointing at the previous alpha receive the corrected scroll logic. ## [1.3.5-alpha.4] - 2026-07-02 Fourth **`1.3.5`** **`alpha`**: Notifications editor mobile policy visibility. Release channel **`1.3.5-alpha.4`**. ### Fixed - **`notifications`:** visual editor now shows the per-item mobile notification policy inside each smart alert and each custom notification, not only in per-entity smart overrides. - **`notifications`:** smart alert and custom notification mobile policies are respected by foreground pushes, and smart alert policies are synced to the background Home Assistant package. - **`editor`:** shared editor dialog scroll fix now forces stale utility bundles to refresh and clamps the editor host to its real content height, preventing extra empty scroll below the Notifications editor. ## [1.3.5-alpha.3] - 2026-07-02 Third **`1.3.5`** **`alpha`**: legacy resource compatibility aliases. Release channel **`1.3.5-alpha.3`**. ### Fixed - **`hacs`:** package now ships compatibility aliases for recent versioned resource URLs, including **`nodalia-cards-1.3.4.js`**, so Home Assistant dashboards still pointing at an older resource path receive the current bundle instead of stale local JS. ## [1.3.5-alpha.2] - 2026-07-02 Second **`1.3.5`** **`alpha`**: HACS entrypoint restore. Release channel **`1.3.5-alpha.2`**. ### Fixed - **`hacs`:** package metadata now uses the stable **`nodalia-cards.js`** HACS filename again, preventing Home Assistant from continuing to load an older versioned Lovelace resource after installing a prerelease. ## [1.3.5-alpha.1] - 2026-07-02 First **`1.3.5`** **`alpha`**: Notifications per-entity mobile policy and editor scroll fix. Release channel **`1.3.5-alpha.1`**. ### Added - **`notifications`:** visual editor exposes the per-entity mobile notification policy first in each smart entity override, making it easy to silence mobile pushes for noisy entities while keeping the card alert visible. ### Fixed - **`notifications`:** visual editor no longer leaves extra empty scroll space below the final settings section inside the Lovelace editor dialog. ## [1.3.4-alpha.1] - 2026-06-29 First **`1.3.4`** **`alpha`**: Calendar forecast month boundary fix. Release channel **`1.3.4-alpha.1`**. ### Fixed - **`calendar`:** month-view weather badges no longer reinterpret next-month forecast keys as current-month days, and past days in the current month no longer show forecast badges. ## [1.3.3-alpha.4] - 2026-06-29 Fourth **`1.3.3`** **`alpha`**: Navigation media title flow and Light icon tint. Release channel **`1.3.3-alpha.4`**. ### Fixed - **`navigation`:** media player status chips now live in the title row layout, so long track titles ellipsize before the "playing" chip instead of overlapping it on mobile. - **`light`:** default light icons now use a contrast-safe mix of the current light color and theme text color, matching the card tint while staying readable. ## [1.3.3-alpha.3] - 2026-06-28 Third **`1.3.3`** **`alpha`**: Calendar empty expanded views. Release channel **`1.3.3-alpha.3`**. ### Fixed - **`calendar`:** expanded calendar popups now keep showing the selected day/week/month style view even when there are no scheduled events, filling empty days in the range instead of replacing the popup with a single no-events message. ## [1.3.3-alpha.2] - 2026-06-28 Second **`1.3.3`** **`alpha`**: Notifications review follow-up and Weather defensive guards. Release channel **`1.3.3-alpha.2`**. ### Changed - **`examples`:** background mobile package reuses the already parsed numeric state variables inside threshold matching, keeping the anti-spam crossing logic easier to maintain. - **`notifications`:** background webhook payload reads threshold values defensively. - **`weather`:** condition icon color handling now guards malformed style objects explicitly while preserving the contrast-safe condition tinting. ## [1.3.3-alpha.1] - 2026-06-28 First **`1.3.3`** **`alpha`**: Notifications background duplicate and heat spam fixes. Release channel **`1.3.3-alpha.1`**. ### Fixed - **`notifications`:** when background mobile sync is enabled, the live card no longer sends its own foreground mobile pushes, preventing duplicate notifications while the Home Assistant package is handling delivery. - **`examples`:** background mobile package only sends temperature/humidity/level threshold notifications when the value crosses into the alert range, instead of repeating on every tiny numeric variation while already over the threshold. - **`examples`:** background mobile package replaces common smart-message placeholders such as **`{fan}`** and uses Spanish default titles for package-generated alerts. ## [1.3.2-alpha.11] - 2026-06-28 Eleventh **`1.3.2`** **`alpha`**: Graph mobile legend chip shadow fix. Release channel **`1.3.2-alpha.11`**. ### Fixed - **`graph`:** mobile legend chips no longer use an external active shadow inside the horizontal scroll rail, preventing Safari/iOS from clipping the glow into a rectangular block with sharp corners. ## [1.3.2-alpha.10] - 2026-06-28 Tenth **`1.3.2`** **`alpha`**: Notifications mobile info threshold. Release channel **`1.3.2-alpha.10`**. ### Changed - **`notifications`:** mobile notification minimum severity now labels the `info` option as "Everything, including info", making it clear from the visual editor that presence/motion and other info-level alerts can also be pushed. - **`notifications`:** background mobile webhook payload and mobile delivery tests now explicitly protect the synced `mobile_notifications.min_severity` behavior. ## [1.3.2-alpha.9] - 2026-06-28 Ninth **`1.3.2`** **`alpha`**: Weather metric chip contrast and Notifications package filtering. Release channel **`1.3.2-alpha.9`**. ### Fixed - **`weather`:** humidity, wind, and pressure chips use their own readable metric colors instead of inheriting the current condition tint, keeping icons legible on sunny/light-tinted cards. - **`examples`:** background mobile package now splits the broad `state_changed` listener into a watched-entity filter event and a push automation that only receives Nodalia-filtered changes, making traces and low-ink delivery more reliable. - **`examples`:** background mobile package ignores attribute-only changes, accepts numeric strings with `%`, runs the filter in parallel, and respects `mobile: off` overrides. ## [1.3.2-alpha.8] - 2026-06-27 Eighth **`1.3.2`** **`alpha`**: Graph unavailable badge and Weather icon contrast. Release channel **`1.3.2-alpha.8`**. ### Fixed - **`graph`:** unavailable entity badges keep the help icon centered inside the orange circle and use dark glyph contrast to match the rest of the card family. - **`weather`:** condition icons keep their characteristic weather color while mixing toward theme text color for contrast, so sunny/cloudy forecast icons remain recognizable but more legible on tinted light cards. ## [1.3.2-alpha.7] - 2026-06-27 Seventh **`1.3.2`** **`alpha`**: Notifications background sync reliability. Release channel **`1.3.2-alpha.7`**. ### Fixed - **`notifications`:** background mobile webhook sync is now kept pending when the card is configured before it is connected or before Home Assistant is available, then flushed once the card receives `hass`. - **`notifications`:** saving card configuration forces one background sync attempt and no longer skips it just because the previous rendered state signature was unchanged. - **`notifications`:** the visual editor also debounces and sends the background sync payload after emitting updated configuration, so saving webhook/mobile settings does not depend on the runtime card render timing. ## [1.3.2-alpha.6] - 2026-06-27 Sixth **`1.3.2`** **`alpha`**: Notifications indoor/outdoor comfort and presence gating. Release channel **`1.3.2-alpha.6`**. ### Added - **`notifications`:** visual editor distinguishes indoor temperature/humidity sensors from outdoor temperature/humidity sensors, so exterior values no longer trigger indoor comfort alerts. - **`notifications`:** hot-room fan/cooling recommendations now check same-room presence when a matching presence sensor is configured, only sending the alert while that room is occupied. ### Changed - **`notifications`:** comfort hot/cold logic no longer treats `weather` entity temperature as an indoor temperature source; weather entities remain available for forecast/rain notifications. - **`notifications`:** background webhook payload includes the separated outdoor temperature/humidity lists while the package continues to watch only indoor comfort sensors for threshold push alerts. - **`examples`:** background mobile package capacity increased to **40** `input_text` chunks for larger synced configurations. ## [1.3.2-alpha.5] - 2026-06-27 Fifth **`1.3.2`** **`alpha`**: Notifications background numeric state matching. Release channel **`1.3.2-alpha.5`**. ### Fixed - **`notifications`:** background mobile package keeps `state_changed` state values as explicit scalar variables before threshold checks, so numeric alerts such as low ink at `10%` match and send instead of being skipped after object-to-string conversion. - **`examples`:** background mobile package notes clarify that the broad `state_changed` trigger is required for webhook-synced dynamic entity lists, with conditions discarding non-watched changes before notification actions run. ## [1.3.2-alpha.4] - 2026-06-27 Fourth **`1.3.2`** **`alpha`**: Notifications background package notify targets. Release channel **`1.3.2-alpha.4`**. ### Changed - **`notifications`:** background mobile package reads notify targets directly from the card-synced `mobile_notifications.entities` webhook payload instead of keeping a fallback notify entity in the automation YAML. ## [1.3.2-alpha.3] - 2026-06-27 Third **`1.3.2`** **`alpha`**: Notifications background webhook editor. Release channel **`1.3.2-alpha.3`**. ### Added - **`notifications`:** visual editor now exposes background mobile webhook sync, including the enable toggle and webhook ID field for the package-driven background notification flow. ## [1.3.2-alpha.2] - 2026-06-27 Second **`1.3.2`** **`alpha`**: Weather forecast icon contrast. Release channel **`1.3.2-alpha.2`**. ### Fixed - **`weather`:** forecast cards, chart hovers, and detail popups use a contrast-safe icon color when condition accents are too pale on tinted surfaces, keeping icons legible for states such as partly cloudy. ## [1.3.2-alpha.1] - 2026-06-27 First **`1.3.2`** **`alpha`**: device slider action shadow polish. Release channel **`1.3.2-alpha.1`**. ### Fixed - **`fan` / `humidifier` / `cover`:** slider-side action buttons keep visible overflow and vertical breathing room while controls are open, preventing button shadows from being clipped into square corner artifacts. ## [1.3.1-alpha.5] - 2026-06-27 Fifth **`1.3.1`** **`alpha`**: Entity Card select picker corner polish. Release channel **`1.3.1-alpha.5`**. ### Fixed - **`entity`:** open `select` / `input_select` pickers now clip the animated shell with the same rounded radius as the panel, removing square corner artifacts around the expanded option list. ## [1.3.1-alpha.4] - 2026-06-27 Fourth **`1.3.1`** **`alpha`**: Entity Card compact select height and Home Assistant display states. Release channel **`1.3.1-alpha.4`**. ### Fixed - **`entity`:** compact `select` / `input_select` cards hide the empty picker shell while closed, so closed compact select cards keep the same height as other compact Entity Cards. - **`entity`:** state chips prefer Home Assistant frontend display formatting (`formatEntityState`) and HA-provided display attributes before falling back to Nodalia's built-in state dictionary, so integration-localized enum states such as comfort labels display correctly. ## [1.3.1-alpha.3] - 2026-06-25 Third **`1.3.1`** **`alpha`**: Notifications Card background mobile webhook sync. Release channel **`1.3.1-alpha.3`**. ### Added - **`notifications`:** optional `background_mobile` webhook sync sends the card's configured notification entities, thresholds, mobile targets, and entity override text to Home Assistant so a fixed package can send push notifications in the background without editing entity lists in automations. - **`examples`:** `notifications-background-mobile-package.yaml` now stores card-synced config in chunked helpers and sends server-side mobile notifications from a single dynamic `state_changed` automation. ## [1.3.1-alpha.2] - 2026-06-25 Second **`1.3.1`** **`alpha`**: Entity Card select picker flicker polish. Release channel **`1.3.1-alpha.2`**. ### Fixed - **`entity`:** `select` / `input_select` body and icon taps keep immediate haptics but skip the full content/icon press bounce when the tap only opens or closes the inline picker, and picker options no longer replay staggered fade-in animations. This removes the visible flicker while preserving reliable open/close behavior. ## [1.3.1-alpha.1] - 2026-06-25 First **`1.3.1`** **`alpha`**: Entity Card select picker reliability. Release channel **`1.3.1-alpha.1`**. ### Fixed - **`entity`:** inline `select` / `input_select` picker open/close is now DOM-local instead of changing the render signature, and stale animation callbacks are ignored across rapid taps. This prevents intermittent missed opens and small flickers when showing options. ## [1.3.0-alpha.17] - 2026-06-25 Seventeenth **`1.3.0`** **`alpha`**: Entity Card select picker timer cleanup. Release channel **`1.3.0-alpha.17`**. ### Fixed - **`entity`:** inline `select` / `input_select` picker fallback timers are canceled when their `animationend` handler finishes, preventing stale callbacks from flipping picker animation state during rapid reopen/close sequences. ### Changed - **`tests`:** Entity Card select picker regression coverage now checks cleanup of deferred animation timers. ## [1.3.0-alpha.16] - 2026-06-23 Sixteenth **`1.3.0`** **`alpha`**: Deferred timer compatibility for Entity and News cards. Release channel **`1.3.0-alpha.16`**. ### Fixed - **`entity`:** inline `select` / `input_select` picker entrance and close fallback timers use the shared `scheduleDeferTimer(host, callback, delayMs)` signature, so animation cleanup still runs when `animationend` is missed. - **`news`:** entrance animation reset uses the shared deferred timer signature, preventing the reset timer from being skipped. ## [1.3.0-alpha.15] - 2026-05-29 Fifteenth **`1.3.0`** **`alpha`**: Security and interaction regressions for alarm PIN, entity/cover actions, and media player lifecycle. Release channel **`1.3.0-alpha.15`**. ### Fixed - **`alarm_panel`:** visible PIN input now requires manual entry; configured/helper codes apply only when the code field is hidden. - **`entity`:** Lovelace perform-action `data` and `target` are preserved during tap-action normalization and passed to Home Assistant service calls instead of defaulting to the card entity. - **`cover`:** normalized Lovelace tap/hold actions (more-info, navigate, service) no longer fall through to cover toggle. - **`media_player`:** progress ticker and hass-driven renders skip restart while the card is disconnected from the DOM. ### Changed - **`tests`:** regression coverage for alarm PIN gating, entity action targets, cover navigate/service actions, and media-player disconnect guards. ## [1.3.0-alpha.14] - 2026-06-16 Fourteenth **`1.3.0`** **`alpha`**: Entity Card select polish and press haptics. Release channel **`1.3.0-alpha.14`**. ### Changed - **`entity`:** `select` / `input_select` cards no longer show chevron-down feedback arrows next to the state chip. - **`entity`:** haptic feedback fires on `pointerdown` for body, icon, quick actions, and select picker controls (including close), so every press is felt immediately. ## [1.3.0-alpha.13] - 2026-06-16 Thirteenth **`1.3.0`** **`alpha`**: Circular Gauge entrance animation polish. Release channel **`1.3.0-alpha.13`**. ### Fixed - **`circular_gauge`:** entrance dial animation uses one smooth progress arc instead of tweening 40 tint segments, removing visible per-unit stripes while the thumb sweeps to the target value. ## [1.3.0-alpha.12] - 2026-06-16 Twelfth **`1.3.0`** **`alpha`**: Climate Path B schedule storage compatibility. Release channel **`1.3.0-alpha.12`**. ### Fixed - **`climate`:** setpoint schedule encoder prefers Path-B-compatible **v1/v2** storage when it fits in `input_text` (255 chars), using **v3** binary only for larger schedules so Path B automations keep applying temperatures. - **`climate`:** packed **v2** slots preserve quarter-degree setpoints (e.g. 20.5°C) via spare packed bits; Path B template and docs updated to decode them. ### Changed - **`tests`:** climate storage and entity-card lock toggle regression coverage tightened. ## [1.3.0-alpha.11] - 2026-06-16 Eleventh **`1.3.0`** **`alpha`**: Power Flow home popup bubble polish and news package example. Release channel **`1.3.0-alpha.11`**. ### Added - **`examples`:** `nodalia-news-real-package.yaml` — server-side rolling RSS history (10 headlines) for `sensor.nodalia_news_real`. ### Fixed - **`power_flow`:** home device popup summary bubble keeps a square aspect ratio (matches the main card node instead of a flattened wide pill). ## [1.3.0-alpha.10] - 2026-06-16 Tenth **`1.3.0`** **`alpha`**: News Card shared history and smoother magazine carousel. Release channel **`1.3.0-alpha.10`**. ### Added - **`news`:** `history_helper` syncs article history through a Home Assistant `input_text` or `text` helper so iPhone, Mac, and other clients show the same headlines. - **`news`:** `mirror_history_local` keeps an optional browser cache when a helper is configured (default on). - **`examples`:** `news-history-helper.yaml` sample helper setup. - **`tests`:** compact helper round-trip, payload size budget, helper load, and carousel commit smoke coverage. ### Changed - **`news`:** magazine carousel commits slide changes in-DOM with a 520 ms eased transition instead of full card re-renders on swipe or arrow navigation. - **`news`:** docs and visual editor fields for shared history configuration. ### Fixed - **`utils` / editors:** wide editor dialogs no longer leave empty scroll space below the form when the live preview is taller (`bindEditorDialogLayoutFix` applied suite-wide). ## [1.3.0-alpha.9] - 2026-06-16 Ninth **`1.3.0`** **`alpha`**: News Card render regression hotfix. Release channel **`1.3.0-alpha.9`**. ### Fixed - **`news`:** `_renderShell` now receives `density` and `layout` (fixes Lovelace **Configuration error: Can't find variable: density** introduced in alpha.8). ## [1.3.0-alpha.8] - 2026-06-16 Eighth **`1.3.0`** **`alpha`**: News Card source health and render fixes. Release channel **`1.3.0-alpha.8`**. ### Fixed - **`news`:** show cached or live items even when the sensor state is `unavailable`/`unknown` (no longer blocks on `health.unavailable` before reading display items). - **`news`:** `getNewsSourceHealth` treats parsed items as healthy and stops infinite loading when `hass.states` is populated but the entity is missing. - **`news`:** render signature uses the incoming `hass` snapshot for health checks. - **`news`:** render failures are caught so Lovelace does not fall back to a configuration error. ## [1.3.0-alpha.7] - 2026-06-16 Seventh **`1.3.0`** **`alpha`**: Entity Card polish, lock/alarm/climate fixes. Release channel **`1.3.0-alpha.7`**. ### Fixed - **`entity`:** select picker expand/collapse uses in-DOM shell animations instead of full re-render (no card flicker on open/close). - **`entity`:** active-state tint no longer shows a clipped square glow in light mode (`:host` overflow). - **`entity`**, **`fav`:** generic lock toggle calls `lock.unlock` for locked states instead of `lock.open` (avoids unlatching secured doors on tap). - **`alarm_panel`:** manual PIN watchdog stays armed after a resolved service call until the alarm entity state/`last_changed` changes (wrong-code feedback for slow/no-op integrations). - **`climate`:** setpoint schedule composer blocks saves when `storage_state` exceeds the `input_text` 255-character limit, before webhook delivery. ### Added - **`tests`:** `high-severity-regressions.test.mjs` for fav cover/lock routing, lock unlock behavior, alarm PIN watchdog, and climate storage guard. ## [1.3.0-alpha.6] - 2026-06-12 Sixth **`1.3.0`** **`alpha`**: Entity Card select picker and News Card history. Release channel **`1.3.0-alpha.6`**. ### Added - **`entity`:** `select.*` and `input_select.*` entities open an inline Nodalia-style option picker on tap (`tap_action: auto`) instead of more-info; calls `select.select_option` / `input_select.select_option`. - **`news`:** `remember_items` keeps a rolling local history up to `max_items` as RSS sensors publish new headlines. ### Changed - **`news`:** visual editor aligned with the suite (sections, entity picker, toggle switches, i18n). ## [1.3.0-alpha.5] - 2026-06-12 Fifth **`1.3.0`** **`alpha`**: News Card article history and aligned visual editor. Release channel **`1.3.0-alpha.5`**. ### Added - **`news`:** `remember_items` (default on) keeps a rolling local history up to `max_items` as the sensor receives new RSS headlines. ### Changed - **`news`:** visual editor aligned with the suite (sections, entity picker, toggle switches, i18n). ## [1.3.0-alpha.4] - 2026-06-12 Fourth **`1.3.0`** **`alpha`**: News Card magazine carousel. Release channel **`1.3.0-alpha.4`**. ### Changed - **`news`:** `magazine` layout shows one article at a time with horizontal swipe navigation, dot indicators, and prev/next controls (keyboard arrows supported). ## [1.3.0-alpha.3] - 2026-06-12 Third **`1.3.0`** **`alpha`**: News Card source readiness fix. Release channel **`1.3.0-alpha.3`**. ### Fixed - **`news`:** no longer stuck on “Loading news…” when configured entities are already in `hass.states` but global hydration/`connected` flags are false (common on wall tablets). - **`news`:** entity states with `unknown`/`unavailable` still render when `items` attributes contain articles; numeric-key object lists coerced to arrays. ## [1.3.0-alpha.2] - 2026-06-12 Second **`1.3.0`** **`alpha`**: News Card template-sensor compatibility. Release channel **`1.3.0-alpha.2`**. ### Fixed - **`news`:** `items`, `articles`, `entries`, `news`, and `headlines` attributes accept native arrays or JSON strings (Home Assistant template sensors); invalid JSON is treated as empty and the next attribute key is tried. ## [1.3.0-alpha.1] - 2026-06-12 First **`1.3.0`** **`alpha`**: introduces the new Nodalia News Card. Release channel **`1.3.0-alpha.1`**. First MVP of the News Card focusing on visual style, feed rendering, newspaper-like typography, and dashboard-friendly layout. ### Added - New **`custom:nodalia-news-card`**. - Newspaper-inspired editorial layout for Home Assistant dashboards. - Support for single **`entity`** and multiple **`sources`**. - **`compact`**, **`magazine`**, and **`list`** layouts. - Headline-first visual hierarchy. - Basic filtering by age, source count, and keywords. - Safe article opening in a new tab. - English and Spanish runtime i18n keys. - Empty, loading, and error states. ### Notes This is the first MVP of the News Card. It does not fetch external news APIs directly yet; it renders news items exposed through Home Assistant entities. ## [1.2.2-alpha.2] - 2026-06-12 Second **`1.2.2`** **`alpha`**: bugfix sweep from code audit. Release channel **`1.2.2-alpha.2`**. ### Fixed - **Empty state:** entity, fav, person, alarm, cover, light, fan, humidifier, climate, weather, and circular-gauge cards render empty UI when entity state disappears instead of keeping stale content. - **`cover`:** `compact_layout_mode: auto` uses width/grid heuristics (parity with entity card). - **`fav`:** service security aligned with entity (`strict_service_actions: false` by default); all service calls respect allowlists when strict; alarm fallback modes honor `supported_features`; boolean attributes use runtime i18n; disconnect clears alarm grid span and defer timers. - **`alarm-panel` / `fav`:** distinguish missing `supported_features` (legacy) from explicit `0` (no arm modes). - **`graph`:** always renders on `set hass` while history loads; default title uses runtime i18n. - **`calendar`:** non-admin webhook guard log uses runtime i18n. - **`utils`:** `invokeHomeAssistantService` logs `callService` failures; shared `renderCardEmptyStateDocument` helper. ### Changed - **Render signatures:** entity, fav, cover, alarm, and graph include display/config fields to avoid stale editor preview UI. ## [1.2.2-alpha.1] - 2026-06-12 First **`1.2.2`** **`alpha`**: bugfix and performance pass on top of stable **`1.2.1.1`**. Release channel **`1.2.2-alpha.1`**. ### Fixed - **`fav`:** cover/lock tap parity with entity card; Lovelace `tap_action` objects via `applyCardTapActionField`; alarm mode labels from runtime i18n. - **`cover`:** Lovelace tap/hold action objects parsed in `normalizeConfig`. - **`entity`:** configured services use `invokeHomeAssistantService`. - **`calendar`:** `set hass` compares full render signature for weather/header updates. ### Changed - **`graph`:** hover tooltip DOM patch via `_syncTooltipContent` (no `innerHTML` rebuild on pointer move). ## [1.2.1.1-alpha.2] - 2026-06-11 Second **`1.2.1.1`** hotfix **`alpha`**: person-card i18n and entity cover/lock tap services. Release channel **`1.2.1.1-alpha.2`**. ### Fixed - **`person`:** location subtitle (`Home` / `Away`, zones) uses runtime i18n via `_personStrings()` instead of hardcoded Spanish in `_translateState`. - **`entity`:** cover tap toggles `open_cover` / `close_cover` (or `set_cover_position` 100/0); lock tap uses `lock.open` / `lock.lock` instead of `homeassistant.toggle`; `auto` tap also toggles cover/lock. ## [1.2.1.1-alpha.1] - 2026-06-11 First **`1.2.1.1`** hotfix **`alpha`**: entity-card toggles, person i18n, alarm PIN flow. Release channel **`1.2.1.1-alpha.1`**. ### Fixed - **`entity`:** Lovelace visual-editor `tap_action` objects (`{ action: "toggle" }`) no longer stringify to `"[object Object]"` and fall back to `auto` / more-info; cover/lock toggles work again. - **`entity`:** `homeassistant.toggle` / `turn_on` / `turn_off` allowed when security lists are empty; service calls use `invokeHomeAssistantService` (`callService` + `hass-action` fallback). - **`entity` / `i18n`:** `language: "auto"` resolves from root hass + document `lang` instead of stale `hass.language`; person `home` / `en_casa` / `casa` states translate with the active locale. - **`alarm-panel`:** Home/Away/Night arm when `code` or `code_entity` is configured (Alarmo `code_format` no longer blocks configured PINs); missing manual PIN focuses the code field; service calls use `invokeHomeAssistantService` with error handling. ### Changed - **`utils`:** `coerceCardTapAction`, `applyCardTapActionField`, and `invokeHomeAssistantService` shared helpers for Lovelace action objects and HA service dispatch. ## [1.2.1-alpha.8] - 2026-06-11 Eighth **`1.2.1`** **`alpha`**: i18n completion, empty-state localization, config-safety fixes. Release channel **`1.2.1-alpha.8`**. ### Fixed - **`person`:** zone lookup cache stores **`entity_id`** instead of a stale **`hass.states`** object (avoids retaining old HA snapshots). - **`climate` / `cover` / `fan` / `light` / `entity` / `humidifier` / `media-player` / `fav` / `navigation-bar`:** `normalizeSecurityConfig` fallback clones **`security`** instead of mutating the incoming config reference. - **`advance-vacuum` / `calendar`:** non-mutating **`security`** merge on **`normalizeConfig`**. ### Changed - **`i18n/runtime` + `i18n/editor`:** missing locale keys filled for **es, de, fr, it, nl, no, pt, ru, el, zh, ro** (including **`vacuumErrorLabels`**, **`lightCard`**, calendar/notifications blocks, and Norwegian editor backlog). - **Empty states:** climate, fan, humidifier, entity, weather, graph, circular-gauge, vacuum, light, fav, insignia, and media-player cards read **`emptyTitle` / `emptyBody`** from runtime i18n. - **`CHANGELOG-PRERELEASES.md`:** corrected release dates for **`1.2.1-alpha.4–7`** and **`1.2.0-alpha.40–56`** (aligned with git history). ## [1.2.1-alpha.7] - 2026-06-11 Seventh **`1.2.1`** **`alpha`**: audit pass 6 — lifecycle defer cleanup, observer guards, security normalization rollout, performance gates. Release channel **`1.2.1-alpha.7`**. ### Fixed - **`person` / `circular-gauge`:** `clearDeferTimers` on disconnect. - **`calendar` / `notifications` / `power-flow`:** `isConnected` guards in viewport `IntersectionObserver` callbacks. - **`vacuum`:** panel, bounce, layout refresh, and mode-pending timers use `scheduleDeferTimer` + `clearDeferTimers`. - **`alarm-panel`:** pin-error and focus-defer timers use `scheduleDeferTimer`. - **`circular-gauge`:** `getContinuousThumbRotate` keeps thumb on short arc path when value decreases. ### Changed - **`light`:** `_lastEntityRevision` gate skips redundant optimistic sync; `normalizeSecurityConfig` in editor path. - **`entity`:** attribute object display without `JSON.stringify`; normalized security config. - **`fav`:** render signature includes tap/security fields; `normalizeSecurityConfig`. - **`media-player`:** built-in transport/volume/browser actions use `_callInternalMediaService` (strict gate only on user `call-service` actions). - **`fan` / `humidifier` / `cover` / `climate` / `navigation-bar`:** `normalizeSecurityConfig` on `normalizeConfig`. ## [1.2.1-alpha.6] - 2026-06-11 Sixth **`1.2.1`** **`alpha`**: circular gauge entrance thumb follows dial arc. Release channel **`1.2.1-alpha.6`**. ### Fixed - **`nodalia-circular-gauge-card.js`:** thumb entrance and value transitions orbit the semicircular track via `rotate` + `translateY` instead of animating `left`/`top` in a straight line; pop animation moved to inner dot so it does not fight orbit transform. ## [1.2.1-alpha.5] - 2026-06-11 Fifth **`1.2.1`** **`alpha`**: audit pass 5 — lifecycle completion, signature slimming, optimistic gates, security normalization. Release channel **`1.2.1-alpha.5`**. ### Fixed - **`nodalia-notifications-card.js`:** `isConnected` in `_renderIfChanged`; reset in-flight calendar/weather flags on disconnect; post-`await` guards in `_runNotificationAction`; viewport resize skips forced bust when signature unchanged. - **`nodalia-media-player.js` / `climate` / `scenes`:** press-bounce timers use `scheduleDeferTimer` + `clearDeferTimers`; media invalidates browser request token on disconnect. - **`nodalia-calendar-card.js`:** forecast WebSocket callback and per-`await` guards in `_refreshWeatherForecastByDay`. - **`nodalia-graph-card.js`:** `isConnected` in hover rAF and viewport `IntersectionObserver`. - **`nodalia-navigation-bar.js`:** tracked dock-entrance rAF cancelled on disconnect; unsafe editor keys rejected in `_applyFieldValue`. - **`nodalia-alarm-panel-card.js`:** countdown interval clears when disconnected. ### Changed - **`nodalia-utils.js`:** shared **`normalizeSecurityConfig`** helper exported on public API. - **Render signatures:** entity `getValueSignature` without `JSON.stringify`; light uses `joinParts`; person stamp uses raw HA fields (no per-tick title/translate/badge work). - **`fan` / `humidifier`:** optimistic sync skipped when entity revision and signature are unchanged. - **`advance-vacuum`:** persisted session load deferred until signature changes; `select` / `homeassistant` mode helpers route through `_callInternalService`; `_mapActionInFlight` reset on disconnect. - **`vacuum`:** `_callService` / `_callSelectOption` are internal; user actions use `_callUserVacuumService` with strict gate. ## [1.2.1-alpha.4] - 2026-06-11 Fourth **`1.2.1`** **`alpha`**: audit pass 4 — lifecycle hardening, signature migration, side-effect gates, security defaults. Release channel **`1.2.1-alpha.4`**. ### Fixed - **`nodalia-calendar-card.js`:** invalidates `_refreshRunId` on disconnect; post-`await` `isConnected` guards in native composer and delete paths; unsafe-key guard on `calendars.*` editor fields. - **`nodalia-weather-card.js`:** forecast WebSocket callback guards `isConnected` before re-render. - **`entity` / `person` / `weather` / `circular-gauge` / `alarm`:** press animations use `scheduleDeferTimer` + `clearDeferTimers`. - **`light` / `fan` / `humidifier` / `entity`:** optimistic and mode-switch deferred work guards `isConnected`. - **`alarm-panel`:** ResizeObserver respects render signature; focus-defer and pin-verify timers cleared/guarded. ### Changed - **Render signatures:** `joinParts` on insignia, person, fan, humidifier, weather, alarm, circular-gauge; insignia no longer embeds full config; person caches zone lookup. - **`notifications` / `power-flow` / `media-player`:** per-tick side effects run only when render signature changes. - **`advance-vacuum`:** calibration rebuild gated by stamp; `_callVacuumService` routes through `_callInternalService`. - **`vacuum`:** `select.select_option` respects `strict_service_actions`. - **`light` / `entity` / `insignia` / `fav`:** explicit `DEFAULT_CONFIG.security` blocks. ## [1.2.1-alpha.3] - 2026-06-06 Third **`1.2.1`** **`alpha`**: audit pass 3 — async lifecycle, render signatures, graph hover, security defaults, shared color resolver. Release channel **`1.2.1-alpha.3`**. ### Fixed - **`nodalia-media-player.js`:** `isConnected` guards after media-browser async; volume step loop aborts on disconnect; progress ticker avoids full render until 3 consecutive DOM misses. - **`nodalia-climate-card.js`:** post-`await` guards on temperature/range commits; `_commitAborted` on disconnect; schedule draft uses revision counter instead of full object in render signature. - **`nodalia-notifications-card.js`:** cached calendar/weather signature stamps; `isConnected` guards in refresh loops and mobile notify flush; deferred press-animation timers. - **`nodalia-graph-card.js`:** hover tooltip/line DOM patch without full chart re-render; cached history request key; deferred button-bounce timers. ### Changed - **Render signatures:** **`joinParts`** / pipe stamps on advance-vacuum, climate, cover, vacuum, and fav cards (no hot-path **`JSON.stringify`**). - **`nodalia-bubble-contrast.js` delegates:** calendar, graph, media-player, cover, vacuum, fav, alarm, person, weather, circular-gauge editors use cached shared resolver. - **`security.strict_service_actions`:** default **`false`** (opt-in) on media-player, navigation-bar, climate, and vacuum; climate/vacuum gate **`callService`** when strict mode enabled. - **`nodalia-calendar-card.js`:** editor **`styles.*` / `animations.*` / `haptics.*`** paths use guarded **`NodaliaUtils.setByPath`**. ## [1.2.1-alpha.2] - 2026-06-06 Second **`1.2.1`** **`alpha`**: deferred-timer lifecycle, render-path polish, and visual coherence. Release channel **`1.2.1-alpha.2`**. ### Fixed - **`nodalia-utils.js`:** **`scheduleDeferTimer`** / **`clearDeferTimers`** — press-bounce and panel timers cleared on disconnect (fan, light, humidifier, cover, advance-vacuum, power-flow). - **`nodalia-scenes-card.js`:** empty-state render signature aligned with **`_getRenderSignature`** (no full re-render every HA tick); lighter signature without full-config **`JSON.stringify`**. - **`nodalia-calendar-card.js`:** **`_renderIfChanged`** and async **`_refreshEvents`** skip work when disconnected. - **`nodalia-notifications-card.js`:** calendar/weather refresh **`finally`** blocks guard **`isConnected`** before re-render/reschedule. - **`nodalia-advance-vacuum-card.js`:** map stale-image removal timer tracked; security editor checkbox matches opt-in **`strict_service_actions`** default. ### Changed - **`nodalia-power-flow-card.js`:** per-node bubble icon contrast via **`--node-icon-glyph`** and **`NodaliaBubbleContrast`**. - **`nodalia-bubble-contrast.js`:** editor color cache capped at **256** entries. - **`nodalia-light-card.js` / `climate` / `scenes` / `power-flow`:** editors delegate **`resolveEditorColorValue`** to shared cached resolver. ## [1.2.1-alpha.1] - 2026-06-06 First **`1.2.1`** **`alpha`**: stability, visual coherence, and performance pass on top of stable **`1.2.0`**. Release channel **`1.2.1-alpha.1`** on **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`nodalia-cards-1.2.1-alpha.1.js`**, and **`CARD_VERSION`** on bundled card modules. ### Fixed - **`nodalia-calendar-card.js`:** visual editor config updates delegate to guarded **`NodaliaUtils.setByPath`** (prototype-pollution safe). - **`nodalia-advance-vacuum-card.js`:** shared cleaning session webhooks default to **admin-only** (`security.allow_webhooks_for_non_admin: false`); **`isConnected`** guards after async map actions and webhook callbacks. - **`nodalia-graph-card.js`:** skip redundant full render while history is loading; **`isConnected`** checks after async history/statistics fetches. - **`nodalia-notifications-card.js`:** entrance animation timer respects disconnected lifecycle. ### Changed - **`nodalia-light-card.js` / `nodalia-climate-card.js` / `nodalia-scenes-card.js`:** bubble icon contrast via **`NodaliaBubbleContrast.shouldDarkenBubbleIconGlyph`**; light card uses proportional icon sizing (matches fan/entity). - **`nodalia-power-flow-card.js`:** render signature uses **`NodaliaRenderSignature.joinParts`** instead of **`JSON.stringify`**. - **`nodalia-scenes-card.js`:** default **`button_bounce_duration`** aligned to **320** ms (entity card convention). ## [1.2.0-alpha.61] - 2026-06-06 Sixty-first **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.61`**. ### Fixed - **`nodalia-light-card.js`**, **fan / humidifier / cover cards:** card-body tap works again anywhere on the card — **`data-*-action="body"`** restored on **`ha-card`**. Slider-bubble chrome is ignored only for body/icon toggles, so control buttons and slider padding no longer block power toggle or steal taps from the card body. ## [1.2.0-alpha.60] - 2026-06-06 Sixtieth **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.60`**. ### Fixed - **`nodalia-power-flow-card.js`:** home device popup no longer clips long device names — list uses full-width rows (icon + text) with wrapping labels instead of a narrow multi-column grid. ## [1.2.0-alpha.59] - 2026-06-06 Fifty-ninth **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.59`**. ### Fixed - **`nodalia-climate-card.js`:** the setpoint schedule popup no longer jumps scroll to the top when adding blocks or editing fields on a weekday far down the agenda — agenda **`scrollTop`** is restored after re-renders, and the render signature stays in sync after in-place slot patches so Home Assistant state updates do not force extra full redraws while the popup is open. - **`nodalia-utils.js`**, **light / fan / humidifier / cover cards:** taps on slider bubble chrome no longer trigger card-body toggle — body tap moved from **`ha-card`** to the **hero** row only, controls block is **`data-nodalia-tap-shield`**, and post-drag ghost clicks are suppressed. ### Changed - **Docs / examples:** [`docs/climate-setpoint-schedule.md`](docs/climate-setpoint-schedule.md) quick-start guide, **`YOUR_*`** placeholders, and generic automation YAML (`climate-setpoint-schedule-*.yaml`) so each thermostat is copy-paste with clear values to replace. - **i18n:** `climateCard.schedule` runtime strings (popup, days, errors) in all **`i18n/runtime/*`** locales; Norwegian editor schedule labels translated in **`i18n/editor/no.json`**. ## [1.2.0-alpha.58] - 2026-06-06 Fifty-eighth **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.58`**. ### Fixed - **`nodalia-utils.js`:** webhook saves from Lovelace now prefer Home Assistant’s authenticated WebSocket command **`webhook/handle`** (`hass.callWS`) before HTTP POST. This reliably triggers automations from the dashboard; plain HTTP can return **200** without firing when the webhook trigger has **`local_only: true`** (common with remote / Nabu Casa URLs). **Docs/examples now recommend `local_only: false`** on the webhook automation when remote access is used. ### Added - **Tests:** regression ensuring **`postHomeAssistantWebhook`** uses **`webhook/handle`** when **`hass.callWS`** is available. ## [1.2.0-alpha.57] - 2026-06-06 Fifty-seventh **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.57`**. ### Fixed - **`nodalia-entity-card.js` / `nodalia-fav-card.js`:** explicit **`toggle`** tap actions now call **`homeassistant.toggle`** for cover, lock, and other non–on/off entities instead of silently doing nothing. - **`nodalia-i18n.js`:** automatic language resolution reads Home Assistant profile language from **`localStorage.selectedLanguage`** before stale **`hass.language`**, fixing cards stuck in Spanish when the UI profile is English; person states **`en_casa`** / **`casa`** map to the active locale’s home label. - **`nodalia-climate-card.js`:** weekly setpoint schedule **Save** no longer depends on a live climate state, merges timeline drag and manual time edits into the draft before POST, syncs focused time fields on blur, and defers re-renders during agenda drag so the webhook payload matches edited consignas. - **`nodalia-utils.js`:** **`postHomeAssistantWebhook`** falls back to same-origin **`fetch`** when **`fetchWithAuth`** returns a non-OK response, so local webhook automations trigger reliably from Lovelace. ### Added - **Tests:** regressions for entity-card toggle domains, i18n **`localStorage`** language, person home aliases, climate schedule save routing, and webhook **`fetchWithAuth`** fallback. ## [1.2.0-alpha.56] - 2026-06-04 Fifty-sixth **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.56`**. ### Changed - **`nodalia-power-flow-card.js`:** home device popup follows the calendar/climate expanded pattern — fixed viewport overlay rendered outside the card, blurred backdrop, centered rounded panel (up to ~640×780px), and scrollable body when there are many individual devices or consumption chips. Replaces the full-screen panel from **alpha.53**. ## [1.2.0-alpha.55] - 2026-06-04 Fifty-fifth **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.55`**. ### Fixed - **`nodalia-light-card.js`:** `set hass` now re-renders when an optimistic turn-on/turn-off is confirmed by Home Assistant even if the render signature is unchanged, matching fan/humidifier behavior so power transitions and controls do not stay stale. ### Added - **Tests:** VM regression in `tests/light-optimistic-toggle.test.mjs` for optimistic turn-off confirmation with unchanged signature. ## [1.2.0-alpha.54] - 2026-06-04 Fifty-fourth **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.54`**. ### Fixed - **`nodalia-fan-card.js` / `nodalia-humidifier-card.js`:** optimistic visual-settle no longer leaves slider/humidity stuck after HA confirms `on` but keeps publishing `0` — a dedicated expiry timer, centralized cleanup, and `set hass` sync force a render when the settle window ends. - **`nodalia-humidifier-card.js`:** `mode_entity` helper state and option list are now part of the render signature so external mode changes refresh the active mode button and label. ### Added - **Tests:** VM regressions in `tests/fan-humidifier-optimistic-settle.test.mjs` for visual-settle expiry and `mode_entity` signature updates. ## [1.2.0-alpha.53] - 2026-06-04 Fifty-third **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.53`**. ### Changed - **`nodalia-power-flow-card.js`:** home device popup moved outside the card as a fixed overlay with a scrollable body (first pass used a full-screen panel; layout refined in **alpha.56**). ## [1.2.0-alpha.52] - 2026-06-04 Fifty-second **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.52`**. ### Changed - **`nodalia-power-flow-card.js`:** removed the home individual-device hint chip — tapping the Home node to open the popup is sufficient. - **`nodalia-power-flow-card.js`:** home device popup items reuse the card’s diagram node language (gradient bubbles, label/value chips) instead of generic row containers. ## [1.2.0-alpha.51] - 2026-06-04 Fifty-first **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.51`**. ### Changed - **`nodalia-power-flow-card.js`:** home individual-device hint moved out of the Home bubble into a subtle chip under the label so it no longer overlapped the consumption value (chip removed again in **alpha.52**). - **`nodalia-power-flow-card.js`:** first pass restyling the home device popup toward the main card palette (superseded by **alpha.52** node layout). ## [1.2.0-alpha.50] - 2026-06-04 Fiftieth **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.50`**. ### Fixed - **`nodalia-power-flow-card.js`:** visual editor no longer wipes `entities.grid` / `home` / `solar` / `battery` when adding or removing individual devices — the handler wrongly treated `entities` as an array and reset the whole object on every individual action, which broke the main flow diagram and made remove appear to do nothing. ## [1.2.0-alpha.49] - 2026-06-04 Forty-ninth **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.49`**. ### Fixed - **`nodalia-power-flow-card.js`:** configured individual devices no longer affect the main flow diagram layout when `show_home_device_popup` is active; grid/solar/battery branches keep rendering from YAML even if entity resolution hiccups during config updates. - **`nodalia-power-flow-card.js`:** render signature now includes the energy-branch layout config so adding or editing individual devices triggers a full diagram refresh. - **Release artifacts:** keep only the current versioned HACS bundles (`1.2.0-alpha.49`); `npm run bundle` now removes stale `nodalia-cards-*-alpha.*.js` files automatically. ## [1.2.0-alpha.48] - 2026-06-04 Forty-eighth **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.48`**. ### Fixed - **Visual editors (suite-wide):** Lovelace briefly disconnects the config panel when opening entity/icon pickers; `disconnectedCallback` had removed click/input listeners without re-attaching them on reconnect, so editor buttons and toggles stopped responding. Listeners now mount in `connectedCallback` via `_attachEditorShadowListeners()`. ## [1.2.0-alpha.47] - 2026-06-03 Forty-seventh **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.47`**. ### Added - **Bundle split (optional):** `nodalia-cards-core-{version}.js` (shared i18n/utils) + `nodalia-cards-suite-{version}.js` (all cards). HACS default remains the single self-contained `nodalia-cards-{version}.js`. Load **core first**, then **suite**, as two Lovelace resources when you want a smaller initial download. ### Changed - **`nodalia-navigation-bar.js`:** when popup/browser/expand state is unchanged, route badges and the media player region update in-place instead of rebuilding the full shadow DOM on every `set hass`. ## [1.2.0-alpha.46] - 2026-06-03 Forty-sixth **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.46`**. ### Changed - **`nodalia-advance-vacuum-card.js`:** HA-driven render signature stamp cache — skips rebuilding mode/dock/routine descriptor payloads on every `set hass` when tracked entities and UI scope are unchanged. - **`nodalia-graph-card.js`:** chart hover updates tooltip, guide line, and hover dots in-place instead of full `innerHTML` repaints while scrubbing the timeline. ### Fixed - **Repo hygiene:** removed accidental Finder duplicate artifacts (`* 2.js`, `* 2.mjs`, `* 2.yaml`, `* 2.json`). ## [1.2.0-alpha.45] - 2026-06-03 Forty-fifth **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.45`**. ### Fixed - **Visual editors (suite-wide):** `disconnectedCallback` removes shadow DOM listeners so reopening the card editor does not stack duplicate handlers. - **Cards with entry animations:** timer/`requestAnimationFrame` callbacks bail out when the element is disconnected (light, climate, cover, fan, humidifier, graph, vacuum, and related cards). - **`nodalia-navigation-bar.js`:** browser media session token cleared on disconnect; async work and `set hass` guarded when the bar is not connected. - **`nodalia-calendar-card.js`:** native event composer tracks `dataset.nativeMounted` when color/repeat fields change. - **`nodalia-scenes-card.js`:** dashboard scroll restore and press-animation timers cancelled on disconnect (no stale DOM updates after leaving the view). ### Added - **`package.json`:** `npm run validate` — syntax check, i18n validation, tests, and bundle build in one command. ## [1.2.0-alpha.44] - 2026-06-03 Forty-fourth **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.44`**. ### Fixed - **`nodalia-power-flow-card.js`:** home device popup now opens on tap and renders individual devices even when they are hidden from the main diagram. - **`nodalia-power-flow-card.js`:** popup mode no longer breaks the flow layout (individual devices are excluded from diagram layout counting). - **`nodalia-power-flow-card.js`:** visual editor keeps draft individual rows when adding a device so native entity selectors stay usable before save. ## [1.2.0-alpha.43] - 2026-06-02 Forty-third **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.43`**. ### Added - **`nodalia-power-flow-card.js`:** home device breakdown popup, optional day/month consumption chips on the card header, and visual-editor support for individual power devices. ### Changed - **`nodalia-power-flow-card.js`:** native HA entity selectors in the visual editor; card-based individual device rows with add/remove/reorder. - **`nodalia-scenes-card.js`:** bundled at this release channel (launch animation polish from alpha.41). ## [1.2.0-alpha.42] - 2026-06-02 Forty-second **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.42`**. ### Added - **`nodalia-power-flow-card.js`:** home device breakdown popup — tap Home (when individual devices are configured) for a left-to-right layout with Casa on the left and plug/device flows on the right; optional day/month consumption total sensors as header status chips; visual editor fields for `consumption_chips` and `show_home_device_popup`. ### Changed - **`nodalia-power-flow-card.js`:** visual editor uses native Home Assistant `ha-selector` / `ha-entity-picker` for all entity fields, a card-based individual-device editor (no manual entity IDs), and merged editor i18n for consumption chip labels. ## [1.2.0-alpha.41] - 2026-06-02 Forty-first **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.41`**. ### Fixed - **`nodalia-light-card.js`:** optimistic turn-on timeout now flushes queued brightness/color/temperature changes before clearing pending state (no silent drop while the entity still reports `off`). - **`nodalia-calendar-card.js`:** native-event webhook submissions validate against `_getAvailableNativeCalendarIds()`; the composer picker is scoped to configured calendars; webhooks default to admin-only (`security.allow_webhooks_for_non_admin` defaults to `false`). - **`nodalia-alarm-panel-card.js`:** when the PIN field is visible, empty submissions no longer fall back to stored/helper codes (blocks one-click arm/disarm on shared dashboards). ### Changed - **`nodalia-scenes-card.js`:** richer launch feedback on scene tap — accent burst, outer glow ring, icon pulse, and earlier press animation on pointer/touch down. - **`examples/calendar-native-event-webhook.yaml`:** documents admin-only default and `allowed_calendar_ids` allowlist validation. ## [1.2.0-alpha.40] - 2026-06-01 Fortieth **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.40`**. ### Changed - **`nodalia-scenes-card.js`:** premium mood-tile redesign — per-scene gradient atmospheres, glass icon bubbles, cinematic header, and a launch-moment animation on tap instead of the unreliable persistent active-scene highlight. ### Removed - **`show_active`** and **`styles.active`** — Home Assistant does not expose a trustworthy on/off scene state; replaced by a brief launch glow/shimmer feedback. ## [1.2.0-alpha.39] - 2026-05-29 Thirty-ninth **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.39`**. ### Changed - **`nodalia-scenes-card.js`:** default tint is now a warm scene gold (`#c9a86c`) instead of theme primary blue; each scene supports an optional `color` field and a visual-editor color picker, with the card chrome following the active scene tint. ## [1.2.0-alpha.38] - 2026-05-29 Thirty-eighth **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.38`**. ### Fixed - **`nodalia-scenes-card.js`:** scene taps no longer jump the Lovelace dashboard — scene tiles are non-focusable div controls, active-state updates happen in-place without a full re-render, and parent scroll positions (including `#view`) are captured and restored after interaction. ## [1.2.0-alpha.37] - 2026-05-29 Thirty-seventh **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.37`**. ### Fixed - **`nodalia-scenes-card.js`:** tapping a scene no longer scrolls the dashboard — scene buttons suppress native focus on pointer/touch down, reserve active-badge space to avoid layout jumps, and defer the optimistic re-render to the next animation frame. ## [1.2.0-alpha.36] - 2026-05-29 Thirty-sixth **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.36`**. ### Changed - **`nodalia-scenes-card.js`:** clearer active-scene feedback — accent badge, icon dot, dimmed inactive buttons, and safer last-changed detection (no false highlight on ambiguous timestamps). ## [1.2.0-alpha.35] - 2026-05-29 Thirty-fifth **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.35`**. ### Added - **`nodalia-scenes-card.js`:** visual editor style section now includes color pickers for card, icon bubble, scene buttons, and active-state border — grouped like other Nodalia cards, with text fields for CSS borders, shadows, and gradients. ## [1.2.0-alpha.34] - 2026-05-29 Thirty-fourth **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.34`**. ### Changed - **`nodalia-scenes-card.js`:** card UI aligned with the Nodalia bundle — gradient surface, icon bubble header, scene buttons with inset shadows and active-state tint, list-mode active dot, and updated default styling tokens. ## [1.2.0-alpha.33] - 2026-05-29 Thirty-third **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.33`**. ### Fixed - **`nodalia-scenes-card.js`:** visual editor entity picker no longer closes immediately — `set hass` skips redundant re-renders, scene domain picker matches other Nodalia cards, and duplicate `value-changed` events are ignored. ## [1.2.0-alpha.32] - 2026-05-29 Thirty-second **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.32`**. ### Fixed - **`nodalia-scenes-card.js`:** visual editor **Add scene** keeps draft rows while you pick an entity; empty drafts are no longer stripped before render. ## [1.2.0-alpha.31] - 2026-05-29 Thirty-first **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.31`**. ### Added - **`nodalia-scenes-card.js`:** new Lovelace card for Home Assistant **`scene.*`** entities — grid or list layout, tap to **`scene.turn_on`**, optional more-info / hold actions, active-scene highlight, visual editor, haptics, and styles. ## [1.2.0-alpha.30] - 2026-05-27 Thirtieth **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.30`**. ### Changed - **`nodalia-climate-card.js`:** setpoint schedule **`input_text`** storage now auto-picks the smallest fit: **v3 binary base64** (~**40–45 blocks** in 255 chars), **v2 packed integers** (~22–27, Path B friendly), or **v1** arrays; still reads legacy verbose JSON. ## [1.2.0-alpha.29] - 2026-05-27 Twenty-ninth **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.29`**. ### Changed - **`nodalia-climate-card.js`:** setpoint schedules saved to **`input_text`** use compact storage format **`v:1`** (`[dayIndex, startMinutes, endMinutes, temperature]`) so ~14–18 slots fit in the 255-character HA limit; legacy verbose JSON still loads on read. ### Fixed - **Docs / examples:** climate setpoint schedule webhook uses script action **`event:`** (not unknown **`event.fire`**); Path B automation supports compact **`v:1`** storage. ## [1.2.0-alpha.28] - 2026-05-27 Twenty-eighth **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.28`** on **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, **`nodalia-cards-1.2.0-alpha.28.js`**, and **`CARD_VERSION`** on bundled card modules. ### Fixed - **`nodalia-fan-card.js`**, **`nodalia-humidifier-card.js`**, **`nodalia-light-card.js`:** percentage/humidity/active value chips update optimistically while dragging sliders (same `data-*-chip` + `_applySliderValue` patch as cover), so feedback is immediate before Home Assistant confirms. ## [1.2.0-alpha.27] - 2026-05-27 Twenty-seventh **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.27`** on **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, **`nodalia-cards-1.2.0-alpha.27.js`**, and **`CARD_VERSION`** on bundled card modules. ### Fixed - **`nodalia-cover-card.js`:** position/tilt chips now update optimistically while dragging sliders (`data-cover-chip="position"` / `data-cover-chip="tilt"` + `_applySliderValue` UI patch), so feedback is immediate before Home Assistant confirms. ## [1.2.0-alpha.26] - 2026-05-26 Twenty-sixth **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.26`** on **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, **`nodalia-cards-1.2.0-alpha.26.js`**, and **`CARD_VERSION`** on bundled card modules. ### Fixed - **Climate schedule popup (mobile):** the fullscreen schedule overlay stays **centered** on small screens instead of behaving like a bottom sheet. ## [1.2.0-alpha.25] - 2026-05-25 Twenty-fifth **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.25`** on **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, **`nodalia-cards-1.2.0-alpha.25.js`**, and **`CARD_VERSION`** on bundled card modules. ### Fixed - **Climate schedule agenda:** dragging resize grips no longer collapses blocks to the minimum — timeline DOM stays live during drag (patch in place, single re-render on release). - **Climate schedule editor:** manual **start/end/setpoint** edits no longer tear down the popup or reload the Lovelace view (**`change`** instead of **`input`**, **Enter** suppressed, no full re-render while typing). ### Changed - **Climate schedule button:** when **±** step controls are visible, **`mdi:calendar-clock`** sits centered between **−** and **+** with the same size and style as step buttons; without step controls it stays on the dial corner at step size. ## [1.2.0-alpha.24] - 2026-05-25 Twenty-fourth **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.24`** on **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, **`nodalia-cards-1.2.0-alpha.24.js`**, and **`CARD_VERSION`** on bundled card modules. ### Added - **Climate schedule agenda:** fullscreen overlay **`climate-schedule-expanded`** (Calendar Card pattern, not clipped inside the card). One row per weekday with a horizontal **24h timeline**, **+** to add a block in the largest free gap (full day when empty), **drag** to move, **edge grips** to resize, and manual **start/end/setpoint** for the selected block. - **Visual editor:** **`setpoint_schedule_week_starts_on`** (`monday` / `sunday`) for agenda row order; editor keys **`ed.climate.schedule_week_starts_*`**. ### Changed - **Release metadata:** bump the **`1.2.0`** line to **`1.2.0-alpha.24`**; smoke test covers **`climate-schedule-expanded`** and **`setpoint_schedule_week_starts_on`** in source and HACS bundle. ## [1.2.0-alpha.23] - 2026-05-25 Twenty-third **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.23`**. ### Added - **`nodalia-climate-card.js`:** weekly **setpoint schedule** composer (bottom-left **`mdi:calendar-clock`** button). Draft lives in memory; optional **`input_text`** helper for reload between sessions. **Save** calls **`setpoint_schedule_webhook`** (payload includes **`schedule`**, **`automation_specs`**, **`automation_yaml_bundle`**, etc.) — no Lovelace **`config-changed`** persistence for the grid. - **Visual editor:** **Visibility** toggle **`show_schedule_button`**; **Setpoint schedule** section (**webhook ID**, **helper entity**, **`security.allow_webhooks_for_non_admin`**). Editor strings **`ed.climate.schedule_*`** in all **`i18n/editor/*.json`** locales. - **Examples:** **`examples/climate-setpoint-schedule-*.yaml`** and **`examples/climate-card.yaml`** webhook/helper notes. ### Fixed - **HACS bundle:** **`nodalia-cards-1.2.0-alpha.21.js`** was built before the schedule editor landed, so the visual editor never showed schedule options. Rebuilt self-contained loader **`nodalia-cards-1.2.0-alpha.23.js`** from current sources. - **`nodalia-editor-ui.js`:** regenerated (**`pnpm i18n:gen-editor`**) so schedule labels resolve instead of raw **`ed.climate.schedule_*`** keys. - **`scripts/validate-editor-i18n.mjs`:** fails if **`nodalia-editor-ui.js`** is missing any **`en.json`** key (reminder to run **`i18n:gen-editor`** before release). ### Changed - **Release metadata:** bump to **`1.2.0-alpha.23`**; smoke test asserts the versioned HACS bundle ships **`show_schedule_button`** / **`setpoint_schedule_webhook`** editor fields. ## [1.2.0-alpha.21] - 2026-05-24 Twenty-first **`1.2.0`** **`alpha`**: release channel **`1.2.0-alpha.21`**. Restart of the **`1.2.0-alpha.*`** line from stable **`1.1.4`** (`main`). No visual layout editor in this build. ### Changed - **Release channel:** codebase and bundle match **`main`** at **1.1.4** (including media player editor fix). Next alphas focus on smaller features (e.g. climate setpoint schedule popup). ## [1.1.3-alpha.9] - 2026-05-18 Ninth **`1.1.3`** **`alpha`**: release channel **`1.1.3-alpha.9`**. ### Fixed - **`nodalia-advance-vacuum-card.js`:** map overlays and room/zone/goto UI follow active cleaning session mode again when the user is on **All** or **Routines** (`_resolveDisplayMode` / `_getDisplayCleaningModeId`). - **`nodalia-fan-card.js` / `nodalia-humidifier-card.js`:** while off, last-known on-state is not stored when `percentage` / humidity is **0** (avoids restoring 0% after optimistic turn-on). ### Changed - **Performance (pass 1 + 2):** fan, humidifier, light, and entity cards skip optimistic sync and full resize re-renders when the render signature is unchanged; alarm and vacuum layout/resize paths gated; advance-vacuum lazy mode/dock signature fragments; navigation bar editor propagates `hass` to pickers without full re-render. - **`nodalia-notifications-card.js` / `nodalia-power-flow-card.js`:** cached tracked-entity stamps for render signatures on busy dashboards. - **`nodalia-climate-card.js`:** `_syncDraftWithState()` only when a temperature draft is pending, post-drag render is queued, or the signature changed. - **`nodalia-fav-card.js` / `nodalia-vacuum-card.js`:** resize observer skips `_render()` when the signature is unchanged after layout bucket updates. - **`docs/performance-audit.md`:** second audit pass documented (R10–R15). --- ## [1.1.3-alpha.8] - 2026-05-18 Eighth **`1.1.3`** **`alpha`**: release channel **`1.1.3-alpha.8`**. ### Fixed - **`nodalia-fan-card.js` / `nodalia-humidifier-card.js`:** percentage/humidity slider **empty** animation on power-off is restored and synced to the controls `leaving` transition (negative animation delay on re-renders, explicit keyframe from current level to empty). --- ## [1.1.3-alpha.7] - 2026-05-18 Seventh **`1.1.3`** **`alpha`**: release channel **`1.1.3-alpha.7`**. ### Fixed - **`nodalia-fan-card.js` / `nodalia-humidifier-card.js`:** percentage/humidity slider fill animation runs for the full `powering-up` transition (negative animation delay on re-renders) so optimistic UI no longer cuts the fill short. ### Changed - **Shared utils:** Lovelace helpers live only in **`nodalia-utils.js`**; card sources no longer commit inlined `// ` blocks (bundle still loads utils once). Use **`node scripts/sync-standalone-embed.mjs`** locally for single-file Lovelace resources. - **`nodalia-fan-card.js`:** `ALLOWED_DOUBLE_TAP_ACTIONS` module constant for double-tap validation. --- ## [1.1.3-alpha.6] - 2026-05-18 Sixth **`1.1.3`** **`alpha`**: release channel **`1.1.3-alpha.6`**. ### Fixed - **`nodalia-fan-card.js` / `nodalia-humidifier-card.js`:** light-style optimistic turn-on (last known on-state, visual settle after Home Assistant confirms) and percentage/humidity slider fill animates once per power-on edge (no double animation flicker). - **`nodalia-notifications-card.js`:** empty-state body no longer falls back to `empty_title` when only a custom title is set. ### Changed - **Editor i18n:** tap/hold/double-tap action labels translated for climate, weather, light, and entity editors (all locales); `en.json` key order cleaned up. --- ## [1.1.3-alpha.5] - 2026-05-18 Fifth **`1.1.3`** **`alpha`**: release channel **`1.1.3-alpha.5`**. ### Fixed - **`nodalia-advance-vacuum-card.js`:** **`Can't find variable: advanceVacuumStrings`** in map tools (add-zone button) — missing `const advanceVacuumStrings = this._advanceVacuumStrings()` in `_renderMapTools`. --- ## [1.1.3-alpha.4] - 2026-05-18 Fourth **`1.1.3`** **`alpha`**: release channel **`1.1.3-alpha.4`**. ### Fixed - **`nodalia-utils.js`:** entity guard no longer shows **Entity not found** while Home Assistant is still loading `hass.states` (`connected` / empty registry); entities known via `hass.entities` are accepted. - **`nodalia-advance-vacuum-card.js`:** re-renders after the guard when `hass` arrives (signature updated on warning path). --- ## [1.1.3-alpha.3] - 2026-05-17 Third **`1.1.3`** **`alpha`**: release channel **`1.1.3-alpha.3`**. ### Fixed - **`nodalia-advance-vacuum-card.js`:** **Zona** mode works again when drawing manual zones on the map; stale shared cleaning sessions no longer wipe selections on every render while docked. - **`nodalia-notifications-card.js`:** vacuum **`water_empty`** and related runtime strings use i18n instead of hard-coded English. - **`nodalia-fan-card.js` / `nodalia-entity-card.js` / `nodalia-media-player.js`:** editor **Tap actions** toggle shows and updates the section again. - **`nodalia-climate-card.js`:** **Tap actions** editor section sits outside **General** (same layout as other cards). - **Editor i18n:** `ed.shared.show_tap_action_settings` / `hide_tap_action_settings` translated in all editor locales. --- ## [1.1.3-alpha.2] - 2026-05-17 Second **`1.1.3`** **`alpha`**: release channel **`1.1.3-alpha.2`**. ### Added - **`nodalia-utils.js`:** `renderEditorCollapsibleSectionHeaderHtml` and `renderLovelaceEntityGuardForEntities` for shared editor and entity-guard patterns. - **Editors (weather, climate, person, graph, power-flow, fav, circular gauge, …):** collapsible **Tap actions** sections (collapsed by default), aligned with light/cover/humidifier editors and `ed.shared.show_tap_action_settings` / `hide_tap_action_settings` i18n. ### Changed - **Entity-based cards** (media player, alarm, circular gauge, person, vacuum, graph, insignia, advance-vacuum, calendar, power-flow, …): missing entities use native Lovelace **`hui-warning`** / **`ha-alert`** where not already applied. --- ## [1.1.3-alpha.1] - 2026-05-17 First **`1.1.3`** **`alpha`**: release channel **`1.1.3-alpha.1`**. ### Added - **`nodalia-utils.js`:** `renderLovelaceEntityGuardCardHtml` shows Home Assistant's native **`hui-warning`** (or **`ha-alert`**) when no entity is configured or the entity is missing from state — replaces custom “configure entity” empty cards. - **`nodalia-utils.js`:** `scheduleCardZoneTap` / `cancelCardZoneTap` for double-tap actions (~320 ms) alongside existing hold gestures. - **`nodalia-weather-card.js`:** **`hold_action`** and **`double_tap_action`** (more-info / none), with long-press on the card body. - **`nodalia-entity-card.js` / `nodalia-fan-card.js`:** **`double_tap_action`** (and icon variant) with the same action types as tap/hold where applicable; entity card includes navigate paths. ### Changed - **Entity-based cards** (weather, entity, fan, light, humidifier, cover, …): missing or unknown entities now use the Lovelace warning UI instead of branded empty-state copy. --- ## [1.1.2-alpha.4] - 2026-05-15 Fourth **`1.1.2`** **`alpha`**: release channel **`1.1.2-alpha.4`**. ### Added - **`nodalia-entity-card.js`:** **`tap_action: navigate`** and **`navigation_path`** (plus icon/hold variants) use Home Assistant SPA navigation (`hass.navigate` → `history.pushState` → `hass-navigate`) so subview links work in the Companion App instead of opening the system browser via **`tap_action: url`**. --- ## [1.1.2-alpha.3] - 2026-05-15 Third **`1.1.2`** **`alpha`**: release channel **`1.1.2-alpha.3`**. ### Fixed - **`nodalia-cover-card.js`:** cover controls follow the fan card interaction model (slider-only pointer capture, no `button.blur()` or scroll-restore helpers) so the dashboard no longer flashes when tapping open/stop/close or sliders. - **`nodalia-utils.js`:** new cards and entity changes in the visual editor copy the entity **friendly name** into the **Name** field when it is still empty (or still matches the previous entity label). ### Changed - **`nodalia-cover-card.js`:** render signature no longer stringifies the full config object (avoids unnecessary full re-renders). --- ## [1.1.2-alpha.2] - 2026-05-15 Second **`1.1.2`** **`alpha`**: release channel **`1.1.2-alpha.2`**. ### Fixed - **`nodalia-light-card.js`:** temperature slider track gradient now matches control direction for **`color_temp`** (mired) lights — cool tones on the left, warm on the right — while **`color_temp_kelvin`** sliders keep warm→cool left→right. --- ## [1.1.2-alpha.1] - 2026-05-15 First **`1.1.2`** **`alpha`**: release channel **`1.1.2-alpha.1`** on **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, **`CARD_VERSION`** on bundled card modules, and **`nodalia-cards-1.1.2-alpha.1.js`**. ### Added - **`nodalia-fan-card.js` / `nodalia-humidifier-card.js` / `nodalia-entity-card.js`:** add Light Card-style optimistic toggle state so tap-to-toggle interactions respond instantly, wait briefly for Home Assistant confirmation, and fall back to the real HA state if the service call is not confirmed. ### Fixed - **`nodalia-cover-card.js`:** suppress focus on cover pointer interactions and preserve the active scroll container around cover taps/slider commits, preventing bottom-of-dashboard scroll nudges without blocking normal wheel/touch scrolling. - **`nodalia-fan-card.js` / `nodalia-humidifier-card.js`:** keep power/control expansion animations progressing across fast Home Assistant confirmations, avoiding the visible restart/lag after optimistic toggles. - **`nodalia-weather-card.js`:** forecast chart popups now use an opaque theme-safe surface, preventing Nodalia cards placed immediately below the Weather Card from showing through the detail panel. - **`nodalia-light-card.js`:** quick color-temperature preset labels and related control text now use runtime i18n instead of hardcoded English/Spanish strings. ### Changed - **`README.md`:** move the Buy Me a Coffee link into the top badge area, remove duplicate donation links, and remove the old PayPal entry. - **Release metadata:** start the **`1.1.2`** prerelease line at **`1.1.2-alpha.1`**. --- ## [1.1.1-alpha.9] - 2026-05-15 Ninth **`1.1.1`** **`alpha`**: release channel **`1.1.1-alpha.9`** on **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, **`CARD_VERSION`** on bundled card modules, and **`nodalia-cards-1.1.1-alpha.9.js`**. ### Fixed - **`nodalia-cover-card.js`:** add a one-shot scroll anchor around cover services, action taps, and slider commits so bottom-of-dashboard focus/re-render nudges are restored without blocking normal wheel/touch scrolling. ### Changed - **Release metadata:** bump the **`1.1.1`** prerelease line to **`1.1.1-alpha.9`**. --- ## [1.1.1-alpha.8] - 2026-05-15 Eighth **`1.1.1`** **`alpha`**: release channel **`1.1.1-alpha.8`** on **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, **`CARD_VERSION`** on bundled card modules, and **`nodalia-cards-1.1.1-alpha.8.js`**. ### Fixed - **`nodalia-cover-card.js`:** mirror the fan-card interaction path for cover action buttons and card/icon taps by removing the extra focus/capture handling from non-slider controls, while keeping custom drag handling only for sliders. - **`nodalia-power-flow-card.js`:** normalize SVG `animateMotion` paths relative to each connector start point so animated flow dots travel on the drawn line instead of the card edge. ### Changed - **Release metadata:** bump the **`1.1.1`** prerelease line to **`1.1.1-alpha.8`**. --- ## [1.1.1-alpha.7] - 2026-05-15 Seventh **`1.1.1`** **`alpha`**: release channel **`1.1.1-alpha.7`** on **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, **`CARD_VERSION`** on bundled card modules, and **`nodalia-cards-1.1.1-alpha.7.js`**. ### Changed - **`nodalia-cover-card.js`:** minimum dashboard width is **6 columns** (`min_columns: 6`); at **6 columns or less**, open/stop/close transport centers in a dedicated lane so it does not overlap the view-toggle button (grid + container query + `grid_options.columns`). --- ## [1.1.1-alpha.6] - 2026-05-15 Sixth **`1.1.1`** **`alpha`**: release channel **`1.1.1-alpha.6`** on **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, **`CARD_VERSION`** on bundled card modules, and **`nodalia-cards-1.1.1-alpha.6.js`**. ### Added - **`nodalia-light-card.js`:** optional quick **temperature** and **color** preset chip rows (with slider + mode buttons); up to **four** configurable color presets in the visual editor (label + color picker). Editor strings in **`i18n/editor/*`** and embedded **`nodalia-editor-ui.js`** catalog. ### Changed - **`nodalia-light-card.js`:** brightness / temperature / color quick presets are **centered** and only shown for the **active slider mode** (brightness, temperature, or color). - **`nodalia-cover-card.js`:** open / stop / close controls sit in a **pill transport bubble** (media-player style); arrow view centers controls with the mode toggle **overlaid** on the right. - **`nodalia-light-card.js`:** power-down animation no longer replays expanded controls when the panel was already collapsed (`auto_expand: false`). ### Fixed - **`nodalia-cover-card.js`:** open / stop / close, icon, and sliders no longer steal focus or nudge dashboard scroll — all controls use **`preventDefault`** on pointer/mouse down (like the view toggle), **`focusin`** only blurs without scroll snapshot restore, and click no longer calls **`button.blur()`**. - **`nodalia-power-flow-card.js`:** simple-layout flow dots and SVG SMIL dots no longer flash at the top-left on animation start — **`animation-fill-mode: both`**, hidden during entrance, initial **`cx`/`cy`** from path start, and dot groups stay hidden until motion unpause. --- ## [1.1.1-alpha.5] - 2026-05-12 Fifth **`1.1.1`** **`alpha`**: release channel **`1.1.1-alpha.5`** on **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, **`CARD_VERSION`** on bundled card modules, and **`nodalia-cards-1.1.1-alpha.5.js`**. ### Fixed - **`nodalia-power-flow-card.js`:** animated flow dots no longer flash in the card corner on first dashboard navigation — entrance **`animation-fill-mode`** is **`both`** (not **`forwards`**) so **`opacity: 0`** from the first keyframe applies during the CSS **`animation-delay`** before dots fade in. - **`nodalia-cover-card.js`:** tapping open / stop / close or the card chrome while the card is partly off-screen no longer nudges the dashboard scroll — **`focusin`** no longer pairs **`_rememberInteractionScroll`** with **`_scheduleInteractionScrollRestore`** for those controls (it fought the browser’s scroll-into-view after focus), and the same snapshot / restore calls were removed from their pointer / click paths; sliders still use the snapshot flow after **`hass`**-driven re-renders. ### Changed - **Release metadata:** bump the **`1.1.1`** prerelease line to **`1.1.1-alpha.5`**. --- ## [1.1.1-alpha.4] - 2026-05-12 Fourth **`1.1.1`** **`alpha`**: release channel **`1.1.1-alpha.4`** on **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, **`CARD_VERSION`** on bundled card modules, and **`nodalia-cards-1.1.1-alpha.4.js`**. ### Changed - **`nodalia-cover-card.js`:** when position or tilt sliders are shown, the main control row matches **fan card** / **light card** layout — **`fan-card__slider-row`** plus **`fan-card__slider-actions`** on the right toggles between **sliders** and **open / stop / close** ( **`mdi:tune-variant`** / **`mdi:pan-horizontal`** ), with **`fan-card__control--active`** while the arrow controls are visible. Runtime strings **`coverCard.toggleShowButtons`** and **`toggleShowSliders`** supply **`aria-label`** / **`title`**. --- ## [1.1.1-alpha.3] - 2026-05-12 Third **`1.1.1`** **`alpha`**: release channel **`1.1.1-alpha.3`** on **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, **`CARD_VERSION`** on bundled card modules, and **`nodalia-cards-1.1.1-alpha.3.js`**. ### Fixed - **`nodalia-power-flow-card.js`:** flow dots no longer occasionally flash at a card corner when animations resume — SVG **`unpauseAnimations`** is deferred by an extra animation frame after a layout read so **`animateMotion`** uses a stable geometry. - **`nodalia-utils.js` (`bindHostPointerHoldGesture`, synced standalone embeds):** long-press / **`hold_action`** no longer stops working after repeated use when Home Assistant modals stop event bubbling — **`pointerup`**, **`pointercancel`**, and **`pointermove`** are registered on **`window`** in the **capture** phase, and each primary-button **`pointerdown`** clears any stale tracking first. --- ## [1.1.1-alpha.2] - 2026-05-12 Second **`1.1.1`** **`alpha`**: release channel **`1.1.1-alpha.2`** on **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, **`CARD_VERSION`** on bundled card modules, and **`nodalia-cards-1.1.1-alpha.2.js`**. ### Fixed - **`nodalia-cover-card.js`:** taps on the main card / icon no longer nudge the dashboard scroll position — **`pointerdown`** / **`mousedown`** call **`_preventNonTouchFocus`** on body and icon zones (same pattern as the arrow controls), **`focusin`** blurs stray focus inside the shadow root when it is not a known **`coverAction`** / **`coverControl`**, and **`ha-card`** uses **`touch-action: manipulation`** to reduce touch-driven layout quirks. --- ## [1.1.1-alpha.1] - 2026-05-12 First **`1.1.1`** **`alpha`**: release channel **`1.1.1-alpha.1`** on **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, **`CARD_VERSION`** on bundled card modules, and **`nodalia-cards-1.1.1-alpha.1.js`**. ### Changed - **Hold actions:** cards that support long-press now default **`hold_action`** to **`more-info`** (native Home Assistant more-info dialog) instead of **`none`**, including **`nodalia-light-card`**, **`nodalia-fan-card`**, **`nodalia-entity-card`**, **`nodalia-humidifier-card`**, **`nodalia-cover-card`**, **`nodalia-insignia-card`**, and **`nodalia-vacuum-card`** (vacuum normalizes to **`more_info`** internally). Empty **`icon_hold_action`** continues to inherit the body hold, so icon and body match unless you override the icon explicitly. --- ## [1.1.0-alpha.27] - 2026-05-12 Twenty-seventh **`1.1.0`** **`alpha`**: release channel **`1.1.0-alpha.27`** on **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, **`CARD_VERSION`** on bundled card modules, and **`nodalia-cards-1.1.0-alpha.27.js`**. ### Fixed - **`nodalia-cover-card.js`:** do not call **`_restoreInteractionScrollSnapshot()`** after every **`hass`-driven** **`_render()`**; restore only after control taps and slider flows (matches fan card), avoiding scroll jumps that depended on dashboard scroll position. - **`nodalia-power-flow-card.js`:** avoid redundant **`_syncFlowMotionPause()`** when the render signature is unchanged on high-frequency **`hass`** updates. - **`nodalia-power-flow-card.js`:** clip flow layers (**`overflow: hidden`** on SVG and simple rail), use **opacity-only** dots entrance (no CSS scale on the dots SVG), and **defer `unpauseAnimations`** one frame so flow dots do not flash toward a corner after layout. --- ## [1.1.0-alpha.26] - 2026-05-12 Twenty-sixth **`1.1.0`** **`alpha`**: release channel **`1.1.0-alpha.26`** on **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, **`CARD_VERSION`** on bundled card modules, and **`nodalia-cards-1.1.0-alpha.26.js`**. ### Added - **`docs/STYLING.md`:** consolidated styling reference (Home Assistant theme variables, default radii, chips, sliders, climate/gauge accents, and **card-mod** examples) for matching Nodalia’s look on other Lovelace cards without editing card sources. ### Fixed - **`nodalia-graph-card.js`:** remove host **`pointerleave`** / **`mouseleave`** listeners on disconnect so dashboard navigation does not retain stale handlers. - **Render signatures:** cheaper fingerprints on **`nodalia-notifications-card.js`** (calendar rows + tracked entities), **`nodalia-power-flow-card.js`**, and **`nodalia-entity-card.js`**; avoid a duplicate **`parseCalibrationPoints`** read in **`nodalia-advance-vacuum-card.js`** signatures. ### Changed - **`nodalia-power-flow-card.js`:** pause SVG / simple-rail flow motion when the card leaves the viewport or the document is hidden (**`IntersectionObserver`** + **`visibilitychange`**). - **`nodalia-notifications-card.js`:** when disconnected from the DOM, skip heavy **`hass`** signature and refresh scheduling work. --- ## [1.1.0-alpha.25] - 2026-05-12 Twenty-fifth **`1.1.0`** **`alpha`**: release channel **`1.1.0-alpha.25`** on **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and **`CARD_VERSION`** on bundled card modules. ### Changed - **`nodalia-power-flow-card.js`:** YAML editor grid node uses **`ed.power_flow.node_grid_export_*`** strings for feed-in entity, color, and negative-value behavior instead of hardcoded English. - **`i18n/editor/*`:** translate editor catalog values that were still English in **`de`**, **`el`**, **`es`**, **`fr`**, **`it`**, **`nl`**, **`no`**, **`pt`**, **`ru`**, **`ro`**, and **`zh`** (entity picture, notifications tap/navigate/tank-full, Norwegian fan slider labels). - **Release metadata:** bump the **`1.1.0`** feature line to **`1.1.0-alpha.25`**. --- ## [1.1.0-alpha.24] - 2026-05-12 Twenty-fourth **`1.1.0`** **`alpha`**: release channel **`1.1.0-alpha.24`** on **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and **`CARD_VERSION`** on bundled card modules. ### Fixed - **`nodalia-power-flow-card.js`:** drop **shared grid–home hub** routing so each flow uses its own **`buildFlowPath`** again (clearer **90° arcs**, lines no longer merged on the trunk). - **`nodalia-power-flow-card.js`:** slightly **stronger arc** geometry in **`buildFlowPath`** (closer to alpha.21 visibility). - **`nodalia-power-flow-card.js`:** **shorter strip** when only **grid + home** (lower min-heights / mobile floors and a **flatter `aspect-ratio`** for that layout). ### Changed - **Release metadata:** bump the **`1.1.0`** feature line to **`1.1.0-alpha.24`**. --- ## [1.1.0-alpha.23] - 2026-05-12 Twenty-third **`1.1.0`** **`alpha`**: release channel **`1.1.0-alpha.23`** on **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and **`CARD_VERSION`** on bundled card modules. ### Fixed - **`nodalia-power-flow-card.js`:** restore a valid **`buildThroughHubConnector`** path (broken arc branch) so hub-routed lines render again. - **`nodalia-power-flow-card.js`:** **grid** value/label chips back **below** the grid node; drop unused left-chip layout. - **`nodalia-power-flow-card.js`:** **tighter vertical canvas** when solar + grid + home are active without battery or lower utilities (**`upperBandHubOnly`**: flatter aspect ratio, lower min-heights, slight solar/grid position nudge). - **`nodalia-power-flow-card.js`:** **surface padding** on full/compact diagrams to reduce chip clipping at card edges. ### Changed - **Release metadata:** bump the **`1.1.0`** feature line to **`1.1.0-alpha.23`**. --- ## [1.1.0-alpha.22] - 2026-05-12 Twenty-second **`1.1.0`** **`alpha`**: release channel **`1.1.0-alpha.22`** on **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and **`CARD_VERSION`** on bundled card modules. ### Fixed - **`nodalia-power-flow-card.js`:** route solar, battery, and grid↔battery flows through the **shared grid–home hub** so trunks overlap instead of parallel curves; stagger flow-dot motion when paths coincide. - **`nodalia-power-flow-card.js`:** reposition node chips (**solar/gas** above, **grid** left, **battery/water/individual** below) so labels no longer sit on top of flow lines. - **`nodalia-power-flow-card.js`:** **tighter diagram min-height** when only grid + home are shown (no solar/battery and no lower utilities). ### Changed - **Release metadata:** bump the **`1.1.0`** feature line to **`1.1.0-alpha.22`**. --- ## [1.1.0-alpha.21] - 2026-05-12 Twenty-first **`1.1.0`** **`alpha`**: release channel **`1.1.0-alpha.21`** on **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and **`CARD_VERSION`** on bundled card modules. ### Fixed - **`nodalia-power-flow-card.js`:** flow lines between nodes use a straight leg plus a single **90° arc** (orthogonal routing) instead of S-shaped cubics; grid–home stays a straight segment. - **`nodalia-power-flow-card.js`:** when only one of **grid / solar / battery** is configured and there are no lower-row utilities, the diagram surface uses a **shorter min-height** so a grid+house-only layout does not reserve the full diamond canvas height. - **`nodalia-cover-card.js`:** stop scroll snapshot/restore on **body/icon** taps and after every render so dashboard scroll no longer fights Home Assistant’s own scroll anchoring. ### Changed - **Release metadata:** bump the **`1.1.0`** feature line to **`1.1.0-alpha.21`**. --- ## [1.1.0-alpha.20] - 2026-05-14 Twentieth **`1.1.0`** **`alpha`**: release channel **`1.1.0-alpha.20`** on **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and **`CARD_VERSION`** on bundled card modules. ### Fixed - **`nodalia-cover-card.js`:** capture scroll state from the first pointer/touch event on body and icon taps, then restore it once after the tap and after re-render, preventing bottom-of-dashboard scroll jumps without locking normal scrolling. - **`nodalia-cover-card.js`:** hide the native range input rendering on the custom slider so mobile Safari no longer shows a transparent square thumb edge over the styled track. ### Changed - **Release metadata:** bump the **`1.1.0`** feature line to **`1.1.0-alpha.20`**. --- ## [1.1.0-alpha.19] - 2026-05-14 Nineteenth **`1.1.0`** **`alpha`**: release channel **`1.1.0-alpha.19`** on **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and **`CARD_VERSION`** on bundled card modules. ### Fixed - **`nodalia-alarm-panel-card.js`:** make `show_code_input: true` force the PIN field even when the alarm entity does not expose `code_format`, while the default `auto` mode still follows Home Assistant's code metadata. - **`nodalia-alarm-panel-card.js` editor:** mount icon pickers through the shared lazy host path so the visual editor loads more reliably as Home Assistant editor elements become available. ### Changed - **`nodalia-power-flow-card.js`:** restructure the main energy graph into a Home Assistant-style diamond layout with grid left, home right, solar above, battery below, gas/water aligned on the home column, and direct animated solar/grid plus battery/grid paths for export and charging flows. - **Release metadata:** bump the **`1.1.0`** feature line to **`1.1.0-alpha.19`**. --- ## [1.1.0-alpha.18] - 2026-05-14 Eighteenth **`1.1.0`** **`alpha`**: release channel **`1.1.0-alpha.18`** on **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and **`CARD_VERSION`** on bundled card modules. ### Added - **`nodalia-alarm-panel-card.js` / `nodalia-climate-card.js`:** add `show_entity_picture` and optional `entity_picture` support for custom `/local/...`, `/media/local/...`, and frontend image paths in the main visual bubble. - **Translations:** add [`docs/TRANSLATIONS.md`](./docs/TRANSLATIONS.md), a step-by-step guide for editing existing languages, adding new languages to the bundle, validating editor catalogs, testing in Home Assistant, and submitting translation PRs. ### Fixed - **`nodalia-alarm-panel-card.js`:** make typed PIN/code feedback visible in masked inputs across light/dark themes by forcing theme-safe text fill, caret color, opacity, and input layering. - **`nodalia-power-flow-card.js`:** correct grid-side import/export icon semantics so house import uses the grid export icon and house export uses the grid import icon. - **`nodalia-cover-card.js`:** preserve dashboard scroll for body/icon taps as well as control taps, preventing the bottom-of-page cover-card jump after a tap-triggered re-render. - **Localization:** route shared power-toggle accessibility labels through i18n instead of hardcoded Spanish strings. ### Changed - **Release metadata:** bump the **`1.1.0`** feature line to **`1.1.0-alpha.18`**. --- ## [1.1.0-alpha.17] - 2026-05-14 Seventeenth **`1.1.0`** **`alpha`**: release channel **`1.1.0-alpha.17`** on **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and **`CARD_VERSION`** on bundled card modules. ### Fixed - **Localization:** prefer Home Assistant profile language fields (**`selectedLanguage`** / **`locale.language`**) over stale legacy **`hass.language`**, preventing English dashboards from falling back to Spanish when `language: auto` is used. - **Runtime fallbacks:** replace remaining Spanish hardcoded fallback labels, accessibility labels, and card-picker descriptions across device, media, weather, notification, graph, navigation, and editor-adjacent paths with English/i18n-aware fallbacks. ### Changed - **Release metadata:** bump the **`1.1.0`** feature line to **`1.1.0-alpha.17`**. --- ## [1.1.0-alpha.16] - 2026-05-14 Sixteenth **`1.1.0`** **`alpha`**: release channel **`1.1.0-alpha.16`** on **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and **`CARD_VERSION`** on bundled card modules. ### Fixed - **`nodalia-climate-card.js`:** compact the five-button HVAC mode layout into a denser **3+2** stack with smaller controls and tighter dial spacing, so six-mode climate entities no longer spill below the card on narrow/mobile stacks. ### Changed - **Release metadata:** bump the **`1.1.0`** feature line to **`1.1.0-alpha.16`**. --- ## [1.1.0-alpha.15] - 2026-05-14 Fifteenth **`1.1.0`** **`alpha`**: release channel **`1.1.0-alpha.15`** on **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and **`CARD_VERSION`** on bundled card modules. ### Added - **`nodalia-notifications-card.js`:** add Home Assistant-style `tap_action` support for smart notification rules, per-entity smart overrides, and custom notifications, including **more info**, **navigate** (`navigation_path`, including `#popup` hashes), **URL**, and **toggle** actions while preserving the existing label/URL and custom service fallbacks. ### Changed - **Release metadata:** bump the **`1.1.0`** feature line to **`1.1.0-alpha.15`**. --- ## [1.1.0-alpha.14] - 2026-05-14 Fourteenth **`1.1.0`** **`alpha`**: release channel **`1.1.0-alpha.14`** on **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and **`CARD_VERSION`** on bundled card modules. ### Fixed - **`nodalia-cover-card.js`:** make taps on the card body and main icon follow the fan card interaction path, avoiding scroll anchoring/focus handling on those tap zones while keeping the smoother controls and slider behavior. ### Changed - **Release metadata:** bump the **`1.1.0`** feature line to **`1.1.0-alpha.14`**. --- ## [1.1.0-alpha.13] - 2026-05-14 Thirteenth **`1.1.0`** **`alpha`**: release channel **`1.1.0-alpha.13`** on **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and **`CARD_VERSION`** on bundled card modules. ### Fixed - **`nodalia-cover-card.js`:** replace the continuous post-click scroll restore with a one-shot render anchor that is cancelled as soon as the user scrolls, keeping Safari/Home Assistant focus jumps away without freezing dashboard navigation after pressing cover controls. ### Changed - **Release metadata:** bump the **`1.1.0`** feature line to **`1.1.0-alpha.13`**. --- ## [1.1.0-alpha.12] - 2026-05-14 Twelfth **`1.1.0`** **`alpha`**: release channel **`1.1.0-alpha.12`** on **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and **`CARD_VERSION`** on bundled card modules. ### Changed - **`nodalia-fan-card.js`, `nodalia-light-card.js`, `nodalia-vacuum-card.js`, `nodalia-humidifier-card.js`:** add `show_entity_picture` and optional `entity_picture` support so the main bubble can render an image/entity picture instead of an icon. - **Release metadata:** bump the **`1.1.0`** feature line to **`1.1.0-alpha.12`**. --- ## [1.1.0-alpha.11] - 2026-05-14 Eleventh **`1.1.0`** **`alpha`**: release channel **`1.1.0-alpha.11`** on **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and **`CARD_VERSION`** on bundled card modules. ### Fixed - **`nodalia-cover-card.js`:** cover buttons and sliders now preserve the current dashboard scroll position during Safari/Home Assistant focus and re-render cycles, preventing the view from jumping when the card is near the bottom of the dashboard. ### Changed - **Release metadata:** bump the **`1.1.0`** feature line to **`1.1.0-alpha.11`**. --- ## [1.1.0-alpha.10] - 2026-05-14 Tenth **`1.1.0`** **`alpha`**: release channel **`1.1.0-alpha.10`** on **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and **`CARD_VERSION`** on bundled card modules. ### Fixed - **`nodalia-cover-card.js` editor i18n:** add the missing slider style labels so the visual editor no longer shows raw keys such as **`ed.fan.style_slider_color`**. - **HACS resource loading:** publish a versioned, self-contained HACS entrypoint (**`nodalia-cards-1.1.0-alpha.10.js`**) so each alpha/stable update uses a fresh resource URL while **`nodalia-cards.js`** remains available as the direct fallback. ### Changed - **Release metadata:** bump the **`1.1.0`** feature line to **`1.1.0-alpha.10`**. --- ## [1.1.0-alpha.9] - 2026-05-14 Ninth **`1.1.0`** **`alpha`**: release channel **`1.1.0-alpha.9`** on **`package.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and **`CARD_VERSION`** on bundled card modules. ### Changed - **`nodalia-entity-card.js`:** add `show_entity_picture` and optional `entity_picture` support so the main bubble can render an image/entity picture instead of an icon. - **`nodalia-notifications-card.js`:** add full-tank smart notifications with a separate entity list and `thresholds.humidifier_fill_full`, allowing low clean-water tank alerts and full dirty-water/dehumidifier tank alerts to coexist. - **`README.md`:** add the Buy Me a Coffee support link and update prerelease references to **`1.1.0-alpha.9`**. - **Release metadata:** bump the **`1.1.0`** feature line to **`1.1.0-alpha.9`**. --- ## [1.1.0-alpha.8] - 2026-05-14 Eighth **`1.1.0`** **`alpha`**: release channel **`1.1.0-alpha.8`** on **`package.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and **`CARD_VERSION`** on bundled card modules. ### Fixed - **`nodalia-cover-card.js`:** pointer/touch interactions on cover controls no longer let buttons take browser focus, preventing dashboard scroll jumps when the card sits near the bottom of a view and re-renders after a service call. - **`nodalia-cover-card.js`:** card-wide taps and position/tilt slider drags now suppress native focus/scroll behavior across pointer, mouse, and touch input so interacting with the card does not jump the dashboard scroll position. ### Changed - **`nodalia-cover-card.js`:** position slider and open/stop/close controls swap rows, placing the position slider where the button row was and moving the buttons below it. - **`nodalia-power-flow-card.js`:** grid import/export chips now use semantic transmission-tower import/export icons instead of position-dependent arrows, and the battery node switches between charging, discharging, and full-charge icons when those states can be inferred. - **Release metadata:** bump the **`1.1.0`** feature line to **`1.1.0-alpha.8`**. --- ## [1.1.0-alpha.7] - 2026-05-14 Seventh **`1.1.0`** **`alpha`**: release channel **`1.1.0-alpha.7`** on **`package.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and **`CARD_VERSION`** on bundled card modules. ### Fixed - **`nodalia-cover-card.js`:** visual editor now follows the Fan Card editor structure more closely, including matching section actions, native **`ha-icon-picker`** mounting, Fan-style control hosts, haptic style selection, accent-color styling, card-radius helper hint, and consistent field/switch/color styling. - **`nodalia-cover-card.js`:** cover entity picker now mounts with a real **`cover`** domain filter instead of going through the generic picker path, avoiding heavy all-entity picker setup when adding the card on large Home Assistant installs. ### Changed - **Release metadata:** bump the **`1.1.0`** feature line to **`1.1.0-alpha.7`**. --- ## [1.1.0-alpha.6] - 2026-05-14 Sixth **`1.1.0`** **`alpha`**: release channel **`1.1.0-alpha.6`** on **`package.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and **`CARD_VERSION`** on bundled card modules. ### Changed - **`nodalia-power-flow-card.js`:** grid import/export no longer adds a separate secondary text such as **“A la red”** under the grid node. The grid value chip now shows a compact direction icon instead: left arrow for grid consumption and right arrow for feed-in/export. - **Release metadata:** bump the **`1.1.0`** feature line to **`1.1.0-alpha.6`**. --- ## [1.1.0-alpha.5] - 2026-05-14 Fifth **`1.1.0`** **`alpha`**: release channel **`1.1.0-alpha.5`** on **`package.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and **`CARD_VERSION`** on bundled card modules. ### Changed - **`nodalia-cover-card.js`:** removed the redundant bottom **Position / Tilt** readout below cover sliders because the percentage is already exposed in the top chip, keeping the card shorter and closer to the Fan Card layout. - **`nodalia-cover-card.js`:** aligned visual-editor color controls with the mature Nodalia editors, including the round swatch button, hidden native color input, CSS variable resolution, and alpha-preserving color writes. - **Release metadata:** bump the **`1.1.0`** feature line to **`1.1.0-alpha.5`**. --- ## [1.1.0-alpha.4] - 2026-05-14 Fourth **`1.1.0`** **`alpha`**: release channel **`1.1.0-alpha.4`** on **`package.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and **`CARD_VERSION`** on bundled card modules. ### Changed - **`nodalia-cover-card.js`:** rebuilt the new Cover Card around the same visual structure and editor conventions as **`nodalia-fan-card.js`**, with Nodalia-style hero, chips, controls, sliders, haptics, animations, tap/hold action sections, collapsible style/animation sections, entity/icon picker mounts, and cover-native open/close/stop/position/tilt services. - **Release metadata:** bump the **`1.1.0`** feature line to **`1.1.0-alpha.4`**. --- ## [1.1.0-alpha.3] - 2026-05-14 Third **`1.1.0`** **`alpha`**: release channel **`1.1.0-alpha.3`** on **`package.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and **`CARD_VERSION`** on bundled card modules. ### Changed - **`nodalia-power-flow-card.js`:** when a **home consumption** entity is configured, the card now derives the grid flow from home demand, solar production, and battery charge/discharge. The grid node appears automatically from the home entity, solar and battery can cover home demand before grid import is shown, solar surplus can charge the battery, grid charging of the battery is drawn as a dedicated grid → battery flow, and remaining surplus is shown as grid export. - **Release metadata:** bump the **`1.1.0`** feature line to **`1.1.0-alpha.3`**. --- ## [1.1.0-alpha.2] - 2026-05-14 Second **`1.1.0`** **`alpha`**: release channel **`1.1.0-alpha.2`** on **`package.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and **`CARD_VERSION`** on bundled card modules. ### Fixed - **Card picker registration:** repeated Lovelace resource loads now deduplicate **`window.customCards`** entries by card type, preventing Nodalia cards from appearing duplicated or triplicated in Home Assistant's “Add card” picker while keeping the new **`custom:nodalia-cover-card`** discoverable. ### Changed - **Release metadata:** bump the **`1.1.0`** feature line to **`1.1.0-alpha.2`**. --- ## [1.1.0-alpha.1] - 2026-05-14 First **`1.1.0`** **`alpha`**: release channel **`1.1.0-alpha.1`** on **`package.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and **`CARD_VERSION`** on bundled card modules. ### Added - **`nodalia-cover-card.js`:** new **`custom:nodalia-cover-card`** for Home Assistant **`cover`** entities, with open/stop/close controls, current state and position chips, optional position and tilt sliders, compact layout handling, icon animation for moving covers, visual editor support, and Nodalia-style tokens. - **`nodalia-power-flow-card.js`:** grid feed-in visual state for solar/export setups. The grid node now supports a dedicated **`entities.grid.export_entity`** sensor, **`entities.grid.export_color`**, and **`entities.grid.export_when_negative`** for net-power sensors. When export is active, the grid line reverses direction, uses the feed-in color, and shows the exported value as a positive amount. ### Changed - **Release metadata:** start the **`1.1.0`** feature line as **`1.1.0-alpha.1`**. --- ## [1.0.0-alpha.96] - 2026-05-12 Ninety-sixth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.96`** (tag **`v1.0.0-alpha.96`** optional). - **Nodalia Advance Vacuum card (`0.13.13`):** **Zone** mode no longer shows the extra **zone-count** selection chip in the modes panel (less vertical clutter). **Map raster URL** cache busting uses only the **map entity** **`last_updated` / `last_changed`** (not vacuum position / room id), so the image URL stays stable while the robot state updates and the **background no longer reloads every tick** during cleaning. When the map **does** update, **`stripMapCacheBuster`** reuses the same **``** if the logical URL matches, and crossfades use **`is-pending` from first paint** plus explicit **`z-index`** so the previous frame stays visible under the new layer until the fade completes. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.96`**. --- ## [1.0.0-alpha.95] - 2026-05-12 Ninety-fifth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.95`** (tag **`v1.0.0-alpha.95`** optional). - **Nodalia Advance Vacuum card (`0.13.12`):** footer **three-button** row uses **grid slots** (left / center / right); **modes** and **dock** toggles use **`is-panel-open`** (fixed **`controlSize`**) while only the **main action** uses **`advance-vacuum-card__control--primary`**, so side buttons no longer **grow to match the center** when a utility panel is open; **subtle** press bounce on non-primary controls. **`:host`** **`--av-*` design tokens** unify surfaces, borders, inset highlights, shadows, **accent hover**, and **selected** states across **circular controls**, the **modes** pill, **map** frame and tools, **zone handles**, **room / goto markers**, **room chips**, **utility** options and selects, **selection chips**, and **routine** tiles. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.95`**. --- ## [1.0.0-alpha.94] - 2026-05-12 Ninety-fourth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.94`** (tag **`v1.0.0-alpha.94`** optional). - **Insignia card (`0.2.14`):** header **scroll** rows that do **not** set **`--insignia-scroll-strip-*`** still get safe vertical space — **`:host`** now defaults to **`padding-block: 4px 6px`** and **`align-self: center`** so pills and shadows are not clipped at the bottom. - **Nodalia Advance Vacuum card:** persistence **`console.warn`** messages are **English** (internal logs); the **visual editor** routes labels through **`ed.advance_vacuum.*`** plus shared **`ed.entity.*`**, **`ed.vacuum.*`**, and **`ed.weather.*`** keys (**`scripts/data/editor-catalog-advance-vacuum.json`**, merged into **`i18n/editor/*.json`**); **`window.customCards`** description is **English**. - **Fan / Humidifier cards:** active-icon keyframes (**`fan-card-icon-spin`**, **`humidifier-card-icon-breathe`**) use **`translate3d`** so transforms stay consistent with the base **`ha-icon`** style and compositor promotion during animation. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.94`**. --- ## [1.0.0-alpha.93] - 2026-05-12 Ninety-third **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.93`** (tag **`v1.0.0-alpha.93`** optional). - **Insignia card (`0.2.13`):** horizontal **scroll** strips no longer clip pills at the bottom — **`padding-block`** from **`--insignia-scroll-strip-*`** applies to **all** pills (not only icon-only), and the pill surface uses **`overflow: visible`** so **`box-shadow`** is not cut off. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.93`**. --- ## [1.0.0-alpha.92] - 2026-05-11 Ninety-second **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.92`** (tag **`v1.0.0-alpha.92`** optional). - **Visual editor i18n:** Climate (legacy and main) and Alarm panel editors route labels through **`ed.climate.*`**, **`ed.alarm_panel.*`**, and shared catalog keys (**`ed.entity.*`**, **`ed.person.*`**, **`ed.fav.alarm_*`**, **`ed.weather.*`**, etc.); new strings live in **`scripts/data/editor-catalog-climate-alarm.json`** (merged into **`i18n/editor/*.json`**). - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.92`**. --- ## [1.0.0-alpha.91] - 2026-05-11 Ninety-first **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.91`** (tag **`v1.0.0-alpha.91`** optional). - **Visual editor i18n:** Entity, Person, and Vacuum card editors route labels through **`ed.entity.*`**, **`ed.person.*`**, **`ed.vacuum.*`**, and shared **`ed.weather.*`** keys (catalog entries merged into all **`i18n/editor/*.json`** locales). - **Tests:** release-candidate smoke accepts **`ed.vacuum.icon_animation_active`** for the vacuum editor’s icon-animation checkbox guard. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.91`**. --- ## [1.0.0-alpha.90] - 2026-05-11 Ninetieth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.90`** (tag **`v1.0.0-alpha.90`** optional). - **Editor catalog i18n:** full locale files for **`de`**, **`fr`**, **`it`**, **`nl`**, **`pt`**, **`ru`**, **`el`**, and **`ro`** under **`i18n/editor/`**, matching the editor catalog languages embedded in **`nodalia-editor-ui.js`** (same keys as **`en.json`**; machine-translated from English where no hand-maintained file existed). - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.90`**. --- ## [1.0.0-alpha.89] - 2026-05-11 Eighty-ninth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.89`** (tag **`v1.0.0-alpha.89`** optional). - **Notifications card — entrance timing:** `_animateContentOnNextRender` is cleared after the content animation window (`_scheduleEntranceAnimationReset`, same pattern as Entity), so a quick follow-up render (calendar/weather hydration) no longer strips `notifications-card--enter` before the first paint. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.89`**. --- ## [1.0.0-alpha.88] - 2026-05-11 Eighty-eighth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.88`** (tag **`v1.0.0-alpha.88`** optional). - **Editor i18n — generator fixes:** compact `Show` / `Enable` / `Open` shims in `gen-editor-ui.mjs` now apply full-phrase matches before prefix rules (no more `Aktivieren: animations`, `Öffnen: URL in new tab`, etc.); sentences with a period skip those shims so long hints are not mangled. - **Editor i18n — layout strings:** `FULL_LOCALE_BY_EN` adds full translations for common geometry/control seeds (chip/slider/chart heights, bubble width, color controls, icon fit, etc.). - **Editor i18n — Show… labels:** `generate-extra-locale-by-en.mjs` now emits **de / it / nl / fr** for every former French-only “Show …” row so German/Dutch/Italian editors no longer show `Anzeigen: …` English tails. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.88`**. --- ## [1.0.0-alpha.87] - 2026-05-11 Eighty-seventh **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.87`** (tag **`v1.0.0-alpha.87`** optional). - **Editor i18n — exhaustive cleanup pass:** large legacy blocks that still leaked Spanish in non-ES locales are now translated across all supported languages (badge/action/help/style/position/subtitle/navigation animation toggles, and related editor copy). - **Editor i18n — stricter consistency:** duplicate legacy variants (`Subtitulo`/`Subtítulo`, `Posicion`/`Posición`, etc.) now resolve to the same localized output to avoid mixed-language drift. - **Notifications card — navigation entrance trigger:** route-aware replay keeps entry animation consistent on dashboard navigation/reload while preserving anti-flicker safeguards. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.87`**. --- ## [1.0.0-alpha.86] - 2026-05-11 Eighty-sixth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.86`** (tag **`v1.0.0-alpha.86`** optional). - **Notifications card — entrance behavior refined:** keeps entrance animation on dashboard navigation (like Entity/Weather) while avoiding intermittent double-trigger flicker during rapid visibility transitions. - **Editor i18n — global fallback hardening:** `editorStr` now resolves stronger exact-locale fallbacks when legacy rows still echo Spanish in non-ES languages, reducing mixed-language labels in visual editors. - **Icon animation performance pass (Weather/Fan/Humidifier/Vacuum):** icon motion paths are promoted to compositor-friendly transforms (`translate3d/translateZ`, `will-change`, `backface-visibility`) and weather storm effect avoids expensive filter animation, reducing long-session stutter. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.86`**. --- ## [1.0.0-alpha.85] - 2026-05-11 Eighty-fifth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.85`** (tag **`v1.0.0-alpha.85`** optional). - **Weather card — editor units:** visual editor now includes unit system presets (`European/metric`, `US/imperial`) plus explicit overrides for temperature (`°C/°F`) and wind (`km/h`/`mph`), with runtime conversion applied to main values and forecast views. - **Editor i18n coverage:** adds complete multi-language exact overrides (including punctuation/dirty variants) for remaining labels like `Event size`, `Accent color (when automatic tinting is disabled)`, vacuum mode visibility/help, and calendar action haptic feedback texts. - **Calendar + Notifications robustness:** webhook native event creation now shows inline errors on failure; calendar refresh paths clear stale event state on load errors to avoid ghost entries. - **Notifications mobile delivery:** mobile sent markers are persisted only when at least one delivery channel succeeds. - **Global perf/stability pass:** locale string merging is cached in `nodalia-i18n` to reduce allocation churn; notifications render signature avoids full attribute stringify; climate drag window listeners are attached only during active drags. - **Notifications entrance animation fluidity:** entrance animation still plays on dashboard navigation/reopen, but anti-replay guards remove intermittent flicker on hard reloads and rapid visibility transitions. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.85`**. --- ## [1.0.0-alpha.84] - 2026-05-11 Eighty-fourth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.84`** (tag **`v1.0.0-alpha.84`** optional). - **Visual editors — i18n exacta:** se traducen y normalizan más textos que aún aparecían mezclados (`Allowed services (comma-separated)`, `Chip Padding`, `Intensity`, `Mode panel (ms)`, `Tooltip and hover (ms)`, `Disarmed/Away/Home/Night/Vacation/Custom/Arming/Pending/Triggered tint`, etc.). - **Visual editors — robustez en literales importados:** se añaden variantes con puntuación residual (`;`, comas y frases largas) para que el normalizador convierta automáticamente esas cadenas al texto localizado correcto. - **Energy / Gauge / Climate / Vacuum editor labels:** se cubren más aliases de campos y ayudas (`Casa`, `Solar`, `Batería`, `Agua`, `Gas`, `Numeric entity`, `Dial (ms)`, `Minimum/Maximum gauge tint`, `Gauge track`, `Climate entity`, `Modos de aspirado/mopa visibles` y descripciones relacionadas). - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.84`**. --- ## [1.0.0-alpha.83] - 2026-05-11 Eighty-third **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.83`** (tag **`v1.0.0-alpha.83`** optional). - **Calendar card — UI de repetición personalizada:** los campos de frecuencia e intervalo numérico quedan ocultos salvo cuando el selector está en `Personalizado`. - **Calendar card — detalle legible de repetición:** la ficha de evento ya no muestra `RRULE` cruda (`FREQ=...`); ahora enseña etiqueta normalizada (`Diariamente`, `Semanalmente`, `Mensualmente`, `Anualmente` o `Personalizado`). - **Advance Vacuum — persistencia segura en overflow:** si la sesión compartida supera el límite del helper incluso en modo mínimo, se cancela la escritura remota para evitar limpiar accidentalmente `input_text`. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.83`**. --- ## [1.0.0-alpha.82] - 2026-05-11 Eighty-second **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.82`** (tag **`v1.0.0-alpha.82`** optional). - **Calendar card — repetición nativa corregida:** la creación recurrente por `calendar/event/create` usa `dtstart`/`dtend` (en vez de `start`/`end`), corrigiendo el error de Home Assistant al crear eventos con repetición. - **Calendar card — nueva opción `Personalizado`:** el selector de repetición añade modo personalizado con frecuencia (`Diariamente`, `Semanalmente`, `Mensualmente`, `Anualmente`) e intervalo numérico (`INTERVAL`) para reglas como “cada 2 semanas”. - **Calendar card — validación del composer:** el formulario valida frecuencia e intervalo en repetición personalizada y muestra errores inline antes de enviar. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.82`**. --- ## [1.0.0-alpha.81] - 2026-05-09 Eighty-first **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.81`** (tag **`v1.0.0-alpha.81`** optional). - **Notifications card — stack compacto:** el solape plegado conserva el paso visual de las capas traseras y solo compensa ligeramente la primera capa oculta para que la segunda notificación asome igual que las siguientes. - **Notifications card — reserva compacta:** el stack plegado reduce de nuevo la altura extra reservada para acercar la siguiente tarjeta sin tocar el dibujo visual de las capas. - **Notifications card — reserva compacta final:** se recorta otro tramo de reserva vertical en modo compacto para eliminar el aire restante bajo el stack. - **Notifications card — animación de entrada:** ya no se relanza al hacer scroll dentro del mismo panel; solo se repite cuando la tarjeta vuelve desde un ocultado de layout/vista o al recargar/volver la pestaña. - **Calendar card — i18n runtime:** las pantallas visibles del calendario, detalle, vacío y creación de evento usan claves de traducción propias (`calendarCard`) en lugar de literales directos. - **Calendar card — formulario multidioma:** el formulario de creación, botones, campos, repetición, estados vacíos y errores ya tienen traducciones completas en todos los idiomas del bundle. - **Visual editors — i18n exacta:** se traducen más etiquetas y ayudas que llegaban como literales en inglés, sin tilde o incluso en chino (`Main`, `Offset`, `Button size`, `Media player background`, `最小高度`, etc.) en navegación, media player, badges, energía, climate, alarma, calendario y tarjetas de entidad. - **Visual editors — i18n exacta ampliada:** se cubren literales pendientes como `Mensaje`, `Severidad`, `Texto visible`, `temperature`, `Main action`, `Tap service`, `Tap URL`, `Fixed PIN`, `Code helper`, `Chip Padding` y `Bubble size` en todos los idiomas del bundle. - **Visual editors — i18n exacta extendida:** se completan más ayudas y opciones (`Player background`, `Modos de aspirado visibles`, `Modos de mopa visibles`, `Main visual settings for the card.`, `Automatic (toggle or info)`, `Pin to screen`, `Also show on desktop`, etc.) con traducción en todos los idiomas del bundle. - **Visual editors — i18n de cobertura:** el normalizador aplica traducciones por valor inglés a entradas heredadas del mapa base, cubriendo más etiquetas antiguas de estilos, paneles, sensores, controles y acciones que aún caían en inglés en idiomas no españoles. - **Notifications card — i18n de avisos inteligentes:** se completan títulos, mensajes y acciones de calor, frío, lluvia, multimedia sin presencia, batería, depósito y tinta baja en todos los idiomas oficiales del bundle. - **Visual editors — i18n de avisos inteligentes:** los textos editables de notificaciones inteligentes y acciones heredadas (`Navigate`, `Call service`, `Default`, `Service`, etc.) ya pasan por filas exactas multidioma. - **Visual editors — consistencia:** la Insignia Card usa el mismo bloque plegable **Estilos** / **Mostrar ajustes de estilo** que el resto de editores, y el normalizador español corrige más tildes heredadas en etiquetas antiguas. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.81`**. --- ## [1.0.0-alpha.77] - 2026-05-09 Seventy-seventh **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.77`** (tag **`v1.0.0-alpha.77`** optional). - **Notifications card — stack plegado con altura propia:** las capas traseras se miden contra la lista real de notificaciones y la tarjeta reserva más espacio cuando hay varias apiladas, evitando colisiones con la tarjeta inferior. - **Notifications card — preview trasero más discreto:** el offset/opacidad del stack se suaviza para que la segunda notificación no asome más de la cuenta. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.77`**. --- ## [1.0.0-alpha.76] - 2026-05-09 Seventy-sixth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.76`** (tag **`v1.0.0-alpha.76`** optional). - **Notifications editor — alta de notificaciones personalizadas:** el botón **Añadir notificación** vuelve a crear una fila editable inmediatamente; las filas nuevas se mantienen como borrador local y no se guardan como aviso real hasta que tengan título, mensaje o entidad. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.76`**. --- ## [1.0.0-alpha.75] - 2026-05-09 Seventy-fifth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.75`** (tag **`v1.0.0-alpha.75`** optional). - **Vacuum card — errores Roborock reales:** nueva entidad auxiliar `error_entity` y autodetección de sensores `sensor.*error*`; los códigos como `main_brush_jammed`, `lidar_blocked`, `filter_blocked`, `return_to_dock_fail` o `audio_error` se muestran como estado legible/traducido y tintan la tarjeta como error. **`nodalia-vacuum-card.js`** `0.6.5`. - **Notifications card — errores de robot traducidos:** nueva lista `vacuum_error_entities`; si el robot o un sensor auxiliar expone un fallo real, el aviso pasa a crítico con el texto del error en vez de caer en “robot pausado” o estados genéricos. - **Notifications card — recomendaciones por área:** se añaden `media_player_entities`, `climate_entities` y `humidifier_entities`; la tarjeta puede recomendar apagar multimedia encendido en una estancia sin presencia, activar frío/calor en un climate compatible y encender un deshumidificador del mismo área cuando la humedad sea alta. - **Visual editors / i18n:** nuevos campos y etiquetas para sensores de error, climates, humidificadores/deshumidificadores, media players y minutos sin presencia. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.75`**. --- ## [1.0.0-alpha.74] - 2026-05-09 Seventy-fourth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.74`** (tag **`v1.0.0-alpha.74`** optional). - **Notifications card — stack tipo baraja:** las capas plegadas se anclan siempre por debajo de la notificación principal, formando una escalera de hasta cuatro tarjetas donde cada aviso oculto asoma solo un poco más que el anterior. - **Notifications card — carga estable:** las tarjetas decorativas del stack ya no ejecutan la animación de entrada de contenido, evitando que una capa trasera sobresalga por arriba durante los primeros frames al abrir la pestaña. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.74`**. --- ## [1.0.0-alpha.73] - 2026-05-09 Seventy-third **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.73`** (tag **`v1.0.0-alpha.73`** optional). - **Humidifier card — icono de deshumidificador:** `device_class: dehumidifier` usa `mdi:air-humidifier-off` solo cuando está apagado; al encender vuelve a `mdi:air-humidifier` y mantiene la animación activa. **`nodalia-humidifier-card.js`** `0.6.6`. - **Advance Vacuum card — animación corregida:** se evita animar el botón primario cuando la limpieza está activa, ya que el icono mostrado es `pause` y no representa el robot en movimiento. **`nodalia-advance-vacuum-card.js`** `0.13.11`. - **Vacuum card — icono activo animado:** se añade `animations.icon_animation` al editor y al runtime; el icono principal del robot se mueve en arco mientras limpia, respetando `animations.enabled` y `prefers-reduced-motion`. **`nodalia-vacuum-card.js`** `0.6.4`. - **Visual editors — i18n polish:** nueva tanda de traducciones exactas para acciones, etiquetas, selectores, condiciones, colores, insignias y textos comunes que aún podían caer a literal/inglés. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.73`**. --- ## [1.0.0-alpha.72] - 2026-05-09 Seventy-second **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.72`** (tag **`v1.0.0-alpha.72`** optional). - **Visual editors — i18n alias propagation:** los overrides exactos ahora se aplican también a variantes generadas por la tabla base, corrigiendo casos como `Presets de brillo`, `Botones de modo junto al slider`, burbujas/chips/sliders y opciones haptics que antes podían caer a inglés en otros idiomas. - **Light / Humidifier / Power Flow editors:** los campos especiales de entidad/color vuelven a pasar sus labels por `editorStr`, evitando etiquetas crudas como `Entidad de luz` en locales no españoles. - **Editor i18n — cobertura adicional:** se añaden traducciones multidioma para acciones, niveles haptics, máximos/mínimos, nombres visibles, horas/días visibles, selectores vacuum y controles comunes. - **Card versions:** **`nodalia-light-card.js`** `0.7.5`, **`nodalia-humidifier-card.js`** `0.6.5`, **`nodalia-power-flow-card.js`** `0.16.14`. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.72`**. --- ## [1.0.0-alpha.71] - 2026-05-09 Seventy-first **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.71`** (tag **`v1.0.0-alpha.71`** optional). - **Visual editors — i18n sweep:** se añaden overrides exactos en todos los idiomas soportados para claves pendientes de Notifications, Advance Vacuum y Light (`Máximo visible plegado`, ajustes por entidad, acciones, sensores auxiliares, haptics, animaciones, modos, colores de estado, chips y controles de estilo). - **Editor i18n — regresión cubierta:** se amplían los tests para detectar etiquetas literales como `Name`, `Button bounce (ms)`, colores de vacuum y `Color icono apagada` antes de publicar. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.71`**. --- ## [1.0.0-alpha.70] - 2026-05-09 Seventieth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.70`** (tag **`v1.0.0-alpha.70`** optional). - **Fan / Humidifier / Weather / Advance Vacuum — iconos vivos:** nuevo toggle visual `animations.icon_animation` para animar iconos activos; el ventilador gira, el humidificador respira con vapor, Weather anima lluvia/nieve/sol/viento/nubes/tormenta según condición y Advance Vacuum mueve el icono principal en arco mientras limpia. Respeta `animations.enabled` y `prefers-reduced-motion`. - **Notifications card — estado vacuum traducido:** los avisos del robot ya traducen estados como `cleaning` mediante el i18n compartido de Advance Vacuum antes de renderizar el mensaje. - **Editor i18n:** se añaden traducciones para los nuevos toggles de animación de icono en todos los idiomas soportados. - **Card versions:** **`nodalia-fan-card.js`** `0.6.4`, **`nodalia-humidifier-card.js`** `0.6.4`, **`nodalia-weather-card.js`** `0.12.5`, **`nodalia-advance-vacuum-card.js`** `0.13.10`. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.70`**. --- ## [1.0.0-alpha.69] - 2026-05-08 Sixty-ninth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.69`** (tag **`v1.0.0-alpha.69`** optional). - **Editor i18n — consolidación:** se elimina el bloque alemán duplicado `EDITOR_EXACT_OVERRIDES`; las traducciones exactas quedan en una única tabla multidioma para reducir bundle y mantenimiento. - **Editor i18n — seguridad defensiva:** la expansión de aliases ignora filas sin `keys`/`key` en lugar de crear entradas `undefined`. - **Weather card — locale robusta:** `formatForecastDateTime` ya no pasa `auto` a `toLocaleTimeString` / `toLocaleDateString`; usa `undefined` cuando debe delegar en la locale del navegador. - **Calendar / Notifications i18n:** se confirma `allDay` en el mapa compartido `translateNotificationsUi` para todos los idiomas soportados y se corrige el fallback español sin tilde. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.69`**. --- ## [1.0.0-beta.7] - 2026-05-08 Seventh public **`beta`** candidate for **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-beta.7`** (Git tag **`v1.0.0-beta.7`** recommended for HACS/GitHub Releases). - **Visual editors — i18n completo en overrides exactos:** la capa que corrige etiquetas escapadas (`Mode buttons next to slider`, `Use album art as background`, `Main entity`, `Posición del estado`, tamaños, chips, browser/player, etc.) pasa de ser solo alemana a cubrir todos los idiomas soportados (`es`, `en`, `de`, `fr`, `it`, `nl`, `pt`, `ru`, `el`, `zh`, `ro`). - **Release metadata:** bump beta channel references and bundle version metadata to **`1.0.0-beta.7`**. --- ## [1.0.0-beta.6] - 2026-05-08 Sixth public **`beta`** candidate for **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-beta.6`** (Git tag **`v1.0.0-beta.6`** recommended for HACS/GitHub Releases). - **Weather card — días por idioma:** las etiquetas de previsión diaria/horaria usan la locale resuelta de Home Assistant/configuración, evitando que sigan apareciendo `vie.`, `mié.`, etc. cuando el panel está en alemán u otro idioma. **`nodalia-weather-card.js`**: `CARD_VERSION` **0.12.4**. - **Calendar card — todo el día traducible:** los eventos de día completo usan el texto i18n compartido en lista, detalle y composer, en lugar de dejar `Todo el día` fijo. - **Editores visuales — barrido alemán ampliado:** se añaden overrides exactos para textos que todavía aparecían mezclados en Light, Fan, Advance Vacuum, Media Player, Entity y estilos comunes (`Background`, `Mode buttons next to slider`, `Use album art as background`, `Main entity`, `Posición del estado`, etc.). - **Release metadata:** bump beta channel references and bundle version metadata to **`1.0.0-beta.6`**. --- ## [1.0.0-beta.5] - 2026-05-08 Fifth public **`beta`** candidate for **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-beta.5`** (Git tag **`v1.0.0-beta.5`** recommended for HACS/GitHub Releases). - **Calendar / Notifications editors — i18n ampliado:** se añaden traducciones explícitas para las cadenas pendientes del editor visual en todos los idiomas soportados, incluyendo secciones, hints, botones, listas de entidades, umbrales, sincronización móvil, seguridad, estilos y controles de calendario. - **German editor polish:** se corrigen traducciones generadas que aparecían en inglés o mezcladas (`Card border`, `Move up`, `Move down`, `Delete`, `Animations`) y se reemplazan por alemán real dentro del mapa común. - **Spanish source polish:** se corrigen textos fuente restantes sin tilde (`Frío`, `Alertas críticas`, `Severidad mínima`, `Mostrar ajustes hápticos`, `tipografía`, etc.). - **Release metadata:** bump beta channel references and bundle version metadata to **`1.0.0-beta.5`**. --- ## [1.0.0-beta.2] - 2026-05-08 Second public **`beta`** candidate for **`1.0.0`**, promoted from **`1.0.0-alpha.68`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-beta.2`** (Git tag **`v1.0.0-beta.2`** recommended for HACS/GitHub Releases). - **Notifications card — i18n completo:** los textos runtime de avisos inteligentes se traducen en todos los idiomas soportados (`es`, `en`, `de`, `fr`, `it`, `nl`, `pt`, `ru`, `el`, `zh`, `ro`) y el español recupera tildes/ñ en títulos, mensajes, acciones y etiquetas ARIA. - **Calendar / Notifications editors — traducción visual:** se refuerzan las etiquetas del editor visual de las dos tarjetas nuevas, incluyendo conexiones inteligentes, ajustes por entidad, notificaciones personalizadas, móvil, calendarios y mensajes vacíos. - **Spanish editor polish:** normalización ampliada para `notificación`, `móvil`, `batería`, `depósito`, `previsión`, `días`, `envío` y textos relacionados. - **Release metadata:** bump beta channel references and bundle version metadata to **`1.0.0-beta.2`**. --- ## [1.0.0-alpha.68] - 2026-05-08 Sixty-eighth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.68`** (tag **`v1.0.0-alpha.68`** optional). - **Notifications card — stack plegado corregido:** la notificación más reciente vuelve a quedar siempre en primer plano; las tarjetas traseras se renderizan como capas decorativas por debajo, con menor opacidad, sin capturar clics y mostrando algo menos de borde inferior. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.68`**. --- ## [1.0.0-alpha.67] - 2026-05-08 Sixty-seventh **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.67`** (tag **`v1.0.0-alpha.67`** optional). - **Notifications card — stack compacto 4 capas:** el modo plegado muestra hasta cuatro tarjetas traseras, subidas y más discretas, limitando el stack visual a cuatro capas aunque haya más avisos para reducir altura y ruido visual. - **Notifications card — alertas críticas legacy:** nueva opción `mobile_notifications.critical_alerts`; cuando se activa y el aviso tiene severidad `critical`, los servicios legacy `notify.mobile_app_*` reciben payload crítico iOS/Android (`push.sound.critical`, `ttl: 0`, `priority: high`, `channel: alarm_stream`). Las entidades modernas `notify.*` siguen usando `notify.send_message` sin `data` por compatibilidad con HA. - **Notifications card — auditoría ligera:** se mantiene el comportamiento por defecto y se refuerzan tests para el stack, ausencia de chip `source` automático y payload crítico opt-in. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.67`**. --- ## [1.0.0-alpha.66] - 2026-05-08 Sixty-sixth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.66`** (tag **`v1.0.0-alpha.66`** optional). - **Notifications card — chips inteligentes:** los avisos ya no añaden automáticamente la entidad/fuente como chip cuando el mensaje personalizado omite `{source}`; el texto configurado se respeta literalmente y solo se mantienen chips de severidad cuando aplican. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.66`**. --- ## [1.0.0-alpha.65] - 2026-05-08 Sixty-fifth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.65`** (tag **`v1.0.0-alpha.65`** optional). - **Calendar card — solo persistencia nativa:** se elimina por completo el sistema de marcado/completados, `localStorage`, helpers `input_text` y webhook de completados; para quitar eventos se usa únicamente el borrado nativo de Home Assistant (`calendar/event/delete`) cuando el calendario lo soporta. - **Calendar card — editor más limpio:** desaparecen las opciones de completados compartidos y el editor solo muestra creación/borrado de eventos nativos, forecast, tintado, haptics y estilo. - **Insignia card — scroll sin recorte:** las insignias icon-only ganan aire inferior por defecto en barras con scroll para evitar que el borde/sombra quede cortado. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.65`**. --- ## [1.0.0-alpha.64] - 2026-05-08 Sixty-fourth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.64`** (tag **`v1.0.0-alpha.64`** optional). - **Notifications card — animación de entrada:** la clase de entrada se mantiene durante la duración real de la animación para que Home Assistant no la elimine en un re-render inmediato antes del primer paint; vuelve a reproducirse al entrar en la vista. - **Notifications card — auditoría preestable:** mantiene la corrección del editor por entidad y refuerza cobertura para evitar regresiones en overrides y animaciones. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.64`**. --- ## [1.0.0-alpha.63] - 2026-05-08 Sixty-third **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.63`** (tag **`v1.0.0-alpha.63`** optional). - **Notifications card — pila compacta:** las tarjetas traseras del modo plegado suben y quedan más discretas bajo la principal, reduciendo el hueco visual inferior. - **Notifications card — overrides por entidad:** los avisos inteligentes ahora permiten personalizar por entidad concreta el título, mensaje, color, URL, etiqueta de acción y política móvil (`heredar`, `enviar siempre`, `no enviar`), manteniendo como base la configuración por tipo. - **Notifications card — editor:** cambiar varias veces el color de tintado de un override por entidad actualiza siempre esa misma entidad, sin quedarse bloqueado en el primer color guardado. - **Navigation Bar:** se conservan fallbacks de tema para el toggle de media player si configuración y defaults quedan vacíos. - **Advance Vacuum:** la persistencia solo por webhook deduplica también la sesión vacía para evitar POST redundantes. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.63`**. --- ## [1.0.0-beta.1] - 2026-05-08 First public **`beta`** candidate for **`1.0.0`**, promoted from the full **`1.0.0-alpha.1` → `1.0.0-alpha.62`** cycle. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-beta.1`** (Git tag **`v1.0.0-beta.1`** recommended for HACS/GitHub Releases). ### Resumen rápido | Área | Qué cambia en `1.0.0` | |------|------------------------| | **Calendario** | Eventos nativos de Home Assistant, popup grande, forecast moderno, composer más completo y borrado nativo persistente. | | **Notificaciones** | Nueva tarjeta `custom:nodalia-notifications-card` con avisos inteligentes, pila expandible, descartes persistentes, notificaciones móviles y editor visual. | | **Vacuum / Advance Vacuum** | Mejor sincronización compartida con `input_text`, paneles de modo/utilidades persistentes y acciones más seguras. | | **Editores visuales** | Selectores nativos de HA, color pickers consistentes, secciones plegables y controles más compactos. | | **Bundle / HACS** | Entrypoint más robusto, diagnóstico de versión/hash y menos problemas con caché tras redescargar. | | **Seguridad / rendimiento** | Allowlist de servicios, URLs saneadas, render signatures más selectivas y bundle minificado. | ### Lo nuevo más importante - **Calendar card renovada:** crea eventos reales con `calendar/event/create`, soporta descripción, ubicación, recurrencia básica y color propio guardado como metadato Nodalia; también permite borrar eventos nativos cuando HA expone `calendar/event/delete`. - **Vista de calendario más rica:** el popup ampliado muestra detalle del evento, calendario, horario, repetición, ubicación, descripción y chips de tiempo/forecast cuando existen datos disponibles. - **Forecast compatible con HA moderno:** usa `weather/subscribe_forecast` y fallback por `weather/get_forecasts`, priorizando previsiones con más días futuros para evitar quedarse solo con "hoy". - **Notifications card nueva:** centro inteligente de avisos con estado vacío agradable, pila compacta/expandible, capas tintadas, chips de fuente/severidad, acciones rápidas y descartes persistentes. - **Recomendaciones inteligentes:** avisos de calendario, robot aspirador, calor/frío, humedad, lluvia próxima, batería baja, depósito de humidificador, tinta y notificaciones personalizadas. - **Notificaciones móviles:** envío opcional a entidades `notify.*` modernas mediante `notify.send_message`, compatible con Home Assistant 2026.5; `data.group`/`data.tag` quedan solo para servicios legacy para evitar errores de payload. - **Persistencia entre dispositivos:** helper opcional `input_text` para compartir descartes de notificaciones y sesión de vacuum; Calendar queda en persistencia nativa de Home Assistant mediante creación/borrado de eventos reales. - **Editores más cómodos:** `ha-entity-picker`, `ha-selector`, icon picker, color picker visual, secciones plegables, conexiones inteligentes compactas y feedback inline en formularios. - **Animación y tacto:** entradas alineadas entre tarjetas, pila de notificaciones con expandir/contraer animado y haptics configurables en acciones principales del calendario. - **Seguridad reforzada:** acciones de servicio personalizadas con `security.strict_service_actions`, allowlist por dominio/servicio, URLs saneadas y comportamiento fail-closed cuando la allowlist está vacía. - **Carga más fiable:** `nodalia-cards.js` vuelve a ser autocontenido para HACS/manual, con artefactos auxiliares `bundle`/`manifest` para diagnóstico; el bundle expone `__NODALIA_BUNDLE__` con versión y hash corto. ### Correcciones destacadas - Evita renders o consultas infinitas al refrescar eventos de calendario en instalaciones con muchos cambios de estado. - Evita que descartes de calendario/notificaciones se poden durante recargas fuertes antes de hidratar eventos o forecast. - Corrige cálculos de temperatura baja usando el sensor más frío y mejora la asociación sensor -> ventilador por área/nombre. - Reduce cortes visuales en móvil, estados vacíos, botones icon-only, chips y capas compactas. - Mejora compatibilidad con servicios `notify.*` modernos y legacy sin enviar campos no aceptados por Home Assistant. - Mantiene fallbacks de tema para el toggle de media player en Navigation Bar cuando configuración y defaults quedan vacíos. - Deduplica también las sesiones vacías de Advance Vacuum cuando la persistencia usa solo webhook, evitando POST redundantes. - Ajusta la pila compacta de Notifications Card para que las tarjetas traseras asomen menos bajo la principal. - Añade overrides por entidad en avisos inteligentes: URL, etiqueta, título, mensaje, color y política móvil individual (`heredar`, `enviar siempre`, `no enviar`). ### Metadata - **Release metadata:** promote prerelease channel references and bundle version metadata to **`1.0.0-beta.1`**. --- ## [1.0.0-alpha.61] - 2026-05-08 Sixty-first **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.61`** (tag **`v1.0.0-alpha.61`** optional). - **Notifications card — pila compacta:** las tarjetas traseras del modo compacto ahora son capas más altas, casi a ancho completo y tintadas según la notificación oculta, para que solo asome el bajo y la curva no aparezca tan pronto. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.61`**. --- ## [1.0.0-alpha.60] - 2026-05-08 Sixtieth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.60`** (tag **`v1.0.0-alpha.60`** optional). - **Notifications card — persistencia calendario:** los descartes guardados en `input_text`/localStorage ya no se podan durante el render temprano de una recarga fuerte antes de que se hayan hidratado eventos de calendario o previsión. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.60`**. --- ## [1.0.0-alpha.59] - 2026-05-08 Fifty-ninth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.59`** (tag **`v1.0.0-alpha.59`** optional). - **Notifications card — colapso animado:** contraer la pila anima primero la salida de las notificaciones sobrantes y después muestra la pila compacta. - **Notifications card — entrada en pestañas:** la animación de entrada se repite al volver a una vista/pestaña de Home Assistant mediante observer de visibilidad, igual que `nodalia-calendar-card`. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.59`**. --- ## [1.0.0-alpha.58] - 2026-05-08 Fifty-eighth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.58`** (tag **`v1.0.0-alpha.58`** optional). - **Notifications card — chips superiores:** las burbujas de fuente/severidad se colocan en la esquina superior derecha, justo antes del botón de cierre, para no cortar el ritmo del contenido. - **Notifications card — animaciones:** entrada alineada con `nodalia-calendar-card` y animación visible al expandir/contraer la pila de notificaciones. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.58`**. --- ## [1.0.0-alpha.57] - 2026-05-08 Fifty-seventh **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.57`** (tag **`v1.0.0-alpha.57`** optional). - **Notifications card — robustez:** los avisos personalizados vacíos se filtran, sus IDs dejan de depender del orden del editor y la sincronización por `input_text` limita hashes para respetar el máximo de 255 caracteres. - **Notifications card — notify móvil:** `notify.send_message` vuelve a incluir `data.group`/`data.tag` para agrupación y reemplazo de notificaciones, evitando también enviar avisos que se hayan descartado mientras esperaban en cola. - **Notifications card — auditoría:** acciones de servicio más ligeras al reutilizar allowlists normalizadas y corrección del cálculo de temperatura baja para usar el sensor más frío, no el más caliente. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.57`**. --- ## [1.0.0-alpha.56] - 2026-05-08 Fifty-sixth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.56`** (tag **`v1.0.0-alpha.56`** optional). - **Calendar card — selector de color nativo:** el composer de eventos usa el mismo selector visual de color que los editores, con swatch sincronizado y feedback inline si faltan campos obligatorios. - **Notifications card — notify HA 2026.5:** el envío a entidades `notify.*` usa payload compatible con `notify.send_message` y las notificaciones de calendario enlazan mejor con el detalle del popup. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.56`**. --- ## [1.0.0-alpha.55] - 2026-05-08 Fifty-fifth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.55`** (tag **`v1.0.0-alpha.55`** optional). - **Calendar card — haptics:** la tarjeta añade respuesta háptica configurable en acciones principales y un apartado propio en el editor visual. - **Calendar/Notifications card — popup conectado:** las notificaciones de calendario abren el popup grande de `nodalia-calendar-card` mediante evento interno, evitando el more-info genérico de Home Assistant. - **Notifications card — notify moderno:** el editor permite seleccionar entidades `notify.*` con selector nativo de HA y usa `notify.send_message`, manteniendo servicios `notify.*` legacy como compatibilidad. - **Notifications card — editor y animaciones:** las conexiones inteligentes se pueden plegar, el selector de color queda alineado con `nodalia-entity-card` y la animación de entrada se dispara al cambiar la pila real de avisos. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.55`**. --- ## [1.0.0-alpha.54] - 2026-05-07 Fifty-fourth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.54`** (tag **`v1.0.0-alpha.54`** optional). - **Notifications card — editor y legibilidad:** el selector de color vuelve al patrón del resto de tarjetas, se retiran controles de título que no se renderizan y los iconos aplican contraste tipo `NodaliaBubbleContrast` para tintes claros/amarillos. - **Notifications card — avisos inteligentes configurables:** mensajes, títulos, colores y URL opcional por tipo de aviso (`calor`, `humedad`, `lluvia`, `bateria`, `deposito`, `tinta`), con nuevas entidades inteligentes para batería, depósito de humidificador y tinta. - **Notifications card — móvil:** las tarjetas dejan de estirarse al volver de horizontal a vertical con alineación superior y reflow en `resize/orientationchange`. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.54`**. --- ## [1.0.0-alpha.53] - 2026-05-07 Fifty-third **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.53`** (tag **`v1.0.0-alpha.53`** optional). - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.53`**. --- ## [1.0.0-alpha.52] - 2026-05-07 Fifty-second **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.52`** (tag **`v1.0.0-alpha.52`** optional). - **Bundle loader:** `nodalia-cards.js` vuelve a ser autocontenido para instalaciones HACS de un solo `filename`; `nodalia-cards.bundle.js` y `nodalia-cards.manifest.js` quedan como artefactos auxiliares, evitando que Home Assistant deje todas las tarjetas sin registrar si esos ficheros no se sirven junto al loader. - **Notifications card — avisos más inteligentes:** las recomendaciones de ventilador cruzan sensores y `fan` por área/nombre de estancia antes de proponer acciones, y el forecast horario de `weather/get_forecasts` añade avisos de lluvia próxima. - **Notifications card — sincronización y móvil:** nuevo helper opcional `input_text` para compartir descartes entre dispositivos y envío opcional a servicios `notify.*` con severidad mínima configurable. - **Notifications card — limpieza visual/editor:** se evita el aviso vacío “Nueva notificacion”, se ocultan chips repetidos/`Info`, se reduce la tipografía del estado sin avisos y se elimina el selector de icono general que no tenía efecto real. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.52`**. --- ## [1.0.0-alpha.51] - 2026-05-07 Fifty-first **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.51`** (tag **`v1.0.0-alpha.51`** optional). - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.51`**. --- ## [1.0.0-alpha.50] - 2026-05-07 Fiftieth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.50`** (tag **`v1.0.0-alpha.50`** optional). - **Notifications card — tintado Entity Card:** el estado sin avisos y las tarjetas activas usan la misma superficie tintada/pseudo-capas que `nodalia-entity-card`, evitando bordes/sombras recortadas en el estado vacío. - **Notifications card — editor visual compacto:** las conexiones inteligentes cambian de textarea a selectores nativos de entidad filtrados por dominio, con filas compactas para añadir/quitar entidades. - **Notifications card — editor visual ampliado:** los selectores nativos de icono ocupan fila completa, los desplegables de secciones usan el mismo boton con chevron del resto de tarjetas, se añaden animaciones configurables y selectores de color para tintado global y por notificacion personalizada. - **Notifications card — estabilidad de calendario:** el refresco de eventos ya no se reprograma indefinidamente con cada actualización de `hass`, evitando que instalaciones con muchos cambios de estado bloqueen la consulta. - **Notifications card — i18n y seguridad:** los avisos inteligentes usan `NodaliaI18n` y las acciones de servicio personalizadas incorporan `security.strict_service_actions` con allowlist de servicios/dominios, manteniendo bypass solo para acciones internas de la tarjeta. - **Bundle loader:** `nodalia-cards.js` pasa a ser un loader cache-busting que lee `nodalia-cards.manifest.js` e importa `nodalia-cards.bundle.js?v=`, reduciendo cargas antiguas tras redescargar desde HACS. - **Calendar card — papelera centrada:** el botón icon-only para borrar eventos nativos usa tamaño cuadrado y centrado explícito para evitar que el icono quede desplazado. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.50`**. --- ## [1.0.0-alpha.49] - 2026-05-07 Forty-ninth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.49`** (tag **`v1.0.0-alpha.49`** optional). - **Calendar card — borrado nativo de eventos:** las filas y el detalle de evento muestran una papelera cuando el calendario soporta borrado; usa `calendar/event/delete` con `uid`/`recurrence_id` como la UI nativa de Home Assistant. - **Release metadata:** align alpha channel references and bundle version metadata to **`1.0.0-alpha.49`**. --- ## [1.0.0-alpha.48] - 2026-05-07 Forty-eighth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.48`** (tag **`v1.0.0-alpha.48`** optional). - **Notifications card — escala Entity Card:** reduce iconos, texto y alturas para alinearse con `nodalia-entity-card`, y usa chips/burbujas compactas para fuente, severidad y acciones. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.48`**. --- ## [1.0.0-alpha.47] - 2026-05-07 Forty-seventh **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.47`** (tag **`v1.0.0-alpha.47`** optional). - **Notifications card:** primera alpha versionada de `custom:nodalia-notifications-card` en el bundle, con centro inteligente de avisos, pila expandible, borrado persistente, recomendaciones y editor visual. - **Notifications card — estilo Nodalia compacto:** estado sin avisos como barra verde tintada y notificaciones como tarjetas icono+texto apiladas, con cartas traseras visibles y burbuja de despliegue. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.47`**. --- ## [1.0.0-alpha.46] - 2026-05-07 Forty-sixth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.46`** (tag **`v1.0.0-alpha.46`** optional). - **Calendar card — forecast HA moderno:** suscripción diaria persistente con `weather/subscribe_forecast`, alineada con Weather Card, para recibir días futuros y `templow` cuando `weather/get_forecasts` o atributos legacy no devuelven datos. - **Calendar card — forecast más robusto:** fallback por `weather.get_forecasts` con respuesta y lectura de tipos soportados (`daily`, `twice_daily`, `hourly`) agregados por día; ahora se prioriza el candidato con más días futuros y no se deja que una suscripción parcial de “solo hoy” pise la previsión semanal. - **Calendar card — solo eventos nativos:** se elimina el flujo de recordatorios rápidos/locales y el botón de creación pasa a crear siempre eventos reales de Home Assistant, evitando eventos sintéticos que podían interferir con persistencia de completados. - **Calendar card — composer nativo ampliado:** creación de eventos HA con descripción, ubicación, recurrencia nativa cerrada (`none`/`yearly`/`monthly`/`weekly`/`daily` vía `calendar/event/create`) y color propio opcional guardado como metadato Nodalia en la descripción. - **Calendar card — detalle de evento:** en la vista mensual ampliada, al pulsar un día y luego un evento se abre una ficha grande con descripción, ubicación, calendario, horario y repetición cuando estén disponibles. - **Calendar card — composer sin recortes:** el formulario de creación nativa usa altura real de viewport y scroll propio para no cortarse cuando el rango seleccionado no tiene eventos. - **Calendar card — webhook evento nativo:** el payload de creación añade `service_data` y `ha_action` saneados para `calendar.create_event`, evitando enviar campos vacíos incompatibles como `start_date_time: ""` en eventos de todo el día y pasando `description`/`location` solo si existen; la recurrencia queda en `calendar_event`/websocket para no romper el servicio HA. - **Calendar card — validación de fechas:** crear un evento nativo con fecha anterior a hoy muestra un error integrado en el popup y evita enviar el webhook/servicio. - **Calendar card — tiempo en popup ampliado:** la vista grande también muestra el chip de tiempo en columnas/días, celdas del mes y detalle de día cuando hay forecast disponible. - **Notifications card:** nueva `custom:nodalia-notifications-card` como centro inteligente con vacio amable, pila expandible, borrado persistente, eventos de calendario de hoy, estados de robot, recomendaciones weather/fan, sensores y notificaciones personalizadas desde editor visual. - **Performance:** bundle minificado y editor de Calendar con firma de entidades filtrada a `calendar`, `input_text` y `weather` para reducir parseo/coste en instalaciones grandes. - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.46`**. --- ## [1.0.0-alpha.40] - 2026-05-06 Fortieth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.40`** (tag **`v1.0.0-alpha.40`** optional). - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.40`**. --- ## [1.0.0-alpha.38] - 2026-05-06 Thirty-eighth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.38`** (tag **`v1.0.0-alpha.38`** optional). - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.38`**. --- ## [1.0.0-alpha.37] - 2026-05-06 Thirty-seventh **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.37`** (tag **`v1.0.0-alpha.37`** optional). - **Release metadata:** bump alpha channel references and bundle version metadata to **`1.0.0-alpha.37`**. --- ## [1.0.0-alpha.36] - 2026-05-06 Thirty-sixth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.36`** (tag **`v1.0.0-alpha.36`** optional). - **Calendar card — weather visible en más casos reales:** emparejado día calendario ↔ forecast reforzado (claves locales/padded y fallback por proximidad de día) para evitar cabeceras sin clima cuando el proveedor devuelve formatos heterogéneos. - **Calendar card — popup composer sin recortes en estado vacío:** al abrir “nuevo recordatorio / nuevo evento” desde una vista sin eventos, el panel expandido eleva altura mínima y evita clipping para mostrar el formulario completo. - **Calendar card — esquinas/contorno del panel:** ajuste de layout del panel expandido al abrir composer para eliminar artefactos visuales (cortes y esquinas puntiagudas) en overlays. --- ## [1.0.0-alpha.35] - 2026-05-06 Thirty-fifth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.35`** (tag **`v1.0.0-alpha.35`** optional). - **Calendar card — persistencia `v6` multi-helper (255x4):** nuevo formato compacto `v6:` y soporte para hasta **4** `input_text` (`shared_completed_events_entity` + `_2/_3/_4`) con reparto/reensamblado de payload para ampliar capacidad total. - **Calendar card — webhook de creación al vuelo:** nuevos campos `quick_reminder_webhook` y `native_event_webhook` para crear recordatorios/eventos mediante automatizaciones webhook cuando el usuario no tiene permisos directos de servicio. - **Calendar card — clima más resiliente:** si no hay forecast diario utilizable, fallback visual con estado/temperatura actual del `weather_entity` para evitar cabeceras vacías. - **Calendar card — fix visual composer:** el sub-popup de creación ya no se recorta cuando la vista base tiene poca altura (panel con scroll y sin clipping del contenedor). --- ## [1.0.0-alpha.34] - 2026-05-06 Thirty-fourth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.34`** (tag **`v1.0.0-alpha.34`** optional). - **Calendar card — forecast normalizado como weather-card:** la lectura de previsión diaria ahora unifica más variantes de payload (arrays, `forecast`, `daily`, `hourly`, estructuras anidadas y puntos sueltos) para reducir casos donde la cabecera diaria no mostraba clima. - **Calendar card — day-key robusto:** se admiten fechas en `datetime/date` tanto ISO como epoch (segundos o milisegundos), mejorando el emparejado día calendario ↔ día forecast. - **Calendar card — condición compatible:** fallback de condición (`condition`/`weather`) en el render de cabeceras diarias. --- ## [1.0.0-alpha.33] - 2026-05-06 Thirty-third **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.33`** (tag **`v1.0.0-alpha.33`** optional). - **Calendar card — clima diario visible en más integraciones:** compatibilidad ampliada de campos de forecast (max/min) para mostrar icono y temperaturas en la cabecera de cada día con más proveedores. - **Calendar card — fallback visual:** cuando no hay min/max pero sí condición, se muestra el bloque meteorológico con icono y `— / —` en lugar de ocultarlo. - **Calendar card — rendimiento/memoria:** firma de render compacta basada en hash (menos churn de strings grandes) y protección `single-flight` en refresh para evitar solapes de cargas. --- ## [1.0.0-alpha.32] - 2026-05-06 Thirty-second **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.32`** (tag **`v1.0.0-alpha.32`** optional). - **Calendar card — selector nativo HA en composer:** el alta de eventos nativos dentro del popup usa control nativo (`ha-selector` de entidad `calendar`) en lugar de `select` HTML, manteniendo fallback de compatibilidad. - **Calendar card — forecast diario más tolerante:** lectura de `weather/get_forecasts` ampliada para contemplar variantes de estructura de respuesta y fallback a atributos de estado cuando aplica. - **Advance Vacuum — persistencia webhook-only:** la deduplicación de sesión compartida separa rama webhook sin entidad para no bloquear retransmisión de sesión vacía en casos límite. - **Tests:** nuevo test de regresión para persistencia webhook-only en Advance Vacuum. --- ## [1.0.0-alpha.31] - 2026-05-06 Thirty-first **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.31`** (tag **`v1.0.0-alpha.31`** optional). - **Calendar card — composer unificado:** crear evento nativo de Home Assistant deja de usar prompts y pasa a un composer integrado (selector de calendario, título, fecha, horas y todo el día) con el mismo estilo del popup. - **Calendar card — polish visual composer:** selector de color circular, switch tipo toggle para “Todo el día” y fondo del composer con tinte del acento de la tarjeta para coherencia visual. - **Calendar card — weather forecast robusto:** prioridad a `weather/get_forecasts` (daily) con fallback a `state.attributes.forecast`, mejorando compatibilidad y visibilidad real del tiempo diario en cabeceras. --- ## [1.0.0-alpha.30] - 2026-05-06 Thirtieth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.30`** (tag **`v1.0.0-alpha.30`** optional). - **Calendar card:** el flujo de agregar recordatorios rápidos deja de usar prompts del navegador y pasa a un sub-popup estilizado dentro del panel ampliado (misma estética de la tarjeta). - **Calendar card:** corrección del emparejado de previsión diaria (`weather_entity`) para evitar desajustes de día por timezone al leer `forecast.datetime`. --- ## [1.0.0-alpha.29] - 2026-05-06 Twenty-ninth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.29`** (tag **`v1.0.0-alpha.29`** optional). - **Calendar card:** popup ampliado con acciones rápidas para crear **recordatorios locales** (titulo, fecha/hora, color) y crear **eventos en calendarios nativos HA** sin salir del dashboard. - **Calendar card:** integración de recordatorios rápidos dentro de la misma lista/agrupación temporal de eventos. - **Calendar / Graph cards:** ajuste fino de animación de entrada para mantener consistencia visual tipo rebote con el resto de tarjetas. --- ## [1.0.0-alpha.28] - 2026-05-06 Twenty-eighth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.28`** (tag **`v1.0.0-alpha.28`** optional). - **Calendar / Graph cards:** la animación de entrada se rearma al volver a mostrar la vista aunque HA mantenga la tarjeta montada (detección por visibilidad en viewport con `IntersectionObserver`). - **Advance Vacuum:** restauración de sesión corregida para `utilityPanel` (solo se aplica si hay valor persistido, coherente con `modePanelPreset`; evita reset espurio a `null`). --- ## [1.0.0-alpha.27] - 2026-05-06 Twenty-seventh **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.27`** (tag **`v1.0.0-alpha.27`** optional). - **Calendar card:** la animación de entrada vuelve a dispararse al reentrar al dashboard (reset en attach/detach). - **Person card:** con **`show_name: false`** el bloque de texto se oculta por completo para centrar de verdad el avatar sin huecos. - **Light / Entity cards:** corrección de regresión en posición del estado (**derecha** / **debajo**), respetando explícitamente el ajuste seleccionado. --- ## [1.0.0-alpha.26] - 2026-05-06 Twenty-sixth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.26`** (tag **`v1.0.0-alpha.26`** optional). - **Calendar card — codec completados `v5:`:** huellas **24-bit** + binario Base64URL (`v5:`); hasta **~62** marcados en **255** caracteres; **`pickShortestCompletionPayload`** compite **`v5:`** / **`v4:`** / **`v3:`** (el más corto que quepa). - **Calendar card — `v4:` más denso:** huellas **40-bit** y recuento **`uint8`** (esquema binario `0x02`); se sigue leyendo el formato anterior **48-bit** / `uint16` (`0x01`). - **Advance Vacuum:** separación de llamadas internas y externas en modo estricto (`_callInternalService` para servicios fijos de la tarjeta como `vacuum.send_command`, `select.select_option`, `input_text.set_value`, `roborock.set_vacuum_goto_position`), manteniendo la allowlist para acciones definidas por el usuario. - **Light card:** opción **`state_position`** (`right` / `below`) para colocar el estado a la derecha del nombre o debajo. - **Person card:** opción **`show_name`** para ocultar el nombre; al ocultarlo, el avatar se centra en la tarjeta. --- ## [1.0.0-alpha.25] - 2026-05-06 Twenty-fifth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.25`** (tag **`v1.0.0-alpha.25`** optional). - **Calendar card — persistencia completados:** codec **`v4:`** (huellas FNV-1a 48-bit + binario Base64URL, orden-independiente); **`pickShortestCompletionPayload`** elige el **más corto** entre **`v4:`** y **`v3:`** si ambos caben; **`v2:`** / JSON solo si los estables no caben. --- ## [1.0.0-alpha.24] - 2026-05-06 Twenty-fourth **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.24`** (tag **`v1.0.0-alpha.24`** optional). - **`NodaliaUtils.postHomeAssistantWebhook`:** usa **`hass.auth.fetchWithAuth`** cuando se pasa **`hass`** (evita **401** desde Lovelace frente a **`fetch`** sin token); acepta **`webhook_id`** o URL/pegar **`/api/webhook/…`**; calendario y Advance Vacuum pasan **`this._hass`** en persistencia por webhook. - **Calendar card — codec completados `v3:`:** huellas **FNV-1a** (UTF-8) + **base62** por clave lógica; orden-independiente frente a **`v2:`**; **`pickShortestCompletionPayload`** compite **v2 / v3 / JSON**. - **Editor calendario (`ha-selector`):** varios dominios en **`data-domains`** usan **`entity: { domain: [...] }`** en lugar de **`{}`** (restricción alineada con Advance Vacuum). --- ## [1.0.0-alpha.23] - 2026-05-06 Twenty-third **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.23`** (tag **`v1.0.0-alpha.23`** optional). - **Persistencia sin permiso `input_text.set_value`:** **`NodaliaUtils.postHomeAssistantWebhook`** (`POST` JSON a `/api/webhook/`). Opciones **`shared_completed_events_webhook`** (calendario) y **`shared_cleaning_session_webhook`** (Advance Vacuum): si están definidas, la escritura compartida usa el webhook en lugar del servicio (una automatización **Webhook** del administrador puede llamar a **`input_text.set_value`**). El **`webhook_id`** debe mantenerse secreto. - **Advance Vacuum:** **`_isServiceAllowed`** con allowlists vacías ya no usa fail-open (`strict_service_actions` implícito): coincide con el resto de tarjetas (**denegar** si no hay entradas). Por defecto **`security.strict_service_actions: false`** en **`DEFAULT_CONFIG`** mantiene el comportamiento permisivo anterior sin YAML extra. - **Calendar card — formato compacto `v2:` para completados:** módulo **`nodalia-calendar-completion-codec.js`**: prefijo cronológico (`v2:n{k}` = primeros *k* eventos en ventana), totales `v2:t` / vacío `v2:z`, trozos por día `dYYYYMMDD` + `t` (todo el día), `n{j}` (primeros *j* ese día) o `i1-3` (posiciones 1-based en ese día). Se elige la cadena más corta frente al JSON de claves largas; sigue existiendo compatibilidad con el array JSON legacy. Los índices dependen del orden de eventos cargados (si cambian citas, puede haber que revisar marcas). --- ## [1.0.0-alpha.22] - 2026-05-06 Twenty-second **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.22`** (tag **`v1.0.0-alpha.22`** optional). - **Calendar card:** persistencia en **`input_text`**: se ignoraban actualizaciones websocket **anticipadas** con el valor **viejo** del helper justo después de marcar completado; `_syncCompletedPersistenceFromHass` volvía a pisar **`_completed`** antes de que **`set_value`** reflejara en HA. Ahora hay **`_pendingSharedCompletedPayload`** (forma canónica del JSON) y no se aplica un estado remoto obsoleto mientras el pendiente no coincide; comparación canónica entre estado HA y payload local. - **Advance Vacuum (`0.13.9`):** segundo **`console.warn`** si **`set_value`** falla (p. ej. usuario sin permiso sobre el **`input_text`**). --- ## [1.0.0-alpha.21] - 2026-05-06 Twenty-first **`alpha`** on **`1.0.0`**. Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.21`** (tag **`v1.0.0-alpha.21`** optional). - **Advance Vacuum (`0.13.8`):** persistencia **`input_text`** — vuelve la deduplicación con **`_lastSubmittedSharedCleaningSessionValue`** antes del servicio y **`null`** en **`catch`** para no spamear **`set_value`** mientras HA sincroniza y permitir reintento si falla. **`security.strict_service_actions`** explícito **`true`** con listas vacías ya **no** abre todo el mundo: sin entradas en la allowlist se deniega ( **`fail-closed`** ); la persistencia al helper sigue usando el bypass dedicado. - **Calendar card:** mismo patrón optimista + **`catch`** en **`_saveCompleted`** para el helper de completados. --- ## [1.0.0-alpha.20] - 2026-05-06 Twentieth **`alpha`** on the **`1.0.0`** line (**branch `alpha`**). Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.20`** (tag **`v1.0.0-alpha.20`** optional). --- ## [1.0.0-alpha.19] - 2026-05-06 Nineteenth **`alpha`** on the **`1.0.0`** line (**branch `alpha`**). Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.19`** (tag **`v1.0.0-alpha.19`** optional). - **Calendar / Advance Vacuum:** persistencia en **`input_text`**: se evitaba reenviar tras un **`set_value` fallido** porque la deduplicación guardaba el valor “optimista” antes de confirmar el servicio; ahora solo se compara con el estado en HA y **`_lastSubmitted`** solo se actualiza si la llamada termina bien (con **`trim`** en calendario). **Vacuum:** **`input_text.set_value`** hacia el helper configurado **ignora la allowlist** de **`security.allowed_*`** para que el modo estricto no bloquee la sincronización. **Vacuum card** **`0.13.6`**: editor visual con **`ha-entity-picker`** primero (como calendario), bloque ancho + texto de ayuda para **`shared_cleaning_session_entity`**. --- ## [1.0.0-alpha.18] - 2026-05-06 Eighteenth **`alpha`** on the **`1.0.0`** line (**branch `alpha`**). Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.18`** (tag **`v1.0.0-alpha.18`** optional). - **Calendar card:** vista **mes**: un evento compacto por día y **puntos** (tint) para más eventos; vista **día**: todos los eventos con **scroll**; la animación de apertura del **panel** del popup no se repite al marcar **hecho** ni al actualizar dentro del popup. --- ## [1.0.0-alpha.14] - 2026-05-06 Fourteenth **`alpha`** on the **`1.0.0`** line (**branch `alpha`**). Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.14`** (tag **`v1.0.0-alpha.14`** optional). --- ## [1.0.0-alpha.13] - 2026-05-06 Thirteenth **`alpha`** on the **`1.0.0`** line (**branch `alpha`**). Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.13`** (tag **`v1.0.0-alpha.13`** optional). - **Calendar card:** en el popup **mes**, **pulsa un día** para abrir la vista centrada en ese día: primer evento destacado, **puntos de color** (tint de cada calendario) para el resto, lista **con scroll** de los demás eventos; botón **«Mes»**, **Escape** vuelve al calendario mensual antes de cerrar el popup. --- ## [1.0.0-alpha.12] - 2026-05-06 Twelfth **`alpha`** on the **`1.0.0`** line (**branch `alpha`**). Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.12`** (tag **`v1.0.0-alpha.12`** optional). - **Calendar card:** en el popup **mes**, los días con **varios eventos** usan de nuevo **scroll vertical dentro del día**: los bloques eran ítems flex con **`flex-shrink: 1`** y **`min-height: 0`** (compact), así que se **aplastaban** unos sobre otros en lugar de desbordar con scroll; ahora cada evento tiene **`flex-shrink: 0`**, altura de fila **`grid-auto-rows`** fija y la zona de eventos ocupa el resto del día con **`overflow-y: auto`**. --- ## [1.0.0-alpha.11] - 2026-05-06 Eleventh **`alpha`** on the **`1.0.0`** line (**branch `alpha`**). Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.11`** (tag **`v1.0.0-alpha.11`** optional). - **Advance Vacuum card:** **`shared_cleaning_session_entity`** vuelve a **persistir** cuando el modo activo es **`routines`**: `_normalizeCleaningSession` solo admitía `activeMode` en `all` / `rooms` / `zone` / `goto`, así que **`routines`** se perdía y el helper podía quedar vacío o sin `a=routines`. **`nodalia-advance-vacuum-card.js`**: `CARD_VERSION` **0.13.4**. - **Calendar card:** opción **`shared_completed_events_entity`** (`input_text`): los completados se sincronizan entre dispositivos vía HA (sin helper, solo `localStorage`). - **Calendar card:** vista mensual del popup con **scroll horizontal** en pantallas estrechas y columnas con **ancho mínimo** para legibilidad en móvil. --- ## [1.0.0-alpha.10] - 2026-05-06 Tenth **`alpha`** on the **`1.0.0`** line (**branch `alpha`**). Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.10`** (tag **`v1.0.0-alpha.10`** optional). - **Calendar card:** carga de eventos más **compatible con HA Companion / WebKit**: si `callApi` devuelve algo que no es un array o falla, se reintenta con **`fetchWithAuth`** sobre `/api/calendars/...`; respuestas envueltas en objeto se normalizan cuando traen una lista en **`events`**. - **Calendar card:** fechas **solo día** (`YYYY-MM-DD` / `start.date`) se interpretan en **calendario local** para que el agrupado coincida en **iOS/Safari** con escritorio. - **Calendar card:** al volver a la pestaña o a la app (`visibilitychange`), se **vuelven a pedir** eventos para recuperar datos tras suspender la vista en móvil. --- ## [1.0.0-alpha.9] - 2026-05-06 Ninth **`alpha`** on the **`1.0.0`** line (**branch `alpha`**). Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.9`** (tag **`v1.0.0-alpha.9`** optional). - **Calendar card:** panel ampliado con estilo acorde al **popup del gráfico** en Weather (vidrio, acento, animación de entrada); **tintado manual** aplica el mismo cromado que el primario cuando el automático está desactivado; icono por defecto con **mezcla tema** (`primary` + texto) para legibilidad en claro/oscuro. - **Calendar card:** animación de **entrada** solo tras terminar la carga (no se “gasta” en la vista de carga); al **marcar** un evento como hecho, **salida animada** (escala + desvanecimiento) antes de ocultar la fila. --- ## [1.0.0-alpha.8] - 2026-05-05 Eighth **`alpha`** on the **`1.0.0`** line (**branch `alpha`**). Installs match **`package.json`** / **`__NODALIA_BUNDLE__.pkgVersion`** **`1.0.0-alpha.8`** (tag **`v1.0.0-alpha.8`** optional). - **Calendar card:** editor adds **etiqueta** y **color de tintado** por calendario (la etiqueta sustituye al subtítulo bajo el evento cuando está definida); el chip del encabezado usa **rangos predefinidos** (3 días, 1 semana, 2 semanas, 1 mes) en lugar de un número libre de días. - **Calendar card:** al pulsar la tarjeta se abre un **panel ampliado** con todo el rango: columna vertical para 3 días, columnas horizontales desplazables para 1–2 semanas, y **rejilla mensual** para el rango de un mes; **Escape** o el fondo cierran el panel. - **Calendar card:** con **tintado automático**, la tarjeta usa el mismo esquema visual que **Entity card** en estado activo (degradado 135° sobre `ha-card`, borde `color-mix` con `--divider-color`, sombra de elevación, overlays `::before` / `::after`), burbuja de icono con borde/sombra tipo pill y chips de cabecera alineados con los chips de Entity (`fondo/borde` al 6%, peso 600). Con tintado automático desactivado, la tarjeta pasa a fondo y borde neutros como Entity **inactiva**. --- ## [1.0.0-alpha.7] - 2026-05-05 Seventh **`alpha`** on the **`1.0.0`** line (**branch `alpha`**). - **Calendar card:** debajo del título del evento se muestra el **nombre amistoso** de la entidad (`friendly_name`) en lugar del id crudo (`calendar.xxx`); si no hay nombre, se usa una forma legible del sufijo de entidad. --- ## [1.0.0-alpha.6] - 2026-05-05 Sixth **`alpha`** on the **`1.0.0`** line (**branch `alpha`**). - **Calendar editor:** color-related style fields use the same visual color picker + swatch pattern as other Nodalia cards. - **Calendar editor:** “Añadir calendario” works again (empty calendar slots are preserved instead of being stripped on normalize). - **Calendar:** default **`max_visible_events`** is now **2** (was 3). --- ## [1.0.0-alpha.5] - 2026-05-05 Fifth **`alpha`** on the **`1.0.0`** line (**branch `alpha`**). - **Calendar visual editor:** aligned layout and styling with other Nodalia editors (section headers + hints, 18px rounded panels, graph-style series cards per calendar, primary-color toggles, collapsible Animaciones/Estilos with chevron buttons, `ha-icon-picker` for icon, `editorStatesSignature` + focus restore on hass updates). --- ## [1.0.0-alpha.4] - 2026-05-05 Fourth **`alpha`** on the **`1.0.0`** line (**branch `alpha`**). Calendar card stability fix. - **Calendar card:** stopped re-rendering the full shadow DOM on every Home Assistant `hass` update (the setter was rebuilding `innerHTML` continuously, which caused visible flicker and replayed the entrance animation). Renders are now driven by first `hass`, locale changes, config/refresh, completion toggles, and deduplicated when the visible model is unchanged. - **Calendar card:** entrance animation runs once per card instance instead of on every paint. --- ## [1.0.0-alpha.3] - 2026-05-05 Third **`alpha`** on the **`1.0.0`** line (**branch `alpha`**). This release continues polishing the new calendar card and editor experience. - **Calendar editor parity:** visual editor aligned further with Nodalia card-editor patterns and interaction behavior. - **Calendar UX polish:** continued refinement of list visibility/scroll behavior and event configuration controls. - **Iteration release:** version bump to keep alpha feedback cycles short while `0.6.1` remains stable on `main`. --- ## [1.0.0-alpha.2] - 2026-05-05 Second **`alpha`** on the **`1.0.0`** line (**branch `alpha`**). This cut refines the initial calendar-card introduction with a stronger visual-editor workflow and event-list behavior. - **Calendar editor UX:** moved calendar selection to native entity picker rows with add/remove controls (multi-calendar friendly, consistent with other Nodalia editors). - **Calendar list behavior:** added configurable `max_visible_events` (originally default **3**, now **2** from **1.0.0-alpha.6**) and vertical scroll beyond the visible-event threshold. - **Polish pass:** aligned interaction flow and config normalization for the new card while keeping `0.6.1` as stable baseline on `main`. --- ## [1.0.0-alpha.1] - 2026-05-05 First **`alpha`** on the **`1.0.0`** line (**branch `alpha`**). This marks the start of the next major cycle while `0.6.1` remains the stable baseline on `main`. - **New card:** added **`nodalia-calendar-card`** with Nodalia visual style to show upcoming events by configurable day range. - **Calendar UX:** supports selecting calendar entities, elegant grouped event display, and in-card event completion toggles for already completed/personal tracking flows. - **Editor support:** added a visual editor for title, calendars list, day range, refresh interval, and completed-event visibility/marking behavior. ---