From 53beba1f7938c4d543286649cd31717fdaef97d9 Mon Sep 17 00:00:00 2001 From: LIUXIN557 Date: Sun, 6 Sep 2026 15:14:58 +0000 Subject: [PATCH] fix: chat home workspace switch delay on new task MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref 携带 homeWorkspaceExplicit 时同步定 homeWorkspaceHash,不再等 /api/workspaces 返回;home 模式 history 只认选中工作区 cwd, 无工作空间时显式清空残留输入历史。 --- web/src/components/ChatView.jsx | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/web/src/components/ChatView.jsx b/web/src/components/ChatView.jsx index 43eb6b049..30d352b7d 100644 --- a/web/src/components/ChatView.jsx +++ b/web/src/components/ChatView.jsx @@ -2456,6 +2456,15 @@ export function ChatView({ sessionRef, sessionId, homeLogoEffectEnabled = true, if (sid) setCreateProjectOpen(false); }, [sid]); + // ref 携带 homeWorkspaceExplicit 时,工作区归属是导航意图的一部分: + // 同步落到 homeWorkspaceHash,不等 /api/workspaces 返回。否则点击 + // 「新建任务」后,聊天区的工作区显示、提交目标、命令工作区、输入历史 + // 都要等整个列表请求回来才切到无工作区(实测 3-4 秒)。 + useEffect(() => { + if (sid || !ref?.homeWorkspaceExplicit) return; + setHomeWorkspaceHash(ref?.workspaceHash || ''); + }, [ref?.homeWorkspaceExplicit, ref?.workspaceHash, sid]); + useEffect(() => { if (sid) return undefined; let cancelled = false; @@ -2522,8 +2531,13 @@ export function ChatView({ sessionRef, sessionId, homeLogoEffectEnabled = true, useEffect(() => { const cwd = sid ? (ref?.cwd || health?.cwd || '') - : (selectedHomeWorkspace?.cwd || ref?.cwd || health?.cwd || ''); - if (!cwd) return; + : (selectedHomeWorkspace?.cwd || ref?.cwd || ''); + if (!cwd) { + // 无工作空间的新任务没有 per-cwd 历史;显式清掉上一次工作区残留, + // 避免上下键翻出上一个项目的输入历史。 + setHistory([]); + return; + } api.getHistory(cwd, 200) .then((r) => setHistory(Array.isArray(r) ? r : [])) .catch(() => {});