Skip to content

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

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

refactor(select): migrate from fzf to nucleo-picker for built-in fuzzy selection#3102
amitksingh1490 merged 34 commits intomainfrom
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
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