build: prepare v1.68.0-beta.4 candidate

Package the two beta.3 write-blocker fixes: the model-upgrade stale-client
guard and the self-resolving zero-wall migration.

Issue: #316
Issue: #319
User-Visible: yes
This commit is contained in:
Codex
2026-08-27 08:11:42 +03:00
parent 1c598a287a
commit 3d4e5580fa
11 changed files with 21 additions and 19 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.68.0-beta.3"
VERSION = "1.68.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.68.0-beta.3"
"version": "1.68.0-beta.4"
}
+2 -2
View File
File diff suppressed because one or more lines are too long
+2
View File
@@ -2,6 +2,8 @@
## Unreleased
## v1.68.0-beta.4 — 2026-08-27
- Updating to the new wall model no longer freezes editing: the server now
recognises the first write of a newer card over an older document (for
example one that still carried an orphan legacy border) instead of demanding
+2
View File
@@ -8,6 +8,8 @@
## Не выпущено
## v1.68.0-beta.4 — 2026-08-27
- Обновление на новую модель стен больше не замораживает редактирование:
сервер распознаёт первую запись более новой карточки поверх старого
документа (например, с осиротевшей легаси-границей) вместо требования
+5 -7
View File
@@ -1,16 +1,14 @@
<!-- release: v1.68.0-beta.3 -->
<!-- release: v1.68.0-beta.4 -->
## Основное
- Стены толщиной 0 заменили прежние виртуальные границы: они рисуются обычным инструментом «Стены», а пространство задаёт единый пунктирный или сплошной вид и прохождение света.
- Старые виртуальные участки мигрируют в model v9. Перед первым структурным сохранением или оптимизацией рекомендуется экспортировать резервную копию плана.
- Исправлены два блокера beta.3: рисование снова работает везде — сервер принимает первую запись обновлённой карточки поверх старого документа, а преобразование к новой модели стен само разрешает конфликты легаси-границ с проёмами (дверь в бывшей «границе» сохраняет настоящую стену).
- Мелкие исправления и улучшения.
## Highlights
- Zero-thickness walls replace the former virtual boundaries: draw them with the regular Walls tool, while each space controls their dashed or solid appearance and light transmission.
- Legacy virtual spans migrate to model v9. Export a plan backup before the first structural save or optimization.
- Two beta.3 blockers fixed: drawing works everywhere again — the server accepts the first write of the updated card over an older document, and the wall-model conversion resolves legacy border/opening conflicts by itself (a door inside a former «border» keeps its real wall).
- Small fixes and improvements.
[Полный список изменений на русском](https://github.com/Matysh/houseplan-card/blob/v1.68.0-beta.3/docs/CHANGELOG.ru.md)
· [Full changelog in English](https://github.com/Matysh/houseplan-card/blob/v1.68.0-beta.3/docs/CHANGELOG.md)
[Полный список изменений на русском](https://github.com/Matysh/houseplan-card/blob/v1.68.0-beta.4/docs/CHANGELOG.ru.md)
· [Full changelog in English](https://github.com/Matysh/houseplan-card/blob/v1.68.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.68.0-beta.3 candidate** everywhere (manifest, const.py, package.json, CARD_VERSION) |
| Current local cycle | v1.68.0-beta.2 is published. Current `dev` advances the persisted wall model to v9 (#306): the separate Boundary/virtual-wall UX is removed, all `cm:0` walls share one canonical representation, and each space selects dashed/light-transmitting or solid/light-blocking zero-wall semantics. Legacy `open_spans/open_to` remain read-compatible until the next structural transaction or Optimize. v1.68.0-beta.3 packages this reviewed S8 product work and remains gated by exact-SHA Validate before publication. |
| Version | **v1.68.0-beta.4 candidate** everywhere (manifest, const.py, package.json, CARD_VERSION) |
| Current local cycle | v1.68.0-beta.3 is published but carries two write blockers; current `dev` fixes them: the stale-client guard accepts the first write of a newer wall model over an older document (#319), and the initial v9 migration auto-resolves every legacy border/opening conflict — the carrying atom keeps its thickness, ambiguity resolves deterministically, a carrier-less opening persists unhosted (#316). v1.68.0-beta.4 packages the reviewed S8 fixes and remains gated by exact-SHA Validate before publication. |
| 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) |
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "houseplan-card",
"version": "1.68.0-beta.3",
"version": "1.68.0-beta.4",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "houseplan-card",
"version": "1.68.0-beta.3",
"version": "1.68.0-beta.4",
"license": "MIT",
"dependencies": {
"lit": "^3.1.3",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "houseplan-card",
"version": "1.68.0-beta.3",
"version": "1.68.0-beta.4",
"description": "Interactive house plan Lovelace card for Home Assistant",
"license": "MIT",
"type": "module",
+1 -1
View File
@@ -317,7 +317,7 @@ import {
} from './space-order';
import { applyOpeningMoves, mergeCollinearPartitions, spaceMergeGeometry } from './wall-merge';
const CARD_VERSION = '1.68.0-beta.3';
const CARD_VERSION = '1.68.0-beta.4';
type ResizeLiveLabel = {
kind: 'length';