Release v1.65.0-beta.4 candidate

Issue: #180
Issue: #192
Issue: #193
Issue: #196
Issue: #197
User-Visible: yes
This commit is contained in:
Sergey Matyunin
2026-08-19 14:24:38 +03:00
parent f08c4adabe
commit c9a83af50e
13 changed files with 42 additions and 40 deletions
+1 -1
View File
@@ -46,7 +46,7 @@ PLAN_ORPHAN_TTL_S = 3600
SCHEDULED_GRACE_S = 30 * 24 * 3600
FILES_DIR = "houseplan/files"
CONF_ADMIN_ONLY = "admin_only"
VERSION = "1.65.0-beta.3"
VERSION = "1.65.0-beta.4"
# Portable backup format. This is deliberately independent from the Home
# Assistant Store version above: storage migrations and files exported by a
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -16,5 +16,5 @@
"issue_tracker": "https://github.com/Matysh/houseplan-card/issues",
"requirements": [],
"single_config_entry": true,
"version": "1.65.0-beta.3"
"version": "1.65.0-beta.4"
}
File diff suppressed because one or more lines are too long
+2 -2
View File
File diff suppressed because one or more lines are too long
+4 -3
View File
@@ -1,6 +1,6 @@
# Changelog
## Unreleased
## v1.65.0-beta.4 — 2026-08-19
- Room hover tooltips now show average humidity next to temperature. The value
follows the room's configured humidity source or its Home Assistant area
@@ -20,8 +20,6 @@
and ripple size use separate rows so both labels remain readable
([#180](https://github.com/Matysh/houseplan-card/issues/180)).
## v1.65.0-beta.3 — 2026-08-19
- Open-passage placement now previews the exact future wall cut before the
click: a translucent wall-coloured segment shows its real length and depth,
with two orange boundary marks at its ends. The saved passage remains a
@@ -31,6 +29,9 @@
touch and keyboard values remain unchanged, and a contrasting ring keeps the
slider visible over every hue
([#192](https://github.com/Matysh/houseplan-card/issues/192)).
## v1.65.0-beta.3 — 2026-08-19
- Editor color controls now open a single House Plan picker with saturation,
brightness, hue, exact HEX and opacity together. The nested browser color
dialog is gone, while existing room, space, decor and Glow values keep their
+4 -3
View File
@@ -6,7 +6,7 @@
> **Правило проекта:** оба файла пополняются в одном коммите с самим
> изменением — как и остальная документация (см. docs/STATUS.md).
## Unreleased
## v1.65.0-beta.4 — 2026-08-19
- В подсказке комнаты при наведении теперь рядом с температурой показывается
средняя влажность. Значение берётся из настроенного источника влажности или
@@ -27,8 +27,6 @@
остаются читаемыми
([#180](https://github.com/Matysh/houseplan-card/issues/180)).
## v1.65.0-beta.3 — 2026-08-19
- Перед размещением открытого проёма теперь виден точный будущий разрыв стены:
полупрозрачный сегмент цвета стены показывает реальную длину и глубину, а две
оранжевые засечки отмечают его границы. После сохранения проём по-прежнему
@@ -39,6 +37,9 @@
управление мышью, касанием и клавиатурой не изменились, а контрастный контур
сохраняет видимость ползунка на любом оттенке
([#192](https://github.com/Matysh/houseplan-card/issues/192)).
## v1.65.0-beta.3 — 2026-08-19
- Выбор цвета в редакторах теперь сразу открывает единую палитру House Plan с
насыщенностью, яркостью, оттенком, точным HEX и прозрачностью. Вложенный
системный диалог браузера больше не нужен, а сохранённый формат цветов комнат,
+9 -9
View File
@@ -1,18 +1,18 @@
<!-- release: v1.65.0-beta.3 -->
<!-- release: v1.65.0-beta.4 -->
## Основное
- Двери, окна, ворота и открытые проёмы теперь можно размещать в независимых отрезках «Стен»; структурное замыкание комнат и физические разрывы привязки остаются согласованными.
- Выбор цвета и прозрачности открывается одной палитрой House Plan, а подтверждение «Переключить состояние» показывает текущее и ожидаемое состояние.
- YAML-сущности проёмов без `unique_id` теперь корректно работают в Просмотре, карточке проёма и действиях замка.
- Все настройки цвета и прозрачности теперь используют единую палитру House Plan с наглядной радужной шкалой оттенка.
- Открытый проём показывает точное полупрозрачное превью будущего разрыва стены и его границы до размещения.
- Один вырожденный стык виртуальных стен больше не может скрыть всю кладку, пол и световые барьеры плана.
- Мелкие исправления и улучшения.
## Highlights
- Doors, windows, gates and open passages can now be placed in independent Walls segments, while structural room closure and physical snap gaps stay consistent.
- Color and opacity now open in one House Plan picker, while **Toggle state** confirmation shows the current and expected state.
- Opening YAML entities without a `unique_id` now work correctly in View, the opening card and lock actions.
- Every color and opacity setting now uses one House Plan picker with a clear rainbow hue track.
- Open passages show an exact translucent preview of the future wall cut and its boundaries before placement.
- One degenerate virtual-wall junction can no longer hide all masonry, flooring and light barriers in the plan.
- Small fixes and improvements.
[Полный список изменений на русском](https://github.com/Matysh/houseplan-card/blob/v1.65.0-beta.3/docs/CHANGELOG.ru.md)
· [Full changelog in English](https://github.com/Matysh/houseplan-card/blob/v1.65.0-beta.3/docs/CHANGELOG.md)
[Полный список изменений на русском](https://github.com/Matysh/houseplan-card/blob/v1.65.0-beta.4/docs/CHANGELOG.ru.md)
· [Full changelog in English](https://github.com/Matysh/houseplan-card/blob/v1.65.0-beta.4/docs/CHANGELOG.md)
+2 -2
View File
@@ -21,8 +21,8 @@ metadata). Only an explicit owner-approved emergency hotfix may skip this gate.
| Item | State |
|---|---|
| Version | **v1.65.0-beta.3** everywhere (manifest, const.py, package.json, CARD_VERSION) — prerelease candidate for the current `S8-merged` queue |
| Current local cycle | v1.65.0-beta.3 candidate carries #57, #103, #113, #117, #132, #184, #185, #187 and #189: color and opacity share one picker, toggle confirmations expose their exact result, independent Walls support openings with consistent snap/light geometry, and registry-less opening entities stay operable. Stale space/model references now fail safely. Unreleased issue branches add the complete picker migration (#180), isolate numerically degenerate optional junction patches so one virtual-wall join cannot erase the canonical masonry, paper/floor and light barriers (#197), and add area/source-aware humidity to room hover tooltips (#196). Publication waits for a green exact-SHA Validate and fail-closed prerelease preflight; stable v1.64.0 remains unchanged. |
| Version | **v1.65.0-beta.4** everywhere (manifest, const.py, package.json, CARD_VERSION) — prerelease candidate for the current `S8-merged` queue |
| Current local cycle | v1.65.0-beta.4 candidate carries #180, #192, #193, #196 and #197: every remaining colour/opacity setting uses the unified picker with a real hue spectrum, open passages preview their exact future wall cut, room hover exposes humidity, and degenerate optional junction patches can no longer erase the canonical masonry, floor or light barriers. Publication waits for a green exact-SHA Validate and fail-closed prerelease preflight; v1.65.0-beta.3 is published and stable v1.64.0 remains unchanged. |
| 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/<NN>-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 -- <tag> --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) |
+11 -11
View File
@@ -1,7 +1,7 @@
{
"version": 1,
"fixture": "synthetic-only",
"sourceFingerprint": "9cf7a16bbc4f0bde8ec29d7b58b52e0f616fc14601a183ea1df347477321a5da",
"sourceFingerprint": "ad0031892ee8d0c3d21fbefccea8be7c7c89aa3b89e3afceaf2c88f6024ab533",
"captureScriptSha256": "34f2219790d46efd8250e7a1bd829cb8fc0b0547e1260635fefa52407551b41b",
"command": "npm run build && node demo/docs/capture.mjs",
"scenarios": {
@@ -13,7 +13,7 @@
},
"theme": "dark",
"language": "en",
"sourceSha256": "9cf7a16bbc4f0bde8ec29d7b58b52e0f616fc14601a183ea1df347477321a5da",
"sourceSha256": "ad0031892ee8d0c3d21fbefccea8be7c7c89aa3b89e3afceaf2c88f6024ab533",
"imageSha256": "d36b6f9f8139f31ef73a780c6511a640a26055efd9d7a24c24fd48b1d8379bf0"
},
"view-touch": {
@@ -24,7 +24,7 @@
},
"theme": "dark",
"language": "en",
"sourceSha256": "9cf7a16bbc4f0bde8ec29d7b58b52e0f616fc14601a183ea1df347477321a5da",
"sourceSha256": "ad0031892ee8d0c3d21fbefccea8be7c7c89aa3b89e3afceaf2c88f6024ab533",
"imageSha256": "358e25ff9984d0fb0c03cfbb848df40c425fdfe64cd5f4f613b1e754ca9d4249"
},
"space-create": {
@@ -35,7 +35,7 @@
},
"theme": "dark",
"language": "en",
"sourceSha256": "9cf7a16bbc4f0bde8ec29d7b58b52e0f616fc14601a183ea1df347477321a5da",
"sourceSha256": "ad0031892ee8d0c3d21fbefccea8be7c7c89aa3b89e3afceaf2c88f6024ab533",
"imageSha256": "c53db2e5c642a5549c13f3c93a5b359fed69bdb2621bf71a243a877ffcb95e6b"
},
"room-contour-close": {
@@ -46,7 +46,7 @@
},
"theme": "dark",
"language": "en",
"sourceSha256": "9cf7a16bbc4f0bde8ec29d7b58b52e0f616fc14601a183ea1df347477321a5da",
"sourceSha256": "ad0031892ee8d0c3d21fbefccea8be7c7c89aa3b89e3afceaf2c88f6024ab533",
"imageSha256": "5ca7f24642926072ccbc5bf48341c5310329918631b147c116f9c29e20e4927e"
},
"plan-context-tray": {
@@ -57,7 +57,7 @@
},
"theme": "dark",
"language": "en",
"sourceSha256": "9cf7a16bbc4f0bde8ec29d7b58b52e0f616fc14601a183ea1df347477321a5da",
"sourceSha256": "ad0031892ee8d0c3d21fbefccea8be7c7c89aa3b89e3afceaf2c88f6024ab533",
"imageSha256": "164b79fd9075a1425cffe3c85c88b689dfda90b79856bb4ed6655507b166b3e0"
},
"device-editor": {
@@ -68,7 +68,7 @@
},
"theme": "dark",
"language": "en",
"sourceSha256": "9cf7a16bbc4f0bde8ec29d7b58b52e0f616fc14601a183ea1df347477321a5da",
"sourceSha256": "ad0031892ee8d0c3d21fbefccea8be7c7c89aa3b89e3afceaf2c88f6024ab533",
"imageSha256": "7a22a81e2abedf5a520bd36b7509d953cbfa9962b48c0ffbc233666a6215c04b"
},
"device-display-preview": {
@@ -79,7 +79,7 @@
},
"theme": "dark",
"language": "en",
"sourceSha256": "9cf7a16bbc4f0bde8ec29d7b58b52e0f616fc14601a183ea1df347477321a5da",
"sourceSha256": "ad0031892ee8d0c3d21fbefccea8be7c7c89aa3b89e3afceaf2c88f6024ab533",
"imageSha256": "df3a54395c83bffd7a161f1fb3de0143e12e76567535aedf9883873ead74df91"
},
"background-editor": {
@@ -90,7 +90,7 @@
},
"theme": "dark",
"language": "en",
"sourceSha256": "9cf7a16bbc4f0bde8ec29d7b58b52e0f616fc14601a183ea1df347477321a5da",
"sourceSha256": "ad0031892ee8d0c3d21fbefccea8be7c7c89aa3b89e3afceaf2c88f6024ab533",
"imageSha256": "d7cfe70551d9260169df8efd832e32ed7df99c7f60b55d1fd4a8322bd4c47175"
},
"room-card": {
@@ -101,7 +101,7 @@
},
"theme": "dark",
"language": "en",
"sourceSha256": "9cf7a16bbc4f0bde8ec29d7b58b52e0f616fc14601a183ea1df347477321a5da",
"sourceSha256": "ad0031892ee8d0c3d21fbefccea8be7c7c89aa3b89e3afceaf2c88f6024ab533",
"imageSha256": "176abba71d41cfb045a33f82a794d9fbb2a5d3c48e6df66e6ec3a8e448311b11"
},
"device-info": {
@@ -112,7 +112,7 @@
},
"theme": "dark",
"language": "en",
"sourceSha256": "9cf7a16bbc4f0bde8ec29d7b58b52e0f616fc14601a183ea1df347477321a5da",
"sourceSha256": "ad0031892ee8d0c3d21fbefccea8be7c7c89aa3b89e3afceaf2c88f6024ab533",
"imageSha256": "2199ed88b215bf2bff63bf665028f78b2aa6a92c3032b803931790f2ef071893"
}
}
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "houseplan-card",
"version": "1.65.0-beta.3",
"version": "1.65.0-beta.4",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "houseplan-card",
"version": "1.65.0-beta.3",
"version": "1.65.0-beta.4",
"license": "MIT",
"dependencies": {
"lit": "^3.1.3",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "houseplan-card",
"version": "1.65.0-beta.3",
"version": "1.65.0-beta.4",
"description": "Interactive house plan Lovelace card for Home Assistant",
"license": "MIT",
"type": "module",
+1 -1
View File
@@ -255,7 +255,7 @@ import {
} from './opening-placement';
import { safeStoredColor } from './color';
const CARD_VERSION = '1.65.0-beta.3';
const CARD_VERSION = '1.65.0-beta.4';
const DISPLAY_LABEL_KEYS: Record<DeviceDisplayMode, I18nKey> = {
badge: 'display.badge',
icon_ripple: 'display.icon_ripple',