- Status: Active
- Last refreshed: 2026-06-16
- Primary product surfaces: Loop Prompt Console TUI, processing console, Loop Wiki dashboard, CLI help.
- Evidence reviewed: README.md, src/core/tui.js, src/core/tui-render.js, test/tui.test.js.
- Personality: focused, technical, safety-first, slightly warm.
- Trust signals: visible agent state, wiki state, run state, next action, logs, verification evidence.
- Avoid: marketing pages, decorative gradients, command-dump screens, unclear background activity.
- Goals: make Loop feel like a coding-agent harness where the user types goals, watches runs, and resumes context.
- Non-goals: replace Codex or Claude Code UI, become a full IDE, or hide verification responsibility from the engineer.
- Success signals: the user can see the current agent, wiki status, selected run, next action, and log entry point without reading docs.
- Primary personas: engineers running coding-agent loops locally.
- User jobs: start a loop, inspect an active run, read context, open logs, continue a run, record evidence, complete a run.
- Key contexts of use: terminal-first local development, short feedback loops, intermittent dashboard usage.
- Primary navigation: prompt input first, run stack second, selected run details third, action buttons fourth.
- Core routes/screens: no-argument prompt console, live processing console, dashboard, graph view, note view, log view.
- Content hierarchy: current objective and state before historical data; next action before secondary metadata.
- Principle 1: The TUI is a prompt surface, not a command catalog.
- Principle 2: Status must be observable before the user acts.
- Tradeoffs: dense terminal UI is acceptable, but labels must stay stable and scannable.
- Color: restrained red/yellow terminal palette with green only for healthy/complete states.
- Typography: terminal-native monospace; short labels; no viewport-scaled type.
- Spacing/layout rhythm: boxed sections with predictable top-to-bottom flow.
- Shape/radius/elevation: box-drawing borders only.
- Motion: simple spinner for processing state.
- Imagery/iconography: ASCII LOOP startup logo and text-native buttons.
- Existing components to reuse: prompt box, harness status, run stack, selected run panel, action bar, live log.
- New/changed components: phase rail, status pills, grouped action buttons, compact run identifiers.
- Variants and states: no runs, selected run, active run, completed run, dashboard online/off/unknown/blocked, processing locked prompt.
- Token/component ownership: src/core/tui-render.js owns terminal composition; src/core/tui.js owns interaction and side effects.
- Target standard: readable terminal defaults with no color-only meaning.
- Keyboard/focus behavior: prompt remains the only text entry focus; visible buttons map to keyboard inputs.
- Contrast/readability: no low-contrast body text in essential state labels.
- Screen-reader semantics: plain text output remains meaningful without ANSI color.
- Reduced motion and sensory considerations: spinner is minimal and no persistent animation is required for static renders.
- Supported breakpoints/devices: interactive terminals from 72 to 120 columns.
- Layout adaptations: renderer clamps width and wraps content inside boxes.
- Touch/hover differences: not applicable for terminal UI.
- Loading: processing console with locked prompt and live log.
- Empty: first-run prompt mode with empty run stack.
- Error: action failures appear in Last Event.
- Success: action success appears in Last Event and updated run/wiki state.
- Disabled: prompt is locked while a direct run is processing.
- Offline/slow network, if applicable: wiki dashboard probe can show unknown instead of blocked.
- Tone: direct, engineering-focused, calm.
- Terminology: prompt, run, Loop, wiki, dashboard, next action, evidence.
- Microcopy rules: prefer labels over instructions; keep full explanations in README.
- Framework/styling system: Node.js terminal renderer with ANSI color and box drawing.
- Design-token constraints: no new runtime dependency for TUI rendering.
- Performance constraints: render from local state with lightweight dashboard probe.
- Compatibility constraints: preserve CLI command behavior and non-TTY guidance.
- Test/screenshot expectations: use render tests and CLI smoke tests for stable terminal output.
- Whether future TUI input should support true arrow-key button navigation / owner: product / impact: interaction model.
- Whether dashboard and TUI should share a formal UI state model / owner: engineering / impact: consistency.