陶泥儿 tab 换项目时清掉草稿与运行提示

export/state/useTaonierTab.ts:换项目重置效果补上 setDraft([]) 与 setRuntimeNotice(''),旧项目没发出去的输入不再出现在新项目输入框。
This commit is contained in:
2026-10-06 21:06:45 +08:00
parent 4edbf62c81
commit 6af4957fa2
@@ -107,25 +107,29 @@ export function useTaonierTab({
};
}, []);
/**
* 换项目时清掉上一次项目的打包结果、进度与阻断提示。
*
* 面板跨项目切换时不会卸载(同一份 `usePanel` 状态继续用),而发布表单在
* `manifest?.projectId` 变化时会重新初始化并复用现成的 `packageResult`——不清的话,
* 新项目会带着旧项目的 `packageRelativePath` 直接被发布出去。
*/
useEffect(() => {
setPackageResult(null);
setProgress(null);
setBlockedMessage(null);
}, [projectPath]);
const [runtimeNotice, setRuntimeNotice] = useState('');
/**
* 输入草稿提升到面板层:Composer 随 tab 页卸载后,正文不再随组件一起丢。
* 提交成功时 Composer 内部的 `clear()` 会经 `onDraftChange` 把空草稿回执上来。
*/
const [draft, setDraft] = useState<UserContentPart[]>([]);
/**
* 换项目时清掉上一次项目的打包结果、进度、阻断提示与输入草稿。
*
* 面板跨项目切换时不会卸载(同一份 `usePanel` 状态继续用),而发布表单在
* `manifest?.projectId` 变化时会重新初始化并复用现成的 `packageResult`——不清的话,
* 新项目会带着旧项目的 `packageRelativePath` 直接被发布出去。草稿与运行提示同理:
* 两个项目不是同一条会话,旧项目没发出去的字不该出现在新项目的输入框里。
*/
useEffect(() => {
setPackageResult(null);
setProgress(null);
setBlockedMessage(null);
setDraft([]);
setRuntimeNotice('');
}, [projectPath]);
const chat = useDirectProjectChatController({
enabled,
ensureConversationReadAllowed,