From 83e3d8e0431ecda3c859477d7715da6cebe72b7f Mon Sep 17 00:00:00 2001 From: Baobhan Sith <80159437+Heavrnl@users.noreply.github.com> Date: Tue, 13 May 2025 08:32:55 +0800 Subject: [PATCH 1/8] =?UTF-8?q?style:=20=E4=BC=98=E5=8C=96=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E7=95=8C=E9=9D=A2=E5=B8=83=E5=B1=80=EF=BC=8C=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=AF=BC=E8=88=AA=E6=A0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/locales/en-US.json | 12 +- packages/frontend/src/locales/ja-JP.json | 10 ++ packages/frontend/src/locales/zh-CN.json | 20 +++- packages/frontend/src/views/SettingsView.vue | 98 ++++++++++------ packages/frontend/src/views/WorkspaceView.vue | 107 ++++++++++++++++-- 5 files changed, 197 insertions(+), 50 deletions(-) diff --git a/packages/frontend/src/locales/en-US.json b/packages/frontend/src/locales/en-US.json index 183d0e9..661dc4d 100644 --- a/packages/frontend/src/locales/en-US.json +++ b/packages/frontend/src/locales/en-US.json @@ -890,7 +890,17 @@ "noReleases": "No releases found", "rateLimit": "GitHub API rate limit exceeded, please try again later" } - } + }, + "tabs": { + "security": "Security", + "ipControl": "IP Control", + "workspace": "Workspace", + "system": "System", + "dataManagement": "Data Management", + "appearance": "Appearance", + "about": "About" + }, + "loading": "Loading..." }, "notificationController": { "errorFetchSettings": "Failed to fetch notification settings", diff --git a/packages/frontend/src/locales/ja-JP.json b/packages/frontend/src/locales/ja-JP.json index 92bdd14..a014529 100644 --- a/packages/frontend/src/locales/ja-JP.json +++ b/packages/frontend/src/locales/ja-JP.json @@ -1080,6 +1080,16 @@ "decryptKeyInfo": "解凍パスワードは、data/.env ファイル内の ENCRYPTION_KEY です。このファイルを安全に保管してください。", "buttonText": "エクスポートを開始" }, + "tabs": { + "security": "セキュリティ", + "ipControl": "IP制御", + "workspace": "ワークスペース", + "system": "システム", + "dataManagement": "データ管理", + "appearance": "外観", + "about": "バージョン情報" + }, + "loading": "読み込み中...", "setup": { "confirmPassword": "パスワードを再入力", "confirmPasswordPlaceholder": "パスワードを再入力して確認", diff --git a/packages/frontend/src/locales/zh-CN.json b/packages/frontend/src/locales/zh-CN.json index 4e07bad..9720a30 100644 --- a/packages/frontend/src/locales/zh-CN.json +++ b/packages/frontend/src/locales/zh-CN.json @@ -887,11 +887,21 @@ } }, "exportConnections": { - "title": "导出连接数据", - "decryptKeyInfo": "解压密码是您 data/.env 文件中的 ENCRYPTION_KEY。请妥善保管此文件。", - "buttonText": "开始导出" - } -}, + "title": "导出连接数据", + "decryptKeyInfo": "解压密码是您 data/.env 文件中的 ENCRYPTION_KEY。请妥善保管此文件。", + "buttonText": "开始导出" + }, + "tabs": { + "security": "安全", + "ipControl": "IP 管控", + "workspace": "工作区", + "system": "系统", + "dataManagement": "数据管理", + "appearance": "外观", + "about": "关于" + }, + "loading": "加载中..." + }, "notificationController": { "errorFetchSettings": "获取通知设置失败", diff --git a/packages/frontend/src/views/SettingsView.vue b/packages/frontend/src/views/SettingsView.vue index d0505ac..adddef1 100644 --- a/packages/frontend/src/views/SettingsView.vue +++ b/packages/frontend/src/views/SettingsView.vue @@ -1,68 +1,82 @@ From e886d13ed37e36db2f1c1b6da1d1e6025eb1cd98 Mon Sep 17 00:00:00 2001 From: Baobhan Sith <80159437+Heavrnl@users.noreply.github.com> Date: Tue, 13 May 2025 08:47:42 +0800 Subject: [PATCH 2/8] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0"=E5=BC=B9?= =?UTF-8?q?=E5=87=BA=E6=96=87=E4=BB=B6=E7=AE=A1=E7=90=86=E5=99=A8=E7=AA=97?= =?UTF-8?q?=E5=8F=A3"=E8=AE=BE=E7=BD=AE=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/settings/settings.controller.ts | 1 + .../src/components/CommandInputBar.vue | 23 ++++++++++++- .../settings/WorkspaceSettingsSection.vue | 26 +++++++++++++++ .../composables/settings/useSystemSettings.ts | 1 - .../settings/useWorkspaceSettings.ts | 33 +++++++++++++++++++ .../src/composables/workspaceEvents.ts | 1 + packages/frontend/src/locales/en-US.json | 12 +++++++ packages/frontend/src/locales/ja-JP.json | 12 +++++++ packages/frontend/src/locales/zh-CN.json | 12 +++++++ .../frontend/src/stores/settings.store.ts | 17 ++++++++-- 10 files changed, 133 insertions(+), 5 deletions(-) diff --git a/packages/backend/src/settings/settings.controller.ts b/packages/backend/src/settings/settings.controller.ts index 8107242..658a6c0 100644 --- a/packages/backend/src/settings/settings.controller.ts +++ b/packages/backend/src/settings/settings.controller.ts @@ -41,6 +41,7 @@ export const settingsController = { 'autoCopyOnSelect', 'dockerStatusIntervalSeconds', 'dockerDefaultExpand', 'statusMonitorIntervalSeconds', // +++ 添加状态监控间隔键 +++ 'workspaceSidebarPersistent', // +++ 添加侧边栏固定键 +++ + 'showPopupFileManager', // +++ 添加弹窗文件管理器设置键 +++ 'sidebarPaneWidths', // +++ 添加侧边栏宽度对象键 +++ 'fileManagerRowSizeMultiplier', // +++ 添加文件管理器行大小键 +++ 'fileManagerColWidths', // +++ 添加文件管理器列宽键 +++ diff --git a/packages/frontend/src/components/CommandInputBar.vue b/packages/frontend/src/components/CommandInputBar.vue index 2d60782..1e71de0 100644 --- a/packages/frontend/src/components/CommandInputBar.vue +++ b/packages/frontend/src/components/CommandInputBar.vue @@ -25,7 +25,7 @@ const commandHistoryStore = useCommandHistoryStore(); const sessionStore = useSessionStore(); // +++ 初始化 Session Store +++ // Get reactive setting from store -const { commandInputSyncTarget } = storeToRefs(settingsStore); +const { commandInputSyncTarget, showPopupFileManagerBoolean } = storeToRefs(settingsStore); // +++ Import showPopupFileManagerBoolean +++ // Get reactive state and actions from quick commands store const { selectedIndex: quickCommandsSelectedIndex, flatVisibleCommands: quickCommandsFiltered } = storeToRefs(quickCommandsStore); const { resetSelection: resetQuickCommandsSelection } = quickCommandsStore; @@ -298,6 +298,17 @@ const closeSuspendedSshSessionsModal = () => { showSuspendedSshSessionsModal.value = false; }; +// +++ Function to request opening the file manager modal via event bus +++ +const openFileManagerModal = () => { + if (activeSessionId.value) { + console.log(`[CommandInputBar] Emitting fileManager:openModalRequest for session: ${activeSessionId.value}`); + emitWorkspaceEvent('fileManager:openModalRequest', { sessionId: activeSessionId.value }); + } else { + console.warn('[CommandInputBar] Cannot open file manager modal: No active session ID.'); + // Optionally, show a notification to the user + } +}; + // +++ Handler for command execution from the modal +++ const handleQuickCommandExecute = (command: string) => { console.log(`[CommandInputBar] Executing quick command: ${command}`); @@ -400,6 +411,15 @@ const handleQuickCommandExecute = (command: string) => { + +