Expand description
Stateless TUI widgets.
Each widget takes explicit props; the compose function in
render::mod pulls those props from State per frame. No widget
holds a reference to any god-object.
Structs§
- Agent
Panel Row - One row of the live agent panel: a running (or backgrounded) subagent’s
stable identity + activity. Built by the render layer from
TurnState::ExecutingTools+live_tool_status(+ the background-agent registry); this widget only formats. - Approval
Modal Widget - Chat
State - State for the chat widget
- Chat
Widget - Props for ChatWidget
- Conversation
List Widget - File
Picker Widget - Image
Click Target - Entry in the click map: maps a content line to an image in chat history
- Input
State - State for the input widget
- Input
Widget - Props for InputWidget. The slash-command palette is rendered
separately as
SlashPaletteWidgetin the bottom region (seerender.rs); this widget just draws the bordered input box. - Plan
Config Widget - Question
Modal Widget - Rewind
Picker Widget - Slash
Palette Widget - Status
Widget - Props for StatusWidget (stateless widget)
Enums§
- Generation
Status - Local-to-render-layer generation phase enum. The compose function
converts from
domain::TurnState+domain::GenPhaseinto one of these four states; widgets render off this local view so they don’t need to pattern-match the full domain enum.
Constants§
- PLAN_
CONFIG_ HEIGHT - Pane height: rows + border(2) + hint line.
- PLAN_
CONFIG_ ROWS - Row count (kept in sync with
plan_config_rowsand the reducer’s key handler). Rows: preset, builds, web, memory, tasks, model, reasoning, auto_approve, post_approve.
Functions§
- build_
status_ lines - Build the status-line rows: a generation/tool spinner followed by one row per queued message.
- build_
task_ lines - Build the checklist rows for the reserved zone.
collapsedis the Ctrl+T one-line form.attachedmeans the status zone renders above, so the first row carries the⎿connector; detached rows sit flush-left.widthis the zone’s inner width in cells. - plan_
config_ rows - The
(label, value)pairs the picker shows, derived from the live config. Shared with the reducer tests so row indices can’t drift. - question_
modal_ height - Total rendered height including the border, so
render::modcan size the bottom zone to fit the modal — the taller of the option list and its preview. - tasks_
height - Height the layout should reserve for the checklist zone.
- tasks_
visible - Whether the checklist band renders at all: there must be something to
show, and a fully-green list retires once the run goes idle (finished
work stays visible only while unfinished work remains). Collapsed with no
status widget above (
attachedfalse) renders nothing — the state persists and the one-liner reappears when the next run starts.