mirror of
https://github.com/Matysh/houseplan-card
synced 2026-10-06 14:39:22 +00:00
docs(review): record local acceptance of Zigbee caption layout
Issue: #802 User-Visible: no
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
# Локальное код-ревью #802 — r1
|
||||
|
||||
Вердикт: зелёный · High: 0 · Medium: 0 · маршрут: merge.
|
||||
|
||||
## Материал и полномочия
|
||||
|
||||
- Дата: 2026-10-05; ветка `issue/802-zigbee-hover-labels`.
|
||||
- База: `7feda5b6c82b34f3b42f87a1f0c1fac5bf590265`.
|
||||
- Продукт: `db887cd7f0612267e74d06700ae5fe8deb14a561`.
|
||||
- Итоговый материал тестов: `077e9c1b1be693757009f748bfccb1c77bb39aee`.
|
||||
- ТЗ: тело [#802](https://github.com/Matysh/houseplan-card/issues/802), раздел
|
||||
`## ТЗ`, default Q1 принят. [Исключение владельца](https://github.com/Matysh/houseplan-card/issues/802#issuecomment-6000425421)
|
||||
разрешает саморевью, ручное слияние и следующую бету вместо недоступной
|
||||
ревью-модели. Это не вердикт штатного автоматического ревьюера.
|
||||
|
||||
Автор прочитал весь diff; дополнительно отдельный локальный агент проверил
|
||||
продуктовый материал и повторно проверил исправление своей находки. Итог
|
||||
обоих прочтений — без High/Medium. Изначально длинная подпись адресата могла
|
||||
перекрыть сетевой status-бейдж; это исправлено тем же измеряемым размещением,
|
||||
с переносом текста и присоединением стрелки к фактическому краю подписи.
|
||||
|
||||
## Приёмка
|
||||
|
||||
| Контракт | Проверка |
|
||||
| --- | --- |
|
||||
| AC1: адресат | ZHA/Z2M, имя из текущего маппинга, fallback, длинные строки и специальные символы; Lit выводит текст, входящий счётчик не изменён. |
|
||||
| AC2: читаемость | Реальный pointer, remote/unplaced/status-only, partial/stale/error, края, Flat и настоящий 2.5D, обе темы; измеряются пересечения DOM-прямоугольников. |
|
||||
| AC3: тесная карточка | 13 unit-тестов чистого расчёта, включая независимый перебор 200 малых раскладок; browser hide/restore без нового hover. |
|
||||
| AC4: обновления | Lazy adoption уже наведённого устройства, runtime, resize и camera, отсутствие новых запросов от pointer; измерения после render объединены через rAF. |
|
||||
| AC5: input/lifecycle | Keyboard restore, mouse/touch/pen, несколько карточек и unmount; соседние input/render smokes. Наблюдатели отключаются при clear/disconnect. |
|
||||
| AC6: визуал | Просмотрены кадры длинной подписи, status-only 2.5D, узкой карточки и transformed/scrolled ancestor. Эталоны не переписываются вслепую. |
|
||||
|
||||
## Исполненные проверки
|
||||
|
||||
- WSL Ubuntu, Node 22.23.2: `npm run gate:small` — PASS, 0 упавших гейтов.
|
||||
Нативный Windows не использован как доказательство полного unit-набора:
|
||||
платформенные shell-тесты проверены в WSL.
|
||||
- `node demo/smoke_zigbee_tooltip_layout.mjs` — 77/77 PASS на Windows с pinned
|
||||
Node; базовые 70 проверок также PASS в WSL. Дополнительные семь проверяют
|
||||
реальный `position:fixed` при `translate + scale` предка, scroll без нового
|
||||
hover и повторное наведение после большой прокрутки.
|
||||
- WSL: `smoke_zigbee_topology_hover`, `smoke_household_journeys`,
|
||||
`smoke_render_invalidation`, `smoke_touch_tips` — PASS.
|
||||
- WSL: полный `npm run golden:verify` — PASS; ни один эталон не изменён.
|
||||
- Отрицательный контроль старого cursor-position даёт 1596 CSS px² перекрытия;
|
||||
новый layout устраняет его. Это не DOM-count и не поиск строки в исходнике.
|
||||
- Изолированный raster-oracle обводки временно скрывает обычную подсказку
|
||||
только внутри тестовой сцены, иначе её тёмный фон закрывает измеряемую стрелку
|
||||
при scale 0.5. Все пороги и проверки масштабирования сохранены; совместное
|
||||
отображение подсказок защищено отдельным новым smoke.
|
||||
- `git diff --check`, process gate с живыми issue-метками,
|
||||
`node scripts/mutation-gate.mjs --check` — PASS. Два мутанта размещения
|
||||
зарегистрированы; их исполнение оставлено ночному гейту по процессу.
|
||||
|
||||
Smoke-select перечисляет много потребителей общего live-hover; локально выбран
|
||||
Zigbee, household actions, invalidation и touch, поскольку новая ветка активна
|
||||
только для pointer-tooltip с совпадающим владельцем реально показанных
|
||||
Zigbee-бейджей. Остальные режимы ранним return сохраняют старое поведение.
|
||||
Полная CI-матрица остаётся обязательной на точном SHA беты.
|
||||
|
||||
## Ограничения и заключение
|
||||
|
||||
В физически слишком маленькой области невозможно гарантировать размещение
|
||||
сколь угодно длинного диагностического текста. Текст не обрезается до потери
|
||||
имени, обычный tooltip уступает место; новая настройка не добавлена.
|
||||
Изменения не затрагивают маршруты, LQI, transport, сохранённые данные или
|
||||
действия устройств. Рост bundleBytes на 8229 байт обоснован в issue; прочие
|
||||
монолитные метрики и initial-load budget не расширены.
|
||||
|
||||
Разрешено ручное слияние после зелёных проверок ветки. Этот документ сам по
|
||||
себе не подтверждает готовность точного release-кандидата или публикацию.
|
||||
@@ -1,12 +1,14 @@
|
||||
# Индекс ревью
|
||||
|
||||
Генерируется `node scripts/reviews-index.mjs` (#635) — не редактировать руками. Документов: 305, issue: 152. Вердикт: 🟢 зелёный · 🟡 жёлтый · 🔴 красный · ⚪ не распознан (свободная форма старых документов). H/M — число High/Medium по строке вердикта или заголовкам находок. Файлы — пути, названные в находках; ищите по имени файла: `grep form-kit INDEX.md`.
|
||||
Генерируется `node scripts/reviews-index.mjs` (#635) — не редактировать руками. Документов: 307, issue: 153. Вердикт: 🟢 зелёный · 🟡 жёлтый · 🔴 красный · ⚪ не распознан (свободная форма старых документов). H/M — число High/Medium по строке вердикта или заголовкам находок. Файлы — пути, названные в находках; ищите по имени файла: `grep form-kit INDEX.md`.
|
||||
|
||||
| Issue | Документ | Этап · раунд | Вердикт | H | M | Находки | Файлы |
|
||||
|---|---|---|---|---:|---:|---|---|
|
||||
| бета v1.80.0-beta.1 | [SHIP-REVIEW-v1.80.0-beta.1.md](SHIP-REVIEW-v1.80.0-beta.1.md) | пакетное ревью ship · — | ⚪ — | 0 | 0 | — | — |
|
||||
| бета v1.79.0-beta.2 | [SHIP-REVIEW-v1.79.0-beta.2.md](SHIP-REVIEW-v1.79.0-beta.2.md) | пакетное ревью ship · — | ⚪ — | 0 | 0 | — | — |
|
||||
| бета v1.79.0-beta.1 | [SHIP-REVIEW-v1.79.0-beta.1.md](SHIP-REVIEW-v1.79.0-beta.1.md) | пакетное ревью ship · — | ⚪ — | 0 | 0 | — | — |
|
||||
| #802 | [SPEC-REVIEW-802-r1.md](SPEC-REVIEW-802-r1.md) | spec · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||||
| #802 | [CODE-REVIEW-802-r1.md](CODE-REVIEW-802-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||||
| #800 | [SPEC-REVIEW-800-r1.md](SPEC-REVIEW-800-r1.md) | spec · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||||
| #800 | [CODE-REVIEW-800-r1.md](CODE-REVIEW-800-r1.md) | code · r1 | 🟡 жёлтый | 0 | 3 | живой браузер остаётся на умершем job после reload интеграции; AC1 не имеет свидетеля, чувствительного к прежнему 600-секундному deadline; материал не проходит обязательный gate:small; English guide всё ещё обещает прекращение ожидания через 10 минут | `custom_components/houseplan/zigbee_topology.py` `scripts/mutation-registry.mjs` `test/data-hp-contract.test.mjs` `test/reviews-index.test.mjs` `PREFLIGHT-SPEC-800.md` `test/smoke-select.test.mjs` `docs/USER-GUIDE.md` |
|
||||
| #800 | [CODE-REVIEW-800-r2.md](CODE-REVIEW-800-r2.md) | code · r2 | 🟡 жёлтый | 0 | 1 | временный not_ready во время reload навсегда блокирует явный retry | `src/zigbee-topology-runtime.ts` |
|
||||
|
||||
Reference in New Issue
Block a user