Files
houseplan-card/docs/specs/036-room-glow-override.md
T
Matysh 112c260314
Validate / hacs (push) Failing after 12s
Validate / hassfest (push) Failing after 13s
Validate / frontend (push) Successful in 3m2s
Validate / golden (push) Failing after 51s
Validate / backend (push) Failing after 6m50s
Validate / smoke (push) Failing after 13m44s
Validate / performance (push) Failing after 24m13s
Release v1.61.0-beta.1
2026-08-09 21:51:33 +03:00

60 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ТЗ #36 — Явный Glow override на уровне комнаты
- Issue: https://github.com/Matysh/houseplan-card/issues/36
- Приоритет: P2
- Статус ТЗ: draft, рекомендованное product decision зафиксировано ниже
- Зависимость: foundation независимого overlay #55
## Цель
Комната может явно наследовать, включить или выключить Glow независимо от
последующего изменения space default и data fill.
## Рекомендуемое решение владельцу
Room override влияет только на визуализацию внутри чистого пола комнаты и не
меняет физическую проницаемость границ. Комната с Glow off не становится
стеной: light transport через двери/виртуальные границы продолжается, но base
и pools не рисуются в её clip. Если за ней находится Glow-on комната и
геометрический путь света существует, свет может появиться там. Это сохраняет
разделение «настройка представления» и «физическая модель».
## Модель
- `space.settings.glow_enabled?: boolean` — default overlay пространства;
- `room.settings.glow?: boolean | null` — `null/absent` inherit, `true` on,
`false` off.
- Effective resolver: `room.glow ?? space.glow_enabled ?? false`.
- Поле `fill_mode` больше не определяет room Glow после миграции #55.
## UX
Room settings, раздел «Заливка и свет»: radio «Как у пространства / Включён /
Выключен». Рядом read-only effective state. Выбор data fill находится отдельно.
Переключение не стирает fill, light sources, radius или room geometry.
## Нормативная матрица
| Effective Glow комнаты | Base darkness | Local pools | Tunnel/transport |
|---|---:|---:|---|
| off | нет | нет | геометрия продолжает расчёт |
| on | да | да | по существующим opening/virtual rules |
Physical wall всегда блокирует; дверь/ворота используют текущий tunnel; окно не
становится межкомнатным проходом. `show_borders:false` не меняет физику.
## Edge cases
Nested rooms получают собственный clean-floor clip; parent Glow не рисуется в
hole. Перегородки/колонны вычитаются как сейчас. Glow under hover остаётся
pointer-transparent. Комната без sources всё равно получает base, если Glow on.
## Проверки и приёмка
- resolver truth table inherit/on/off;
- соседние rooms on→off→on через open boundaries;
- doors, virtual walls, physical walls, nested/hole, partitions/columns;
- room fill temp/LQI/custom одновременно с override;
- migration/read compatibility #55;
- один room override переживает смену space default и reload.