diff --git a/apps/desktop/src/components/editor/EditorSettingsDialog.vue b/apps/desktop/src/components/editor/EditorSettingsDialog.vue
index 95c985f99..4f65080dd 100644
--- a/apps/desktop/src/components/editor/EditorSettingsDialog.vue
+++ b/apps/desktop/src/components/editor/EditorSettingsDialog.vue
@@ -3012,6 +3012,7 @@ onUnmounted(cleanupPreviewEditor);
{ key: 'dataCompare', label: t('dataCompare.title') },
{ key: 'checkUpdates', label: t('updates.check') },
{ key: 'sqlLibrary', label: t('sqlLibrary.title') },
+ { key: 'sqlFileTree', label: t('sqlFileTree.title') },
{ key: 'history', label: t('history.title') },
{ key: 'ai', label: 'AI' },
{ key: 'theme', label: t('toolbar.theme') },
diff --git a/apps/desktop/src/components/layout/AppToolbar.vue b/apps/desktop/src/components/layout/AppToolbar.vue
index 1b2ddbf10..22cb20c25 100644
--- a/apps/desktop/src/components/layout/AppToolbar.vue
+++ b/apps/desktop/src/components/layout/AppToolbar.vue
@@ -146,6 +146,15 @@ const collapsibleRightItemDefs = computed(() => {
disabled: false,
});
}
+ if (toolbarItems.value.sqlFileTree) {
+ items.push({
+ key: "sqlFileTree",
+ label: t("sqlFileTree.title"),
+ icon: FolderTree,
+ action: () => emit("toggle-sql-file-panel"),
+ disabled: false,
+ });
+ }
if (toolbarItems.value.history) {
items.push({
key: "history",
@@ -450,9 +459,9 @@ const toolbarDropdownTriggerClass = `inline-flex h-8 items-center gap-1 rounded-
{{ t("sqlLibrary.title") }}
-
+
-
diff --git a/apps/desktop/src/i18n/locales/en.ts b/apps/desktop/src/i18n/locales/en.ts
index d8c13726a..b1789870a 100644
--- a/apps/desktop/src/i18n/locales/en.ts
+++ b/apps/desktop/src/i18n/locales/en.ts
@@ -2815,7 +2815,7 @@ export default {
languageTitle: "Language / 语言",
fontSize: "Font Size",
toolbarTitle: "Toolbar",
- toolbarHiddenHint: 'Hidden left-side buttons will appear in the "More" dropdown.',
+ toolbarHiddenHint: 'Some hidden or overflowed buttons appear in the "More" dropdown.',
uiScale: "UI Scale",
uiScaleDescription: "Scale the entire desktop UI for high-DPI displays. Changes apply immediately and are restored on next launch.",
theme: "Theme",
diff --git a/apps/desktop/src/i18n/locales/es.ts b/apps/desktop/src/i18n/locales/es.ts
index 41ea4baec..9c70cee95 100644
--- a/apps/desktop/src/i18n/locales/es.ts
+++ b/apps/desktop/src/i18n/locales/es.ts
@@ -2726,7 +2726,7 @@ export default withEnglishFallback({
languageTitle: "Idioma / Language",
fontSize: "Tamaño de fuente",
toolbarTitle: "Barra de herramientas",
- toolbarHiddenHint: "Los botones ocultos de la izquierda aparecerán en el menú «Más».",
+ toolbarHiddenHint: "Algunos botones ocultos o desbordados aparecerán en el menú «Más».",
uiScale: "Escala de interfaz",
uiScaleDescription: "Escala toda la interfaz de escritorio para pantallas de alta densidad. Los cambios se aplican al instante y se restauran al volver a abrir.",
theme: "Tema",
diff --git a/apps/desktop/src/i18n/locales/it.ts b/apps/desktop/src/i18n/locales/it.ts
index 51c0c16d2..833cbe498 100644
--- a/apps/desktop/src/i18n/locales/it.ts
+++ b/apps/desktop/src/i18n/locales/it.ts
@@ -2724,7 +2724,7 @@ export default withEnglishFallback({
languageTitle: "Lingua / Language",
fontSize: "Dimensione Carattere",
toolbarTitle: "Barra degli strumenti",
- toolbarHiddenHint: "I pulsanti nascosti a sinistra appariranno nel menu «Altro».",
+ toolbarHiddenHint: "Alcuni pulsanti nascosti o in eccesso appariranno nel menu «Altro».",
uiScale: "Scala UI",
uiScaleDescription: "Scala l'intera interfaccia utente desktop per display ad alta densità (High-DPI). Le modifiche si applicano immediatamente e vengono ripristinate al prossimo avvio.",
theme: "Tema",
diff --git a/apps/desktop/src/i18n/locales/ja.ts b/apps/desktop/src/i18n/locales/ja.ts
index 1874ff9db..568d15b6e 100644
--- a/apps/desktop/src/i18n/locales/ja.ts
+++ b/apps/desktop/src/i18n/locales/ja.ts
@@ -2724,7 +2724,7 @@ export default withEnglishFallback({
languageTitle: "言語 / Language",
fontSize: "フォントサイズ",
toolbarTitle: "ツールバー",
- toolbarHiddenHint: "非表示にした左側のボタンは、「もっと見る」ドロップダウン内に表示されます。",
+ toolbarHiddenHint: "非表示または幅が足りない一部のボタンは、「もっと見る」ドロップダウン内に表示されます。",
uiScale: "UIスケール",
uiScaleDescription: "高DPIディスプレイ向けにデスクトップUI全体をスケーリングします。変更は即座に適用され、次回起動時に復元されます。",
theme: "テーマ",
diff --git a/apps/desktop/src/i18n/locales/pt-BR.ts b/apps/desktop/src/i18n/locales/pt-BR.ts
index 41b14e7ca..ff776c6a6 100644
--- a/apps/desktop/src/i18n/locales/pt-BR.ts
+++ b/apps/desktop/src/i18n/locales/pt-BR.ts
@@ -2725,7 +2725,7 @@ export default withEnglishFallback({
languageTitle: "Idioma / 语言",
fontSize: "Tamanho da fonte",
toolbarTitle: "Barra de ferramentas",
- toolbarHiddenHint: "Os botões ocultos à esquerda aparecerão no menu «Mais».",
+ toolbarHiddenHint: "Alguns botões ocultos ou excedentes aparecerão no menu «Mais».",
uiScale: "Escala da UI",
uiScaleDescription: "Dimensione toda a UI do desktop para telas de alta resolução (high-DPI). As alterações são aplicadas imediatamente e restauradas na próxima inicialização.",
theme: "Tema",
diff --git a/apps/desktop/src/i18n/locales/zh-CN.ts b/apps/desktop/src/i18n/locales/zh-CN.ts
index 8b53e6b0a..a107ea783 100644
--- a/apps/desktop/src/i18n/locales/zh-CN.ts
+++ b/apps/desktop/src/i18n/locales/zh-CN.ts
@@ -2815,7 +2815,7 @@ export default withEnglishFallback({
languageTitle: "语言 / Language",
fontSize: "字号",
toolbarTitle: "工具栏",
- toolbarHiddenHint: '关闭的左侧按钮会自动收进"更多"下拉菜单。',
+ toolbarHiddenHint: '部分关闭或空间不足的按钮会自动收进"更多"下拉菜单。',
uiScale: "界面缩放",
uiScaleDescription: "按比例缩放整个桌面端界面,适合高清屏;修改后立即生效,并在下次启动时恢复。",
theme: "主题",
diff --git a/apps/desktop/src/i18n/locales/zh-TW.ts b/apps/desktop/src/i18n/locales/zh-TW.ts
index 8b7523979..306dbc584 100644
--- a/apps/desktop/src/i18n/locales/zh-TW.ts
+++ b/apps/desktop/src/i18n/locales/zh-TW.ts
@@ -2627,7 +2627,7 @@ export default withEnglishFallback({
languageTitle: "語言 / Language",
fontSize: "字級",
toolbarTitle: "工具列",
- toolbarHiddenHint: "關閉的左側按鈕會自動收進「更多」下拉選單。",
+ toolbarHiddenHint: "部分關閉或空間不足的按鈕會自動收進「更多」下拉選單。",
uiScale: "介面縮放",
uiScaleDescription: "按比例縮放整個桌面端介面,適合高 DPI 螢幕;修改後立即生效,並在下次啟動時復原。",
theme: "主題",
diff --git a/apps/desktop/src/stores/__tests__/settingsStore.spec.ts b/apps/desktop/src/stores/__tests__/settingsStore.spec.ts
index aa2e61032..db1b04c3c 100644
--- a/apps/desktop/src/stores/__tests__/settingsStore.spec.ts
+++ b/apps/desktop/src/stores/__tests__/settingsStore.spec.ts
@@ -70,6 +70,19 @@ describe("normalizeEditorSettings", () => {
expect(normalizeEditorSettings({ dataGridSearchMode: "highlight" }).dataGridSearchMode).toBe("highlight");
expect(normalizeEditorSettings({ dataGridSearchMode: "invalid" as any }).dataGridSearchMode).toBe("filter");
});
+
+ it("normalizes toolbar item settings from older saved settings", () => {
+ const settings = normalizeEditorSettings({
+ toolbarItems: {
+ sqlFileTree: false,
+ history: false,
+ } as any,
+ });
+
+ expect(settings.toolbarItems.sqlFileTree).toBe(false);
+ expect(settings.toolbarItems.history).toBe(false);
+ expect(settings.toolbarItems.sqlLibrary).toBe(true);
+ });
});
describe("normalizeDesktopSettings", () => {
diff --git a/apps/desktop/src/stores/settingsStore.ts b/apps/desktop/src/stores/settingsStore.ts
index 8861e6f20..7d4195d75 100644
--- a/apps/desktop/src/stores/settingsStore.ts
+++ b/apps/desktop/src/stores/settingsStore.ts
@@ -430,6 +430,7 @@ export interface ToolbarItems {
dataCompare: boolean;
checkUpdates: boolean;
sqlLibrary: boolean;
+ sqlFileTree: boolean;
history: boolean;
ai: boolean;
theme: boolean;
@@ -444,6 +445,7 @@ export const DEFAULT_TOOLBAR_ITEMS: ToolbarItems = {
dataCompare: true,
checkUpdates: true,
sqlLibrary: true,
+ sqlFileTree: true,
history: true,
ai: true,
theme: true,
@@ -676,6 +678,7 @@ function normalizeToolbarItems(items: Partial | undefined): Toolba
dataCompare: items.dataCompare ?? defaults.dataCompare,
checkUpdates: items.checkUpdates ?? defaults.checkUpdates,
sqlLibrary: items.sqlLibrary ?? defaults.sqlLibrary,
+ sqlFileTree: items.sqlFileTree ?? defaults.sqlFileTree,
history: items.history ?? defaults.history,
ai: items.ai ?? defaults.ai,
theme: items.theme ?? defaults.theme,