Commit Graph
1154 Commits
Author SHA1 Message Date
Codex 2b1f03be2d test: the Resize channel of the junction limits, driven by a real pointer (#329 AC7a)
Measured what Resize itself already forbids: a room cannot be squeezed below
30 cm (two 15 cm walls), so П3 and П5 are unreachable through shrinking and
the gate merely fails closed there. П4 IS reachable on a fine grid, so the
smoke drags a real handle on a 2 cm grid: two rooms 10 cm apart, a 6 cm pull
would leave 4 cm between foreign nodes, the wall stops at 6 cm and exactly one
toast names the 5 cm rule.

Spec revision 6 records both the measurement and the two corrections it forces
on AC7a: a dimmed handle cannot express a per-step limit, and the plan is NOT
byte-unchanged — the allowed part of the gesture is a legitimate edit.

Issue: #329
User-Visible: no
2026-08-27 23:31:42 +03:00
Codex f514fb27fe feat: junction limits refuse the write in every editing surface (#329)
П3 measures the WALL, not the catalogue atom: a short filler segment that
compensates a thickness step (owner's fixture, 5 cm = (30-20)/2) is a legal
continuation of a long same-thickness wall, so the rule walks the maximal
collinear run through the shared nodes before judging the length.

Resize stops at the last allowed position and names the broken rule instead
of the generic "geometry cannot be saved"; the Thickness dialog refuses
through its own toast. Both channels are pinned by demo/smoke_junction_limits
plus three mutants (angle threshold, write barrier, degenerate apex bevel).

Issue: #329
User-Visible: yes
2026-08-27 23:31:42 +03:00
Codex 002795f7c8 fix: no jags on the edges of a degenerate apex (#329 §4)
Owner report: small serrations remained on the outer edges between the inner
and the outer vertex. Measured on the fixture ring: two ~4 cm steps plus four
micro-vertices at the tip. Their source was the inset contour's two-point
bevel folding into a bow-tie, and the earlier half-plane clip of that fold,
which left a 0.2 cm sliver the boolean union turned into steps. The inset now
ends in ITS own mitre point at a degenerate apex — mirroring the sharp outer
tip — so there is no fold to clip and no sliver to smear: the room ring is
exactly three vertices, every side longer than the half depth. The clip
helper and its cap plumbing are gone. The user-visible wording of this work
already stands in both changelogs from the #329 entry.

Issue: #329
User-Visible: no
2026-08-27 23:31:17 +03:00
Codex 4758767e0c fix: junction limits judge both sides after the same migration (#329)
The baseline for inheritance was the raw previous document, which for a
legacy space carries no wall catalogue at all — so every inherited short
segment of a real plan looked new and the resize smoke's legitimate write was
refused (executed: two 5 cm segments against their own 30 cm thickness).
Both sides now cross commitWallSegmentModel first, and inheritance is counted
per rule rather than per subject, because a structural write re-keys the
carriers it re-atomises.

Issue: #329
User-Visible: no
2026-08-27 23:30:52 +03:00
Codex 214355f424 fix: a degenerate sharp corner renders as a normal sharp apex (#329 §4)
Owner correction (chat, 2026-08-27): no flat chamfer at the tip — a plain
sharp apex. Proven by execution on the issue fixture: the outset contour fell
back to a two-point bevel (the 4·h mitre limit against an 87 cm reach) while
the inset contour folded into a bow-tie, and subtracting that fold carved the
V-notches — together they made the trident. Now a degenerate corner (below 15
degrees, inner faces meeting inside both walls) contributes ONE outset point
at the plan's own vertex — no bevel, no metres-long mitre needle — and its
inset is clipped at the convergence line so no fold is subtracted. Plain and
merely sharp pairs keep the full mitre of #310. The write-side limits of
П1-П5 stop new plans from creating such corners at all.

Issue: #329
User-Visible: yes
2026-08-27 23:30:26 +03:00
claude[bot]andCodex 806f7f784c docs: review document for #329
Issue: #329
User-Visible: no
2026-08-27 23:29:49 +03:00
Codex 3120924e26 docs: spec #329 revision 3 — AC7 proves the per-surface refusal channels
Issue: #329
User-Visible: no
2026-08-27 23:29:49 +03:00
claude[bot]andCodex 8205897149 docs: review document for #329
Issue: #329
User-Visible: no
2026-08-27 23:29:49 +03:00
Codex 73b665ede6 docs: spec #329 revision 2 — per-surface refusal channels, AC5 split, absolute thresholds
Issue: #329
User-Visible: no
2026-08-27 23:29:49 +03:00
claude[bot]andCodex d67bb11de0 docs: review document for #329
Issue: #329
User-Visible: no
2026-08-27 23:29:49 +03:00
Codex 5266d2f6be docs: spec #329 — wall junction limits and an honest sharp apex
Issue: #329
User-Visible: no
2026-08-27 23:29:49 +03:00
claude[bot] 8161394178 docs: review document for #267
Issue: #267
User-Visible: no
2026-08-27 19:57:33 +00:00
Matysh 118062bb8c test: close device presentation review findings
Issue: #267
User-Visible: no
2026-08-27 22:41:46 +03:00
claude[bot] 8b0ad08db2 docs: review document for #267
Issue: #267
User-Visible: no
2026-08-27 19:31:52 +00:00
Matysh 6efc315ba6 refactor: make device presentation decisions explicit
Issue: #267
User-Visible: no
2026-08-27 22:06:10 +03:00
claude[bot] b87322ed5f docs: review document for #267
Issue: #267
User-Visible: no
2026-08-27 18:26:00 +00:00
Matysh c5e145269b docs: specify device presentation decisions
Issue: #267
User-Visible: no
2026-08-27 21:17:18 +03:00
claude[bot] 2294d46f3f docs: review document for #264
Проверка (CI) / Документация: гайды, ченджлоги, скриншот-индекс (push) Failing after 1m0s
Проверка (CI) / Процесс: process.yml идентичен в main и dev (push) Successful in 42s
Проверка (CI) / Провенанс коммитов: трейлеры и эталоны (push) Successful in 48s
Проверка (CI) / Процессный гейт: диапазон, трейлеры, статусы issue (push) Failing after 57s
Проверка (CI) / Классификация изменённых файлов (push) Successful in 55s
Проверка (CI) / HACS: валидация репозитория (push) Skipped
Проверка (CI) / Переиспользование: это дерево уже проверено (push) Successful in 47s
Проверка (CI) / Hassfest: манифест интеграции (push) Skipped
Проверка (CI) / Бэкенд: pytest в Home Assistant (push) Skipped
Проверка (CI) / Фронтенд: типы, юниты, мутанты, синхрон бандла (push) Successful in 6m44s
Проверка (CI) / Golden-кадры против принятых эталонов (push) Failing after 15m20s
Проверка (CI) / Смоки в браузере (шард 1 из 3) (push) Failing after 17m46s
Проверка (CI) / Смоки в браузере (шард 3 из 3) (push) Failing after 20m39s
Проверка (CI) / Перф-смок: бюджет времени кадра (push) Failing after 8m1s
Проверка (CI) / Смоки в браузере (шард 2 из 3) (push) Failing after 25m38s
Проверка (CI) / Смоки: все шарды зелёные (push) Skipped
Issue: #264
User-Visible: no
2026-08-27 18:05:24 +00:00
Matysh 722f26a3c5 docs: refresh screenshot source fingerprint
Issue: #264
User-Visible: no
2026-08-27 20:43:34 +03:00
Matysh ba66698f55 refactor: extract resize controller
Issue: #264
User-Visible: no
2026-08-27 20:30:07 +03:00
claude[bot] ef32d2326f docs: review document for #264
Issue: #264
User-Visible: no
2026-08-27 16:58:08 +00:00
Matysh 536b750d03 docs: address resize controller spec review
Issue: #264
User-Visible: no
2026-08-27 19:53:48 +03:00
claude[bot] c46c714c58 docs: review document for #264
Issue: #264
User-Visible: no
2026-08-27 16:51:56 +00:00
Matysh 6e1aea3ae7 docs: add resize controller user scenario
Issue: #264
User-Visible: no
2026-08-27 19:43:45 +03:00
Matysh a3e329950a docs: specify resize controller extraction
Issue: #264
User-Visible: no
2026-08-27 19:43:17 +03:00
Codex 1ac91e43fd build: stable release notes follow the owner's aggregation rules (#328)
A stable body aggregates the changelog since the previous STABLE release,
not since the last beta; in-beta-only bugfixes are excluded by the curator
(the draft lists every candidate with its source section); the small-fixes
filler line is legal only when the range carries user-visible work not
itemised in the body — a single-issue hotfix ships without it, and body
bullets must link their issues so the rule stays checkable.
scripts/release-notes.mjs prints the aggregation draft and verifies
docs/RELEASE-NOTES.md (npm run release:notes -- <tag> [--verify]); the
verifier rejects the v1.68.1-style empty filler by execution. STATUS.md
release mechanics updated in the same commit.

Issue: #328
User-Visible: no
2026-08-27 18:55:41 +03:00
Matysh ca383febef chore: release v1.68.1
Owner-approved emergency stable hotfix; the release commit changes only version fields, generated bundles and release metadata.

Issue: #324
User-Visible: yes
2026-08-27 17:17:12 +03:00
claude[bot] 4d9542b138 docs: review document for #324
Issue: #324
User-Visible: no
2026-08-27 13:45:07 +00:00
Matysh 69e410fea3 fix: materialize empty wall catalog for new spaces
Issue: #324
User-Visible: yes
2026-08-27 16:33:47 +03:00
Matysh 1edf5cb3a7 perf: reuse masonry after cancelled resize
Issue: #322
User-Visible: no
2026-08-27 15:38:32 +03:00
Matysh 780b7a6c7a perf: reuse wall topology for light transport
Issue: #322
User-Visible: no
2026-08-27 15:00:30 +03:00
claude[bot] 674607694f docs: review document for #323
Issue: #323
User-Visible: no
2026-08-27 11:12:03 +00:00
Codex fb8fdf479c docs: both user guides install from the HACS default catalog too
CODE-REVIEW-323-r1 M1: the full guides README links to still taught the
custom-repository flow; step 1 now matches the README wording.

Issue: #323
User-Visible: no
2026-08-27 14:06:22 +03:00
claude[bot] 3b915bd077 docs: review document for #323
Issue: #323
User-Visible: no
2026-08-27 11:05:21 +00:00
Codexandclaude[bot] 69facb9918 docs: STATUS and TESTING reflect the default-catalog reality
The HACS row still described an open queue of 835 PRs; the fresh-install
checklist still started from a custom repository.

Issue: #323
User-Visible: no
2026-08-27 11:00:24 +00:00
Matysh 59a23de81b perf: reuse validated wall geometry
Issue: #322
User-Visible: no
2026-08-27 13:58:06 +03:00
Matysh 87ff906545 perf: keep room contour cache out of editor previews
Issue: #322
User-Visible: no
2026-08-27 13:11:03 +03:00
Matysh 134afb658e docs: record exact-tree performance freshness
Issue: #322
User-Visible: no
2026-08-27 12:24:27 +03:00
Matysh 6a96254956 test: validate comparison bundles against their own trees
Issue: #322
User-Visible: no
2026-08-27 12:23:54 +03:00
Matysh de7554e9e0 docs: record the parallel v1.68.0 performance gate
Issue: #322
User-Visible: no
2026-08-27 12:13:46 +03:00
Matysh 8210af6472 ci: parallelize independent full performance profiles
Issue: #322
User-Visible: no
2026-08-27 12:13:26 +03:00
Matysh 376a2db599 docs: record the v1.68.0 gate repair
Issue: #322
User-Visible: no
2026-08-27 11:06:33 +03:00
Matysh 6b9f5eea96 ci: support legacy performance baselines
Issue: #322
User-Visible: no
2026-08-27 11:04:38 +03:00
Matysh 59bf4665f6 docs: record v1.68.0 final release gates
Issue: #322
User-Visible: no
2026-08-27 10:51:38 +03:00
Matysh aaf7611490 build: promote v1.68.0 after beta.4
Issue: #322
User-Visible: yes
2026-08-27 10:29:04 +03:00
Codex 3d4e5580fa 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
2026-08-27 08:11:42 +03:00
Codex 0f36ef55d5 fix: an opening without an in-place carrier migrates unhosted (#316, review r1 H1 + r2 M2)
CODE-REVIEW-316-r1 H1: the §3.3 degraded pool picked an angle-compatible wall
at ANY distance, but the backend geometry-match invariant («wall opening
geometry must match its host») requires the host to agree with the opening's
own x/y — the migrated document was rejected by CONFIG_SCHEMA and the write
wedged again on the schema layer. The pool is removed from both migrations
(TS and the Python mirror): without an in-place eligible carrier the opening
goes straight to the unhosted degraded state, exactly the alternative the
spec's «assumed freely changeable» section reserved; the spec is revision 6.
New tests replay the reviewer's reproduction on both sides, and the frontend
test is proven able to fail by restoring the pool (executed red).

CODE-REVIEW-316-r2 M2: the schema-level host check is shared with #132
partition openings, so its unhosted relaxation is now pinned by a regression
test — a stale writer that keeps a partition-hosted opening but silently
drops its host is still rejected by validate_partition_opening_hosts.

Issue: #316
User-Visible: no
2026-08-26 23:41:35 +03:00
claude[bot]andCodex 1d92193c5d docs: review document for #316
Issue: #316
User-Visible: no
2026-08-26 23:41:35 +03:00
claude[bot] dff476ff35 docs: review document for #316
Issue: #316
User-Visible: no
2026-08-26 19:35:05 +00:00
Codex ffb232398a fix: the initial wall-model migration resolves every opening conflict itself (#316)
Implements spec revision 4 (green r4). §3.1 — a legacy open_spans/open_to cut
never zeroes the atom that carries an existing contour opening: the opening's
edges become atom boundaries, the door keeps its real wall and the zero run
continues on both sides. §3.2 — an ambiguous carrier resolves
deterministically: current host, then distance, thicker cm, smaller id.
§3.3 — an opening with no usable carrier persists unhosted: a valid degraded
v9 state, inert in the physics, rendered by its own x/y, kept by later writes
and re-placeable in the editor (backend schema accepts it). §3.4 — the
initial migration never throws over an opening; a post-v9 write that LOST its
carrier keeps the fail-closed opening-host refusal. The Python migration
mirror implements the same rules with byte-identical output (verified on the
span+door fixture including the segment id).

The new smoke replays #316 end to end: a conflicted space no longer blocks
drawing on an empty plan. The golden scene span-over-door-migrated-dark
renders the migrated fixture pinned byte-for-byte to the real writer; two
gate mutants revert §3.1 and §3.4 and are red by execution.

Issue: #316
User-Visible: yes
2026-08-26 22:06:43 +03:00