fix: touched by step flag issue

This commit is contained in:
2026-10-09 21:26:43 +05:00
parent 9916955b96
commit d58f6c90be
2 changed files with 9 additions and 5 deletions
+5 -5
View File
@@ -58,12 +58,12 @@
`$derived.by`; ручной сброс `maskResults = {}` в `init()` удалён — derived `$derived.by`; ручной сброс `maskResults = {}` в `init()` удалён — derived
пересчитывается сам по смене `steps`/`source`/`maskOnKeys`. пересчитывается сам по смене `steps`/`source`/`maskOnKeys`.
### M2. `init()` в эффекте не сбрасывает часть состояния ### M2. `init()` не сбрасывал часть состояния — СДЕЛАНО (2026-10)
`SchemaToolView.svelte:514-516` + :218-254: `$effect(() => init())` — `SchemaToolView.svelte`: `init()` теперь очищает `touchedByStep` и `lastAxis` —
синхронизация состояния по смене пропсов (анти-паттерн из документации Svelte метки от ключей шагов прошлого хоста больше не протекают в новую цепочку.
5). При этом `touchedByStep` (:105) и `lastAxis` (:107) в `init()` не Переработка самого паттерна `$effect(() => init())` — часть H1, отдельно не
сбрасываются — при смене хоста остаются метки от прежних ключей шагов. делалась.
### M3. `SchemaPreview.svelte` — интерфейс из ~40 пропсов ### M3. `SchemaPreview.svelte` — интерфейс из ~40 пропсов
@@ -275,6 +275,10 @@
verdictVars = undefined; verdictVars = undefined;
displayError = null; displayError = null;
maskOnKeys.clear(); maskOnKeys.clear();
// Marks are keyed by step.key from the previous host; keep them and
// stale keys leak into the new chain's fields.
touchedByStep.clear();
for (const k of Object.keys(lastAxis)) delete lastAxis[k];
} }
function setStepValue( function setStepValue(