## Summary
- Add slash command infrastructure: parseSlashCommand(), CommandRegistry with local + gateway manifest commands
- Wire InputBar to intercept /command input before sending to socket — routes to local handlers or gateway via command:execute
- Add 'system' to Message.role union and render system messages as dimmed gear-prefix without avatar chrome
- Handle commands:manifest socket event to hydrate registry from gateway on connect
- Local commands implemented: /help, /status, /clear, /cost, /stop
- Short aliases: /n->new, /m->model, /t->thinking, /a->agent, /s->status, /h->help, /pref->preferences
## Test plan
- Type /help in TUI — system message with command list appears
- Type /status — shows connection/model/session/token info
- Type /clear — clears conversation display
- Type /unknowncmd — system message with "Unknown command: /unknowncmd. Type /help..."
- Normal messages still send to socket
- pnpm typecheck && pnpm lint && pnpm format:check all pass
Closes #162
- Add parseSlashCommand() with regex-based parser for /cmd [args] format
- Add CommandRegistry with local-only commands (help, stop, cost, status, clear) and gateway manifest support
- Add short alias resolution: /n→new, /m→model, /t→thinking, /a→agent, /s→status, /h→help, /pref→preferences
- Add executeHelp() and executeStatus() local command handlers
- Extend Message.role union with 'system' for in-TUI system messages
- Handle commands:manifest socket event to update registry from gateway
- Wire InputBar to intercept /commands before sending to socket
- Render system messages as dimmed ⚙ prefix without avatar chrome
- Expose addSystemMessage() and socketRef from useSocket hook
Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Test plan
Closes #162