From d8443c2bfc3b038f16fec62e20bca5a9a4b8c21c Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 21 Feb 2026 06:01:46 +0800 Subject: [PATCH] feat: show canvas/chat title in canvas panel header --- components/canvas/CanvasChatPanel.tsx | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/components/canvas/CanvasChatPanel.tsx b/components/canvas/CanvasChatPanel.tsx index 0d32e143c..e9fb48a26 100644 --- a/components/canvas/CanvasChatPanel.tsx +++ b/components/canvas/CanvasChatPanel.tsx @@ -1338,6 +1338,7 @@ export function CanvasChatPanel({ chatId, initialMessages = [], onClose, onOpenF const addNode = useCanvasStore((state) => state.addNode); const updateNode = useCanvasStore((state) => state.updateNode); const nodes = useCanvasStore((state) => state.nodes); + const projectTitle = useCanvasStore((state) => state.projectTitle); const selectedNodeIds = useCanvasStore((state) => state.selectedNodeIds); const clearSelection = useCanvasStore((state) => state.clearSelection); const pendingChatAttachments = useCanvasStore((state) => state.pendingChatAttachments); @@ -4988,10 +4989,30 @@ export function CanvasChatPanel({ chatId, initialMessages = [], onClose, onOpenF toast.success("已切换聊天窗口"); }, [activeChatId]); + const activeSessionTitle = useMemo(() => { + const current = chatSessions.find((session) => session.id === activeChatId); + return String(current?.title || "").trim(); + }, [chatSessions, activeChatId]); + + const displayCanvasName = useMemo(() => { + if (activeSessionTitle) return activeSessionTitle; + const fallbackTitle = String(projectTitle || "").trim(); + return fallbackTitle || "未命名画布"; + }, [activeSessionTitle, projectTitle]); + return (
{/* Header - Minimal with Icons */} -
+
+
+

+ {displayCanvasName} +

+
+
+
{/* 消息列表 */}