roost — terminal UI

A design reference for the multiplexer's own chrome: a vertical split with a focused agent pane on the left and a stacked-pane fleet on the right, every pane badged with its status. Chrome is ink · paper · one red; program output keeps its own colors.

working (animates — busy, not "wants you"; steady ◆ below is the only glyph that asks for attention) needs input ○ waiting · idle ✕ exited
roost — zsh — 158×44
1 pi-mono 2 api 3 infra 4 notes ~/code · saved ✓
refactor tui · pi
~/code/pi-mono
split the pane renderer into one draw fn per node
read src/ui/render.rs · 342 lines
edit src/ui/render.rs
src/ui/render.rs · draw_pane()
- fn draw_pane(f, pane) {
+ fn draw_pane(f, pane, focus: bool) {
+ let edge = if focus { RED } else { DIM };
blit_grid(f, pane.grid, rect);
{{ spinner }} composing edit — 3 hunks, tests next
stack · 5 panesAlt+↑↓
write tests · claude
~/code/pi-mono/tests
Claude wants to edit status_test.rs
Allow this edit?
1. Yes
  2. Yes, and don't ask again
  3. No, and tell Claude what to do
waiting for your answer
api-worker pi · running build
write docs claude · your turn
· scratch shell · idle
old build pi · exited 130
Alt+n new Alt+↵ launch Alt+s stack Alt+↑↓ focus Alt+r rename Alt+w close Alt+? keys ◆ 1 needs youNORMAL

Tokens · bg #15120f · fg #eae5df · muted #8f8983 · dim #57524b · rule #332f2a · accent #ff563c (focus border, badges, live keys) · dim-accent #a83a28 (needs-input / exited) · borders 1px, single-line · focused pane border = accent, others = rule · corner label = pane name + adapter + status glyph, top-right, dim.