From 8a05c7a8aa08f48589b29a1c7bdc16554329e232 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Tue, 15 Sep 2026 14:23:39 +0200 Subject: [PATCH] fix: the deploy-override diff takes an opening its editor can hand back Co-Authored-By: Claude Opus 5 (1M context) --- .../src/lib/components/FlowBuilder.svelte | 1 + .../src/lib/components/ScriptBuilder.svelte | 1 + .../apps/editor/AppEditorHeader.svelte | 1 + .../DeployOverrideConfirmationModal.svelte | 34 ++++++++++++------- .../raw_apps/RawAppEditorHeader.svelte | 1 + 5 files changed, 26 insertions(+), 12 deletions(-) diff --git a/frontend/src/lib/components/FlowBuilder.svelte b/frontend/src/lib/components/FlowBuilder.svelte index c6c4c7af8e..f35aa51718 100644 --- a/frontend/src/lib/components/FlowBuilder.svelte +++ b/frontend/src/lib/components/FlowBuilder.svelte @@ -1463,6 +1463,7 @@ {confirmCallback} bind:open {diffDrawer} + claimOpening={() => (lastOpening = diffDrawer?.beginOpening())} bind:deployedValue currentValue={flowStore.val} /> diff --git a/frontend/src/lib/components/ScriptBuilder.svelte b/frontend/src/lib/components/ScriptBuilder.svelte index 1cfb0cd6a1..877dfdf859 100644 --- a/frontend/src/lib/components/ScriptBuilder.svelte +++ b/frontend/src/lib/components/ScriptBuilder.svelte @@ -1247,6 +1247,7 @@ {confirmCallback} bind:open {diffDrawer} + claimOpening={() => (lastOpening = diffDrawer?.beginOpening())} bind:deployedValue currentValue={script} /> diff --git a/frontend/src/lib/components/apps/editor/AppEditorHeader.svelte b/frontend/src/lib/components/apps/editor/AppEditorHeader.svelte index 1085fc06e8..497df93496 100644 --- a/frontend/src/lib/components/apps/editor/AppEditorHeader.svelte +++ b/frontend/src/lib/components/apps/editor/AppEditorHeader.svelte @@ -742,6 +742,7 @@ {confirmCallback} bind:open {diffDrawer} + claimOpening={() => (lastOpening = diffDrawer?.beginOpening())} bind:deployedValue currentValue={{ summary: $summary, diff --git a/frontend/src/lib/components/common/confirmationModal/DeployOverrideConfirmationModal.svelte b/frontend/src/lib/components/common/confirmationModal/DeployOverrideConfirmationModal.svelte index 8d41fff902..6555e2424b 100644 --- a/frontend/src/lib/components/common/confirmationModal/DeployOverrideConfirmationModal.svelte +++ b/frontend/src/lib/components/common/confirmationModal/DeployOverrideConfirmationModal.svelte @@ -11,6 +11,11 @@ confirmCallback: () => void deployedBy?: string | undefined open?: boolean + /** Takes a drawer opening on the host editor's behalf, so the diff below is one the + * editor can take back down. Override anyway deploys that editor's content: without + * this the drawer would outlive it (a relocation remounts the editor) and deploy it + * at a path it has left. Omit where the host cannot be remounted under the drawer. */ + claimOpening?: () => number | undefined } let { @@ -19,7 +24,8 @@ diffDrawer = undefined, confirmCallback, deployedBy = undefined, - open = $bindable(false) + open = $bindable(false), + claimOpening = undefined }: Props = $props() @@ -44,17 +50,21 @@ return } open = false - diffDrawer?.openDrawer() - diffDrawer?.setDiff({ - mode: 'simple', - original: deployedValue, - current: currentValue, - title: 'Deployed <> Current', - button: { - text: 'Override anyway', - onClick: () => confirmCallback() - } - }) + const opening = claimOpening?.() + diffDrawer?.openDrawer(opening) + diffDrawer?.setDiff( + { + mode: 'simple', + original: deployedValue, + current: currentValue, + title: 'Deployed <> Current', + button: { + text: 'Override anyway', + onClick: () => confirmCallback() + } + }, + opening + ) }} >Show diff diff --git a/frontend/src/lib/components/raw_apps/RawAppEditorHeader.svelte b/frontend/src/lib/components/raw_apps/RawAppEditorHeader.svelte index 58c13fd88c..bd5923116b 100644 --- a/frontend/src/lib/components/raw_apps/RawAppEditorHeader.svelte +++ b/frontend/src/lib/components/raw_apps/RawAppEditorHeader.svelte @@ -691,6 +691,7 @@ {confirmCallback} bind:open {diffDrawer} + claimOpening={() => (lastOpening = diffDrawer?.beginOpening())} bind:deployedValue currentValue={currentDiffValue} />