fix(led): polish glow and interactions (#784)

Issue: #784
User-Visible: yes
This commit is contained in:
Matysh
2026-10-03 10:47:28 +03:00
parent 4962de1d5c
commit 706eb02d70
21 changed files with 243 additions and 72 deletions
+7
View File
@@ -2,6 +2,13 @@
## Unreleased
- LED strips now cast a smooth, continuous Glow field without gradient bands
or cuts at corners and fade in and out instead of switching abruptly. Their
default Glow radius is now 30 cm. The device picker scrolls without zooming
the plan, the radius field has one focus outline, and clicking a strip no
longer leaves a selection outline while keyboard focus remains visible
([#784](https://github.com/Matysh/houseplan-card/issues/784)).
## v1.79.0-beta.3 — 2026-10-03
- LED strips: in the Devices editor, the new «LED strip» tool next to «Add»
+7
View File
@@ -8,6 +8,13 @@
## Не выпущено
- LED-ленты теперь дают мягкое непрерывное свечение без полос градиента и
срезов на углах и плавно загораются и гаснут. Радиус свечения по умолчанию
изменён на 30 см. Список выбора устройства прокручивается, не меняя масштаб
плана; у поля радиуса осталась одна обводка фокуса, а клик по ленте больше не
оставляет обводку выделения — видимый клавиатурный фокус сохранён
([#784](https://github.com/Matysh/houseplan-card/issues/784)).
## v1.79.0-beta.3 — 2026-10-03
- LED-ленты: в редакторе устройств рядом с «Добавить» появился инструмент
+1 -1
View File
@@ -418,7 +418,7 @@ its anchor. Colour, brightness, role and availability come from the same
`resolveGlowCandidates` / `resolveGlowAppearance` path as every other source;
only the geometry differs:
- **Radius.** 50 cm by default, independent of `settings.glow_radius_cm`; the
- **Radius.** 30 cm by default, independent of `settings.glow_radius_cm`; the
marker's personal `glow_radius_cm` wins.
- **Field.** A continuous band along every segment with round free ends: grey
luminance bands of the shared `GLOW_FALLOFF`, one piece per stretch, blended
+1 -1
View File
@@ -1059,7 +1059,7 @@ editor** — there is no need to switch to the Plan editor.
Binding creates no new Home Assistant device: the same marker, light
settings, tap actions and badge — drawn at the middle of the strip's length. The strip glows when the device does: with
Glow on, a white core and a soft band of colour 50 cm wide by default (or the
Glow on, a white core and a soft band of colour 30 cm wide by default (or the
device's own radius); without Glow the core takes the light's colour. Light
does not pass through walls or closed doors. In View the whole strip is one
tap target, like an icon. Every finished shape change and every switch of the
+1 -1
View File
@@ -1156,7 +1156,7 @@ binding tombstone не вырезает её из живого устройст
Привязка не создаёт нового устройства в Home Assistant: тот же маркер, те же
настройки света, действия по нажатию и бейдж — он стоит в середине длины ленты. Лента светится, когда светится
устройство: при включённом Glow — белое ядро и мягкая цветная полоса света
радиусом 50 см (или персональный радиус устройства), без Glow — ядро цвета
радиусом 30 см (или персональный радиус устройства), без Glow — ядро цвета
источника. Свет не проходит сквозь стены и закрытые двери. В просмотре лента
— одна цель нажатия по всей длине, как значок. Каждое законченное изменение
формы и смена представления — один шаг **Отменить/Повторить**.
+2 -2
View File
@@ -43,7 +43,7 @@ behaviours, not of positions.
| On with Glow: white core + coloured field; without Glow: core in the source colour, no field | `ledStripView` + `resolveGlowAppearance` | smoke `smoke_led_strip_glow.mjs` |
| Glow is the space/room switch, independent of `fill_mode` | `glowFor(room)` | `lighting-led-strip-glow-dark` uses `fill_mode: none` |
| Per-piece offset: t/2 on a thick face into free floor, 0 on free floor and zero walls; continuous transition | `visibleStripPath` | unit `test/led-strip-geometry.test.mjs` (AC8) |
| Field 50 cm by default, own `glow_radius_cm` wins; round free ends; no seams or doubled brightness at corners/closure | `ledFrame`, `led-strip-field` (`lighten` in one group) | unit `test/led-strip-runtime.test.mjs`; reference pair |
| Field 30 cm by default, own `glow_radius_cm` wins; round free ends; no seams, bands or doubled brightness at corners/closure | `ledFrame`, one continuous path through the unioned visibility clip in `led-strip-field` | unit `test/led-strip-runtime.test.mjs`; reference pair |
| Shared `glowAlpha` / `GLOW_FALLOFF` / `GLOW_FADE_MS` | field bands from `falloffAt` | unit `test/led-strip-runtime.test.mjs` |
| Field under icons, badges and labels; icons not tinted | glow layer below the device layer | reference pair (designer tinting deliberately not reproduced) |
@@ -69,4 +69,4 @@ behaviours, not of positions.
the default `icon_size` and the band edge is the shared Glow edge.
- Icons and labels are not tinted by the field.
- The mockup's "half the shared radius" and "always coloured core" are replaced
by 50 cm and the white core under Glow (owner's decision in #780).
by 30 cm (#784) and the white core under Glow (owner's decision in #780).
+1 -1
View File
@@ -11,7 +11,7 @@ with the frames Led On (626:35) and Led Off (626:53).
**The contract is the ТЗ in the body of
[#780](https://github.com/Matysh/houseplan-card/issues/780)**, not the archived
`source/TZ-issue-662-LED-strips.md`. Where they differ the issue wins — notably
the 50 cm default radius, the white core under Glow, editing in the Devices
the 30 cm default radius (#784), the white core under Glow, editing in the Devices
editor and the product thicknesses 0.08/0.12 D instead of the mockup's pixel
sizes and blur. These files are documentation only; nothing here reaches the
runtime bundle.