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.
30 lines
2.4 KiB
Markdown
30 lines
2.4 KiB
Markdown
# 导航增量验收 — 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/`](evidence/Navigation-20260906/)。不提交联系人名称、消息正文或完整 UI 树。
|
||
|
||
## 边界
|
||
|
||
- 指纹是现有 UIA 可见快照指纹,不是数据库 server ID;相同文本重复消息在不同视口的身份仍有局限,不能据此进行不可逆操作。
|
||
- 无原生滚动百分比时,“回到最新”依赖连续稳定视口,不宣称数据库历史完整性。定位达到滚动上限返回 `ResultUnconfirmed`;视口停止变化而未找到返回 `ControlNotFound`。
|
||
- 本增量未实现“下一个未读会话”。会话列表缺少已验证的未读标记时,不从预览文本猜测未读状态。
|