Skip to content

v2026.8.6: Resumable downloads, richer Homebrew casks, and monorepo task fixes

Latest

Choose a tag to compare

@mise-en-dev mise-en-dev released this 14 Aug 22:33
· 6 commits to main since this release
Immutable release. Only release title and notes can be modified.
v2026.8.6
71212d4

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 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, #11963, #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 by @jdx)

    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 by @stevenpollack)

    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 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 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 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 by @pikeas)
  • task: normalize task cwd for source freshness (#11987 by @jdx), bound buffered command output (#11922), avoid zsh process-substitution hangs (#11904), and normalize variadic usage env values (#11881) by @Marukome0743; mask archive modes in remote cache nodes (#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 by @mariadeluna-tomtom)
  • http: honor system install destinations for downloads. (#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 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 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 by @Marukome0743)
  • ruby: support ruby-build CLI options. (#11918 by @Marukome0743)
  • conda: preserve cross-platform lock data (#11946 by @jdx) and honor URL replacements (#11930 by @Marukome0743).
  • npm: render lifecycle logs through the progress display. (#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 by @fire-ant)
  • install: write tool manifests atomically. (#11957 by @jdx)
  • lock: include task-specific tools in the lockfile. (#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); honor source and output overrides (#11896) by @Marukome0743.
  • hooks: skip tool installation in preinstall tasks. (#11927 by @Marukome0743)
  • exec: allow a symlinked resolv.conf inside the sandbox. (#11958 by @jdx)
  • generate: honor absolute localized directories. (#11975 by @NgoQuocViet2001)
  • config: allow typing j/k to filter in the mise edit tool picker (#11969 by @jakedgy); create the config directory before writing into it (#11934) and stop a conf.d drop-in from becoming the write target (#11917) by @JamBalaya56562.
  • bootstrap: avoid sudo for user-writable files (#11984) and allow Windows bootstrap without system files (#12003) by @jdx.
  • semver: stop labeling a mangled value as a semver range. (#11949 by @JamBalaya56562)

Windows fixes

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 by @jdx)
  • cli: mise use --global alongside a path is now rejected instead of silently ignored. (#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 by @jdx)

Registry

New Contributors

Full Changelog: v2026.8.5...v2026.8.6

💚 Sponsor mise

mise is maintained by @jdx, an open source developer for entire.io, the title sponsor of the jdx.dev open source tools. Development is funded by sponsors.

If mise saves you or your team time, please consider sponsoring at jdx.dev. Individual and company sponsorships keep mise fast, free, and independent.