diff --git a/context/code/clients.md b/context/code/clients.md index 514b4281..9b5b21d2 100644 --- a/context/code/clients.md +++ b/context/code/clients.md @@ -1630,10 +1630,80 @@ now spelled twice — `src/ui/grid.rs` and `web/shell.js::gridPlan` — which fa the `indicator()` precedent (the collapse glyph is spelled in both ends while the *fact* is shared) and because the alternative is a protocol-level string table for one word; `invariant(a_ui_string_is_keyed_by_a_command_never_by_a_key)` -is where it belongs if a second such string ever appears. And the page bar is -**display-only**: it shows the cycle position so `[`/`]` have an affordance, but -clicking an entry does nothing, because composing a page change from a click -needs a `click_page` on the wasm surface that does not exist yet. +is where it belongs if a second such string ever appears. + +### The page bar is a control (improvise-rw6l) + +It was display-only until improvise-rw6l, and this file said so, naming the +missing `click_page` on the wasm surface as the reason. That is now built, and +it cost less than the note implied: `PageAxis::items` was already projected and +`ModelCommand::SetPageSelection` was already on the wire. The only gap was that +`RenderPageAxis` **dropped the names** — it carried a position and a count, +which is everything improvise-p1ym needed for `[`/`]` and nothing a menu needs. + +**The widening puts `items` inside `cycle`, not beside it.** That is the whole +design: one predicate, not two. A Filter axis has no `cycle`, so it has no +items, no down-arrow, is painted as a `` rather than a `