Skip to content

Releases: florianhorner/lightener-studio

v2.17.0 — Graph-first editor, per-light shapes, lightener_studio domain

Choose a tag to compare

@florianhorner florianhorner released this 02 Jul 11:11
b30feee

All changes since 2.16.1, consolidated from the 2.17.0-dev releases below.

Changed

  • BREAKING: the integration domain is now lightener_studio (was lightener). Your lights, groups, saved shapes, and dashboards survive the move; one script does the migration. The old domain belongs to the upstream Lightener project, which blocked a HACS default-store submission. Home Assistant keys everything by domain and loads its registries before any integration code runs, so the migration runs as a script while Home Assistant is stopped:

    scripts/migrate-to-lightener-studio            # read-only plan (changes nothing)
    scripts/migrate-to-lightener-studio --apply    # remove old dir + deploy + migrate, with backup
    

    The script removes the old custom_components/lightener/ directory, deploys lightener_studio, and re-keys .storage. Every entity_id, unique_id, config-entry id, and saved shape survives. It takes a timestamped backup first and can be re-run safely. The card type (custom:lightener-curve-card) and the editor route (/lightener-editor) are unchanged. Full guide in docs/TROUBLESHOOTING.md.

  • The graph is what you see; the machinery stays out of the way. Populated graphs no longer show instruction overlays or editing labels, and the starting-shape picker stays in the side rail instead of pushing the graph down. Buttons name what happens in the room: "Watch room react" replaces "Preview".

  • Shapes apply to the light you picked, not the whole room. Shape buttons appear once a light is selected. Hovering a shape sketches it on the graph without changing anything: no edit, no undo entry, nothing sent to your lights. Clicking it is the first real edit.

  • The editor says so when lights move together. When several lights share one shape, it states it plainly ("20 lights match the group brightness") and offers picking one light to give it its own response.

  • The card lays out the same in a dashboard and the sidebar. Two columns, with Save, Undo, and Cancel always in reach. The light list scrolls inside its own surface at every group size.

  • The light list works by keyboard and screen reader. Each row is a button, shows when it is selected, and responds across its whole height. "Remove" is now "Remove a light" and stays neutral until used; red appears only on the per-light confirmation.

  • While a room's shapes load, the card previews the graph. Layered shape outlines with pulsing points replace the flat loading bar. Honors prefers-reduced-motion.

Added

  • Every light's points on the graph match its legend symbol. Circle, square, diamond, triangle, or bar, so you can tell lights apart without color.
  • A leftover custom_components/lightener/ folder now raises a Repair issue. HACS caches the domain it first saw for a repository and keeps extracting updates into the old folder (hacs/integration#931), which can leave two copies of the integration on disk. The integration checks at startup and raises a Repair issue (Settings > System > Repairs) with the fix steps: critical when both folders claim the domain, a warning for a dormant leftover. Folders it cannot attribute to this project, such as upstream Lightener installed alongside, are never flagged.

Fixed

  • First-run setup returns you to the editor. The sidebar tells a failed group load apart from a home with no groups yet, offers a retry, and picks up groups that appear after it loaded.
  • "Loading groups" can no longer get stuck. A slow load times out into the retry screen, and the group dropdown reopens after you select a group.
  • The hide toggle in the light list is visible again.
  • The brightness slider sits exactly under the graph. One position drives the slider, the line on the graph, and the per-light badges.
  • Tooltips on graph points no longer flicker as the cursor approaches.
  • Hovering a shape no longer nudges the graph.
  • Selecting a light by keyboard no longer cancels itself.
  • Undo also returns your real lights to the earlier brightness while Watch room react is on.

For contributors

  • CI reusable workflows are pinned by SHA against supply-chain injection.
  • New user-facing card copy lives in js/src/utils/strings.ts behind a vocabulary guard (scripts/lint-vocabulary, CI and pre-commit) that enforces the "Lead with the light" principle from DESIGN.md.
  • The demo-GIF freshness gate hard-blocks only the stable cut. Prereleases run it advisory.

Built on the Lightener integration by @fredck, extended for the visual editor (the WebSocket commands the card needs, plus config-flow and state-handling hardening). Upstream MIT license intact.

v2.17.0-dev.4

v2.17.0-dev.4 Pre-release
Pre-release

Choose a tag to compare

@florianhorner florianhorner released this 02 Jul 08:56
37fabbf

Fixed

  • A stray pre-rename custom_components/lightener/ folder is now surfaced as a Repair issue. HACS caches the integration domain it first derived for a repository and keeps extracting zip_release updates into that folder (hacs/integration#931), so installs added before the lightenerlightener_studio rename can fail updates with No manifest.json file found 'custom_components/lightener/manifest.json' and end up with two integration folders that both claim the lightener_studio domain — Home Assistant then loads one of them unpredictably. The integration now checks for the stray folder at startup and raises a Repair issue (Settings → System → Repairs) with the cleanup steps: critical when both folders claim the domain, a warning for a dormant pre-rename leftover. The check only flags folders attributable to this project — an unrelated integration legitimately installed at custom_components/lightener (such as upstream Lightener) is never flagged, and the collision issue is only raised when both folders exist. The full diagnosis and fix sequence is documented in docs/TROUBLESHOOTING.md.

v2.17.0-dev.3

v2.17.0-dev.3 Pre-release
Pre-release

Choose a tag to compare

@florianhorner florianhorner released this 01 Jul 22:23
47f5439

Fixed

  • The hide toggle in the light list is visible again. The eye icon's shapes came from a nested html template inside the <svg>, which Lit parses in the HTML namespace — the elements existed in the DOM but never painted. The shapes now render through Lit's svg template, the icon gets an explicit color, and a resting chip makes it read as a control without needing hover.
  • Curve-point tooltips no longer flicker when the cursor approaches from above.
  • Hovering a shape no longer pushes the graph around.
  • Save/Undo/Cancel stay reachable in long light lists — in the Lovelace card too. Layout is now driven by container queries on the card's own width and applies identically in the sidebar panel and a plain Lovelace card.
  • The brightness slider lines up with the graph and always shows on it.
  • Sidebar panel: no more stuck "Loading groups", and the group dropdown reopens after selecting.
  • Light rows are tappable across their whole visible height.

Changed

  • "Remove" is now "Remove a light", neutral until used. Red is reserved for the actual per-light confirmation.
  • Shapes copy is shorter: "Pick a starting shape, then fine-tune it on the graph."

Built on the Lightener integration by @fredck, extended for the visual editor … Upstream MIT license intact.

v2.17.0-dev.2

v2.17.0-dev.2 Pre-release
Pre-release

Choose a tag to compare

@florianhorner florianhorner released this 01 Jul 16:46
612d0e8

Changed

  • BREAKING: the integration domain is renamed lightenerlightener_studio. This frees the integration from the upstream-owned lightener domain so it can be submitted to the HACS default store. With Home Assistant stopped, run scripts/migrate-to-lightener-studio --apply to migrate .storage (entity_ids, config entries, curves survive). See the full CHANGELOG entry for details.
  • Shapes now target the selected light instead of the whole room. Shape buttons appear only after a light is selected; hovering/focusing draws a graph-only shimmer without dirtying the card, undo history, or live commands.
  • The curve card's loading state now previews the graph (layered curve silhouettes + pulsing points) instead of a flat shimmer bar, honoring prefers-reduced-motion.

Fixed

  • First-run onboarding now recovers cleanly after native setup. Distinguishes a failed group load from a real no-groups state, offers retry, and uses HA's working ?brand=lightener_studio add-integration route.

Full changelog: https://github.com/florianhorner/lightener-studio/blob/master/CHANGELOG.md#2170-dev2---2026-07-01

v2.17.0-dev.1

v2.17.0-dev.1 Pre-release
Pre-release

Choose a tag to compare

@florianhorner florianhorner released this 27 Jun 10:37
6afc0b8

What's new since v2.17.0-dev.0

Security

  • CI reusable-workflow pins hardened against supply-chain injection. commit-lint now pins engineering-standards at SHA 502b48e; verify-claims pins gh-workflows at SHA ea347539 instead of the mutable @v1.1 tag.

Changed

  • Secondary editor surfaces stay in the side rail. Opening the starting-shape picker no longer inserts a full-width panel above the graph; it stays alongside the light list so the graph remains the primary editing surface.
  • Live-preview button renamed to "Watch room react". Clearer copy throughout: "Watching · Put it back", "Your room is showing this now · Save to keep it", and sentence-case save button.
  • Card display strings get a guarded home. Strings moved to js/src/utils/strings.ts, enforced by scripts/lint-vocabulary (CI + pre-commit) under the Lead-with-the-light principle.

v2.17.0-dev.0

v2.17.0-dev.0 Pre-release
Pre-release

Choose a tag to compare

@florianhorner florianhorner released this 26 Jun 17:49
00f2e1a

Dev prerelease — not for production use.

Changes

Added

  • Curve-graph control points are shape-coded to match the legend.

Changed

  • Graph now explains overlapping lights with real state.
  • Editor copy is plainer and more action-focused.
  • Curve editor puts the graph first.
  • Light list is keyboard- and screen-reader-accessible.

Fixed

  • Selecting a light by keyboard no longer cancels itself.
  • Undo now updates the real lights while Live Preview is on.

v2.16.1 — Card-picker live preview, drag-to-preview, editor entity-picker fix

Choose a tag to compare

@florianhorner florianhorner released this 21 Jun 22:45
7b55b9b

Added

  • Live preview in the card picker. Picking the Lightener Studio card from Home Assistant's Community card selector now renders a live preview of the curve editor instead of a blank tile, so you can see the card before adding it.
  • Drag a point to preview one light. While editing a curve, dragging a single light's point now live-previews just that light in real time, easing to the dragged brightness as you drag.

Fixed

  • The card editor's entity dropdown now lists only Lightener groups. Configuring a Lightener Studio card previously offered every light in the entity picker, so picking a normal light errored — the card can only target a Lightener group. The picker is now narrowed to Lightener groups. The in-card "Add light" picker for group members is unchanged; it still lists all lights, since members are ordinary lights.
  • Dragging the floor point previews the dimmed level. Editing a curve's origin/floor point now previews the light at the dragged dim level instead of turning it off.

v2.16.1-dev.1 — card editor entity picker fix

Choose a tag to compare

@florianhorner florianhorner released this 21 Jun 17:59
df99d88

Dev pre-release for HA-beta verification before promoting to stable v2.16.1.

Fixed

  • The card editor's entity dropdown now lists only Lightener groups. It previously offered every light, so picking a normal light errored — the card can only target a Lightener group.

v2.16.1-dev.0 — card-picker preview + drag-preview improvements

Choose a tag to compare

@florianhorner florianhorner released this 21 Jun 08:48
61cd045

Dev pre-release for local-HA verification before promoting to stable v2.16.1.

Added

  • Live preview in the HA Community card picker (was a blank tile).
  • Drag a single light's curve point to live-preview just that light.

Fixed

  • Dragging the floor/origin point previews the dimmed level instead of turning the light off.

v2.16.0 — Card picker install, native light picker, preview fade

Choose a tag to compare

@florianhorner florianhorner released this 20 Jun 12:44
01a3ad7

This is the GA that makes Lightener Studio feel native to Home Assistant. The curve card now installs and surfaces itself, HA's own light picker drives building and managing groups, the in-card "Add light" flow is consistent everywhere, and member lights ease into their preview instead of snapping. Plus a fully overhauled live demo so you can try the whole editor before you install anything. No breaking changes, no config migration: upgrade and go.

Highlights

  • Zero-setup card install (HA 2026.6+). The integration loads the curve card itself on every dashboard and registers it in HA's card picker, suggesting it only when you've picked a Lightener light. No more adding a Lovelace resource by hand. (If you added the resource manually before, remove it; see Upgrade notes.) The card route is immutable per release and served with proper cache headers.
  • Native HA light picker. Building a group and adding lights go through Home Assistant's own multi-entity selector: search, multi-select, drag to reorder. "New group" and "Manage lights" route through the native config flow (name, then area, then lights), which writes the config entry and reloads in one atomic step.
  • In-card "Add light". An inline entity picker plus a starting-curve preset chooser, identical whether you're in a dashboard card or the sidebar panel, with an area filter to narrow the picker to a single room.
  • Preview lights fade instead of snapping. When you scrub or preview, member lights ease to the preview brightness over a fixed 0.25s and ease back, matching the feel of HA and Adaptive Lighting. Preview-only: your group's real runtime behavior is unchanged.
  • A real live demo. Try the editor with 2, 3, or 20 lights (and very long entity names), add and manage lights via an HA-style picker, and apply presets, with light and dark preview cards staying in sync as you drag, scrub, preview, and undo. Tuned for mobile touch. → https://florianhorner.github.io/lightener-studio/
  • Deterministic branded demo GIF. A choreography-as-code pipeline captures a fresh hero GIF on every release, freshness-gated so a stale GIF can never ship.

Under the hood: the save-confirm flow now reflects confirmed backend state with an 8s timeout guard and a generation fence, custom elements register through a guarded safeDefine (double-load safe), after_dependencies: ["frontend"] fixes load ordering, and the Adaptive Lighting brightness+color contract is pinned by test.

Upgrade notes

  • Home Assistant 2024.2.0 or newer is required.
  • If you previously added the curve card as a manual Lovelace resource, remove it. The integration now loads the card itself on every dashboard. Leaving the manual resource in place can double-load the card (harmless, but unnecessary).
  • No breaking changes and no config migration. Existing Lightener groups and curves carry over untouched. Upgrade in place.

Install

One-click (recommended): Add to my Home Assistant

Manual (HACS custom repository):

  1. In HACS, open the three-dot menu, then Custom repositories.
  2. Add florianhorner/lightener-studio with category Integration.
  3. Install Lightener Studio, then restart Home Assistant.

Built on Lightener

Built on the Lightener integration by @fredck, extended for the visual editor (the WebSocket commands the card needs, plus config-flow and state-handling hardening). Upstream MIT license intact.

Full changelog

v2.15.1...v2.16.0