Claude and claude[bot]
a0f72280ee
fix(plan): key room shapes by space and id so a floor switch never repaints a stranger ( #742 )
...
The flat room list was a bare map(), so Lit reused room nodes by position.
On a floor switch the previous floor's room node became the new floor's room
and `.room { transition: 0.12s }` drew its fill and stroke in from the old
computed values: one paper-white frame, then two or three frames darker than
the final fill (alpha rises while fill-opacity falls), then the fill. Between
two filled floors the fill bled in from the other floor's colour.
The list is now keyed(space.id, repeat(rooms, (r, i) => r.id || i, ...)), the
shape #534 settled on for openings and markers. The outer key handles the
floor switch, including room ids repeated on two floors (ids are unique only
within a space); the inner key keeps a node bound to its room inside a space,
where inserts, merges, splits and the editor filter shift positions. An
id-less room keys by its numeric index, which never equals a string id. The
transition itself stays: it smooths hover and a real fill change on the same
floor.
Witness: a new section of smoke_space_switch_transitions, before physicalize
(after it the first room changes template branch and the node is recreated
anyway). Red on dev: five transitions on g1, node r1 reused for g1, computed
fill rgba(0, 0, 0, 0) / 1; room nodes swapped by an insert; same-id case
reuses r1. A real custom_fill change still runs a fill transition (catches
`transition: none`). Two mutants: inner key removed, outer key removed.
Issue: #742
User-Visible: yes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_018qZfe7YS4rqEMKoVeS3GKd
2026-10-01 10:13:50 +00:00
..
2026-10-01 05:25:21 +00:00
2026-10-01 05:25:21 +00:00
2026-09-28 14:58:33 +03:00
2026-09-15 12:17:27 +03:00
2026-10-01 10:13:50 +00:00
2026-09-06 17:52:05 +00:00
2026-08-28 05:40:28 +00:00
2026-09-24 19:57:41 +03:00
2026-08-29 10:13:09 +03:00
2026-09-25 13:11:44 +00:00
2026-09-26 21:00:43 +03:00
2026-08-23 00:34:55 +03:00
2026-09-26 21:00:43 +03:00
2026-09-09 18:53:38 +03:00
2026-09-27 09:48:02 +03:00
2026-09-06 17:52:05 +00:00
2026-08-19 03:46:38 +03:00
2026-09-01 15:08:22 +00:00
2026-09-25 23:33:07 +03:00
2026-10-01 03:17:40 +00:00
2026-09-12 22:29:16 +03:00
2026-09-08 18:49:36 +03:00
2026-09-23 10:34:09 +03:00
2026-09-26 21:00:43 +03:00
2026-09-23 06:36:39 +00:00
2026-09-30 12:25:46 +03:00
2026-09-03 15:23:40 +03:00
2026-09-21 15:01:18 +03:00
2026-09-02 19:18:28 +03:00
2026-09-25 23:33:07 +03:00
2026-10-01 00:22:26 +00:00
2026-09-24 22:50:30 +03:00
2026-09-24 22:50:30 +03:00
2026-08-20 11:00:22 +03:00
2026-08-30 13:16:27 +00:00
2026-09-18 13:40:57 +03:00
2026-09-18 13:40:57 +03:00
2026-09-18 13:40:57 +03:00
2026-08-30 07:48:16 +00:00
2026-09-18 13:40:57 +03:00
2026-08-30 14:03:35 +03:00
2026-09-06 17:52:05 +00:00
2026-09-06 17:38:47 +03:00
2026-09-30 12:25:46 +03:00
2026-09-08 21:26:29 +03:00
2026-08-28 11:58:46 +03:00
2026-09-30 12:25:46 +03:00
2026-09-21 15:01:18 +03:00
2026-09-23 15:49:45 +00:00
2026-09-06 16:10:46 +03:00
2026-09-21 15:01:18 +03:00
2026-09-21 15:01:18 +03:00
2026-09-04 08:58:48 +03:00
2026-09-21 15:01:18 +03:00
2026-08-29 18:09:53 +00:00
2026-09-23 15:27:51 +03:00
2026-08-19 02:12:37 +03:00
2026-09-26 08:51:15 +00:00
2026-10-01 10:13:50 +00:00
2026-10-01 06:47:05 +00:00
2026-09-24 19:57:41 +03:00
2026-09-08 21:26:29 +03:00
2026-09-04 22:04:03 +03:00
2026-09-25 02:13:32 +03:00
2026-09-23 06:36:39 +00:00
2026-08-20 11:00:22 +03:00
2026-09-23 03:18:37 +03:00
2026-08-20 08:42:34 +03:00
2026-09-24 14:51:18 +03:00
2026-09-23 21:09:44 +03:00
2026-08-28 11:58:46 +03:00
2026-08-20 01:38:01 +03:00
2026-09-04 22:03:45 +03:00
2026-10-01 10:06:38 +00:00
2026-09-26 09:05:20 +03:00
2026-09-30 15:18:00 +03:00
2026-09-30 22:39:24 +00:00
2026-09-30 15:18:00 +03:00
2026-10-01 05:59:54 +00:00
2026-09-25 18:55:14 +03:00
2026-09-25 23:33:07 +03:00
2026-09-14 15:29:57 +03:00
2026-09-04 23:54:09 +03:00
2026-09-25 18:55:14 +03:00
2026-09-30 15:18:00 +03:00
2026-09-14 07:06:16 +00:00
2026-09-14 22:28:09 +03:00
2026-09-28 17:51:06 +03:00
2026-09-28 16:27:45 +03:00
2026-09-09 03:53:33 +03:00
2026-08-30 16:11:35 +00:00
2026-09-30 12:25:46 +03:00
2026-10-01 05:25:21 +00:00
2026-10-01 05:25:21 +00:00
2026-10-01 05:25:21 +00:00
2026-09-23 21:09:44 +03:00
2026-09-27 16:23:39 +00:00
2026-08-22 12:24:49 +03:00
2026-08-19 15:43:23 +03:00
2026-09-06 07:48:03 +03:00
2026-09-24 08:00:58 +00:00
2026-08-19 15:43:23 +03:00
2026-09-23 21:09:44 +03:00
2026-09-06 17:38:47 +03:00
2026-09-10 11:41:16 +00:00
2026-09-06 17:38:47 +03:00
2026-09-06 17:38:47 +03:00
2026-08-20 08:42:34 +03:00
2026-09-04 22:04:17 +03:00
2026-09-13 23:23:30 +03:00
2026-09-09 03:54:02 +03:00
2026-09-09 03:51:25 +03:00
2026-09-09 03:52:23 +03:00
2026-09-09 03:52:23 +03:00
2026-09-09 03:54:02 +03:00
2026-09-04 22:03:45 +03:00
2026-09-04 22:04:03 +03:00
2026-09-05 01:46:26 +03:00
2026-08-24 22:59:33 +03:00
2026-09-06 17:38:47 +03:00
2026-09-23 21:09:44 +03:00
2026-08-26 02:20:57 +03:00
2026-09-28 16:27:45 +03:00
2026-09-25 10:15:34 +03:00
2026-09-06 17:52:05 +00:00
2026-09-10 11:41:16 +00:00
2026-10-01 05:25:21 +00:00
2026-09-26 21:00:43 +03:00
2026-09-26 21:00:43 +03:00
2026-09-03 19:41:55 +03:00
2026-09-24 19:57:41 +03:00
2026-08-29 21:15:21 +03:00
2026-09-27 18:07:37 +00:00
2026-08-19 02:49:39 +03:00
2026-08-21 00:50:15 +03:00
2026-08-25 14:47:04 +03:00
2026-10-01 05:25:21 +00:00
2026-09-27 23:04:28 +03:00
2026-09-27 23:04:28 +03:00
2026-09-28 14:58:33 +03:00
2026-10-01 00:22:26 +00:00
2026-09-28 14:58:33 +03:00
2026-09-25 18:55:14 +03:00
2026-09-08 18:49:36 +03:00
2026-09-09 09:32:36 +03:00
2026-09-19 14:19:54 +00:00
2026-09-09 19:49:18 +00:00
2026-09-10 11:41:16 +00:00
2026-09-09 09:54:14 +03:00
2026-09-09 09:32:36 +03:00
2026-09-13 02:04:45 +03:00
2026-09-26 23:48:01 +03:00
2026-09-09 02:53:36 +03:00
2026-09-09 09:32:36 +03:00
2026-10-01 03:17:40 +00:00
2026-09-10 11:24:10 +03:00
2026-09-13 02:04:45 +03:00
2026-09-09 13:57:53 +03:00
2026-09-20 11:04:39 +03:00
2026-09-15 09:05:58 +03:00
2026-09-02 21:25:30 +03:00
2026-09-14 21:23:58 +03:00
2026-09-30 12:25:46 +03:00
2026-09-10 11:41:16 +00:00
2026-09-03 19:22:55 +00:00
2026-09-23 21:09:44 +03:00
2026-08-29 11:29:42 +03:00
2026-09-09 03:51:25 +03:00
2026-09-12 03:49:46 +00:00
2026-09-04 10:24:25 +03:00
2026-08-26 13:39:52 +03:00
2026-08-22 10:56:38 +03:00
2026-09-06 17:39:54 +03:00
2026-08-27 20:30:07 +03:00
2026-09-11 11:19:04 +03:00
2026-09-23 21:09:44 +03:00
2026-08-28 05:40:28 +00:00
2026-09-06 17:52:05 +00:00
2026-09-06 17:38:47 +03:00
2026-09-05 10:50:19 +03:00
2026-09-06 00:48:54 +03:00
2026-09-04 15:26:06 +03:00
2026-09-04 14:40:09 +03:00
2026-09-05 10:50:19 +03:00