From 0ab9a81e204d8ea25d2b713747a2a1ce2fc301c6 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Thu, 19 Mar 2026 06:35:02 +0000 Subject: [PATCH] field reorder on rename in EditableSchemaForm (#8447) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: track schema.properties reference not keys in EditableSchemaForm Object.keys() tracked key enumeration, so renaming a field triggered onSchemaChange -> alignOrderWithProperties -> reorder. schema?.order created a feedback loop since alignOrderWithProperties writes to it. Only schema?.properties (the object reference) is needed to detect when inferArgs replaces properties (schema.properties = {}). Co-Authored-By: Claude Opus 4.6 (1M context) * fix: revert EditableSchemaForm effect to original The added schema?.order and Object.keys(schema?.properties) tracking caused field reordering on rename — Object.keys returns the renamed key at the end (JS insertion order after delete+add), and schema?.order created a feedback loop with alignOrderWithProperties. Revert to the original schema reference-only tracking. Co-Authored-By: Claude Opus 4.6 (1M context) --------- Co-authored-by: Claude Opus 4.6 (1M context) --- frontend/src/lib/components/EditableSchemaForm.svelte | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/frontend/src/lib/components/EditableSchemaForm.svelte b/frontend/src/lib/components/EditableSchemaForm.svelte index f04bac5640..989ce6a2fe 100644 --- a/frontend/src/lib/components/EditableSchemaForm.svelte +++ b/frontend/src/lib/components/EditableSchemaForm.svelte @@ -297,9 +297,7 @@ } const editTabDefaultSize = untrack(() => noPreview) ? 100 : 50 - editPanelSize = untrack(() => editTab) - ? (untrack(() => editPanelInitialSize) ?? editTabDefaultSize) - : 0 + editPanelSize = untrack(() => editTab) ? (untrack(() => editPanelInitialSize) ?? editTabDefaultSize) : 0 let inputPanelSize = $state(100 - editPanelSize) let editPanelSizeSmooth = tweened(editPanelSize, { duration: 150 @@ -333,10 +331,6 @@ } }) $effect(() => { - // Track schema properties and order so this effect re-runs when - // inferArgs rebuilds the schema (not just on reference change). - schema?.order - Object.keys(schema?.properties ?? {}) schema && untrack(() => onSchemaChange()) }) $effect(() => {