feat: add bounded session and history navigation

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.
This commit is contained in:
2026-09-06 20:09:00 +08:00
parent c49f6a10b2
commit e5548bd471
13 changed files with 563 additions and 24 deletions
@@ -0,0 +1,10 @@
{
"Scrolls": 2,
"message": {
"Fingerprint": "1e59c51f8086b6ec6d80e34a16daabc0359f0fd4f4633289113e653b9b0ab166",
"Type": "Text",
"length": 61,
"content": null,
"quote": null
}
}
@@ -0,0 +1,56 @@
{
"Scrolls": 2,
"ViewportChanged": true,
"sessions": [
{
"name": null,
"nameId": "sha256:1DC65E74B01A64FA",
"IsCurrent": false
},
{
"name": null,
"nameId": "sha256:B0E5330510C53A70",
"IsCurrent": false
},
{
"name": null,
"nameId": "sha256:4DF34FAE92A9BB26",
"IsCurrent": false
},
{
"name": null,
"nameId": "sha256:2EF8DCA410614184",
"IsCurrent": false
},
{
"name": null,
"nameId": "sha256:2092711F288D71DA",
"IsCurrent": false
},
{
"name": null,
"nameId": "sha256:AD8DF8A5CA6DCC46",
"IsCurrent": false
},
{
"name": null,
"nameId": "sha256:BA4121C435EF5D04",
"IsCurrent": false
},
{
"name": null,
"nameId": "sha256:563C6AC6EFB52329",
"IsCurrent": false
},
{
"name": null,
"nameId": "sha256:5F1E8BDE6155432A",
"IsCurrent": false
},
{
"name": null,
"nameId": "sha256:D93D7F06AE52537F",
"IsCurrent": false
}
]
}
@@ -0,0 +1,56 @@
{
"Scrolls": 2,
"ViewportChanged": true,
"sessions": [
{
"name": null,
"nameId": "sha256:28032CB51B5D5918",
"IsCurrent": false
},
{
"name": null,
"nameId": "sha256:EC654065E79D4554",
"IsCurrent": false
},
{
"name": null,
"nameId": "sha256:C7CE04276AC5A9C4",
"IsCurrent": false
},
{
"name": null,
"nameId": "sha256:9F775FAD499E92FF",
"IsCurrent": false
},
{
"name": null,
"nameId": "sha256:2B55CD2E01D1E400",
"IsCurrent": false
},
{
"name": null,
"nameId": "sha256:A5B67004830C26E7",
"IsCurrent": false
},
{
"name": null,
"nameId": "sha256:8ABDA031D8E42C4E",
"IsCurrent": false
},
{
"name": null,
"nameId": "sha256:68C6E1577C7F5576",
"IsCurrent": false
},
{
"name": null,
"nameId": "sha256:BFE36215E3C4FDAA",
"IsCurrent": false
},
{
"name": null,
"nameId": "sha256:1DC65E74B01A64FA",
"IsCurrent": false
}
]
}
@@ -0,0 +1,11 @@
{
"scope": "M1",
"doctorErrors": [],
"output": "C:\\Users\\Rogee\\wx-agent\\releases\\navigation-20260906T113948\\artifacts\\ui-tree.json",
"nodes": 154,
"sanitized": true,
"sentTo": null,
"Fingerprint": null,
"sendSkipped": true,
"confirmed": false
}
@@ -0,0 +1,47 @@
{
"Checks": [
{
"Stage": "doctor",
"ExitCode": 0
},
{
"Stage": "inspect-ui",
"ExitCode": 0
},
{
"Stage": "smoke",
"ExitCode": 0
},
{
"Stage": "sessions-down",
"ExitCode": 0
},
{
"Stage": "sessions-up",
"ExitCode": 0
},
{
"Stage": "latest-before",
"ExitCode": 0
},
{
"Stage": "history",
"ExitCode": 0
},
{
"Stage": "locate",
"ExitCode": 0
},
{
"Stage": "latest-after",
"ExitCode": 0
},
{
"Stage": "merged-open",
"ExitCode": 0
}
],
"SendsAttempted": 0,
"BinarySha256": "F443EC6EF044F66349E55EBEB4ED0109EA13C96D8216079AEAEE3A19DF9A32DA",
"Success": true
}