HumanInputRequest asks a question with answers to pick and a line to
write one; CostBreakdown totals a session and splits it by part.
InterruptButton, TokenUsageChart, TraceViewer and EvalResultTable
point to chat::stop_button, a stacked BarChart, TimelineProfiler and
DataTable.
UsageBar shows amounts as its owner writes them. MemoryPanel and
HumanInputRequest share agent::line::send_line; the chapter's bool
callbacks take forms::OnFlag.
DataTable scrolls columns wider than its box sideways, pinned or not,
and leaves a plain wheel to the page; sortable headers are Tab stops.
TimelineProfiler fits its ruler to its lane, its spans are Tab stops,
and a picked span takes accent.
SandboxStatus::cpu asserts its share lies in 0..=1 and hands it to
Meter unclamped. ToolRegistry gathers kept tools by source through
grouped(), tested for first-seen order and repeated sources.
- SandboxStatus: a dot and a word (a ring while it starts or works), what it
uses of what it has as meters, and how long it has run; the header wraps
- McpServerList over lists::ListItem: a dot per state, what it runs or why it
failed, its tools once connected, and a switch
- ToolRegistry: tools grouped by source, found by every word of the owner's
query, each Allow, Ask or Deny; rows wrap at 280px
- MemoryPanel: a line to keep a memory, Enter or Remember, blank words kept
out; each memory with its source, when, and Forget
- CheckpointList over data_display::Timeline, newest first, the current point
marked, Rewind on the rest
- gallery: every control wired to state
- BrowserPreview marks the shown frame with accent; the focus color stays
the focus ring's
- BrowserPreview and ComputerUseViewer take the host's ratio, 16:10 unless
set, so frames keep their shape and a pointer's share lands on the picture;
test a_screen_takes_its_pictures_shape
- TASKS: the review moves to a Claude Fable 5.1 max session after codex ran
out of quota; round 3 fixed after the cap, no fourth review
- AGENTS: focus and choice colors part; host pictures keep their shape
- BrowserPreview keeps a ScrollHandle for its strip and a tracked focus
handle per thumbnail; the focused thumbnail scrolls into view once, through
forms::options::reveal and the canvas now shared as revealer
- Popup draws its reveal through the same revealer
- test tab_brings_a_hidden_frame_into_view
- BrowserPreview's frame strip scrolls sideways, so every frame stays in
reach in a narrow card
- ArtifactPanel's header wraps: the title keeps label_width, the controls
ride in one group that wraps inside the box
- tests: a_narrow_strip_scrolls_to_its_last_frame,
a_narrow_panel_wraps_its_header
- AGENTS: everything works at 280px
- BrowserPreview: the address with a lock and a spinner while it loads, the
host's frame shown, and the frames so far along the foot as Tab stops;
ScreenshotStream is that strip
- ComputerUseViewer: the host's frame, a ring where the agent points that
rings again at each new point, and what it does there
- LivePreview: the host's page under its address, with reload
- ArtifactPanel: title, versions through chat::BranchNavigator, Preview and
Source when it has both, copy and download; it fails loud with neither
- gallery: frames cut from the gallery's own pages; one asset! macro in
main.rs replaces three copies
- FileChangeCard's header wraps: the path keeps label_width, counts and
verdict drop below as one group; MultiFileDiffReview's header wraps its
counts and its all-buttons inside the box, parted by justify_between
- git::DiffViewer's fold rows are Tab stops with a focus ring when the
owner opens folds; every row keeps a transparent border so heights match;
an inert fold no longer shows a pointer
- tests: a_narrow_review_wraps_its_rows_inside_its_box,
git::a_fold_opens_from_the_keyboard; the gallery adds a 280px review
- AGENTS: taffy drops gaps beside an auto margin; wrapping headers
- FileChangeCard: a proposed change to one file, its path and counts,
Reject and Accept in a slot that keeps presses off the header; opened,
the diff through a headless git::DiffViewer with its folds opening
- MultiFileDiffReview: every file at once, the total counts, how many are
reviewed, Reject all and Accept all; verdicts as collab::Decision
- git::DiffViewer gains headless, leaving the file's header to its owner
- CommandExecutionCard is terminal::CommandBlock
- gallery: three proposed files and a command's block