Terminal
The Terminal drawer is a bottom panel that streams the stdout/stderr of every pipeline subprocess — planner, reviewer, executor, verifier. It’s the source-of-truth debugging surface for anything the pipeline does.
The component is apps/desktop/src/renderer/components/TerminalDrawer.tsx.
Opening the drawer
- Click the Terminal icon in the titlebar, or use the keyboard shortcut
- The drawer auto-opens when a pipeline transitions into a new phase (configurable; fix shipped in Session 17)
- It’s resizable — drag the top edge to make it taller; the split persists across app restarts
Thread switcher
When multiple pipelines are running concurrently, the drawer title shows a dropdown listing every active thread. Switching between threads swaps the visible streaming output without losing any scrollback from the others.
Before the dropdown (Session 25), the drawer used #N pill tabs that overflowed once you had more than 3–4 concurrent runs. The dropdown scales to as many runs as you have.
If a run has already been approved but the project’s execution capacity is full, the drawer shows Waiting for execution slot instead of pretending it still needs approval. The internal thread phase is still approval, but the drawer translates that into the real user-facing state.
Stream coloring
The terminal highlights output by agent and phase:
- Claude — blue agent tone
- Codex — green agent tone
- OpenRouter — purple agent tone (matches the active-row tone in the list view)
- Planner / Reviewer / Verifier header lines in a dimmed tone to separate phases
This makes it easy to scan a long run and see which agent was responsible for which output.
Cost estimation
The drawer header shows a live cost estimate for the active thread, updated as tokens stream in. This is the same number that ends up in the Costs view, just realtime instead of aggregated.
Structured event log
The Terminal drawer is the best place to watch live subprocess output, but it is not the only debugging artifact.
ShipCode also writes a structured event log at:
apps/desktop/logs/events.logUse events.log when you need to reconstruct pipeline behavior after the fact. It records:
- Pipeline start source (
github:start-issue,pipeline:start, retry, approve) - Phase transitions
- Parsed review / verification summaries
- Approval-gate decisions, including why the runtime chose
approvalor auto-execution
For user-reported pipeline bugs, ask for events.log plus the thread ID or GitHub issue number.
Keyboard
Cmd/Ctrl + ~— toggle drawer visibilityCmd/Ctrl + K— clear the visible thread’s output (doesn’t clear stored logs)
Related
- Costs view — persisted cost totals computed from the same token stream
- Plan Viewer — for looking at the result of a planner/review run, not its raw output