AGC 窗口标题栏项目标签显示的是「正在运行的项目」而不是当前项目:当前项目未跑回合时标签被别的项目顶掉 #618
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
现象
AGC 客户端窗口标题栏中央那枚项目标签,展示的不是当前打开的项目,而是「正在运行的项目」里最晚启动的那一个。
现场(截图):
gameagent-ff7f3240,对话不忙(当前项目没有在跑回合)gameagent-c3af9c7e(后台另一个项目在跑回合)标签里没有任何"当前项目是谁"的信息,用户据此误判成"项目版本两边不一样,而且两个都是随机生成的"。
附带的口径差异让这件事更难看懂:同一个项目有回合在跑时标签显示目录名(
gameagent-xxxxxxxx),没回合在跑时标签显示清单项目名(如「飞鸟 v2」)。原因(链路,从下往上)
apps/ai-game-creator-shell/src/components/WindowChrome.tsx:174-196:只要activeProjectRuns.activeTurns.length > 0 || readFailed,标题栏就整块换成ActiveProjectRunsPanel,当前工作区名window-chrome__title(title = currentProjectContext.projectName)被替换掉 —— 当前项目名从此不再出现在标签上。apps/ai-game-creator-shell/src/features/app-shell/ActiveProjectRunsPanel.tsx:118-155(placement="titlebar"分支):按startedAt升序取最后一个(最晚启动)作为标签主文案,与"当前打开的是哪个项目"完全无关。ActiveProjectRunsPanel.tsx:53-56的activeTurnDisplayName=turn.projectName || projectNameFromPath(turn.projectPath);而 Rust 侧src-tauri/src/agent/thread_manager/mod.rs:513-518登记回合时project_name取的是thread_id的目录名,所以只要有回合在跑就一定命中目录名分支(projectNameFromPath回落实际是死代码)→ 运行态标签恒为gameagent-xxxxxxxx。apps/ai-game-creator-shell/src/features/app-shell/WorkspaceLauncher.tsx:203-208写入的title(currentProjectContext.projectName,即清单项目名,useHomeProjectCreation.ts:1103)→ 与第 3 条的运行态口径不一致。aria-current属性高亮(ActiveProjectRunsPanel.tsx:172-183),没有文字;当前项目压根不在运行列表里时,标签和菜单都给不出"我是谁"。readFailed分支(ActiveProjectRunsPanel.tsx:96-102)同样整块顶掉当前项目名,显示「正在运行的项目读取失败」。触发条件:当前项目没有在跑回合、而别的项目有(或运行快照读取失败)。当前项目自己在跑时看不出"少了一个项目",但标签文案会从项目名变成目录名。
打算怎么改
aria-current保留)。readFailed不再整块替换标签:标签保留当前项目名,读取失败降级为圆点告警 + 菜单内一行「正在运行的项目读取失败」(ActiveProjectRunsPanel的 panel 形态提示文案不变)。commands.rs:624的game_creator_project_name(root)已有实现),读不到再回落目录名;保证同一项目"在跑 / 不跑"标签文字一致。验收判据
创作工作台/ 最近启动的运行项目)。tests/directActiveTurns.test.tsx的 titlebar 用例增加「当前项目未运行 + 别的项目在跑」;WindowChrome 分支增加「有运行项目时当前项目名不消失」。npm run typecheck/ eslint /npm run check:encoding/ AGC 全量用例通过。范围
只改 AGC 壳前端(
src/components/WindowChrome.tsx、src/features/app-shell/ActiveProjectRunsPanel.tsx、WorkspaceLauncher.tsx接线、styles.css)+ 定向用例;若采纳第 5 条命名口径统一,Rust 侧只改agent/thread_manager/mod.rs登记回合时的project_name取值与对应单测。不改后端 HTTP 契约、OpenAPI 与 SpacetimeDB。