v2026.8.10
jdx/misev2026.8.10Aug 20, 2026by mise-en-dev
AI Summary
This release lets remote bootstrap pick which config environments run on each target, fixes several tool-installation edge cases, and hardens pacman package detection and Windows self-update cleanup.
Key Highlights
- Remote bootstrap can now select specific config environments per target.
- Independent config roots can contribute `symlink-each` trees.
- Windows self-update cleanup sweeps stale helper files before the TEMP-length check.
- Fixed Homebrew cask metadata deserialization when API sends `auto_updates: null`.
New Features
- Remote config environment selection `mise_env`
- Independent config roots for symlink-each
- Windows self-update cleanup improvements
- Aqua backend package ID renames
Full Release Notes
This release lets remote bootstrap pick which config environments run on each target, fixes several tool-installation edge cases (archive naming, Windows ZIP preference, renamed aqua packages, Homebrew cask metadata), and hardens pacman package detection and Windows self-update cleanup. ## Added - **bootstrap:** Remote bootstrap can now select which `mise.<env>.toml` layers load on each SSH target without inheriting the orchestrator's full environment. Set a default with `[bootstrap.remote].mise_env`, override per host in your inventory, or pass `--remote-env` (repeatable or comma-separated) on the command line. ([#12182](https://github.com/jdx/mise/pull/12182) by @jdx) ```toml [bootstrap.remote] mise_env = ["production"] ``` - **bootstrap:** Independent config roots can now contribute `symlink-each` trees that share the same target directory, as long as their leaf paths are disjoint. Overlapping leaves and file/directory collisions still fail before any changes, reporting both declaring config origins. ([#12190](https://github.com/jdx/mise/pull/12190) by @jdx) - **doctor:** `mise doctor` now detects leftover Windows self-update helper files (`__relocated__` / `__selfdelete__` copies in TEMP) and reports their count and total size, noting that a subsequent `mise self-update` removes them. ([#12205](https://github.com/jdx/mise/pull/12205) by @JamBalaya56562) ## Fixed - **system (pacman):** Arch packages satisfied by an installed provider through `Provides` are no longer reported as missing. mise now uses `pacman -T` to distinguish genuinely missing packages, recovers the provider's version for status, and skips provider-satisfied aliases during targeted upgrades so pacman does not try to replace the provider. ([#12183](https://github.com/jdx/mise/pull/12183) by @jdx) - **registry (aqua):** Twelve `aqua:` backends (including d2, typstyle, gitui, gradle, ktlint, kubeseal, and velero) now point at their renamed, canonical package ids, so they install even in networks where `api.github.com` is unreachable. A regression test prevents this drift from returning. ([#12186](https://github.com/jdx/mise/pull/12186) by @kkom) - **registry (azure-cli):** On Windows x64, `azure-cli` now installs from the official bundled-Python ZIP release instead of PyPI, fixing `az` failing with `'python' is not recognized` or `No module named 'azure'`. Linux and macOS continue to use the existing pipx install. ([#12161](https://github.com/jdx/mise/pull/12161) by @JamBalaya56562) - **brew:** Homebrew cask metadata now deserializes when the API sends `"auto_updates": null`, treating it as the default `false`. This was breaking metadata fetches for the majority of current casks. ([#12192](https://github.com/jdx/mise/pull/12192) by @jdx) - **backend:** Restored the strict preference for Windows ZIP archives over all tarball formats (`tar.zst` > `tar.xz` > other), which a prior change had accidentally reduced to a tiebreak. ([#12200](https://github.com/jdx/mise/pull/12200) by @risu729) - **backend:** Shorthand archive extensions like `.tbz` and `.tbz2` are now normalized correctly when matching preferred asset names and stem-only checksums, including mixed-case suffixes. This prevents assets from losing the preferred-name bonus and selecting the wrong archive. ([#12199](https://github.com/jdx/mise/pull/12199) by @risu729) - **sync:** External-provider link reconciliation no longer removes links owned by another source or races with concurrent installs. Managed installs, runtime aliases, and links from unselected providers are preserved, and stale dangling links are correctly replaced with the winning provider's install. ([#11682](https://github.com/jdx/mise/pull/11682) by @risu729) - **self-update:** On Windows, stale helper copies in TEMP are now swept before the TEMP-length check, so cleanup still runs on the long-TEMP machines that need it most. ([#12205](https://github.com/jdx/mise/pull/12205) by @JamBalaya56562) ## Performance - **cache:** Foreground blob lookups during rustc cache restores are now batched into a single blob-pack request when the remote supports it, instead of one request per digest, with response metadata validated and a safe fallback to individual blob GETs. ([#12191](https://github.com/jdx/mise/pull/12191), [#12193](https://github.com/jdx/mise/pull/12193) by @jdx) ## Documentation - Fixed mobile table rendering and banner overlays on the docs site. ([#12184](https://github.com/jdx/mise/pull/12184) by @jdx) - Clarified the registry-addition popularity bar and used neutral config-file wording in trust help. ([#12208](https://github.com/jdx/mise/pull/12208), [#12210](https://github.com/jdx/mise/pull/12210) by @jdx, @risu729) ## New Contributors - @kkom made their first contribution in [#12186](https://github.com/jdx/mise/pull/12186) **Full Changelog**: https://github.com/jdx/mise/compare/v2026.8.9...v2026.8.10 ## 💚 Sponsor mise mise is maintained by [@jdx](https://github.com/jdx), an open source developer for [**entire.io**](https://entire.io), the title sponsor of the [jdx.dev](https://jdx.dev) open source tools. Development is funded by sponsors. If mise saves you or your team time, please consider sponsoring at [jdx.dev](https://jdx.dev/sponsors.html). Individual and company sponsorships keep mise fast, free, and independent.