Codex 9683a59016
Полные бенчмарки производительности / Бенчмарки рендера и геометрии (isometric) (push) Failing after 4m40s
Полные бенчмарки производительности / Бенчмарки рендера и геометрии (interaction) (push) Failing after 5m4s
Полные бенчмарки производительности / Бенчмарки рендера и геометрии (isometric-stage3) (push) Failing after 4m33s
Полные бенчмарки производительности / Бенчмарки рендера и геометрии (blend) (push) Failing after 5m6s
Полные бенчмарки производительности / Бенчмарки рендера и геометрии (space-default) (push) Failing after 3m55s
Полные бенчмарки производительности / Бенчмарки рендера и геометрии (overlay) (push) Failing after 4m2s
Полные бенчмарки производительности / Бенчмарки рендера и геометрии (plan-snap) (push) Failing after 4m1s
Проверка (CI) / Классификация изменённых файлов (push) Successful in 34s
Проверка (CI) / HACS: валидация репозитория (push) Skipped
Проверка (CI) / Hassfest: манифест интеграции (push) Skipped
Проверка (CI) / Фронтенд: типы, юниты, мутанты, синхрон бандла (push) Skipped
Проверка (CI) / Предполёт: документация, провенанс, процесс (push) Successful in 45s
Проверка (CI) / Переиспользование: это дерево уже проверено (push) Failing after 1m9s
Проверка (CI) / Смоки в браузере (шард 1 из 3) (push) Skipped
Проверка (CI) / Смоки в браузере (шард 2 из 3) (push) Skipped
Проверка (CI) / Смоки в браузере (шард 3 из 3) (push) Skipped
Проверка (CI) / Смоки: все шарды зелёные (push) Skipped
Проверка (CI) / Golden-кадры против принятых эталонов (push) Skipped
Проверка (CI) / Перф-смок: бюджет времени кадра (push) Skipped
Проверка (CI) / Геометрия: TS/Python parity исполнена (push) Skipped
Проверка (CI) / Бэкенд: pytest в Home Assistant (push) Skipped
Проверка (CI) / Мутанты по диффу (1/6): затронутые свидетели краснеют (push) Failing after 1m47s
Проверка (CI) / Мутанты по диффу (2/6): затронутые свидетели краснеют (push) Failing after 2m21s
Полные бенчмарки производительности / Бенчмарки рендера и геометрии (large-house) (push) Failing after 12m40s
Проверка (CI) / Мутанты по диффу (4/6): затронутые свидетели краснеют (push) Successful in 2m51s
Проверка (CI) / Мутанты по диффу (5/6): затронутые свидетели краснеют (push) Failing after 1m33s
Проверка (CI) / Мутанты по диффу (3/6): затронутые свидетели краснеют (push) Successful in 4m31s
Проверка (CI) / Мутанты по диффу (6/6): затронутые свидетели краснеют (push) Successful in 3m28s
Проверка (CI) / Доказательство выполненных проверок (push) Failing after 26s
Полные бенчмарки производительности / Бенчмарки рендера и геометрии (space-glow) (push) Failing after 29m2s
perf: принять шаг изометрии на жесте в бюджетах двух профилей (#585)
Полные бенчмарки кандидата v1.76.0 (прогон 35097102695, SHA c3d64789) против
v1.75.0 покраснели на двух скрытых изометрических профилях:

| метрика | v1.75.0 | v1.76.0 | предел |
|---|---|---|---|
| large-house-isometric resizePreview | 603 | 981.4 | 753 |
| large-house-isometric panZoom | 90.8 | 205.2 | 150.8 |
| stage3-dense stateUpdate | 77.5 | 169.1 | 152.5 |
| stage3-dense resizePreview | 582.5 | 765.6 | 732.5 |
| stage3-dense panZoom | 90.6 | 171.7 | 150.6 |

Шаг настоящий и объяснённый: #583 добавил скрытому 2.5D-виду геометрии, а
поиск свободного места для подписей даже после ускорения решёткой стоит вдвое
дороже, чем до #583. Абсолютные потолки не тронуты и держатся с запасом
(panZoom 205 при 600, resize 981 при 2200); все семь пользовательских профилей
зелёные — регрессия целиком внутри вида за `hp_alpha`.

Решение владельца 2026-09-16: принять. Рычаг — допуск в миллисекундах, а не
коэффициент: он покрывает разовый сдвиг уровня и продолжает ловить рост от
нового уровня, тогда как поднятый коэффициент разрешил бы удвоение навсегда.
Значения одинаковы у обоих профилей — контракт #160 требует, чтобы плотный
двойник Stage 3 делил с историческим профилем каждый общий потолок, и тест
`performance-workflow` это стережёт.

Допуски временные. #585 переписывает поиск на перебор границ препятствий
вместо скана диска 48 px; когда он приедет, значения возвращаются к 150/60/75.
Тест `performance-budget` фиксирует и числа, и то, что наблюдённый шаг проходит,
а следующий такой же — уже нет.

Честно о границе метода: сравнение идёт с ПРЕДЫДУЩЕЙ вершиной main, а она уже
несёт эту же линейку, поэтому следующий прогон был бы зелёным и без правки
бюджетов. Правка сделана не ради зелёного прогона, а чтобы принятый уровень был
записан явно и проверялся тестом. Отдельно завожу, что базой стабильного
кандидата должен быть предыдущий стабильный тег, а не вершина main.

npm test 2721/2720/0 fail.

Issue: #585
User-Visible: no
Release: v1.76.0
2026-09-16 17:36:47 +03:00
2026-09-16 15:34:35 +03:00
2026-09-16 15:34:35 +03:00
2026-09-16 15:34:35 +03:00
2026-09-16 15:34:35 +03:00
2026-09-16 15:34:35 +03:00

🏠 House Plan — a live home map for Home Assistant

HACS Default GitHub release CI Live demo Telegram chat

📘 Full user guide · 🇷🇺 Русский · 🗂 Project issues

Your whole home at a glance

House Plan turns Home Assistant into a live map of your home. Open the dedicated House Plan item in the Home Assistant sidebar, upload a plan or draw rooms, bind them to Home Assistant areas, and the area's devices appear automatically. You can immediately see where a light is on, a door is open, a room is too cold, Zigbee signal is weak, or a leak sensor has fired.

Synthetic home in View mode with rooms, devices, light and climate

Setup is entirely graphical: no floor-plan YAML, Inkscape, or external editor. Plan data and device positions live on the Home Assistant server and stay in sync across screens.

Edit on a desktop computer. View and kiosk are fully supported on phones and tablets. The editors are designed primarily for a mouse and keyboard; individual touch editing operations may be awkward or unavailable. See the exact touch support contract.

What House Plan provides

  • Live state and safe actions. Lights and other safe devices can toggle from the plan; a lock cannot be opened by an accidental plan tap.
  • Three built-in editors. Plan creates rooms, walls and openings; Device places and configures markers; Background adds lines, labels and furniture.
  • Area-aware rooms. New devices appear automatically, while room cards can show temperature, humidity, light state and average LQI.
  • Light and environment. Room fills, lamp Glow, wall shadows, a day-cycle backdrop and sunlight through windows.
  • Doors, windows, gates and vacuums. Openings follow real contacts and locks; a robot can show its position, dock and travelled path.
  • Several floors and screens. Space tabs, swipe navigation, local viewport, and a separate initial floor for each card.
  • Wall-display kiosk. A plan-only view with fullscreen navigation and icon sizes saved for that display.

The same synthetic home in touch View mode

Your first working room

  1. Install the integration and open House Plan in the Home Assistant sidebar.
  2. Create the first space: upload SVG/PNG/JPG/WebP, reuse an uploaded image, or choose no image and draw the plan by hand.
  3. In Plan, select Room outline, place vertices, and click the first point to close the outline.
  4. Name the room and bind it to a Home Assistant area. Use “No area” for a room that has no devices.
  5. Open Device: devices from the bound area are already placed; drag their markers to the correct positions.
  6. Optionally use Background for lines, text and furniture.
  7. Return to View. The plan now displays live state and accepts safe actions.

Creating the first space

Closing a room outline on its first point

A selected partition and the Plan context tray

Device settings with binding provenance and the exact action result

Live presentation preview for the same device

Every workflow and edge case is in the full user guide. The Background editor contract and vacuum guide are the authorities for those subsystems.

Installation

HACS

Open the repository in HACS

House Plan is in the HACS default catalog — no custom repository needed.

  1. In HACS search for House Plan and install it.
  2. Restart Home Assistant.
  3. Open Settings → Devices & services → Add integration → House Plan.

The sidebar page and optional dashboard cards are registered automatically. After installing or updating House Plan, restart Home Assistant and fully reload the page: Ctrl+F5 on Windows/Linux or Cmd+Shift+R on macOS.

Storage mode (Home Assistant default)

No YAML is normally needed. If automatic registration did not make the card available, open Settings → Dashboards → menu ⋮ → Resources → Add resource, enter /houseplan_files/houseplan-card.js, and select JavaScript module.

YAML resources mode (Home Assistant 2026.2+)

To manage resources in configuration.yaml independently of the dashboard mode, use:

lovelace:
  resource_mode: yaml
  resources:
    - url: /houseplan_files/houseplan-card.js
      type: module

Legacy Home Assistant 2024.6–2026.1

Only for a full-YAML dashboard that is already managed in YAML, use:

lovelace:
  mode: yaml
  resources:
    - url: /houseplan_files/houseplan-card.js
      type: module

mode: yaml changes the dashboard itself to YAML mode. Do not switch a storage dashboard to legacy YAML just for House Plan; use the Storage mode instructions above instead. Do not use the on-disk path inside custom_components; Home Assistant does not serve that path as a JavaScript module.

Manual installation

Copy the complete custom_components/houseplan release folder to config/custom_components, restart Home Assistant, and add the House Plan integration. Do not copy only houseplan-card.js: the card also uses an internal manifest and content-hashed modules from the same release.

Open House Plan

After the integration is added, open House Plan in the Home Assistant sidebar. This full-page view is the primary entry point and needs no dashboard or YAML setup. It remembers the last space but always returns from another HA page in View rather than reopening an editor. Users without editing permission see the same live plan without editor controls.

If the sidebar entry cannot be registered, the integration and existing dashboard cards continue to work; check Settings → System → Repairs → System information → House Plan after restarting and hard-refreshing HA.

Optional dashboard card

Add the card only when House Plan must be embedded in a dashboard. In a Sections view it requests full width by default, while a manual size chosen in HA remains authoritative. Add it in the UI or as:

type: custom:houseplan-card
title: House plan

Different screens may start on different spaces:

type: custom:houseplan-card
default_floor: ground

All cards share server-side rooms and coordinates. Current mode, viewport and selected space remain local to the screen. Revision checks and live sync cover concurrent clients, but avoid editing the same object in two browsers at once.

Detailed documentation

Support and feedback

  • Questions and plan examples: Telegram @ha_houseplan.
  • Bugs and proposals: GitHub Issues.
  • Before reporting, update House Plan, restart HA and hard-refresh the page. Include the version, browser, logs and reproduction steps; private entity IDs may be replaced with fictional ones.

Documentation screenshots are produced by the reproducible npm run build && node demo/docs/capture.mjs command using synthetic data only. Scenario version, source fingerprint and every image hash are recorded in the screenshot index.

License: MIT.

S
Description
Интерактивный план дома для Home Assistant — Lovelace card + custom component
Readme MIT
542 MiB
Languages
JavaScript 51%
TypeScript 35.8%
Python 12.9%
Shell 0.2%