fix(gui): tail history page carries the full-log todo projection
The client's todos projection derived only from the paged display window, so reopening a session whose last todo/write preceded the tail page showed an empty plan until the user paged back — session-level state cannot be reconstructed from an arbitrary window. The host owns the full log, so the tail history response now attaches todos (latest todo/write backscan, the same posture as the view pairing); installWindow seeds it, window rebuilds preserve it, and any in-window or live write keeps overwriting it. The fixture mirrors the host; docs and both Agent Notes record the mechanism.
This commit is contained in:
@@ -32,4 +32,4 @@ The dedicated `todo_write` chat row registers through the named `ctx.toolviews`
|
||||
|
||||
## Consequences
|
||||
|
||||
Replay correctness is owned by one code path: any future change to window rebuild keeps todos consistent for free, and the fixture (fx-alpha turn 63) plus `scripts/verify-todo-display.mjs` pin the full chain (panel visibility, row summary, details linkage, collapse, dark theme) in a real chromium. `todos` is a required `ConversationSnapshot` field, so scripted fakes in specs must carry it. The ACP bridge's todo → `plan` mapping and the TUI panel are untouched; the web surfaces render the same event with no new wire vocabulary. Known gap: the projection is window-scoped — reopening a session whose last `todo/write` precedes the tail history page shows an empty plan until the user pages back to it; restoring the tool note's cold-load reconstruction promise needs the current projection independent of the display window (host-attached on the history response, or a dedicated read).
|
||||
Replay correctness is owned by one code path: any future change to window rebuild keeps todos consistent for free, and the fixture (fx-alpha turn 63) plus `scripts/verify-todo-display.mjs` pin the full chain (panel visibility, row summary, details linkage, collapse, dark theme) in a real chromium. `todos` is a required `ConversationSnapshot` field, so scripted fakes in specs must carry it. The ACP bridge's todo → `plan` mapping and the TUI panel are untouched; the web surfaces render the same event with no new wire vocabulary. Cold-load reconstruction is host-backed: the tail history page carries `todos` — the full-log latest `todo/write`, computed independently of the page window (the same backscan posture the view pairing uses) — so a reopened session restores the plan even when the last write precedes the window; the seeded value is preserved across window rebuilds and overwritten by any later write.
|
||||
|
||||
Reference in New Issue
Block a user