From d650d91d8228f51987028e2fd622c62c668ec06c Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Mon, 1 Dec 2025 10:08:00 +0100 Subject: [PATCH 01/29] table restore script WIP --- packages/sqltree/src/dumpSqlCommand.ts | 7 ++- packages/sqltree/src/types.ts | 1 + .../src/appobj/DatabaseObjectAppObject.svelte | 55 +++++++++++++++---- .../web/src/utility/tableRestoreScript.ts | 45 +++++++++++++++ packages/web/src/widgets/SqlObjectList.svelte | 2 +- 5 files changed, 95 insertions(+), 15 deletions(-) create mode 100644 packages/web/src/utility/tableRestoreScript.ts diff --git a/packages/sqltree/src/dumpSqlCommand.ts b/packages/sqltree/src/dumpSqlCommand.ts index e8286bafb..b3b9373a4 100644 --- a/packages/sqltree/src/dumpSqlCommand.ts +++ b/packages/sqltree/src/dumpSqlCommand.ts @@ -1,7 +1,7 @@ import type { SqlDumper } from 'dbgate-types'; import { Command, Select, Update, Delete, Insert } from './types'; import { dumpSqlExpression } from './dumpSqlExpression'; -import { dumpSqlFromDefinition, dumpSqlSourceRef } from './dumpSqlSource'; +import { dumpSqlFromDefinition, dumpSqlSourceDef, dumpSqlSourceRef } from './dumpSqlSource'; import { dumpSqlCondition } from './dumpSqlCondition'; export function dumpSqlSelect(dmp: SqlDumper, cmd: Select) { @@ -115,7 +115,10 @@ export function dumpSqlInsert(dmp: SqlDumper, cmd: Insert) { cmd.fields.map(x => x.targetColumn) ); dmp.putCollection(',', cmd.fields, x => dumpSqlExpression(dmp, x)); - if (dmp.dialect.requireFromDual) { + if (cmd.whereNotExistsSource) { + dmp.put(' ^from '); + dumpSqlSourceDef(dmp, cmd.whereNotExistsSource); + } else if (dmp.dialect.requireFromDual) { dmp.put(' ^from ^dual '); } dmp.put(' ^where ^not ^exists (^select * ^from %f ^where ', cmd.targetTable); diff --git a/packages/sqltree/src/types.ts b/packages/sqltree/src/types.ts index bce0e61d3..493745059 100644 --- a/packages/sqltree/src/types.ts +++ b/packages/sqltree/src/types.ts @@ -44,6 +44,7 @@ export interface Insert { fields: UpdateField[]; targetTable: NamedObjectInfo; insertWhereNotExistsCondition?: Condition; + whereNotExistsSource?: Source; } export interface AllowIdentityInsert { diff --git a/packages/web/src/appobj/DatabaseObjectAppObject.svelte b/packages/web/src/appobj/DatabaseObjectAppObject.svelte index 6dfc28d17..3ea5c6037 100644 --- a/packages/web/src/appobj/DatabaseObjectAppObject.svelte +++ b/packages/web/src/appobj/DatabaseObjectAppObject.svelte @@ -1,6 +1,7 @@ @@ -161,6 +169,7 @@ + From b341749e450d4b78ade2386d55def9aac6e2a29d Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Mon, 1 Dec 2025 15:48:06 +0100 Subject: [PATCH 11/29] v6.7.2-premium-beta.3 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 79b06aeb8..5bd2d9055 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "6.7.2-premium-beta.2", + "version": "6.7.2-premium-beta.3", "name": "dbgate-all", "workspaces": [ "packages/*", From 2b055c028ca48252b88f77479e303065a541d96e Mon Sep 17 00:00:00 2001 From: Stela Augustinova Date: Mon, 1 Dec 2025 16:00:05 +0100 Subject: [PATCH 12/29] Update theme command to open settings tab with selected item --- packages/web/src/commands/stdCommands.ts | 9 ++++++++- packages/web/src/tabs/SettingsTab.svelte | 4 ++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/web/src/commands/stdCommands.ts b/packages/web/src/commands/stdCommands.ts index 4e69d4fbe..b69e93116 100644 --- a/packages/web/src/commands/stdCommands.ts +++ b/packages/web/src/commands/stdCommands.ts @@ -74,7 +74,14 @@ registerCommand({ category: __t('command.theme', { defaultMessage: 'Theme' }), name: __t('command.theme.change', { defaultMessage: 'Change' }), toolbarName: __t('command.theme.changeToolbar', { defaultMessage: 'Change theme' }), - onClick: () => showModal(SettingsModal, { selectedTab: 'theme' }), + onClick: () => openNewTab({ + title: 'Settings', + icon: 'icon settings', + tabComponent: 'SettingsTab', + props: { + selectedItem: 'theme', + }, + }), // getSubCommands: () => get(extensions).themes.map(themeCommand), }); diff --git a/packages/web/src/tabs/SettingsTab.svelte b/packages/web/src/tabs/SettingsTab.svelte index e4e89c8f9..ab7f652b1 100644 --- a/packages/web/src/tabs/SettingsTab.svelte +++ b/packages/web/src/tabs/SettingsTab.svelte @@ -20,6 +20,8 @@ import SQLEditorSettings from "../settings/SQLEditorSettings.svelte"; import AiSettingsTab from "../settings/AiSettingsTab.svelte"; + export let selectedItem = 'general'; + const menuItems = [ { label: _t('settings.general', { defaultMessage: 'General' }), @@ -106,8 +108,6 @@ testid: 'settings-other', }, ]; - - let selectedItem = 'general'; From 5e193c1725281bb8d782c672a3d99848f7edee28 Mon Sep 17 00:00:00 2001 From: Stela Augustinova Date: Mon, 1 Dec 2025 16:10:30 +0100 Subject: [PATCH 13/29] Removed Other settings component --- .../web/src/settings/GeneralSettings.svelte | 26 ++++++++ .../web/src/settings/OtherSettings.svelte | 64 ------------------- packages/web/src/tabs/SettingsTab.svelte | 8 --- 3 files changed, 26 insertions(+), 72 deletions(-) delete mode 100644 packages/web/src/settings/OtherSettings.svelte diff --git a/packages/web/src/settings/GeneralSettings.svelte b/packages/web/src/settings/GeneralSettings.svelte index acff0fedb..365a7587d 100644 --- a/packages/web/src/settings/GeneralSettings.svelte +++ b/packages/web/src/settings/GeneralSettings.svelte @@ -49,6 +49,32 @@ label={_t('settings.tabGroup.showServerName', { })} defaultValue={false} /> + + +
{_t('settings.localization', { defaultMessage: 'Localization' })}
- import FormCheckboxField from "../forms/FormCheckboxField.svelte"; - import FormSelectField from "../forms/FormSelectField.svelte"; - import FormTextField from "../forms/FormTextField.svelte"; - import { _t } from "../translations"; - import { isProApp } from "../utility/proTools"; - - - - -
-
{_t('settings.other', { defaultMessage: 'Other' })}
- - - - - -{#if isProApp()} - -{/if} -
- - - \ No newline at end of file diff --git a/packages/web/src/tabs/SettingsTab.svelte b/packages/web/src/tabs/SettingsTab.svelte index ab7f652b1..290530b96 100644 --- a/packages/web/src/tabs/SettingsTab.svelte +++ b/packages/web/src/tabs/SettingsTab.svelte @@ -11,7 +11,6 @@ import DefaultActionsSettings from "../settings/DefaultActionsSettings.svelte"; import BehaviourSettings from "../settings/BehaviourSettings.svelte"; import ExternalToolsSettings from "../settings/ExternalToolsSettings.svelte"; - import OtherSettings from "../settings/OtherSettings.svelte"; import LicenseSettings from "../settings/LicenseSettings.svelte"; import { isProApp } from "../utility/proTools"; import { _t } from "../translations"; @@ -100,13 +99,6 @@ props: {}, testid: 'settings-ai', }, - { - label: _t('settings.other', { defaultMessage: 'Other' }), - identifier: 'other', - component: OtherSettings, - props: {}, - testid: 'settings-other', - }, ]; From 4ab694de0cac117218409e0045c764ae9c1be078 Mon Sep 17 00:00:00 2001 From: Stela Augustinova Date: Mon, 1 Dec 2025 16:14:23 +0100 Subject: [PATCH 14/29] Added top border for first menu item --- packages/web/src/elements/SettingsMenuControl.svelte | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/web/src/elements/SettingsMenuControl.svelte b/packages/web/src/elements/SettingsMenuControl.svelte index 7669682be..7e85e66b2 100644 --- a/packages/web/src/elements/SettingsMenuControl.svelte +++ b/packages/web/src/elements/SettingsMenuControl.svelte @@ -118,6 +118,10 @@ transition: background-color 0.2s ease; } + .menu-item:first-child { + border-top: 1px solid var(--theme-border); + } + .menu-item:hover { background-color: var(--theme-bg-hover); } From 85a2a4b873bf7c65b45f19ba6fafbcd8dcc26c47 Mon Sep 17 00:00:00 2001 From: Stela Augustinova Date: Mon, 1 Dec 2025 16:22:35 +0100 Subject: [PATCH 15/29] Revert "Button for svg export" This reverts commit 352b6cbe047fc3a7decca58168fe848088809545. --- packages/web/src/tabs/DiagramTab.svelte | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/packages/web/src/tabs/DiagramTab.svelte b/packages/web/src/tabs/DiagramTab.svelte index ae76294f8..734fa81a2 100644 --- a/packages/web/src/tabs/DiagramTab.svelte +++ b/packages/web/src/tabs/DiagramTab.svelte @@ -33,8 +33,7 @@ import DiagramSettings from '../designer/DiagramSettings.svelte'; import { derived } from 'svelte/store'; import { isProApp } from '../utility/proTools'; - import { __t, _t } from '../translations'; - import ToolStripDropDownButton from '../buttons/ToolStripDropDownButton.svelte'; + import { __t } from '../translations'; export let tabid; export let conid; @@ -126,13 +125,6 @@ function handleReportCounts(counts) { tableCounts = counts; } - - function getDiagramExportMenu() { - return [ - { command: 'diagram.export' }, - { command: 'diagram.exportSvg' }, - ]; - } @@ -170,7 +162,6 @@ - From 106344b33e43602746a476395a50e5c3bf4b8185 Mon Sep 17 00:00:00 2001 From: Stela Augustinova Date: Mon, 1 Dec 2025 16:26:20 +0100 Subject: [PATCH 16/29] Deleted Settings Modal --- packages/web/src/commands/stdCommands.ts | 1 - .../web/src/settings/SettingsModal.svelte | 850 ------------------ 2 files changed, 851 deletions(-) delete mode 100644 packages/web/src/settings/SettingsModal.svelte diff --git a/packages/web/src/commands/stdCommands.ts b/packages/web/src/commands/stdCommands.ts index b69e93116..938d56bff 100644 --- a/packages/web/src/commands/stdCommands.ts +++ b/packages/web/src/commands/stdCommands.ts @@ -16,7 +16,6 @@ import { import registerCommand from './registerCommand'; import { get } from 'svelte/store'; import AboutModal from '../modals/AboutModal.svelte'; -import SettingsModal from '../settings/SettingsModal.svelte'; import SqlGeneratorModal from '../modals/SqlGeneratorModal.svelte'; import { showModal } from '../modals/modalTools'; import newQuery, { newDiagram, newPerspective, newQueryDesign } from '../query/newQuery'; diff --git a/packages/web/src/settings/SettingsModal.svelte b/packages/web/src/settings/SettingsModal.svelte deleted file mode 100644 index cc4706c37..000000000 --- a/packages/web/src/settings/SettingsModal.svelte +++ /dev/null @@ -1,850 +0,0 @@ - - - - -
{_t('settings.title', { defaultMessage: 'Settings' })}
- - - - - {#if electron} -
{_t('settings.appearance', { defaultMessage: 'Appearance' })}
- { - restartWarning = true; - }} - /> - {#if restartWarning} -
- - {_t('settings.nativeMenuRestartWarning', { - defaultMessage: 'Native menu settings will be applied after app restart', - })} -
- {/if} - {/if} - - -
{_t('settings.localization', { defaultMessage: 'Localization' })}
- - - { - setSelectedLanguage(e.detail); - showModal(ConfirmModal, { - message: _t('settings.localization.reloadWarning', { - defaultMessage: 'Application will be reloaded to apply new language settings', - }), - onConfirm: () => { - setTimeout(() => { - internalRedirectTo(electron ? '/index.html' : '/'); - }, 100); - }, - }); - }} - /> - - -
{_t('settings.dataGrid.title', { defaultMessage: 'Data grid' })}
- - {#if isProApp()} - - {/if} - - - - - - - - - - - - - - -
{_t('settings.sqlEditor', { defaultMessage: 'SQL editor' })}
- -
-
- -
-
- - ({ label: mode.label, value: mode.value }))} - value={$currentEditorKeybindigMode} - on:change={e => ($currentEditorKeybindigMode = e.detail)} - /> - -
-
- - ($currentEditorWrapEnabled = e.target.checked)} - /> - -
-
- - - - - - - - - - - -
- -
{_t('settings.connection', { defaultMessage: 'Connection' })}
- - { - $lockedDatabaseMode = !$lockedDatabaseMode; - }, - }} - > - ($lockedDatabaseMode = e.target.checked)} /> - - - - - - -
{_t('settings.session', { defaultMessage: 'Query sessions' })}
- - -
- - -
{_t('settings.appearance', { defaultMessage: 'Application theme' })}
- - { - if ($currentTheme) { - $currentTheme = null; - } else { - $currentTheme = getSystemTheme(); - } - }, - }} - > - { - if (e.target['checked']) { - $currentTheme = null; - } else { - $currentTheme = getSystemTheme(); - } - }} - /> - - -
- {#each $extensions.themes as theme} - - {/each} -
- -
- {_t('settings.appearance.moreThemes', { defaultMessage: 'More themes are available as' })} - plugins -
- {_t('settings.appearance.afterInstalling', { - defaultMessage: - 'After installing theme plugin (try search "theme" in available extensions) new themes will be available here.', - })} -
- -
{_t('settings.appearance.editorTheme', { defaultMessage: 'Editor theme' })}
- -
-
- - ({ label: theme, value: theme }))} - value={$currentEditorTheme} - on:change={e => ($currentEditorTheme = e.detail)} - /> - -
- -
- - x.value == $currentEditorFontSize) ? $currentEditorFontSize : 'custom'} - on:change={e => ($currentEditorFontSize = e.detail)} - /> - -
- -
- - ($currentEditorFontSize = e.target['value'])} - disabled={!!FONT_SIZES.find(x => x.value == $currentEditorFontSize) && - $currentEditorFontSize != 'custom'} - /> - -
- -
- -
-
- -
- -
-
- -
{_t('settings.defaultActions', { defaultMessage: 'Default actions' })}
- - - - - - - - - - - - - -
- -
{_t('settings.behaviour', { defaultMessage: 'Behaviour' })}
- - - - - -
- - {_t('settings.behaviour.singleClickPreview', { - defaultMessage: - 'When you single-click or select a file in the "Tables, Views, Functions" view, it is shown in a preview mode and reuses an existing tab (preview tab). This is useful if you are quickly browsing tables and don\'t want every visited table to have its own tab. When you start editing the table or use double-click to open the table from the "Tables" view, a new tab is dedicated to that table.', - })} -
- - - -
{_t('settings.confirmations', { defaultMessage: 'Confirmations' })}
- - - -
- -
{_t('settings.other', { defaultMessage: 'Other' })}
- - - - - - {#if isProApp()} - - {/if} -
- - -
{_t('settings.other.license', { defaultMessage: 'License' })}
- { - licenseKeyCheckResult = await apiCall('config/check-license', { licenseKey: value }); - }} - /> - {#if licenseKeyCheckResult} -
- {#if licenseKeyCheckResult.status == 'ok'} -
- - {_t('settings.other.licenseKey.valid', { defaultMessage: 'License key is valid' })} -
- {#if licenseKeyCheckResult.validTo} -
- {_t('settings.other.licenseKey.validTo', { defaultMessage: 'License valid to:' })} - {licenseKeyCheckResult.validTo} -
- {/if} - {#if licenseKeyCheckResult.expiration} -
- {_t('settings.other.licenseKey.expiration', { defaultMessage: 'License key expiration:' })} - {safeFormatDate(licenseKeyCheckResult.expiration)} -
- {/if} - {:else if licenseKeyCheckResult.status == 'error'} -
- - {licenseKeyCheckResult.errorMessage ?? - _t('settings.other.licenseKey.invalid', { defaultMessage: 'License key is invalid' })} - {#if licenseKeyCheckResult.expiration} -
- {_t('settings.other.licenseKey.expiration', { defaultMessage: 'License key expiration:' })} - {safeFormatDate(licenseKeyCheckResult.expiration)} -
- {/if} -
- {#if licenseKeyCheckResult.isExpired} -
- { - licenseKeyCheckResult = await apiCall('config/get-new-license', { oldLicenseKey: licenseKey }); - if (licenseKeyCheckResult.licenseKey) { - apiCall('config/update-settings', { 'other.licenseKey': licenseKeyCheckResult.licenseKey }); - } - }} - /> -
- {/if} - {/if} -
- {/if} -
- - -
{_t('settings.externalTools', { defaultMessage: 'External tools' })}
- - - - - -
- - - - -
-
- -
- - -
-
-
- - From 1be284974b7006e756af3b04cd9490be25a82b15 Mon Sep 17 00:00:00 2001 From: CI workflows Date: Mon, 1 Dec 2025 15:37:11 +0000 Subject: [PATCH 17/29] Update pro ref --- workflow-templates/includes.tpl.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflow-templates/includes.tpl.yaml b/workflow-templates/includes.tpl.yaml index b8e4fb874..dec078561 100644 --- a/workflow-templates/includes.tpl.yaml +++ b/workflow-templates/includes.tpl.yaml @@ -7,7 +7,7 @@ checkout-and-merge-pro: repository: dbgate/dbgate-pro token: ${{ secrets.GH_TOKEN }} path: dbgate-pro - ref: 8df782559b84d6b59342c9488f3ca340074f35d6 + ref: ca69c4857d7d93c4b066018e8a9a0a0ece2300e7 - name: Merge dbgate/dbgate-pro run: | mkdir ../dbgate-pro From 96660b4539a6e84a9c357e3d5334825623dcf2f3 Mon Sep 17 00:00:00 2001 From: CI workflows Date: Mon, 1 Dec 2025 15:37:27 +0000 Subject: [PATCH 18/29] chore: auto-update github workflows --- .github/workflows/build-app-pro-beta.yaml | 2 +- .github/workflows/build-app-pro.yaml | 2 +- .github/workflows/build-cloud-pro.yaml | 2 +- .github/workflows/build-docker-pro.yaml | 2 +- .github/workflows/build-npm-pro.yaml | 2 +- .github/workflows/e2e-pro.yaml | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build-app-pro-beta.yaml b/.github/workflows/build-app-pro-beta.yaml index caa117f7a..ed5bf4ee4 100644 --- a/.github/workflows/build-app-pro-beta.yaml +++ b/.github/workflows/build-app-pro-beta.yaml @@ -43,7 +43,7 @@ jobs: repository: dbgate/dbgate-pro token: ${{ secrets.GH_TOKEN }} path: dbgate-pro - ref: 8df782559b84d6b59342c9488f3ca340074f35d6 + ref: ca69c4857d7d93c4b066018e8a9a0a0ece2300e7 - name: Merge dbgate/dbgate-pro run: | mkdir ../dbgate-pro diff --git a/.github/workflows/build-app-pro.yaml b/.github/workflows/build-app-pro.yaml index d568df362..5ebb4a796 100644 --- a/.github/workflows/build-app-pro.yaml +++ b/.github/workflows/build-app-pro.yaml @@ -43,7 +43,7 @@ jobs: repository: dbgate/dbgate-pro token: ${{ secrets.GH_TOKEN }} path: dbgate-pro - ref: 8df782559b84d6b59342c9488f3ca340074f35d6 + ref: ca69c4857d7d93c4b066018e8a9a0a0ece2300e7 - name: Merge dbgate/dbgate-pro run: | mkdir ../dbgate-pro diff --git a/.github/workflows/build-cloud-pro.yaml b/.github/workflows/build-cloud-pro.yaml index 65323d8d4..4bfde2ff7 100644 --- a/.github/workflows/build-cloud-pro.yaml +++ b/.github/workflows/build-cloud-pro.yaml @@ -39,7 +39,7 @@ jobs: repository: dbgate/dbgate-pro token: ${{ secrets.GH_TOKEN }} path: dbgate-pro - ref: 8df782559b84d6b59342c9488f3ca340074f35d6 + ref: ca69c4857d7d93c4b066018e8a9a0a0ece2300e7 - name: Merge dbgate/dbgate-pro run: | mkdir ../dbgate-pro diff --git a/.github/workflows/build-docker-pro.yaml b/.github/workflows/build-docker-pro.yaml index b17dfa8ce..f112f3db1 100644 --- a/.github/workflows/build-docker-pro.yaml +++ b/.github/workflows/build-docker-pro.yaml @@ -44,7 +44,7 @@ jobs: repository: dbgate/dbgate-pro token: ${{ secrets.GH_TOKEN }} path: dbgate-pro - ref: 8df782559b84d6b59342c9488f3ca340074f35d6 + ref: ca69c4857d7d93c4b066018e8a9a0a0ece2300e7 - name: Merge dbgate/dbgate-pro run: | mkdir ../dbgate-pro diff --git a/.github/workflows/build-npm-pro.yaml b/.github/workflows/build-npm-pro.yaml index 68b9e5285..621723b8d 100644 --- a/.github/workflows/build-npm-pro.yaml +++ b/.github/workflows/build-npm-pro.yaml @@ -35,7 +35,7 @@ jobs: repository: dbgate/dbgate-pro token: ${{ secrets.GH_TOKEN }} path: dbgate-pro - ref: 8df782559b84d6b59342c9488f3ca340074f35d6 + ref: ca69c4857d7d93c4b066018e8a9a0a0ece2300e7 - name: Merge dbgate/dbgate-pro run: | mkdir ../dbgate-pro diff --git a/.github/workflows/e2e-pro.yaml b/.github/workflows/e2e-pro.yaml index 603700d7c..5e058c392 100644 --- a/.github/workflows/e2e-pro.yaml +++ b/.github/workflows/e2e-pro.yaml @@ -26,7 +26,7 @@ jobs: repository: dbgate/dbgate-pro token: ${{ secrets.GH_TOKEN }} path: dbgate-pro - ref: 8df782559b84d6b59342c9488f3ca340074f35d6 + ref: ca69c4857d7d93c4b066018e8a9a0a0ece2300e7 - name: Merge dbgate/dbgate-pro run: | mkdir ../dbgate-pro From 615c6f4e24b87abdffd1fe32063ec15f6054ad24 Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Mon, 1 Dec 2025 16:42:58 +0100 Subject: [PATCH 19/29] SYNC: popup menu fix --- packages/web/src/appobj/DatabaseObjectAppObject.svelte | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/web/src/appobj/DatabaseObjectAppObject.svelte b/packages/web/src/appobj/DatabaseObjectAppObject.svelte index 3ea5c6037..fdf07efed 100644 --- a/packages/web/src/appobj/DatabaseObjectAppObject.svelte +++ b/packages/web/src/appobj/DatabaseObjectAppObject.svelte @@ -754,9 +754,8 @@ const coreMenus = createMenusCore(objectTypeField, driver, data); const filteredSumenus = coreMenus.map(item => { + if (!item) return item; if (!item.submenu) { - if (!item) return item; - return { ...item, label: _tval(item.label) }; } return { @@ -773,7 +772,7 @@ }; }); - const filteredNoEmptySubmenus = filteredSumenus.filter(x => !x.submenu || x.submenu.length > 0); + const filteredNoEmptySubmenus = _.compact(filteredSumenus).filter(x => !x.submenu || x.submenu.length > 0); return filteredNoEmptySubmenus; } From 3a509a6a97c12f0e4a3710745b5b4921d3b6eb55 Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Mon, 1 Dec 2025 17:08:45 +0100 Subject: [PATCH 20/29] SYNC: backup test WIP --- e2e-tests/cypress/e2e/multi-sql.cy.js | 2 +- packages/web/src/appobj/AppObjectGroup.svelte | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/e2e-tests/cypress/e2e/multi-sql.cy.js b/e2e-tests/cypress/e2e/multi-sql.cy.js index 9b4596570..f90ca6789 100644 --- a/e2e-tests/cypress/e2e/multi-sql.cy.js +++ b/e2e-tests/cypress/e2e/multi-sql.cy.js @@ -108,7 +108,7 @@ describe('Backup table', () => { cy.contains('customers').rightclick(); cy.contains('Create table backup').click(); cy.testid('ConfirmSqlModal_okButton').click(); - cy.contains('_customers').click(); + cy.contains('customers (').click(); cy.contains('Rows: 8').should('be.visible'); }); }); diff --git a/packages/web/src/appobj/AppObjectGroup.svelte b/packages/web/src/appobj/AppObjectGroup.svelte index cdcc4b78c..df3eb341e 100644 --- a/packages/web/src/appobj/AppObjectGroup.svelte +++ b/packages/web/src/appobj/AppObjectGroup.svelte @@ -77,7 +77,7 @@ {/if} -
+
{#each items as item} Date: Tue, 2 Dec 2025 10:16:16 +0100 Subject: [PATCH 21/29] Update general settings layout --- .../web/src/settings/GeneralSettings.svelte | 153 +++++++++--------- 1 file changed, 75 insertions(+), 78 deletions(-) diff --git a/packages/web/src/settings/GeneralSettings.svelte b/packages/web/src/settings/GeneralSettings.svelte index 365a7587d..aa7cd0bc9 100644 --- a/packages/web/src/settings/GeneralSettings.svelte +++ b/packages/web/src/settings/GeneralSettings.svelte @@ -1,87 +1,27 @@
-
{_t('settings.general', { defaultMessage: 'General' })}
-{#if electron} -
{_t('settings.appearance', { defaultMessage: 'Appearance' })}
- { - restartWarning = true; - }} - /> - {#if restartWarning} -
- - {_t('settings.nativeMenuRestartWarning', { - defaultMessage: 'Native menu settings will be applied after app restart', - })} -
- {/if} -{/if} - - - - -
{_t('settings.localization', { defaultMessage: 'Localization' })}
- - -{_t('settings.application', { defaultMessage: 'Application' })}
+ + - + + + + +
{_t('settings.appearance', { defaultMessage: 'Appearance' })}
+ + {#if electron} + + { + restartWarning = true; + }} + /> + {#if restartWarning} +
+ + {_t('settings.nativeMenuRestartWarning', { + defaultMessage: 'Native menu settings will be applied after app restart', + })} +
+ {/if} + {/if} + + +