From 83cce7ad6a90f0a783a366dff0a4dd6239893cb4 Mon Sep 17 00:00:00 2001 From: Jesse_Chen Date: Sat, 26 Sep 2026 10:08:32 +0800 Subject: [PATCH] fix(chat): keep latest-turn actions under the reply (BUG-1042) The BUG-930 pin spacer sat on the last assistant row, pushing its sibling .message-actions (and follow-ups / delivery card) below half a screen of empty space. Move the same min-height onto the last turn's entry (`:last-child:has(.message-assistant)`) with align-content: start so the rectification grid wrap does not stretch its rows. Hook logic unchanged. Records BUG-1043 / BUG-1044 (pre-existing, investigating) found during browser verification. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8 --- CHANGELOG.md | 6 ++ docs/BUG_HISTORY.md | 45 +++++++++ ...OGRESS-latest-turn-actions-gap-20260926.md | 92 ++++++++++++++++++ docs/tasks/README.md | 1 + .../latest-turn-actions-gap-20260926.md | 11 +++ .../consult-375-after.png | Bin 0 -> 24125 bytes .../consult-375-before.png | Bin 0 -> 23027 bytes .../rectification-375-after.png | Bin 0 -> 31739 bytes .../rectification-375-before.png | Bin 0 -> 23363 bytes frontend/DESIGN.md | 2 +- frontend/src/app/globals.css | 9 +- .../hooks/use-conversation-scroll-anchor.ts | 7 +- .../chat-notice-and-scroll-contract.test.ts | 23 ++++- 13 files changed, 189 insertions(+), 7 deletions(-) create mode 100644 docs/tasks/PROGRESS-latest-turn-actions-gap-20260926.md create mode 100644 docs/testing/latest-turn-actions-gap-20260926.md create mode 100644 docs/testing/latest-turn-actions-gap-20260926/consult-375-after.png create mode 100644 docs/testing/latest-turn-actions-gap-20260926/consult-375-before.png create mode 100644 docs/testing/latest-turn-actions-gap-20260926/rectification-375-after.png create mode 100644 docs/testing/latest-turn-actions-gap-20260926/rectification-375-before.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 12d9d181..413c0880 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # 印度占星 Skill 更新日志 +## 2026-09-26 — 回答下面的点赞 / 踩 / 复制 / 重试紧贴正文(待验收) + +- 最后一轮回答很短时,点赞 / 踩 / 复制 / 重试那一排不再被推到屏幕下部,直接跟在正文下面;空白挪到按钮(和追问建议)之后。普通对话和生时校正一样。 +- 发问后本轮开头仍停在屏幕顶部;长回答仍会出现「跳到最新」(BUG-1042)。 +- Skill 版本不 bump。只改样式,不改接口和数据库;登录态真机与部署待验收。 + ## 2026-09-26 — 首页开场小字拆开,今日星语和点数换图标(待验收) - 今日趋势(今日星语卡片那一句,每天生成)挪到问候语下面单独一行,浅色、最多两行;还没生成时写「今天的星语还没写出来。」,没有出生分钟时不显示。 diff --git a/docs/BUG_HISTORY.md b/docs/BUG_HISTORY.md index 7336190a..ab2236e2 100644 --- a/docs/BUG_HISTORY.md +++ b/docs/BUG_HISTORY.md @@ -13943,3 +13943,48 @@ - 相关记录:BUG-163(入口摘要由服务端 Case 驱动)、BUG-1040(暖快照缓存的正是解析后的 summary,快照结构不变)。 - 复发自:无。 - 修复版本:`codex/starter-home-polish-20260926`,未部署。 + +## BUG-1042 | 最后一轮回答与点赞 / 踩 / 复制 / 重试之间空出大半屏 + +- 状态:investigating(实现已完成、本地真实浏览器验证通过,等待 Claude 验收与 staging 部署后真机复核) +- 首次发现 / 最近更新:2026-09-26 / 2026-09-26 +- 影响面:`frontend/src/app/globals.css` 末轮留白规则;普通咨询 `.message-entry`(`chat-transcript.tsx` `MessageEntry`)与生时校正 `.rectification-message-wrap`(`rectification-agentic-chat.tsx` + `rectification-message-entry.tsx`)两处最后一轮。 +- 用户现象:产品 09-26 iPhone Safari 生时校正会话:助手正文结束后,点赞 / 踩 / 复制 / 重试一排被推到屏幕下部,中间空出大半屏。普通咨询同样存在,回答越短空白越大。 +- 触发条件:本轮经 `pinLatestTurn` 钉顶(发问、校正点选项 / 开场)后,最后一轮回答短于一屏。 +- 根因:BUG-930 的钉顶留白写成 `.conversation .message-list > :last-child .message-assistant { min-height: calc(var(--conversation-viewport) - var(--latest-turn-head-height)) }`,加在助手行本身;而 `.message-actions`(以及普通咨询的追问建议、校正的交付卡)是助手行之后、同一个 `:last-child` 容器里的兄弟节点,于是被顶到留白之后。实测(无头 Chrome 151,虚构数据)正文末行到操作行的距离:普通咨询 375px 526px / 1280px 608px;生时校正 375px 452px / 1280px 554px。 +- 为何 BUG-930 验收没发现:当时的 Chrome 骨架页只验证「本轮开头钉在视口顶部」(S1–S4),骨架里没有操作按钮行,也没人看按钮落在哪里;合同测试只锁选择器字符串,不看操作行的位置。 +- 修复:留白改加在整轮外层 `.conversation .message-list > :last-child:has(.message-assistant)`,计算式与两个 CSS 变量口径不变(`useConversationScrollAnchor` 逻辑未改,只更新了 `turnHeadHeightForSpacer` 的注释);外加 `align-content: start`,防止生时校正外层(`display: grid`)把多出来的高度分摊到各行、把间距又撑开。头行与末行同一元素时(BUG-931)仍写 `0px`:外层从这条助手行开始,最小高度等于整个视口正好把它留在顶部。 +- 验证:`frontend/tests/chat-notice-and-scroll-contract.test.ts`「turn spacer uses conversation viewport variables and is not sticky」(选择器三栏改写 + 断言 `align-content: start`)与新增「the turn spacer trails the actions row…(BUG-1042)」(任何规则不得把 `--conversation-viewport` 写在 `.message-assistant` 上;两处 DOM 中操作行与助手行同在末轮外层且在其后)。本地 `next build --webpack` + `next start` + Chrome 151 CDP、`/api/*` 虚构数据:短回答正文末行到操作行 23px(即 `.message-actions` 自身间距),375 / 1280、普通咨询 / 生时校正四种组合一致;本轮开头仍停在滚动容器顶部下方约 10px;普通咨询长回答「跳到最新」出现、点击后落底并继续跟随。截图 `docs/testing/latest-turn-actions-gap-20260926/`。全量 3961 条 / 61 失败,失败名单与基线逐条一致(新增 1 条通过)。 +- 防复发:留白只加在末轮外层;新增合同测试禁止把视口留白写回助手行。改末轮 DOM(给外层加兄弟、把操作行挪出外层)必须同时看操作行位置。 +- 相关记录:BUG-930(钉顶留白来源)、BUG-931(头行即末行时写 0)、BUG-932(闲置不写留白);验证中另查出 BUG-1043、BUG-1044(均为既有问题,与本次改动无关,前后表现一致)。 +- 复发自:无(BUG-930 的遗漏)。 +- 修复版本:`codex/latest-turn-actions-gap-20260926`,未部署。 + +## BUG-1043 | 直接打开普通咨询会话后,滚动锚的监听从未挂上 + +- 状态:investigating(仅诊断;本轮任务书禁止改 `useConversationScrollAnchor`,未修) +- 首次发现 / 最近更新:2026-09-26 / 2026-09-26 +- 影响面:`frontend/src/hooks/use-conversation-scroll-anchor.ts` 两个 effect(scroll 监听、ResizeObserver 跟随)与首页 `page.tsx` 的加载闸门;普通咨询面。生时校正面不受影响(组件在揭幕后才挂载)。 +- 用户现象(本地复现):刷新页面或经 `?c=` / 启动落点直接进入一个已有的普通咨询会话后,发一个短问题,回答很短也会出现「跳到最新」;上下滚动该按钮不消失;点它之后回答继续变长也不会跟随。 +- 触发条件:首页揭幕时当前会话就是一条有消息的普通咨询(不是揭幕后再切换过去)。 +- 已确认事实:无头 Chrome 151、生产构建、虚构数据下给 `EventTarget.addEventListener` 与 `ResizeObserver.observe` 打点:该路径下 `.conversation` 上 scroll 监听 0 次、ResizeObserver 观察 0 次;先开 `/?new=1` 再点侧栏进入同一会话,则各挂上 1 次,短回答不再出现「跳到最新」。`pinLatestTurn` 走 rAF 不依赖 effect,所以钉顶本身正常,但 `latestBelowFold` 停在钉顶那一刻算出的值。 +- 推测根因(未证实):加载闸门期间 `page.tsx` 早退渲染 `.app-loading`,`.conversation` 尚未挂载,effect 因 `container.current` 为空直接返回;揭幕后 `active` 与 `resetKey`(`activeSessionId`)都没变,effect 不会重跑。 +- 修复:未修。需要单独任务书授权改 hook(例如依赖里加入容器是否已挂载的状态)。 +- 验证:见上,复现脚本在执行方 scratchpad,未入库。 +- 防复发:待定。 +- 相关记录:BUG-930、BUG-932、BUG-1042。 +- 复发自:无。 +- 修复版本:无。 + +## BUG-1044 | 生时校正长回答钉顶后又被拉到底部 + +- 状态:investigating(仅诊断;本轮任务书禁止改 `useConversationScrollAnchor`,未修) +- 首次发现 / 最近更新:2026-09-26 / 2026-09-26 +- 影响面:`useConversationScrollAnchor` 的 `holdUnpin` 解除条件 × 生时校正 `.message-list` 的底部留白(`padding-bottom: calc(var(--rectification-jump-clearance) + var(--space-3))`)。 +- 用户现象(本地复现):生时校正里发一句话,回答超过一屏时,本轮开头先被钉到顶部,回答一到视口就跳到最后一个字(BUG-930 想解决的现象)。 +- 已确认事实:CDP 逐 100ms 采样:平滑滚动结束时本轮开头距顶 10px、`distanceFromBottom` = 94(≤ `conversationAnchorThreshold` 96),下一帧回答撑高后 `scrollTop` 直接到底。改动前(旧留白规则)表现完全相同(开头位置 −1323px,落底),与 BUG-1042 无关。普通咨询同一时刻距离约 198,不触发。 +- 推测根因(未证实):钉顶后的静止距离等于该面底部留白 + 钉顶间距,校正面恰好 ≤ 96,`measure()` 把它当成「读者回到底部」,解除 `holdUnpin` 并把 `anchored` 翻回真,随后 ResizeObserver 贴底跟随。BUG-931 修的是留白坍塌导致的同一症状,这里留白正常但阈值判断仍然命中。 +- 修复:未修。需单独任务书决定改阈值判定还是改该面的留白口径。 +- 相关记录:BUG-930、BUG-931、BUG-1042。 +- 复发自:无(BUG-931 同症状、不同触发条件)。 +- 修复版本:无。 diff --git a/docs/tasks/PROGRESS-latest-turn-actions-gap-20260926.md b/docs/tasks/PROGRESS-latest-turn-actions-gap-20260926.md new file mode 100644 index 00000000..6c04bbfd --- /dev/null +++ b/docs/tasks/PROGRESS-latest-turn-actions-gap-20260926.md @@ -0,0 +1,92 @@ +# PROGRESS · 最后一轮回答与操作按钮之间的大段空白(2026-09-26) + +任务书:`TASK-latest-turn-actions-gap-20260926.md`。执行方:Claude 子代理(直接执行模式)。分支 `codex/latest-turn-actions-gap-20260926`,worktree `.worktrees/latest-turn-actions-gap-20260926`,本地提交未推送。 + +## 基线 + +- `origin/staging` = `a57c4310`。 +- 基线全量前端测试(Node 20.19.2):3960 条,pass 3872 / fail 61(均为环境缺口:Node 20 `mock.module` 的 `ERR_MODULE_NOT_FOUND @/…`、无 Docker)。 +- 基线 rootMainFiles gzip 130933 B。 +- BUG 编号:开工时 `docs/BUG_HISTORY.md` 最大 BUG-1041,`docs/tasks/` 无更大号 → 本单 BUG-1042;验证中另查出的两个既有问题记为 BUG-1043、BUG-1044(investigating,未修)。 + +## DOM 核对(D2) + +| 面 | 最后一轮的 `.message-list > :last-child` | 内容 | 用户行 | +| --- | --- | --- | --- | +| 普通咨询 | `div.message-entry`(`chat-transcript.tsx` `MessageEntry`) | `article.message-assistant` → `.message-actions` → `.conversation-follow-ups` | 单独一个 `.message-entry`,不在末轮外层里 | +| 生时校正 | `div.rectification-message-wrap.rectification-message-entry`(`display: grid; gap: var(--space-1)`) | `article.message-assistant` → `.message-actions` → 交付卡 / 只读区间(若有) | 单独一个 wrap,不在末轮外层里 | + +两处外层都**从助手行开始**、都不含用户行,所以 `--latest-turn-head-height` 的口径原样可用:头是用户行时扣用户行高度;头就是这条助手行(BUG-931)时写 `0px`,外层最小高度 = 整个视口,正好把它留在顶部。hook 不需要改逻辑。 + +末轮外层不是助手外层的情况(校正面的 persisted-question / pending-note / error 是最后一个子节点、普通咨询 `error-message`):旧规则 `:last-child .message-assistant` 也匹配不到,新规则 `:last-child:has(.message-assistant)` 同样不匹配,行为不变。 + +## 改动 + +| 文件 | 内容 | +| --- | --- | +| `frontend/src/app/globals.css` | `.conversation .message-list > :last-child .message-assistant { min-height: … }` → `.conversation .message-list > :last-child:has(.message-assistant) { min-height: …; align-content: start; }`。计算式、变量不变。`align-content: start` 是必要的:生时校正外层是 grid,给了最小高度后 `align-content: normal` 会把多余高度分摊给各行,操作行又会离开正文。 | +| `frontend/src/hooks/use-conversation-scroll-anchor.ts` | 只改 `turnHeadHeightForSpacer` 的注释(留白承载者从助手行变为末轮外层,BUG-931 写 0 的理由随之更新)。逻辑未动。 | +| `frontend/tests/chat-notice-and-scroll-contract.test.ts` | 见下「改动既有断言」;新增 1 条。 | +| `frontend/DESIGN.md` | Answer start anchor · Spacer 条目改写。 | +| 记录 | `docs/BUG_HISTORY.md`(BUG-1042 / 1043 / 1044)、`CHANGELOG.md`、`docs/testing/latest-turn-actions-gap-20260926.md` + 4 张截图、`docs/tasks/README.md`。 | + +`:has()` 兼容性:Safari 15.4+ / Chrome 105+ / Firefox 121+,低于本站语法下限 Safari 16.4;`globals.css` 已有多处 `:has()`。 + +### 改动既有断言(三栏也写在测试文件内) + +| 测试 | 原值 | 新值 | 原因 | +| --- | --- | --- | --- | +| 「turn spacer uses conversation viewport variables and is not sticky」 | 选择器 `.conversation .message-list > :last-child .message-assistant` 带该 `min-height` 计算式 | 选择器 `.conversation .message-list > :last-child:has(.message-assistant)` 带同一计算式,并断言 `align-content: start` | BUG-1042:留白从助手行移到整轮外层;计算式与变量口径不变,`sticky` 否定断言保留,变量写入 / 清除的行为断言原样保留 | + +新增「the turn spacer trails the actions row instead of sitting between text and actions (BUG-1042)」:任何 `.message-assistant { … }` 规则里不得出现 `--conversation-viewport`;普通咨询 `MessageEntry` 里 `ChatMessageRow` → `ChatMessageActions` → `ConversationFollowUps` 顺序同在 `.message-entry`;校正面 `ChatMessageRow` 在 `ChatMessageActions` 之前且 `RectificationMessageEntry` 直接挂在 `.rectification-message-wrap` 里。 + +BUG-930 / 931 / 932 的其余断言(`resolveTurnHead`、头即尾写 0、闲置不写留白、`pinLatestTurn` 源码断言、`lastTurnTail` 假 DOM)一条未改。 + +## 测试 + +| 项 | 结果 | +| --- | --- | +| `tsc --noEmit` | 0 错 | +| `npm run lint` | 0 error(126 warning,均为既有) | +| 全量 `npm test` | 3961 条,pass 3873 / fail 61 | +| 失败名单 vs 基线 | 逐条一致,新增失败 0、修好 0 | +| 测试名单 vs 基线 | +1 新名(上面新增那条),消失 0 | +| Python 源码合同 | `test_session_management_entrypoints.py`、`test_daily_and_rectification_entrypoints.py`、`test_birth_time_journey_contract.py` 全过;`test_frontend_theme_contract.py::test_lightweight_warm_palette_contract` 失败,**改动前同样失败**(`--color-ink-secondary` 色值不符,与本单无关,未动) | +| `npm run build -- --webpack` | 通过;`/` ○ Static | +| gzip | rootMainFiles 130933 → 130933 B(0,本单只改 CSS);`index.html` 引用的全部 js/css 合计 656748 B | + +## 真实浏览器验证 + +环境:本地 `next build --webpack` + `next start`,无头 Chrome 151(`--headless=new --disable-dev-shm-usage`),CDP `Fetch` 拦截 `/api/*` 回虚构数据(5 轮虚构历史撑出一屏以上;普通咨询 `/api/consult` 回纯文本,校正 `/api/rectification/agent` 回 ndjson `answer.delta` + `run.completed`)。「改动前」= 同一构建里注入旧规则(新规则 `min-height: 0 !important` + 旧选择器原样),因为本单只改了这一条 CSS。输入框用 CDP `Input.insertText` + Enter 真发问,钉顶由真实 `pinLatestTurn` 完成。 + +「正文末行 → 操作行」= `.message-actions` 顶边 − 末轮回答文本节点最后一行的底边。「开头距顶」= 本轮用户行顶边 − 滚动容器顶边。 + +| 面 | 宽度 | 改动前 间距 | 改动后 间距 | 改动后 开头距顶 | 改动后 外层高度 / 助手行高度 | +| --- | --- | --- | --- | --- | --- | +| 普通咨询 短回答 | 375 | 526px(操作行在视口外) | **23px** | 10px | 589 / 86 | +| 普通咨询 短回答 | 1280 | 608px(操作行在视口外) | **23px** | 10px | 671 / 86 | +| 生时校正 短回答 | 375 | 452px(且开头被顶出视口,见下) | **23px** | 10px | 495 / 66 | +| 生时校正 短回答 | 1280 | 554px(同上) | **23px** | 10px | 597 / 66 | + +23px 即操作行自身间距:同一页面里历史轮(非末轮,从未带留白)的同一量测得也是 23px(普通咨询、生时校正各测一次)。 + +长回答(14 段): + +- 普通咨询 375 / 1280:开头距顶 10 / 9px,「跳到最新」出现;点击后落底(`distanceFromBottom` 0)、按钮消失、操作行可见;随后往末轮插入 400px 内容,仍保持落底(跟随正常)。 +- 生时校正 375 / 1280:本轮开头**没有**停在顶部,回答一到就落底——改动前完全相同(开头位置同为 −1323 / −482px)。定性为既有问题 BUG-1044,见下。 + +截图(入库,375 宽):`docs/testing/latest-turn-actions-gap-20260926/consult-375-{before,after}.png`、`rectification-375-{before,after}.png`。其余(1280、长回答、跳到最新后)在执行方 scratchpad `gap/`,未入库。校正截图底部的「合盘历史暂时无法读取」提示是虚构数据没回合盘接口所致,与本单无关。 + +附带改善:改动前校正面短回答结算时,操作行追加在已撑满视口的助手行之后,内容变高触发贴底跟随,把本轮开头顶出视口(上表「改动前」开头距顶 −118px);改动后操作行落在外层的最小高度之内,内容总高不变,开头留在顶部。 + +## 验证中查出的既有问题(未修,前后表现一致) + +1. **BUG-1043**:刷新或经 `?c=` / 启动落点直接进入已有消息的普通咨询会话时,`useConversationScrollAnchor` 的 scroll 监听与 ResizeObserver 一次都没挂上(给 `addEventListener` / `ResizeObserver.observe` 打点实测为 0),结果短回答也显示「跳到最新」、滚动不更新、点击后不跟随。先 `/?new=1` 再点侧栏进入同一会话则正常(本单的普通咨询测量都走这条路径)。推测:加载闸门期间容器未挂载、effect 早退,揭幕后依赖不变不重跑。 +2. **BUG-1044**:生时校正钉顶后静止时 `distanceFromBottom` = 94 ≤ 阈值 96,`measure()` 当成「回到底部」解除 `holdUnpin`、`anchored` 翻真,长回答随后贴底。普通咨询同一时刻约 198,不触发。 + +两条都在 hook 里,任务书红线禁止改 hook,只记为 investigating,建议另开单。 + +## 未做 / 环境缺口 + +- 登录态 iPhone Safari 真机:留给 `docs/testing/latest-turn-actions-gap-20260926.md`。 +- 未部署、未推送。 diff --git a/docs/tasks/README.md b/docs/tasks/README.md index ddd8c3f3..ea2f2c14 100644 --- a/docs/tasks/README.md +++ b/docs/tasks/README.md @@ -124,6 +124,7 @@ | `TASK-scroll-anchor-hook-fixes-20260926.md` | — | **滚动锚两处老问题**:直接打开已有会话时监听未挂上(BUG-1043)、校正长回答钉顶后因 96px 阈值被拉到底(BUG-1044)。排在 BUG-1042 合入后 | 待领取 | — | | `TASK-latest-turn-actions-gap-20260926.md` | — | **最后一轮正文与点赞 / 踩之间空大半屏**:BUG-930 钉顶留白(`min-height: 视口 − 本轮开头`)加在 `.message-assistant` 上,把兄弟节点 `.message-actions` 推到留白之后;改为加在整轮外层,按钮紧贴正文、空白落在后面;不动滚动 hook | 待领取 | — | | `TASK-starter-home-polish-20260926.md` | `PROGRESS-starter-home-polish-20260926.md` | **首页开场小字与图标**:今日趋势(每日模型生成,非写死)移到问候下方副行;入口下方提示只在有未完成校正或非本人时出现,删两句固定文案并修正已校正仍显示首次文案的分支;今日星语图标 MoonStar、点数图标 Coins。排在 BUG-1038、1040 之后。分支误判实为入口摘要解析读错键名(BUG-1041) | 已验收(Claude 09-26 直接执行:子代理实现并查出 BUG-1041 入口摘要驼峰/下划线字段不一致;Claude 改恢复提示文案为「可以在历史对话里接着做」;独立复验 tsc/lint 0、全量 3960 条失败名单与基线逐条一致、四路由 ○、gzip 不变) | `f04da103`(已部署 `62d4c9c4`,health 一致) | +| `TASK-latest-turn-actions-gap-20260926.md` | `PROGRESS-latest-turn-actions-gap-20260926.md` | **末轮回答与点赞一排之间大段空白**:BUG-930 的钉顶留白加在助手行上,把其后的 `.message-actions` 顶到留白之后;改加在整轮外层(`:last-child:has(.message-assistant)` + `align-content: start`),不改 hook。验证中另查出既有 BUG-1043(直接进入普通咨询会话时滚动锚监听未挂上)、BUG-1044(校正长回答钉顶后被拉到底),未修 | 待验收 | `codex/latest-turn-actions-gap-20260926`(BUG-1042) | | `TASK-home-warm-return-20260926.md` | — | **从其他页面回首页不再放加载动画**:首页按组件挂载计揭幕,客户端返回会重跑模型列表 / 后台状态 / 入口摘要 / 今日星语(3–5 次往返 + 最多 4 秒)。产品定:每次打开网页只揭幕一次;模块级暖快照按账户隔离、只存内存,暖返回首帧即就绪、后台静默刷新;缺项回落冷启动,不许半揭幕。**排在 BUG-1038 合入后**。BUG-1040 | 已验收(Claude 09-26 直接执行:子代理实现,Claude 独立复验 tsc/lint 0、全量 3953 条失败名单与基线逐条一致、四路由 ○、gzip 不变;CDP 实测回首页 5.5 s → ~20 ms、无加载环) | `638b6a60`(已部署 `7475eb6e`,health 一致) | | `TASK-new-chat-from-people-20260926.md` | `PROGRESS-new-chat-from-people-20260926.md` | **从星盘档案页点新建对话落回上一次生时校正**(产品 09-26 真机):标题显示旧校正会话、输入框「正在打开生时校正…」,中间却是新对话开场;另有两套新建入口(`?new=1` 与 `?newChat=1`)违反 BUG-1015 一处解析红线。先复现写失败测试、定位跨页残留状态再修,合并入口。BUG-1038 | 已验收(Claude 09-26 直接执行:子代理复现并定位 sessionStorage 登录返回存根;Claude 独立复验 tsc/lint 0、全量 3928 条失败名单与基线逐条一致、四路由 ○、gzip 不变、修复前后截图核对) | `0a8350cc`(已部署 `6a22626d`,health 一致) | | `TASK-people-archive-p1-fix-20260925.md` | `PROGRESS-people-archive-p1-fix-20260925.md` | **P0修复**:worker按持久化人物解析、真实删除预留退款、本人历史OR is、切人/消息时序及P2/P3;BUG-1031/1032,关联1030/990/1024。永久定向54/54、独立前端5探针与退款r4六场景通过;必须最终Node22 Linux全量+DB逐条基线对照 | 已验收(Claude 09-25:两 P0、两 P1、七 P2 通过;新 P2 删后跳错人、人物接口故障连累聊天 → 收尾单) | `4d801e53`(已部署,health 核对一致) | diff --git a/docs/testing/latest-turn-actions-gap-20260926.md b/docs/testing/latest-turn-actions-gap-20260926.md new file mode 100644 index 00000000..197b925e --- /dev/null +++ b/docs/testing/latest-turn-actions-gap-20260926.md @@ -0,0 +1,11 @@ +# 回答与操作按钮间距 · 真机清单(2026-09-26) + +本轮在本地 `next start` + 无头 Chrome 里用虚构接口数据验证并截图(`latest-turn-actions-gap-20260926/`,375 宽改动前后各一张),没有登录态真机。部署到 staging 后请用自己的账户在 iPhone Safari 上照做: + +1. 打开一个已有几轮内容的普通对话,问一个很短就能答完的问题(比如「谢谢」之后再问「今天适合出门吗」)。回答结束后:点赞 / 踩 / 复制 / 重试一排**紧贴在回答最后一行下面**,中间没有大片空白;你刚问的那句话停在屏幕顶部附近。 +2. 同一个对话里有「可以继续问」的建议按钮时:它们也紧跟在点赞一排下面,空白在它们之后。 +3. 打开一个生时校正会话,打一句简短的经历发出去。助手回复结束后同样:操作按钮紧贴回复,空白在按钮下面。 +4. 问一个会得到长回答的问题:回答超过一屏时底部出现「跳到最新」,点一下滚到最后,点赞一排在最后一段下面。 +5. 以上在横屏或桌面浏览器(宽屏)各看一次,表现一致。 + +已知、与本轮无关(已记为 BUG-1043 / BUG-1044,未修):刷新后直接回到普通对话再发问,短回答下也可能出现「跳到最新」;生时校正里长回答可能直接滚到最后一个字,而不是停在开头。看到这两种情况请记下,不算本轮不通过。 diff --git a/docs/testing/latest-turn-actions-gap-20260926/consult-375-after.png b/docs/testing/latest-turn-actions-gap-20260926/consult-375-after.png new file mode 100644 index 0000000000000000000000000000000000000000..330d49de88a7c77fa96510b0639f418c3c49aada GIT binary patch literal 24125 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 literal 0 HcmV?d00001 diff --git a/docs/testing/latest-turn-actions-gap-20260926/consult-375-before.png b/docs/testing/latest-turn-actions-gap-20260926/consult-375-before.png new file mode 100644 index 0000000000000000000000000000000000000000..bf18baef01ca117df0c493edc2ed21f63d9f14c4 GIT binary patch literal 23027 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 literal 0 HcmV?d00001 diff --git a/docs/testing/latest-turn-actions-gap-20260926/rectification-375-before.png b/docs/testing/latest-turn-actions-gap-20260926/rectification-375-before.png new file mode 100644 index 0000000000000000000000000000000000000000..b376f8d18c3552bc59a2bb0291a87a7885e370e5 GIT binary patch literal 23363 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 :last-child .message-assistant { + head at the top. Variables are written by useConversationScrollAnchor. + The spacer sits on the whole turn entry (assistant row + .message-actions + + follow-ups / delivery card), not on the assistant row, so the actions stay + under the text and the empty space trails them (BUG-1042). align-content + keeps the rectification wrap's grid rows from stretching into that space. */ +.conversation .message-list > :last-child:has(.message-assistant) { min-height: calc(var(--conversation-viewport, 0px) - var(--latest-turn-head-height, 0px)); + align-content: start; } .message-thinking { margin: 0 0 var(--space-3); diff --git a/frontend/src/hooks/use-conversation-scroll-anchor.ts b/frontend/src/hooks/use-conversation-scroll-anchor.ts index bc9b3091..7b4f02bc 100644 --- a/frontend/src/hooks/use-conversation-scroll-anchor.ts +++ b/frontend/src/hooks/use-conversation-scroll-anchor.ts @@ -84,8 +84,11 @@ export function lastTurnTail(container: HTMLElement): HTMLElement | null { export function turnHeadHeightForSpacer(head: HTMLElement | null, tail: HTMLElement | null): number { if (!head) return 0; - // The last assistant carries the min-height spacer. Measuring it as the turn - // head feeds the spacer back into itself (BUG-931). + // The last turn's entry, which starts at this assistant row, carries the + // min-height spacer (BUG-1042). Subtracting the row's own height would leave + // that entry one row short of the viewport; before BUG-1042 the row itself + // carried the spacer and measuring it fed the spacer back into itself + // (BUG-931). Either way the head-is-tail case subtracts nothing. if (tail && head === tail) return 0; return head.offsetHeight; } diff --git a/frontend/tests/chat-notice-and-scroll-contract.test.ts b/frontend/tests/chat-notice-and-scroll-contract.test.ts index 30d9c2eb..74b48d3b 100644 --- a/frontend/tests/chat-notice-and-scroll-contract.test.ts +++ b/frontend/tests/chat-notice-and-scroll-contract.test.ts @@ -218,16 +218,21 @@ test("resolveTurnHead prefers the user row unless this turn has no user", () => }); test("turn spacer uses conversation viewport variables and is not sticky", () => { + // 原值:选择器 `.conversation .message-list > :last-child .message-assistant`(留白加在助手行上)。 + // 新值:`.conversation .message-list > :last-child:has(.message-assistant)`(留白加在整轮外层,含 .message-actions / 追问建议 / 交付卡)。 + // 原因:BUG-1042——助手行的 min-height 把其后的点赞 / 踩 / 复制 / 重试一排顶到留白下面;计算式与变量口径不变(BUG-930 钉顶保持)。 assert.match( globalsSource, - /\.conversation \.message-list > :last-child \.message-assistant \{[^}]*min-height: calc\(var\(--conversation-viewport, 0px\) - var\(--latest-turn-head-height, 0px\)\)/, + /\.conversation \.message-list > :last-child:has\(\.message-assistant\) \{[^}]*min-height: calc\(var\(--conversation-viewport, 0px\) - var\(--latest-turn-head-height, 0px\)\)/, ); const spacerRule = sourceBetween( globalsSource, - ".conversation .message-list > :last-child .message-assistant {", + ".conversation .message-list > :last-child:has(.message-assistant) {", "}", ); assert.doesNotMatch(spacerRule, /sticky/); + // The rectification wrap is a grid: without this its rows stretch into the spacer. + assert.match(spacerRule, /align-content:\s*start/); assert.doesNotMatch(anchorSource, /position:\s*sticky/); const scroller = fakeScroller([], 400); @@ -240,6 +245,20 @@ test("turn spacer uses conversation viewport variables and is not sticky", () => assert.equal(scroller.style.getPropertyValue("--latest-turn-head-height"), ""); }); +test("the turn spacer trails the actions row instead of sitting between text and actions (BUG-1042)", () => { + // No rule may put the viewport spacer on the assistant row itself. + assert.doesNotMatch(globalsSource, /\.message-assistant\s*\{[^}]*--conversation-viewport/); + // Both surfaces render the actions inside the same last-child entry, after the row. + const transcript = readFileSync(new URL("../src/components/chat-transcript.tsx", import.meta.url), "utf8"); + const entry = sourceBetween(transcript, '
', "
"); + assert.ok(entry.indexOf("\s* { const priorUser = fakeRow("message-user", 8, 40); const priorAssistant = fakeRow("message-assistant", 56, 80);