diff --git a/web/app/workbench/layout.tsx b/web/app/workbench/layout.tsx
index 9a1fb1a..640308f 100644
--- a/web/app/workbench/layout.tsx
+++ b/web/app/workbench/layout.tsx
@@ -8,6 +8,7 @@ import { useEffect } from "react"
import { useAuth } from "@/components/auth-provider"
import { NotificationProvider } from "@/components/notification-provider"
import { WorkbenchHeader } from "@/components/workbench-header"
+import { WorkbenchRail } from "@/components/workbench-rail"
import { useI18n } from "@/i18n/provider"
export default function WorkbenchLayout({
@@ -47,7 +48,7 @@ export default function WorkbenchLayout({
return (
-
- {children}
+
+
+
+ {children}
+
)
diff --git a/web/components/workbench-rail.tsx b/web/components/workbench-rail.tsx
new file mode 100644
index 0000000..49b8897
--- /dev/null
+++ b/web/components/workbench-rail.tsx
@@ -0,0 +1,58 @@
+"use client"
+
+import { FileTextIcon, MessageSquareTextIcon } from "lucide-react"
+import Link from "next/link"
+import { usePathname } from "next/navigation"
+
+import { useI18n } from "@/i18n/provider"
+import { cn } from "@/lib/utils"
+
+const workbenchRailItems = [
+ {
+ key: "conversations",
+ titleKey: "nav.conversations",
+ href: "/workbench",
+ icon: MessageSquareTextIcon,
+ },
+ {
+ key: "tickets",
+ titleKey: "nav.tickets",
+ href: "/dashboard/tickets",
+ icon: FileTextIcon,
+ },
+]
+
+export function WorkbenchRail() {
+ const t = useI18n()
+ const pathname = usePathname()
+
+ return (
+
+ )
+}
diff --git a/web/e2e/workbench-function.spec.ts b/web/e2e/workbench-function.spec.ts
index 36b1a2f..9f0c42a 100644
--- a/web/e2e/workbench-function.spec.ts
+++ b/web/e2e/workbench-function.spec.ts
@@ -67,7 +67,7 @@ test.describe("support workbench", () => {
await screenshot(page, "03-workbench-initial");
await expect(page.getByText(/客服工作台|Support Workbench/).first()).toBeVisible();
- await page.getByRole("button", { name: /贝壳AGENT|Shell Agent/i }).first().click();
+ await page.getByRole("button", { name: /贝壳AGENT|Agent Desk/i }).first().click();
await expect(page.getByText(/切换工作区|Switch workspace/)).toBeVisible();
await expect(page.getByRole("menuitem", { name: /管理后台|Admin Dashboard/ })).toBeVisible();
await page.waitForTimeout(300);
@@ -79,7 +79,7 @@ test.describe("support workbench", () => {
await screenshot(page, "05-dashboard-after-switch");
await expect(page.getByText(/管理后台|Admin Dashboard/).first()).toBeVisible();
- await page.getByRole("button", { name: /贝壳AGENT|Shell Agent/i }).first().click();
+ await page.getByRole("button", { name: /贝壳AGENT|Agent Desk/i }).first().click();
await expect(page.getByRole("menuitem", { name: /客服工作台|Support Workbench/ })).toBeVisible();
await page.waitForTimeout(300);
await screenshot(page, "06-dashboard-switcher-open");
diff --git a/web/messages/en-US.json b/web/messages/en-US.json
index 77fa696..810241c 100644
--- a/web/messages/en-US.json
+++ b/web/messages/en-US.json
@@ -1,6 +1,6 @@
{
"app": {
- "brand": "Shell Agent",
+ "brand": "Agent Desk",
"metadataTitle": "AI Customer Support Admin",
"metadataDescription": "AI Customer Support Admin"
},