From 62b799897562db587bbb5fd49481ec1cc4f8e34f Mon Sep 17 00:00:00 2001 From: matevip Date: Thu, 9 Apr 2026 19:55:51 +0800 Subject: [PATCH] refactor(ui): move Workspaces/Members/Activity from Security to Settings --- .../workspace/WorkspaceSwitcher.vue | 2 +- mateclaw-ui/src/router/index.ts | 40 ++++++++++--------- mateclaw-ui/src/views/Security/Layout.vue | 18 --------- mateclaw-ui/src/views/Settings/Layout.vue | 20 ++++++++++ 4 files changed, 43 insertions(+), 37 deletions(-) diff --git a/mateclaw-ui/src/components/workspace/WorkspaceSwitcher.vue b/mateclaw-ui/src/components/workspace/WorkspaceSwitcher.vue index 7896cb24..b002c635 100644 --- a/mateclaw-ui/src/components/workspace/WorkspaceSwitcher.vue +++ b/mateclaw-ui/src/components/workspace/WorkspaceSwitcher.vue @@ -70,7 +70,7 @@ onMounted(() => { function onSwitch(id: number | string) { if (id === '__manage__') { - router.push('/security/workspaces') + router.push('/settings/workspaces') return } store.switchWorkspace(id as number) diff --git a/mateclaw-ui/src/router/index.ts b/mateclaw-ui/src/router/index.ts index ca6ba6be..e5cade1a 100644 --- a/mateclaw-ui/src/router/index.ts +++ b/mateclaw-ui/src/router/index.ts @@ -100,6 +100,25 @@ const router = createRouter({ component: () => import('@/views/Settings/Video/index.vue'), meta: { title: 'Settings - Video' }, }, + // Workspace management + { + path: 'workspaces', + name: 'SettingsWorkspaces', + component: () => import('@/views/Security/Workspaces/index.vue'), + meta: { title: 'Settings - Workspaces' }, + }, + { + path: 'members', + name: 'SettingsMembers', + component: () => import('@/views/Security/Members/index.vue'), + meta: { title: 'Settings - Members' }, + }, + { + path: 'activity', + name: 'SettingsActivity', + component: () => import('@/views/Security/Activity/index.vue'), + meta: { title: 'Settings - Activity' }, + }, // Advanced (absorbed from top-level nav) { path: 'agent-context', @@ -163,29 +182,14 @@ const router = createRouter({ component: () => import('@/views/Security/AuditLogs/index.vue'), meta: { title: 'Security - Audit Logs' }, }, - { - path: 'members', - name: 'SecurityMembers', - component: () => import('@/views/Security/Members/index.vue'), - meta: { title: 'Security - Members' }, - }, - { - path: 'workspaces', - name: 'SecurityWorkspaces', - component: () => import('@/views/Security/Workspaces/index.vue'), - meta: { title: 'Security - Workspaces' }, - }, - { - path: 'activity', - name: 'SecurityActivity', - component: () => import('@/views/Security/Activity/index.vue'), - meta: { title: 'Security - Activity' }, - }, ], }, // ==================== Redirects (backward compatibility) ==================== { path: 'sessions', redirect: '/chat' }, { path: 'workspace', redirect: '/settings/agent-context' }, + { path: 'security/workspaces', redirect: '/settings/workspaces' }, + { path: 'security/members', redirect: '/settings/members' }, + { path: 'security/activity', redirect: '/settings/activity' }, { path: 'cron-jobs', redirect: '/settings/cron-jobs' }, { path: 'datasources', redirect: '/settings/datasources' }, { path: 'mcp-servers', redirect: '/settings/mcp-servers' }, diff --git a/mateclaw-ui/src/views/Security/Layout.vue b/mateclaw-ui/src/views/Security/Layout.vue index 16a147fa..8acc49df 100644 --- a/mateclaw-ui/src/views/Security/Layout.vue +++ b/mateclaw-ui/src/views/Security/Layout.vue @@ -57,24 +57,6 @@ const sections = computed(() => [ label: t('security.sections.auditLogs'), icon: '', }, - { - id: 'members', - path: '/security/members', - label: t('security.sections.members', 'Members'), - icon: '', - }, - { - id: 'workspaces', - path: '/security/workspaces', - label: t('security.sections.workspaces', 'Workspaces'), - icon: '', - }, - { - id: 'activity', - path: '/security/activity', - label: t('security.sections.activity', 'Activity'), - icon: '', - }, ]) function isActive(path: string) { diff --git a/mateclaw-ui/src/views/Settings/Layout.vue b/mateclaw-ui/src/views/Settings/Layout.vue index 0ab466b0..df1c7cfa 100644 --- a/mateclaw-ui/src/views/Settings/Layout.vue +++ b/mateclaw-ui/src/views/Settings/Layout.vue @@ -83,6 +83,26 @@ const sections = computed(() => [ label: t('settings.sections.video'), icon: '', }, + // Divider: Workspace + { id: 'divider-workspace', path: '', label: t('settings.sections.workspace', 'Workspace'), icon: '', isDivider: true }, + { + id: 'workspaces', + path: '/settings/workspaces', + label: t('security.sections.workspaces', 'Workspaces'), + icon: '', + }, + { + id: 'members', + path: '/settings/members', + label: t('security.sections.members', 'Members'), + icon: '', + }, + { + id: 'activity', + path: '/settings/activity', + label: t('security.sections.activity', 'Activity'), + icon: '', + }, // Divider: Advanced { id: 'divider-advanced', path: '', label: t('settings.sections.advanced'), icon: '', isDivider: true }, {