From db56518e4fc53931e3498db06bbefd511c343d23 Mon Sep 17 00:00:00 2001 From: centdix <40307056+centdix@users.noreply.github.com> Date: Wed, 4 Feb 2026 18:50:42 +0100 Subject: [PATCH] fix: fix forking raw apps and summary setting in deploy drawer (#7792) Co-authored-by: Claude Opus 4.5 --- .../lib/components/copilot/chat/app/core.ts | 2 +- .../components/raw_apps/RawAppEditor.svelte | 38 ++++++------------- .../raw_apps/RawAppEditorHeader.svelte | 2 +- .../raw_apps/RawAppInlineScriptsPanel.svelte | 1 - .../(root)/(logged)/apps_raw/add/+page.svelte | 8 ++-- .../apps_raw/edit/[...path]/+page.svelte | 8 ++-- 6 files changed, 22 insertions(+), 37 deletions(-) diff --git a/frontend/src/lib/components/copilot/chat/app/core.ts b/frontend/src/lib/components/copilot/chat/app/core.ts index 3ba8a01ffb..39591437db 100644 --- a/frontend/src/lib/components/copilot/chat/app/core.ts +++ b/frontend/src/lib/components/copilot/chat/app/core.ts @@ -696,7 +696,7 @@ export const getAppTools = memo((): Tool[] => [ }) const lintResult = await helpers.setBackendRunnable(parsedArgs.key, runnable) toolCallbacks.setToolStatus(toolId, { - content: `Backend runnable '${parsedArgs.key}' analyzed`, + content: `Backend runnable '${parsedArgs.key}' set successfully.`, result: 'Success' }) return formatLintResultResponse( diff --git a/frontend/src/lib/components/raw_apps/RawAppEditor.svelte b/frontend/src/lib/components/raw_apps/RawAppEditor.svelte index 65d225faf2..37e4be449e 100644 --- a/frontend/src/lib/components/raw_apps/RawAppEditor.svelte +++ b/frontend/src/lib/components/raw_apps/RawAppEditor.svelte @@ -33,10 +33,10 @@ } from './dataTableRefUtils' interface Props { - initFiles: Record - initRunnables: Record + files?: Record + runnables?: Record /** Data configuration including tables and creation policy */ - initData: RawAppData | undefined + data?: RawAppData newApp: boolean policy: Policy summary?: string @@ -57,9 +57,9 @@ } let { - initFiles, - initRunnables, - initData, + files = $bindable({}), + runnables = $bindable({}), + data = $bindable(DEFAULT_DATA), newApp, policy, summary = $bindable(''), @@ -70,23 +70,8 @@ }: Props = $props() export const version: number | undefined = undefined - let runnables = $state(initRunnables) - - // Data configuration with tables and creation policy - let data: RawAppData = $state(initData ?? DEFAULT_DATA) - // Convert to object format for child components let dataTableRefsObjects = $derived(data.tables.map(parseDataTableRef)) - let initRunnablesContent = Object.fromEntries( - Object.entries(initRunnables).map(([key, runnable]) => { - if (isRunnableByName(runnable)) { - return [key, runnable?.inlineScript?.content ?? ''] - } - return [key, ''] - }) - ) - - let files: Record | undefined = $state(initFiles) // Initialize history manager const historyManager = new RawAppHistoryManager({ @@ -175,7 +160,9 @@ let iframeLoaded = $state(false) // @hmr:keep function populateFiles() { - setFilesInIframe(initFiles) + if (files) { + setFilesInIframe(files) + } } function setFilesInIframe(newFiles: Record) { const files = Object.fromEntries( @@ -604,8 +591,8 @@ // Normalize Windows-style path separators to Linux-style function normalizeFilePaths( filesObj: Record | undefined - ): Record | undefined { - if (!filesObj) return filesObj + ): Record { + if (!filesObj) return {} return Object.fromEntries( Object.entries(filesObj).map(([path, content]) => [path.replace(/\\/g, '/'), content]) ) @@ -681,7 +668,7 @@ }) }) $effect(() => { - iframe && iframeLoaded && initFiles && populateFiles() + iframe && iframeLoaded && files && populateFiles() }) $effect(() => { iframe && iframeLoaded && runnables && populateRunnables() @@ -895,7 +882,6 @@ { console.log('handle selection', selection) diff --git a/frontend/src/lib/components/raw_apps/RawAppEditorHeader.svelte b/frontend/src/lib/components/raw_apps/RawAppEditorHeader.svelte index b732af8979..0f2f615429 100644 --- a/frontend/src/lib/components/raw_apps/RawAppEditorHeader.svelte +++ b/frontend/src/lib/components/raw_apps/RawAppEditorHeader.svelte @@ -712,7 +712,7 @@ {appPath} {onLatest} {savedApp} - {summary} + bind:summary bind:customPath bind:deploymentMsg bind:customPathError diff --git a/frontend/src/lib/components/raw_apps/RawAppInlineScriptsPanel.svelte b/frontend/src/lib/components/raw_apps/RawAppInlineScriptsPanel.svelte index b9bccbb879..17b981c2a9 100644 --- a/frontend/src/lib/components/raw_apps/RawAppInlineScriptsPanel.svelte +++ b/frontend/src/lib/components/raw_apps/RawAppInlineScriptsPanel.svelte @@ -7,7 +7,6 @@ runnables: Record selectedRunnable: string | undefined appPath: string - initRunnablesContent: Record /** Called when code is selected in the editor */ onSelectionChange?: ( selection: { diff --git a/frontend/src/routes/(root)/(logged)/apps_raw/add/+page.svelte b/frontend/src/routes/(root)/(logged)/apps_raw/add/+page.svelte index bd694080e7..a837c47b0b 100644 --- a/frontend/src/routes/(root)/(logged)/apps_raw/add/+page.svelte +++ b/frontend/src/routes/(root)/(logged)/apps_raw/add/+page.svelte @@ -588,12 +588,12 @@ on:savedNewAppPath={(event) => { goto(`/apps_raw/edit/${event.detail}`) }} - initFiles={files} - initRunnables={runnables} - initData={data} + bind:files + bind:runnables + bind:data {policy} path={''} - {summary} + bind:summary newApp /> {/key} diff --git a/frontend/src/routes/(root)/(logged)/apps_raw/edit/[...path]/+page.svelte b/frontend/src/routes/(root)/(logged)/apps_raw/edit/[...path]/+page.svelte index f80879bcf1..9cb73b7555 100644 --- a/frontend/src/routes/(root)/(logged)/apps_raw/edit/[...path]/+page.svelte +++ b/frontend/src/routes/(root)/(logged)/apps_raw/edit/[...path]/+page.svelte @@ -231,10 +231,10 @@ newPath = event.detail }} on:restore={onRestore} - initFiles={files} - initRunnables={runnables} - initData={data} - {summary} + bind:files + bind:runnables + bind:data + bind:summary {newPath} path={page.params.path ?? ''} {policy}