Problem
armory-fleet's operational depth is invisible until the user opens /fleet: the transcript shows a bare tool row + raw envelope while subagent runs execute, the widget is uncolored plain strings, and the panel has flat single-color rows, mixed glyph languages (▶⏸✓✗ vs ✅⛔↻⚠ emoji), no totals header, no lineage view (data exists: resumedFrom/forkedFrom/childRunIds), and a hardcoded 80-col overlay wrap.
Proposal
Presentation-layer redesign across 3 surfaces, one design language (oh-my-pi structure × Claude Code restraint; tokens from the user's pi theme only; single glyph vocabulary; usage — honesty rule):
- Transcript (in-flight): run cards via
renderCall/renderResult + renderShell: "self" — live state line driven by forwarding child-run events through the onPartial emission callback (verified: agent-loop.js:455), pi-tui Loader spinner (80ms status track), collapsed finalize + native expand; orchestration live block + Findings block via appendEntry/registerEntryRenderer (TUI-only, zero LLM tokens); TODO tree = read-only projection of armory-todo behind one new TodoSyncPort.listFleetTodos read method.
- Widget: component widget — totals strip + per-segment color.
- Panel: P1 totals header + colorized rows (ANSI-aware width helper) + state-machine footer + capability-aware actions; P2 lineage tree toggle (
t), real-width overlay fix, scroll-state separator; P3 symbol presets (unicode/nerd/ascii), segmented separators.
Render lifecycle fully verified against pi source (tool-execution.ts / agent-loop.js / loader.ts) — every beat is natively supported for extensions. No engine/journal/RPC changes; no key remaps (additive only).
Full spec with mockups, phasing, acceptance criteria: docs/superpowers/specs/2026-09-03-spec-fleet-presentation-redesign.md
Problem
armory-fleet's operational depth is invisible until the user opens
/fleet: the transcript shows a bare tool row + raw envelope while subagent runs execute, the widget is uncolored plain strings, and the panel has flat single-color rows, mixed glyph languages (▶⏸✓✗ vs ✅⛔↻⚠ emoji), no totals header, no lineage view (data exists: resumedFrom/forkedFrom/childRunIds), and a hardcoded 80-col overlay wrap.Proposal
Presentation-layer redesign across 3 surfaces, one design language (oh-my-pi structure × Claude Code restraint; tokens from the user's pi theme only; single glyph vocabulary;
usage —honesty rule):renderCall/renderResult+renderShell: "self"— live state line driven by forwarding child-run events through theonPartialemission callback (verified:agent-loop.js:455), pi-tuiLoaderspinner (80ms status track), collapsed finalize + native expand; orchestration live block + Findings block viaappendEntry/registerEntryRenderer(TUI-only, zero LLM tokens); TODO tree = read-only projection of armory-todo behind one newTodoSyncPort.listFleetTodosread method.t), real-width overlay fix, scroll-state separator; P3 symbol presets (unicode/nerd/ascii), segmented separators.Render lifecycle fully verified against pi source (tool-execution.ts / agent-loop.js / loader.ts) — every beat is natively supported for extensions. No engine/journal/RPC changes; no key remaps (additive only).
Full spec with mockups, phasing, acceptance criteria:
docs/superpowers/specs/2026-09-03-spec-fleet-presentation-redesign.md