Skip to content

feat(tasks): enable naked task completions and ::: separator#7524

Merged
jdx merged 2 commits intomainfrom
feat/naked-task-completions
Dec 31, 2025
Merged

feat(tasks): enable naked task completions and ::: separator#7524
jdx merged 2 commits intomainfrom
feat/naked-task-completions

Conversation

@jdx
Copy link
Owner

@jdx jdx commented Dec 31, 2025

Summary

Enables shell completions for:

  • Naked task commands: mise foo <TAB> now completes like mise run foo <TAB>
  • Multi-task separators: mise run lint ::: <TAB> now completes task names again after :::

Changes

  • Add default_subcommand = "run" to the usage spec so unknown first args route to run
  • Add restart_token = ":::" to run and tasks run commands for multi-task completion
  • Bump min_usage_version from "1.3" to "2.11"
  • Update task_script_parser.rs with new var_min/var_max fields for usage-lib 2.11 compatibility

Dependencies

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.

  • Sets default_subcommand to run so mise <task> completes like mise run <task>
  • Adds restart_token = ":::" to run and tasks run for multi-task completions after separators
  • Bumps min_usage_version to 2.11 and updates tooling (usage-lib 2.11.0, cargo:usage-cli 2.11.0)
  • Adapts parser to usage-lib 2.11 by adding var_min/var_max to usage::SpecFlag
  • Refreshes lockfiles (Cargo.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.

Copilot AI review requested due to automatic review settings December 31, 2025 01:41
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

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 run command via default_subcommand
  • Adds ::: as a restart token for multi-task completion in run and tasks run commands
  • 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>
@jdx jdx force-pushed the feat/naked-task-completions branch from 536a529 to 2fa2274 Compare December 31, 2025 01:55
@jdx jdx enabled auto-merge (squash) December 31, 2025 01:55
@github-actions
Copy link

github-actions bot commented Dec 31, 2025

Hyperfine Performance

mise x -- echo

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%

@jdx
Copy link
Owner Author

jdx commented Dec 31, 2025

bugbot run

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

✅ Bugbot reviewed your changes and found no bugs!

@jdx jdx merged commit 62d3e4f into main Dec 31, 2025
34 checks passed
@jdx jdx deleted the feat/naked-task-completions branch December 31, 2025 02:11
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)
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.

2 participants