Written on the owner's decisions of 2026-08-21: merge as the chain is finished, sweep already-drawn plans from "Optimise plans", and keep merging even when an opening sits on the seam. The part that is easy to miss is that last one. An opening stores its position as a fraction of its host's length, so merging two partitions changes the length under it and moves the door unless the fraction is recomputed. AC3 therefore checks the door's coordinates in plan units, not that a field was rewritten. Issue: #229 User-Visible: no
Спецификации задач
Актуально на 2026-08-19.
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 |
| #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 |
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 |
| #75 + #76 Единый поток размещения проёмов | 075-076-opening-placement-flow.md |
| #84 Источник «Всегда» без сущности HA + #88 ведущая сущность | 084-passive-forced-light-sources.md |
| #90 Управляемый бейдж со значением | 090-device-value-badge.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 |
| #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 |
P3
| Issue | ТЗ |
|---|---|
| #198 Optimize очищает изолированный микро-интервал толщины | 198-optimize-micro-interval.md |
| #103 Состояния в Toggle confirmation | 103-toggle-confirmation-state.md |
| #200 Одинаковая геометрия подписи комнаты в View и Plan editor | 200-room-label-parity.md |
P3
| Issue | ТЗ |
|---|---|
| #57 Единый выбор цвета и прозрачности | 057-color-opacity-picker.md |
| #180 Единый picker во всех местах выбора цвета | 180-all-color-call-sites.md |
Правило актуализации
При изменении продуктового решения сначала обновляется соответствующее issue, затем ТЗ. Реализация не считается завершённой только по наличию кода: нужны выполненные acceptance criteria, предусмотренная ТЗ проверка и актуальный статус Project v2.