From e886c4f00b7dc33c3dc6dc8cac8dbccd86ccc399 Mon Sep 17 00:00:00 2001 From: GCWing Date: Sun, 15 Mar 2026 17:04:14 +0800 Subject: [PATCH] feat: add Code/Cowork session options and fix copy button position - Add newCodeSession and newCoworkSession menu items in WorkspaceItem - Support mode param in handleCreateSession for agentic/Cowork/Claw - Remove forced color on split-right button in NavPanel - Fix copy button position for multi-line code blocks (top: 0.35rem) - Keep centered copy button for single-line code blocks via new CSS class - Add i18n keys for newCodeSession and newCoworkSession (en-US, zh-CN) Generated with BitFun Co-Authored-By: BitFun --- .../src/app/components/NavPanel/NavPanel.scss | 1 - .../sections/workspaces/WorkspaceItem.tsx | 33 +++++++++++++++---- .../components/Markdown/Markdown.scss | 21 +++++++++--- .../components/Markdown/Markdown.tsx | 2 +- src/web-ui/src/locales/en-US/common.json | 2 ++ src/web-ui/src/locales/zh-CN/common.json | 2 ++ 6 files changed, 49 insertions(+), 12 deletions(-) diff --git a/src/web-ui/src/app/components/NavPanel/NavPanel.scss b/src/web-ui/src/app/components/NavPanel/NavPanel.scss index 706e876b..cdfcd8c5 100644 --- a/src/web-ui/src/app/components/NavPanel/NavPanel.scss +++ b/src/web-ui/src/app/components/NavPanel/NavPanel.scss @@ -345,7 +345,6 @@ $_section-header-height: 24px; &--split-right { border-top-right-radius: $size-radius-base; border-bottom-right-radius: $size-radius-base; - color: color-mix(in srgb, var(--color-accent-500) 84%, var(--color-text-secondary)); &:hover { color: var(--color-text-primary); diff --git a/src/web-ui/src/app/components/NavPanel/sections/workspaces/WorkspaceItem.tsx b/src/web-ui/src/app/components/NavPanel/sections/workspaces/WorkspaceItem.tsx index 948acce1..a566f536 100644 --- a/src/web-ui/src/app/components/NavPanel/sections/workspaces/WorkspaceItem.tsx +++ b/src/web-ui/src/app/components/NavPanel/sections/workspaces/WorkspaceItem.tsx @@ -198,14 +198,14 @@ const WorkspaceItem: React.FC = ({ } }, [t, workspace.rootPath]); - const handleCreateSession = useCallback(async () => { + const handleCreateSession = useCallback(async (mode?: 'agentic' | 'Cowork' | 'Claw') => { setMenuOpen(false); try { await flowChatManager.createChatSession( { workspacePath: workspace.rootPath, }, - workspace.workspaceKind === WorkspaceKind.Assistant ? 'Claw' : undefined + mode ?? (workspace.workspaceKind === WorkspaceKind.Assistant ? 'Claw' : undefined) ); await setActiveWorkspace(workspace.id); } catch (error) { @@ -216,6 +216,14 @@ const WorkspaceItem: React.FC = ({ } }, [setActiveWorkspace, t, workspace.id, workspace.rootPath, workspace.workspaceKind]); + const handleCreateCodeSession = useCallback(() => { + void handleCreateSession('agentic'); + }, [handleCreateSession]); + + const handleCreateCoworkSession = useCallback(() => { + void handleCreateSession('Cowork'); + }, [handleCreateSession]); + const handleCreateWorktree = useCallback(async (result: BranchSelectResult) => { try { await gitAPI.addWorktree(workspace.rootPath, result.branch, result.isNew); @@ -327,10 +335,23 @@ const WorkspaceItem: React.FC = ({ role="menu" style={{ top: `${menuPosition.top}px`, left: `${menuPosition.left}px` }} > - + {workspace.workspaceKind === WorkspaceKind.Assistant ? ( + + ) : ( + <> + + + + )} {workspace.workspaceKind !== WorkspaceKind.Assistant && (