Skip to content

refactor(select): migrate from fzf to nucleo-picker for built-in fuzzy selection#3102

Merged
amitksingh1490 merged 34 commits into
mainfrom
necleo-migrate
May 4, 2026
Merged

refactor(select): migrate from fzf to nucleo-picker for built-in fuzzy selection#3102
amitksingh1490 merged 34 commits into
mainfrom
necleo-migrate

Conversation

@amitksingh1490
Copy link
Copy Markdown
Contributor

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.

…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.
@amitksingh1490 amitksingh1490 marked this pull request as draft April 21, 2026 10:12
@github-actions github-actions Bot added the type: feature Brand new functionality, features, pages, workflows, endpoints, etc. label Apr 21, 2026
amitksingh1490 and others added 15 commits April 26, 2026 11:40
…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.
…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
@amitksingh1490 amitksingh1490 added the ci: build all targets Build release binaries for all target platforms in CI label Apr 27, 2026
…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
@amitksingh1490 amitksingh1490 removed the ci: build all targets Build release binaries for all target platforms in CI label Apr 27, 2026
@amitksingh1490 amitksingh1490 marked this pull request as ready for review April 27, 2026 09:21
amitksingh1490 and others added 5 commits April 27, 2026 20:39
…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.
@amitksingh1490 amitksingh1490 merged commit a19cf6a into main May 4, 2026
8 checks passed
@amitksingh1490 amitksingh1490 deleted the necleo-migrate branch May 4, 2026 07:44
@amitksingh1490 amitksingh1490 changed the title feat(select): migrate from fzf to nucleo-picker for built-in fuzzy selection refactor(select): migrate from fzf to nucleo-picker for built-in fuzzy selection May 4, 2026
@amitksingh1490 amitksingh1490 added type: refactor Code refactoring and restructuring. and removed type: feature Brand new functionality, features, pages, workflows, endpoints, etc. labels May 4, 2026
laststylebender14 pushed a commit that referenced this pull request May 8, 2026
…lection (#3102)

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Tushar <tusharmath@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type: refactor Code refactoring and restructuring.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants