Skip to content

feat(repl): Interactive autocomplete with multi-column menu#14

Merged
victormartingil merged 9 commits intomainfrom
feat/interactive-autocomplete-ux
Feb 5, 2026
Merged

feat(repl): Interactive autocomplete with multi-column menu#14
victormartingil merged 9 commits intomainfrom
feat/interactive-autocomplete-ux

Conversation

@victormartingil
Copy link
Member

  • Ghost text autocompletion for slash commands
  • Multi-column dropdown menu (responsive to terminal width)
  • Natural grid navigation with arrow keys
  • Interactive /model and /provider selectors
  • Ora spinner + line-buffered output
  • Fix Kimi K2.5 thinking mode
  • Add tree, copy_file, move_file tools

Test plan

  • Test autocomplete with `/` command
  • Test /model and /provider interactive selection
  • Verify Kimi models work with tool calls

- Ghost text autocompletion for slash commands (like Claude Code)
- Multi-column dropdown menu (1-3 cols based on terminal width)
- Natural grid navigation (up/down vertical, left/right horizontal)
- Scrollable menu with more above/below indicators
- Interactive /model and /provider selectors with arrow keys
- Ora spinner integration for better visual feedback
- Line-buffered streaming output (no char-by-char flicker)
- Fix Kimi K2.5 thinking mode parameter for tool calls
- Add tree, copy_file, move_file tools
Let pnpm/action-setup@v4 use packageManager from package.json
to avoid version mismatch errors.
@victormartingil victormartingil force-pushed the feat/interactive-autocomplete-ux branch from 791fb0a to 23d9132 Compare February 4, 2026 23:34
- Prefix unused session param with underscore
- Add comment explaining apiKeyUrl is public URL, not sensitive
- Update spinner tests to work with Ora mock
- Remove apiKeyUrl from logs to fix CodeQL warning
Replace mockRejectedValue with mockResolvedValue for createProvider
so tests don't fail when creating phase context.
Replace mockRejectedValue with mockResolvedValue for createProvider
so tests don't fail when creating phase context.
Added tree, copy_file, move_file to expected tools count (7 -> 10)
- Add comprehensive mocks for trust-store, onboarding, clack/prompts,
  state manager, and intent recognizer in index.test.ts
- Fix chalk mocks to support chainable methods (bgBlue.white, etc)
- Add providers-config mock in config.test.ts
- Update config.test.ts to test p.password instead of p.text for API keys
- Update env.test.ts for new kimi defaults (moonshot.ai, kimi-k2.5)
- Skip tests that require stdin mocking (interactive model selection)
- Skip tests that expect console.log but code uses clack output

The main issue was that tests were starting the real REPL which showed
an interactive trust prompt (Allow access to this directory?) that
would hang forever waiting for user input.
@victormartingil victormartingil merged commit 0c0f2b6 into main Feb 5, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant