From 48cffa17ec3f2d72192dec517a763e29dc6bb705 Mon Sep 17 00:00:00 2001 From: Diego Imbert Date: Wed, 25 Mar 2026 18:01:26 +0100 Subject: [PATCH] feat: add datatable schema diff section to merge UI Co-Authored-By: Claude Opus 4.5 --- .../lib/components/DatatableSchemaDiff.svelte | 319 ++++++++++++++++++ .../(logged)/forks/compare/+page.svelte | 37 +- 2 files changed, 336 insertions(+), 20 deletions(-) create mode 100644 frontend/src/lib/components/DatatableSchemaDiff.svelte diff --git a/frontend/src/lib/components/DatatableSchemaDiff.svelte b/frontend/src/lib/components/DatatableSchemaDiff.svelte new file mode 100644 index 0000000000..8cfe81a774 --- /dev/null +++ b/frontend/src/lib/components/DatatableSchemaDiff.svelte @@ -0,0 +1,319 @@ + + + + +{#if loading} +
+ Loading datatable diffs... +
+{:else if error} +
Failed to load datatable diffs: {error}
+{:else if diffs.length > 0} +
+

Datatable schema changes

+ {#each diffs as diff} +
+ + + {#if expandedDatatables.has(diff.datatableName)} +
+ {#if diff.aheadChanges.length > 0} +
+
Fork changes (ahead)
+ {#each diff.aheadChanges as change} +
+ {#if change.kind === 'added'} + + {:else if change.kind === 'removed'} + + {:else} + + {/if} + {change.schemaName}. + {change.tableName} + {operationSummary(change)} +
+ {/each} +
+ {/if} + {#if diff.behindChanges.length > 0} +
+
+ Parent changes (behind) +
+ {#each diff.behindChanges as change} +
+ {#if change.kind === 'added'} + + {:else if change.kind === 'removed'} + + {:else} + + {/if} + {change.schemaName}. + {change.tableName} + {operationSummary(change)} +
+ {/each} +
+ {/if} +
+ {/if} +
+ {/each} +
+{/if} diff --git a/frontend/src/routes/(root)/(logged)/forks/compare/+page.svelte b/frontend/src/routes/(root)/(logged)/forks/compare/+page.svelte index 4e729e5ac6..408c72576f 100644 --- a/frontend/src/routes/(root)/(logged)/forks/compare/+page.svelte +++ b/frontend/src/routes/(root)/(logged)/forks/compare/+page.svelte @@ -1,20 +1,24 @@ - - + + {#if currentWorkspaceId && parentWorkspaceId} @@ -66,7 +62,8 @@ - + + {/if} {#if !currentWorkspaceId} No workspace selected