This commit is contained in:
Drew 2026-02-24 15:53:54 -08:00
parent 7b9525ef95
commit daa4add5cc
3 changed files with 73 additions and 93 deletions

30
PLAN.md
View file

@ -1,35 +1,5 @@
# Implementation Plan
## Phase 2: Vim Modes and Navigation
**Done when:** Fluid mode switching and scrolling feels vim-native
### 2.3 Command Parser + Execution
- Parse command buffer on enter: `:quit` -> `Quit`, `:clear` -> clear messages and history, `:q` alias for `:quit`
- Return appropriate `LoopControl` or mutate `AppState` directly for display-only commands
- Unknown commands -> show error in a transient status area
### 2.4 Status Bar + Command Overlay
- Add a status bar row at the bottom of the layout (below input pane)
- Status bar shows: current mode (`-- NORMAL --`, `-- INSERT --`), token totals (placeholder for now)
- Style: bold, color-coded per mode (following vim convention)
- Command input renders as a floating bar near the top of the screen (overlay on the output pane), not in the status bar
- Command overlay: shows `:` prefix + partial command buffer, only visible in Command mode
- Overlay dismisses on Esc or Enter
### 2.6 Input Pane Behavior by Mode
- Normal mode: input pane shows last draft (unsent) message or is empty, not editable
- Insert mode: input pane is editable (current behavior)
- Command mode: floating overlay near top shows `:` prefix + command buffer; input pane unchanged
- Cursor visibility: show cursor in Insert and Command modes, hide in Normal
### 2.7 Phase 2 Unit Tests
- Mode transitions: Normal->Insert->Normal, Normal->Command->Normal, Command execute
- Key dispatch: correct handler called per mode
- Command parser: `:quit`, `:clear`, `:q`, unknown command
- Scroll clamping: j/k at boundaries, G/gg
- Existing Phase 1 input tests still pass (insert mode behavior unchanged)
## Phase 3: Tool Execution
- `Tool` trait, `ToolRegistry`, core tools (`read_file`, `write_file`, `shell_exec`)
- Tool definitions in API requests, parse tool-use responses