修复独立总控聊天窗口未发送草稿的恢复

- App.tsx 增加 supervisorChatDraftHydratedRef 守卫的挂载水合:独立总控聊天窗口挂载走 loadProjectConversation,不经过 openWorkspace,此前 sessionStorage 里的草稿只写不读,重载后为空
- 仅在 supervisorChatOnly、存在持久化草稿且输入框已挂载时回填一次,避免覆盖用户后续输入
This commit is contained in:
2026-09-16 18:50:55 +08:00
parent aa9076c95c
commit 423f2d7184
+11
View File
@@ -2075,6 +2075,7 @@ export function App({
const agentRuntimeResumeProjectPathRef = useRef<string | null>(null);
const agentRunHistoryLoadingMoreRef = useRef(false);
const initialProjectOpenedRef = useRef(false);
const supervisorChatDraftHydratedRef = useRef(false);
const pendingUiConfirmationActionRef = useRef<(() => void) | null>(null);
const queueRunLocalShortcutRef = useRef<() => void>(() => undefined);
const executeRunLocalRef = useRef<(announceToChat: boolean) => void>(
@@ -3078,6 +3079,16 @@ export function App({
if (!supervisorChatOnly) {
return;
}
// 独立总控聊天窗口的挂载路径直接走 loadProjectConversation,不经过
// openWorkspace,所以草稿的读取要在这里补一次;只回填一次,之后的渲染不再
// 覆盖用户正在输入的内容。输入框尚未挂载时不移除守卫,等它出现再水合。
if (!supervisorChatDraftHydratedRef.current) {
const persistedDraft = readSupervisorChatDraft(initialProjectPath);
if (persistedDraft && chatComposerRef.current) {
supervisorChatDraftHydratedRef.current = true;
chatComposerRef.current.replaceText(persistedDraft);
}
}
const draft = chatComposerRef.current?.getDraft();
if (!draft || !hasMeaningfulDirectCodexContent(draft.content)) {
return;