Skip to content

feat(ui): inert full-screen app shell#6

Merged
lavindeep merged 1 commit into
ui-reworkfrom
feat/ui-app-shell
Jun 27, 2026
Merged

feat(ui): inert full-screen app shell#6
lavindeep merged 1 commit into
ui-reworkfrom
feat/ui-app-shell

Conversation

@lavindeep

Copy link
Copy Markdown
Owner

Branch 2/9 of the UI v2 full-screen TUI rework.

What

The inert full-screen prompt_toolkit Application skeleton: a scrolling chat pane, a custom rounded multi-line input dock, and the persistent status bar — so the bar and input never scroll away mid-turn.

  • Hand-drawn rounded dock border (not Frame, which draws square corners and reserves completion-menu height inside the box). ASCII fallback for non-unicode terminals.
  • One shared render-time width drives the border line and pane/dock wrap, so resize re-derives everything with nothing cached.
  • status_bar() gains an optional, default-None branch segment (⎇ <branch>), byte-identical when omitted, fed by a fail-closed .git/HEAD read.

Inert scope (later branches wire the rest)

Enter echoes the dock text into the pane; /exit quits; PageUp/Down and the wheel scroll the pane. No runtime/model/AI turn, no Rich→ANSI pane rendering, no thinking indicator, cancellation, approvals, or queue. The non-TTY PlainInput path is untouched.

Verification

  • Phase gate green: ruff + mypy --strict clean, 1286 passed (24 new cases).
  • Headless CI test via prompt_toolkit pipe-input + DummyOutput proves the app constructs, submitted text lands in the pane, Alt+Enter inserts a newline, and /exit exits.
  • Every new test proven red-first (break impl → test fails → revert).
  • DESIGN.md §31.12 added in the same commit.

Add the UI-v2 full-screen prompt_toolkit app shell: a persistent layout
of a scrolling chat pane, a custom rounded multi-line input dock, and the
always-on status bar — so the bar and input never scroll away mid-turn.

The dock border is hand-drawn (rounded corners, ASCII fallback) rather
than prompt_toolkit's Frame, which only draws square corners and reserves
completion-menu height inside the box. One shared render-time terminal
width drives the border line and the pane/dock wrap.

This shell is inert: Enter echoes the dock text into the pane, /exit
quits, PageUp/Down and the wheel scroll the pane. No runtime, model, or
AI turn is wired (later branches), and the non-TTY PlainInput path is
untouched. status_bar() gains an optional, default-None branch segment
(byte-identical when omitted), fed by a fail-closed .git/HEAD read.

DESIGN.md gains section 31.12; section 31.11 notes the branch segment.
@lavindeep lavindeep merged commit 5000a1f into ui-rework Jun 27, 2026
2 checks passed
@lavindeep lavindeep deleted the feat/ui-app-shell branch June 27, 2026 22:43
lavindeep added a commit that referenced this pull request Jul 2, 2026
feat(ui): inert full-screen app shell
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant