v2026.8.6

jdx/misev2026.8.6Aug 14, 2026by mise-en-dev

AI Summary

This release adds resumable HTTP downloads, expands Homebrew cask support, and lands a large batch of fixes across tasks, config, install, and platform-specific behavior.

Key Highlights

  • Interrupted artifact downloads now resume via HTTP Range requests.
  • The Homebrew cask backend gained structured symlinks, generic artifacts, and flight steps.
  • More transient network failures (including HTTP/2 `REFUSED_STREAM`) are retried automatically.
  • `mise run --all` opens the interactive task picker with tasks from the entire monorepo.

New Features

  • Resumable HTTP downloads
  • Homebrew cask backend enhancements
  • Monorepo task picker `mise run --all`
  • Dotfiles inline content support
  • Deps provider template rendering
  • Config-root scoped locked policy

Full Release Notes

This release adds resumable HTTP downloads, expands Homebrew cask support, and lands a large batch of fixes across tasks, config, install, and platform-specific behavior — with a particular focus on monorepos and Windows.

## Highlights
- Interrupted artifact downloads now resume instead of restarting from zero, and more transient network failures (including HTTP/2 `REFUSED_STREAM`) are retried automatically.
- The Homebrew cask backend gained structured symlinks, generic artifacts, and copy/installer flight steps, closing several gaps in cask installation.
- A wide round of monorepo task, config precedence, and Windows path handling fixes.

## Added
- **http:** interrupted downloads now resume via HTTP Range requests when a strong ETag or Last-Modified validator is available, keeping validated partial files across retries and mise invocations instead of re-downloading from byte zero. mise falls back to a clean restart when validators do not match, and abandoned partials expire after 30 days. ([#11866](https://github.com/jdx/mise/pull/11866) by @Marukome0743)
- **brew:** the Homebrew cask backend now supports structured `symlink` steps (with path bases, templates, guards, source globs, and sudo control), generic cask artifacts, and `copy`/installer flight steps, with transactional rollback if an install fails. ([#11962](https://github.com/jdx/mise/pull/11962), [#11963](https://github.com/jdx/mise/pull/11963), [#11964](https://github.com/jdx/mise/pull/11964) by @jdx)
- **task:** `mise run --all` opens the interactive task picker with tasks from the entire monorepo, matching the load path already used by `mise tasks ls --all`. The default picker stays scoped to the current directory hierarchy. ([#11920](https://github.com/jdx/mise/pull/11920) by @jdx)

  ```console
  mise run --all
  ```
- **task:** add `task.cache.audit_report` (`MISE_TASK_CACHE_AUDIT_REPORT`) to write the complete cache-audit report to a JSON Lines file. The console still caps at 20 paths per task, but the file now captures every undeclared read and write so large audits (e.g. Jest over `node_modules`) are actually usable. ([#11997](https://github.com/jdx/mise/pull/11997) by @stevenpollack)

  ```console
  MISE_TASK_CACHE_AUDIT_REPORT=audit.jsonl mise run --force build
  ```
- **dotfiles:** whole-file `[dotfiles]` entries can now declare their body inline with `content = "..."` instead of requiring a separate source file, useful for small configs and user-writable paths outside `$HOME`. `content` cannot be combined with `source`, `mode`, or `exclude`. ([#11983](https://github.com/jdx/mise/pull/11983) by @jdx)
- **deps:** deps provider config fields (paths, commands, `env`, descriptions, timeouts) now render Tera templates using the defining config file's context, with shell-style environment expansion and rendered env values folded into freshness identity. Template errors surface as clear configuration errors before commands run. ([#11886](https://github.com/jdx/mise/pull/11886) by @Marukome0743)
- **config:** add a config-root-scoped `[tool_config] locked = true` policy that requires tools declared by configs sharing that root to resolve and install from their lockfiles, without forcing global or parent-root tools into strict mode. `[settings] locked`, `--locked`, and `MISE_LOCKED` remain invocation-wide. ([#11940](https://github.com/jdx/mise/pull/11940) by @jdx)

## Fixed
- **task:** in monorepo mode, running a task by its bare or `:`-prefixed name now works from any directory below a config root, resolving to the nearest enclosing project instead of failing. ([#11941](https://github.com/jdx/mise/pull/11941) by @pikeas)
- **task:** normalize task cwd for source freshness ([#11987](https://github.com/jdx/mise/pull/11987) by @jdx), bound buffered command output ([#11922](https://github.com/jdx/mise/pull/11922)), avoid zsh process-substitution hangs ([#11904](https://github.com/jdx/mise/pull/11904)), and normalize variadic usage env values ([#11881](https://github.com/jdx/mise/pull/11881)) by @Marukome0743; mask archive modes in remote cache nodes ([#11877](https://github.com/jdx/mise/pull/11877) by @stevenpollack).
- **http:** retry send failures that never produced a response, including HTTP/2 `REFUSED_STREAM`, which CDNs emit as backpressure and which previously failed on the first attempt even with retries enabled. ([#11961](https://github.com/jdx/mise/pull/11961) by @mariadeluna-tomtom)
- **http:** honor system install destinations for downloads. ([#11851](https://github.com/jdx/mise/pull/11851) by @Marukome0743)
- **aqua:** when a downloaded checksum file lists per-file hashes but none match the target filename, mise now errors instead of silently returning a wrong checksum. ([#11973](https://github.com/jdx/mise/pull/11973) by @jakedgy)
- **pipx:** discover wheel-only package versions from PEP 503 Simple API indexes, so packages published only as wheels now appear in `mise ls-remote` and `latest` resolution. ([#11959](https://github.com/jdx/mise/pull/11959) by @jdx)
- **rust:** the rolling `nightly` channel now resolves to a concrete `nightly-YYYY-MM-DD` toolchain via the official channel manifest, making nightly lock, outdated, upgrade, and offline reuse reproducible while keeping `mise.toml` on `nightly`. ([#11980](https://github.com/jdx/mise/pull/11980) by @Marukome0743)
- **ruby:** support ruby-build CLI options. ([#11918](https://github.com/jdx/mise/pull/11918) by @Marukome0743)
- **conda:** preserve cross-platform lock data ([#11946](https://github.com/jdx/mise/pull/11946) by @jdx) and honor URL replacements ([#11930](https://github.com/jdx/mise/pull/11930) by @Marukome0743).
- **npm:** render lifecycle logs through the progress display. ([#11939](https://github.com/jdx/mise/pull/11939) by @jdx)
- **oci:** strip the tag from `name:tag@digest` references so pulling a base image by combined tag-and-digest no longer produces a malformed token scope, while preserving registry ports. ([#11979](https://github.com/jdx/mise/pull/11979) by @fire-ant)
- **install:** write tool manifests atomically. ([#11957](https://github.com/jdx/mise/pull/11957) by @jdx)
- **lock:** include task-specific tools in the lockfile. ([#11976](https://github.com/jdx/mise/pull/11976) by @Marukome0743)
- **deps:** invalidate deps state when a provider's command, environment, working directory, or shell changes, so an edited `run` command is no longer skipped as fresh ([#11849](https://github.com/jdx/mise/pull/11849)); honor source and output overrides ([#11896](https://github.com/jdx/mise/pull/11896)) by @Marukome0743.
- **hooks:** skip tool installation in preinstall tasks. ([#11927](https://github.com/jdx/mise/pull/11927) by @Marukome0743)
- **exec:** allow a symlinked `resolv.conf` inside the sandbox. ([#11958](https://github.com/jdx/mise/pull/11958) by @jdx)
- **generate:** honor absolute localized directories. ([#11975](https://github.com/jdx/mise/pull/11975) by @NgoQuocViet2001)
- **config:** allow typing `j`/`k` to filter in the `mise edit` tool picker ([#11969](https://github.com/jdx/mise/pull/11969) by @jakedgy); create the config directory before writing into it ([#11934](https://github.com/jdx/mise/pull/11934)) and stop a `conf.d` drop-in from becoming the write target ([#11917](https://github.com/jdx/mise/pull/11917)) by @JamBalaya56562.
- **bootstrap:** avoid sudo for user-writable files ([#11984](https://github.com/jdx/mise/pull/11984)) and allow Windows bootstrap without system files ([#12003](https://github.com/jdx/mise/pull/12003)) by @jdx.
- **semver:** stop labeling a mangled value as a semver range. ([#11949](https://github.com/jdx/mise/pull/11949) by @JamBalaya56562)

### Windows fixes
- **cli:** `mise activate` and `mise completion` now both accept `pwsh` and `powershell`, and shell detection recognizes `.exe` suffixes. ([#11928](https://github.com/jdx/mise/pull/11928) by @JamBalaya56562)
- **shell:** resolve a shell named by a full Windows path. ([#11950](https://github.com/jdx/mise/pull/11950) by @JamBalaya56562)
- **shims:** stop treating a full-path `argv[0]` as a shim name. ([#11982](https://github.com/jdx/mise/pull/11982) by @JamBalaya56562)
- **toolset:** accept a Windows tool path spelled with backslashes ([#11937](https://github.com/jdx/mise/pull/11937)) and reject `cmd.exe` metacharacters in a Windows tool path ([#11947](https://github.com/jdx/mise/pull/11947)) by @JamBalaya56562.
- **dotfiles:** treat an unmanaged file as a conflict on Windows too. ([#11981](https://github.com/jdx/mise/pull/11981) by @JamBalaya56562)
- **tasks:** stop telling Windows users to run `chmod +x`. ([#11923](https://github.com/jdx/mise/pull/11923) by @JamBalaya56562)

## Changed
- **upgrade/outdated:** `-b` is now the shorthand for `--bump`. The old `-l` bump shorthand is hidden and deprecated (removal planned for 2027.8.5) so `-l` can later mean `--local`. When tools are current within configured ranges but a bump is available outside them, both commands now say so instead of reporting everything up to date. ([#11945](https://github.com/jdx/mise/pull/11945) by @jdx)
- **cli:** `mise use --global` alongside a path is now rejected instead of silently ignored. ([#11935](https://github.com/jdx/mise/pull/11935) by @JamBalaya56562)

## Deprecated
- **config:** the automatic `all_compile = true` default on NixOS is deprecated and scheduled for removal in 2027.8.0. It currently forces source builds for Node, Python, Erlang, and Ruby even when precompiled binaries work through `nix-ld`; mise now warns and points to enabling `nix-ld` or setting `all_compile = true` explicitly. Alpine's source-build default is unchanged. ([#11956](https://github.com/jdx/mise/pull/11956) by @jdx)

## Registry
- Added `native-sdk` ([github:vercel-labs/native](https://github.com/vercel-labs/native)) by @phall1 in [#11942](https://github.com/jdx/mise/pull/11942)
- Added `restate` binaries ([github:restatedev/restate](https://github.com/restatedev/restate)) by @Bing-su in [#11953](https://github.com/jdx/mise/pull/11953)
- Added `mailpit` ([aqua:axllent/mailpit](https://github.com/axllent/mailpit)) by @joealden in [#11960](https://github.com/jdx/mise/pull/11960)

## New Contributors
- @stevenpollack made their first contribution in [#11997](https://github.com/jdx/mise/pull/11997)
- @mariadeluna-tomtom made their first contribution in [#11961](https://github.com/jdx/mise/pull/11961)
- @pikeas made their first contribution in [#11941](https://github.com/jdx/mise/pull/11941)
- @phall1 made their first contribution in [#11942](https://github.com/jdx/mise/pull/11942)

**Full Changelog**: https://github.com/jdx/mise/compare/v2026.8.5...v2026.8.6

## 💚 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.