Releases: jrhubott/adaptive-cover-pro-card
v2.5.1
Highlights: Two visual and layout corrections ship in this patch. The sun dot on the sky compass and elevation chart now reads clearly at a glance: warm yellow or gold when the sun is up, dim grey when it has set. The detailed tile card floors its grid height at 2 rows so the controls row never clips in tight Sections layouts. No new config keys; no migration needed.
🐛 Fixed
-
Sun dot color legibility — The sky compass and elevation chart sun dot previously used colors that blurred the distinction between daytime and nighttime states.
.sun-dot.up(above horizon, outside FOV) now fills#ffe680(light yellow);.sun-dot.in-fov(in FOV but not hitting) usesvar(--warning-color, gold);.sun-dot.valid(actively hitting) keepsvar(--warning-color, gold)with a drop-shadow glow;.sun-dot.night(below horizon) renders atvar(--secondary-text-color)at reduced opacity — a dim grey that clearly signals the sun has set. Changes land insrc/components/sky-compass.tsandsrc/components/elevation-chart.ts. -
Tile card controls clipping in narrow grids —
getGridOptions()on the detailed tile layout now enforces a minimum of 2 grid rows. Previously, a single-row allocation could clip the controls row in narrow or compact Sections columns. The floor is applied insrc/adaptive-cover-pro-tile-card.ts.
📦 Install / Upgrade
Through HACS, update to v2.5.1. Restart is not required for the card; reload your browser or dashboard.
HA caches ES modules aggressively. After updating, bump the ?v=2.5.1 query string on your Lovelace resource URL (/hacsfiles/adaptive-cover-pro-card/adaptive-cover-pro-card.js?v=2.5.1) to ensure browsers pick up the new bundle. A hard-refresh alone is not sufficient.
No config migration needed. All changes are visual corrections and a layout floor; existing configs work without modification.
Compatibility: Home Assistant 2024.1+, Adaptive Cover Pro integration v2.22.1-beta.3 or newer.
v2.5.0
Highlights: The cover bar and sky compass visual language now form a coherent whole — cover-bar fill colors match the compass wedges, an override wedge shows the gap between commanded and actual position, and the sun dot distinguishes three states (hitting, in-FOV-not-valid, outside-FOV) so users can diagnose solar-control behavior at a glance. Tile controls reflow to their own row in narrow Sections columns, and every card now declares getGridOptions() so the HA Sections layout sizes cards correctly without manual tuning. The legend loses its redundant sun entries and gains a single "Sun" entry. Bundle grew ~5.7 KB (228,900 → 234,747 bytes).
✨ Features
-
getGridOptions()declared on all three card types (#143) — The main card, sky-compass card, and tile card now implementgetGridOptions(), telling the Sections layout the card's default column span, row count, and min/max bounds. The main card scales its row count with the number of visible sections. Without this, HA would size every card identically and resizing was erratic. -
Override actual-vs-target wedge on the sky compass (#132, #142) — When a cover is under manual or force override, the compass renders a second wedge via
overrideDivergenceTarget()insrc/lib/geometry.tsto visualise the gap between the integration-commanded position and where the cover physically sits. The window segment color on the main-card compass follows the same override state, so the two visuals stay in sync. -
Tile controls reflow in narrow Sections columns (#136, #139) — Tile card layout now uses CSS container queries (
container-type: inline-size) instead of viewport media queries. Below 340 px card width the controls row drops to its own line, preventing icon and label truncation in narrow Sections columns where@mediais blind to the actual column width. -
Cover bar colors match the sky compass (#135, #140) — The cover-bar fill now uses the same gold/blue palette as the compass wedges: the open segment is gold, the closed segment is the selected cover color. The percentage label shifts left to clear the bar edge.
-
3-way sun dot state (#137, #138) — A new pure helper
src/lib/sun-dot-state.tsclassifies the sky-compass and elevation-chart sun dot as gold (hitting), light-yellow (in_fov_not_valid), or dim (outside_fov). The authoritative source is thedecision_trace.sun_stateattribute introduced in integration PR #554; on older integration builds the card falls back to deriving the same three states fromdirect_sun_valid+sun_position.in_fov. -
cursor: defaulton all tooltips (#134, #141) — Tooltip elements across the full card suite switch fromcursor: helptocursor: default, removing the misleading question-mark cursor on non-interactive elements. -
Collapsed Sun legend entry — The sky-compass legend previously listed separate swatches for each above-horizon sun state. These collapse into a single "Sun" entry, removing the
.sun.in-fovCSS rule and thecompass.in_fovi18n key.
🐛 Fixed
- Cover bar closed segment color (#135) — Two earlier iterations painted the open/closed segments in the wrong colors or used hard-coded values that ignored the cover's configured color. The closed segment now always uses the selected cover color; the open segment is gold to match the compass hitting-sun wedge.
📦 Install / Upgrade
Through HACS, update to v2.5.0. Restart is not required for the card; reload your browser or dashboard.
HA caches ES modules aggressively. After updating, bump the ?v=2.5.0 query string on your Lovelace resource URL (/hacsfiles/adaptive-cover-pro-card/adaptive-cover-pro-card.js?v=2.5.0) to ensure browsers pick up the new bundle. A hard-refresh alone is not sufficient.
No config migration needed. All changes are additive or visual corrections; existing configs work without modification.
Compatibility: Home Assistant 2024.1+, Adaptive Cover Pro integration v2.22.1-beta.3 or newer. The authoritative sun-dot path (#137) requires an integration build that includes decision_trace.sun_state (integration PR #554); the card falls back gracefully on older builds.
v2.4.0
Highlights: The sky compass and elevation chart gain substantial new visual depth: an actual-vs-target cover wedge makes position error immediately visible, multi-window field-of-view ribbons are now overlaid directly inside the chart grid, and schedule windows are surfaced on both the elevation chart and across the decision strip and tile cards. Tooltip elements across all cards now signal interactivity with cursor: help, and the now-line on the sun/elevation chart shows its current time. One fix corrects a climate standby label that was silently showing "Unknown". Bundle grew ~3.9 KB (224,977 → 228,900 bytes).
✨ Features
-
Actual-vs-target cover wedge on the sky compass (#132) — A second wedge now renders alongside the FOV arc to show the gap between where a cover is commanded and where it physically sits. Main-card quadrant coloring adapts via the
quadrant_colorsconfig option, with arrow coloring conditioned on the same state. -
Multi-window FOV ribbon in the elevation chart grid — Multiple windows now each contribute a stacked FOV row rendered directly inside the chart grid, replacing the previous single-window overlay. Each row maps to its own window's field-of-view band, making per-window solar exposure easy to read at a glance.
-
Schedule window surfaced across all cards (#128, #131) — The automation schedule window — derived from
schedule_start_minutesandschedule_end_minuteson thecontrol_statusentity attributes — is now visualized as a shaded region on the elevation chart and as anoff_schedulebadge on the decision strip and tile card. Coverage of out-of-window states no longer requires opening more-info. -
Help cursor on tooltips and now-line time on the sun chart — Every tooltip across the card suite now sets
cursor: helpso users know the element is interactive. The now-line on the elevation/sun chart additionally displays its wall-clock time, usingformatClockwith correct timezone handling.
🐛 Fixed
- Climate standby shown instead of "Unknown" (#129, #130) — When the climate switch is off, the climate panel was falling through to a generic "Unknown" label. The
climate_standbyi18n key is now resolved correctly, giving users a meaningful state string in all supported locales.
📦 Install / Upgrade
Through HACS, update to v2.4.0. Restart not required for the card; reload your browser/dashboard.
HA caches ES modules aggressively. After updating, bump the ?v=2.4.0 query string on your Lovelace resource URL (/hacsfiles/adaptive-cover-pro-card/adaptive-cover-pro-card.js?v=2.4.0) to ensure browsers pick up the new bundle. A hard-refresh alone is not sufficient.
No config migration needed. The quadrant_colors config option is additive and optional — existing configs continue to work without it.
Compatibility: Home Assistant 2024.1+, Adaptive Cover Pro integration v2.22.1-beta.3 or newer.
v2.3.3
Highlights: Reverts the sky-compass sun marker from the photographic data-URI image introduced in v2.3.2 back to a flat gold SVG circle. src/lib/sun-image.ts is deleted; the sun renders via a CSS-classed circle element queried as .sun. The committed bundle shrinks 242,013 → 218,397 bytes (−23.6 KB, ~9.7%), entirely from dropping the inlined sun image.
🔄 Changed
Sky-compass sun reverted to flat gold disc
The photographic sun marker added in v2.3.2 is removed. src/lib/sun-image.ts and its SUN_IMAGE data-URI export are deleted. src/components/sky-compass.ts now renders the sun as a plain SVG circle with the sunDotClass CSS classes — the same approach used before v2.3.2 — rather than an image element. Tests in tests/sky-compass.test.ts query .sun (the circle) instead of the former image element. (#126, #127)
The photographic moon marker from v2.3.2 is unchanged.
📦 Install / Upgrade
Through HACS, update to v2.3.3. No restart required; reload your browser/dashboard.
HA caches ES modules aggressively. After updating, bump the ?v=2.3.3 query string on your Lovelace resource URL (/hacsfiles/adaptive-cover-pro-card/adaptive-cover-pro-card.js?v=2.3.3) to ensure browsers pick up the new bundle. A hard-refresh alone is not sufficient.
No config migration needed.
Compatibility: Home Assistant 2024.1+, Adaptive Cover Pro integration v2.22.1-beta.3 or newer.
v2.3.2
Highlights: The sky compass gets a full visual overhaul: photographic sun and moon markers replace plain coloured dots, the sun path is now an elevation-coloured arc of directional chevrons riding a gradient spine, and the below-horizon portion of the path is masked out entirely. The elevation chart's x-axis labels and the now-cursor are promoted to the topmost render layer so nothing paints over them. Bundle grew ~47 KB (194,949 → 242,013 bytes), entirely from the two inlined imagery data URIs.
✨ Features
-
Photographic sun and moon markers — the sky compass sun and moon dots are replaced with circular crops of real solar and lunar imagery, inlined as data URIs in
src/lib/sun-image.ts(SUN_IMAGE) andsrc/lib/moon-image.ts(MOON_IMAGE). No separate asset files; the single-file HACS bundle carries everything. The sun retains its valid-glow and night state modifiers; the moon keeps its SVG phase mask so only the illuminated fraction shows, sized to 2/3 the sun marker. (#124, #125) -
Elevation-coloured sun path with directional chevrons — the sun path arc is coloured by the sun's elevation rather than time of day: a neutral grey near the horizon warming to gold at the zenith via a sqrt ramp (reaches gold quickly, eases near the peak). The arc renders as block-arrow chevrons riding a faint gradient spine, pointing in the direction of travel. Each above-horizon run gets its own
linearGradient(keyedsunPathGradients, stroke resolved viasunPathStroke) built from elevation samples along the arc. The old time-based fade and per-sample dots are gone. (#124, #125) -
Below-horizon path masked — only above-horizon arc segments are drawn.
aboveHorizonSegmentsinsrc/lib/sun-model.tssplits the 24-hour sample array into contiguous above-horizon runs (sunPathRuns); the below-horizon stretch no longer traces around the rim. Rise and set glyphs mark the entry and exit points. (#124, #125) -
Elevation chart axis and now-cursor on top — the x-axis gridlines, time labels, current-time cursor, and sun dot are all moved to render last in
src/components/elevation-chart.ts. The FOV ribbon bars no longer paint over the time labels, and the 24:00 edge label is end-anchored so it no longer clips at the right side. (#124, #125)
📦 Install / Upgrade
Through HACS, update to v2.3.2. Restart not required for the card; reload your browser/dashboard.
HA caches ES modules aggressively. After updating, bump the ?v=2.3.2 query string on your Lovelace resource URL (/hacsfiles/adaptive-cover-pro-card/adaptive-cover-pro-card.js?v=2.3.2) to ensure browsers pick up the new bundle. A hard-refresh alone is not sufficient.
No config migration needed.
Compatibility: Home Assistant 2024.1+, Adaptive Cover Pro integration v2.22.1-beta.3 or newer.
v2.3.1
Highlights: The elevation chart now overlays every discovered window's field-of-view bands on the elevation strip — not just the primary window. A color-keyed time ribbon sits below the plot, one row per window, with hover tooltips showing each window's name and its exact FOV clock range. Single-window setups are unchanged. Bundle grew ~2.4 KB.
✨ Features
- Multi-window FOV ribbon on the elevation strip — the elevation chart draws a dedicated time ribbon below the plot with one color-keyed row per discovered window. Each bar spans the window's FOV hours for the day. Hover over any bar to see the window name and its exact clock range (e.g. "Living Room: 07:20 AM → 01:30 PM") via a native SVG
<title>tooltip — no bundle cost. The elevation plot itself stays pristine; the per-window color keying matches the sky compass legend above. A newribbonLayout()helper ingeometry.tshandles the vertical stacking math. Per-window labels use the newfov_window_namedi18n key. Resolves #120 (#121).
📦 Install / Upgrade
Through HACS, update to v2.3.1. Restart not required for the card; reload your browser/dashboard.
HA caches ES modules aggressively. After updating, bump the ?v=2.3.1 query string on your Lovelace resource URL (/hacsfiles/adaptive-cover-pro-card/adaptive-cover-pro-card.js?v=2.3.1) to ensure browsers pick up the new bundle. A hard-refresh alone is not sufficient.
No config migration needed.
Compatibility: Home Assistant 2024.1+, Adaptive Cover Pro integration v2.22.1-beta.3 or newer.
v2.3.0
Highlights: The forecast strip now plots against a fixed 24-hour timeline anchored at start-of-day, with a "now" marker tracking current time and clock tick labels along the axis. A spike that appeared at the chart edge when out-of-day samples crept past midnight is gone. The Lovelace card-picker shows live previews using a real entry_id discovered from your installation. Chart sun colors now match the sky compass.
✨ Features
-
Fixed 24h forecast axis with now marker — the forecast strip plots against a fixed day axis anchored at
startOfDay()rather than scaling to whatever samples exist.dayFractionX()maps any timestamp to an x position; clock labels viaformatClock()sit attickXintervals along the bottom. AnowLine/nowCursormarker tracks the current time usingnowX(shown only whennowInDayis true). Resolves #116 (#118). -
Out-of-day spike fix — forecast sample points are tagged with an
inDayflag (ts >= dayStart && ts <= dayStart + DAY_MS), and the polylinepointsis built only fromsamplePtsthat pass that test. Previously, samples just past midnight produced a spike at the chart edge. Resolves #116. -
Live card-picker previews — all three cards (main, sky-compass, tile) now implement
getStubConfig(), which callsfetchAcpConfigEntries()to discover a real Adaptive Cover Pro config entry from your installation. The Lovelace card-picker receives a validentry_idand renders a live preview instead of a broken placeholder (abfa701). -
Unified sun colors, slimmer compass legend — the elevation chart's sun coloring now uses the same
sunDotState/sunBelowHorizonlogic as the sky compass, so the chart and compass agree on daytime vs. below-horizon styling. The compass legend was slimmed down at the same time (12b5bdd).
🧹 Maintenance
- README rewrite and screenshot capture tooling — the README is now structured around the tile card and sky compass as the primary user-facing entry points. A new
scripts/capture-screenshots.mjsPlaywright script regenerates the screenshot gallery, including the more-info dialog. Acapture:readmenpm one-shot rebuilds all README assets in one step. The capture-readme script was renamed to capture-readme-wiki to distinguish it from the new one. No runtime bundle impact.
📦 Install / Upgrade
Through HACS, update to v2.3.0. Restart not required for the card; reload your browser/dashboard.
HA caches ES modules aggressively. After updating, bump the ?v=2.3.0 query string on your Lovelace resource URL (/hacsfiles/adaptive-cover-pro-card/adaptive-cover-pro-card.js?v=2.3.0) to ensure browsers pick up the new bundle. A hard-refresh alone is not sufficient.
No config migration needed.
Compatibility: Home Assistant 2024.1+, Adaptive Cover Pro integration v2.22.1-beta.3 or newer.
v2.2.0
Highlights: The sky compass gains a 24h sun-elevation chart clipped to your window's FOV and elevation limits, the sun dot darkens when the sun is below the horizon, and the tile card now reliably shows the Auto badge whenever the cover is actually under automatic control.
✨ Features
-
Sun Today elevation chart — a new
ElevationChartcomponent plots the sun's elevation across the full 24-hour day as a curve, clipped to the window's configured FOV and elevation limits viaelevationBandFraction(). Times when the sun is inside the window's active band are immediately visible. The chart appears in both the sky compass card and the tile card more-info dialog. Ashow_elevation_charttoggle (default on) lets you hide it on either card type. Resolves #46 (#113). -
Night sun ambient color — when the sun is below the horizon, the
.sundot on the sky compass now renders in a dimmed amber rather than the full daytime color. The.sun.downCSS rule handles the transition; fill/stroke/opacity transitions are preserved (#113, f12a8fb). -
Auto badge fix for tile card — the tile card now co-renders an independent "Auto" line using a new
badge-visibility.tshelper that correctly accounts for manual override, force wins, andcustom_position+bypass-auto-control states. Previously the badge was hidden or misreported in several automatic-control scenarios. Default tile layout flipped todetailed. Resolves #112 (037952f). -
Shared editor footer —
editorFooter()is extracted intoeditor-footer.tsand reused across the main, sky compass, and tile card editors, removing duplicated markup (f12a8fb).
🧹 Maintenance
-
Sky compass SVG snap fix — removed the CSS
transitiononcx/cyfrom.sunand.moon-litelements insky-compass.ts. The dot was elastic-tweening between positions on data updates rather than snapping to the exact computed coordinate. Fill, stroke, and opacity transitions are kept (076ec5c). -
Dev time-lapse capture tooling —
scripts/capture-timelapse.mjsdrives the harness through a simulated day with Playwright-controlled Chromium and encodes the sky compass animation to a looping GIF. Awindow.__acpCapturebridge gated behind?capturein the harness wires the two together. No impact on the distributed bundle (#114).
📦 Install / Upgrade
Through HACS, update to v2.2.0. Restart not required for the card; reload your browser/dashboard.
HA caches ES modules aggressively. After updating, bump the ?v=2.2.0 query string on your Lovelace resource URL (/hacsfiles/adaptive-cover-pro-card/adaptive-cover-pro-card.js?v=2.2.0) to ensure browsers pick up the new bundle. A hard-refresh alone is not sufficient.
No config migration needed. show_elevation_chart defaults to true on both card types; add it explicitly only if you want to hide the chart.
v2.1.0
Adaptive Cover Pro Card v2.1.0
Highlights: The tile card's detailed layout gets a full badge overhaul — the badge moves inline onto the state line, the standalone Resume pill is gone, Cloud Suppression is now a visible badge, the Auto badge becomes individually toggleable, and badge toggles are grouped in a collapsible section in the editor.
✨ Features
-
Inline badge on the state line — in the detailed tile layout, the contextual badge now sits right-aligned on the same row as the position/state text rather than on a separate third row, keeping the tile compact at two rows regardless of badge visibility (#107).
-
Resume folded into the badge — the standalone Resume pill is removed. While a manual override is active, the contextual badge itself becomes tappable (shows a ↺ icon) and triggers resume-to-automatic. The more-info dialog retains its own Resume Auto button. The
show_resumeconfig option is gone; no migration needed (#107). -
Cloud Suppression badge — when the Cloud Suppression handler wins, the tile now shows a blue "Cloudy" pill. Previously cloud-wins produced a blank badge. The badge is on by default and individually toggleable (#105).
-
Auto badge is now individually toggleable —
badge_autojoins the per-badge config options (default on). Previously the Auto badge was always shown and not filterable (#106). -
Motion idle falls back to Auto badge — when the Motion idle badge is suppressed (because the motion indicator icon is already shown, or its own toggle is off), the tile now shows the Auto badge instead of going blank — unless Auto is also disabled (#107).
-
Badge toggles grouped in the editor — the nine badge per-kind toggles in the tile card editor are now grouped inside a collapsible "Badges" section with a grid layout and shorter labels, replacing the flat "Badge: …" list. Cloud suppression and Auto are included (#106).
-
Version footer in all editors — the card version is now shown as a small footer in the main card, tile card, and sky compass card editors. The
show_versiontoggle on the main card is removed; the version is no longer rendered on the live card face, only in the editor (#104, #106). -
Solar tracking badge label shortened — the badge text changed from "Solar tracking active" to "Solar tracking" (English and French). The i18n key is unchanged (#105).
🧹 Maintenance
- Removed
deploy-localscript;.deploy.examplenow points atscripts/deploy. The deploy script was also fixed to back up and restore the pre-deploy dist file on exit rather than runninggit checkout -- dist/..., which was silently discarding uncommitted builds (#105). .dirty-deployis now gitignored and untracked (#74e6918).
📦 Install / Upgrade
Through HACS, update to v2.1.0. Restart not required for the card; reload your browser/dashboard.
If you had show_version: true in your card YAML, remove it — it is no longer a valid option (the card ignores unknown keys, so it will not break anything). If you had show_resume configured, remove it for the same reason.
v2.0.6
Highlights
v2.0.6 tightens badge accuracy on two fronts. The floor badge — shown when the floor_clamp handler is holding the cover above its target — now renders its ↥ glyph and is suppressed when the floor clamp is not the relevant factor, so users no longer see a badge whose presence contradicts the decision trace. Separately, the solar tracking badge was only appearing in a subset of winning-solar scenarios; it now shows whenever solar is the outright winner.
Added
- Floor badge ↥ glyph — the tile badge for the
floor_clamphandler now displays the ↥ glyph, making it visually distinct from position badges that share the same row (#97, #103).
Changed
- Priority-conditional floor badge display — the floor badge now appears only when the floor clamp is the deciding factor in the current handler priority order, rather than whenever a floor minimum was configured. The priority comparison uses the handler priority constants in
src/const.ts. Previously it could render even when a higher-priority handler owned the outcome (#97, #103).
Fixed
- Solar tracking badge always shown for solar winner —
isCloudConfiguredwas extracted fromsrc/lib/badge-visibility.tsto correctly identify all winning-solar contexts. ThebuildSolarActiveContextsignature was simplified as part of the same change. Before this fix, solar tracking badges were hidden in configurations where the detection path did not pass through the previous check (#102).
Compatibility
- Home Assistant 2024.1+
- Adaptive Cover Pro integration
v2.22.1-beta.3or newer