Rewrite CLI REPL with scroll region UI and live steering#6
Rewrite CLI REPL with scroll region UI and live steering#6pushkarsingh32 wants to merge 1 commit into
Conversation
Replace readline-based REPL with a custom raw-mode terminal UI using ANSI scroll regions. The input line is always visible at the bottom while streaming output scrolls above it. Layout: - Rows 1..(r-3): scroll region for streaming output - Row r-2: queue line showing pending steer message - Row r-1: separator - Row r: input line with fake block cursor Key changes: - Always-on raw mode with manual keystroke handling - Steer support: type during streaming, Enter sends agent.steer() - Queue line shows pending steer in yellow, echoes to scroll region when agent picks it up (appears after AI response, not inline) - Hidden real cursor with inverse-video fake cursor on input line - Proper vertical spacing between messages - Terminal resize handler redraws all fixed UI elements
|
@pushkarsingh32 is attempting to deploy a commit to the shreyas-lyzr's projects Team on Vercel. A member of the Team first needs to authorize it. |
shreyas-lyzr
left a comment
There was a problem hiding this comment.
This is a large rewrite of the CLI REPL — raw mode, scroll regions, custom input handling. Concerns:
- Very large diff touching the core REPL loop. This replaces readline entirely with raw terminal management. High risk of regressions on different terminal emulators (iTerm, Windows Terminal, SSH sessions, etc.)
- No fallback — if raw mode fails (e.g. piped input, CI, non-TTY), the entire CLI breaks. Need a `process.stdin.isTTY` guard with fallback to the current readline approach.
- The `headerLines` counter is fragile — any log line change breaks the scroll region math.
I'd suggest splitting this: first PR for the steer queue (simple feature), second PR for the scroll region UI (risky, needs testing).
|
Apologies for the long silence. The underlying design — ANSI scroll regions, always-visible input row, queued steer messages mid-stream — still reads as the right call. The CLI today still uses Two things have changed since March that affect this:
Two paths:
Either way, this is a real UX upgrade — the current REPL drops keystrokes when streaming. Just need a fresh diff. Will review within a day of rebase. Apologies again for letting this drift. |
Summary
Layout
Key changes
agent.steer()Test plan