修复独立总控聊天窗口未发送草稿的恢复
- App.tsx 增加 supervisorChatDraftHydratedRef 守卫的挂载水合:独立总控聊天窗口挂载走 loadProjectConversation,不经过 openWorkspace,此前 sessionStorage 里的草稿只写不读,重载后为空 - 仅在 supervisorChatOnly、存在持久化草稿且输入框已挂载时回填一次,避免覆盖用户后续输入
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user