Repository navigation
chore(deps): update dependency jdx/mise to v2026 - #133
Open
renovate[bot] wants to merge 1 commit into
Open
renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
5 times, most recently
from
July 27, 2026 19:45
5a558a4 to
9cfa21c
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
5 times, most recently
from
August 5, 2026 02:47
5e479a0 to
8edcdde
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
4 times, most recently
from
August 15, 2026 01:36
61cc749 to
1250615
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
4 times, most recently
from
August 23, 2026 17:51
c74a061 to
03e4cec
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
5 times, most recently
from
August 31, 2026 17:54
b5dc5b9 to
f6b7260
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
3 times, most recently
from
September 7, 2026 23:25
2938d77 to
057bc3e
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
4 times, most recently
from
September 13, 2026 01:02
6a702aa to
78859ec
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
6 times, most recently
from
October 7, 2026 16:49
6a77dbe to
b1a3855
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
7 times, most recently
from
October 15, 2026 14:26
9e30db4 to
de993ac
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
4 times, most recently
from
October 19, 2026 14:25
40f80ed to
e508436
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
7 times, most recently
from
October 30, 2026 11:23
c2fe241 to
1521ccf
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
5 times, most recently
from
November 6, 2026 11:59
b32911e to
223928b
Compare
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:
2024.12.24→2026.11.6Release Notes
jdx/mise
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)mise lock tool@3.0.1changestool = "2"totool = "3"in the config, the lockfile entry now records"3", the request the config holds, instead of"3.0.1". Before, later lookups for that request couldn't find the entry. #15404 (@jdx)mise bootstrapnow writes mise's own config files first and plans the rest of the dotfiles from the result, asmise dot applyalready did. If a dotfile entry deploys aconf.dfile, the entries in that file now apply in the same run, not the next one.--dry-runpreviews them as well. #15387 (@jdx, @webkaz)symlink-eachentry no longer writes through a directory symlink you made inside its target. That symlink is now reported as a conflict that needs--force.unapplyalso no longer deletes a directory symlink as if it were an empty folder. #15399 (@jdx)symlink-eachsource that contains a dangling symlink no longer loses its link right after creating it. #15395 (@jdx)mise dot unapply --groupandmise dot apply --prunenow delete a group's leftoversymlink-eachstate records once none of its links remain. #15390 (@jdx)mise dot origin setnow adopts the origin's history. It used to fail with "local and origin histories are unrelated". Iforigin setrefuses to connect, it no longer writes[history.origin]. #15394 (@jdx)gitprocess for each encrypted tracked file. This speeds upmise bootstrapand the dotfile history commands when you have many encrypted files. #15393 (@jdx)tool_update.global_autocheck ran from a shim, the tool was launched with mise's internal arguments (jq: Unknown option --id). mise now runs the update itself. #15389 (@jdx)mise whicherrors no longer suggest a reinstall that can't help. They now show the errormprocs@0.10.3 does not provide mprocs (it provides: dekit), or name another installed version that does provide it. #15388 (@jdx)mise x -- <cmd> <Tab>, every word after the command now completes file names, as it would in a plain shell. The same applies tomise dot capture --,mise bootstrap repos exec --andmise ssh. #15396 (@jdx, @Yasushi)upgrade, completingmise upnow shows the built-in command's description.mise run <TAB>still shows the task. #15385 (@jdx)go installafter temporary network errors from the module proxy or checksum database, using thehttp_retriessetting. When the retries run out, mise shows the network error, not a misleadingunknown revision. #15384 (@jdx).exenow keep the extension when the recipe setscomplete_windows_ext: false. Before,aqua:SonarSource/sonarqube-cliinstalledsonarinstead ofsonar.exe. #15412 (@jdx)PermissionDeniedif it can't resolve a config path. This happened on Windows inside workspace sandboxes. A config trusted outside the sandbox may show as untrusted inside it;MISE_TRUSTED_CONFIG_PATHSworks around that. #15383 (@jdx)skills.auto_sync, a tool that only your global config declares no longer has its agent skills linked into every project as well. Global tools are linked only under your home directory.mise skills syncwithout--diror--globalfollows the same rule. Links that are already in project directories stay until you runmise skills sync --prune. #15391 (@jdx)Changed
temporalnow installs the Temporal CLI fromaqua:temporalio/cli, which includestemporal server start-dev. Before, it installed the server bundle. If you need the server bundle, usemise use aqua:temporalio/temporal. #15373 (@jdx)odinon Windows now gets anodinshim. Before, only the bundled linker tools were shimmed. #15400 (@jdx)Documentation
doctor.checks. #15375 (@jdx)Full Changelog: jdx/mise@v2026.11.1...v2026.11.2
💚 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.1: : npm provenance verified by default, with repository pins in mise.lockCompare Source
npm:tools now have their Sigstore provenance verified by default. The first install records the repository that built the package inmise.lock, and later installs must come from that same repository. This release also adds named environment sets inmiserc.tomland fixes a range of lockfile, install and shell issues. See Breaking Changes before you upgrade: some installs that worked before can now fail, and new lockfiles use format version 4.Added
npm provenance repository pins. When provenance verification is on,
mise installrecords the GitHub or GitLab repository that annpm:package's provenance names. Later installs of that version fail if the provenance comes from a different repository, or if the package stops publishing provenance. This protects against a release published from somewhere else, for example after a maintainer account is compromised. The pin is written bymise install, notmise lock. #15338 (@jdx)gitlab.com CI provenance for npm. npm provenance built on gitlab.com CI/CD now verifies the same way GitHub Actions provenance does, including projects in subgroups. Before, these packages failed with
verified attestation names no source repository. Self-hosted GitLab is not supported. #15335 (@jdx)Named environment sets. A shared
miserc.tomlcan now define[env_sets]. You can then select a set by name inenv,MISE_ENVor-E, and mise expands it to the environments it lists. Sets expand one level only, keep their listed order, and drop duplicate entries. A project.miserc.tomlcannot redefine a set from the system or globalmiserc.toml. The newmise bootstrap --save-envwrites the environments given with-EorMISE_ENVtomiserc.local.toml, so latermise bootstrap --updateruns select the same ones. #15327 (@jdx, @owpac)Download progress for vfox plugins. When a vfox plugin's
PreInstallreturns aurl, the install line now shows the amount downloaded, the total size and the speed. Before, it showed only the elapsed time. #15323 (@jdx, @carlosemart)Fixed
mise install --lockedfailing withnode@lts is not in the lockfileafter an alias such asltsmoved to a new version, in lockfiles with nolockfile_versionline (format 0). If the tool has exactly one matching entry, mise uses it as the pin.mise lock --upgradenow keeps that pin and binds it to the alias, where before it re-resolved the alias and dropped the old entry. #15301 (@jdx, @simonbuchan)mise installin a project no longer rewrites~/.config/mise/mise.lockunless it installs a global tool. A global tool that a project also declares is now relocked under the backend its own lockfile records. This fixeslockfile generation would change the recorded signererrors frommise lock --globalandmise upgrade --global. #15348 (@jdx, @drewbitt)mise lockno longer warns on every run that the node checksum files from unofficial-builds.nodejs.org (used for the musl targets) are unsigned. Signature failures on nodejs.org or anode.mirror_urlstill fail as before.mise installwith the defaultlockfile_mode = "generate"also stops drawing extra progress rows for lockfile entries it prepares in the background. #15346 (@jdx)mise.lockwithout fetchingindex.json, and still check the minisign signature. When the index can't be read, mise now builds the correct archive name for 0.14.1 and later (zig-{arch}-{os}-…,.zipon Windows) instead of failing with a 404, and it shows the index error. #15351 (@jdx, [@sargunv](https:Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, 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.