Files
houseplan-card/docs/images/screenshots.json
T
CodexandCodex ed13b4a5ca fix: a room side and a live draft, seen in the right coordinates (#229 r1 H1,H2)
**High-1.** Комнаты хранятся в тех же координатах, что и перегородки:
`roomPoly` отдаёт сырой полигон конфига. Обе обвязки делили его на `NORM_W`
ещё раз, комната уезжала в область ~0.0001, и `junctionAt` не находил ни
одного совпадения. Узел на T-стыке к середине стены комнаты — тот самый
случай, ради которого ТЗ прошло два раунда ревью, — молча исчезал.
Воспроизведено вызовом `optimizePlans`: `partitionsMerged === 1` там, где
ожидается 0.

**High-2.** Завершаемая цепочка к моменту слияния ещё лежит в `room_drafts`:
каждый клик персистит её через `_persistActiveDraftSegment`, а удаляется
черновик строкой ниже вызова слияния. Собственные концы цепочки считались
чужим примыканием, и стык с существующей стеной не срастался. Активный
черновик теперь исключается — ровно так же, как это делает
`plan-snap-overlay` (`activeDraftId`).

Дыры в тестах, которые это пропустили, закрыты по существу, а не заплаткой:

- `demo/smoke_wall_chain_merge.mjs` рисует продолжение реальными кликами через
  `_markupClick`, а не присваиванием `_path`, — то есть исполняет тот путь, на
  котором дефект и жил. Клики задаются в координатах плана и переводятся через
  живой view box, иначе смок целится мимо только что нарисованной стены.
- `test/plan-optimizer.test.mjs` получил комнату с примыканием к середине
  стороны: юниты модуля этого не ловили, потому что передают полигон уже в
  согласованном масштабе, минуя обвязку.
- Мутанты `partition-merge-rescales-rooms` и `chain-merge-sees-own-draft`
  сторожат оба места: проверены применением патча, 1 и 2 падения.

Issue: #229
User-Visible: no
2026-08-21 13:04:20 +03:00

120 lines
3.9 KiB
JSON

{
"version": 1,
"fixture": "synthetic-only",
"sourceFingerprint": "afa20fd81ac20e56571c5fc16e5f881b9fac8ead93f923b52d132c853f55cc48",
"captureScriptSha256": "34f2219790d46efd8250e7a1bd829cb8fc0b0547e1260635fefa52407551b41b",
"command": "npm run build && node demo/docs/capture.mjs",
"scenarios": {
"view-desktop": {
"file": "01-view-desktop.png",
"viewport": {
"width": 1180,
"height": 900
},
"theme": "dark",
"language": "en",
"sourceSha256": "afa20fd81ac20e56571c5fc16e5f881b9fac8ead93f923b52d132c853f55cc48",
"imageSha256": "d7ce576f5a70b1977277e15985bb409f40f205f6016eeebc62f76a4394effdb4"
},
"view-touch": {
"file": "02-view-touch.png",
"viewport": {
"width": 390,
"height": 760
},
"theme": "dark",
"language": "en",
"sourceSha256": "afa20fd81ac20e56571c5fc16e5f881b9fac8ead93f923b52d132c853f55cc48",
"imageSha256": "62c13b7f9dc6c0576735a727a1988bc35b9b28fc2a9d34e9a746a4dc3e01b28a"
},
"space-create": {
"file": "03-space-create.png",
"viewport": {
"width": 900,
"height": 850
},
"theme": "dark",
"language": "en",
"sourceSha256": "afa20fd81ac20e56571c5fc16e5f881b9fac8ead93f923b52d132c853f55cc48",
"imageSha256": "a73bb2301677752c7980712af554d40f3fd6077944249677245c8135d325b1b9"
},
"room-contour-close": {
"file": "04-room-contour-close.png",
"viewport": {
"width": 1180,
"height": 900
},
"theme": "dark",
"language": "en",
"sourceSha256": "afa20fd81ac20e56571c5fc16e5f881b9fac8ead93f923b52d132c853f55cc48",
"imageSha256": "8f234c7750809cbc75b3ce364dc2d3b55eebacd4b2b5e42b223d6e2cee9bb4ac"
},
"plan-context-tray": {
"file": "05-plan-context-tray.png",
"viewport": {
"width": 1180,
"height": 900
},
"theme": "dark",
"language": "en",
"sourceSha256": "afa20fd81ac20e56571c5fc16e5f881b9fac8ead93f923b52d132c853f55cc48",
"imageSha256": "3eee486fe5cc226e8b3c19c4035ebb279087432a69959d24b7edabc59d848582"
},
"device-editor": {
"file": "06-device-editor.png",
"viewport": {
"width": 1180,
"height": 1100
},
"theme": "dark",
"language": "en",
"sourceSha256": "afa20fd81ac20e56571c5fc16e5f881b9fac8ead93f923b52d132c853f55cc48",
"imageSha256": "a6360309a9a6125bdc2dfd411463d281af2f21a09b07e58eae1fc23d7371b8e5"
},
"device-display-preview": {
"file": "06-device-display-preview.png",
"viewport": {
"width": 1180,
"height": 1100
},
"theme": "dark",
"language": "en",
"sourceSha256": "afa20fd81ac20e56571c5fc16e5f881b9fac8ead93f923b52d132c853f55cc48",
"imageSha256": "4476e223863379ef9dfd0a1c89fb4c169a1249268e733ac11e5a2eec8d90f8f5"
},
"background-editor": {
"file": "07-background-editor.png",
"viewport": {
"width": 1180,
"height": 900
},
"theme": "dark",
"language": "en",
"sourceSha256": "afa20fd81ac20e56571c5fc16e5f881b9fac8ead93f923b52d132c853f55cc48",
"imageSha256": "a83926911c2d6d468c81dfdf74be7e00cbbca9a02afade6e6b5644bdf4f46852"
},
"room-card": {
"file": "08-room-card.png",
"viewport": {
"width": 1180,
"height": 900
},
"theme": "dark",
"language": "en",
"sourceSha256": "afa20fd81ac20e56571c5fc16e5f881b9fac8ead93f923b52d132c853f55cc48",
"imageSha256": "48a5685039a5e0de2a28190d857b193c86e2e63606e3c7a8c40fc9d2b190da4e"
},
"device-info": {
"file": "09-device-info.png",
"viewport": {
"width": 1000,
"height": 900
},
"theme": "dark",
"language": "en",
"sourceSha256": "afa20fd81ac20e56571c5fc16e5f881b9fac8ead93f923b52d132c853f55cc48",
"imageSha256": "307b2ba224cd0b55c2e2936767a16cdda7af3ddffd292705f20c5a300e56c648"
}
}
}