From e60ffcb3ba0f4ed894fbe1cc304854ccf83a1fca Mon Sep 17 00:00:00 2001 From: "claude[bot]" <209825114+claude[bot]@users.noreply.github.com> Date: Thu, 11 Sep 2025 20:37:11 +0000 Subject: [PATCH] fix: reset button for preprocessor scripts now uses preprocessor signature - Added selectedTab prop to EditorBar component to track active tab - Modified clearContent function to use preprocessor signature when on preprocessor tab - Added getPreprocessorCode helper function to return appropriate preprocessor template - Updated ScriptEditor to pass selectedTab to EditorBar - Updated WorkspaceScriptPicker and PickHubScript type definitions to support preprocessor kind Fixes #6594 Co-authored-by: windmill-internal-app[bot] --- frontend/src/lib/components/EditorBar.svelte | 35 ++++++++++++++++--- .../src/lib/components/ScriptEditor.svelte | 1 + .../flows/pickers/PickHubScript.svelte | 2 +- .../pickers/WorkspaceScriptPicker.svelte | 2 +- 4 files changed, 33 insertions(+), 7 deletions(-) diff --git a/frontend/src/lib/components/EditorBar.svelte b/frontend/src/lib/components/EditorBar.svelte index bfda38b927..0d6d9eb6aa 100644 --- a/frontend/src/lib/components/EditorBar.svelte +++ b/frontend/src/lib/components/EditorBar.svelte @@ -44,7 +44,7 @@ import type { Schema, SchemaProperty, SupportedLanguage } from '$lib/common' import ScriptVersionHistory from './ScriptVersionHistory.svelte' import type DiffEditor from './DiffEditor.svelte' - import { getResetCode } from '$lib/script_helpers' + import { getResetCode, TS_PREPROCESSOR_MODULE_CODE, PYTHON_PREPROCESSOR_MODULE_CODE, TS_PREPROCESSOR_SCRIPT_INTRO, PYTHON_PREPROCESSOR_SCRIPT_INTRO } from '$lib/script_helpers' import Popover from './Popover.svelte' import ResourceEditorDrawer from './ResourceEditorDrawer.svelte' import type { EditorBarUi } from './custom_ui' @@ -66,7 +66,7 @@ } iconOnly?: boolean validCode?: boolean - kind?: 'script' | 'trigger' | 'approval' + kind?: 'script' | 'trigger' | 'approval' | 'preprocessor' template?: 'pgsql' | 'mysql' | 'script' | 'docker' | 'powershell' | 'bunnative' collabMode?: boolean collabLive?: boolean @@ -83,6 +83,7 @@ right?: import('svelte').Snippet openAiChat?: boolean moduleId?: string + selectedTab?: 'main' | 'preprocessor' } let { @@ -107,7 +108,8 @@ showHistoryDrawer = $bindable(false), right, openAiChat = false, - moduleId = undefined + moduleId = undefined, + selectedTab = 'main' }: Props = $props() let contextualVariablePicker: ItemPicker | undefined = $state() @@ -351,11 +353,34 @@ function clearContent() { if (editor) { - const resetCode = getResetCode(lang, kind as Script['kind'], template) - editor.setCode(resetCode) + // If we're on the preprocessor tab or the kind is preprocessor, use preprocessor signature + if (selectedTab === 'preprocessor' || kind === 'preprocessor') { + const preprocessorCode = getPreprocessorCode(lang) + if (preprocessorCode) { + editor.setCode(preprocessorCode) + } else { + // Fallback to regular reset code if no preprocessor code is available + const resetCode = getResetCode(lang, 'script', template) + editor.setCode(resetCode) + } + } else { + const resetCode = getResetCode(lang, kind as Script['kind'], template) + editor.setCode(resetCode) + } } } + function getPreprocessorCode(language: SupportedLanguage | 'bunnative' | undefined): string | undefined { + if (language === 'deno' || language === 'bun') { + return `${TS_PREPROCESSOR_SCRIPT_INTRO}${TS_PREPROCESSOR_MODULE_CODE}` + } else if (language === 'python3') { + return `${PYTHON_PREPROCESSOR_SCRIPT_INTRO}${PYTHON_PREPROCESSOR_MODULE_CODE}` + } else if (language === 'nativets' || language === 'bunnative') { + return `${TS_PREPROCESSOR_SCRIPT_INTRO}${TS_PREPROCESSOR_MODULE_CODE}` + } + return undefined + } + function windmillPathToCamelCaseName(path: string): string { const parts = path.split('/') const lastPart = parts[parts.length - 1] diff --git a/frontend/src/lib/components/ScriptEditor.svelte b/frontend/src/lib/components/ScriptEditor.svelte index 6c3e160ec4..d0216e06bc 100644 --- a/frontend/src/lib/components/ScriptEditor.svelte +++ b/frontend/src/lib/components/ScriptEditor.svelte @@ -510,6 +510,7 @@ : undefined} {diffMode} bind:showHistoryDrawer + {selectedTab} > {#snippet right()} {@render editor_bar_right?.()} diff --git a/frontend/src/lib/components/flows/pickers/PickHubScript.svelte b/frontend/src/lib/components/flows/pickers/PickHubScript.svelte index 2c9202886d..d45d4ed860 100644 --- a/frontend/src/lib/components/flows/pickers/PickHubScript.svelte +++ b/frontend/src/lib/components/flows/pickers/PickHubScript.svelte @@ -9,7 +9,7 @@ import { Loader2 } from 'lucide-svelte' interface Props { - kind?: HubScriptKind & string + kind?: (HubScriptKind | 'preprocessor') & string filter?: string syncQuery?: boolean children?: import('svelte').Snippet diff --git a/frontend/src/lib/components/flows/pickers/WorkspaceScriptPicker.svelte b/frontend/src/lib/components/flows/pickers/WorkspaceScriptPicker.svelte index 61b578d253..c990a030c3 100644 --- a/frontend/src/lib/components/flows/pickers/WorkspaceScriptPicker.svelte +++ b/frontend/src/lib/components/flows/pickers/WorkspaceScriptPicker.svelte @@ -10,7 +10,7 @@ import Toggle from '$lib/components/Toggle.svelte' import NoItemFound from '$lib/components/home/NoItemFound.svelte' - export let kind: 'script' | 'trigger' | 'approval' | 'failure' = 'script' + export let kind: 'script' | 'trigger' | 'approval' | 'failure' | 'preprocessor' = 'script' export let isTemplate: boolean | undefined = undefined export let displayLock = false