Add session scrolling, latest-message navigation and fingerprint location under the shared UI gate; reuse navigation in history reads and provide read-only smoke. Navigation index snapshot passed 124 tests and a full build. Windows 4.1.13.63 read-only validation passed 10/10, including two-scroll history location; no sends. Record scope limits, including next-unread navigation not yet implemented.
2.4 KiB
2.4 KiB
导航增量验收 — 2026-09-06
本次实现
session scroll --direction up|down --pages N:会话列表滚动;默认不输出联系人名称,--include-content显式开启。chat latest [--session <name>]:回到指定会话的最新可见消息。chat locate --fingerprint <可见消息指纹> [--session <name>] [--scrolls N]:有界向上搜索并将匹配行带入视口。chat history支持--session;两个历史读取入口复用共享滚动与回到最新逻辑,不再按累计滚轮距离猜测返回位置。chat merged-open是可选的卡片窗口导航,仅返回新窗口句柄,不负责内容提取。合并内容的正式读取由独立的db merged实现。- 增加
smoke --read-only,明确返回sendSkipped=true、confirmed=false;只读验证不发送标记。
所有 UI 操作使用现有跨进程命令锁、输入桌面检查和会话核验。先使用 UIA Scroll/ScrollItem,缺失时使用集中维护的滚轮兜底;不点击输入框、不发送或转发消息。
验证
- 微信
4.1.13.63,Windows 真机10.1.1.101的现有已登录会话。 - 发布目录:
C:\Users\Rogee\wx-agent\releases\navigation-20260906T113948。 - Linux Core 测试 124/124,完整 Release build 0 warnings / 0 errors。
Test-Navigation.ps1最终 10/10 通过,发送次数 0:doctor、inspect-ui、只读 smoke、会话下滚/上滚、回到最新、历史读取、定位、再次回到最新、打开合并卡片。- 定位测试确实向上滚动 2 次后找到指定指纹,不是仅匹配当前页。
- 第一次脚本将 JSON 枚举误作数字,7 步后主动停止;修正为
Text/Merge后完成第二次只读验证。未把第一次失败记为通过。
脱敏证据:evidence/Navigation-20260906/。不提交联系人名称、消息正文或完整 UI 树。
边界
- 指纹是现有 UIA 可见快照指纹,不是数据库 server ID;相同文本重复消息在不同视口的身份仍有局限,不能据此进行不可逆操作。
- 无原生滚动百分比时,“回到最新”依赖连续稳定视口,不宣称数据库历史完整性。定位达到滚动上限返回
ResultUnconfirmed;视口停止变化而未找到返回ControlNotFound。 - 本增量未实现“下一个未读会话”。会话列表缺少已验证的未读标记时,不从预览文本猜测未读状态。