From fd760538897afb0e7efd3fd7f76294420d7366eb Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Fri, 22 May 2026 18:21:56 +0000 Subject: [PATCH] sdk_resource --- .../src/lib/components/ResourceEditor.svelte | 11 ++- .../routes/test_dev/sdk_resource/+page.svelte | 87 +++++++++++++++++++ 2 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 frontend/src/routes/test_dev/sdk_resource/+page.svelte diff --git a/frontend/src/lib/components/ResourceEditor.svelte b/frontend/src/lib/components/ResourceEditor.svelte index ac76ec7981..a7d728b7fb 100644 --- a/frontend/src/lib/components/ResourceEditor.svelte +++ b/frontend/src/lib/components/ResourceEditor.svelte @@ -330,7 +330,16 @@ $effect(() => { if (current) - onChange?.({ path: current.path, args: current.args, description: current.description }) + // Snapshot args so the deep read establishes nested dependency + // tracking (the effect re-runs on mutations inside args, not + // just reference changes) and so consumers receive a plain + // object instead of a $state proxy — important for React + // integrations that diff by reference or JSON.stringify. + onChange?.({ + path: current.path, + args: $state.snapshot(current.args) as Record, + description: current.description + }) }) $effect(() => { diff --git a/frontend/src/routes/test_dev/sdk_resource/+page.svelte b/frontend/src/routes/test_dev/sdk_resource/+page.svelte new file mode 100644 index 0000000000..d220ebef76 --- /dev/null +++ b/frontend/src/routes/test_dev/sdk_resource/+page.svelte @@ -0,0 +1,87 @@ + + +
+
+ + + {#if newResource} + + {:else} + + {/if} + + +
+ +
workspace: {$workspaceStore ?? '(unset)'}
+user: {$userStore?.username ?? '(unset)'}
+onChange: {JSON.stringify(lastChange, null, 2)}
+ + {#if !$workspaceStore || !$userStore} +
+ Waiting for workspace/user to load. If this never resolves, log into the app at /user/login + first so the workspace cookie/store is set. +
+ {:else} + {#key `${newResource}|${resource_type}|${path}`} + { + console.log('onChange', e) + lastChange = e + }} + /> + {/key} + {/if} +