e57d81454f
master 这 22 个提交里有一处和本分支正面撞车:它把首页那枚选择器做成了三类型 (做游戏 / 做素材 / 做方案,HomeCreationType),而本分支此前把同一枚控件砍成了 两项(做游戏 / 做方案)并直接用它当路由(ProjectStartMode)。做素材必须与 master 一致,所以取 master 的三类型控件,startMode 不再是独立状态,改为从 creationType 派生:doc → planning,其余 → direct-build。两个字段在 LauncherProjectContext 和 HomeDraft 里并存,creationType 记入口原始类型,startMode 记链路路由。 五处冲突的处理: - app/types.ts、useHomeProjectCreation.ts:creationType 与 startMode 并存,调用 顺序统一跟已自动合并好的函数签名走。 - view/home/index.tsx:选择器整段取 master,删掉本分支已无人引用的 HOME_START_MODES / HOME_START_MODE_ITEMS,startMode 就地派生。 - SupervisorChatOnlyView.tsx:master 新增的 directCodex 活动时间分支保留,内层 runtime 换成本分支的 projectedRuntime;master 那句 `!directCodex && synchronizingAcceptedRun` 是冗余的(合并后 synchronizingAcceptedRun 的定义里已经带了 !directCodex),它重复声明的 activeCollaboratingRuntimes 也丢掉——上面已经声明过一次。收束判据取本分支的 runtimeTerminal / descendantsStillActive。 - styles.css:master 的聊天气泡样式与本分支的审批卡高度上限互不相干,都留;补上 master 最后一条规则缺的闭合括号(它原本借用冲突块外那个共用的 })。 两处测试跟着改: - appSurface/harness.ts:afterEach 补一次 useLauncherHomeDraftStore.reset()。 首页创作类型存在 module 级 zustand store 里,跨用例不会回到初始值;合并后建项 按钮的文案依赖它(做方案 → 进入立项策划),上一个选过做方案的用例会让下一个 找不到「开启创作」。合并前 startMode 是组件 useState,这个泄漏看不出来。 - appSurface/home.suite.ts:master 新增的用例在选中做方案后仍按「开启创作」找 按钮,改成「进入立项策划」——本分支有意在这一档改了文案,suite 里本分支自己的 用例也是按这个口径找的。 验证:npm run typecheck 干净;eslint 改动文件零告警;cargo check --all-targets 通过;appSurface 403/403。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>