t.stopPropagation()}
@click=${t=>t.stopPropagation()}
diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md
index cefa6605..a8c88a3b 100644
--- a/docs/CHANGELOG.md
+++ b/docs/CHANGELOG.md
@@ -12,6 +12,25 @@
LQI colours again move continuously from red to green
([#213](https://github.com/Matysh/houseplan-card/issues/213)).
+## v1.65.0 — 2026-08-20
+
+- Plan editing now uses one continuous Walls workflow, supports open passages
+ and Home Assistant-aware openings in independent walls, and preserves exact
+ wall thickness, snap gaps, junctions and room geometry through preview,
+ optimization, import and rendering.
+- Device placement and control are more predictable: exact toggle entities,
+ registry-less opening bindings, linked virtual lights, room assignments
+ without HA Areas and explicit appliance run states all follow the same live
+ Home Assistant sources.
+- Spaces can be exported as plan-only templates or pinned to one configured
+ floor. New-space defaults, room labels, humidity tooltips and robot trails
+ now stay consistent across the supported views and editing flows.
+- Device markers use the new light/dark design system across plan, kiosk,
+ editor preview and static cards, including complete interaction capsules,
+ touch-safe hover handling, activity and availability states, opening locks
+ and a continuous LQI colour scale.
+- Small fixes and improvements.
+
## v1.65.0-beta.8 — 2026-08-20
- Device markers are now 10% more compact without moving their saved centres or
diff --git a/docs/CHANGELOG.ru.md b/docs/CHANGELOG.ru.md
index c4189326..934d1ef0 100755
--- a/docs/CHANGELOG.ru.md
+++ b/docs/CHANGELOG.ru.md
@@ -18,6 +18,26 @@
маркера снова плавно меняется от красного к зелёному
([#213](https://github.com/Matysh/houseplan-card/issues/213)).
+## v1.65.0 — 2026-08-20
+
+- Редактор Плана получил единый непрерывный инструмент «Стены», открытые
+ проходы и проёмы с привязками Home Assistant в независимых стенах. Точная
+ толщина, разрывы направляющих, стыки и геометрия комнат сохраняются в
+ предпросмотре, оптимизации, импорте и всех режимах отображения.
+- Размещение устройств и управление ими стали предсказуемее: точная сущность
+ переключения, привязки проёмов без Entity Registry, связанные виртуальные
+ источники света, комнаты без зон HA и явные состояния работы бытовой техники
+ используют единые живые источники Home Assistant.
+- Пространство теперь можно экспортировать как шаблон «Только планировка» или
+ закрепить экземпляр карточки за одним этажом. Начальные настройки нового
+ пространства, подписи комнат, влажность в подсказках и след робота остаются
+ согласованными между поддерживаемыми режимами и редакторами.
+- Маркеры устройств используют новую светлую/тёмную дизайн-систему в плане,
+ киоске, preview редактора и статической карточке: вся капсула интерактивна,
+ touch-hover не залипает, состояния работы и недоступности, значки замков и
+ плавная шкала LQI отображаются единообразно.
+- Мелкие исправления и улучшения.
+
## v1.65.0-beta.8 — 2026-08-20
- Маркеры устройств стали на 10% компактнее без сдвига сохранённого центра и
diff --git a/docs/RELEASE-NOTES.md b/docs/RELEASE-NOTES.md
index 06dc5080..c43e5e4e 100644
--- a/docs/RELEASE-NOTES.md
+++ b/docs/RELEASE-NOTES.md
@@ -1,14 +1,18 @@
-
+
## Основное
-- Маркеры устройств сохраняют точное центрирование на дробных масштабах; MDI-глифы стали крупнее, вся капсула со значением реагирует на hover и действие, замки проёмов соответствуют макетам, а LQI снова использует плавную шкалу.
+- Редактор Плана получил единый инструмент «Стены», открытые проходы и проёмы в независимых стенах с точной геометрией, привязками и предпросмотром.
+- Управление устройствами использует точные сущности и живые состояния Home Assistant; появились шаблон «Только планировка», закрепление карточки за этажом и более устойчивый след робота.
+- Маркеры устройств получили новую светлую/тёмную дизайн-систему, полную интерактивную капсулу, корректные touch-состояния, значки замков и плавную шкалу LQI.
- Мелкие исправления и улучшения.
## Highlights
-- Device markers stay precisely centred at fractional scales; MDI glyphs are larger, the complete value capsule responds to hover and actions, opening locks match the artwork, and LQI again uses a continuous colour scale.
+- Plan editing now uses one Walls tool with open passages and independent-wall openings, preserving exact geometry, bindings and placement previews.
+- Device control follows exact entities and live Home Assistant states; plan-only templates, fixed-floor cards and more resilient robot trails are now available.
+- Device markers use the new light/dark design system with a complete interaction capsule, correct touch states, opening locks and a continuous LQI colour scale.
- Small fixes and improvements.
-[Полный список изменений на русском](https://github.com/Matysh/houseplan-card/blob/v1.65.0-beta.9/docs/CHANGELOG.ru.md)
-· [Full changelog in English](https://github.com/Matysh/houseplan-card/blob/v1.65.0-beta.9/docs/CHANGELOG.md)
+[Полный список изменений на русском](https://github.com/Matysh/houseplan-card/blob/v1.65.0/docs/CHANGELOG.ru.md)
+· [Full changelog in English](https://github.com/Matysh/houseplan-card/blob/v1.65.0/docs/CHANGELOG.md)
diff --git a/docs/STATUS.md b/docs/STATUS.md
index 41166d22..d9fb5a05 100644
--- a/docs/STATUS.md
+++ b/docs/STATUS.md
@@ -21,8 +21,8 @@ metadata). Only an explicit owner-approved emergency hotfix may skip this gate.
| Item | State |
|---|---|
-| Version | **v1.65.0-beta.9** everywhere (manifest, const.py, package.json, CARD_VERSION) — prerelease candidate for the current `S8-merged` queue |
-| Current local cycle | v1.65.0-beta.9 candidate carries #213. Device marker cores stay concentric at fractional scales, MDI glyphs are larger, the complete value capsule owns hover and the configured action, opening lock badges follow the accepted artwork, and marker LQI again uses the continuous colour scale. Publication waits for a green exact-SHA Validate, reviewed Linux golden baselines for the intentional marker and lock-badge changes, and the fail-closed prerelease preflight. v1.65.0-beta.8 is published and stable v1.64.0 remains unchanged. |
+| Version | **v1.65.0** everywhere (manifest, const.py, package.json, CARD_VERSION) — stable promotion of the published v1.65.0-beta.9 product line |
+| Current local cycle | v1.65.0 promotes the exact product behaviour already published through beta.9: the unified Plan wall/opening workflow, more precise Home Assistant bindings and device states, plan-only export and fixed-floor cards, plus the complete light/dark device-marker redesign and interaction polish. The stable commit contains only version fields, generated snapshots and release metadata; stable publication is gated by the full local suite and green exact-SHA Validate and Full Performance workflows. |
| Hidden Labs Stage | #89 Stage 1 ships in v1.63.0-beta.1. #122 Stage 2 ships in v1.64.0 and evolves the same hidden, expiring `iso` experiment with matte walls, a low exterior floor edge, restrained shared shadows and live vertical door/window/gate panels. Flat remains default; editors and `houseplan-space-card` remain flat; live floor effects and HA actions remain unchanged. Public activation remains a separate task. |
| Workflow | Superseded 2026-08-12: the pre-1.62 rule of "local edits without tests or commits" is **dead** — since release 1.62 every product change follows `PROCESS.md` (issue in `S5-ready`+, branch `issue/-slug`, trailers on every commit, review pipeline; `AGENTS.md` is the summary). Release mechanics below remain current. A requested pre-release gets a production build plus the smallest targeted unit/smoke set covering the changed surfaces, one tested `dev` commit/tag and a GitHub Release with `prerelease=true`; `main` stays untouched. The complete local frontend/backend/smoke gate runs only before a stable release, after which `main` is fast-forwarded to the exact tested `dev` SHA and the GitHub Release uses `prerelease=false`. Release bodies are short and bilingual (Russian first): only significant user changes get individual bullets, while minor/code-only work is grouped as `Мелкие исправления и улучшения` / `Small fixes and improvements`; every body ends with separate links to the Russian and English changelogs. Detailed RU/EN changelog bullets may link the corresponding closed GitHub Issues; open or partially delivered issues are never presented as shipped. Telegram announcements are sent only for stable releases; beta and RC publication is silent. `docs/RELEASE-NOTES.md` is the current canonical body instance; `npm run release:prerelease -- --issues=… --yes` is the primary local publication path and the manual `Publish prerelease` workflow is its GitHub-only equivalent once present on `main`. Nothing is copied to the home instance by hand |
| GitHub | https://github.com/Matysh/houseplan-card — [Issues](https://github.com/Matysh/houseplan-card/issues) are the canonical task records; their labels carry priority and workflow status (`PROCESS.md` §9). GitHub Projects is no longer used. `main` carries stable releases; pre-release tags may point directly at `dev`. Work lands on `dev` and is merged into `main` for a stable release, so `dev` is normally equal to or ahead of `main`, never behind. Push via SSH key `ha_jb` (remote git@github.com:…); API releases via the fine-grained PAT in `~/.git-credentials` (Contents R/W, issued 2026-07-23) |
diff --git a/docs/images/screenshots.json b/docs/images/screenshots.json
index ec9660f4..76990bfa 100644
--- a/docs/images/screenshots.json
+++ b/docs/images/screenshots.json
@@ -1,7 +1,7 @@
{
"version": 1,
"fixture": "synthetic-only",
- "sourceFingerprint": "599e6528b07f4762db20025ae84f888e0a61f173c9605195a9a9348c9b08393a",
+ "sourceFingerprint": "5a28e238ae1e2e390a37b02ca0373e96a9b896ee7f9bf2bbbbc673077b4d7fc9",
"captureScriptSha256": "34f2219790d46efd8250e7a1bd829cb8fc0b0547e1260635fefa52407551b41b",
"command": "npm run build && node demo/docs/capture.mjs",
"scenarios": {
@@ -13,7 +13,7 @@
},
"theme": "dark",
"language": "en",
- "sourceSha256": "599e6528b07f4762db20025ae84f888e0a61f173c9605195a9a9348c9b08393a",
+ "sourceSha256": "5a28e238ae1e2e390a37b02ca0373e96a9b896ee7f9bf2bbbbc673077b4d7fc9",
"imageSha256": "2885f96e348b15ab7c696e56e99bddcd9bb2ee94218a883e5a2155f45f5042aa"
},
"view-touch": {
@@ -24,7 +24,7 @@
},
"theme": "dark",
"language": "en",
- "sourceSha256": "599e6528b07f4762db20025ae84f888e0a61f173c9605195a9a9348c9b08393a",
+ "sourceSha256": "5a28e238ae1e2e390a37b02ca0373e96a9b896ee7f9bf2bbbbc673077b4d7fc9",
"imageSha256": "f62d8af3617c00a5e99511bd765980d2e27badf25047a1be34046b64195abe6c"
},
"space-create": {
@@ -35,7 +35,7 @@
},
"theme": "dark",
"language": "en",
- "sourceSha256": "599e6528b07f4762db20025ae84f888e0a61f173c9605195a9a9348c9b08393a",
+ "sourceSha256": "5a28e238ae1e2e390a37b02ca0373e96a9b896ee7f9bf2bbbbc673077b4d7fc9",
"imageSha256": "c53db2e5c642a5549c13f3c93a5b359fed69bdb2621bf71a243a877ffcb95e6b"
},
"room-contour-close": {
@@ -46,7 +46,7 @@
},
"theme": "dark",
"language": "en",
- "sourceSha256": "599e6528b07f4762db20025ae84f888e0a61f173c9605195a9a9348c9b08393a",
+ "sourceSha256": "5a28e238ae1e2e390a37b02ca0373e96a9b896ee7f9bf2bbbbc673077b4d7fc9",
"imageSha256": "2f13ea645af306eee9cc7c52699c928377b72f412b08c1a3db6beb848ace1b51"
},
"plan-context-tray": {
@@ -57,7 +57,7 @@
},
"theme": "dark",
"language": "en",
- "sourceSha256": "599e6528b07f4762db20025ae84f888e0a61f173c9605195a9a9348c9b08393a",
+ "sourceSha256": "5a28e238ae1e2e390a37b02ca0373e96a9b896ee7f9bf2bbbbc673077b4d7fc9",
"imageSha256": "a6c526fede11bc3503fd2384bd4a3f6afa008f481c5c47578f06cae6c81c6f9b"
},
"device-editor": {
@@ -68,7 +68,7 @@
},
"theme": "dark",
"language": "en",
- "sourceSha256": "599e6528b07f4762db20025ae84f888e0a61f173c9605195a9a9348c9b08393a",
+ "sourceSha256": "5a28e238ae1e2e390a37b02ca0373e96a9b896ee7f9bf2bbbbc673077b4d7fc9",
"imageSha256": "9585b59add4d35b5a6f028ce5b720ef1b77a3f8b19436d192cd1a0e6fc637264"
},
"device-display-preview": {
@@ -79,7 +79,7 @@
},
"theme": "dark",
"language": "en",
- "sourceSha256": "599e6528b07f4762db20025ae84f888e0a61f173c9605195a9a9348c9b08393a",
+ "sourceSha256": "5a28e238ae1e2e390a37b02ca0373e96a9b896ee7f9bf2bbbbc673077b4d7fc9",
"imageSha256": "cfc317da4628d079a116ff71311fbf06b1eb3b181928a5ea7ba888ab936a5e8b"
},
"background-editor": {
@@ -90,7 +90,7 @@
},
"theme": "dark",
"language": "en",
- "sourceSha256": "599e6528b07f4762db20025ae84f888e0a61f173c9605195a9a9348c9b08393a",
+ "sourceSha256": "5a28e238ae1e2e390a37b02ca0373e96a9b896ee7f9bf2bbbbc673077b4d7fc9",
"imageSha256": "d7cfe70551d9260169df8efd832e32ed7df99c7f60b55d1fd4a8322bd4c47175"
},
"room-card": {
@@ -101,7 +101,7 @@
},
"theme": "dark",
"language": "en",
- "sourceSha256": "599e6528b07f4762db20025ae84f888e0a61f173c9605195a9a9348c9b08393a",
+ "sourceSha256": "5a28e238ae1e2e390a37b02ca0373e96a9b896ee7f9bf2bbbbc673077b4d7fc9",
"imageSha256": "029a3e69ec647a8a370d99e6bb7f9225833c526739076022f6b52ba54bff30ea"
},
"device-info": {
@@ -112,7 +112,7 @@
},
"theme": "dark",
"language": "en",
- "sourceSha256": "599e6528b07f4762db20025ae84f888e0a61f173c9605195a9a9348c9b08393a",
+ "sourceSha256": "5a28e238ae1e2e390a37b02ca0373e96a9b896ee7f9bf2bbbbc673077b4d7fc9",
"imageSha256": "a06cbf83f09e2f67b3566d7c0b10e973db060c3d20786f26f74ada6a21937c3e"
}
}
diff --git a/package-lock.json b/package-lock.json
index edd610a6..7276604c 100755
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "houseplan-card",
- "version": "1.65.0-beta.9",
+ "version": "1.65.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "houseplan-card",
- "version": "1.65.0-beta.9",
+ "version": "1.65.0",
"license": "MIT",
"dependencies": {
"lit": "^3.1.3",
diff --git a/package.json b/package.json
index 5048d1bf..f73b85db 100755
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "houseplan-card",
- "version": "1.65.0-beta.9",
+ "version": "1.65.0",
"description": "Interactive house plan Lovelace card for Home Assistant",
"license": "MIT",
"type": "module",
diff --git a/src/houseplan-card.ts b/src/houseplan-card.ts
index 4c540131..a7e35b44 100755
--- a/src/houseplan-card.ts
+++ b/src/houseplan-card.ts
@@ -262,7 +262,7 @@ import {
} from './opening-placement';
import { safeStoredColor } from './color';
-const CARD_VERSION = '1.65.0-beta.9';
+const CARD_VERSION = '1.65.0';
const DISPLAY_LABEL_KEYS: Record = {
badge: 'display.badge',
icon_ripple: 'display.icon_ripple',