- The anchor listener and follow observer now attach whenever the scroller element itself appears (checked after every commit, no-op unless element, active or resetKey changed). The home page mounts `.conversation` after its loading screen with unchanged active/resetKey, so a directly opened session never got a listener, never landed on its newest content, showed the jump chip under short replies and did not follow after pressing it. - After a pin, geometry no longer releases the hold: only a wheel, touch drag, scroll key or scrollbar press followed by a scroll within 1s does. The rectification pin rests 94px from the bottom, inside the 96px threshold, which dragged long replies to their last line. - Real React lifecycle tests (loading screen -> reveal, 94px rest), DESIGN, BUG history, PROGRESS, CHANGELOG, device checklist and CDP screenshots. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
1.8 KiB
1.8 KiB
滚动锚两处老问题 · 真机清单(2026-09-26)
本轮在本地 next start + 无头 Chrome 里用虚构接口数据验证并截图(scroll-anchor-hook-fixes-20260926/,375 宽改动前后各两张),没有登录态真机。部署到 staging 后请用自己的账户照做,iPhone Safari 与桌面浏览器各一遍:
普通对话(BUG-1043)
- 打开一个已有好几轮内容的普通对话,然后刷新页面。揭幕后画面停在最后一条回答(不是停在中间某条)。
- 问一个很短就能答完的问题。回答结束后:你的问题停在屏幕顶部附近,底部没有「跳到最新」。
- 手指往上滑一点再滑回来,「跳到最新」不会一直挂着。
- 再问一个会得到长回答的问题。回答超过一屏时底部出现「跳到最新」;点一下滚到最后,之后回答继续变长,画面一直跟着最后一行。
- 从侧栏复制这条对话的链接(带
?c=),在新标签页里直接打开,重复 2 和 4,表现一致。
生时校正(BUG-1044)
- 打开一个生时校正会话,打一段会让助手长篇回复的经历发出去。回复超过一屏时:本轮开头停在屏幕顶部,底部出现「跳到最新」,画面不会自己跳到最后一个字。
- 不碰屏幕等回复写完,开头仍在顶部。
- 用手指往下滑到最底。之后若回复还在变长(或下一段出现),画面跟着最后一行走。
- 点一个选项按钮(没有打字的那种一轮):新回复的开头同样停在顶部,不被拉到底。
看到下面任一情况算不通过,请截图:刷新后短回答下仍有「跳到最新」;点了「跳到最新」后回答再变长画面不跟;校正长回复一到就滚到最后一个字;滑到底后不再跟随。