Skip to content

feat(task): add --all to run picker - #11920

Merged
jdx merged 3 commits into
mainfrom
codex/run-all-picker
Aug 12, 2026
Merged

jdx merged 3 commits into
mainfrom
codex/run-all-picker

Conversation

@jdx

@jdx jdx commented Aug 12, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • add mise run --all to load every monorepo task in the interactive selector
  • keep the default picker scoped to the current directory hierarchy
  • add pseudo-terminal coverage for selecting and running a sibling-project task
  • regenerate CLI usage documentation

Why

The interactive mise run picker always used hierarchy-scoped task discovery, even though mise tasks ls --all already supported loading sibling-project tasks. This makes the picker use the existing TaskLoadContext::all() path when --all is requested.

Closes the feature gap discussed in #9349.

Validation

  • mise run test:e2e e2e/tasks/test_task_run_all_picker
  • mise run render:usage
  • mise run lint-fix

AI-assisted — Tool: Codex; model: OpenAI/GPT-5; version: unavailable.


Note

Low Risk
Additive CLI flag for interactive monorepo task selection; default picker behavior is unchanged and conflicts prevent unsafe combinations.

Overview
Adds mise run --all to open the interactive task picker with tasks from the entire monorepo, matching the existing tasks ls --all load path via TaskLoadContext::all().

The default picker stays hierarchy-scoped. --all conflicts with an explicit task name and --affected. Making task optional (still defaulting to default when omitted) enables that conflict check.

Includes an e2e test that selects a sibling-project task through the picker, plus regenerated CLI docs.

Reviewed by Cursor Bugbot for commit 3346361. Bugbot is set up for automated code reviews on this repo. Configure here.

Summary by CodeRabbit

  • New Features
    • Added an --all option to mise run and mise tasks run.
    • Interactive task selection can now include tasks from the entire monorepo.
    • When no task is specified, default is selected automatically.
  • Documentation
    • Updated command documentation to describe the new option and default behavior.
  • Tests
    • Added end-to-end coverage confirming tasks from child projects can be selected and executed.
    • Added validation for unsupported --all combinations.

@coderabbitai

coderabbitai Bot commented Aug 12, 2026 •

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited), Organization UI (inherited)

Review profile: CHILL

Plan: Pro Plus

Run ID: d84a891e-407c-4f28-b792-643d9ac79fa0

📥 Commits

Reviewing files that changed from the base of the PR and between 4cf8a8e and 3346361.

📒 Files selected for processing (5)
  • docs/cli/run.md
  • docs/cli/tasks/run.md
  • man/man1/mise.1
  • mise.usage.kdl
  • src/cli/run.rs
🚧 Files skipped from review as they are similar to previous changes (3)
  • mise.usage.kdl
  • src/cli/run.rs
  • docs/cli/tasks/run.md

📝 Walkthrough

Walkthrough

The PR adds --all to mise run and mise tasks run. The option loads tasks from the entire monorepo for interactive selection. Task resolution propagates the option through affected and standard paths. An end-to-end test validates child-task selection.

Changes

Monorepo-wide task selection

Layer / File(s) Summary
Command option and execution wiring
src/cli/run.rs, src/cli/bootstrap.rs, src/cli/mod.rs, src/cli/watch.rs, mise.usage.kdl
The commands define --all, normalize omitted tasks to default, and pass the scope through task resolution. Existing internal callers set all to false.
Interactive task loading
src/task/task_list.rs
Interactive selection receives Config and the all flag. It uses TaskLoadContext::all() when repository-wide loading is enabled.
End-to-end validation and documentation
e2e/tasks/test_task_run_all_picker, docs/cli/run.md, docs/cli/tasks/run.md, man/man1/mise.1
The end-to-end test selects a child monorepo task and checks incompatible options. CLI documentation describes --all and the omitted-task behavior.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Developer
  participant mise_run
  participant get_task_lists
  participant prompt_for_task
  participant MonorepoTasks
  Developer->>mise_run: invoke --all
  mise_run->>get_task_lists: pass all=true
  get_task_lists->>prompt_for_task: pass Config and all
  prompt_for_task->>MonorepoTasks: load with TaskLoadContext::all()
  MonorepoTasks-->>prompt_for_task: return monorepo task choices
  prompt_for_task-->>Developer: show interactive selector
Loading

Suggested reviewers: marukome0743, jambalaya56562

Poem

I’m a rabbit with tasks in a wide monorepo,
I hop through the picker where all choices show.
Root task and child task wait in a row,
--all selects the task to run.
Then quick rabbit hops make the command go.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 75.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: adding the --all option to the task run picker.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@greptile-apps

greptile-apps Bot commented Aug 12, 2026 •

Copy link
Copy Markdown
Contributor

Greptile Summary

Adds mise run --all for selecting tasks across an entire monorepo while preserving hierarchy-scoped discovery by default.

  • Makes the positional task optional and applies default when omitted.
  • Routes --all through monorepo-wide task discovery and prevents combining it with a task or affected-task selection.
  • Adds pseudo-terminal coverage for selecting and running a sibling-project task.
  • Regenerates CLI usage documentation and updates internal callers for the revised task-list interface.

Confidence Score: 5/5

The pull request appears safe to merge.

No blocking failure remains.

Important Files Changed

Filename Overview
src/cli/run.rs Adds the --all option, optional task handling, conflict declarations, and monorepo-wide picker routing; the previously reported affected-picker conflict is now prevented.
src/task/task_list.rs Extends interactive task selection to optionally load tasks using the all-monorepo context while retaining existing dependency filtering.
e2e/tasks/test_task_run_all_picker Covers sibling-project selection through a pseudo-terminal and verifies unsupported --all combinations are rejected.
mise.usage.kdl Declares the new option and updates the optional task argument documentation.
src/cli/bootstrap.rs Adapts bootstrap task execution to the optional task field and explicitly disables all-task selection.
src/cli/watch.rs Updates task discovery for the extended function signature without changing watch behavior.

Reviews (3): Last reviewed commit: "chore(ci): fix run flag ordering" | Re-trigger Greptile

Comment thread src/cli/run.rs Resolved

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 8c9fc06. Configure here.

Comment thread src/task/task_list.rs Resolved
@github-actions

github-actions Bot commented Aug 12, 2026 •

Copy link
Copy Markdown
Contributor

Instruction counts

benchmark trend instructions Δ wall (min) Δ
env ▄▅▁█▄▆▇▇▄ 80,743,536 → 80,680,782 -0.08% 18.50 → 18.99ms +2.66%
hook-env ▁▁▁▄▁▃▄▃█ 82,182,250 → 82,338,749 +0.19% 18.68 → 19.36ms +3.64%
ls ▇▇▆█▆▇▇▃▁ 73,340,223 → 73,256,534 -0.11% 16.42 → 17.02ms +3.67%
registry ███████▁▁ 43,168,628 → 43,158,063 -0.02% 12.47 → 12.24ms -1.82%
startup ▁▁▂▅▁▆▇█▅ 15,574,109 → 15,558,678 -0.10% 9.57 → 9.23ms -3.57%

No instruction-count regression above 1%.

Only instruction counts gate. Wall clock is shown for context — on identical hardware it moves 4-20% run to run.

Measured by tak — instruction-counted CLI benchmarks, stored in this repository's git notes.

3346361f49b1 vs 55ba059234fb · measured on the runner, not pushed to the history.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
e2e/tasks/test_task_run_all_picker (1)

29-32: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Verify that the selector runs only the chosen task.

The assertion only checks for child task ran. An implementation that ignores the arrow input and runs both tasks would pass. Also assert that default task ran is absent.

Proposed assertion
-if [[ $output != *"child task ran"* ]]; then
+if [[ $output != *"child task ran"* || $output == *"default task ran"* ]]; then
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@e2e/tasks/test_task_run_all_picker` around lines 29 - 32, Strengthen the
assertions in the task selector test by verifying that the output does not
contain “default task ran” after confirming it contains “child task ran”. Keep
the existing child-task assertion and fail the test when the unselected default
task also executes.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@e2e/tasks/test_task_run_all_picker`:
- Around line 29-32: Strengthen the assertions in the task selector test by
verifying that the output does not contain “default task ran” after confirming
it contains “child task ran”. Keep the existing child-task assertion and fail
the test when the unselected default task also executes.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited), Organization UI (inherited)

Review profile: CHILL

Plan: Pro Plus

Run ID: 6346af30-8ee2-466e-8598-6f99f4411b96

📥 Commits

Reviewing files that changed from the base of the PR and between 8c9fc06 and 4cf8a8e.

📒 Files selected for processing (8)
  • docs/cli/run.md
  • docs/cli/tasks/run.md
  • e2e/tasks/test_task_run_all_picker
  • mise.usage.kdl
  • src/cli/bootstrap.rs
  • src/cli/mod.rs
  • src/cli/run.rs
  • src/task/task_list.rs
🚧 Files skipped from review as they are similar to previous changes (6)
  • src/cli/bootstrap.rs
  • docs/cli/run.md
  • mise.usage.kdl
  • docs/cli/tasks/run.md
  • src/cli/mod.rs
  • src/task/task_list.rs

@jdx
jdx merged commit 630b759 into main Aug 12, 2026
32 checks passed
@jdx
jdx deleted the codex/run-all-picker branch August 12, 2026 12:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant