mirror of
https://github.com/Matysh/houseplan-card
synced 2026-10-07 23:19:14 +00:00
AC0 задачи: пока референс лежит вложением в issue, ревью сравнивает продукт с макетом «на глаз», и ровно это дало выпущенный в 1.77.0-beta.2 ложный паритет — карточки снаружи, старая разметка внутри. Содержимое архива `houseplan-settings-design-2026-09-18.zip` (SHA-256 06f07fc212947ee9da1a39aaab2d14cbd41154cc9effe39bc48e1c2e1517255b, сверен побайтово с вложением #591) разложено по образцу #505: - `SPEC.md`, `IMPLEMENTATION-GUIDE.md`, `OPEN-POINTS.md`, карта полей Space — с этого коммита часть ТЗ: расхождение называется ссылкой на пункт документа; - `reference/` — свёрстанный прототип четырёх форм; - `screenshots/` — четыре формы целиком, 560 px, 2x; - `README.md` — происхождение, отпечаток, границы использования; - `ACCEPTANCE.md` — место для парных кадров «референс / продукт» по AC1. Автор — сотрудник владельца (подтверждено 20.09 в #600), внешний грант не нужен. Windows-лаунчеры `START.cmd` и `START.ps1` не переносились: `node serve.mjs` делает то же самое. `room-fill.test.mjs` перенесён как документ намерения, CI его не запускает — под `docs/**` не попадает ни один тестовый glob. В бандл отсюда не попадает ничего; `repo-hygiene` и полный набор зелёные (2793 pass). Issue: #600 User-Visible: no
36 lines
7.3 KiB
Markdown
36 lines
7.3 KiB
Markdown
# Открытые точки для реализующей сессии Claude
|
||
|
||
Это не вопросы владельцу репозитория. Это места, где прототип задевает не только разметку, и где реализующая сессия Claude должна **уточнить у JB в чате**, когда дойдёт до соответствующего диалога, а не решать сама и не спрашивать в issue. Каждый пункт: что неясно · что изменится от ответа · вариант по умолчанию, который предлагается JB. Пока ответа нет, держится текущее поведение продукта, а визуал адаптируется. Главное правило неизменно: меняем только UI форм, код продукта глобально не трогаем.
|
||
|
||
---
|
||
|
||
**Q1. Save только при изменениях и подтверждение при закрытии.** Сейчас Save активен всегда (кроме пустого имени / невалидных полей), а X, Cancel и Escape закрывают диалог без вопроса. Прототип делает Save неактивным без изменений, показывает «Unsaved changes» и спрашивает Keep editing / Discard changes. Это новое поведение, а не только разметка.
|
||
Предлагаемый вариант: принять для всех четырёх диалогов; dirty считается сравнением черновика с исходным снимком в памяти, ничего не сохраняется. Если нет, оставляем текущую логику Save и закрытия, футер только перерисовывается.
|
||
|
||
**Q2. Образцы карточки комнаты.** В Space settings (под слайдером размера шрифта) и в Room settings (внизу) сейчас есть образец карточки `_renderCardPreview`. В прототипе его нет.
|
||
Предлагаемый вариант: убрать оба образца. Если оставить, они встают в конец соответствующей карточки Font sizes / Room cards в стиле Display preview.
|
||
|
||
**Q3. Display preview в диалоге устройства.** Прототип показывает упрощённый блок (макет маркера + четыре факта). В продукте `hp-device-preview` богаче: Now / Example, демонстрация активности, Source details, примечание о масштабе.
|
||
Предлагаемый вариант: оставить `hp-device-preview` целиком, только обернуть в блок на тинте; ничего не урезать.
|
||
|
||
**Q4. Room: «As the space» тумблером.** Сейчас это первый пункт из шести радио. В прототипе тумблер «As the space», при выключении сегмент из пяти режимов. Значение то же (`_roomFill` = '' или режим), но при выключении тумблера нужно какое-то стартовое значение сегмента.
|
||
Предлагаемый вариант: стартовое значение = эффективный режим пространства (если у пространства Custom, выбирается Custom), пользователь меняет дальше. Альтернатива: один сегмент из шести с первым пунктом «As the space».
|
||
|
||
**Q5. Поле цвета с системным пикером.** Прототип заменяет `hp-color-opacity` (панель HSB со слайдерами и OK) на inline-плашку с `<input type="color">`, hex и числом прозрачности. В компаньоне HA на iOS/Android это нативный лист ОС; в старых WebView может деградировать до текста (предусмотрен fallback hex-поле).
|
||
Предлагаемый вариант: новое поле только в четырёх диалогах настроек; редактор декора, summary и радар остаются на `hp-color-opacity`. Если нативный пикер неприемлем, то же inline-поле, но клик по свотчу открывает существующую панель `hp-color-opacity`.
|
||
|
||
**Q6. Переименования подписей.** Прототип меняет тексты существующих ключей: `space.show_lqi` → «Zigbee signal next to devices», `space.show_names` без «(drag to move)», `room.area_label` без «(unassigned)», `marker.name_label` → «Name» (пояснение «Shown on the plan» уходит в подсказку), «Hide the decorative layer / Hide openings» → «Decorative layer / Doors, windows & gates» с логикой «включено = видно» только в UI. Заголовки карточек новые.
|
||
Предлагаемый вариант: принять; ключи `hide_decor` / `hide_openings` в конфиге не меняются. Переводы de/fr для новых и изменённых строк пишет исполнитель, владелец проверяет.
|
||
|
||
**Q7. Ширина диалогов 560 px.** Сейчас `wide` = 500 px (в реальном HA `--ha-dialog-width-md`). Прототип рассчитан на 560.
|
||
Предлагаемый вариант: scoped-переменная 560 для четырёх `data-kind`, generic `wide` не трогается; проверка на настоящем `ha-dialog` по методике #505.
|
||
|
||
**Q8. Мелкие условные скрытия в диалоге устройства.** Прототип прячет «Ask for confirmation» при действии «Do nothing» и переносит чекбокс «Show entities» внутрь панели выбора.
|
||
Предлагаемый вариант: принять оба (значения ключей не меняются). Если нет, тумблер показывается всегда, чекбокс остаётся рядом с сегментом.
|
||
|
||
**Q9. Один issue или четыре.** Все четыре диалога на одной библиотеке примитивов; можно вести одним issue с четырьмя коммит-сериями или разбить на umbrella + 4 дочерних.
|
||
Предлагаемый вариант: один issue, порядок реализации Space → General → Room → Device, каждый диалог отдельным PR/коммит-серией с собственными парными скриншотами.
|
||
|
||
**Q10. Место референса в репозитории.** По образцу #505: `docs/design/<NN>-settings-dialogs/reference/` + `README.md` с SHA-256 и `ACCEPTANCE.md`.
|
||
Предлагаемый вариант: так и сделать; в бандл ничего из референса не попадает.
|