From 7fd0bf974d2ba2644bb01dd5e9ddc84749e166f5 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Thu, 2 Apr 2026 14:13:12 +0000 Subject: [PATCH] fix: respect disabled fields in JSON input mode (#8663) * fix: respect disabled fields in JSON input mode Co-Authored-By: Claude Opus 4.6 (1M context) * fix: guard against undefined default in disabled field enforcement Co-Authored-By: Claude Opus 4.6 (1M context) * fix: show toast when disabled fields are reset to defaults on run Co-Authored-By: Claude Opus 4.6 (1M context) --------- Co-authored-by: Claude Opus 4.6 (1M context) --- frontend/src/lib/components/RunForm.svelte | 31 ++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/frontend/src/lib/components/RunForm.svelte b/frontend/src/lib/components/RunForm.svelte index 6c2ac09da0..0906586457 100644 --- a/frontend/src/lib/components/RunForm.svelte +++ b/frontend/src/lib/components/RunForm.svelte @@ -38,7 +38,10 @@ export async function run(overrideScheduledForStr?: string | undefined | null) { let processedArgs: Record try { - processedArgs = await processSecretArgs(args ?? {}, runnable?.schema) + processedArgs = await processSecretArgs( + enforceDisabledDefaults(args ?? {}, true), + runnable?.schema + ) } catch (e) { sendUserToast('Failed to process sensitive args: ' + e, true) return @@ -132,6 +135,30 @@ } } + function enforceDisabledDefaults( + args: Record, + notify: boolean = false + ): Record { + const schema = runnable?.schema + if (!schema?.properties) return args + const result = { ...args } + const resetKeys: string[] = [] + for (const [key, prop] of Object.entries(schema.properties) as [string, any][]) { + if (prop?.disabled && 'default' in prop) { + if (notify && result[key] !== prop.default) { + resetKeys.push(key) + } + result[key] = prop.default + } + } + if (resetKeys.length > 0) { + sendUserToast( + `Disabled field${resetKeys.length > 1 ? 's' : ''} ${resetKeys.map((k) => `'${k}'`).join(', ')} reset to default value${resetKeys.length > 1 ? 's' : ''}` + ) + } + return result + } + export function setCode(code: string) { jsonEditor?.setCode(code) } @@ -249,7 +276,7 @@ bind:this={jsonEditor} on:select={(e) => { if (e.detail) { - args = e.detail + args = enforceDisabledDefaults(e.detail) } }} updateOnBlur={false}