Files
Jyotisha/docs/tasks/TASK-latest-turn-actions-gap-20260926.md
T

44 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# TASK · 最后一轮回答与点赞 / 踩按钮之间的大段空白(2026-09-26)
## 基线
- `origin/staging` 当前 head。分支 `codex/latest-turn-actions-gap-20260926`。
- 只改 `frontend/src/app/globals.css` 与相关合同测试;不碰 `useConversationScrollAnchor` 的逻辑。与其它在途单不交叉。
## 事故实证(产品 09-26 真机,iPhone Safari,生时校正会话)
助手正文结束后,点赞 / 踩 / 复制 / 重试一排按钮被推到屏幕下部,中间空出大半屏。
- `frontend/src/app/globals.css`:
```css
/* Last turn fills the remaining viewport so a short reply can still pin its
head at the top. Variables are written by useConversationScrollAnchor. */
.conversation .message-list > :last-child .message-assistant {
min-height: calc(var(--conversation-viewport, 0px) - var(--latest-turn-head-height, 0px));
}
```
- `.message-actions` 是 `.message-assistant` 之后的兄弟节点(`margin: -4px 0 8px 42px`),因此最小高度把它顶到留白之后。普通咨询与生时校正共用同一规则,回答越短空白越大。
- 该留白来自 BUG-930「新一轮开头钉顶」:必须保留,否则短回答时无法把本轮开头停在视口顶部。
## 根因
留白加在了"助手消息"上,而不是加在"整轮(消息 + 操作按钮 + 追问建议)"之后。
## 决策记录
- D1 保留 BUG-930 的钉顶留白,**只改位置**:最小高度改加在最后一轮的外层(包含助手消息、`.message-actions`、`.conversation-follow-ups` 的那个 `:last-child` 容器),使操作按钮紧跟正文,空白落在按钮与追问建议之后。
- D2 如果外层容器还包含用户行(按实际 DOM 核对),计算式里需扣除的高度保持由 `useConversationScrollAnchor` 写入的 `--latest-turn-head-height` 口径,不改 hook。
- D3 普通咨询与生时校正两处表现一致。
## 硬红线
1. 不改 `useConversationScrollAnchor` / `JumpToLatestButton` 行为;BUG-930 / 931 / 932 的钉顶、跳到最新、闲置不写留白全部保持(其测试不得弱化)。
2. 只用现有 token;首页 `○ Static`、gzip ±2%。
3. **真实浏览器验证**(本机 Chrome,CDP 假数据):375 与 1280 宽度,普通咨询与生时校正各一条短回答——操作按钮与正文间距为 `.message-actions` 自身间距;新一轮开头仍钉在视口顶部;长回答时「跳到最新」正常。截图写进 PROGRESS。
4. 全量测试与基线逐条一致、新增 0;改动断言写三栏(写在测试文件里);更新 `frontend/DESIGN.md` 中对应说明。
## 任务分解
- T1 CSS 调整(D1–D3)+ 合同测试更新(原断言锁的是 `.message-assistant` 选择器,按三栏改为外层容器)。
- T2 浏览器截图与 PROGRESS;BUG 记录:开工时取下一个空号,关联 BUG-930,写明为何当时的骨架页验证没发现(验证只看了开头钉顶,没看操作按钮位置)。