- InputBar is now focus-gated: when mode != 'chat', TextInput focus=false
and useInput isActive=false — sidebar 'd' key no longer leaks into input
- /new added as a local command (execution:'local') so it creates a
new conversation and switches to it, same as Ctrl+N; alias 'n' moved
from ALIASES map into the CommandDef
- Ctrl+C behaviour: clear input → show hint → second empty press exits
(resets if any other key is pressed between the two Ctrl+Cs)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
InputBar is now a controlled component — input state lives in app.tsx.
Ctrl+C when input has text clears it; Ctrl+C with empty input exits,
giving the standard two-press-to-quit behaviour expected in TUIs.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Without --conversation/-c, the TUI was starting with no conversationId,
leaving the session bar showing "No session" and gateway commands
unable to dispatch. Now creates a new conversation via REST before
rendering so the socket is immediately attached to an active session.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Submitting bare "/" no longer shows "Unknown command format: /" — input
is ignored silently so autocomplete can guide discovery instead
- Gateway command handler no longer requires a conversationId before
emitting — the socket connection check alone is sufficient; missing
conversationId caused false "Not connected" errors on fresh sessions
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Gateway slash command responses were silently dropped — use-socket.ts
had no handlers for command:result or system:reload. Added both:
- command:result → renders success/error as a system message
- system:reload → updates command registry manifest + shows reload message
Also removes stray @testing-library/react devDependency that was
never used in the CLI package.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>