mirror of
https://github.com/Matysh/houseplan-card
synced 2026-10-01 04:09:17 +00:00
build: prepare v1.67.0-beta.10 candidate
Issue: #288 Issue: #289 Issue: #290 Issue: #291 Issue: #292 Issue: #293 User-Visible: yes
This commit is contained in:
@@ -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.67.0-beta.9"
|
||||
VERSION = "1.67.0-beta.10"
|
||||
|
||||
# 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
@@ -16,5 +16,5 @@
|
||||
"issue_tracker": "https://github.com/Matysh/houseplan-card/issues",
|
||||
"requirements": [],
|
||||
"single_config_entry": true,
|
||||
"version": "1.67.0-beta.9"
|
||||
"version": "1.67.0-beta.10"
|
||||
}
|
||||
|
||||
+10
-4
@@ -671,10 +671,16 @@ export async function prepareGoldenScenario(page, scenario) {
|
||||
if (scenario.wallUnionIsolation) {
|
||||
const result = card._wallUnionGeometry?.();
|
||||
const paths = [...card.renderRoot.querySelectorAll('[data-hp="wall"]')];
|
||||
if (result?.status !== 'degraded-extra' || result.paths?.length !== 2
|
||||
|| paths.length !== 2
|
||||
|| new Set(paths.map((path) => path.dataset.component)).size !== 2) {
|
||||
throw new Error(`golden wall-union isolation contract failed: ${scenario.id}`);
|
||||
// The stored #278 fixture deliberately contains near-lattice noise so
|
||||
// its unit test can exercise degraded-extra isolation. In the mounted
|
||||
// product, #291's write barrier canonicalizes that noise before this
|
||||
// integration frame: the same masonry must now unite normally.
|
||||
if (result?.status !== 'ok' || result.paths?.length !== 1
|
||||
|| paths.length !== 1
|
||||
|| new Set(paths.map((path) => path.dataset.component)).size !== 1) {
|
||||
throw new Error(`golden wall-union isolation contract failed: ${scenario.id}; `
|
||||
+ `status=${result?.status || 'missing'}; geometryPaths=${result?.paths?.length ?? 'missing'}; `
|
||||
+ `domPaths=${paths.length}; domComponents=${new Set(paths.map((path) => path.dataset.component)).size}`);
|
||||
}
|
||||
}
|
||||
if (scenario.multiWallJunction) {
|
||||
|
||||
Vendored
+2
-2
File diff suppressed because one or more lines are too long
@@ -2,6 +2,8 @@
|
||||
|
||||
## Unreleased
|
||||
|
||||
## v1.67.0-beta.10 — 2026-08-24
|
||||
|
||||
- Resize availability on real plans is now protected by an exact per-wall
|
||||
audit using the production safety resolver. Disabled handles explain the
|
||||
actual geometric restriction in clearer language; click, tap, Enter and
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
|
||||
## Не выпущено
|
||||
|
||||
## v1.67.0-beta.10 — 2026-08-24
|
||||
|
||||
- Доступность Resize на реальных планах теперь защищена точным аудитом каждой
|
||||
стены через production safety-resolver. Отключённые ручки понятнее объясняют
|
||||
реальное геометрическое ограничение; click/tap, Enter и Space показывают одну
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
<!-- release: v1.67.0-beta.9 -->
|
||||
<!-- release: v1.67.0-beta.10 -->
|
||||
|
||||
## Основное
|
||||
|
||||
- Почти перпендикулярные T-стыки больше не оставляют белые клинья и сохраняют исходный небольшой уклон стены.
|
||||
- Backend теперь принимает только доказанное перепривязывание проёмов при удалении совпадающей перегородки через «Оптимизировать планы».
|
||||
- «Оптимизировать планы» безопасно убирает точные лишние перегородки поверх внешних стен, после чего доступный Resize действительно двигает общую стену; неподвижные ручки больше не выглядят активными.
|
||||
- Многостенные стыки больше не вырезают длинные участки соседних стен: кладка остаётся непрерывной даже рядом с коротким лучом узла.
|
||||
- Resize сохраняет роли и толщины общих стен, действительно двигает активную ручку, а для недоступных стен показывает конкретную понятную причину.
|
||||
- Почти осевые стены и невидимый координатный шум теперь исправляются предсказуемо: Walls сохраняет точную ось, а «Оптимизировать планы» и общий барьер записи приводят старые значения к канонической сетке.
|
||||
- Мелкие исправления и улучшения.
|
||||
|
||||
## Highlights
|
||||
|
||||
- Nearly perpendicular T-junctions no longer leave white wedges and preserve the wall's original small slope.
|
||||
- The backend now accepts only a proved opening reattachment when Optimize plans removes a coincident partition.
|
||||
- Optimize plans safely removes exact redundant partitions over outer walls, after which an eligible Resize handle actually moves the shared wall; immovable handles no longer look enabled.
|
||||
- Multi-wall junctions no longer cut long sections out of neighbouring walls: masonry stays continuous even beside a short node ray.
|
||||
- Resize preserves shared-wall roles and thicknesses, enabled handles actually move, and unavailable walls now expose a specific human-readable reason.
|
||||
- Nearly axial walls and invisible coordinate noise are repaired predictably: Walls stores an exact axis, while Optimize plans and the common write barrier converge older values onto the canonical grid.
|
||||
- Small fixes and improvements.
|
||||
|
||||
[Полный список изменений на русском](https://github.com/Matysh/houseplan-card/blob/v1.67.0-beta.9/docs/CHANGELOG.ru.md)
|
||||
· [Full changelog in English](https://github.com/Matysh/houseplan-card/blob/v1.67.0-beta.9/docs/CHANGELOG.md)
|
||||
[Полный список изменений на русском](https://github.com/Matysh/houseplan-card/blob/v1.67.0-beta.10/docs/CHANGELOG.ru.md)
|
||||
· [Full changelog in English](https://github.com/Matysh/houseplan-card/blob/v1.67.0-beta.10/docs/CHANGELOG.md)
|
||||
|
||||
+2
-2
@@ -21,8 +21,8 @@ metadata). Only an explicit owner-approved emergency hotfix may skip this gate.
|
||||
|
||||
| Item | State |
|
||||
|---|---|
|
||||
| Version | **v1.67.0-beta.9 candidate** everywhere (manifest, const.py, package.json, CARD_VERSION) — ninth prerelease of the v1.67 line |
|
||||
| Current local cycle | v1.67.0-beta.8 is published. Current `dev` preserves masonry at near-orthogonal T-junctions without straightening stored axes (#279), independently validates Optimize opening rehosts at the backend boundary (#280), and safely reconciles exact outer-wall partitions so Resize exposes only handles with a real non-zero grid step (#281). v1.67.0-beta.9 packages these owner-approved S8 fixes and remains gated by the full exact-SHA Validate before publication. |
|
||||
| Version | **v1.67.0-beta.10 candidate** everywhere (manifest, const.py, package.json, CARD_VERSION) — tenth prerelease of the v1.67 line |
|
||||
| Current local cycle | v1.67.0-beta.9 is published. Current `dev` preserves neighbouring masonry beyond short multi-wall rays (#288), prevents Resize from changing shared/outer wall roles (#289), straightens only confirmed near-axis defects (#290), canonicalizes invisible coordinate noise at every write boundary (#291), audits every real-plan Resize handle with human-readable blockers (#292), and restores the active real pointer gesture plus Undo (#293). v1.67.0-beta.10 packages these reviewed S8 changes and remains gated by the full 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) |
|
||||
|
||||
Generated
+2
-2
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "houseplan-card",
|
||||
"version": "1.67.0-beta.9",
|
||||
"version": "1.67.0-beta.10",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "houseplan-card",
|
||||
"version": "1.67.0-beta.9",
|
||||
"version": "1.67.0-beta.10",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"lit": "^3.1.3",
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "houseplan-card",
|
||||
"version": "1.67.0-beta.9",
|
||||
"version": "1.67.0-beta.10",
|
||||
"description": "Interactive house plan Lovelace card for Home Assistant",
|
||||
"license": "MIT",
|
||||
"type": "module",
|
||||
|
||||
@@ -305,7 +305,7 @@ import {
|
||||
} from './space-order';
|
||||
import { applyOpeningMoves, mergeCollinearPartitions, spaceMergeGeometry } from './wall-merge';
|
||||
|
||||
const CARD_VERSION = '1.67.0-beta.9';
|
||||
const CARD_VERSION = '1.67.0-beta.10';
|
||||
const DISPLAY_LABEL_KEYS: Record<DeviceDisplayMode, I18nKey> = {
|
||||
badge: 'display.badge',
|
||||
icon_ripple: 'display.icon_ripple',
|
||||
|
||||
@@ -430,7 +430,7 @@ test('issue #197 golden keeps the complete junction fixture in Plan and View', (
|
||||
}
|
||||
});
|
||||
|
||||
test('issue #278 golden keeps degraded wall components in both themes', () => {
|
||||
test('issues #278/#291 golden covers the stored wall-union fixture in both themes', () => {
|
||||
const scenarios = GOLDEN_SCENARIOS.filter((item) => item.wallUnionIsolation);
|
||||
assert.deepEqual(scenarios.map((item) => item.theme).sort(), ['dark', 'light']);
|
||||
for (const scenario of scenarios) {
|
||||
|
||||
Reference in New Issue
Block a user