v0.11.0 — the full-screen app
ShellPilot v0.11.0 — the full-screen app
ShellPilot now opens as a persistent full-screen terminal app on an interactive TTY: a scrolling transcript pane, a framed modal input dock, and a pinned status bar. The classic line-based REPL remains available via --legacy-ui (or SHELLPILOT_UI=legacy) and shares the same renderers.
The app
- Modal input dock — the border says what it is asking: faint while idle, amber
╭─ approve? ─╮for a pending approval, red╭─ type "run" to execute ─╮for high-risk actions. - Type-ahead queue — keep typing while a turn runs; the staged message fires at turn end, and Up-arrow recalls it.
- Worker-thread turns — streaming, scrolling, and Ctrl-C stay live mid-generation.
- Clean cancellation — Ctrl-C aborts a generation mid-stream, kills a running command's process group immediately, or declines the pending approval; conversation history and the on-disk session roll back consistently.
- Thinking trails — reasoning models stream their thinking into a live, collapsible trail (display-only, never fed back).
- Slash menu and completion — a filtered command menu above the dock, Tab path completion for
/cwd set,/attach, and/export, and background-cached model-name completion for/model use. - Diffs and tool calls — approval previews show the entire diff (click or
Ctrl-Oto expand/collapse); tool calls render by subject;!<cmd>output is captured into the transcript. - Status bar — workspace, model, profile, git branch, locality, and context usage, always visible.
Correctness and hardening
- Session transcripts now carry reconciliation records: a mid-batch approval decline and a mid-tool cancel both repair the on-disk transcript, so
--resumenever replays lost or half-finished work. - A plain approval decline ends the turn (and pauses an active plan) instead of letting the model immediately retry; steering via
[e]ditcontinues as before. - Worker-action failures map through the leak-free error path — raw upstream response bodies never reach the terminal.
- User paths in
/cwdand/modelerror messages are markup-escaped; tilde completion degrades gracefully when no home directory can be resolved. - The test suite (1,610 tests) is hermetic against ambient terminal/color environment and machine-specific home directories; CI runs the full gate on Python 3.11 and 3.14.
Docs
- README rewritten from the ground up for v0.11.0.
- DESIGN.md updated throughout §31 (app shell, threading, approvals, cancellation, dock, menu, trails) plus the decline/reconciliation semantics.
Validated live on local and cloud models during development; the line-based REPL remains the supported path for non-TTY and SSH use.