Files
Genarrative/apps
lhk229 f039337d06
Project CI / Repository checks (pull_request) Successful in 4m19s
Project CI / Frontend tests (pull_request) Successful in 4m45s
Project CI / Backend tests (pull_request) Successful in 6m16s
Project CI / Native shell tests (pull_request) Successful in 14m16s
策划链路恢复列布局,澄清卡与输入框不再被静默裁出可视区
现象:立项策划提交需求后,界面永远停在「任务已接收」,澄清问答卡不出现。后端、
模式判定、链路判据、readOnly、数据传递全部正确,卡片也确实渲染了——314px 高、
visible、opacity 1,只是被画在裁剪线外面。实测窄条 top=858 而容器 bottom=788,
超出 384px;scrollHeight 1235 vs clientHeight 734,输入框和状态行也一起在外面。

根因是 #193(5802048c3「Codex/agent chat layout fix」)重写这块布局时:

  - 给 .game-workbench-chat .project-supervisor-conversation 加了 display: block,
    杀死它从基础规则继承的 display: grid,行模板 minmax(340px,1fr) auto auto auto
    整个失效;
  - 把消息列表从 flex: 1 1 auto 改成 height: 100%,于是它独吞整列高度;
  - 删掉了 .game-workbench-chat .project-supervisor-composer 的 4 条规则,所以列表
    上那条 padding-bottom: 196px(本意是给「浮起来的输入框」留位)从来没有对应的
    定位规则,那个模型压根没成立过。

容器又是 overflow: hidden,所以排在列表后面的成员全部被无声裁掉。

只给策划链路恢复:`:has(.plan-gdd-surface)` 仅在策划面在场时命中,做游戏与做素材
保持 master 的 block 列原样不动。用 flex 列而不是 grid——子元素个数随「待确认命令」
的有无浮动,固定行模板会错位;而且既有的 .plan-gdd-surface { flex: 0 0 auto } 本来
就是照 flex 写的,容器变成 flex 之后它才第一次真正生效,此前一直是死声明。

另加 overflow-y: auto 兜底:审批卡展开到 52dvh 且窄条同时在场时理论上仍可能超出,
届时给滚动条而不是继承裁剪。这个 bug 的全部代价都来自「悄悄裁掉」。

顺带补一条 appSurface 用例,覆盖「首页做方案 → 自动建项目 → 自动投递 → 工作台出
澄清卡」这条此前零覆盖的路径。必须说明:它拦不住本次这类问题——jsdom 没有布局引擎,
高度恒为 0,裁剪与溢出对它天然不可见。它守的是数据流,不是版面。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-25 09:43:32 +00:00
..