refactor(select): migrate from fzf to nucleo-picker for built-in fuzzy selection#3102
Merged
amitksingh1490 merged 34 commits intomainfrom May 4, 2026
Merged
refactor(select): migrate from fzf to nucleo-picker for built-in fuzzy selection#3102amitksingh1490 merged 34 commits intomainfrom
amitksingh1490 merged 34 commits intomainfrom
Conversation
…lection Replace external fzf dependency with nucleo-picker crate for all interactive selection UIs. Adds new `forge select` command with preview support, field delimiters, and multi-select. Updates shell plugin to use built-in picker instead of requiring external fzf binary.
…h header-lines support
…ffort, command, conversation, and file selection This commit introduces a comprehensive set of purpose-built interactive pickers for the `forge select` command. The changes migrate the shell plugin from external fzf-based selection to Rust's built-in nucleo-picker implementation. Key additions: - `forge select model`: Interactive model picker across all configured providers - `forge select agent`: Interactive agent picker with ID-based selection - `forge select provider`: Provider picker with --configured flag support - `forge select reasoning-effort`: Built-in effort level selection - `forge select command`: Unified command picker (built-in + custom) - `forge select conversation`: Conversation picker with preview pane - `forge select file`: File picker with syntax-highlighted previews The implementation adds SelectCommandGroup/SelectCommand enums to the CLI, refactors select_cmd.rs to expose run_select_ui() as a public API, and updates the shell plugin to use the new native pickers. The conversation selector and input completer are migrated from ForgeWidget to the new select_cmd primitives.
…pletion to simplified implementation
…ead of exit(1) on cancel
…bcommand-only architecture
…e CLI handlers - Extract `select_workspace_file` function from input completer for reuse - Add `select_agent` and `select_reasoning_effort` helper methods to UI - Inline CLI selection handlers directly into command match arms - Remove redundant `on_select_*_cli` methods in favor of direct calls - Export `select_workspace_file` from completer module for cross-crate usage
…documentation - Add _forge_select_with_query and _forge_select_model_pair helpers to shell plugin - Update CLI docs to reflect silent cancel behavior (prints nothing instead of exit 1) - Consolidate init_state call for select commands in UI handler - Add query parameter support to conversation selector
…selector UI Replace external nucleo-picker dependency with internal SelectUiOptions implementation. Update multi-select and single-select builders to use new preview-based selection interface. Add viewport-aware rendering (80% height), remove alternate screen mode, and implement proper multi-select return values. Update preview layout parsing and header line handling to match new architecture.
3023c9a to
767b128
Compare
… preview placement
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Replace external fzf dependency with nucleo-picker crate for all interactive
selection UIs. Adds new
forge selectcommand with preview support, fielddelimiters, and multi-select. Updates shell plugin to use built-in picker
instead of requiring external fzf binary.