From 95ed3c5c929e7f9632edb92f67370901f162a3d9 Mon Sep 17 00:00:00 2001 From: Csaba Tuncsik Date: Wed, 6 Aug 2025 18:53:35 +0200 Subject: [PATCH] fix(editor): Improve workflow diff components (#18018) --- .../design-system/src/css/_tokens.dark.scss | 11 ++ .../@n8n/design-system/src/css/_tokens.scss | 11 ++ .../src/features/workflow-diff/NodeDiff.vue | 114 +++++++++++++++++- .../workflow-diff/WorkflowDiffAside.vue | 22 ++-- .../workflow-diff/WorkflowDiffModal.vue | 48 +++----- 5 files changed, 166 insertions(+), 40 deletions(-) diff --git a/packages/frontend/@n8n/design-system/src/css/_tokens.dark.scss b/packages/frontend/@n8n/design-system/src/css/_tokens.dark.scss index da09d1528a..6321beaa3c 100644 --- a/packages/frontend/@n8n/design-system/src/css/_tokens.dark.scss +++ b/packages/frontend/@n8n/design-system/src/css/_tokens.dark.scss @@ -4,6 +4,17 @@ // Primary tokens --color-danger: var(--prim-color-alt-k); + // Diff colors (dark theme overrides) + --diff-new: #38cb7a; + --diff-new-light: #43674f; + --diff-new-faint: #3a463e; + --diff-modified: #d6a625; + --diff-modified-light: #6a5c38; + --diff-modified-faint: #464236; + --diff-del: #fb887a; + --diff-del-light: #7a524e; + --diff-del-faint: #4d3e3d; + // Text --color-text-dark: var(--prim-gray-40); --color-text-base: var(--prim-gray-200); diff --git a/packages/frontend/@n8n/design-system/src/css/_tokens.scss b/packages/frontend/@n8n/design-system/src/css/_tokens.scss index 9733095368..ca6f941527 100644 --- a/packages/frontend/@n8n/design-system/src/css/_tokens.scss +++ b/packages/frontend/@n8n/design-system/src/css/_tokens.scss @@ -42,6 +42,17 @@ --color-danger-tint-1: var(--prim-color-alt-c-tint-400); --color-danger-tint-2: var(--prim-color-alt-c-tint-450); + // Diff colors + --diff-new: #0eab54; + --diff-new-light: #b4efc4; + --diff-new-faint: #ddfbe7; + --diff-modified: #bf941f; + --diff-modified-light: #f3dca1; + --diff-modified-faint: #fbf1d4; + --diff-del: #f51f32; + --diff-del-light: #fad3d0; + --diff-del-faint: #ffedec; + // Text --color-text-dark: var(--prim-gray-740); --color-text-base: var(--prim-gray-540); diff --git a/packages/frontend/editor-ui/src/features/workflow-diff/NodeDiff.vue b/packages/frontend/editor-ui/src/features/workflow-diff/NodeDiff.vue index 17dc0d272e..4b86c5ce26 100644 --- a/packages/frontend/editor-ui/src/features/workflow-diff/NodeDiff.vue +++ b/packages/frontend/editor-ui/src/features/workflow-diff/NodeDiff.vue @@ -24,11 +24,123 @@ const props = withDefaults( - diff --git a/packages/frontend/editor-ui/src/features/workflow-diff/WorkflowDiffAside.vue b/packages/frontend/editor-ui/src/features/workflow-diff/WorkflowDiffAside.vue index 66e9ba1552..5771758277 100644 --- a/packages/frontend/editor-ui/src/features/workflow-diff/WorkflowDiffAside.vue +++ b/packages/frontend/editor-ui/src/features/workflow-diff/WorkflowDiffAside.vue @@ -21,9 +21,6 @@ function onResize({ width }: { width: number }) { } const outputFormat = ref<'side-by-side' | 'line-by-line'>('line-by-line'); -function toggleOutputFormat() { - outputFormat.value = outputFormat.value === 'line-by-line' ? 'side-by-side' : 'line-by-line'; -} const emit = defineEmits<{ close: []; @@ -44,22 +41,22 @@ const emit = defineEmits<{ style="display: flex; flex-direction: row; align-items: center; gap: 8px; padding: 12px 10px" > - + {{ node.name }} - - + - diff --git a/packages/frontend/editor-ui/src/features/workflow-diff/WorkflowDiffModal.vue b/packages/frontend/editor-ui/src/features/workflow-diff/WorkflowDiffModal.vue index 8c9fde739a..5d3b289883 100644 --- a/packages/frontend/editor-ui/src/features/workflow-diff/WorkflowDiffModal.vue +++ b/packages/frontend/editor-ui/src/features/workflow-diff/WorkflowDiffModal.vue @@ -399,7 +399,7 @@ const modifiers = [ > - {{ change.node.name }} + {{ change.node.name }}
    @@ -407,7 +407,7 @@ const modifiers = [
    -
    +
      - {{ change[1].connection.source?.name }} + {{ + change[1].connection.source?.name + }}
      - {{ change[1].connection.target?.name }} + {{ + change[1].connection.target?.name + }}
    @@ -588,32 +592,7 @@ const modifiers = [