diff --git a/docs/RUST.md b/docs/RUST.md index 7cbce0d..0fffea1 100644 --- a/docs/RUST.md +++ b/docs/RUST.md @@ -5374,7 +5374,54 @@ device. before/after screenshot pair for item 3 (blocked on item 2); anything on Vulkan or the real phone. -- [ ] **P1 — session screen parity.** History paging backward (with the +- [ ] **P1 — session screen parity.** **Started 2026-09-06, on Iris's + word**: "just continue with the plan for now; try to move towards + feature parity for the transcript screen so that the test can be + more fair." So P0's "must pass before P1 starts" is lifted — the + phone bench continues alongside, and parity is what makes its + comparison fair. **Sub-order, decided by the design agent, by what + the bench fixture exercises and Compose already draws** (each is + one agent; tick and date in place): + - [ ] **P1a — markdown block rendering parity.** Now that a row is + a column of per-block widgets (`e1030d6`), draw each block + the way Compose does: headings at their sizes, fences in a + mono face with `client-core`'s `highlight` spans and a + distinct background, bullet/numbered lists with indent, + tables as aligned columns, block quotes, links as tappable + spans (opening through the platform — the "tappable link" + primitive in IRIS_TODO's "Build (for the port)"). Against + `app/bench-fixture/`, screenshot beside the Compose bench + build on the same emulator. Pure parts (block → style + mapping) tested in `client-core`/`transcript-ui`. + - [ ] **P1b — tool-call cards and grouping.** `ToolRows.kt`/ + `ToolInput.kt`'s cards: a collapsed row per call with name + and a one-line summary, expand to input and output, runs of + calls grouped (`adopt_run` already groups in `client-core`), + the busy/failed states, and the kilobyte outputs the fixture + carries without laying them out while collapsed. + - [ ] **P1c — history paging and jump-to-latest.** Wire + `client-core::transcript_source` into `transcript-ui`: + the opening page, paging back on scroll with the cushion + measured in on-screen viewports (`HISTORY_SCREENS`, IRIS_TODO + "Build (for the port)"), the `NothingLoaded`/empty/error + states drawn distinctly (UI_RULES: design the unknown state + first), `join_pages` at each seam, and a jump-to-latest + control that pins to the newest end. Pass condition: the + P1 pass condition below, against `ui-sandbox.sh` with + `AI_SANDBOX_BIG_MB` and `--delay`. + - [ ] **P1d — images, the session settings dialog, attachments, + usage bar.** `SessionImage` thumbnails (the scaled image + widget), the modal primitive and `SessionSettingsDialog`/ + `UsageDialog`, `PendingAttachments` over the attachments + route (`api.rs` gap), `SessionUsageBar` (the gauge widget). + - [ ] **P1e — keyboard and insets behaviours** from AGENTS.md's + "Things that have bitten", re-verified on the phone build: + composer never left floating after the keyboard closes + mid-stream, `adjustResize` + edge-to-edge together, one + recomposition-equivalent per keyboard toggle (the + `iris insets:` log line count). + + History paging backward (with the page-boundary healing `client-core` does not have yet, below), `TranscriptSource`-backed cache/server stitching, jump-to-latest, tool-call cards and grouping, the session settings dialog, composer