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

3.3 KiB
Raw Blame History

ТЗ #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.