Panel fixes: colourless lights, hour-cell status, timeline state tags - #2
Merged
Conversation
Three small corrections to the Status/timeline work: The hour-cell sheet no longer renders the Status section. It describes the light as a whole — control state, last applied values, capabilities — none of which is about the single hour being edited. That belongs on the light sheet, where it still is. A light that supports neither a colour temperature nor RGB takes brightness alone: `_apply_light` builds an empty colour dict for it, so its colour temperature range does nothing. Its editors now hide the colour-temperature controls (both the per-light range and the per-hour override), and its timeline row and preview strip render a flat accent fill instead of the Kelvin gradient, which was implying a warmth curve the bulb cannot produce. RGB-only lights deliberately keep their colour-temperature controls: the integration renders their temperature as an RGB colour via kelvin_to_rgb, so those settings still drive real output. The shared `hasColor()` helper encodes that distinction in one place. `_lights_payload` now reports `supports_color_temp` alongside `supports_rgb`, both read from a single `supported_modes()` call. The dev harness gains a dimmer-only fake light so the colourless path is visible in `npm run dev`. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XdpAyEvqgNcBstA75dQ5wr
One pill per row instead of two. An on light shows only its control mode — "on" is already evident from the row's bars, the mode isn't. An off or unavailable light shows its power state instead, in a quiet outlined variant: its control mode says nothing useful while nothing is being driven. The pill now borrows the Status sheet's badge treatment (soft accent fill, strong accent text, full radius, filled danger for Manual) so the same state reads the same way in both places. Colourless rows and preview strips move from --accent to a new --accent-light token. The former is a heavy brown that dominated the Kelvin-tinted rows beside it; the new token sits between --accent and --accent-soft, bright enough to read as a fill without shouting. The pill carries no vertical padding: at padding 1px it grew past the light name's line box and made mobile rows 2px taller, since the name is its own line there. Verified by measuring rows against the same DOM with the tags display:none — 42px desktop and 77px mobile either way. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XdpAyEvqgNcBstA75dQ5wr
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XdpAyEvqgNcBstA75dQ5wr
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follow-up fixes to the Status section shipped in #1. Bumps the manifest to
2.1.1.Status off the hour-cell sheet
The Status section described the light as a whole — control state, last applied values, capabilities — none of which is about the single hour being edited. It now renders only on the light and sun sheets.
Colour controls hidden on lights that have no colour
A light supporting neither a colour temperature nor RGB takes brightness alone:
_apply_lightbuilds an empty colour dict for it, so its colour-temperature range does nothing. Those lights now lose the colour-temperature controls in both the per-light editor and the per-hour override, and their timeline row and preview strip render a flat fill instead of the Kelvin gradient — which was implying a warmth curve the bulb cannot produce.RGB-only lights deliberately keep their colour-temperature controls. The integration renders their temperature as an RGB colour via
kelvin_to_rgb, so those settings still drive real output; hiding them would remove working configuration. The sharedhasColor()helper keeps that distinction in one place._lights_payloadnow reportssupports_color_tempalongsidesupports_rgb, both from a singlesupported_modes()call. The dev harness gains a dimmer-only fake light so the colourless path is visible innpm run dev.Timeline state tags restyled
One pill per row instead of two:
onis already evident from the row's bars, the mode isn't.Manual) so the same state reads the same way in both places.Colourless rows moved from
--accentto a new--accent-lighttoken — the former is a heavy brown that dominated the Kelvin-tinted rows beside it.Verification
ruff check .clean,python -m pytest33 passed,npm run buildclean with the bundle committed..tag { display: none }injected, which isolates the tag's contribution: 42px desktop and 77px mobile with and without. That caught a real regression — the badge'spadding: 1px 8pxpushed the pill past the light name's line box and grew mobile rows by 2px, since the name is its own line there. Nowpadding: 0 8px.🤖 Generated with Claude Code
https://claude.ai/code/session_01XdpAyEvqgNcBstA75dQ5wr
Generated by Claude Code