diff --git a/apps/ai-game-creator-shell/src/view/project-development/export/state/useTaonierTab.ts b/apps/ai-game-creator-shell/src/view/project-development/export/state/useTaonierTab.ts index 3c50950e6..ee256d00b 100644 --- a/apps/ai-game-creator-shell/src/view/project-development/export/state/useTaonierTab.ts +++ b/apps/ai-game-creator-shell/src/view/project-development/export/state/useTaonierTab.ts @@ -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([]); + + /** + * 换项目时清掉上一次项目的打包结果、进度、阻断提示与输入草稿。 + * + * 面板跨项目切换时不会卸载(同一份 `usePanel` 状态继续用),而发布表单在 + * `manifest?.projectId` 变化时会重新初始化并复用现成的 `packageResult`——不清的话, + * 新项目会带着旧项目的 `packageRelativePath` 直接被发布出去。草稿与运行提示同理: + * 两个项目不是同一条会话,旧项目没发出去的字不该出现在新项目的输入框里。 + */ + useEffect(() => { + setPackageResult(null); + setProgress(null); + setBlockedMessage(null); + setDraft([]); + setRuntimeNotice(''); + }, [projectPath]); + const chat = useDirectProjectChatController({ enabled, ensureConversationReadAllowed,