From bdafdd59e03aaec7bc12f995b906d7f1f8197e34 Mon Sep 17 00:00:00 2001
From: centdix <40307056+centdix@users.noreply.github.com>
Date: Thu, 15 Jan 2026 11:12:28 +0100
Subject: [PATCH] feat(flow): add diff viewer in deployment history (#7575)
---
frontend/src/lib/components/DiffDrawer.svelte | 37 ++----
frontend/src/lib/components/DiffEditor.svelte | 1 -
.../src/lib/components/FlowDiffViewer.svelte | 44 +++++++
frontend/src/lib/components/FlowViewer.svelte | 123 +++++++++++++++++-
.../components/flows/FlowHistoryInner.svelte | 22 +++-
.../flows/header/FlowImportExportMenu.svelte | 2 +-
6 files changed, 190 insertions(+), 39 deletions(-)
create mode 100644 frontend/src/lib/components/FlowDiffViewer.svelte
diff --git a/frontend/src/lib/components/DiffDrawer.svelte b/frontend/src/lib/components/DiffDrawer.svelte
index 085fba9a35..0f89cfc3dd 100644
--- a/frontend/src/lib/components/DiffDrawer.svelte
+++ b/frontend/src/lib/components/DiffDrawer.svelte
@@ -20,7 +20,6 @@
}
let diffType: 'draft' | 'deployed' | 'custom' | undefined = $state(undefined)
- let flowdiffMode: 'yaml' | 'graph' = $state('yaml')
let contentType = $derived.by(() => {
if (!data || !diffType) return undefined
@@ -232,34 +231,14 @@
{/await}
{:else if contentType === 'metadata'}
{#if isFlow}
-
-
-
-
- {#if flowdiffMode === 'yaml'}
- {#await import('$lib/components/DiffEditor.svelte')}
-
- {:then Module}
-
- {/await}
- {:else if flowdiffMode === 'graph'}
- {#await import('$lib/components/FlowGraphDiffViewer.svelte')}
-
- {:then Module}
-
- {/await}
- {/if}
+ {#await import('$lib/components/FlowDiffViewer.svelte')}
+
+ {:then Module}
+
+ {/await}
{:else}
{#await import('$lib/components/DiffEditor.svelte')}
diff --git a/frontend/src/lib/components/DiffEditor.svelte b/frontend/src/lib/components/DiffEditor.svelte
index 0cd7664fae..11491d2191 100644
--- a/frontend/src/lib/components/DiffEditor.svelte
+++ b/frontend/src/lib/components/DiffEditor.svelte
@@ -106,7 +106,6 @@
})
}
- console.log('defaultModified', defaultModified)
if (defaultLang !== undefined) {
setupModel(defaultLang, defaultOriginal, defaultModified, defaultModifiedLang)
}
diff --git a/frontend/src/lib/components/FlowDiffViewer.svelte b/frontend/src/lib/components/FlowDiffViewer.svelte
new file mode 100644
index 0000000000..86fc002795
--- /dev/null
+++ b/frontend/src/lib/components/FlowDiffViewer.svelte
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+ {#if diffMode === 'yaml'}
+ {#await import('$lib/components/DiffEditor.svelte')}
+
+ {:then Module}
+
+ {/await}
+ {:else}
+ {#await import('$lib/components/FlowGraphDiffViewer.svelte')}
+
+ {:then Module}
+
+ {/await}
+ {/if}
+
+
diff --git a/frontend/src/lib/components/FlowViewer.svelte b/frontend/src/lib/components/FlowViewer.svelte
index 01e394d3c7..8a78637519 100644
--- a/frontend/src/lib/components/FlowViewer.svelte
+++ b/frontend/src/lib/components/FlowViewer.svelte
@@ -1,13 +1,26 @@
+ {#if availableVersions && availableVersions.length > 0}
+
+ {/if}
{#if !noGraph}
{/if}
@@ -49,6 +136,34 @@
{#snippet content()}
+ {#if availableVersions && availableVersions.length > 0}
+
+
+
+
Compare with:
+
+
+
+ {#if previousFlowYaml}
+
+ {#await import('$lib/components/FlowDiffViewer.svelte')}
+
+ {:then Module}
+
+ {/await}
+
+ {:else}
+
+ {/if}
+
+
+ {/if}
{#if !noSummary}
diff --git a/frontend/src/lib/components/flows/FlowHistoryInner.svelte b/frontend/src/lib/components/flows/FlowHistoryInner.svelte
index c378105499..10415c970b 100644
--- a/frontend/src/lib/components/flows/FlowHistoryInner.svelte
+++ b/frontend/src/lib/components/flows/FlowHistoryInner.svelte
@@ -1,5 +1,5 @@
@@ -89,7 +95,7 @@
{#if !loading}
{#if versions.length > 0}
- {#each versions ?? [] as version}
+ {#each versions ?? [] as version (version.id)}
{
+ const versionIndex = versions.findIndex((v) => v.id === version.id)
selectedVersion = version
+ selectedVersionIndex = versionIndex
+ deploymentMsgUpdate = undefined
+ deploymentMsgUpdateMode = false
}}
>
@@ -208,7 +218,11 @@
{#await import('$lib/components/FlowViewer.svelte')}
{:then Module}
-
+
{/await}
{:else}
diff --git a/frontend/src/lib/components/flows/header/FlowImportExportMenu.svelte b/frontend/src/lib/components/flows/header/FlowImportExportMenu.svelte
index 657ce22fcd..b8b382f01f 100644
--- a/frontend/src/lib/components/flows/header/FlowImportExportMenu.svelte
+++ b/frontend/src/lib/components/flows/header/FlowImportExportMenu.svelte
@@ -20,7 +20,7 @@
drawer?.toggleDrawer()}>
{#if flow}
-
+
{/if}