Files
houseplan-card/docs/design/600-settings-dialogs
Claude 8dc60aec6e fix(dialogs): находки код-ревью #600 r1 — сегмент без разрыва слов, радиус без блокировки Save, свидетель дефекта №5
M1. Подпись сегмента больше не рвётся посреди слова: колонка `.hpf-seg label`
не сжимается ниже самого длинного слова (`min-width: fit-content`, для
браузеров без него — прежний `0` строкой выше), слова переносятся только по
пробелам (`overflow-wrap: normal`), не поместившийся сегмент переносится на
вторую строку целыми кнопками (`flex-wrap`). Новый свидетель
demo/smoke_dialog_segments_i18n.mjs — четыре диалога × en/ru/de/fr: у каждой
подписи число строк (по Range текстового узла: span — flex-элемент, у блока
один прямоугольник даже при переносе) не больше числа слов, текст внутри
кнопки. На разметке r1 краснеет на en/ru/fr комнаты («Temperature» в 2
строки, «По температуре» в 3). Мутант form-kit-segment-breaks-words
возвращает прежние две строки CSS. ACCEPTANCE.md — строка про подписи
сегмента переписана.

M2. Glow radius — не условие Save: как на dev, нечисло или неположительное
значение при сохранении молча становится общим радиусом. Удалены
glowRadiusValid, MarkerProblem marker.error_glow_radius, ключ в четырёх
локалях словаря settings, aria-invalid у поля; смок device_settings_form
утверждает обратное прежнему (badRadiusDoesNotBlockSave,
zeroRadiusKeepsSaveEnabled) и проверяет «Review N fields» на привязке в
create-режиме. Changelog EN/RU и USER-GUIDE ru/en больше не называют радиус
среди ошибок; таблица устройства говорит про молчаливый общий радиус.

M3. Свидетель дефекта №5 (поповер «?» обрезается границей диалога комнаты):
demo/smoke_dialog_help_clipping.mjs — короткое окно 900×620, диалог комнаты
скроллится, «?» нижней карточки прижат к краю; подсказка выходит за край
скроллера и остаётся hit-test'ируемой во всех пяти точках (elementsFromPoint
сквозь теневые корни — обрезанная часть не hit-test'ится). Четыре ветки:
нативный <dialog> и ha-dialog × Popover API и портальный fallback; ветка
ha-dialog — заглушка с ловушками настоящей mwc-поверхности (transform +
overflow: hidden + собственный скроллер), portal вне поверхности проверен
явно. Настоящий ha-dialog (#505, загрузка колеса HA-frontend) — отдельная
диагностическая приёмка владельца; так и записано в ACCEPTANCE.md, где
появилась таблица AC8 «девять дефектов — свидетель на каждый».

M4. ACCEPTANCE.md: эталонов 13, а не 11 — одиннадцать из ТЗ (список AC10
унаследован от #598 без комнаты) плюс две room-temperature-dialog-*.

L1. USER-GUIDE.ru.md: испорченная строка таблицы настроек пространства
(хвост удалённой строки про декоративный слой) — убран; пояснение «в
редакторе подложки остаются видимыми» вернулось в строку «Видимые слои»;
строка про солнце говорит «слой Двери, окна и ворота выключен» вместо
«Скрыть проёмы включено».

Фикстуры листа диалогов набора пересняты (панель — байт в байт).

Бюджет: initial 289 852 / 290 900; lazy editor 242 989 / 243 900.

Гейты: typecheck, build, bundle:sync (три копии), npm test 2794 pass по
четырём частям, no-new-any, mutation-gate --check, check-inputs --coverage,
смоки: segments_i18n, help_clipping, четыре формы, config_parity,
help_affordance, room_settings, settings_dialog_cards.

Issue: #600
User-Visible: yes
2026-09-20 16:37:31 +03:00
..

#600 designer reference — settings dialogs

Issue: https://github.com/Matysh/houseplan-card/issues/600 Оригинальное предложение и обсуждение: #591.

Происхождение

Файлы этой папки — содержимое архива houseplan-settings-design-2026-09-18.zip, приложенного к #591 18.09.2026.

SHA-256  06f07fc212947ee9da1a39aaab2d14cbd41154cc9effe39bc48e1c2e1517255b

Отпечаток сверен побайтово с вложением #591 20.09.2026. Он здесь не как след разрешения, а как метка версии: если материалы обновятся, будет видно, из какой редакции собрана папка.

Автор — @singlmolt-prog, дизайнер JustBusiness, сотрудник владельца репозитория. Материал принадлежит команде владельца и лежит под лицензией репозитория на общих основаниях (подтверждено владельцем 20.09.2026 в #600).

Что здесь лежит

Путь Что это
SPEC.md ТЗ автора на четыре диалога в структуре PROCESS.md §7.1: визуальная система §3.1, состав каждой карточки §4–§7, i18n §8, AC §11
IMPLEMENTATION-GUIDE.md где что в src/, порядок работ, маппинг контрол → ключ состояния, ветки, которых прототип не показывает
OPEN-POINTS.md десять мест, где прототип задевает поведение; решения владельца по каждому — в #600
field-maps/FIELD-MAP-space.md карта полей Space settings: прототип → SpaceDialogState → ключ i18n → контрол
ARCHIVE-README.md README автора из архива, как есть
ISSUE-FORM.md текст, из которого заведён #591
reference/ свёрстанный прототип всех четырёх форм
screenshots/ четыре формы целиком, 560 px, 2×, состояние по умолчанию
pairs/ кадры продукта для парного сравнения: четыре диалога × светлая и тёмная тема, 560 px; снимаются node demo/capture_design_pairs_600.mjs (см. ACCEPTANCE.md)

Как открыть прототип

cd docs/design/600-settings-dialogs/reference
node serve.mjs        # http://127.0.0.1:8135/

file:// не работает: прототип собран на ES-модулях. Переключатель «Form» в верхней панели показывает четыре формы. Данные форм лежат в localStorage браузера; для чистого состояния открывать в приватном окне.

Windows-лаунчеры START.cmd и START.ps1 из архива в репозиторий не переносились — они ничего не добавляют к строке выше.

Границы

  • Это дизайн-референс, а не продуктовый код. JS прототипа не переносится: localStorage, демонстрационные пространства, устройства и списки остаются здесь. reference/room-fill.test.mjs — проверка автора на семантику заливок, CI её не запускает.
  • В бандл отсюда не попадает ничего. Проверяется bundle-tree.
  • Приоритет при расхождении (SPEC.md §2): ТЗ в теле #600 > действующие контракты House Plan (данные, безопасность, доступность, hp-dialog, touch) > визуал и взаимодействия прототипа > детали реализации прототипа.
  • Два решения владельца расходятся со SPEC.md автора и имеют приоритет над ним: образцы карточки комнаты остаются (Q2), поле цвета получает новую раскладку, но прежний контрол hp-color-opacity без нативного пикера (Q5).

Приёмка

ACCEPTANCE.md — парные кадры «референс / продукт» по каждому диалогу (screenshots/ против pairs/), расхождения с основанием и перечень принятых адаптаций. Документ не заменяет код-ревью на S7.