Repository navigation
chore(deps): update dependency jdx/mise to v2026.11.7 - #2671
Merged
Merged
Conversation
renovate
Bot
force-pushed
the
renovate/mise
branch
3 times, most recently
from
November 10, 2026 14:14
671793d to
f233067
Compare
renovate
Bot
force-pushed
the
renovate/mise
branch
4 times, most recently
from
November 12, 2026 04:15
614cdf6 to
d3c803c
Compare
renovate
Bot
force-pushed
the
renovate/mise
branch
from
November 12, 2026 11:54
d3c803c to
f452211
Compare
Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
Contributor
Author
Edited/Blocked NotificationRenovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR. You can manually request rebase by checking the rebase/retry box above. |
zeitlinger
approved these changes
Nov 12, 2026
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.
Note
This PR body was truncated due to platform limits.
This PR contains the following updates:
v2026.10.24→v2026.11.7Release Notes
jdx/mise
v2026.11.7: : Shorter shim errors, task run history in JSON, and dotfiles safety fixesCompare Source
When no config selects a shim's tool, the shim now fails with a one-line error, and a new opt-in setting can run the latest installed version instead.
mise tasks info --jsonandmise tasks ls --jsonnow include each task's run history, and vfox plugins that download nothing can install in locked mode. This release also fixes problems in bootstrap packages, dotfiles, tasks,mise execand config rewrites.Added
Shorter shim errors and
shims.fallback_to_installed. When no config selects a shim's tool, the error is now one line that names the latest installed version and two ways to use it. Add--verboseto list every installed version. #15525 (@jdx)The new
shims.fallback_to_installedsetting (MISE_SHIMS_FALLBACK_TO_INSTALLED, defaultfalse) makes the shim run that latest installed version instead of failing. It only applies to tools that no config mentions. If a configured version is missing, the shim still fails instead of running a different version. Windows.exeshims keep the error.Task run history in JSON output.
mise tasks info <task> --jsonand each entry ofmise tasks ls --jsonnow include ahistoryfield. It has the same summary asmise tasks history --summary --json: number of runs and failures, median duration, and the last run's duration, status and start time. The field isnullfor a task with no recorded runs. Text output hasn't changed. #15522 (@jdx)Locked installs for vfox plugins that download nothing. Some tool plugins download nothing, such as mise-xcode, which selects an Xcode already on the system. These plugins can now set
downloads = falseinmetadata.lua.mise install --lockedthen installs them without a lockfile URL, andmise lockrecords only the version. If such a plugin'sPreInstallreturns aurlanyway, the install fails with an error. #15586 (@jdx, @michalpopek)Changed
CLAUDECODE=1orAI_AGENT), it no longer prints the new-version notice, themise self-updateinstructions, orhintmessages.mise version --jsonand the warnings inmise doctorstill report a newer version. SetAI_AGENT=0to see the notices again. #15523 (@jdx)Fixed
Config and upgrades
mise upgrade --bumpandmise useno longer write a registry entry's default options intomise.toml. For example,jactionlint = "2.4.0"no longer turns into{ version = "2.5.0", workflow = "release.yaml" }. Options already written in the file are kept. #15519 (@jdx, @jylenhof)uvx = trueno longer becomesuvx = "true". #15517 (@jdx)packageManagerfield pins pnpm with a checksum, mise now runs pnpm's install script. pnpm 12 can then use its native binary instead of warning that it is running through Node.js. The checksum is still verified. #15563 (@jdx)mise doctornow warns when apackage.jsonthat mise reads as a version file can't be parsed, for example because of a trailing comma. Before, mise ignored the versions in that file without saying why. #15567 (@jdx, @crntnvdl)Install, lock and exec
mise installormise locknow installs missing[plugins]entries first. Idiomatic version files declared by those plugins, such as.xcode-version, are then read on the first run. Before, mise reported "all tools are installed" and a second run was needed. #15585 (@jdx, @michalpopek)mise installno longer fails with "failed to rebuild runtime symlinks" when the user's global config picks a different version than the administrator's system config. mise now leaves thegloballink in a read-only shared install directory as it is. #15526 (@jdx, @marcodb-servescale)mise locknow sends the forge token when it downloads a release asset to compute its checksum. This fixes401 Unauthorizederrors for private or self-managed GitLab, GitHub, GitHub Enterprise and Forgejo releases that publish no digest. #15556 (@jdx)mise x -- <cmd>, directories fromenv._.pathnow come before tool bin directories even when the caller's PATH already contains them. A project's pinnednpmis no longer skipped in favor of Node's bundled one. #15564 (@jdx)mise xand shims no longer keep the caller's stdout pipe open while a detached child process runs. Before, PowerShell captures waited until that process exited, which affected tools like the Nx daemon. #15583 (@jdx)Tasks and daemons
mise.tomlwhen you run it from a sibling project in a monorepo, for example withmise run //foo:foo_taskfrombar/. #15568 (@jdx)mise run <task> -hnow asks the task's usage spec whether-hmeans help. Tasks that setdisable_help, declare their own-hflag, or accept-has a flag value now receive it as an argument. Other tasks still show help. #15573 (@jdx)mise-tasks/sub/nested, now resolve{{config_root}}and relative_.filepaths in theirenvagainst the project root, not the subdirectory. #15557 (@jdx)mise run --quietand--silentnow hide the startup log lines of daemons that a task starts. #15588 (@jdx, @artemklevtsov)ports.<name>) collides with a daemon in another checkout, the error now names that daemon and checkout. Before, it named whichever process held the port. mise also warns when a worktree's slot moves one automatic port onto a port the primary checkout uses for another. #15561 (@jdx, @ponko2)Bootstrap packages
snap listwith English messages, somise bootstrapno longer tries to reinstall snaps that are already installed when the system language isn't English. #15518 (@jdx, @nahoj)ngrok, now install. mise expands$HOMEBREW_PREFIXin the wrapper's arguments. #15562 (@jdx)miniconda, no longer fail with "multiple Caskroom versions". mise now counts only directories that Homebrew has a metadata record for. Before, this error stopped bootstrap for every package. #15560 (@jdx)require_relative, such asbrew:gromgit/fuse/sshfs-mac, can now be evaluated and built from source. mise loads them from a checkout of the tap at its pinned commit. Only GitHub taps are supported. #15572 (@jdx)Dotfiles and skills
--yes,mise dot applynow refuses to overwritecopytargets that were edited locally and aren't saved in history. Before, it replaced them without asking, andmise dot undocouldn't restore them. The error points tomise dot diffand--yes. #15565 (@jdx, @nahoj)[history.reload]commands for files that changed run. #15558 (@jdx)mise dot apply. A long commit message used to exceed the OS argument limit. Machines that are already stuck finish the pending operation on their nextsave. #15575 (@jdx)~inskills.dirorMISE_SKILLS_DIRnow expands to the home directory. Before, mise created a directory literally named~. #15559 (@jdx)Documentation
[env]on an agent's PATH. It includes a one-line Claude CodeSessionStarthook that runsmise hook-envand notes on Codex and git worktrees. #15521 (@jdx)Full Changelog: jdx/mise@v2026.11.6...v2026.11.7
💚 Sponsor mise
mise is built and maintained by @jdx, an open source developer at entire.io, the title sponsor of his open source work.
If mise saves you or your team time, please consider becoming an individual or company sponsor. Your support funds ongoing development and helps keep mise fast, free, and independent.
v2026.11.6: : Pick several tasks with mise run --multi, and use unprefixed bootstrap packagesCompare Source
mise run --multilets you pick several tasks from a checklist.[bootstrap.packages]keys without amanager:prefix now install through one available package manager, and the npm backend can install from an HTTPS tarball URL. Custom daemons can name several ports, and launchd agents can set resource limits. This release also changes the default prompt theme tobase16and fixes problems with tasks,mise env --dotenv, and installs.Added
mise run --multi. Opens the task picker as a checklist. Press Space to check a task,/to filter, and Enter to run the checked tasks. They run as if you had joined them with:::, so they run in parallel unless one depends on another, and-jand the othermise runoptions still apply. Add--allto list tasks from every project in a monorepo.--multineeds an interactive terminal and can't be combined with a task name,--affectedor--tag. #15503 (@jdx)Unprefixed
[bootstrap.packages]keys. A key without amanager:prefix now installs through exactly one manager, so the same config works across distributions and operating systems. mise uses the first manager that is available and allowed bysystem_packages.managers. The default order isapt,dnf,pacman,zypper,apk,brew,winget,scoop,choco. #15506 (@jdx, @thernstig)system_packages.prefersetting (MISE_SYSTEM_PACKAGES_PREFER) replaces that order, and only the managers it lists are considered.namesoption when a package has a different name under some managers.mise bootstrap packages statuslists it asskipped."apt:git"work as before.npm tools from HTTPS tarball URLs. The npm backend can now install a package from a tarball URL, such as a pkg.pr.new preview build. Use
npm:followed by the full URL as the tool name, for examplemise use 'npm:<tarball URL>'. The version is a prefix of the tarball's SHA-256, solatestmeans whatever the URL serves now, andmise upupdates the tool when that content changes. #15461 (@jdx, @kjanat)checksumoption isn't supported.allow_exotic_deps.mise.lockrecords the version but not a dependency graph.Named ports on custom daemons.
runandtaskdaemons can now declare several ports in aportstable, as presets and containers already can. Before, mise passed these entries to pitchfork, which ignored them. Each port is exported as<DAEMON>_<NAME>_PORT. A fixed number is used as written. Anautoport needs its ownbase, and each linked worktree gets a different port. Named ports are checked for collisions with other ports. #15504 (@jdx, @ponko2)Resource limits for launchd agents.
[bootstrap.macos.launchd.agents]entries acceptsoft_resource_limitsandhard_resource_limits. You can now raise launchd's default limit of 256 open files without wrapping the program in aulimitshell command. The keys are launchd's nine limits in snake case, such asnumber_of_filesandnumber_of_processes. An empty table, or a soft limit above the hard limit, is an error. Based on @disintegrator's implementation. #15509 (@jdx)history.lock_wait. Sets how longmise dotcommands that change history wait when another history operation is running. Set it in config or withMISE_HISTORY_LOCK_WAIT. The default is30s,0fails immediately, and any value above1his treated as1h.mise dot watchandmise dot recovernever wait. #15498 (@jdx, @zachbornheimer)Progress in
mise upgrade. After installing,mise upgradechecks every tracked config before removing old versions. This step now shows achecking tracked configsprogress line, so the command no longer looks stuck. The check is also faster with many tracked configs: with about 930 configs, the same check inmise prune --dry-rundropped from about 12s to 2-4s. #15489, #15512 (@jdx)Changed
base16. Interactive prompts, such as themise runtask picker, were hard to read on light terminals that don't setCOLORFGBG. Thebase16theme now uses the terminal's named colors, and unselected options and help text use the terminal's normal text color. On dark terminals, prompts now look different by default. To keep the previous look, setcolor_theme = "charm"orcolor_theme = "auto". #15494, #15524 (@jdx, @AdrianDC)Fixed
usage. A TOML task whoseusagecouldn't be loaded, such as a missing include file or a spec that didn't parse, used to breakmise tasks --usage,mise generate task-docsand completion for every task. Now mise warns about that task and the others keep working. A broken task that doesn't use its spec, such as one withraw_args = true, still runs.mise tasks validatestill reports the error. #15465 (@jdx)MISE_ORIGINAL_CWDwith--cd. Tasks run with-C/--cdorMISE_CDnow get the directory where mise was started, not the--cdtarget. #15464 (@jdx)sources = ["packages/*/src/**/*"]no longer reads everypackages/*/node_modules, and mise skips directories excluded by!**/node_modules/**. Tasks still select the same files. #15499 (@jdx, @2chanhaeng)mise env --dotenvoutput can be read back. Values are now quoted and escaped when needed, so values with#, newlines, quotes or$stay the same when the file is loaded with_.file. Simple values stay unquoted. Tools that don't handle quotes, such as Docker--env-file, read the quotes as part of the value. #15490 (@jdx){{ env.X }}errors. When a template referred to an undefinedenvfield, the error listed the name of every environment variable, including secret names such as*_TOKEN. In an activated shell, mise printed this list at every prompt. The error now names only the missing field and suggestsget_env(name=..., default=""). #15510 (@jdx)mise activate nu, pressing Tab aftermisenow completes mise subcommands and arguments instead of file paths. On Nushell versions before 0.116, flags still need^miseand the script frommise completion nu --install. #15505 (@jdx, @Deano217)PATH. For example,cargo installno longer fails whencargois wrapped by mbx.mise exec,mise runand ordinary commands still use wrappers. #15495 (@jdx)cargo:tools withminimum_release_age. With an explicitminimum_release_ageand"core:rust" = "stable",cargo:tools failed to install because mise looked forrust@stableinstead of the dated Rust version it had installed. #15460 (@jdx)minimum_release_age, such as2026-11-09, now includesrust@betaandrust@nightlybuilds from that day instead of falling back to the day before. #15486 (@jdx)packslip:releases in monorepos. In repositories that publish releases for several components,packslip:couldn't find releases listed after another component's releases. A pinned version is now looked up by its tag, andlatestsearches more of the release history. #15501 (@jdx, @pepicrft)http_retriesfirst, which could take minutes per file. #15485 (@jdx, @csechuan)http:backend. Installs could fail withFile name too long, for example Yarn 2+ from apackageManagerwith a Corepack checksum. Temporary directory names now stay under the filesystem's name length limit. #15493 (@jdx)github:backend. A failed install also removes its cache directory. #15511 (@jdx, @gigaimage)zap :not_required. Previewing or installing these casks failed with anArgumentError. #15491 (@jdx, @cdenihan)Full Changelog: jdx/mise@v2026.11.5...v2026.11.6
💚 Sponsor mise
mise is built and maintained by @jdx, an open source developer at entire.io, the title sponsor of his open source work.
If mise saves you or your team time, please consider becoming an individual or company sponsor. Your support funds ongoing development and helps keep mise fast, free, and independent.
v2026.11.5: :mise dot filesshows what is tracked in a directoryCompare Source
This release adds
mise dot filesto show which files in a directory are tracked, and astatus.show_env_ignoresetting to hide variables from the status line. It also lets dot commands accept relative paths, stops warning when you save dotfiles by hand, and fixes downloads that failed because~/.netrcheld a stale login.Added
mise dot files. Lists the files and subdirectories in a directory and shows the state of each one, so you no longer have to work out how[dotfiles]entries, theirexclude/includelists and[history] excludeapply. The possible states are:tracked: saved to history. The row shows the entry that covers it and whether it autosaves.excluded: covered by an entry, but a rule leaves it out. The row names the rule.omitted: selected, but capture skips it, for example a file that looks like a credential.untracked: no entry covers it.partial: a directory that isn't tracked itself but contains tracked files.local: a path kept in local-only history (mode = "track-local").PATHdefaults to the current directory and can be a relative path or a single file.-r/--recursivelists every file below the directory,--trackedand--untrackedfilter the rows, and--jsonprints one object per row. The command uses the same exclusion check asmise dot save, so the two always agree. #15456 (@jdx, @farangkao)status.show_env_ignore. Withstatus.show_envon, mise lists every variable it sets each time you enter a directory, including variables that never change. This new setting takes variable names or shell globs to leave out of that line. You can also set it withMISE_STATUS_MESSAGE_SHOW_ENV_IGNOREas a comma-separated list. Changes to config files and paths are still shown. mise warns about malformed patterns and ignores them. #15454 (@jdx)With this config,
mise +DENO_INSTALL_ROOT +GOBIN +GOROOT +LUA_INITbecomesmise +LUA_INIT.Fixed
mise dotcommands.mise dot track config.tomlused to fail withtarget must be absolute or start with ~/.track,untrack,addandeditnow resolve relative paths from the current directory the way a shell does, including..after a symlinked directory. A path inside your home directory is saved in its~/form. Exclude and include rules are still relative globs. #15455 (@jdx, @farangkao)history-watchservice,mise dot tracknow prints an info message about saving withmise dot saveinstead of a warning, so--quiethides it.mise dot statusnow lists automatic capture asmanual, without a warning or a suggested next step. mise still warns if the watcher is set up but not running, or if captures fail. #15455 (@jdx, @farangkao)~/.netrccredentials. Some downloads failed with401 Unauthorizedeven though the server would serve the file without logging in. For example,mise install glabfailed against gitlab.com when~/.netrcheld a login that gitlab.com no longer accepted. If the only credentials came from netrc and the server returns 401, mise now retries once without them. Later retries of the same download also leave them out. Requests that carry their ownAuthorizationheader (such as forge tokens) and requests redirected to another host are not retried this way. #15451 (@jdx)Full Changelog: jdx/mise@v2026.11.4...v2026.11.5
💚 Sponsor mise
mise is built and maintained by @jdx, an open source developer at entire.io, the title sponsor of his open source work.
If mise saves you or your team time, please consider becoming an individual or company sponsor. Your support funds ongoing development and helps keep mise fast, free, and independent.
v2026.11.4: : zip:: includes for config and tasksCompare Source
Config and task includes can now load from
zip::archives over HTTP(S). This release also fixes shim tab completion,[tool_alias]handling inenable_tools/disable_toolsandmise prune,mise dot syncconflicts, and ufw firewall rule matching inmise bootstrap.Added
zip::includes for config and tasks. Before,includeandtask_config.includesaccepted local paths,git::andoci::sources. They now also accept a zip archive served over HTTP or HTTPS. mise downloads and unpacks the archive, then loads it the same way as anoci::artifact. Fortask_config.includesit loads executable file tasks and.tomltask files. Forincludeit loads themise.tomlat the archive root. Zip entries don't reliably carry file permissions, so mise makes non-TOML files that start with a shebang executable. #15439 (@jdx)fetch_remote_versions_cache), and paranoid mode rejects zip config includes.Fixed
aubeorpitchfork) showed mise's own subcommands instead of the tool's. mise now answers completion requests only when it is invoked asmise. Under a shim name, the request goes to the real tool. mise also skips version resolution, auto-install and auto-update while answering these requests. #15429 (@jdx)enable_toolsanddisable_tools. If a tool was declared by its full backend ID, filtering by its[tool_alias]name did the wrong thing.MISE_ENABLE_TOOLS=myjqexcluded the tool instead of selecting it, andMISE_DISABLE_TOOLS=myjqhad no effect. An alias now matches the same tool as its full ID in both filters, including aliases with inline options. An explicit enable list still overridesdisable_tools. If you disable an aliased python,_.python.venvis turned off too. Based on a fix by @zeitlinger. #15437 (@jdx)mise pruneand project tool aliases. When run from another directory,mise pruneresolved a tracked project's[tools]entries against the current directory's config. Tools named through the project's own[tool_alias]caused "not found in mise tool registry" warnings, and mise couldn't tell whether those installs were still in use. These entries now resolve through the project's aliases, as well as the aliases in its parent and global configs. #15438 (@jdx)mise dot syncwith exclusions added on two machines. When two machines each added their ownmise dot excludeglobs, sync failed with "enrollment conflict in exclusions". mise now merges the lists in this order: the shared base, then this machine's additions, then the other machine's. The same applies to an enrolled path's ownexcludeandincludelists. A removal or a!globadded on both sides is still a conflict, because glob order matters. The error message now says how to recover. #15449 (@jdx)[[bootstrap.linux.firewall.rules]]entry with asourceordestinationCIDR and no port never converged. mise read10.42.0.0/16as a port and a protocol, somise bootstrap plan --detailed-exitcodekept reporting the rule. Firewall commands also now run withLC_ALL=C, so inspection no longer fails under non-English locales such asde_DE.UTF-8. #15450 (@jdx)jdxcode/miseCOPR repo. Before, Fedora 45 users were stuck on 2026.8.5. #15441 (@jdx)Documentation
mise completion fish --installthere. #15442 (@jdx)Full Changelog: jdx/mise@v2026.11.3...v2026.11.4
💚 Sponsor mise
mise is built and maintained by @jdx, an open source developer at entire.io, the title sponsor of his open source work.
If mise saves you or your team time, please consider becoming an individual or company sponsor. Your support funds ongoing development and helps keep mise fast, free, and independent.
v2026.11.3: : Task history, saved task logs, and source-based --affected outside monoreposCompare Source
This release adds three task features:
mise tasks historyshows how long past runs took, the opt-intask.logssetting saves each task's last output, andmise run --affectednow works in any project by matching changed files against each task'ssources. It also fixes problems withupgrade --bump, GitHub asset detection, locked lockfiles, Windows npm installs,pruneand hung asdf plugins.Added
mise run --affectedoutside a monorepo. Before,--affectedworked only at a monorepo root and failed anywhere else. Outside a monorepo it now runs only the matching tasks affected by changed files. A task is affected when a changed file matches itssources, or when the config file orfilescript that defines it changed. Matching uses the same rules as the up-to-date check, including!exclusions and paths relative to the task's directory.sources, and tasks whose sources use{{usage.*}}, run whenever anything changed. When nothing changed, nothing runs.--affected-base,--affected-head,--affected-committed,--affected-uncommittedand--affected-untrackedoptions decide which changes count.--affected-explainprints why each task was selected or skipped, and--affected-jsonreports the reasons (changed-source,task-config,task-file,no-sources,argument-sources).#15407 (@jdx)
mise run --affected --affected-explain 'test:*'mise tasks history. mise now records when each task run started, how long it took, its redacted arguments, its exit code and its status (ok,failed,cached,skippedorcancelled).mise tasks history [TASK]lists past runs.--summaryshows each task's run count, failure count, median duration of successful runs, and last duration and status.--jsonprints the records as JSON. Recording is on by default and keeps the last 20 runs per task. You can change the limit withtask.history_limit, or turn recording off withtask.history = false. Dry runs and tasks that only havedependsare not recorded, and a recording error never fails a run. #15408 (@jdx)Saved task output with
mise tasks log. When the newtask.logssetting (orMISE_TASK_LOGS=1) is on, mise keeps the full output of each task's last run.mise tasks log NAMEprints it, and--pathprints where the file is. This gets back output that thereplacing,timed,silentandsummarystyles hide or shorten. When a task fails under one of those styles, mise prints afull output: <path>line. Logs are stored in$MISE_STATE_DIR/task-logs/with owner-only permissions and are redacted the same way as terminal output. Each log keeps the newest 4 MiB. Output that mise doesn't pipe is not logged:rawandinteractivetasks, and the defaultinterleavemode when it has nothing to redact. The setting is off by default. #15409 (@jdx)The same PR changes every piped output style: lines longer than 1 MiB now arrive in pieces, so mise no longer holds a whole long line in memory. The pieces are split so that secrets and URL credentials are still fully redacted.
Fixed
mise upgrade --bumpno longer rewrites a two-part prefix such as{ prefix = "1.23" }to the unresolvableprefix:prefix:1.1. It now bumps to the correct version, for exampleprefix:1.26. #15426 (@jdx, @kjanat)github:backend now skips Python wheels (.whl) and Ruby gems (.gem), as it already does for.deband.rpm. Before, amanylinuxwheel could be picked over the native binary. An explicitasset_patterncan still select these files. If anasset_patternlooks like a regular expression and matches nothing, the GitHub, GitLab and Forgejo error now explains thatasset_patternis a glob and suggestsmatching_regex. #15423 (@jdx)tool_config.locked = trueandlockfile_mode = "generate", installing or running one tool no longer writes another tool's unrecorded version intomise.lock. Before, this let the next run accept a pin nobody had reviewed. The lockfile now stays unchanged, and onlymise lockrecords new versions. #15428 (@jdx, @mikomiel)npm:tools installed with aube are now reinstalled when a cache restore turned their dependency links into file symlinks. Before,mise installreported "already installed" while Node failed withERR_MODULE_NOT_FOUND. #15425 (@jdx, @Diapolo10)mise pruneandmise upgradeno longer delete installs of task tools that the project names through its[tool_alias]. The "not found in mise tool registry" warning for these tools is also gone. #15427 (@jdx)fetch_remote_versions_timeoutnow stops an asdf plugin'sbin/list-allthat hangs. mise kills the script's process group and fails withtimed out after ...and a hint about the setting. Before, mise waited until the script exited and held the version lock the whole time.ruby-install --updatenow follows the same timeout.bin/list-allnow runs with stdin closed, so a script that reads stdin gets EOF. #15424 (@jdx, @karngyan)Full Changelog: jdx/mise@v2026.11.2...v2026.11.3
💚 Sponsor mise
mise is built and maintained by @jdx, an open source developer at entire.io, the title sponsor of his open source work.
If mise saves you or your team time, please consider becoming an individual or company sponsor. Your support funds ongoing development and helps keep mise fast, free, and independent.
v2026.11.2: : Task tags, summary output, JSON run reports, and mise run --atCompare Source
This release adds four
mise runfeatures that help CI scripts and coding agents: tags for selecting tasks, asummaryoutput style that only shows failures, a JSON run report, and--atfor running tasks at another git revision. It also fixes problems with safe-mode lockfiles,symlink-eachdotfiles, shims and shell completion.Added
Task tags. You can label tasks with
tags, then run every task that has a tag withmise run --tag. A tag can be a string or a list. File tasks set them with#MISE tags=[...], and templates add their tags to the tasks that extend them. You can repeat--tag, and a task matches if it has any of the given tags. Dependencies run whatever their tags are. If you also give a pattern, such asmise run --tag slow 'test:*', mise runs only the matching tasks that have the tag.mise tasks ls --tagfilters the task list, andtasks ls --json,tasks infoand the MCP task list now includetags. #15406 (@jdx)summarytask output style. mise holds each task's output until the task ends. A task that passed prints one line, such as[unit] passed in 4.2s. A task that failed prints everything it wrote. Tasks that mise stopped print[name] cancelled. This style is opt-in: use--output summary,MISE_TASK_OUTPUT=summary,task.output, or a task'soutput. mise keeps up to 64 KiB of output per task and drops the oldest output past that. A long-running task such as a dev server prints nothing until it exits, so give those tasksoutput = "interleave". #15403 (@jdx)JSON run reports.
mise run --report-file <PATH>, orMISE_TASK_REPORT_FILE, writes a JSON report when the run ends. This happens whether the run passes, fails, is interrupted or hits--timeout.status(passed,failed,cancelledortimed_out) and every scheduled task, dependencies included.passed,failed,cancelled,skipped,cachedornot_run), exit code, duration and timestamps.--dry-run. Tasks don't inherit the variable, so a nestedmise runcan't overwrite the outer report.#15405 (@jdx)
mise run --at REV. Runs tasks at another git revision without touching your checkout. mise checks the revision out into a temporary detached worktree, runs the task with that revision's own config and tasks, then removes the worktree. It also removes it after a failure, a timeout or Ctrl-C.--at-setup CMDprepares the worktree first, for example by installing dependencies.MISE_RUN_AT_SOURCE(your checkout) andMISE_RUN_AT_REV(the commit).--yes.#15410 (@jdx)
Fixed
MISE_SAFE=1 MISE_LOCKED=1 mise installworks again fornode,pythonandgowhenmise.lockhas their checksums. It used to fail with "No lockfile URL found". These tools now work out their own download URL and check it against the locked checksum. If safe mode is the reason a URL is missing, the error now says so. #15392 (@jdx)npm:tools locked through aube now install in safe mode and in untrusted projects. mise keeps the lockfile's dependency graph if it only fetches from the registry using integrity hashes. Graphs that name tarball URLs, git sources or local paths are still dropped. #15401 (@jdx)mise lock java@temurin-27no longer rewritesjava = "temurin-26"to the brokentemurin-temurin. It now writestemurin-27, with the same precision as the original request. Switching vendor at the same version, as injava@zulu-26, is saved too. #15386 ([@jdx](https://redirect.github.com/jdxConfiguration
📅 Schedule: (UTC)
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.