Skip to content

fix(mobile): forward swipe scrolling to the desktop terminal - #498

Merged
Kuddev merged 9 commits into
mainfrom
fix/mobile-ai-scroll-20261006
Oct 6, 2026
Merged

Kuddev merged 9 commits into
mainfrom
fix/mobile-ai-scroll-20261006

Conversation

@Kuddev

@Kuddev Kuddev commented Oct 6, 2026 •

Copy link
Copy Markdown
Owner

Result / 用户结果

修复手机连接桌面后,在 AI CLI 终端中滑动却只移动当前画面、未滚动历史对话的问题。手机原始网格视图在本地画面边缘转发滚轮事件;桌面按既有鼠标接管、备用屏和终端回滚规则处理,并返回受控视口。

手机端和桌面端都需要包含本次改动。旧桌面通过能力协商保持原有行为,原始网格模式支持远程滚轮,手机重排阅读模式继续使用本地滚动。

Design / 设计边界

  • 增加有界 pane.scroll 输入请求,复用现有认证、明确窗口/窗格目标、权限检查、顺序队列和断线后不重放策略。只读连接不发送滚轮;输入法未直连的草稿模式也可在授权后滚动。
  • 桌面复用 TerminalView::on_scroll,不从手机硬编码 Page Up,不抢窗口焦点,不调整桌面 PTY 尺寸。
  • 手机先平移未显示完的当前网格,再转发越界的整行位移;保持缩放、选区和横向平移。
  • screen_viewport 为显式能力协商后的读取选项。既有实时 screen 和文本 tail 的默认行为不变;帧仍保持 400 列、200 行、40000 格及原有文本上限,不逐帧发送全部历史。
  • 滚轮回执只包含操作结果,不为连续滑动构造再丢弃整窗/标签状态快照。
  • 未新增依赖、常驻线程、无界缓存或持久化格式。协议 schema、共享移动端输入策略和因果说明随代码更新。

Evidence / 验证依据

  • 本机 Windows 从修复源码构建:10 项 Rust 定向测试通过,涵盖彩色网格/历史视口、输入范围、只读权限、SGR 鼠标滚轮、备用屏与原生回滚。
  • Android:40 项 JVM/Robolectric 回归通过(输入队列 8、连接/恢复 9、真实触摸及终端视图 23),包含滚轮通过 RuntimeClient 到传输层、受控视口协商、手势与输入隔离。
  • 格式、基线架构、平台条件计数(467/468)、diff、JSON schema 正反例通过。
  • 精简滚轮回执后的完整工作区目标路由/不切换标签回归已通过;已交付 2.1.2 候选的完整 Windows 测试及 Android 测试保留。当前整合 head 的 CI 正在重新验证,不沿用旧 head 的绿灯。
  • JVM 测试使用已有未改动的 JNI 构建输入,未通过跳过任务制造通过;这不代表构建了发布 APK。
  • 尚未做物理手机连接真实 AI CLI 的升级后验收,不宣称已更新用户正在使用的应用。

Required Review / 必须确认

  • 遵循贡献指南、架构和工程约束。
  • 沿既有输入/滚轮/读取职责接线,没有新增第二套滚动规则。
  • 未增加预算、降低测试断言或删除回归。
  • 正反例和实机验收边界分别说明。
  • 无新增 UI 文案;因果说明记录协议、权限与性能取舍。

Current integration / 当前整合

  • 当前 head 4ebcfaa241006bdf4663b7946f95c77a60a89b76 已同步含 fix(completion): keep WSL command menus stable and accept editor queries #504 补齐修复的 main。
  • 撤回本分支此前的重复平台重构,完整采用 main 已有的媒体后端与共享资源预算;没有删除视频/GIF/WGSL 能力。
  • 对 main 的差异缩减为 25 个文件、689 行新增与 43 行删除,只保留移动端滚动及协议/验证接线。
  • 这 25 个文件与已验证并交付的 66aaa7e3 候选逐文件相同;架构及平台条件检查在当前整合树通过。最终合并仍等待当前 head 的必需检查及所有实际选中原生任务。

@github-actions github-actions Bot added the size/L 501–1500 行 label Oct 6, 2026
Kuddev added 3 commits October 6, 2026 20:32
Retain main media backend ownership and its CI profile; keep the authenticated mobile scrolling changes.

@Kuddev Kuddev left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

已对当前 head 4ebcfaa 重新核查:

  • pane.scroll 保留鉴权、明确窗格目标、32 行范围和当前网格坐标检查;只读移动连接仍拒绝输入。
  • 滚动复用 TerminalView 的既有鼠标、备用屏和历史规则,不切换用户标签,不改变桌面终端尺寸。
  • 视口读取为显式能力;既有实时 screen/tail 默认值和帧大小限制保留。连续滚动回执不再构建完整工作区快照。
  • 手机保留缩放、文本选区、横向平移、顺序输入和断线不重放策略;没有新增依赖、轮询线程或推广内容。
  • 撤回此前重复的媒体平台重构,采用 main 已有后端。对 main 的 25 个差异文件与已测 66aaa7e 候选逐文件相同;当前树的架构及平台条件检查通过。

原有 40 项 Android 回归、10 项定向 Rust 验证及完整工作区滚动路由回归可追溯。当前整合 head 的 CI 正在重新运行;只在必需检查和实际选中原生任务通过后正常合并,不冒称已完成物理手机验收。

@Kuddev
Kuddev merged commit 335e5a0 into main Oct 6, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/L 501–1500 行

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant