Merged
Conversation
This was referenced Feb 10, 2026
Member
Author
This stack of pull requests is managed by Graphite. Learn more about stacking. |
vp run
fengmk2
approved these changes
Feb 10, 2026
afe9e08 to
5ac00a8
Compare
420d3d7 to
881b5d3
Compare
93bb95d to
1f4ccd8
Compare
This was referenced Feb 12, 2026
93d9ffe to
7311b74
Compare
1f4ccd8 to
48f06ea
Compare
48f06ea to
b40f41f
Compare
When `vp run` is called without a task or with a typo, show an interactive fuzzy-searchable selector (TTY) or a plain task list (piped). - Add vite_select crate with crossterm-based interactive widget and nucleo-matcher fuzzy search - Extract RunFlags from RunCommand for flag preservation across selection - Detect interactive vs non-interactive mode via stdin/stdout is_terminal - Show 'did you mean' suggestions for typos (including -r/--recursive) - Add RecursiveTaskNotFound error for recursive queries with no matches - Only intercept task-not-found at top level (non-empty call stack propagates as-is, fixing nested task error hanging) - Style list items as 'taskName: command' with cyan command color - E2E tests: list, did-you-mean, interactive select, search, scroll, cancel, flag preservation, nested task error propagation
…ce for Windows ConPTY
…e_select
- Replace interactive_select() + print_select_list() with single select_list()
- Add Mode enum: Interactive { selected_index: &mut usize } / NonInteractive
- Remove SelectResult; selected index written directly via Mode reference
- Shared render_items() with RenderParams used by both modes
- Switch from crossterm styling to owo-colors with if_supports_color
- Esc now clears search query instead of cancelling selection
- Ctrl+C restores terminal and exits with code 130
…ingle handle_no_task method
…tive vs non-interactive mode
…etection for current-package prioritization
…al width Prevents line wrapping that breaks cursor-based clearing when navigating the interactive task list. Descriptions exceeding terminal width are truncated with an ellipsis. Non-interactive (piped) output is unaffected. Moves the long-cmd test into a dedicated task-select-truncate fixture so it does not appear in every task-select snapshot.
…ze to 12 Remove the vp interact subcommand and interactions-no-vp test fixture as they are no longer needed. Remove crossterm and pty_terminal_test_client dependencies from vite_task_bin that were only used by the interact command. Increase interactive task select page_size from 8 to 12. Add extra tasks to the task-select fixture to ensure paging behavior is still tested.
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.

Interactive task selector for
vp runScreen.Recording.2026-02-12.at.22.44.49.mov
When
vp runis called without a task or with a typo, show an interactive fuzzy-searchable selector (TTY) or a plain task list (piped stdin).Interactive mode (TTY)
nucleo-matcher-r,-t, extra args) preservedNon-interactive mode (piped stdin)
taskName: commandKey implementation details
vite_selectcrate — standalone UI widget with crossterm rendering, fuzzy matching,after_rendercallback for test milestonesRunFlags— extracted asCopystruct with#[clap(flatten)]so flags surviveRunCommandconsumptionRecursiveTaskNotFounderror variant — recursive queries (-r) now error on unmatched task names instead of silently returning an empty graphtask_not_found_name()returnsNonewhen the call stack is non-empty, so errors from nested tasks (e.g.vp run nonexistentinside a task script) propagate as-is instead of triggering the selectorE2E tests
12 test cases across
task-selectandtask-listfixtures covering:-r,-t)