Skip to content

[Bug] 对话区接近底部时正文突然上跳:滚轮下行被回贴区吸到底,询问卡片/审批请求到达时被末端锚定拖动 #811

Description

@AlphaCatMeow

Affected area

Desktop UI (agent-gui / React)。实际涉及 WebUI 转写区(agent-gateway/web)与两端共用的 virtual-core fork,桌面端走同一套滚动跟随引擎。

Version or commit

main@4eb6a4a8(v1.3.5)

Environment

OS: Windows 11 Pro 26100
Deployment: WebUI(gateway);复现与归因在无头 Edge 153(Chromium,关闭平滑滚动)
Model provider: 无关

Steps to reproduce

  1. 打开一段较长的对话,向上滚动一段后用滚轮向下滚回底部,观察正文。
  2. 让模型调用 AskUserQuestion,或触发一次工具审批;在卡片/审批到达前把正文向上滚一点,停在距底约 100~200px 处。
  3. 观察卡片或审批请求出现时正文的位置。

Expected behavior

  • 向下滚动时正文按滚轮步进移动,到达底部后自然恢复跟随。
  • 已脱离跟随的读者不应被新内容拖动:卡片或审批请求到达只在底部增高,视口里的内容不动。

Actual behavior

  • 滚轮进入距底 192px 内的那一 tick,正文被直接钉到底,复现页实测单 tick 视觉位移 231px。
  • 停在距底约 220px 内时:AskUserQuestion 卡片到达,视口被拖 305px;工具审批请求到达(工作轨迹强制展开)被拖 63px;末行流式增高 470px 被拖 302px。停在 400px 处均为 0。

根因

  1. 共享滚动跟随引擎 scrollFollowCore 的 192px 回贴区(reattachZonePx):手势下行进入区间即 pin 到底。
  2. virtual-core resizeItemwasAtEndgetVirtualDistanceFromEnd()(列表局部坐标)判"在末端",不含转写 shell 的 18px padding 与 194px 底部占位,于是距真实 clamp 约 220px 内都算"在末端",任何底部行尺寸变化都经 applyScrollAdjustment 直写 scrollTop。
  3. WebUI 工作台背景 Pane 另有一套手写贴底:距底 48px 即视为跟随,行数一变就写 scrollTop。

Logs / screenshots

复现与归因工具随修复 PR 提交:crates/agent-gateway/web/test/browser/scroll-follow-probe.html + scroll-follow-probe.cdp.mjs,按调用栈把每次程序化滚动写入归到 follow-engine / virtualizer,并用视口顶部行的屏幕位移衡量肉眼可见的跳动。

Pre-submit checklist

  • I searched existing issues and pull requests and found no duplicates.
  • This is not a security vulnerability (report those privately via Security Advisories).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions