feat(tasks): enable naked task completions and ::: separator#7524
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR enhances shell completions for the mise tool by enabling "naked" task command completions and support for multi-task separators. Instead of requiring mise run foo, users can now type mise foo and get task completions, and after using the ::: separator for chaining tasks, completions will restart for the next task name.
Key Changes:
- Routes unknown first arguments to the
runcommand viadefault_subcommand - Adds
:::as a restart token for multi-task completion inrunandtasks runcommands - Updates usage-lib compatibility from v1.3 to v2.11
Reviewed changes
Copilot reviewed 2 out of 3 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| src/cli/usage.rs | Configures default_subcommand and restart_token for naked task completions and multi-task separator support; bumps min version to 2.11 |
| src/task/task_script_parser.rs | Adds var_min and var_max fields for usage-lib v2.11 compatibility |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Add `default_subcommand = "run"` so `mise foo <TAB>` completes like `mise run foo <TAB>` - Add `restart_token = ":::"` to `run` and `tasks run` for multi-task completion - Bump usage-lib to 2.11 and min_usage_version to 2.11 - Add var_min/var_max fields to SpecFlag initializers for usage-lib 2.11 compat 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
536a529 to
2fa2274
Compare
Hyperfine Performance
|
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2025.12.13 x -- echo |
20.2 ± 0.7 | 19.0 | 22.9 | 1.00 |
mise x -- echo |
20.5 ± 0.9 | 19.3 | 23.5 | 1.01 ± 0.06 |
mise env
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2025.12.13 env |
19.4 ± 0.6 | 18.6 | 21.7 | 1.00 |
mise env |
19.8 ± 0.9 | 18.6 | 27.2 | 1.02 ± 0.06 |
mise hook-env
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2025.12.13 hook-env |
19.7 ± 0.6 | 18.7 | 21.7 | 1.00 |
mise hook-env |
19.8 ± 0.7 | 18.8 | 23.4 | 1.01 ± 0.05 |
mise ls
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2025.12.13 ls |
17.7 ± 0.6 | 16.7 | 19.5 | 1.00 |
mise ls |
18.0 ± 0.8 | 16.9 | 20.5 | 1.02 ± 0.06 |
xtasks/test/perf
| Command | mise-2025.12.13 | mise | Variance |
|---|---|---|---|
| install (cached) | 111ms | 110ms | +0% |
| ls (cached) | 66ms | 67ms | -1% |
| bin-paths (cached) | 72ms | 73ms | -1% |
| task-ls (cached) | 283ms | 280ms | +1% |
Owner
Author
|
bugbot run |
jdx
pushed a commit
that referenced
this pull request
Jan 7, 2026
### 🚀 Features - **(hooks)** add tool context env vars to postinstall hooks by @jdx in [#7521](#7521) - **(sops)** support standard SOPS environment variables by @yordis in [#7461](#7461) - **(tasks)** Add disable_spec_from_run_scripts setting by @iamkroot in [#7471](#7471) - **(tasks)** Add task_show_full_cmd setting by @iamkroot in [#7344](#7344) - **(tasks)** enable naked task completions and ::: separator by @jdx in [#7524](#7524) - add Forgejo backend by @roele in [#7469](#7469) - override node bundled npm by specified version of npm by @risu729 in [#7559](#7559) ### 🐛 Bug Fixes - **(aqua)** fix tree-sitter bin path regression by @risu729 in [#7535](#7535) - **(ci)** exclude subcrate tags from release workflow by @jdx in [#7517](#7517) - **(e2e)** remove hardcoded year from version check by @jdx in [#7584](#7584) - **(github)** asset matcher does not handle mixed archive/binary assets properly by @roele in [#7566](#7566) - **(github)** prioritize .zip on windows by @risu729 in [#7568](#7568) - **(github)** prefer .zip over non-archive extensions on linux by @risu729 in [#7587](#7587) - **(npm)** always use hoisted installs of bun by @sushichan044 in [#7542](#7542) - **(npm)** suppress NPM_CONFIG_UPDATE_NOTIFIER by @risu729 in [#7556](#7556) - **(registry)** fix biome test to handle version prefix by @jdx in [#7585](#7585) - **(tasks)** load monorepo task dirs without config by @matixlol in [#7478](#7478) - force reshim when windows_shim_mode is hardlink by @roele in [#7537](#7537) - simple .tar files are not extracted properly by @roele in [#7567](#7567) - quiet kerl update output by @iloveitaly in [#7467](#7467) ### 📚 Documentation - **(registry)** remove ubi backend from preferred backends list by @risu729 in [#7555](#7555) - **(tasks)** remove advanced usage specs sections from toml-tasks.md by @risu729 in [#7538](#7538) - fix invalid config section `[aliases]` by @muzimuzhi in [#7518](#7518) - Fix path to GitLab backend source by @henrebotha in [#7529](#7529) - Fix path to GitLab backend source by @henrebotha in [#7531](#7531) - update `mise --version` output by @muzimuzhi in [#7530](#7530) ### 🧪 Testing - **(win)** use pester in backend tests by @risu729 in [#7536](#7536) - update e2e tests to use `[tool_alias]` instead of `[alias]` by @muzimuzhi in [#7520](#7520) ### 📦️ Dependency Updates - update alpine:edge docker digest to ea71a03 by @renovate[bot] in [#7545](#7545) - update docker/setup-buildx-action digest to 8d2750c by @renovate[bot] in [#7546](#7546) - update ghcr.io/jdx/mise:copr docker digest to 23f4277 by @renovate[bot] in [#7548](#7548) - update ghcr.io/jdx/mise:alpine docker digest to 0adc211 by @renovate[bot] in [#7547](#7547) - lock file maintenance by @renovate[bot] in [#7211](#7211) - lock file maintenance by @renovate[bot] in [#7572](#7572) - replace dependency @tsconfig/node18 with @tsconfig/node20 by @renovate[bot] in [#7543](#7543) - replace dependency @tsconfig/node20 with @tsconfig/node22 by @renovate[bot] in [#7544](#7544) ### 📦 Registry - add zarf by @joonas in [#7525](#7525) - update aws-vault to maintained fork by @h3y6e in [#7527](#7527) - fix claude backend http for windows-x64 by @granstrand in [#7540](#7540) - add sqlc by @phm07 in [#7570](#7570) - use spm backend for swift-package-list by @risu729 in [#7569](#7569) - add npm (npm:npm) by @risu729 in [#7557](#7557) - add github backend for tmux by @ll-nick in [#7472](#7472) ### Chore - **(release)** update Changelog for v2025.12.13 by @muzimuzhi in [#7522](#7522) ### New Contributors - @ll-nick made their first contribution in [#7472](#7472) - @sushichan044 made their first contribution in [#7542](#7542) - @phm07 made their first contribution in [#7570](#7570) - @granstrand made their first contribution in [#7540](#7540) - @h3y6e made their first contribution in [#7527](#7527) - @matixlol made their first contribution in [#7478](#7478) ## 📦 Aqua Registry Updates #### New Packages (9) - [`anomalyco/opencode`](https://github.com/anomalyco/opencode) - [`astral-sh/ty`](https://github.com/astral-sh/ty) - [`github/copilot-cli`](https://github.com/github/copilot-cli) - [`github/gh-ost`](https://github.com/github/gh-ost) - [`golangci/golines`](https://github.com/golangci/golines) - [`jamf/Notifier`](https://github.com/jamf/Notifier) - [`microsoft/vscode/code`](https://github.com/microsoft/vscode/code) - [`pranshuparmar/witr`](https://github.com/pranshuparmar/witr) - [`spinel-coop/rv`](https://github.com/spinel-coop/rv) #### Updated Packages (37) - [`FiloSottile/age`](https://github.com/FiloSottile/age) - [`alvinunreal/tmuxai`](https://github.com/alvinunreal/tmuxai) - [`aquasecurity/starboard`](https://github.com/aquasecurity/starboard) - [`aristocratos/btop`](https://github.com/aristocratos/btop) - [`biomejs/biome`](https://github.com/biomejs/biome) - [`bootandy/dust`](https://github.com/bootandy/dust) - [`borgbackup/borg`](https://github.com/borgbackup/borg) - [`bvaisvil/zenith`](https://github.com/bvaisvil/zenith) - [`cri-o/cri-o`](https://github.com/cri-o/cri-o) - [`cubefs/cubefs`](https://github.com/cubefs/cubefs) - [`domoritz/arrow-tools/csv2arrow`](https://github.com/domoritz/arrow-tools/csv2arrow) - [`domoritz/arrow-tools/csv2parquet`](https://github.com/domoritz/arrow-tools/csv2parquet) - [`domoritz/arrow-tools/json2arrow`](https://github.com/domoritz/arrow-tools/json2arrow) - [`domoritz/arrow-tools/json2parquet`](https://github.com/domoritz/arrow-tools/json2parquet) - [`fission/fission`](https://github.com/fission/fission) - [`folbricht/desync`](https://github.com/folbricht/desync) - [`go-acme/lego`](https://github.com/go-acme/lego) - [`gohugoio/hugo`](https://github.com/gohugoio/hugo) - [`gohugoio/hugo/hugo-extended`](https://github.com/gohugoio/hugo/hugo-extended) - [`golang.org/x/perf/cmd/benchstat`](https://github.com/golang.org/x/perf/cmd/benchstat) - [`gsamokovarov/jump`](https://github.com/gsamokovarov/jump) - [`haskell/cabal/cabal-install`](https://github.com/haskell/cabal/cabal-install) - [`kptdev/kpt`](https://github.com/kptdev/kpt) - [`kubescape/kubescape`](https://github.com/kubescape/kubescape) - [`mas-cli/mas`](https://github.com/mas-cli/mas) - [`maxpert/marmot`](https://github.com/maxpert/marmot) - [`mistakenelf/fm`](https://github.com/mistakenelf/fm) - [`psf/black`](https://github.com/psf/black) - [`redpanda-data/connect`](https://github.com/redpanda-data/connect) - [`rest-sh/restish`](https://github.com/rest-sh/restish) - [`saucelabs/forwarder`](https://github.com/saucelabs/forwarder) - [`sethvargo/ratchet`](https://github.com/sethvargo/ratchet) - [`stackrox/kube-linter`](https://github.com/stackrox/kube-linter) - [`steveyegge/beads`](https://github.com/steveyegge/beads) - [`suzuki-shunsuke/rgo`](https://github.com/suzuki-shunsuke/rgo) - [`txn2/kubefwd`](https://github.com/txn2/kubefwd) - [`zyedidia/micro`](https://github.com/zyedidia/micro)
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.
Summary
Enables shell completions for:
mise foo <TAB>now completes likemise run foo <TAB>mise run lint ::: <TAB>now completes task names again after:::Changes
default_subcommand = "run"to the usage spec so unknown first args route torunrestart_token = ":::"torunandtasks runcommands for multi-task completionmin_usage_versionfrom "1.3" to "2.11"task_script_parser.rswith newvar_min/var_maxfields for usage-lib 2.11 compatibilityDependencies
Requires usage-lib v2.11.0 (jdx/usage#410)
Test plan
mise fo<TAB>completes task name "foo" (naked completion)mise run lint ::: te<TAB>completes task name "test" (restart token)mise --verbose fo<TAB>still works with global flags before naked arg🤖 Generated with Claude Code
Note
Enables improved task completions via usage-spec updates and dependency bumps.
default_subcommandtorunsomise <task>completes likemise run <task>restart_token = ":::"torunandtasks runfor multi-task completions after separatorsmin_usage_versionto2.11and updates tooling (usage-lib 2.11.0,cargo:usage-cli 2.11.0)usage-lib 2.11by addingvar_min/var_maxtousage::SpecFlagCargo.lock,mise.lock) to align transitive deps (e.g.,windows-sys,base64,itertools)Written by Cursor Bugbot for commit 036fc76. This will update automatically on new commits. Configure here.