Commit Graph
109 Commits
Author SHA1 Message Date
Codex 1ecd267138 docs: a room junction is a side, not just a corner (#229 r2 M1)
The tolerance fix in r2 named the room's nearest polygon vertex as the point
of contact, which silently excluded the T-junction — a partition meeting the
middle of a room wall. That is a documented product case (141-wall-junctions
§13.1) and the code already measures distance to the edge, not the vertex
(distToSegment over roomEdges). Merging would have run straight through a
legitimate node.

AC2 now proves the room case with a T-junction into the middle of a long
side, and a mutant restores the vertex-only search.

Issue: #229
User-Visible: no
2026-08-21 11:55:51 +03:00
Codex ecc3d6a88b docs: close M1, M2 and M3 from the spec review of #229
M1: "merge across the whole space when a chain ends" quietly overreached the
owner's split — drawing fixes its own seam, the optimiser fixes what has piled
up, and only the latter comes with a report and an undo. Section 8.6 now scopes
it to the connected component the new chain belongs to.

M2: the tolerance for "something else meets here" was only defined for a
partition-to-partition joint. Room edges, columns and drafts now use the same
EPS_JOIN — a gap cannot be a junction in one case and not in another.

M3: an opening also carries a materialised x/y/angle projection that
CONFIG-COMPATIBILITY (#132) requires to stay in step with its host, and the
code already re-materialises it after every host change. Merging is such a
change; AC3 now fails if only host.t is recomputed and the projection goes
stale.

Issue: #229
User-Visible: no
2026-08-21 11:46:36 +03:00
Codex 81210f7afc docs: spec for merging collinear wall segments
Written on the owner's decisions of 2026-08-21: merge as the chain is
finished, sweep already-drawn plans from "Optimise plans", and keep merging
even when an opening sits on the seam.

The part that is easy to miss is that last one. An opening stores its
position as a fraction of its host's length, so merging two partitions
changes the length under it and moves the door unless the fraction is
recomputed. AC3 therefore checks the door's coordinates in plan units, not
that a field was rewritten.

Issue: #229
User-Visible: no
2026-08-21 11:32:07 +03:00
Codex 5ba46dfd97 docs: take the atomic write out of the "free to change" block (#220 M3)
The assumptions section is explicitly labelled "technical, free to change",
and it held a requirement that AC3 and a mutant already test as a fact. Read
literally, it invited splitting the write in two — reopening the very window
in which markers move. The point now states the opposite: everything else in
that section is free, this one is normative and lives in section 8.3.

Issue: #220
User-Visible: no
2026-08-20 23:28:26 +03:00
Codex e57e1d920c docs: close M1 and M2 from the spec review of #220
M1: the spec now carries the touch classification TOUCH-SUPPORT.md asks every
editor feature for — "Touch editor: not exposed", with the reason it is a
decision rather than an omission.

M2: the first draft denied adding a config field in one section while planning
to store an anchor in settings in another. Resolved by dropping the anchor:
reordering materialises the placement that was implicit, giving those markers
an explicit space in the same write. No new field, no schema change, and the
marker stays exactly where the user saw it.

Issue: #220
User-Visible: no
2026-08-20 23:20:31 +03:00
Codex 0fd2331d4a docs: spec for space tab reordering
Written on the owner's product decisions of 2026-08-20: mouse only and only in
the editor modes, one warning about the positional `floor` from #210, no
keyboard alternative.

The spec carries the part that is easy to miss — the order of `config.spaces`
is not decoration. It feeds the marker placement fallback, the swipe
neighbour and the numeric `floor`, so reordering tabs must not move a single
marker. That is a named acceptance criterion with a mutant behind it.

Issue: #220
User-Visible: no
2026-08-20 23:08:07 +03:00
Sergey Matyuninandclaude[bot] fb6d7ea693 docs: clarify optimize report terminology
Issue: #223
User-Visible: no
2026-08-20 19:32:15 +00:00
Sergey Matyuninandclaude[bot] 62f398d359 docs: address coordinate spec review
Issue: #223
User-Visible: no
2026-08-20 19:32:15 +00:00
Sergey Matyuninandclaude[bot] 86778ed452 docs: specify exact coordinate canonicalization
Issue: #223
User-Visible: no
2026-08-20 19:32:15 +00:00
Sergey Matyuninandclaude[bot] 8e0358e7dd docs: define hidden-only device residual
Issue: #226
User-Visible: no
2026-08-20 18:48:01 +00:00
Sergey Matyuninandclaude[bot] ea50548b70 docs: specify entity parent deduplication
Issue: #226
User-Visible: no
2026-08-20 18:48:01 +00:00
Sergey Matyunin 16c8a28aaf docs: require user guide palette update
Issue: #219
User-Visible: no
2026-08-20 14:44:35 +03:00
Sergey Matyunin 28d6b9ccd9 docs: specify lock and orange icon palette
Issue: #219
User-Visible: no
2026-08-20 14:38:35 +03:00
Sergey Matyunin 72275de567 docs: add risk analysis for glow geometry
Issue: #218
User-Visible: no
2026-08-20 13:43:20 +03:00
Sergey Matyunin c6ff34cea3 docs: specify resilient glow floor geometry
Issue: #218
User-Visible: no
2026-08-20 13:35:09 +03:00
Sergey Matyunin fe33deaa13 docs: specify text marker shell geometry
Issue: #217
User-Visible: no
2026-08-20 13:07:49 +03:00
Sergey Matyunin 0e5ee030fe fix: polish device marker geometry and input
Issue: #213
User-Visible: yes
2026-08-20 11:00:22 +03:00
Sergey Matyunin 0c93be9e85 docs: specify device marker geometry polish
Issue: #213
User-Visible: no
2026-08-20 10:19:03 +03:00
Sergey Matyunin 120d41317c fix: polish device icons and pointer feedback
Issue: #212
User-Visible: yes
2026-08-20 08:42:34 +03:00
Sergey Matyunin ec6f77b014 docs: specify device icon polish and touch feedback
Issue: #212
User-Visible: no
2026-08-20 08:13:16 +03:00
Sergey Matyunin 6c3d376b2b docs: clarify fixed-floor config clearing
Issue: #210
User-Visible: no
2026-08-20 01:22:12 +03:00
Sergey Matyunin 0bd6094ca8 docs: specify fixed-floor card instances
Issue: #210
User-Visible: no
2026-08-20 01:12:55 +03:00
Sergey Matyunin ce304646c8 docs: clarify device glyph parity contract
Issue: #211
User-Visible: no
2026-08-20 00:21:49 +03:00
Sergey Matyunin 93200eb56a docs: specify device icon visual parity
Issue: #211
User-Visible: no
2026-08-20 00:07:42 +03:00
Sergey Matyunin 2310e6d88a docs: address device icon spec review
Issue: #179
User-Visible: no
2026-08-19 22:06:25 +03:00
Sergey Matyunin 517a7101e7 docs: specify device icon redesign
Issue: #179
User-Visible: no
2026-08-19 21:52:17 +03:00
Sergey Matyunin 3a68efa62f docs: specify optimizer micro-interval cleanup
Issue: #198
User-Visible: no
2026-08-19 21:09:47 +03:00
Sergey Matyunin 5c09591ce9 docs: specify vacuum trail resume grace
Issue: #205
User-Visible: no
2026-08-19 20:54:56 +03:00
Sergey Matyuninandclaude[bot] 15dc8adc4f docs: specify space creation display defaults
Issue: #204
User-Visible: no
2026-08-19 17:44:48 +00:00
Sergey Matyunin f7b811a621 docs: protect hidden iso labels in spec
Issue: #203
User-Visible: no
2026-08-19 18:29:28 +03:00
Sergey Matyunin 009fed9bc0 docs: specify hidden room names
Issue: #203
User-Visible: no
2026-08-19 18:17:05 +03:00
Sergey Matyunin 7b759f316b docs: specify atomic wall thickness lookup
Issue: #201
User-Visible: no
2026-08-19 17:48:56 +03:00
Sergey Matyunin cd029a0415 fix: keep room labels aligned across modes
Issue: #200
User-Visible: yes
2026-08-19 17:12:02 +03:00
Sergey Matyunin 4089c912c6 docs: specify room label parity
Issue: #200
User-Visible: no
2026-08-19 16:50:29 +03:00
Sergey Matyunin a356ec29ab docs: preserve legacy jambs on full restore
Issue: #186
User-Visible: no
2026-08-19 15:33:45 +03:00
Sergey Matyunin 2453ec0d7f docs: specify partition opening jamb margin
Issue: #186
User-Visible: no
2026-08-19 15:33:44 +03:00
Sergey Matyunin db57180956 fix: isolate degenerate junction patches
Issue: #197
User-Visible: yes
2026-08-19 13:02:12 +03:00
Sergey Matyunin b203e8faeb docs: clarify issue 197 reproduction coordinates
Issue: #197
User-Visible: no
2026-08-19 12:39:37 +03:00
Sergey Matyunin fe7b28f3a7 docs: specify junction patch resilience
Issue: #197
User-Visible: no
2026-08-19 12:15:55 +03:00
Sergey Matyunin 3540d24f18 docs: specify unified color picker coverage
Issue: #180
User-Visible: no
2026-08-19 11:22:36 +03:00
Sergey Matyunin 07d0c2ef86 Document passage preview touch contract
Issue: #193
User-Visible: no
2026-08-19 10:44:57 +03:00
Sergey Matyunin fc22d9a6c5 Specify passage placement preview
Issue: #193
User-Visible: no
2026-08-19 10:34:58 +03:00
Sergey Matyunin 299da593d5 Unify color and opacity picking
Issue: #57
User-Visible: yes
2026-08-19 03:46:38 +03:00
Sergey Matyunin ffb10843c9 docs: specify unified color opacity picker
Issue: #57
User-Visible: no
2026-08-19 03:36:22 +03:00
Sergey Matyunin 932773773f Show state in toggle confirmations
Issue: #103
User-Visible: yes
2026-08-19 03:23:58 +03:00
Sergey Matyunin a449edc545 docs: specify toggle confirmation states
Issue: #103
User-Visible: no
2026-08-19 03:12:55 +03:00
Sergey Matyunin 0c2a5dedea docs: specify optional space model contract
Issue: #113
User-Visible: no
2026-08-19 02:47:50 +03:00
Sergey Matyunin 563a850aac docs: specify registryless opening entities
Issue: #117
User-Visible: no
2026-08-19 02:11:35 +03:00
Sergey Matyunin 083621342a docs: address partition openings spec review
Issue: #132
User-Visible: no
2026-08-19 00:35:59 +03:00
Sergey Matyunin 2aaabc48d6 docs: update partition openings spec after unified walls
Issue: #132
User-Visible: no
2026-08-19 00:21:38 +03:00