From b751504e722043359682e27d628b080b3000d5b5 Mon Sep 17 00:00:00 2001 From: yunpeng7 Date: Wed, 27 May 2026 19:25:43 +0800 Subject: [PATCH 1/2] feat(wework): add connection settings page --- .../components/layout/DesktopSettingsMenu.tsx | 4 +- .../src/components/layout/DesktopSidebar.tsx | 13 +- .../layout/DesktopWorkbenchLayout.test.tsx | 65 ++++ .../layout/DesktopWorkbenchLayout.tsx | 29 +- .../settings/ConnectionsSettingsPage.tsx | 326 ++++++++++++++++++ wework/src/i18n/locales/en/common.json | 23 +- wework/src/i18n/locales/zh-CN/common.json | 23 +- 7 files changed, 466 insertions(+), 17 deletions(-) create mode 100644 wework/src/components/settings/ConnectionsSettingsPage.tsx diff --git a/wework/src/components/layout/DesktopSettingsMenu.tsx b/wework/src/components/layout/DesktopSettingsMenu.tsx index be2f1fc091..4577a8c815 100644 --- a/wework/src/components/layout/DesktopSettingsMenu.tsx +++ b/wework/src/components/layout/DesktopSettingsMenu.tsx @@ -4,10 +4,11 @@ import type { User as UserProfile } from '@/types/api' interface DesktopSettingsMenuProps { user: UserProfile | null + onOpenSettings: () => void onLogout: () => void } -export function DesktopSettingsMenu({ user, onLogout }: DesktopSettingsMenuProps) { +export function DesktopSettingsMenu({ user, onOpenSettings, onLogout }: DesktopSettingsMenuProps) { const { t } = useTranslation('common') const accountLabel = user?.email || user?.user_name || t('workbench.account_fallback', '当前账号') @@ -33,6 +34,7 @@ export function DesktopSettingsMenu({ user, onLogout }: DesktopSettingsMenuProps - {settingsMenuOpen && } + {settingsMenuOpen && ( + { + setSettingsMenuOpen(false) + onOpenSettings() + }} + onLogout={onLogout} + /> + )} + ) +} + +function ResourceMetric({ + icon: Icon, + label, + value, +}: { + icon: ComponentType<{ className?: string }> + label: string + value: number +}) { + return ( +
+ + + {label} + +
+
+
+ {value}% +
+ ) +} + +function DeviceSection({ title, devices }: { title: string; devices: DeviceRow[] }) { + const { t } = useTranslation('common') + + return ( +
+
+
+ +

{title}

+ ({devices.length}) +
+
+
+ {devices.map(device => ( + + ))} +
+
+ +
+

+ {t('workbench.connection_scale_wiki_title', '说明')} +

+

+ {t( + 'workbench.connection_scale_wiki_desc', + '当 CPU、MEM 或磁盘持续超过 80% 时,建议扩容云设备规格或清理工作区缓存。', + )} +

+
+
+
+
+
+ ) +} + +export function ConnectionsSettingsPage({ onBack }: ConnectionsSettingsPageProps) { + const { t } = useTranslation('common') + + return ( +
+ + +
+
+

+ {t('workbench.connections_title', '连接')} +

+ +
+ {[ + t('workbench.connections_tab_this_mac', '连接这台设备'), + ].map((tab, index) => ( + + ))} +
+ +
+
+
+

+ {t('workbench.connections_authorized_devices', '可连接的设备')} +

+ +
+ +
+ +
+
+
+
+
+
+ ) +} diff --git a/wework/src/i18n/locales/en/common.json b/wework/src/i18n/locales/en/common.json index e353b9640f..e4de3088e8 100644 --- a/wework/src/i18n/locales/en/common.json +++ b/wework/src/i18n/locales/en/common.json @@ -70,8 +70,27 @@ "add_photos_files": "Add photos and files", "attach_chrome": "Attach Google Chrome", "plan_mode": "Plan mode", - "pursue_goal": "Pursue goal" - , + "pursue_goal": "Pursue goal", + "settings_back_to_app": "Back", + "settings_nav_connections": "Connect", + "settings_nav_projects": "Projects", + "connections_title": "Connections", + "connections_tab_this_mac": "Connect this device", + "connections_tab_other_devices": "Control other devices", + "connections_authorized_devices": "Connectable devices", + "connection_add": "Add", + "connection_cloud_devices": "Cloud Devices", + "connection_device_name": "Device Name", + "connection_device_version": "Version", + "connection_device_status": "Status", + "connection_device_actions": "Actions", + "connection_resource_cpu": "CPU", + "connection_resource_memory": "MEM", + "connection_resource_disk": "Disk", + "connection_scale_wiki_title": "Notes", + "connection_scale_wiki_desc": "When CPU, MEM, or disk stays above 80%, scale the cloud device plan or clean workspace cache.", + "connection_status_online": "Online", + "connection_status_offline": "Offline", "login_title": "Log in to Wework", "login_subtitle": "Continue with your Wegent account", "login_username": "Username", diff --git a/wework/src/i18n/locales/zh-CN/common.json b/wework/src/i18n/locales/zh-CN/common.json index 096c3c8f05..f3c513f104 100644 --- a/wework/src/i18n/locales/zh-CN/common.json +++ b/wework/src/i18n/locales/zh-CN/common.json @@ -70,8 +70,27 @@ "add_photos_files": "添加照片和文件", "attach_chrome": "Attach Google Chrome", "plan_mode": "计划模式", - "pursue_goal": "追求目标" - , + "pursue_goal": "追求目标", + "settings_back_to_app": "返回", + "settings_nav_connections": "连接", + "settings_nav_projects": "项目", + "connections_title": "连接", + "connections_tab_this_mac": "连接这台设备", + "connections_tab_other_devices": "控制其他设备", + "connections_authorized_devices": "可连接的设备", + "connection_add": "添加", + "connection_cloud_devices": "云设备", + "connection_device_name": "设备名称", + "connection_device_version": "设备版本", + "connection_device_status": "设备状态", + "connection_device_actions": "操作", + "connection_resource_cpu": "CPU", + "connection_resource_memory": "MEM", + "connection_resource_disk": "磁盘", + "connection_scale_wiki_title": "说明", + "connection_scale_wiki_desc": "当 CPU、MEM 或磁盘持续超过 80% 时,建议扩容云设备规格或清理工作区缓存。", + "connection_status_online": "在线", + "connection_status_offline": "离线", "login_title": "登录 Wework", "login_subtitle": "使用 Wegent 账号继续", "login_username": "用户名", From 5f5db6a18b497641bda70e0b645e60a047538058 Mon Sep 17 00:00:00 2001 From: yunpeng7 Date: Wed, 27 May 2026 19:30:43 +0800 Subject: [PATCH 2/2] fix(wework): simplify connection tab label --- wework/src/components/layout/DesktopWorkbenchLayout.test.tsx | 3 ++- wework/src/components/settings/ConnectionsSettingsPage.tsx | 2 +- wework/src/i18n/locales/en/common.json | 2 +- wework/src/i18n/locales/zh-CN/common.json | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/wework/src/components/layout/DesktopWorkbenchLayout.test.tsx b/wework/src/components/layout/DesktopWorkbenchLayout.test.tsx index d0792af267..fd272a0ac4 100644 --- a/wework/src/components/layout/DesktopWorkbenchLayout.test.tsx +++ b/wework/src/components/layout/DesktopWorkbenchLayout.test.tsx @@ -107,7 +107,8 @@ describe('DesktopWorkbenchLayout', () => { expect(screen.getByTestId('settings-back-button')).toHaveTextContent('返回') expect(screen.queryByText('返回应用')).not.toBeInTheDocument() expect(screen.getByRole('heading', { name: '连接' })).toBeInTheDocument() - expect(screen.getByText('连接这台设备')).toBeInTheDocument() + expect(screen.getByText('连接设备')).toBeInTheDocument() + expect(screen.queryByText('连接这台设备')).not.toBeInTheDocument() expect(screen.queryByText('链接这台设备')).not.toBeInTheDocument() expect(screen.queryByText('控制其他设备')).not.toBeInTheDocument() expect(screen.queryByText('SSH')).not.toBeInTheDocument() diff --git a/wework/src/components/settings/ConnectionsSettingsPage.tsx b/wework/src/components/settings/ConnectionsSettingsPage.tsx index 90aea440a7..1e45d1328c 100644 --- a/wework/src/components/settings/ConnectionsSettingsPage.tsx +++ b/wework/src/components/settings/ConnectionsSettingsPage.tsx @@ -277,7 +277,7 @@ export function ConnectionsSettingsPage({ onBack }: ConnectionsSettingsPageProps
{[ - t('workbench.connections_tab_this_mac', '连接这台设备'), + t('workbench.connections_tab_this_mac', '连接设备'), ].map((tab, index) => (