Wire up the activity_toggle keybind (Ctrl+O) to show/hide the activity
panel via new activityVisible store state. Fix terminal garbage text on
exit by draining stdin after renderer teardown to consume pending
DECRQM mode 997 responses before they echo in the shell.
- Add Pink Purple theme (hot pink/purple/magenta on dark plum background)
- Fix race condition where clearPastedImages() in input-area ran before
the async message handler could read the images, silently dropping them
- Allow @ file picker and / command menu to trigger at any cursor position,
not just when the input is empty
- Update CHANGELOG and README with new changes
Add cross-platform text clipboard operations (macOS, Linux, Windows)
with OSC 52 support for SSH/tmux environments. Wire up onMouseUp and
Ctrl+Y in the TUI to copy selected text to the system clipboard via
OpenTUI's renderer selection API.
- Render permission modal inline below log panel instead of floating CenteredModal overlay
- Hide input area when permission prompt is active
- Add dev:debug and dev:debug-brk scripts for Bun inspector debugging
- Add background color to header to prevent content bleeding through
- Add margin spacing between header and log panel
- Change permission modal border to top-only for cleaner inline appearance
Adds plan approval workflow per GitHub issue #111:
- Register plan_approval tool in tools index
- Add plan approval handling in message handler
- Check for pending plans on each message
- Detect approval/rejection messages
- Handle plan approval flow
- Create plan approval modal TUI component
- Update system prompts to instruct agents to use plan_approval tool
- Balanced tier: Updated to require plan_approval for complex tasks
- Thorough tier: Updated with plan_approval workflow
Workflow:
1. Agent analyzes task complexity with plan_approval
2. Agent creates plan with steps, context, risks
3. Agent submits plan for user approval
4. User approves/rejects/provides feedback
5. Only after approval, agent proceeds with execution
Closes#111
Adds execution control system per GitHub issue #113:
- Ctrl+P: Toggle pause/resume during agent execution
- Ctrl+Z: Abort with rollback (undo file changes)
- Ctrl+Shift+S: Toggle step-by-step mode
- Enter: Advance one step when in step mode
New files:
- src/types/execution-control.ts: Type definitions
- src/services/execution-control.ts: Control implementation with rollback
- src/constants/execution-control.ts: Keyboard shortcuts and messages
Modified:
- agent-stream.ts: Integrated execution control into agent loop
- message-handler.ts: Added control functions and callbacks
- app.tsx: Added keyboard shortcut handlers
- help-content.ts: Added help topics for new shortcuts
Closes#113
- Fix space key not working in MCP add form by handling evt.name === "space"
- Add support for multi-character paste sequences via evt.sequence
- Add MCPServerDisplay type to types/tui.ts for UI display
- Add mcpServers reactive state to app store with setMcpServers,
addMcpServer, and updateMcpServerStatus actions
- Update session.tsx to use store's mcpServers instead of static props
- Update execute.tsx to update store when server is added/connected
- Remove duplicate MCPServer interfaces from app.tsx, session.tsx,
and mcp-select.tsx in favor of shared MCPServerDisplay type
Features:
- Add BRAIN_DISABLED feature flag to hide all Brain functionality
- When enabled, hides Brain banner, status indicator, menu, and commands
- Flag location: src/constants/brain.ts
Fixes:
- Fix Ollama 400 error by properly formatting tool_calls in messages
- Update OllamaMessage type to include tool_calls field
- Fix Brain menu keyboard not working (add missing modes to isMenuOpen)
UI Changes:
- Remove "^Tab toggle mode" hint from status bar
- Remove "ctrl+t to hide todos" hint from status bar
Files modified:
- src/constants/brain.ts (add BRAIN_DISABLED flag)
- src/types/ollama.ts (add tool_calls to OllamaMessage)
- src/providers/ollama/chat.ts (format tool_calls in messages)
- src/tui-solid/components/header.tsx (hide Brain UI when disabled)
- src/tui-solid/components/status-bar.tsx (remove hints)
- src/tui-solid/components/command-menu.tsx (filter brain command)
- src/tui-solid/components/input-area.tsx (fix isMenuOpen modes)
- src/tui-solid/routes/session.tsx (skip brain menu when disabled)
- src/services/brain.ts (early return when disabled)
- src/services/chat-tui/initialize.ts (skip brain init when disabled)
Agent behavior improvements:
- Add project context detection (tsconfig.json, pom.xml, etc.)
- Enforce validation after changes (tsc --noEmit, mvn compile, etc.)
- Run tests automatically - never ask "do you want me to run tests"
- Complete full loop: create → type-check → test → confirm
- Add command detection for direct execution (run tree, run ls)
Diff view improvements:
- Use darker backgrounds for added/removed lines
- Add diffLineBgAdded, diffLineBgRemoved, diffLineText theme colors
- Improve text visibility with white text on dark backgrounds
- Update both React/Ink and SolidJS diff components
Streaming fixes:
- Fix tool call argument accumulation using OpenAI index field
- Fix streaming content display after tool calls
- Add consecutive error tracking to prevent token waste
Other changes:
- ESC to abort operations, Ctrl+C to exit
- Fix model selection when provider changes in cascade mode
- Add debug logging for troubleshooting
- Move tests to root tests/ folder
- Fix banner test GRADIENT_COLORS reference
Features:
- Add /logs command to toggle debug log panel (20% width on right)
- Debug panel shows API calls, streaming events, tool calls, state changes
- Add /help submenus with detailed command explanations
- Center all modal dialogs in the terminal window
Bug Fixes:
- Fix streaming content not displaying (add fallback when streaming fails)
- Fix permission modal shortcut key mismatch ('a' → 'l' for local scope)
- Fix agent prompt accumulation when switching agents multiple times
- Fix permission modal using brittle index for "No" option
Improvements:
- Restrict git commands (add, commit, push, etc.) unless user explicitly requests
- Unify permission options across all UI components
- Add Ollama model selection when switching to Ollama provider
- Store base system prompt to prevent agent prompt stacking
New files:
- src/tui-solid/components/debug-log-panel.tsx
- src/tui-solid/components/centered-modal.tsx
- src/tui-solid/components/help-menu.tsx
- src/tui-solid/components/help-detail.tsx
- src/constants/help-content.ts