# Changelog All notable changes to this project are documented in this file. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project follows semantic versioning. > Detailed prerelease history through the current **`2.0.0`** alpha and release-candidate cycle is archived in [`CHANGELOG-PRERELEASES.md`](./CHANGELOG-PRERELEASES.md). --- ## [Unreleased] ### Changed - **Documentation:** align installation, release-channel, roadmap, translation, architecture and historical-audit guidance with stable `1.3.5` and preview `2.0.0-rc.1`. - **Repository automation:** update JavaScript Actions to their Node 24 generations with immutable commit pins, scan `beta` with CodeQL, and make issue release guidance aware of alpha, beta, RC and stable versions. - **Issue intake:** synchronize all issue forms with the 24-card bundle, remove the retired Battery Card option and add Norwegian to translation reports. - **Contributor toolchain:** update the pinned pnpm and Playwright patch releases while continuing to test the minimum supported Node 22 runtime. ## [1.3.5] - 2026-07-03 Stable **`1.3.5`** release. Installs match **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`nodalia-cards-1.3.5.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and bundled **`CARD_VERSION`** on all published card modules. ### Highlights - **Notifications Card:** per-entity, smart-alert, and custom-notification mobile push policy controls are available in the visual editor, so noisy alerts can stay visible in the card without pushing to mobile. - **Editor polish:** Lovelace visual editors no longer drift into empty bottom space, while tall card previews remain scrollable inside the preview pane. - **1.3.x polish carried forward:** calendar/weather month-boundary fixes, navigation media title flow, Light Card icon tinting, Weather icon contrast, and Graph mobile chip shadow fixes are included in the stable bundle. ### Added - **`notifications`:** visual editor controls for individual mobile notification policy on smart entity overrides, smart alerts, and custom notifications. ### Fixed - **`editor`:** shared Lovelace editor layout fix walks Home Assistant shadow roots, clamps real dialog scroll ancestors, contains preview-pane overscroll, preserves tall preview scrolling, and softens the bottom-edge correction. - **`calendar`:** empty expanded calendar views keep showing day/week/month layouts, and weather badges handle next-month forecast dates correctly. - **`notifications`:** background mobile delivery avoids foreground duplicates, threshold spam, malformed placeholder text, and preserves package-side filtering. - **`weather`:** condition and metric icons stay contrast-safe on tinted cards. - **`navigation`:** media player titles ellipsize before the playing chip on mobile. - **`light`:** icons tint from the current light color with contrast-safe mixing. - **`graph`:** mobile legend chips avoid clipped iOS/Safari shadows. ### Changed - **Release metadata:** promote **`1.3.5-alpha.*`** (alpha.1-alpha.10) to stable **`1.3.5`**. - **Bundle:** versioned HACS entrypoint **`nodalia-cards-1.3.5.js`**; optional split **`nodalia-cards-core-1.3.5.js`** + **`nodalia-cards-suite-1.3.5.js`**. - **Tests:** regression suite remains at **208** tests, including editor scroll containment, preview-pane scroll restoration, calendar forecast mapping, and Notifications background delivery. Per-alpha notes for **`1.3.5-alpha.*`** are archived in [`CHANGELOG-PRERELEASES.md`](./CHANGELOG-PRERELEASES.md). ## [1.3.4] - 2026-06-29 Stable **`1.3.4`** release. Installs match **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`nodalia-cards-1.3.4.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and bundled **`CARD_VERSION`** on all published card modules. ### 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. ### Changed - **Release metadata:** promote **`1.3.4-alpha.1`** to stable **`1.3.4`**. - **Bundle:** versioned HACS entrypoint **`nodalia-cards-1.3.4.js`**; optional split **`nodalia-cards-core-1.3.4.js`** + **`nodalia-cards-suite-1.3.4.js`**. - **HACS:** added the official HACS validation workflow for plugin/default-store readiness. - **Tests:** regression suite remains at **208** tests, including the calendar forecast month-boundary guard. Per-alpha notes for **`1.3.4-alpha.*`** are archived in [`CHANGELOG-PRERELEASES.md`](./CHANGELOG-PRERELEASES.md). ## [1.3.3] - 2026-06-29 Stable **`1.3.3`** release. Installs match **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`nodalia-cards-1.3.3.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and bundled **`CARD_VERSION`** on all published card modules. ### Highlights - **Notifications Card:** background mobile push delivery no longer duplicates foreground card pushes, avoids heat/level notification spam, and keeps smart-message placeholders readable in package-driven notifications. - **Calendar Card:** expanded popups keep showing useful day/week/month-style views even when there are no scheduled events. - **Navigation Bar / Light Card:** mobile media titles no longer overlap the playing chip, and Light Card icons now tint from the current light color with contrast-safe mixing. ### Fixed - **`notifications`:** foreground mobile delivery is disabled while `background_mobile.enabled` is true, preventing duplicate mobile pushes. - **`examples`:** background mobile package only sends threshold alerts when values cross into the alert range, reuses parsed numeric state variables, uses Spanish default package titles, and normalizes common placeholders such as **`{fan}`**. - **`notifications`:** background webhook payload reads thresholds defensively. - **`weather`:** condition icon color handling guards malformed style objects. - **`calendar`:** expanded popups keep rendering the selected range view when there are no events, with empty day placeholders instead of a full-popup no-events message. - **`navigation`:** media player status chips live in the title row so long track titles ellipsize before the chip on mobile. - **`light`:** default on-state icons use a contrast-safe mix of the current light color and theme text color. ### Changed - **Release metadata:** promote **`1.3.3-alpha.*`** (alpha.1-alpha.4) to stable **`1.3.3`**. - **Bundle:** versioned HACS entrypoint **`nodalia-cards-1.3.3.js`**; optional split **`nodalia-cards-core-1.3.3.js`** + **`nodalia-cards-suite-1.3.3.js`**. - **Tests:** regression suite expanded to **208** tests covering background mobile delivery, calendar empty expanded views, navigation media title flow, and Light Card icon tinting. Per-alpha notes for **`1.3.3-alpha.*`** are archived in [`CHANGELOG-PRERELEASES.md`](./CHANGELOG-PRERELEASES.md). ## [1.3.2] - 2026-06-28 Stable **`1.3.2`** release. Installs match **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`nodalia-cards-1.3.2.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and bundled **`CARD_VERSION`** on all published card modules. ### Highlights - **Notifications Card:** background mobile push sync is more reliable, with editor controls for webhook setup, indoor/outdoor comfort separation, presence-gated hot-room suggestions, configurable info-level delivery, and a Home Assistant package that filters noisy `state_changed` events before pushing. - **Weather Card:** condition and metric icons keep their recognizable colors while improving contrast on tinted light cards. - **Graph Card:** unavailable badges and mobile legend chips avoid clipped/incorrect icon and shadow artifacts. ### Added - **`notifications`:** visual editor controls for background mobile webhook sync. - **`notifications`:** visual editor separates indoor temperature/humidity sensors from outdoor temperature/humidity sensors. - **`notifications`:** hot-room fan/cooling recommendations can be gated by same-room presence sensors. ### Fixed - **`examples`:** background mobile package supports larger synced configs, accepts numeric strings with `%`, ignores attribute-only changes, filters watched entities before push handling, respects `mobile: off`, and uses the modern `notify.send_message` payload shape for notify entities. - **`notifications`:** background webhook sync stays pending until the card is connected and Home Assistant is available, and saving editor config forces a sync attempt. - **`notifications`:** low-level alerts such as ink at `10%` match correctly in the background package. - **`weather`:** forecast, condition, humidity, wind, and pressure icons/chips keep readable accent colors on sunny/light-tinted cards. - **`graph`:** unavailable entity badges keep the help icon centered inside the orange circle and use dark glyph contrast. - **`graph`:** mobile legend chips avoid the iOS/Safari clipped shadow rectangle in horizontal scroll rails. - **`fan` / `humidifier` / `cover`:** slider-side action button shadows are no longer clipped while controls are open. ### Changed - **`notifications`:** mobile notification minimum severity labels `info` as “Everything, including info” in the visual editor. - **Release metadata:** promote **`1.3.2-alpha.*`** (alpha.1-alpha.11) to stable **`1.3.2`**. - **Bundle:** versioned HACS entrypoint **`nodalia-cards-1.3.2.js`**; optional split **`nodalia-cards-core-1.3.2.js`** + **`nodalia-cards-suite-1.3.2.js`**. - **Tests:** regression suite expanded to **206** tests covering Notifications background mobile delivery, Weather icon contrast, Graph mobile chip shadows, and the related release metadata. Per-alpha notes for **`1.3.2-alpha.*`** are archived in [`CHANGELOG-PRERELEASES.md`](./CHANGELOG-PRERELEASES.md). ## [1.3.1] - 2026-06-27 Stable **`1.3.1`** release. Installs match **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`nodalia-cards-1.3.1.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and bundled **`CARD_VERSION`** on all published card modules. ### Highlights - **Entity Card:** `select` / `input_select` pickers are more reliable, more compact, and cleaner visually, with no visible header/chevron when expanded. - **Notifications Card:** optional background mobile webhook sync lets a fixed Home Assistant package follow the entities and triggers configured in the card. - **State labels:** Entity Card state chips prefer Home Assistant display formatting before Nodalia fallback dictionaries, so integration-localized enum states can render correctly. ### Added - **`notifications`:** optional `background_mobile` webhook sync for configured notification entities, thresholds, mobile targets, and entity override text. - **`examples`:** `notifications-background-mobile-package.yaml` for server-side mobile push delivery driven by card-synced configuration. ### Fixed - **`entity`:** inline `select` / `input_select` picker open/close no longer depends on render-signature changes, and stale animation callbacks are ignored across rapid taps. - **`entity`:** picker flicker is reduced by avoiding content/icon press bounce for picker-only taps and removing staggered option fade-ins. - **`entity`:** compact select cards keep the same closed height as other compact Entity Cards by hiding the empty picker shell while closed. - **`entity`:** open select pickers clip their animated shell to the rounded panel radius, avoiding square corner artifacts. - **`entity`:** expanded select pickers show only the option list, without the visible “Choose option” header or chevron close button. - **`entity`:** state chips prefer Home Assistant frontend display formatting and HA-provided display attributes before falling back to Nodalia's built-in state dictionary. ### Changed - **Release metadata:** promote **`1.3.1-alpha.*`** (alpha.1–alpha.5) to stable **`1.3.1`**. - **Bundle:** versioned HACS entrypoint **`nodalia-cards-1.3.1.js`**; optional split **`nodalia-cards-core-1.3.1.js`** + **`nodalia-cards-suite-1.3.1.js`**. - **Tests:** regression suite expanded to **202** tests covering Entity Card select picker layout/display behavior and Notifications Card background sync. Per-alpha notes for **`1.3.1-alpha.*`** are archived in [`CHANGELOG-PRERELEASES.md`](./CHANGELOG-PRERELEASES.md). ## [1.3.0] - 2026-06-25 Stable **`1.3.0`** release on **`main`**. Installs match **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`nodalia-cards-1.3.0.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and bundled **`CARD_VERSION`** on all published card modules. ### Highlights - **News Card:** new editorial `custom:nodalia-news-card` with simple, compact, and magazine layouts, source filtering, safe URL handling, render-failure guards, and shared helper history for consistent headlines across clients. - **Entity Card:** inline `select` / `input_select` picker with in-DOM open/close animations, immediate press haptics, entity pictures, improved Lovelace action normalization, and safer lock/cover domain services. - **Climate:** Path-B-compatible schedule storage prefers compact **v1/v2** payloads when they fit `input_text`, preserving quarter-degree setpoints without forcing binary **v3** storage for smaller schedules. - **Polish and stability:** Circular Gauge entrance animation, Power Flow home popup bubble, alarm PIN gating, media-player disconnect guards, deferred timer cleanup, and broad regression coverage. ### Added - **`nodalia-news-card.js`:** News Card for Home Assistant entities that expose news items through attributes (`items`, `articles`, `entries`, `news`, or `headlines`), including magazine carousel mode. - **`news`:** `history_helper` / `mirror_history_local` shared history support, plus examples for helper-backed and real feedreader headline history. - **Docs / examples:** News Card docs and `examples/nodalia-news-real-package.yaml`. ### Fixed - **`news`:** template-sensor JSON strings, unavailable/unknown sensors with cached items, missing entity loading, render exception fallback, source health, and carousel update regressions. - **`entity`:** select picker flicker, clipped active tint, stale fallback timers, immediate haptic feedback, cover/lock toggle routing, Lovelace service `data` / `target` preservation, and missing-state empty shell styling. - **`alarm_panel`:** visible PIN input requires manual entry, and manual PIN watchdog stays armed after resolved/no-op service calls until the alarm state changes. - **`climate`:** Path B automation compatibility for setpoint schedules and pre-webhook detection of oversized helper payloads. - **`cover` / `media_player`:** normalized tap/hold actions no longer fall through to toggles, and media-player tickers/renders do not restart while disconnected. - **`circular_gauge`:** entrance dial animation uses one smooth progress arc instead of striped per-segment tint tweening. - **`power_flow`:** home device popup summary bubble keeps the intended square aspect ratio. ### Changed - **Release metadata:** promote **`1.3.0-alpha.*`** (alpha.1–alpha.17) to stable **`1.3.0`** on **`main`**. - **Bundle:** versioned HACS entrypoint **`nodalia-cards-1.3.0.js`**; optional split **`nodalia-cards-core-1.3.0.js`** + **`nodalia-cards-suite-1.3.0.js`**. - **Tests:** regression suite expanded to **201** tests covering News Card, Entity Card select picker/timers, climate storage, action routing, lifecycle guards, and release manifest coherence. Per-alpha notes for **`1.3.0-alpha.*`** are archived in [`CHANGELOG-PRERELEASES.md`](./CHANGELOG-PRERELEASES.md). ## [1.2.1.1] - 2026-06-11 Stable **`1.2.1.1`** hotfix on **`main`**. Installs match **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`nodalia-cards-1.2.1.1.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and bundled **`CARD_VERSION`** on all published card modules. ### Fixed - **`person`:** location subtitle (`Home` / `Away`, zones) follows the active HA language instead of hardcoded Spanish. - **`entity`:** Lovelace `tap_action` objects (`{ action: "toggle" }`) parse correctly; cover tap toggles `open_cover` / `close_cover` (or `set_cover_position` 100/0); lock tap uses `lock.open` / `lock.lock` instead of `homeassistant.toggle`. - **`entity` / `i18n`:** `language: "auto"` resolves from profile and document `lang` instead of stale `hass.language`. - **`alarm-panel`:** Home/Away/Night arm when `code` or `code_entity` is configured; improved PIN flow and service dispatch. ### Changed - **`utils`:** `coerceCardTapAction`, `applyCardTapActionField`, and `invokeHomeAssistantService` shared helpers for Lovelace actions and HA service calls. - **Release metadata:** promote **`1.2.1.1-alpha.*`** (alpha.1–alpha.2) to stable **`1.2.1.1`** on **`main`**. - **Bundle:** versioned HACS entrypoint **`nodalia-cards-1.2.1.1.js`**; optional split **`nodalia-cards-core-1.2.1.1.js`** + **`nodalia-cards-suite-1.2.1.1.js`**. Per-alpha notes for **`1.2.1.1-alpha.*`** are archived in [`CHANGELOG-PRERELEASES.md`](./CHANGELOG-PRERELEASES.md). ## [1.2.1] - 2026-06-11 Stable **`1.2.1`** release on **`main`**. Installs match **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`nodalia-cards-1.2.1.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and bundled **`CARD_VERSION`** on all published card modules. ### Highlights - **Stability pass:** lifecycle defer cleanup, `isConnected` guards on async paths, ResizeObserver and render-signature gates across device cards. - **Security:** shared **`normalizeSecurityConfig`** rollout; strict service gates on vacuum/climate/media; non-mutating config merges on calendar, advance-vacuum, and device cards. - **Performance:** `joinParts` / stamp caches on notifications, power-flow, person, insignia, fan, humidifier, weather, and more; graph hover DOM patch; optimistic UI gates on fan/humidifier/light. - **i18n:** runtime and editor locale trees completed (12 languages); localized empty states; media browser and control aria-labels on navigation bar, media-player, fan, and humidifier. - **Polish:** circular-gauge thumb orbit; person zone cache by `entity_id`; changelog date corrections. ### Added - **`nodalia-utils.js`:** **`normalizeSecurityConfig`**, **`scheduleDeferTimer`** / **`clearDeferTimers`** on public API. - **Runtime i18n:** **`mediaBrowser`**, **`fan.aria`**, **`humidifierCard.aria`**, **`mediaPlayerCard.aria`**, expanded **`common.aria`**; **`translateFanAria`**, **`translateHumidifierAria`**, **`translateMediaBrowserUi`**, **`translateMediaPlayerAria`** on **`NodaliaI18n`**. - **Tests:** interaction regressions, lifecycle guards, security normalization, render-signature pilots (**149** tests). ### Fixed - **Person card:** zone lookup cache stores **`entity_id`** instead of stale **`hass.states`** snapshots. - **Device cards:** **`normalizeSecurityConfig`** fallback clones **`security`** instead of mutating incoming HA config references. - **Calendar / notifications / power-flow / graph / media-player:** disconnect and post-**`await`** lifecycle guards. - **Circular gauge:** thumb follows dial arc on value decrease and entrance animation. ### Changed - **Release metadata:** promote **`1.2.1-alpha.*`** (alpha.1–alpha.8) to stable **`1.2.1`** on **`main`**. - **Bundle:** versioned HACS entrypoint **`nodalia-cards-1.2.1.js`**; optional split **`nodalia-cards-core-1.2.1.js`** + **`nodalia-cards-suite-1.2.1.js`**. - **`hacs.json`:** minimum Home Assistant **`2025.1.0`** (aligned with README). Per-alpha notes for **`1.2.1-alpha.*`** are archived in [`CHANGELOG-PRERELEASES.md`](./CHANGELOG-PRERELEASES.md). ## [1.2.0] - 2026-06-06 Stable **`1.2.0`** release on **`main`**. Installs match **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`nodalia-cards-1.2.0.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and bundled **`CARD_VERSION`** on all published card modules. ### Highlights - **Scenes Card:** new **`nodalia-scenes-card`** — grid/list layout, tap to activate scenes, visual editor, per-scene tint, launch feedback without dashboard scroll jumps. - **Climate setpoint schedule:** weekly agenda composer (fullscreen overlay, drag/resize blocks), compact **`input_text`** storage (**v2** / **v3**), webhook sync with Path A (disk) and Path B (single automation) examples, WebSocket **`webhook/handle`** from Lovelace. - **Power Flow Card:** home device breakdown popup (overlay + scrollable list), optional day/month **consumption chips**, native entity selectors in the visual editor. - **Interaction & security:** slider-bubble taps no longer toggle light/fan/humidifier/cover; card-body tap restored; climate schedule webhooks default to **admin-only**; **`setByPath`** prototype-key guards across editors; visual editors reattach listeners on reconnect. - **Polish:** entity pictures on device cards; i18n schedule strings (12 runtime locales); power-flow popup long device names; calendar weather forecast stale-run guard. ### Added - **`nodalia-scenes-card.js`:** Lovelace card for **`scene.*`** entities with visual editor, haptics, and styles. - **`nodalia-climate-card.js`:** **`setpoint_schedule_webhook`**, **`setpoint_schedule_helper`**, **`show_schedule_button`**, **`setpoint_schedule_week_starts_on`**, compact schedule storage helpers. - **`nodalia-power-flow-card.js`:** **`show_home_device_popup`**, **`consumption_chips`**, individual device editor rows. - **Examples / docs:** [`examples/climate-setpoint-schedule-*.yaml`](./examples/), [`docs/climate-setpoint-schedule.md`](./docs/climate-setpoint-schedule.md). - **Tests:** climate schedule storage, webhook transport, interaction regressions (126 tests). ### Fixed - **`nodalia-utils.js`:** **`postHomeAssistantWebhook`** prefers **`webhook/handle`** via **`hass.callWS`**; same-origin fallback when authenticated fetch fails. - **`nodalia-climate-card.js`:** schedule save without live climate state; agenda scroll preserved on re-render; composer **`isConnected`** guard after async webhook; webhook admin gate aligned with calendar card. - **`nodalia-light-card.js` / fan / humidifier / cover:** card-body toggle vs slider chrome; optimistic turn-on flush for queued slider changes. - **`nodalia-power-flow-card.js`:** home popup layout for long device names; popup opens when individuals are hidden on the diagram. - **`nodalia-entity-card.js` / `nodalia-fav-card.js`:** **`homeassistant.toggle`** for cover/lock; i18n reads **`localStorage.selectedLanguage`**. - **`nodalia-calendar-card.js`:** weather forecast refresh respects **`refreshRunId`** (no stale overlay). - **Editors:** duplicate shadow listeners removed from constructors; climate visual editor uses **`connectedCallback`** attach pattern. ### Changed - **Release metadata:** promote **`1.2.0-alpha.*`** (alpha.21–alpha.61) to stable **`1.2.0`** on **`main`**. - **Bundle:** versioned HACS entrypoint **`nodalia-cards-1.2.0.js`**; optional split **`nodalia-cards-core-1.2.0.js`** + **`nodalia-cards-suite-1.2.0.js`**. Per-alpha notes for **`1.2.0-alpha.*`** are archived in [`CHANGELOG-PRERELEASES.md`](./CHANGELOG-PRERELEASES.md). ## [1.1.4] - 2026-05-23 ### Fixed - **`nodalia-media-player.js`:** the card editor keeps the player row when the `media_player` entity is cleared, so you can pick another entity on the same slot. Runtime still hides players without a valid entity. Stable **`1.1.4`** patch release. Installs match **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`nodalia-cards-1.1.4.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and bundled **`CARD_VERSION`** on all published card modules. ## [1.1.3] - 2026-05-19 ### Interaction Polish & Dashboard Performance Stable **`1.1.3`** patch release. Installs match **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`nodalia-cards-1.1.3.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and bundled **`CARD_VERSION`** on all published card modules. ### Highlights - **Fan / humidifier:** light-style optimistic power toggles, fluid expand/collapse on power on/off (slider fill/empty synced with controls), and no redundant `set hass` re-renders during active transitions. - **Performance:** three audit passes — render-signature caches, resize/`set hass` short-circuits, tracked-entity stamp caches (notifications, power flow), and climate draft sync gating on busy dashboards. - **Advance vacuum:** zone mode and map tools fixes; map overlays follow active cleaning session mode when the user stays on **All** or **Routines**. - **Editors & guards:** Lovelace **`hui-warning`** / **`ha-alert`** for missing entities; collapsible **Tap actions** sections; **double-tap** on entity, fan, and weather cards; broader editor i18n. ### Added - **`nodalia-utils.js`:** `renderLovelaceEntityGuardCardHtml`, `renderEditorCollapsibleSectionHeaderHtml`, `scheduleCardZoneTap` / `cancelCardZoneTap`. - **`nodalia-entity-card.js` / `nodalia-fan-card.js` / `nodalia-weather-card.js`:** **`double_tap_action`** (and icon variants where applicable). - **Visual editors:** collapsible tap/hold/double-tap sections across climate, weather, person, graph, power-flow, fav, circular gauge, and related cards. ### Fixed - **`nodalia-advance-vacuum-card.js`:** manual **Zone** mode; shared cleaning session no longer clears selections while docked; map tools i18n; display mode follows active cleaning session on the map. - **`nodalia-utils.js`:** entity guard waits for Home Assistant state hydration; accepts entities known via `hass.entities`. - **`nodalia-fan-card.js` / `nodalia-humidifier-card.js`:** optimistic turn-on/off with visual settle; slider fill/empty animations; last-known on-state not stored at **0%** / **0** humidity; power-on expand no longer restarts on every `hass` tick. - **`nodalia-humidifier-card.js` editor:** missing `` after aux block. - **`nodalia-notifications-card.js`:** empty-state copy; vacuum **`water_empty`** i18n; mobile notify only marks successful deliveries. - **`nodalia-fan-card.js` / `nodalia-entity-card.js` / `nodalia-media-player.js`:** editor **Tap actions** toggle visibility. ### Changed - **Bundle:** shared helpers only in **`nodalia-utils.js`** (standalone embed stripped from card sources in the HACS bundle). - **Performance:** fan, humidifier, light, entity — skip optimistic sync and resize re-renders when signature unchanged; alarm/vacuum/fav/climate/power-flow/notifications/weather optimizations (see **`docs/performance-audit.md`**). - **Editor i18n:** tap/hold/double-tap labels for climate, weather, light, entity (all locales). - **Release metadata:** promote the **`1.1.3-alpha.*`** line to stable **`1.1.3`**. Per-alpha notes for **`1.1.3-alpha.*`** are archived in [`CHANGELOG-PRERELEASES.md`](./CHANGELOG-PRERELEASES.md). --- ## [1.1.2] - 2026-05-15 Stable **`1.1.2`** patch release. Installs match **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`nodalia-cards-1.1.2.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and bundled **`CARD_VERSION`** on all published card modules. ### Highlights - **Entity Card:** **`tap_action: navigate`** with **`navigation_path`** uses Home Assistant SPA navigation so person/detail subviews work in the Companion App (unlike **`tap_action: url`** with relative paths, which reloads or opens the system browser). - **Cover Card:** cover controls follow the fan/light interaction model — no dashboard flicker on tap, slider-only pointer capture, and a dedicated compact transport lane at **6 columns** or less. - **Light Card:** temperature slider track gradient direction is correct for **`color_temp`** (mired) lights. - **Editors:** new cards and entity changes copy the entity **friendly name** into the **Name** field when it is still empty. ### Added - **`nodalia-entity-card.js`:** **`tap_action: navigate`** and **`navigation_path`** (plus icon/hold variants) via `hass.navigate` → `history.pushState` + `location-changed` → `hass-navigate`. - **`nodalia-fan-card.js` / `nodalia-humidifier-card.js` / `nodalia-entity-card.js`:** optimistic toggle state for instant tap feedback with HA confirmation fallback. ### Fixed - **`nodalia-light-card.js`:** temperature slider track gradient for **`color_temp`** (mired) lights — cool on the left, warm on the right; **`color_temp_kelvin`** keeps warm→cool left→right. - **`nodalia-cover-card.js`:** fan-style pointer handling (slider-only capture, no `button.blur()` or scroll-restore helpers) so the dashboard no longer flashes when tapping controls. - **`nodalia-cover-card.js`:** suppress focus/scroll nudges on cover services and slider commits on bottom-of-dashboard layouts. - **`nodalia-fan-card.js` / `nodalia-humidifier-card.js`:** power/control expansion animations no longer restart visibly after fast optimistic toggles. - **`nodalia-weather-card.js`:** forecast chart popups use an opaque theme-safe surface so cards below no longer show through. - **`nodalia-light-card.js`:** quick color-temperature preset labels use runtime i18n instead of hardcoded strings. ### Changed - **`nodalia-utils.js`:** **`applyDefaultConfigNameFromEntity`** fills the visual editor **Name** field from the entity friendly name when empty or still matching the previous entity label. - **`nodalia-cover-card.js`:** render signature no longer stringifies the full config object (fewer unnecessary re-renders). - **`README.md`:** Buy Me a Coffee badge placement; removed duplicate donation links and PayPal entry. - **Release metadata:** promote the **`1.1.2`** line from prerelease to stable **`1.1.2`**. Per-alpha notes for **`1.1.2-alpha.*`** are archived in [`CHANGELOG-PRERELEASES.md`](./CHANGELOG-PRERELEASES.md). --- ## [1.1.1] - 2026-05-15 Stable **`1.1.1`** patch release. Installs match **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`nodalia-cards-1.1.1.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and bundled **`CARD_VERSION`** on all published card modules. ### Highlights - **Cover Card:** refined the post-`1.1.0` interaction model so cover controls, card/icon taps, slider commits, and compact layouts behave closer to the Fan and Light cards, with fewer focus/scroll side effects on mobile and bottom-of-dashboard views. - **Power Flow Card:** hardened animated flow rendering so dots start on the drawn connector, follow normalized SVG paths, and avoid corner flashes or forced layout reflows. - **Light Card:** added quick color and temperature preset rows with visual-editor support. - **Hold actions:** cards with long-press support now default to Home Assistant **more-info**, making body/icon hold behavior more useful out of the box. ### Added - **`nodalia-light-card.js`:** optional quick **temperature** and **color** preset chip rows with slider/mode controls. - **`nodalia-light-card.js` editor:** up to **four** configurable color presets with label and color picker fields, including editor translations in **`i18n/editor/*`** and the embedded editor catalog. ### Fixed - **`nodalia-cover-card.js`:** remove the remaining cover-only scroll anchoring/focus workarounds, `overflow-anchor` overrides, `touch-action: manipulation`, and forced `tabindex="-1"` controls so cover interactions follow the same browser event path as fan/light cards. - **`nodalia-cover-card.js`:** polish open / stop / close, card body, icon, and slider interactions across the alpha line so taps no longer steal focus or nudge dashboard scroll while still allowing normal page scrolling. - **`nodalia-cover-card.js`:** prevent narrow dashboard layouts from overlapping the open / stop / close transport with the view-toggle button by using a dedicated compact lane at **6 columns** or less. - **`nodalia-power-flow-card.js`:** keep simple-layout and SVG flow dots hidden until their motion path is ready, preventing flashes in the card corner on first dashboard navigation or animation resume. - **`nodalia-power-flow-card.js`:** normalize SVG **`animateMotion`** paths relative to connector start points so animated dots travel on the drawn line instead of along the card edge. - **`nodalia-power-flow-card.js`:** make SVG motion-path normalization handle the standard SVG path command set (`M/L/H/V/C/S/Q/T/A/Z`, relative and absolute) and compact arc flags, preventing parser desynchronization on optimized paths. - **`nodalia-utils.js`:** long-press / **`hold_action`** gestures no longer stop working after repeated use when Home Assistant modals stop event bubbling. ### Changed - **Hold actions:** **`nodalia-light-card`**, **`nodalia-fan-card`**, **`nodalia-entity-card`**, **`nodalia-humidifier-card`**, **`nodalia-cover-card`**, **`nodalia-insignia-card`**, and **`nodalia-vacuum-card`** now default **`hold_action`** to **more-info** instead of **none**. - **`nodalia-cover-card.js`:** when position or tilt sliders are shown, the main control row follows the Fan/Light card slider-row pattern with a right-side toggle between slider and arrow-control views. - **`nodalia-cover-card.js`:** open / stop / close actions use a centered pill transport treatment, with compact grid behavior for narrow stacks. - **`nodalia-light-card.js`:** brightness / temperature / color quick presets are centered and only shown for the active slider mode. - **`nodalia-light-card.js`:** avoid replaying expanded controls during the power-down animation when the panel was already collapsed. - **`nodalia-power-flow-card.js`:** unpause SVG flow animations after two animation frames without forcing a synchronous `offsetWidth` layout read. - **Release metadata:** promote the **`1.1.1`** line from prerelease to stable **`1.1.1`**. Per-alpha notes for **`1.1.1-alpha.*`** are archived in [`CHANGELOG-PRERELEASES.md`](./CHANGELOG-PRERELEASES.md). --- ## [1.1.0] - 2026-05-12 Stable **`1.1.0`**. Installs match **`package.json`**, **`hacs.json`**, **`nodalia-cards.manifest.js`**, **`nodalia-cards-1.1.0.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and bundled **`CARD_VERSION`** on all published card modules. ### Highlights - **`custom:nodalia-cover-card`:** Home Assistant **`cover`** card with open / stop / close, optional position and tilt sliders, compact layout, scroll-safe controls on mobile, and a visual editor aligned with the Fan Card. **`open_close_icons`** chooses vertical (↑↓) or horizontal (←→) arrows; **`auto`** follows the entity **`device_class`** so **`door`**, **`gate`**, and **`garage`** use horizontal arrows (better for sliding doors and similar), while blinds, shades, curtains, and shutters keep vertical arrows by default. - **`nodalia-power-flow-card`:** diamond-style energy diagram, grid export / feed-in support, animated flows with viewport-aware motion pause, routing and chip polish, and locale-aware number formatting. - **`nodalia-calendar-card`:** cached **`Intl.DateTimeFormat`** reuse on busy calendars to cut formatter churn. - **Localization:** profile language resolution fixes, broader runtime and editor **`i18n`**, contributor docs (**`docs/TRANSLATIONS.md`**) and dashboard styling reference (**`docs/STYLING.md`**). - **Broader card polish:** optional **`show_entity_picture`** on several device cards, alarm panel PIN and editor fixes, notifications **`tap_action`** for smart rules, deduplicated **`customCards`** registration, graph card cleanup of stray listeners, and removal of stray Spanish numeric fallbacks on power flow, circular gauge, and graph cards. Per-alpha notes for **`1.1.0-alpha.*`** are archived in [`CHANGELOG-PRERELEASES.md`](./CHANGELOG-PRERELEASES.md). --- ## [1.0.5] - 2026-05-13 Stable **`1.0.5`**. Installs match **`package.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and **`CARD_VERSION`** on bundled card modules (**`1.0.5`**). ### Fixed - **`nodalia-climate-card.js`:** temperature step controls now validate the current target through the climate number parser, keeping the explicit **`null`** guard against **`Number(null) === 0`** while still accepting numeric-string setpoints if an integration exposes them. --- ## [1.0.4] - 2026-05-13 Stable **`1.0.4`**. Installs match **`package.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and **`CARD_VERSION`** on bundled card modules (**`1.0.4`**). ### Fixed - **`nodalia-climate-card.js`:** restored single-setpoint climate support when integrations expose valid **`min_temp`** and **`max_temp`** but no current target value, so normal thermostat dial dragging and **`+` / `−`** controls remain enabled. - **`nodalia-climate-card.js`:** step controls now reject a missing target with an explicit **`null`** check instead of letting **`Number(null)`** become **`0`**. - **`nodalia-climate-card.js`:** queued setpoint commits that wake an HVAC mode now include **`hvac_mode`** in the follow-up **`climate.set_temperature`** call when available, matching the Ecobee/template climate setpoint creation path while still trying **`set_temperature`** directly if no wake mode exists. - **`nodalia-climate-card.js`:** queued temperature commits no longer treat an empty follow-up queue as numeric **`0`**, avoiding unnecessary retry loops after a successful setpoint update. ## [1.0.3] - 2026-05-13 First stable **`1.0.3`** release focused on refining the overall dashboard experience: major improvements to the **Climate Card**, expanded **hold actions**, visual polish across multiple cards, translation updates, editor improvements, and several rendering/runtime fixes discovered during the early alpha cycle. This version stabilizes the entire **`1.0.3-alpha.*`** line into a polished production-ready release for HACS and manual installs. Installs match: - **`package.json`** - **`nodalia-cards.manifest.js`** - **`__NODALIA_BUNDLE__.pkgVersion`** - bundled **`CARD_VERSION`** all aligned to **`1.0.3`**. --- ### Added - **Hold (long-press) actions** support for: - **`nodalia-humidifier-card.js`** - **`nodalia-vacuum-card.js`** - **`nodalia-insignia-card.js`** - Separate hold handling for: - card body - icon - badge areas (where applicable) - Optional: - **`hold_navigation_path`** - **`icon_hold_navigation_path`** for direct Lovelace navigation from hold gestures. - Shared host-level gesture handling using: - **`NodaliaUtils.bindHostPointerHoldGesture`** improving reliability during shadow DOM re-renders. - New visual editor controls and translations for: - hold actions - vacuum navigation options - chip radius presets - New configurable: - **`styles.chip_border_radius`** available across most Nodalia cards. - Visual editor presets: - Capsule - Soft - Rounded - Square --- ### Improved - Significant **Climate Card** improvements: - better Ecobee compatibility - improved handling of `hvac_mode: off` - improved support for entities exposing null setpoints - cleaner dial rendering logic - better off-state visuals - more consistent mode icon behavior - improved interaction handling for edge-case thermostats - Improved: - translations - editor consistency - rendering stability - dashboard responsiveness - animation behavior - icon visibility - contrast handling - Better visual consistency across: - light - fan - humidifier - entity - climate - calendar cards. - Improved inactive/off-state icon readability in both: - dark themes - light themes - Improved dial track readability and thumb visibility on: - tinted backgrounds - heat/cool accent surfaces - Improved automatic migration of legacy YAML defaults through: - `normalizeConfig` --- ### Fixed - Fixed multiple Climate Card edge cases: - duplicated temperature display - invalid center thumb rendering - incorrect off-state visuals - incorrect `auto` HVAC icon - inconsistent off-state accent handling - Fixed: - `ReferenceError` on `nodalia-entity-card.js` that could blank entire dashboard sections. - Fixed: - collapsed controls animation regression on `nodalia-light-card.js` - Fixed: - calendar icon contrast on accent-tinted surfaces - Fixed: - legacy inactive icon colors causing washed-out visuals - Fixed: - inactive dial tracks becoming unreadable on tinted climate surfaces --- ### Changed - Climate Card: - `auto` HVAC mode now uses: - **`mdi:thermostat-auto`** instead of refresh-style icons. - Off-state Climate Card visuals now use: - proper power glyphs - dedicated off accent styling - Dial inactive track blending adjusted for improved readability. - Bundle diagnostics and release metadata updated for stable `1.0.3`. --- ### Notes This release also includes many smaller: - rendering optimizations - internal cleanup changes - editor refinements - translation updates - animation tuning - compatibility fixes that were iterated throughout the alpha cycle but are not individually listed here. --- ## [1.0.2] - 2026-05-13 — Stability, Climate & UX Refinement Stable **`1.0.2`**. Installs match **`package.json`**, **`nodalia-cards.manifest.js`**, **`__NODALIA_BUNDLE__.pkgVersion`**, and bundled module **`CARD_VERSION`** values (**`1.0.2`**). This release focuses heavily on: - climate card robustness, - dual-range thermostat support, - layout stability, - i18n consistency, - default theme compatibility, - and overall UX polish across the bundle. A large portion of this release was directly driven by community feedback after the `1.0.0` stable launch. --- # ✨ Highlights - Major Ecobee / `heat_cool` climate compatibility improvements - New dual-range climate dial system - Better default Home Assistant theme compatibility - Improved English fallback handling - More robust calendar recurrence deletion UX - Better large-layout climate responsiveness - Reduced layout instability and dead space - Improved accessibility and localization consistency --- # 🌡️ Climate Card Overhaul The Climate Card received the largest set of improvements in this release. ## Added ### Dual-range `heat_cool` climate support The card now properly supports thermostat integrations that expose: - `target_temp_low` - `target_temp_high` instead of a single `temperature` setpoint. This dramatically improves compatibility with integrations such as: - Ecobee - advanced HVAC systems - comfort-band thermostats ### New dual-range circular dial When using `heat_cool`: - separate warm/cool arcs are rendered - independent heat/cool thumbs are displayed - current temperature stays centered - the comfort band is visually represented ### Thumb focus system Dual-range dials now support: - thumb selection - per-thumb `+ / −` adjustment - whole-range shifting when no thumb is selected - non-crossing constraints - minimum comfort-band gap enforcement ### Configurable dial size Added: ```yaml styles: dial: max_size: 480px ``` with full visual editor support. --- # 🛠️ Climate Fixes & Improvements ## Fixed - Ecobee-style entities no longer display `0` / `0.0 °C` when `temperature` is `null` - Climate cards now correctly respect Home Assistant temperature units (`°F` / `°C`) - Null/non-finite climate values are handled safely - Dual-range climates no longer rely on invalid `low <= high` assumptions - `heat_cool` mode now always uses: - `target_temp_low` - `target_temp_high` instead of incorrectly sending `temperature` - Better handling for integrations exposing many HVAC modes - Improved dial scaling in larger layouts - Fixed large empty vertical areas below climate controls - Improved multi-row mode button layouts - Better compact handling for 4–6+ HVAC modes - Improved superscript/unit positioning inside the dial - Improved auto-height dashboard behavior - Improved layout stability inside section views ## Accessibility & UX - Better `aria-label` localization - English fallback labels for climate states/actions - Improved focus behavior for range controls - More consistent translation fallback behavior --- # 🗓️ Calendar Improvements ## Fixed recurring event deletion UX Recurring event deletion flows were significantly improved. ### Improvements - Recurrence dialogs now reliably appear from compact calendar mode - Overlay/dialog synchronization fixed - Canceling recurrence deletion cleanly restores the previous view - Better inline error feedback when deletion fails - Added translated recurrence deletion error messages --- # 🌍 i18n & Translation Improvements This release includes a major fallback consistency pass. ## Fixed - English fallback behavior across nested translation maps - Mixed-language labels in edge cases - Runtime fallback inconsistencies - Hardcoded Spanish climate labels - Better cached locale merging performance ## Improved - Translation consistency between cards - Shared locale merging behavior - Runtime translation performance --- # 🎨 Layout & Theme Compatibility ## Improved - Default Home Assistant theme compatibility - Better transparency/surface fallbacks - Improved contrast handling - Better large-grid responsiveness - Cleaner auto-height section behavior - Reduced dead space in climate layouts - More stable dashboard rendering in dense mobile layouts --- # ⚡ Performance ## Improved - Cached locale merge usage - Reduced unnecessary runtime merges - Cleaner climate render signatures - Better handling of unknown temperature values - Less layout churn in responsive climate layouts --- # 🧩 Repository / Build ## Changed - `.pnpm-store/` is now ignored in `.gitignore` - Internal bundled versions are fully synchronized across: - `package.json` - `manifest` - `__NODALIA_BUNDLE__` - bundled `CARD_VERSION`s --- # 🙌 Community-driven Release A huge part of `1.0.2` came directly from: - user bug reports, - climate compatibility testing, - translation feedback, - layout edge cases, - and real dashboard usage shared by the community after `1.0.0`. Thanks to everyone testing, reporting issues, suggesting improvements, and helping shape Nodalia Cards so quickly after launch. --- # 🏁 Summary `1.0.2` turns the initial stable launch into a significantly more robust and production-ready experience. This release especially strengthens: - climate interoperability, - thermostat UX, - layout reliability, - i18n consistency, - and dashboard scalability. Smarter climate interactions. Cleaner layouts. Better compatibility. More polished UX. Built for real Home Assistant dashboard --- ## [1.0.1] - 2026-05-12 ### Changed - **`CARD_VERSION`** on all bundled card modules is **`1.0.1`**, matching **`package.json`** and **`__NODALIA_BUNDLE__.pkgVersion`**. - Person card and alarm panel use English fallbacks when **`NodaliaI18n`** is missing (`emptyBody`, default alarm title / editor placeholder). - English **`person.emptyBody`** in **`nodalia-i18n.js`** uses the same “Configure `entity`…” wording as the card fallback. ### Fixed - **`translateMediaPlayerState`** always returns a string for unknown media states (`en.unknown` with final **`"Unknown"`** fallback). --- ## [1.0.0] - 2026-05-12 First stable `1.0.0` release of **Nodalia Cards**. This release promotes the full `1.0.0-alpha.*` / `1.0.0-beta.*` development cycle to the stable `main` line. It consolidates the new Calendar and Notifications cards, major Advance Vacuum improvements, broader multilingual support, visual-editor hardening, safer service actions, and a more reliable HACS/bundle loading experience. Installs should match: - `package.json`: `1.0.0` - `window.__NODALIA_BUNDLE__.pkgVersion`: `1.0.0` - Recommended Git tag: `v1.0.0` ### Highlights | Area | Summary | |------|---------| | Calendar | Native Home Assistant events, large popup, recurring events, forecast integration and native delete support. | | Notifications | New smart notification center with grouped alerts, persistent dismissals, mobile delivery and visual editor. | | Advance Vacuum | More stable map rendering, shared session persistence, cleaner controls and better room/zone/goto/routine handling. | | Visual editors | Better native HA selectors, color pickers, collapsible sections and multilingual labels. | | i18n | Runtime and editor translations expanded across supported languages. | | Bundle / HACS | More reliable single-file loading, version diagnostics and cache validation. | | Security | Safer URL handling, strict service-action options and service allowlists. | | Performance | Reduced unnecessary renders, lighter signatures and smoother animations. | --- ### Added - New `custom:nodalia-calendar-card`. - New `custom:nodalia-notifications-card`. - Calendar event composer for native Home Assistant calendar events. - Calendar support for: - title, - description, - location, - all-day events, - timed events, - recurring events, - custom recurrence intervals, - event color metadata. - Calendar large popup with: - monthly view, - day detail view, - event detail view, - forecast chips, - native event creation, - native event deletion when supported by Home Assistant. - Notifications card with: - smart alerts, - compact/expanded stack, - persistent dismissals, - custom notifications, - per-entity overrides, - optional shared persistence, - optional mobile notification delivery. - Smart notification sources for: - calendar events, - vacuum state and errors, - heat/cold recommendations, - humidity and dehumidifier recommendations, - rain forecast, - low battery, - humidifier tank state, - printer ink level, - media players active in empty rooms. - Mobile notification support for: - modern `notify.*` entities via `notify.send_message`, - legacy `notify.mobile_app_*` services, - optional critical alerts for supported mobile targets. - Shared cleaning-session persistence support for Advance Vacuum through `shared_cleaning_session_entity` or webhook. - Visual editor support for more native Home Assistant controls: - entity picker, - icon picker, - color picker, - domain-filtered selectors. - Editor i18n catalogs for additional cards and shared controls. - Full editor locale files for: - `de`, - `fr`, - `it`, - `nl`, - `pt`, - `ru`, - `el`, - `ro`. - Runtime/editor language support and normalization improvements across: - Calendar, - Notifications, - Advance Vacuum, - Vacuum, - Climate, - Alarm Panel, - Entity, - Person, - Weather, - Light, - Fan, - Humidifier, - Power Flow, - Media Player, - Navigation, - Insignia. - Icon animation toggles for active states in: - Weather, - Fan, - Humidifier, - Vacuum, - Advance Vacuum. - Bundle diagnostics via `window.__NODALIA_BUNDLE__` with package version and hash. --- ### Changed - `nodalia-cards.js` is again the recommended single-file entrypoint for HACS/manual installs. - Calendar card now uses native Home Assistant calendar persistence instead of local/reminder-only storage. - Calendar recurring events now use Home Assistant-compatible `dtstart` / `dtend` payloads. - Calendar forecast loading is more resilient and uses modern Home Assistant forecast APIs where available. - Notifications card visuals now align more closely with the Nodalia Entity Card design language. - Notifications compact stack now uses decorative rear layers with controlled height, opacity and spacing. - Advance Vacuum footer controls now use fixed grid slots for left/center/right buttons. - Advance Vacuum side controls no longer grow to match the primary button when utility panels are open. - Advance Vacuum surfaces now share `--av-*` design tokens across: - controls, - mode pills, - map frame, - map tools, - zone handles, - room markers, - goto markers, - room chips, - utility options, - routine tiles. - Advance Vacuum map raster URL cache busting now depends on the map entity update time, not live robot position. - Advance Vacuum map transitions reuse the same image element when the logical map URL is unchanged. - Advance Vacuum zone mode no longer shows the extra zone-count chip in the modes panel. - Fan and Humidifier active-icon animations use compositor-friendly `translate3d`. - Weather icon animations avoid expensive filter animation paths where possible. - Navigation/media player presentation was refined for smoother long-session use. - Render signatures were made more selective to reduce unnecessary work. - Locale string merging is cached to reduce allocation churn. - Climate drag listeners are attached only during active drag operations. - Security controls are exposed more consistently in visual editors. - Custom service actions can be restricted with strict mode and allowlists. - URL actions are sanitized before navigation/opening. - New-tab URL actions use safer `noopener,noreferrer`. --- ### Fixed - Calendar recurring event creation no longer fails with Home Assistant errors about `start` / `end` versus `dtstart` / `dtend`. - Calendar custom recurrence now validates frequency and interval before sending. - Calendar event detail no longer shows raw `RRULE` for common recurrence types. - Calendar composer no longer clips in empty or small popup states. - Calendar forecast data no longer disappears in several provider/timezone combinations. - Calendar loading no longer causes repeated refresh loops in installations with many state changes. - Calendar stale event state is cleared after load errors to avoid ghost entries. - Notifications entrance animation no longer gets removed before first paint by immediate Home Assistant re-renders. - Notifications entrance animation no longer replays simply from scrolling inside the same panel. - Notifications stack no longer collides with cards below it in compact mode. - Notifications no longer auto-add source chips when a custom message intentionally omits `{source}`. - Notifications avoid sending mobile alerts that were dismissed while queued. - Notifications mobile sent markers are persisted only when at least one channel succeeds. - Vacuum errors such as `main_brush_jammed`, `lidar_blocked`, `filter_blocked`, `return_to_dock_fail` and similar states are shown as real translated errors instead of generic paused/unknown states. - Advance Vacuum shared persistence no longer clears helpers accidentally when payloads exceed helper limits. - Advance Vacuum shared session restore correctly preserves routines and utility panel state. - Advance Vacuum webhook-only persistence deduplicates empty sessions. - Advance Vacuum strict service mode no longer opens everything when allowlists are empty. - Advance Vacuum helper persistence is not blocked by user-facing service allowlists. - HACS cache/version confusion is easier to diagnose through bundle metadata. - Visual editors no longer leak large amounts of Spanish/English mixed text in non-Spanish locales. - German/Dutch/Italian/French editor labels no longer show broken generated fragments such as partial `Show`, `Enable` or `Open` translations. - Insignia horizontal scroll strips no longer clip pill shadows at the bottom. - Insignia icon-only pills keep safer default vertical spacing. - Weather forecast date labels now respect the resolved HA/card locale instead of sticking to the browser/default language. - Home Assistant modern `notify.send_message` payloads avoid unsupported legacy fields where needed. - Several long-session animation paths were optimized to reduce stutter. --- ### Removed - Calendar local quick reminders and completed-event persistence helpers were removed from the final stable design. - Calendar no longer relies on localStorage/input_text completion state for native event workflows. - Calendar editor options related to completed-event persistence were removed. - Old experimental loader behavior that depended on auxiliary files being served beside the main HACS filename was replaced by the stable single-file bundle path. - Several obsolete or duplicate editor i18n override blocks were consolidated. --- ### Card version alignment For this milestone, the following card metadata is aligned with the stable `1.0.0` release line: - `nodalia-notifications-card` - `nodalia-calendar-card` - `nodalia-advance-vacuum-card` Other internal `CARD_VERSION` values may remain card-specific where they track independent component evolution. --- ### Upgrade notes 1. Redownload the repository from HACS or install the GitHub release/tag `v1.0.0`. 2. Make sure the Lovelace resource points to the bundled file: `/hacsfiles/nodalia-cards/nodalia-cards.js` 3. Hard-refresh the browser or clear frontend cache if Home Assistant still loads an older bundle. 4. Verify the loaded version in the browser console: `window.__NODALIA_BUNDLE__` Expected result: `pkgVersion: "1.0.0"` 5. If you used prerelease Calendar completion helpers, review your Calendar card YAML because the stable card now relies on native Home Assistant calendar events instead of completed/reminder helper persistence. 6. If you use strict service actions, review each card’s allowed services/domains after upgrading. --- ## [0.6.1] - 2026-05-05 Patch stable release on `main`. ### Fixed - Editor i18n consistency for newly added service-security labels. - Navigation media-player background sanitization. - Navigation customization support for: - `styles.media_player.border`, - `styles.media_player.border_radius`, - `styles.media_player.box_shadow`. --- ## [0.6.0] - 2026-05-05 Second stable release on `main`. This release focused on refinement, stability, security hardening, smoother interactions and internal architecture improvements across the bundle. ### Highlights - Smoother Graph card hover and tooltip handling. - Reduced Navigation bar and mini-player animation flicker. - Better media-player visual alignment with the Nodalia design system. - Strict service-action controls exposed in visual editors. - Safer URL handling. - Runtime style sanitization in critical paths. - Shared render-signature helper. - CI pipeline with install, test and bundle checks. - Stability checklist for the `0.6.0` release line. --- ## [0.5.0] - 2026-05-06 First stable release on the `0.5.x` line. This release consolidated interaction smoothing, security hardening, editor UX improvements and broader translation coverage. ### Highlights - Shared `sanitizeActionUrl()` helper. - Safer new-tab actions. - Optional strict mode and allowlists for service actions. - CSS/style sanitization in configurable render paths. - Improved Graph hover fluidity. - Reduced drag overhead in sliders and Climate dial. - Improved Insignia icon-only sizing and scroll behavior. - Expanded editor and runtime i18n coverage. --- ## [0.4.0] - 2026-05-06 Stable `0.4.x` release. This release focused on sharper history visuals, a more dependable Navigation shell, shared tint/contrast logic, a full Insignia editor and broader editor/i18n polish. ### Highlights - Reworked Graph card line and area visuals. - Improved automatic graph ranges by metric. - Navigation bar shelf geometry and full-width options. - Better media artwork handling. - Shared `NodaliaBubbleContrast` logic. - Stronger Entity/Fan/Humidifier visual consistency. - Full Insignia visual editor and tinting system. - Wider Spanish editor normalization and locale coverage. --- ## [0.3.0] - 2026-05-04 Stable `0.3.x` release. This release brought major multilingual UI improvements, Power Flow refinements and broader editor support. ### Highlights - Runtime dictionaries for additional locales. - Expanded Lovelace editor translations. - Major Power Flow layout and SVG improvements. - Improved Climate, Person and Advance Vacuum visuals. - Better Music Assistant localized browse labels. --- ## [0.2.1] - 2026-05-03 ### Fixed - Rebuilt `nodalia-cards.js` with `window.__NODALIA_BUNDLE__` metadata to help confirm the actually loaded version and break stale caches. --- ## [0.2.0] - 2026-05-03 First stable multilingual release. ### Highlights - Runtime i18n module. - Visual editor i18n maps. - Initial support for `es`, `en`, `de`, `fr`, `it` and `nl`. - Bundle support via `nodalia-cards.js`. - Initial broad editor translation coverage. --- ## [0.1.0] Initial public development line.