chore(deps): update dependency jdx/mise to v2026 - #220
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
6 times, most recently
from
July 30, 2026 03:03
b069281 to
4210d96
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
4 times, most recently
from
August 5, 2026 03:26
7255dd3 to
18a73a9
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
3 times, most recently
from
August 12, 2026 20:16
2752ba1 to
661a5bf
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
4 times, most recently
from
August 20, 2026 23:10
6445a85 to
c5325ef
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
4 times, most recently
from
August 26, 2026 03:48
9dd559c to
fac6f2e
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
4 times, most recently
from
September 3, 2026 00:28
61548e9 to
844f10e
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
4 times, most recently
from
September 11, 2026 04:03
b504efd to
25c7628
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
3 times, most recently
from
September 14, 2026 20:44
6034a8a to
f714847
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
from
September 15, 2026 09:48
f714847 to
6e7311c
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.
This PR contains the following updates:
Test plan: CI should pass with updated dependencies. No review required: this is an automated dependency update PR.
Release Notes
jdx/mise (jdx/mise)
v2026.9.9: : Dotfiles false-deletion fix, encryptedmise dot track, semantic uv options for PyPI toolsCompare Source
The dotfiles history watcher no longer records files as deleted when a checkpoint and a sync compose snapshots at the same time,
mise dot track --encryptenrolls a file with encrypted history from its first checkpoint,mise bootstrap --adopt --replace-historydiscards unrelated local history in one shot, andpypi:tools gain lock-awarewith,expose, anddependency_prereleasesoptions. Also fixed:packslip:installs from private GitHub repositories, stale history watchers after upgrading, global npm tools being reinstalled underlockfile = true, and the--separator in activated PowerShell sessions.Added
dotfiles:
mise dot track --encryptwritesencrypt = trueinto the tracked declaration and encrypts the initial baseline checkpoint, for files that must never have plaintext history.[history.encryption].recipientsmust be configured first; if the encrypted baseline cannot be saved, enrollment fails closed and rolls back the declaration without committing history metadata. Run it as a standalone command rather than insidemise dot capture. Enabling encryption on a file that already has plaintext history does not rewrite that history. (#13180 by @jdx)mise dot track ~/.config/app/credentials --encryptbootstrap: Fresh
mise bootstrap --adoptnow compares existing live files against the incoming setup before creating any local history, so identical files adopt the origin's history instead of being rejected as an unrelated root (for example right after the history store was removed). Differences still pause for an explicit decision. For machines that genuinely hold unrelated local history,--replace-historydiscards it and adopts the setup repository's branch in one shot;--dry-runpreviews the local and origin commits, and a failed replacement restores the previous branch and sync state. Ordinary sync never replaces divergent history and there is no persistent force setting. (#13182 by @jdx)pypi: Three new tool options express common uv install behavior without opaque
uvx_args, and unlike free-form arguments they participate in dependency graph locking:withinstalls extra requirements,exposeinstalls extra requirements and links their executables (requires uv 0.8.5 or newer), anddependency_prereleasessets uv's prerelease policy (disallow,allow,if-necessary,explicit). Setting any of them selects uv as the installer.uvx_argsandpipx_argsremain available as version-only escape hatches. The Ansible and Azure CLI registry entries now use these options by default; if you force pipx for one of them, clear the default with an empty list, e.g."pypi:ansible" = { version = "latest", uvx = false, expose = [], pipx_args = "--include-deps" }. (#13181 by @jdx)registry: Added
nubr(npm:@nubjs/runner), the Nub project's TypeScript runner for a file,package.jsonscript, or installed bin on plain Node. (#13191 by @colinhacks)Fixed
history.sync = "sync"and a running watcher, a checkpoint could record a sorted prefix of tracked files as deleted even though they were untouched on disk; those deletions then synced to other machines and removed their copies. Two compositions in one process (the watcher's checkpoint and the sync it started) shared a single scratch git index, and one resetting it mid-flight truncated the other's tree. Each composition now uses its own scratch index, and indexes left by killed processes are swept. Files recorded as falsely deleted are still in history and can be restored from an earlier checkpoint. (#13195 by @jdx)$MISE_STATE_DIR/history/), or started with a differentMISE_STATE_DIRthan the shell, kept running the old process without watching the current store, whilemise bootstrap services applyconsidered the unchanged service converged and skipped it.services applynow restarts ahistory-watchservice whose process is not watching this store, andmise doctorandmise dot statusreport "running but not watching this store" instead of "not running" (service-not-watchinginmise dot status --json). Users already in this state are recovered by runningmise bootstrap services apply. (#13190 by @jdx)lockfile = truein effect, an npm tool pinned in the global config was resolved with a graph-specific install identity that no automatic flow could persist, so everymise exectreated the installed tool as unsatisfied, re-ran an install pass, and warned that it was missing. Global requests now stay version-only unless resolved from an explicitly generated revision 2 global lockfile; opt in withmise lock --global. (#13186 by @jdx)404 Not Foundon the manifest because GitHub only serves private release assets through its API, not thereleases/download/URLs a packslip records. mise now falls back to the API asset endpoint using the same credentials as thegithub:backend (MISE_GITHUB_TOKEN,GITHUB_API_TOKEN, orGITHUB_TOKEN) with no configuration changes; signature, identity, digest, and size verification are unchanged. Tags containing/(such as@biomejs/biome@2.5.2or monorepotool/v1.0.0tags) and#are also resolved correctly now. Non-GitHub hosts and GitHub Enterprise are not covered. (#13188 by @jdx)mise activate pwsh,mise exec -- pnpm --versionfailed withunexpected argument '--version'because PowerShell's parameter binder removes the first bare--before themisewrapper function sees its arguments. The wrapper now recovers the separator from the raw invocation line, fixingmise exec/mise x,mise tasks add,mise dotfiles capture,mise oci run,mise generate git-pre-commit, andmise bootstrap;mise runwas not affected. Open sessions pick up the fix the next timemise activate pwshruns (normally at shell start). The doubledmise exec -- -- cmdworkaround now fails in an activated shell, as it always did without activation, so drop back to a single--. (#13202 by @jdx)dbt-fusioninstall test now expectsdbt <version>, matching whatdbt --versionactually prints. (873c400 by @jdx)Documentation
Full Changelog: jdx/mise@v2026.9.8...v2026.9.9
💚 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.9.8: : Top-levelmise dotcommand, faster brew bootstrap installs, and npm safety-check fixesCompare Source
Dotfile management moves to the top level as
mise dot, Homebrew bootstrap installs run their download, extraction, and linking stages concurrently, and several install paths are corrected: embedded aube reputation gates now report the real reason and honor--yes, PyPI tools fall back to version-only installs when a dependency graph cannot be built, lazy tools no longer triggermissing:warnings, and lockfiles no longer resurrect disabled backends.Added
dotfiles: The full dotfiles command tree is now available as
mise dotfiles, withmise dotas a short alias.mise bootstrap dotfilesremains supported and all three spellings share the same behavior, including bootstrap hooks aroundapply. Generated history-watch services now invokemise dot watch. (#13158 by @jdx)dotfiles: Enabling encryption on a file that was previously saved in plaintext left older commits that blocked sync.
mise dot sync --allow-plaintext-historylets that history reach the origin for one run, and the global-only settingsettings.history.allow_plaintext_history = true(defaultfalse, envMISE_HISTORY_ALLOW_PLAINTEXT_HISTORY) does the same for sync, publish, the history watcher, and incoming history on pull. New saves still follow the file's encryption policy; the history guide also documents how to remove the old commits instead. (#13175 by @jdx)registry: Added
poppler(conda:poppler), providingpdftotext,pdfinfo,pdftoppm,pdftocairo,pdfunite, and the other Poppler PDF utilities. (#13133 by @i-api)Fixed
user aborted mise adderror when stdin is closed or no terminal is attached. Non-interactive installs now report the measured signal (for example 569 weekly downloads against the 1000 threshold) and suggest the mise-native fix,allow_low_downloads = trueon the tool; an explicit "no" reportsuser declined to add <package>. An explicit CLI--yesnow reaches the aube prompt and approves it, including auto-installs throughuse,exec,run,shell, andupgrade; CI mode and a configuredyes = truesetting alone do not approve reputation gates. (#13123 by @jdx)mise installofpypi:/pipx:tools no longer fails when a uv dependency graph cannot represent the package or its configuration, such as a source-only dependency or free-formuvx_args/pipx_args. mise warns and falls back to the version-only install path, reusing an existing version-only installation on later runs.mise lockandmise install --lockedremain strict and still reject unsupported arguments or dependencies without usable wheels. (#13170 by @jdx)lazy = trueare no longer reported asmissing: <tool>when entering a project or running a baremise install, regardless ofstatus.missing_tools; ordinary missing tools are still reported as before. (#13169 by @jdx)disable_backends. When a parentmise.lockpins a shorthand such asyarntoasdf:yarnand a child project disables asdf,mise tool yarn --backendand a fresh childmise locknow select the first enabled recorded backend or fall back to the enabled registry backend (aqua:yarnpkg/berry) instead of the disabled pin. The parent lockfile is left unchanged and explicitly installing a disabled backend still fails. (#13178 by @jdx)Changed
mise bootstrap packages applyinstalls Homebrew packages substantially faster. Formula metadata for each dependency frontier is fetched concurrently, bottles are extracted, relocated, signed, and receipted concurrently, and each job now downloads and prepares its own bottle so prepared bottles are committed as soon as dependency order allows. All stages respect the existingjobslimit with no new settings; Cellar commits and prefix linking stay dependency-ordered,opt/<name>is linked last so an interrupted install cannot look complete, and a failure cancels queued work while cleaning up in-flight staging. On Apple silicon, a fresh install ofbrew:jq brew:tree brew:wget brew:just brew:shellcheckdropped from roughly 6.6s to 4.0s, and dependency resolution forbrew:ffmpegfrom 288ms to 112ms. (#13151, #13152, #13155 by @jdx)Documentation
mise.lockguides now open with quick-start and everyday workflows (mise use node@24 npm:prettier,mise use python@3.14 uv pypi:black,mise lock,mise install --locked) and group dependency-graph locking, sidecar management, and strict-mode details afterward. The lockfile guide clarifies that URL-lock exemptions do not exempt dependency graphs from validation. (#13149 by @jdx)Full Changelog: jdx/mise@v2026.9.7...v2026.9.8
💚 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.9.7: : Lockfile revision 2 with npm and Python dependency graphs, dotfile conflict inspectionCompare Source
This release introduces
mise.lockrevision 2, which records complete transitive dependency graphs for npm tools (via embedded aube) and Python tools (via uv) in native sidecar files, and addsmise bootstrap dotfiles conflictsfor inspecting dotfile sync conflicts before resolving them. It also lets dotfile templates consume bootstrap secrets, stopsminimum_release_agefrom rejecting versions already committed to a lockfile, and closes a security gap inhistory.describe_command.Added
lock: Lockfile revision 2 records the full dependency graph of npm tools installed by embedded aube and of
pypi:tools installed by uv, then replays it with a strict frozen install so two projects on the same top-level version can still receive their own reviewed transitive graph. Graphs live in native sidecar files (uv.lock/aube-lock.yamlplus a manifest) under.mise/locks/<backend-tool>/<version>/, referenced frommise.lockby relative path and SHA-256 digest, so the lockfile itself stays small. Commit the sidecar directory withmise.lock. New lockfiles use revision 2; existing revision 0 and 1 files keep their format until you runmise lock --upgrade.mise lock --bump <tool>refreshes a tool's transitive graph even when its top-level version is unchanged, ordinarymise installvalidates and accepts hand-edited sidecars, andmise install --lockedrejects digest mismatches until you runmise lock. Python graph locking requires uv 0.12.10 or newer and published wheels for the target platform; Git sources, standalone pipx installs, and free-formuvx_args/pipx_argsstay version-only. (#13131, #13146 by @jdx)pypi:
pypi:is now the preferred name for the Python CLI backend;pipx:remains fully supported as an alias with no warnings, and settings accept bothpypi.*andpipx.*names. The two spellings are distinct tool identities (pypi-blackvspipx-blackinstall directories and lock entries), so switching spelling creates a new installation. (#13146 by @jdx)bootstrap:
mise bootstrap dotfiles conflicts [PATH...]shows a read-only comparison of the saved local and fetched remote versions of a conflicted dotfile so you can decide between--take-remoteand--keep-localwith full context. The default output is a unified diff including file-mode changes;--difftoolopens the configured Gitdiff.tool(falling back tomerge.tool) and--tool <name>picks one explicitly. Encrypted contents are decrypted only into private temporary files, and inspection never modifies either side or marks the conflict resolved. Bootstrap secrets are also now resolved from the same composed config maps as dotfile discovery, so root-scoped dotfile templates can use secrets declared by their bootstrap root. (#13144 by @jdx)dotfiles: Dotfile templates (
mode = "template") can reference[bootstrap.secrets]values with{{ secret(name="...") }}, matching managed bootstrap file templates. Dotfiles commands that render templates (add,apply,diff,edit,status,unapply) accept--prompt-secrets; without an available value, rendering fails closed. A fullmise bootstraprun preflights dotfile templates before making changes,mise bootstrap statusreports secrets used only by dotfiles, and textual diffs redact resolved secret values. (#13140 by @jdx)Fixed
mise.lockno longer fails when the locked release is younger thanminimum_release_age. The cutoff still applies when resolving unlocked fuzzy requests and when generating or bumping a lockfile, andnpm:/pypi:still forward it to unpinned transitive dependencies, but a reviewed lock entry now reproduces immediately in CI instead of waiting for the release to cool. (#13128 by @jdx).python-version(or other idiomatic version file) containingsystemselects the system interpreter without printing the mise-specific@systemdeprecation warning, matching the existing.tool-versionsexception. Explicitpython@systemrequests from mise configuration or command arguments still warn. (#13132 by @jdx)mcshorthand usesaqua:minio/mcagain now that the upstream Aqua registry entry is restored, withasdf:mise-plugins/mise-mckept as the fallback. (#13124 by @jdx)Security
history.describe_commandis now global-only. Previously an implicitly trusted project could set it and have a later dotfiles history checkpoint execute the project-controlled command with unencrypted tracked-file diffs. The setting is honored only from system/global configuration orMISE_HISTORY_DESCRIBE_COMMAND; project values are ignored with a warning. (#13134 by @jdx)mise oci buildnow renders dotfile templates with a restricted engine:secret()is rejected and theenvcontext,get_env(),exec(), andread_file()are unavailable, so ambient credentials cannot be baked into a publishable image layer. (#13140 by @jdx)Breaking Changes
mise lock --upgrade. Upgrade collaborators and CI to this release before committing a revision 2mise.lock, and commit the.mise/locks/(or.config/mise/locks/) sidecar directory alongside it. Revision 2--lockedinstalls fail if a recorded graph is missing or its digest does not match. If you gitignoremise.local.lock, also ignore its matching sidecar subdirectory (for example.mise/locks/mise.local/).history.describe_commandin project configuration is ignored. Move it to~/.config/mise/config.tomlor setMISE_HISTORY_DESCRIBE_COMMAND.mise oci builddotfile templates can no longer callsecret(),get_env(),exec(), orread_file()or read theenvcontext.Full Changelog: jdx/mise@v2026.9.6...v2026.9.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.9.6: : Project daemons, mise doctor project, and vfox backend tool discoveryCompare Source
This release adds experimental project daemons backed by pitchfork, a
mise doctor projectcommand for project-declared diagnostic checks, and tool discovery from vfox backend plugins inmise search. It also changes the HTTP backend's default install layout so uninstall and prune reclaim disk space, speeds up warmlockfile_mode = "generate"installs and repeated OCI builds, and fixes a batch of nushell, monorepo, lockfile, brew, and Windows bootstrap issues.Highlights
[daemons]declares background processes and PostgreSQL/Redis presets inmise.toml, managed throughmise daemonsand optionally started when you enter the project.[doctor.checks.<name>]lets projects declare their own environment probes formise doctor project.mise search, shell completion, and interactivemise usenow include tools published by installed vfox backend plugins, andsettings.truncate/--no-truncatedisable terminal-width truncation (automatically when a coding agent is detected).shared_extraction = true), warm generate-mode installs skip needless lockfile rewrites, and OCI builds share a local tool-layer cache.Added
daemons: New experimental
[daemons]section andmise daemonscommand family (start,stop,restart,ls,status,logs,tui) manage project background processes with pitchfork. PostgreSQL and Redis presets install the database as a tool (participating in lockfiles), supply connection environment variables and readiness checks, and keep project data across stop/start. Daemons withauto = ["start", "stop"]start when entering the project from an activated Bash, Zsh, or Fish shell and are released when the last shell session leaves. Requiresexperimental = trueand pitchfork 2.25.0 or later; database presets are Unix-only and PostgreSQL uses loopback trust authentication intended for local development. (#13085 by @jdx)doctor:
mise doctor projectruns checks declared in[doctor.checks.<name>]with the project's environment and installed tools, reporting PASS/FAIL/error/skipped per check in text or--json. Checks supportdescription,hint,timeout(default10s),dir,shell, andosselectors, run concurrently under thejobslimit, and exit nonzero when any check fails. Ordinarymise doctordoes not run them, and hints are never executed. A follow-up aligneddirresolution with task conventions (config root for project configs including~/mise.toml,~/expansion), fixed head-of-line blocking when one probe hangs, and keptnohup mise doctor projectalive on SIGHUP. (#13062, #13089 by @jdx)vfox: Tools provided by installed vfox backend plugins now appear in
mise search, shell completion, and interactivemise use, namespaced as<plugin>:<tool>. Plugins can implementBackendListToolsfor a finite catalog and/orBackendSearchToolsfor query-driven discovery in large ecosystems; a prefixed query likenpm:eslintis routed only to that plugin. Results are cached, slow plugins fall back to stale cache, and existing plugins need no changes.mise registryremains registry-only. (#13111 by @jdx)cli: New
settings.truncate(andMISE_TRUNCATE, defaulttrue) controls terminal-width shortening of table cells and task metadata.mise ls,mise config ls, andmise bootstrap dotfiles statusgain--truncate/--no-truncate, and output is kept complete automatically when a known coding agent is detected. (#13112 by @jdx)bootstrap:
[bootstrap.macos.dock]gainsapps, an ordered list of pinned application paths. Status compares identity and order (ignoring Dock-added metadata), apply adds, removes, and reorders application tiles while preserving other tiles andpersistent-others, and an empty list removes all application tiles. Paths must be absolute or home-relative.appbundles. (#13075 by @azohra)bootstrap:
mise bootstrap packages where brew:<formula>prints an installed formula's stableoptroot (for example/opt/homebrew/opt/unzip), so scripts can put keg-only executables on PATH without hardcoding the Homebrew prefix or Cellar version. Missing installs exit nonzero with empty stdout. (#13083 by @himkt)dotfiles: Destination
variantscan omitsourcewhen every variant sets atarget; the entry key is then resolved as a relative path undersettings.dotfiles.rootinstead of next tomise.toml. Parent traversal is rejected. (#13087 by @jdx)fmt:
mise fmtnow sorts lists whose order has no meaning:redactionslexically, and tasksources/outputs,task_templatessources/outputs,task_config.global_inputs, andinput_groupsby reach (@group:references, then globs, then literal paths). Lists containing!exclusions, entries starting with template syntax, or comments are left untouched, and precedence-sensitive lists such asenv_file,tools.*,includes, anddependsare never sorted. (#13058 by @jrandolf)oci:
mise oci buildgains--no-cacheto bypass the new local tool-layer cache; entries live under each tool's cache directory and are removed bymise cache clear TOOL. (#13056 by @jdx)Changed
http:installations extract directly into their own install directory, somise uninstallandmise prunenow remove their files instead of leaving payloads in$MISE_DATA_DIR/http-tarballs/. Setshared_extraction = trueon a tool to keep the previous deduplicated symlink layout. Existing symlinked installs keep working;mise install --force <tool>migrates one to independent files without disturbing other installs that share the content. Legacyhttp-tarballsentries are not reclaimed automatically. Shared raw and compressed binary caches now also include the executable filename in their key, so differently named tools no longer reuse the wrong filename. (#13059 by @jdx)mise oci push --no-cachenow bypasses both the remote registry cache and the local tool-layer cache. (#13056 by @jdx)postgres,redis, andmongodbnow preferconda:backends, installing prebuilt conda-forge binaries in seconds instead of compiling through vfox; vfox and asdf remain as fallbacks.conda:redis-servercovers Linux and macOS only. (#13061 by @jdx)Performance
mise installruns inlockfile_mode = "generate"skip scheduling work for tools whose artifact metadata is already reusable, and skip rebuilding, serializing, and staging the lockfile entirely when nothing was installed and the on-disk lock already matches (preserving comments in the file). Explicitmise lock, forced provenance verification, upgrades, and new platforms still regenerate. (#13101, #13103 by @jdx)mise oci push --from BASEno longer downloads base layers when the base and target live in the same repository, andoci build,oci run, andoci pushshare a local cache of packaged tool layers keyed on file contents, so repeated builds with overlapping tools skip tar and gzip work. (#13055, #13056 by @jdx)Fixed
mise activate nuno longer throwsenv_variable_not_foundon every prompt orcdwhen a variable to hide is absent from the current scope;hide-envis now wrapped intry, matching the no-op behavior of other shells. (#13071 by @i-api)runentries, including names rendered at runtime, right before they execute;--skip-toolsis honored and install failures are reported as task failures without blocking siblings. (#13086 by @jdx)[monorepo]settings are now merged across same-directory config layers (base plusmise.<env>.tomloverlays): omitted fields are inherited, an overlay'sconfig_rootsreplaces the base list, andmonorepo_root = falsein an overlay disables the root and its descendant trust. (#13084 by @jdx)mise which hk --tool hk@latestnow use the lockfile belonging to the config that effectively defines the tool, instead of merging project and global pins and reporting a false "multiple resolutions" ambiguity or selecting an overridden pin.mise which --toolwarns when a lower-precedence config has a matching pin the effective config lacks. (#13042 by @nettlesh)github-attestationsmetadata on upgrade instead of being rejected as a provenance downgrade. (#13102, #13105 by @jdx)mise upgradenow detects updates between letter-suffixed versions such as tmux3.7bto3.7c;sub-Naliases keep resolving numeric components as before. (#13119 by @jdx)brew:zipandbrew:unzip) are now linked into<prefix>/binon Linux, matching Homebrew. Kegs installed by earlier mise versions stay unlinked until the nextmise bootstrap packages upgradeor a reinstall. (#13108 by @lil-lon)preflight_stepsorpostflight_stepsno longer fail during metadata extraction; declarativerunsteps are captured as structured steps and executed by mise, with support formust_succeed = false. (#13060 by @jdx)mise bootstrap remoteon Windows now findsssh.exeandtar.exeon PATH instead of failing withrequired command 'ssh' not found. (#13117 by @JamBalaya56562)2 (real; expected integer)instead of two identical-looking values markeddiffers. (#13096 by @jdx)mise bootstrap dotfiles trackhonors the globalyessetting for confirmations, and warns when tracking a symlink whose resolved source is not itself tracked, suggesting the command to enroll it. (#13072 by @nettlesh, #13095 by @jdx)manifestdotfile entries, restricting explicit modes tocopyorsymlink-eachand rejecting combinations with inline content or file-edit fields. (#12741 by @risu729)mise asdf installandmise asdf reshimno longer re-enter the full CLI dispatch, avoiding stack overflows on small-stack Linux environments;asdf installnow follows the same implicit config trust asmise install. Bash completions are regenerated for the updated usage-rs word-break handling. (#13114 by @jdx)Registry
mpv(conda:mpv, Linux and macOS) (#13049 by @i-api),agent-browser(aqua:vercel-labs/agent-browser) (#13088 by @3w36zj6), andhimalaya(github:pimalaya/himalaya) (#13091 by @i-api).editorconfig-checkerinstalls again after 4.0.1 renamed its assets and executable; the shorthand now uses the GitHub backend. (#13098 by @jdx)mcinstalls from MinIO's GitHub releases instead of the retired Aqua download URL that returned HTTP 410. (#13113 by @jdx)Documentation
New Contributors
Full Changelog: jdx/mise@v2026.9.5...v2026.9.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.9.5: : macOS defaults, per-platform dotfiles, and complete lockfilesCompare Source
This release deepens macOS bootstrap support with current-host and nested defaults, lets dotfiles and tasks adapt to the platform and to parsed arguments, and adds an opt-in trial of complete lockfile generation. It also carries a batch of install progress, self-update, brew-cask, and sandbox fixes.
Added
bootstrap: New
[[bootstrap.macos.defaults_entries]]blocks let you set macOS preferences explicitly withdomain,key,value, and an optionalhost(anyby default, orcurrent), covering preferences normally written viadefaults -currentHostwhile keeping the existing[bootstrap.macos.defaults]shorthand. Entries also accept an optionalpathto patch a nested dictionary value without replacing its siblings, preserving property-list types and creating missing parents. (#12983 by @azohra, #12984 by @azohra)bootstrap: More friendly macOS preferences: Finder folder sorting and default cloud save location, Dock autohide delay and timing (integers or floats), and keyboard automatic capitalization and spelling correction, all using snake_case names consistent with the existing sections. (#13032 by @jdx)
bootstrap:
[bootstrap.files]and[bootstrap.directories]entries gainphase = "pre-packages"so repository definitions, apt sources, and signing keys can be applied before package installation instead of only afterward. Existing declarations default to"post-packages". (#13052 by @jdx)bootstrap: Ordinary
[bootstrap.files]templates can now reference resolved[vars]values, alongside the existingconfig_root,target, andsecret()helpers. (#13033 by @nettlesh)dotfiles: A single dotfiles source can deploy to different destinations per operating system, architecture, or mise profile using
variantswith an optionaltarget. This works forcopy,symlink,symlink-each, andtemplatemodes. (#13050 by @jdx)task: Task
sourcesandoutputscan now use{{usage.*}}templates, resolved per invocation from parsed arguments and flags before freshness and artifact-cache checks run, so different argument values track freshness independently. (#13051 by @jdx)brew-cask: Casks with structured
set_permissionspreflight/postflight steps now install correctly (for examplebrew-cask:blender), running an unprivilegedchmodover resolved staged or appdir paths instead of failing with an unsupported step-type error. (#13043 by @azohra)lock: Opt-in trial of complete lockfile generation via
lockfile_mode = "generate"(orMISE_LOCKFILE_MODE=generate). The default remains incrementalmerge. Generate mode rebuilds lockfiles from current requests while treating the previous file as an immutable baseline, reusing unchanged artifacts and publishing through staged atomic writes so failures or concurrent edits do not clobber a good lockfile. This mode records only cryptographically verified provenance per target platform;provenance_verifiedis no longer treated as a trust signal. (#13031 by @jdx)self-update: New
disable_update_warningsetting (MISE_DISABLE_UPDATE_WARNING) suppresses "newer mise available" notices inmise version,mise --version, andmise doctor. Explicit self-update and automatic updates are unaffected. (#13028 by @jdx)Fixed
installed 1 tool in 1.1s: dummy@1.0.0).mise upgradeno longer duplicates its old to new version list. (#13030 by @jdx)mise self-updatenow selects the correctlinux-armv7archive instead of requesting a missinglinux-armone and falling back to an ARM64 binary that failed signature verification. A missing archive now fails asset selection rather than picking the wrong architecture. (#13023 by @jdx)mise self-update. (#13028 by @jdx)mise bootstrap packages upgradeno longer replaces the bundle of a running self-updating app (for example Chrome), which could strand helper processes and blank out tabs. Such apps are skipped while running and left to update themselves. (#13041 by @azohra)brewand a broken documentation anchor; it now gives a short, accurate message. (#12800 by @Marukome0743)mise bootstrap dotfiles origin set <url>now uses the repository's own default branch when--branchis omitted, so repositories onmasterconnect correctly instead of publishing a second root branch. A missing requested branch is now reported clearly rather than mistaken for an empty repository. (#13037 by @Dhaulagiri)dotfiles statusno longer misreportsdeclared-not-running. Existing watchers must be stopped and restarted with the updated binary. (#13038 by @ascarter)file-read-metadataon the ancestors of readable paths, fixingOperation not permittedfailures when a portable Ruby resolves its own executable during third-party tap evaluation. Symlinked data directories and allow-listed paths are also handled. (#13039 by @Marukome0743)Registry
clipboard(github:Slackadays/Clipboard) by @i-api in #13044New Contributors
Full Changelog: jdx/mise@v2026.9.4...v2026.9.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.9.4: : Nix Bootstrap, Environment Selectors, and Man PagesCompare Source
This release expands the bootstrap package model with Nix support and environment selectors, teaches packslip tools to ship man pages, and adds a task-scoped quiet setting. It also carries a wide batch of packslip, bootstrap, and cross-platform fixes plus a major speedup to dotfiles history rebuilds.
Added
bootstrap: Nix is now a built-in
[bootstrap.packages]manager on Linux and macOS. Declare packages with thenix:prefix and apply them through your normal Nix profile; the manager supports use, apply, status JSON, and targeted upgrades while leaving Nix sources, caches, trust, and profile rollback under Nix control. This also addsmise bootstrap packages export --format nixto emit a deterministic NixOS module from yournix:declarations andpackages use --no-installto record declarations without touching package managers. (#13013 by @jdx)bootstrap:
[bootstrap.packages]entries gain anenvselector (a single environment or a list), so a package is only enabled when one of its listed mise environments is active via-EorMISE_ENV. When bothosandenvare set, both must match. Packages for inactive environments stay declared and are protected from pruning. (#12956 by @jdx)packslip: Packslip-installed tools can now ship man pages declared as static
manresources, alongside completions and agent skills. While a tool version is active, mise prepends its man root toMANPATHand keeps system and caller-defined paths visible, soman <tool>works. Existing installs need to be reinstalled to pick up man pages. (#13012 by @jdx)task: New
task.quietsetting (andMISE_TASK_QUIET) suppresses mise's own task messages, prefixes, and command-echo headers without hiding task output or affecting other commands. The bundledoutput = "quiet"mode is deprecated in favor of explicit output style plus this setting; removal is scheduled for 2027.9.3. (#12980 by @jdx)Fixed
dependstarget is also lazy now installs correctly on first use through a shim,mise x, or a task; mise installs the provider together with its still-missing configured dependencies instead of failing the preflight. (#12997 by @balintant)armarchitecture name for Aqua (so registry replacements apply), and automatic GitHub release asset selection no longer picks a genericsource.tar.gzwhen no published binary targets the host. (#13004 by @jdx)mise lock --platformnow verifies the signed release manifest and records the correct URL, checksum, size, and signer for each requested target platform (including Windows x64), so locked installs work across platforms. (#13002 by @jdx)glibc_minis now honored during selection: when the GNU build requires a newer glibc than the host, mise falls back to a matching static musl build if one exists. (#13009 by @jdx).exefilename, while Unix keeps extensionless names. (#13006 by @jdx)MANPATHis included in the environment-cache identity so one cached process cannot serve another calConfiguration
📅 Schedule: (in timezone America/Los_Angeles)
🚦 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.