From 270aa2a49a8a42f02bfeea087edf53ccacb4c4d0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 21 Aug 2026 18:26:31 +0000 Subject: [PATCH 01/12] chore(docs): refresh contributor activity --- docs/data/contributors.json | 102 +++++++++++++++++++++--------------- 1 file changed, 60 insertions(+), 42 deletions(-) diff --git a/docs/data/contributors.json b/docs/data/contributors.json index 32301a6aea..58d0e44460 100644 --- a/docs/data/contributors.json +++ b/docs/data/contributors.json @@ -1,13 +1,13 @@ { "repository": "t8y2/dbx", - "generatedAt": "2026-08-20T18:34:34.172Z", - "stars": 16032, + "generatedAt": "2026-08-21T18:26:30.944Z", + "stars": 16188, "contributors": [ { "login": "t8y2", "avatarUrl": "https://avatars.githubusercontent.com/u/77960507?v=4", "profileUrl": "https://github.com/t8y2", - "commits": 3119, + "commits": 3134, "mergedPullRequests": 17, "firstContributionAt": "2026-04-30T08:14:51Z", "latestContributionAt": "2026-08-18T04:05:42Z" @@ -16,28 +16,28 @@ "login": "zipg", "avatarUrl": "https://avatars.githubusercontent.com/u/4047349?v=4", "profileUrl": "https://github.com/zipg", - "commits": 575, - "mergedPullRequests": 575, + "commits": 584, + "mergedPullRequests": 584, "firstContributionAt": "2026-06-22T06:10:59Z", - "latestContributionAt": "2026-08-20T13:38:21Z" + "latestContributionAt": "2026-08-21T11:57:22Z" }, { "login": "eryajf", "avatarUrl": "https://avatars.githubusercontent.com/u/33259379?v=4", "profileUrl": "https://github.com/eryajf", - "commits": 160, - "mergedPullRequests": 159, + "commits": 161, + "mergedPullRequests": 160, "firstContributionAt": "2026-06-08T11:45:45Z", - "latestContributionAt": "2026-08-20T17:15:46Z" + "latestContributionAt": "2026-08-21T04:20:58Z" }, { "login": "Abeautifulsnow", "avatarUrl": "https://avatars.githubusercontent.com/u/28704977?v=4", "profileUrl": "https://github.com/Abeautifulsnow", - "commits": 96, - "mergedPullRequests": 84, + "commits": 97, + "mergedPullRequests": 85, "firstContributionAt": "2026-05-06T03:16:57Z", - "latestContributionAt": "2026-08-19T07:49:15Z" + "latestContributionAt": "2026-08-21T02:36:18Z" }, { "login": "q396921921", @@ -61,10 +61,10 @@ "login": "onenewcode", "avatarUrl": "https://avatars.githubusercontent.com/u/94808747?v=4", "profileUrl": "https://github.com/onenewcode", - "commits": 60, - "mergedPullRequests": 60, + "commits": 61, + "mergedPullRequests": 61, "firstContributionAt": "2026-06-30T01:53:31Z", - "latestContributionAt": "2026-08-20T10:25:12Z" + "latestContributionAt": "2026-08-21T10:19:48Z" }, { "login": "serenez", @@ -147,6 +147,15 @@ "firstContributionAt": "2026-05-02T07:44:05Z", "latestContributionAt": "2026-05-29T05:31:32Z" }, + { + "login": "0verme", + "avatarUrl": "https://avatars.githubusercontent.com/u/24986278?v=4", + "profileUrl": "https://github.com/0verme", + "commits": 22, + "mergedPullRequests": 22, + "firstContributionAt": "2026-08-15T15:33:44Z", + "latestContributionAt": "2026-08-21T04:20:20Z" + }, { "login": "LwClick", "avatarUrl": "https://avatars.githubusercontent.com/u/38545827?v=4", @@ -165,15 +174,6 @@ "firstContributionAt": "2026-06-09T08:33:11Z", "latestContributionAt": "2026-08-13T03:40:23Z" }, - { - "login": "0verme", - "avatarUrl": "https://avatars.githubusercontent.com/u/24986278?v=4", - "profileUrl": "https://github.com/0verme", - "commits": 19, - "mergedPullRequests": 19, - "firstContributionAt": "2026-08-15T15:33:44Z", - "latestContributionAt": "2026-08-20T12:42:46Z" - }, { "login": "yavon007", "avatarUrl": "https://avatars.githubusercontent.com/u/27227092?v=4", @@ -669,6 +669,15 @@ "firstContributionAt": "2026-08-15T02:08:13Z", "latestContributionAt": "2026-08-16T07:33:49Z" }, + { + "login": "encyc", + "avatarUrl": "https://avatars.githubusercontent.com/u/62669951?v=4", + "profileUrl": "https://github.com/encyc", + "commits": 3, + "mergedPullRequests": 3, + "firstContributionAt": "2026-07-29T06:54:05Z", + "latestContributionAt": "2026-08-21T10:38:54Z" + }, { "login": "fengyuwusong", "avatarUrl": "https://avatars.githubusercontent.com/u/16892891?v=4", @@ -750,6 +759,15 @@ "firstContributionAt": "2026-08-18T10:01:35Z", "latestContributionAt": "2026-08-20T13:01:23Z" }, + { + "login": "sxhjlzl", + "avatarUrl": "https://avatars.githubusercontent.com/u/12149913?v=4", + "profileUrl": "https://github.com/sxhjlzl", + "commits": 3, + "mergedPullRequests": 3, + "firstContributionAt": "2026-08-19T03:31:47Z", + "latestContributionAt": "2026-08-21T05:03:15Z" + }, { "login": "vergil-lai", "avatarUrl": "https://avatars.githubusercontent.com/u/2268937?v=4", @@ -840,15 +858,6 @@ "firstContributionAt": "2026-06-10T08:32:55Z", "latestContributionAt": "2026-06-11T09:29:40Z" }, - { - "login": "encyc", - "avatarUrl": "https://avatars.githubusercontent.com/u/62669951?v=4", - "profileUrl": "https://github.com/encyc", - "commits": 2, - "mergedPullRequests": 2, - "firstContributionAt": "2026-07-29T06:54:05Z", - "latestContributionAt": "2026-07-31T06:38:50Z" - }, { "login": "gadfly3173", "avatarUrl": "https://avatars.githubusercontent.com/u/28685179?v=4", @@ -1002,15 +1011,6 @@ "firstContributionAt": "2026-07-13T10:58:52Z", "latestContributionAt": "2026-08-09T15:33:24Z" }, - { - "login": "sxhjlzl", - "avatarUrl": "https://avatars.githubusercontent.com/u/12149913?v=4", - "profileUrl": "https://github.com/sxhjlzl", - "commits": 2, - "mergedPullRequests": 2, - "firstContributionAt": "2026-08-19T03:31:47Z", - "latestContributionAt": "2026-08-20T14:12:53Z" - }, { "login": "TangTangH", "avatarUrl": "https://avatars.githubusercontent.com/u/31877158?v=4", @@ -1281,6 +1281,15 @@ "firstContributionAt": "2026-07-08T09:14:47Z", "latestContributionAt": "2026-07-08T10:53:49Z" }, + { + "login": "duminga", + "avatarUrl": "https://avatars.githubusercontent.com/u/91080718?v=4", + "profileUrl": "https://github.com/duminga", + "commits": 1, + "mergedPullRequests": 1, + "firstContributionAt": "2026-08-20T17:21:17Z", + "latestContributionAt": "2026-08-21T04:21:38Z" + }, { "login": "easton-shi", "avatarUrl": "https://avatars.githubusercontent.com/u/215789663?v=4", @@ -1704,6 +1713,15 @@ "firstContributionAt": "2026-06-12T03:18:32Z", "latestContributionAt": "2026-06-12T03:30:03Z" }, + { + "login": "tatuke", + "avatarUrl": "https://avatars.githubusercontent.com/u/46305821?v=4", + "profileUrl": "https://github.com/tatuke", + "commits": 1, + "mergedPullRequests": 1, + "firstContributionAt": "2026-08-21T08:02:23Z", + "latestContributionAt": "2026-08-21T10:12:40Z" + }, { "login": "Tssshhhh", "avatarUrl": "https://avatars.githubusercontent.com/u/109692520?v=4", From 9d8050cd368a0d4603d48d6666273f29f2b01351 Mon Sep 17 00:00:00 2001 From: zhangyc Date: Sat, 22 Aug 2026 15:28:08 +0800 Subject: [PATCH 02/12] feat(schema-diff): select nested structure changes --- .../components/diff/SchemaDiffDeployStep.vue | 24 +- .../src/components/diff/SchemaDiffDialog.vue | 135 +++--- .../components/diff/SchemaDiffObjectTree.vue | 209 ++++----- .../__tests__/SchemaDiffObjectTree.spec.ts | 69 +++ apps/desktop/src/i18n/locales/en.ts | 1 + apps/desktop/src/i18n/locales/es.ts | 1 + apps/desktop/src/i18n/locales/it.ts | 1 + apps/desktop/src/i18n/locales/ja.ts | 1 + apps/desktop/src/i18n/locales/ko.ts | 1 + apps/desktop/src/i18n/locales/pt-BR.ts | 1 + apps/desktop/src/i18n/locales/zh-CN.ts | 1 + apps/desktop/src/i18n/locales/zh-TW.ts | 1 + apps/desktop/src/lib/backend/api.ts | 1 + apps/desktop/src/lib/backend/http.ts | 9 +- apps/desktop/src/lib/backend/tauri.ts | 9 +- apps/desktop/src/lib/schema/schemaDiff.ts | 407 ++++++++++++++---- crates/dbx-core/src/schema_diff.rs | 92 ++++ crates/dbx-web/src/main.rs | 1 + crates/dbx-web/src/routes/schema_diff.rs | 19 + packages/app-tests/schemaDiff.test.ts | 135 +++++- src-tauri/src/commands/schema_diff.rs | 30 ++ src-tauri/src/lib.rs | 1 + 22 files changed, 866 insertions(+), 283 deletions(-) create mode 100644 apps/desktop/src/components/diff/__tests__/SchemaDiffObjectTree.spec.ts diff --git a/apps/desktop/src/components/diff/SchemaDiffDeployStep.vue b/apps/desktop/src/components/diff/SchemaDiffDeployStep.vue index 69cdd7635c..fee4af85f4 100644 --- a/apps/desktop/src/components/diff/SchemaDiffDeployStep.vue +++ b/apps/desktop/src/components/diff/SchemaDiffDeployStep.vue @@ -9,7 +9,20 @@ import { useTheme } from "@/composables/useTheme"; import { loadEditorTheme, editorFontTheme } from "@/lib/editor/editorThemes"; import { createDbxCodeMirrorSqlDialect } from "@/lib/editor/codemirrorSqlDialect"; import { Splitpanes, Pane } from "splitpanes"; -import { schemaDiffReviewAlert, selectedSchemaDiffObjects, summarizeSchemaDiffOperations, type SchemaDiffObject, type DiffOperationType, type DiffObjectKind, type CompatibilityWarning, type RenameCandidate, type MissingRollbackObject, type RollbackCompleteness } from "@/lib/schema/schemaDiff"; +import { + schemaDiffObjectSelectionState, + schemaDiffReviewAlert, + schemaDiffSelectionTargets, + selectedSchemaDiffObjects, + summarizeSchemaDiffOperations, + type SchemaDiffObject, + type DiffOperationType, + type DiffObjectKind, + type CompatibilityWarning, + type RenameCandidate, + type MissingRollbackObject, + type RollbackCompleteness, +} from "@/lib/schema/schemaDiff"; import ImpactReportPanel from "@/components/diff/ImpactReportPanel.vue"; import type { ImpactReport } from "@/types/governance"; import { ArrowLeft, Copy, Download, Play, Loader2, PlusCircle, XCircle, ArrowRightLeft, Table, Eye, FunctionSquare, ListOrdered, ScrollText, UserCog, Columns3, ListTree, Link2, Zap, AlertTriangle, ShieldCheck } from "@lucide/vue"; @@ -54,13 +67,13 @@ const objectPositions = computed(() => { const positions = new Map(); const sql = props.deploySql; for (const obj of topLevelObjects.value) { - const patterns = [`-- Create ${obj.objectKind}: ${obj.name}`, `-- Modify ${obj.objectKind}: ${obj.name}`, `-- Drop ${obj.objectKind}: ${obj.name}`]; + const patterns = [`-- Create ${obj.objectKind}: ${obj.name}`, `-- Alter ${obj.objectKind}: ${obj.name}`, `-- Modify ${obj.objectKind}: ${obj.name}`, `-- Drop ${obj.objectKind}: ${obj.name}`]; for (const pattern of patterns) { const index = sql.indexOf(pattern); if (index !== -1) { let endPos = sql.length; const remaining = sql.slice(index + pattern.length); - const nextMatch = remaining.match(/--\s*(Create|Modify|Drop)\s+\w+:/); + const nextMatch = remaining.match(/--\s*(Create|Alter|Modify|Drop)\s+\w+:/); if (nextMatch && nextMatch.index !== undefined) { endPos = index + pattern.length + nextMatch.index; } @@ -90,8 +103,8 @@ const topLevelObjects = computed(() => { const operationOrder: Record = { create: 0, modify: 1, delete: 2, none: 3 }; return props.selectedObjects .filter((o) => { - const isTopLevel = !o.id.startsWith("col-") && !o.id.startsWith("idx-") && !o.id.startsWith("fk-") && !o.id.startsWith("trg-"); - return o.selected && o.operationType !== "none" && isTopLevel; + const state = schemaDiffObjectSelectionState(o); + return o.operationType !== "none" && (state.checked || state.indeterminate); }) .sort((a, b) => operationOrder[a.operationType] - operationOrder[b.operationType]); }); @@ -338,6 +351,7 @@ function getObjectIconColor(kind: DiffObjectKind): string { {{ obj.name }} + {{ schemaDiffSelectionTargets(obj).filter((child) => child.selected).length }}/{{ schemaDiffSelectionTargets(obj).length }} {{ getOperationLabel(obj.operationType) }} diff --git a/apps/desktop/src/components/diff/SchemaDiffDialog.vue b/apps/desktop/src/components/diff/SchemaDiffDialog.vue index dbdf8fd75a..b6a0158e07 100644 --- a/apps/desktop/src/components/diff/SchemaDiffDialog.vue +++ b/apps/desktop/src/components/diff/SchemaDiffDialog.vue @@ -22,24 +22,26 @@ import { createConcurrencyLimiter, mapWithConcurrency, schemaDiffMetadataConcurr import { createSchemaDiffTableListLoader, type SchemaDiffTableIdentity } from "@/lib/schema/schemaDiffTableList"; import { normalizeSchemaDiffCompareOptions } from "@/types/schemaDiff"; import type { SchemaDiffCompareOptions, SchemaDiffConfig, FieldMappingEntry } from "@/types/schemaDiff"; -import type { ObjectSourceKind, TableInfo } from "@/types/database"; +import type { DatabaseType, ObjectSourceKind, TableInfo } from "@/types/database"; import { - buildDeploySqlForObjects, convertToSchemaDiffObjects, detectDestructiveSchemaDiffStatements, groupDiffObjects, injectColumnRenameSql, schemaDiffDeployTargetSchema, - schemaDiffSelectionOwnerId, + findSchemaDiffObject, + flattenSchemaDiffObjects, + schemaDiffSelectionTargets, + selectSchemaDiffInput, selectedSchemaDiffObjects, setSchemaDiffObjectSelected, + setSchemaDiffObjectSelectedWithDependencies, summarizeSchemaDiffOperations, databaseTypeToDialectKind, normalizeDialectKind, type OperationGroup, type SchemaDiffObject, type DiffOperationType, - type DiffObjectKind, type SchemaDiffPreparation, type MissingRollbackObject, type RollbackCompleteness, @@ -253,15 +255,16 @@ const selectedObject = computed(() => { if (!selectedObjectId.value) return null; for (const group of diffGroups.value) { for (const typeGroup of group.typeGroups) { - const obj = typeGroup.objects.find((o) => o.id === selectedObjectId.value); - if (obj) return obj; + const object = flattenSchemaDiffObjects(typeGroup.objects).find((candidate) => candidate.id === selectedObjectId.value); + if (!object) continue; + return object.parentId ? (findSchemaDiffObject(diffObjects.value, object.parentId) ?? object) : object; } } return null; }); const canDeploy = computed(() => { - return diffObjects.value.some((o) => o.selected && o.operationType !== "none"); + return selectedSchemaDiffObjects(diffObjects.value).length > 0; }); // Watch for prefilled values @@ -308,7 +311,7 @@ watch( }, ); -function getDbType(): string { +function getDbType(): DatabaseType { const targetConfig = store.getConfig(targetConnectionId.value); return targetConfig?.db_type || "postgres"; } @@ -528,7 +531,7 @@ async function handleCompare() { } } deploySqlMode.value = "forward"; - regenerateDeploySql(); + await regenerateDeploySql(); step.value = "result"; } catch (e: any) { @@ -543,39 +546,29 @@ function handleToggleGroup(operationType: DiffOperationType) { diffGroups.value = diffGroups.value.map((g) => (g.operationType === operationType ? { ...g, expanded: !g.expanded } : g)); } -function handleToggleTypeGroup(operationType: DiffOperationType, kind: DiffObjectKind) { - diffGroups.value = diffGroups.value.map((g) => { - if (g.operationType !== operationType) return g; - return { - ...g, - typeGroups: g.typeGroups.map((tg) => (tg.kind === kind ? { ...tg, expanded: !tg.expanded } : tg)), - }; - }); -} - function handleToggleGroupSelection(operationType: DiffOperationType, selected: boolean) { const group = diffGroups.value.find((candidate) => candidate.operationType === operationType); for (const object of group?.typeGroups.flatMap((typeGroup) => typeGroup.objects) ?? []) { - setSchemaDiffObjectSelected(diffObjects.value, schemaDiffSelectionOwnerId(object), selected); + for (const target of schemaDiffSelectionTargets(object)) { + updateObjectSelection(target.id, selected); + } } rebuildDiffGroups(); - regenerateDeploySql(); + void regenerateDeploySql(); } -function handleToggleTypeSelection(operationType: DiffOperationType, kind: DiffObjectKind, selected: boolean) { - const typeGroup = diffGroups.value.find((group) => group.operationType === operationType)?.typeGroups.find((candidate) => candidate.kind === kind); - for (const object of typeGroup?.objects ?? []) { - setSchemaDiffObjectSelected(diffObjects.value, schemaDiffSelectionOwnerId(object), selected); +function handleToggleObjectSelection(object: SchemaDiffObject, selected: boolean) { + let changed = false; + for (const target of schemaDiffSelectionTargets(object)) { + changed = updateObjectSelection(target.id, selected) || changed; } + if (!changed) return; rebuildDiffGroups(); - regenerateDeploySql(); + void regenerateDeploySql(); } -function handleToggleObjectSelection(objectId: string, selected: boolean) { - const reviewObject = diffGroups.value.flatMap((group) => group.typeGroups.flatMap((typeGroup) => typeGroup.objects)).find((object) => object.id === objectId); - if (!setSchemaDiffObjectSelected(diffObjects.value, reviewObject ? schemaDiffSelectionOwnerId(reviewObject) : objectId, selected)) return; - rebuildDiffGroups(); - regenerateDeploySql(); +function updateObjectSelection(objectId: string, selected: boolean): boolean { + return lastDiffResult.value ? setSchemaDiffObjectSelectedWithDependencies(diffObjects.value, lastDiffResult.value, objectId, selected) : setSchemaDiffObjectSelected(diffObjects.value, objectId, selected); } function rebuildDiffGroups() { @@ -591,8 +584,45 @@ function rebuildDiffGroups() { })); } -function regenerateDeploySql() { - deploySql.value = buildDeploySqlForObjects(diffObjects.value); +let deploySqlGeneration = 0; + +async function regenerateDeploySql() { + const result = lastDiffResult.value; + if (!result) { + deploySql.value = "-- No objects selected"; + rollbackSql.value = ""; + return; + } + + const generation = ++deploySqlGeneration; + const options = normalizeSchemaDiffCompareOptions(activeConfig.value?.options, getDbType()); + const input = selectSchemaDiffInput(result, diffObjects.value); + let plan; + try { + plan = await api.generateSchemaSyncPlan(input, { + databaseType: getDbType(), + targetSchema: schemaDiffDeployTargetSchema(getDbType(), targetDatabase.value, targetSchema.value), + cascadeDelete: options.cascadeDelete, + sourceDialect: options.sourceDialect ? normalizeDialectKind(options.sourceDialect) : sourceDbType.value ? databaseTypeToDialectKind(sourceDbType.value) : undefined, + fieldMappings: options.fieldMappings, + enableRollback: options.enableRollback, + }); + } catch (error: any) { + if (generation === deploySqlGeneration) toast(error?.message || String(error), 5000); + return; + } + if (generation !== deploySqlGeneration) return; + + let forwardSql = plan.syncSql || "-- No objects selected"; + let nextRollbackSql = plan.rollbackSyncSql ?? ""; + rollbackCompleteness.value = plan.rollbackCompleteness ?? "complete"; + missingRollbackObjects.value = plan.missingRollbackObjects ?? []; + if (options.detectRenames && options.renameThreshold) { + forwardSql = injectColumnRenameSql(forwardSql, input.diffs, options.renameThreshold); + if (nextRollbackSql) nextRollbackSql = injectColumnRenameSql(nextRollbackSql, input.diffs, options.renameThreshold, true); + } + rollbackSql.value = nextRollbackSql; + deploySql.value = deploySqlMode.value === "rollback" && nextRollbackSql ? nextRollbackSql : forwardSql; } function switchDeploySqlMode(mode: "forward" | "rollback") { @@ -604,7 +634,7 @@ function switchDeploySqlMode(mode: "forward" | "rollback") { if (mode === "rollback" && rollbackSql.value) { deploySql.value = rollbackSql.value; } else { - regenerateDeploySql(); + void regenerateDeploySql(); } } @@ -643,7 +673,8 @@ function applyRename(rc: RenameCandidate) { } } if (found) { - regenerateDeploySql(); + rebuildDiffGroups(); + void regenerateDeploySql(); toast(t("diff.renameApplied"), 2000); } } @@ -659,11 +690,12 @@ function ignoreRename(index: number) { } } renameCandidates.value.splice(index, 1); - regenerateDeploySql(); + rebuildDiffGroups(); + void regenerateDeploySql(); } async function handleExecuteScript() { - if (!deploySql.value || deploySql.value.startsWith("-- ")) { + if (!deploySql.value.trim() || deploySql.value.trim() === "-- No objects selected") { toast(t("diff.noObjectsSelected"), 3000); return; } @@ -706,8 +738,9 @@ function showDeployTxResult(txLog: any) { deployResult.value = buildDeployTxResult(txLog, t); showResultDialog.value = true; } -async function handleSelectObject(obj: SchemaDiffObject) { - selectedObjectId.value = obj.id; +async function handleSelectObject(reviewObject: SchemaDiffObject) { + selectedObjectId.value = reviewObject.id; + const obj = reviewObject.parentId ? (findSchemaDiffObject(diffObjects.value, reviewObject.parentId) ?? reviewObject) : reviewObject; // Dynamically fetch DDL for objects that don't have pre-generated DDL // (views need runtime retrieval; functions should already have definition) @@ -806,7 +839,7 @@ async function fetchDbVersion(connectionId: string, database: string, schema: st } function handleDeployReview() { - const selectedObjects = diffObjects.value.filter((o) => o.selected && o.operationType !== "none"); + const selectedObjects = selectedSchemaDiffObjects(diffObjects.value); if (selectedObjects.length === 0) { toast(t("diff.noObjectsSelected"), 3000); return; @@ -843,6 +876,13 @@ const deployStats = computed(() => { }; }); +const selectedCompatibilityWarnings = computed(() => { + if (!lastDiffResult.value) return []; + const input = selectSchemaDiffInput(lastDiffResult.value, diffObjects.value); + const selectedColumns = new Set(input.diffs.flatMap((diff) => (diff.columns ?? []).map((column) => `${diff.name}\u0000${column.name}`))); + return compatibilityWarnings.value.filter((warning) => selectedColumns.has(`${warning.table}\u0000${warning.column}`)); +}); + const targetConnectionInfo = computed(() => { const config = store.getConfig(targetConnectionId.value); if (!config) return null; @@ -959,16 +999,7 @@ const targetConnectionInfo = computed(() => {
- +
@@ -976,7 +1007,7 @@ const targetConnectionInfo = computed(() => { :selected-object="selectedObject" :deploy-sql="deploySql" :deploy-sql-all="deploySqlAll" - :compatibility-warnings="compatibilityWarnings" + :compatibility-warnings="selectedCompatibilityWarnings" :rollback-sql="rollbackSql" :deploy-sql-mode="deploySqlMode" :dependency-graph="dependencyGraph" @@ -1002,7 +1033,7 @@ const targetConnectionInfo = computed(() => { :executing="executing" :rollback-sql="rollbackSql" :deploy-sql-mode="deploySqlMode" - :compatibility-warnings="compatibilityWarnings" + :compatibility-warnings="selectedCompatibilityWarnings" :rename-candidates="renameCandidates" :rollback-completeness="rollbackCompleteness" :missing-rollback-objects="missingRollbackObjects" diff --git a/apps/desktop/src/components/diff/SchemaDiffObjectTree.vue b/apps/desktop/src/components/diff/SchemaDiffObjectTree.vue index b19ed4443a..d021a15bf9 100644 --- a/apps/desktop/src/components/diff/SchemaDiffObjectTree.vue +++ b/apps/desktop/src/components/diff/SchemaDiffObjectTree.vue @@ -1,25 +1,11 @@