Files
houseplan-card/docs/specs
2026-08-30 16:11:35 +00:00
..
2026-08-09 21:51:33 +03:00
2026-08-09 21:51:33 +03:00
2026-08-09 21:51:33 +03:00
2026-08-09 21:51:33 +03:00
2026-08-30 16:11:35 +00:00

Спецификации задач

Актуально на 2026-08-30.

GitHub Issues и GitHub Projects (v2) остаются единственным каноническим backlog проекта. Этот каталог содержит развёрнутые ТЗ: каждое ТЗ ссылается на issue, а issue — на соответствующий файл. Статус, приоритет и факт завершения меняются только в GitHub.

Статусы ТЗ:

  • готово к реализации — продуктовые решения зафиксированы, остаётся техническая работа;
  • черновик решения — в ТЗ дана рекомендация, но перед реализацией требуется принять отмеченные продуктовые решения;
  • в реализации — работа уже ведётся в рамках текущего этапа;
  • реализовано — ТЗ сохранено как проверяемый acceptance contract.

Обязательные release-артефакты номерного ТЗ

Если задача меняет пользовательское поведение, её ТЗ обязано явно перечислить:

  • записи в docs/CHANGELOG.md и docs/CHANGELOG.ru.md;
  • затронутую пользовательскую документацию;
  • требуемые screenshots/golden и способ их review, если меняется визуал;
  • release/performance/security artifacts, если они входят в acceptance gate.

Отсутствие этого раздела не означает, что документация необязательна. Для чистого refactoring ТЗ должно прямо зафиксировать отсутствие пользовательских изменений и перечислить технические доказательства безопасного поведения.

P1

Issue ТЗ
#6 Vacuum XCME path segments 006-vacuum-xcme-path.md
#7 Valetudo room outlines 007-vacuum-valetudo-room-outlines.md
#8 Vacuum support docs and XCME hint 008-vacuum-support-docs-xcme-hint.md
#27 External vacuum source picker 027-vacuum-external-source-picker.md
#28 Room View card 028-room-view-card.md
#29 Device inbox lifecycle 029-device-inbox-lifecycle.md
#30 Dialog information architecture 030-dialog-information-architecture.md
#31 View accessibility 031-view-accessibility.md
#32 Unified danger confirmation 032-unified-danger-confirmation.md
#33 Config schema lifecycle 033-config-schema-lifecycle.md
#34 Frontend decomposition 034-frontend-decomposition.md
#35 Current UX documentation 035-current-ux-docs.md
#50 Экспорт и импорт конфигурации 050-config-export-import.md
#58 Vacuum integration coverage — Stage 1 058-vacuum-stage1.md
#89 Опциональный объёмный 2.5D/изометрический вид 089-isometric-view.md
#89 Этап 1: объёмный вид за флагом Labs 089-isometric-view-stage1.md
#98 Единая система пульсаций и активностей устройства 098-device-pulse-system.md
#131 Полный первый кадр View у read-only-пользователя 131-readonly-cold-start.md
#138 Автозамыкание комнаты по существующей стене 138-adjacent-room-autoclose.md
#146 Четырёхфазный фон «Следует за Солнцем» 146-four-phase-sun-background.md
#156 Регрессии Full Performance перед v1.64.0 stable 156-full-performance-regressions.md
#164 Активный цикл стиральной машины должен быть жёлтым 164-washer-active-cycle.md
#166 Солнечные лучи зеркально учитывают направление севера 166-sun-north-rotation.md
#167 Экспорт «только планировка» 167-plan-only-export.md
#170 HA-устройство не привязывается к комнате без HA-зоны 170-room-without-area.md
#179 Новый визуальный язык маркеров устройств 179-device-icons-redesign.md
#199 Geometry preflight перед записью Optimize 199-optimize-geometry-preflight.md
#210 Фиксированное пространство экземпляра карточки 210-fixed-floor-card.md
#211 Визуальное соответствие маркеров дизайн-пакету #179 211-device-icons-visual-parity.md
#217 Внешняя рамка Text-маркера должна быть капсулой 217-text-shell-outline.md
#218 Floating-point шум комнаты не гасит Glow пространства 218-glow-floor-geometry.md
#219 Единая палитра замков и glyph на оранжевых подложках 219-lock-orange-palette.md
#205 Продолжение следа после короткой остановки пылесоса 205-vacuum-trail-resume-grace.md
#220 Порядок пространств перетаскиванием вкладок 220-space-tab-reorder.md
#229 Сращивание коллинеарных отрезков стен 229-merge-collinear-partitions.md
#226 Entity-marker не дублируется родительским HA-устройством 226-entity-parent-dedup.md
#223 Optimize канонизирует координаты без floating-point шума 223-optimize-coordinate-canonicalization.md
#224 Канонические координаты на каждой записи 224-config-coordinate-canonicalization.md
#228 Надёжное рисование стен и операции с готовым контуром 228-plan-drawing-problems.md
#239 Масштаб сетки не меняет внешний вид плана; default 1 см/1 дюйм 239-grid-scale-invariance.md
#231 Декоративный слой виден поверх заливок комнат 231-decor-layer-order.md
#243 Рабочее перетаскивание вкладок и точный указатель вставки 243-space-tab-drop-target.md
#276 Совпадающая partition становится одной общей стеной 276-coincident-partition-reconciliation.md
#277 Безопасный Resize без изменения топологии 277-safe-resize.md
#278 Локальный сбой extra-body union не гасит всю кладку 278-wall-union-isolation.md
#279 Сплошной почти ортогональный T-стык 279-near-orthogonal-junction.md
#280 Backend принимает доказанный Optimize rehost 280-optimize-rehost-validation.md
#281 Честный Resize после outer-partition reconciliation 281-resize-zero-range.md
#293 Активная рукоятка Resize выполняет pointer-жест 293-resize-pointer-noop.md
#296 Optimize удаляет доказанно избыточные скрытые стены 296-optimize-hidden-obstacles.md
#298 Resize сохраняет wall records на решётке и на carrier 298-resize-wall-thickness-carrier.md
#299 Записи толщины не пересекают границу роли стены 299-mixed-role-wall-records.md
#314 Атомарная запись v8 drafts и независимой геометрии 314-v8-draft-write-regression.md
#306 Нулевые стены вместо виртуальных границ 306-zero-thickness-walls.md
#348 Полная немецкая локализация 348-german-localization.md

P2

Issue ТЗ
#10 Roomba live position 010-vacuum-roomba-live-position.md
#11 Vacuum source health 011-vacuum-source-health.md
#12 Room cleaning highlight 012-vacuum-room-cleaning-highlight.md
#13 Golden open context tray 013-golden-open-context-tray.md
#19 Additive Glow blending 019-glow-additive-blending.md
#20 Glow through open doors 020-glow-open-door-spill.md
#21 Safe color CSS variables 021-color-css-injection.md
#36 Room Glow override 036-room-glow-override.md
#37 Room scale system 037-room-scale-system.md
#38 Icon rule builder 038-icon-rule-builder.md
#39 Large backdrops 039-large-backdrops.md
#40 Floors/Areas onboarding 040-floor-area-onboarding.md
#41 Keyboard object editing 041-keyboard-object-editing.md
#42 Backend engineering quality 042-backend-engineering-quality.md
#43 Private support report 043-private-support-report.md
#44 Filtering/grouping policy 044-filter-grouping-policy.md
#51 Custom decor images 051-custom-decor-images.md
#52 Dimensions in View 052-view-dimensions.md
#54 Zigbee topology overlay 054-zigbee-topology-overlay.md
#55 Independent Glow overlay 055-independent-glow-overlay.md
#56 Static room color 056-static-room-color.md
#68 Подсказки к настройкам 068-help-affordance.md
#74 Position-only Undo/Redo устройств 074-device-position-undo.md
#75 + #76 Единый поток размещения проёмов 075-076-opening-placement-flow.md
#82 Плавное масштабирование zoom/fit/reset 082-smooth-zoom.md
#84 Источник «Всегда» без сущности HA + #88 ведущая сущность 084-passive-forced-light-sources.md
#86 Подсказки к настройкам, партия 1 086-settings-help-content-party1.md
#90 Управляемый бейдж со значением 090-device-value-badge.md
#378 Выбираемый источник для режима «Значение + состояние» 378-value-face-source.md
#381 Действие по нажатию «Ничего не делать» 381-no-op-tap-action.md
#383 Плавные трансформации и зеркалирование мебели 383-furniture-transform.md
#94 Универсальное действие «Переключить состояние» 094-universal-state-toggle.md
#101 Плавный переход View ↔ редакторы 101-view-editor-transition.md
#107 Переключение виртуального источника света «Всегда» 107-virtual-light-toggle.md
#113 Optional-контракт SpaceModel 113-optional-space-model.md
#117 Registry-less entity у проёма 117-registryless-opening-entity.md
#122 Изометрический режим Stage 2: скрытый режим и визуальная полировка 122-isometric-stage2.md
#123 Split из вершины не меняет наружную геометрию стен 123-corner-split-wall.md
#132 Проёмы в независимых стенах (+ bug #185) 132-partition-openings.md
#137 Узлы и линии привязки в редакторе Плана 137-plan-snap-overlay.md
#141 Бесшовные стыки перегородок и открытых контуров 141-wall-junctions.md
#159 Новый набор мебели и двухуровневая библиотека 159-furniture-pack.md
#361 Физическая толщина линий мебели при camera zoom 361-furniture-stroke-zoom.md
#157 Тип проёма «Открытый проём» 157-open-passage.md
#150 Точная геометрия коллинеарного перепада толщины 150-wall-thickness-transition.md
#172 Нулевой Split-разделитель не получает ложную толщину 172-zero-divider-taper.md
#173 Единый инструмент рисования стен и предложение комнаты по замыканию 173-unified-wall-tool.md
#174 Связанный виртуальный источник следует реальному контроллеру 174-linked-virtual-light-controller.md
#178 Выбор сущности для действия «Переключить состояние» 178-toggle-entity.md
#197 Один junction-патч не гасит кладку всего плана 197-junction-patch-fail-dark.md
#204 Честные defaults границ и имён при создании пространства 204-space-create-display-defaults.md
#201 Наследование толщины для атомарного участка стены 201-atomic-thickness-lookup.md
#203 Выключение названий скрывает все подписи комнат 203-hide-room-names.md
#186 Безопасный остаток стены у торцов партиционного проёма 186-partition-opening-jamb-margin.md
#234 Толщина отрезка цепочки не расходится между превью и записью 234-chain-segment-thickness.md
#233 Ресайз показывает внутренние размеры, а не осевые 233-resize-inner-dimensions.md
#300 Понятные подписи и измеряемые стены во время Resize 300-resize-measurement-layout.md
#238 Размеры проёма до внутренних физических границ 238-opening-inner-distances.md
#242 Символ проёма по центру толщины стены 242-opening-symbol-center.md
#244 Восстановление маркеров с мёртвой ссылкой на пространство 244-orphan-space-references.md
#248 Идемпотентный Optimize после записи и reload 248-optimize-idempotence.md
#251 Доступность контроллера не наследуется от управляемой цели 251-controller-target-availability.md
#252 Понятная и безопасная очистка забытых позиций в Optimize 252-optimize-orphan-layout-report.md
#253 Resize не теряет интервалы толщины стен 253-resize-wall-thickness.md
#258 Канонический wall key после Optimize и storage round-trip 258-wall-key-storage-roundtrip.md
#262 Повторное добавление entity после удаления родительского устройства 262-readd-child-entity-after-device-delete.md
#265 Единый контракт ссылочного шва импорта 265-import-reference-seam.md
#267 Таблица решений для «лица» маркера 267-device-presentation-decision-table.md
#274 Беспроводной контроллер одинаково выглядит на плане и в preview 274-wireless-controller-presentation-parity.md
#317 Климат комнаты следует размещению датчика в House Plan 317-room-climate-placement.md
#318 Активный контроллер без собственных сущностей следует controls 318-empty-controller-roster.md
#373 Плотное кадрирование static card по геометрии дома 373-space-card-house-fit.md
#294 Esc завершает текущую цепочку стен без удаления геометрии 294-wall-esc-detach.md

P3

Issue ТЗ
#209 Плавный след пылесоса 209-vacuum-trail-smoothing.md
#198 Optimize очищает изолированный микро-интервал толщины 198-optimize-micro-interval.md
#103 Состояния в Toggle confirmation 103-toggle-confirmation-state.md
#200 Одинаковая геометрия подписи комнаты в View и Plan editor 200-room-label-parity.md
#340 Обязательная ревизия повторной записи config/set 340-config-set-revision.md
#372 Компактное верхнее кадрирование static card без заголовка 372-space-card-empty-title.md

P3

Issue ТЗ
#57 Единый выбор цвета и прозрачности 057-color-opacity-picker.md
#180 Единый picker во всех местах выбора цвета 180-all-color-call-sites.md

P3

Issue ТЗ
#62 Масштабируемая i18n-инфраструктура 062-i18n-registry.md

Правило актуализации

При изменении продуктового решения сначала обновляется соответствующее issue, затем ТЗ. Реализация не считается завершённой только по наличию кода: нужны выполненные acceptance criteria, предусмотренная ТЗ проверка и актуальный статус Project v2.