← Back to PRs

#16741: feat(wizard): add searchable select for model picker

by zzztimbo open 2026-02-15 02:22 View on GitHub →
commands channel: irc size: M
## Summary When selecting a model during onboarding with providers like OpenRouter (150+ models), users must scroll through a long unfiltered list. This adds an FZF-like searchable select to improve the experience. ### Changes - Add standalone `searchable-select.ts` component with fuzzy filtering - Integrate with `WizardPrompter` interface (new `searchableSelect` method) - Use for model picker in onboarding flow - Support arrow keys, Page Up/Down, Home/End, Ctrl+P/N navigation ### Before ![before](https://firebasestorage.googleapis.com/v0/b/tagr-prod.appspot.com/o/notespace%2Fzzztimbo%40gmail.com%2Fuploads%2F2026-02-15T00%3A58%3A18.604Z-image.png?alt=media&token=a11d1357-5025-4198-80ee-d22467b7a676) ### After ![after](https://firebasestorage.googleapis.com/v0/b/tagr-prod.appspot.com/o/notespace%2Fzzztimbo%40gmail.com%2Fuploads%2F2026-02-15T01%3A17%3A47.122Z-image.png?alt=media&token=937ac0a8-870e-45e9-b16f-70edd26fa3fc) ## Testing - Tested full onboarding flow with OpenRouter, Gemini, and z.ai - Verified fuzzy filtering, keyboard navigation, edge cases (no matches, rapid typing) - Non-TTY environments fall back gracefully ## AI Disclosure This PR was developed with AI assistance (Warp Agent). I understand what the code does and have manually tested the implementation. Co-Authored-By: Warp <agent@warp.dev> <!-- greptile_comment --> <h3>Greptile Summary</h3> Adds an FZF-like searchable select component for CLI prompts, integrated into the model picker to improve UX when selecting from providers with 150+ models. - New `searchable-select.ts` provides standalone fuzzy search with multi-tier filtering (exact substring → word boundary → hint → fuzzy) - Integrates cleanly via new `searchableSelect` method in `WizardPrompter` interface - Handles keyboard navigation (arrows, Page Up/Down, Home/End, Ctrl+P/N) - Properly handles edge cases: non-TTY fallback, empty options, no matches - Fix included for Enter key cleanup issue (terminal state restoration) The implementation follows existing patterns and delegates to regular `select` in session mode where the client UI can implement its own searchable behavior. <h3>Confidence Score: 5/5</h3> - This PR is safe to merge with minimal risk - Well-structured implementation following existing patterns, with proper error handling, terminal state cleanup, non-TTY fallbacks, and the previously identified Enter key issue already fixed - No files require special attention <sub>Last reviewed commit: c14ad70</sub> <!-- greptile_other_comments_section --> <!-- /greptile_comment -->

Most Similar PRs