Codex
5afdb644c7
Смена пространства выбрасывает слой, а не сверяет его поэлементно
...
#525 увёл оба списка сцены с `map()` на `repeat(items, (item) => item.id, …)`,
чтобы Lit не переиспользовал узлы по позиции и не проигрывал анимацию двери,
которой не было. Правка верная, но на плане с двумя сотнями маркеров она
оказалась дорогой ровно там, где пользы не приносит: при смене пространства
ключи не пересекаются вовсе, и `repeat` строит две карты ключей и обходит оба
списка, чтобы затем всё равно выбросить всё и создать заново.
Бисект по медиане `switchCycleMs` на `large-house`: 871,2 перед #525 → 953,5
после. На раннере эти 80 мс распадаются на шесть-девять дополнительных длинных
задач, и `longTask.countP95` вышел за порог стабильного гейта.
Теперь оба списка рендерятся как `keyed(space.id, repeat(…))`. Внешний ключ
делает смену пространства: поддерево выбрасывается целиком, дифа нет. Внутренний
остаётся, потому что состав списков едет и внутри пространства — у маркеров от
призраков редактора и живого синка, у проёмов от записи с нерешённым хостом,
которая живёт только в режиме plan, — а переходы на `.device-shell-frame`,
`.op-leaf` и `.op-arc` никуда не делись.
Замер после правки: `switchCycleMs` 889,1 против 936,0 на `main` и 871,2 до
#525 . Потолок карточки поднят на одну строку — на `import { keyed }`;
переносить нечего, сам рендер не вырос ни на символ.
Issue: #534
User-Visible: yes
2026-09-11 22:30:11 +03:00
..
2026-09-10 11:41:16 +00:00
2026-09-11 10:40:05 +00:00
2026-09-11 10:40:05 +00:00
2026-08-29 21:15:21 +03:00
2026-09-11 22:30:11 +03:00
2026-09-06 17:52:05 +00:00
2026-08-28 05:40:28 +00:00
2026-09-08 21:26:29 +03:00
2026-08-29 10:13:09 +03:00
2026-09-08 19:51:04 +03:00
2026-08-23 00:34:55 +03:00
2026-09-04 10:24:25 +03:00
2026-09-09 18:53:38 +03:00
2026-09-06 17:52:05 +00:00
2026-09-01 15:08:22 +00:00
2026-09-10 20:12:13 +03:00
2026-09-08 18:49:36 +03:00
2026-09-06 17:38:47 +03:00
2026-08-31 00:46:54 +03:00
2026-09-03 15:23:40 +03:00
2026-09-08 21:26:29 +03:00
2026-09-02 19:18:28 +03:00
2026-08-20 11:00:22 +03:00
2026-08-27 23:17:53 +00:00
2026-08-20 11:00:22 +03:00
2026-08-30 13:16:27 +00:00
2026-08-27 22:41:46 +03:00
2026-08-29 22:20:18 +03:00
2026-08-30 07:48:16 +00:00
2026-08-29 22:20:18 +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-06 07:06:54 +03:00
2026-09-08 21:26:29 +03:00
2026-08-28 11:58:46 +03:00
2026-09-06 16:10:46 +03:00
2026-08-28 18:52:03 +03:00
2026-09-06 16:10:46 +03:00
2026-09-06 16:10:46 +03:00
2026-09-06 16:10:46 +03:00
2026-09-04 08:58:48 +03:00
2026-09-06 16:10:46 +03:00
2026-08-29 18:09:53 +00:00
2026-08-25 12:49:41 +03:00
2026-09-11 22:30:11 +03:00
2026-09-11 17:25:52 +03:00
2026-09-10 11:41:16 +00:00
2026-09-08 21:26:29 +03:00
2026-09-04 22:04:03 +03:00
2026-09-06 12:56:13 +00:00
2026-09-08 21:26:29 +03:00
2026-08-20 11:00:22 +03:00
2026-09-09 19:49:18 +00:00
2026-09-06 00:48:54 +03:00
2026-09-05 11:10:44 +03:00
2026-08-28 11:58:46 +03:00
2026-09-04 22:03:45 +03:00
2026-09-06 07:06:54 +03:00
2026-09-06 11:23:51 +00:00
2026-09-06 07:06:54 +03:00
2026-09-06 17:38:47 +03:00
2026-09-06 07:06:54 +03:00
2026-09-04 23:54:09 +03:00
2026-09-04 16:31:06 +03:00
2026-09-10 23:25:46 +03:00
2026-09-04 22:04:03 +03:00
2026-09-04 22:04:17 +03:00
2026-09-11 14:23:48 +03:00
2026-09-08 10:44:13 +03:00
2026-09-09 03:53:33 +03:00
2026-08-30 16:11:35 +00:00
2026-09-06 17:38:47 +03:00
2026-08-22 12:24:49 +03:00
2026-09-06 07:48:03 +03:00
2026-09-06 17:38:47 +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-09-04 22:04:17 +03:00
2026-09-09 03:52:23 +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-08-28 05:40:28 +00:00
2026-08-26 02:20:57 +03:00
2026-09-04 18:33:03 +03:00
2026-09-06 17:52:05 +00:00
2026-09-08 10:44:49 +03:00
2026-09-10 11:41:16 +00:00
2026-09-03 15:23:40 +03:00
2026-09-10 11:41:16 +00:00
2026-09-05 09:25:08 +03:00
2026-09-03 19:41:55 +03:00
2026-09-08 10:44:13 +03:00
2026-08-29 21:15:21 +03:00
2026-09-06 17:38:47 +03:00
2026-08-21 00:50:15 +03:00
2026-08-25 14:47:04 +03:00
2026-09-08 10:44:13 +03:00
2026-08-26 01:34:20 +03:00
2026-09-08 18:49:36 +03:00
2026-09-09 09:32:36 +03:00
2026-09-09 09:32:36 +03: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-08 19:20:39 +03:00
2026-09-10 11:31:37 +03:00
2026-09-09 02:53:36 +03:00
2026-09-09 09:32:36 +03:00
2026-09-10 11:41:16 +00:00
2026-09-10 11:24:10 +03:00
2026-09-09 00:10:16 +03:00
2026-09-09 13:57:53 +03:00
2026-08-30 12:42:31 +03:00
2026-09-02 21:25:30 +03:00
2026-09-09 03:52:23 +03:00
2026-09-10 11:41:16 +00:00
2026-09-03 19:22:55 +00:00
2026-09-03 23:24:08 +03:00
2026-08-29 11:29:42 +03:00
2026-09-09 03:51:25 +03:00
2026-09-05 16:04:54 +03: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-08-28 10:46:27 +00: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