Skip to content

chore(deps): update dependency jdx/mise to v2026.8.5 - #87

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/all
Open

chore(deps): update dependency jdx/mise to v2026.8.5#87
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/all

Conversation

@renovate

@renovate renovate Bot commented Mar 31, 2026

Copy link
Copy Markdown
Contributor

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Update Change
jdx/mise minor 2026.3.172026.8.5

Release Notes

jdx/mise (jdx/mise)

v2026.8.5: : PyPy on the precompiled path, Node source patches, and a broad batch of fixes

Compare Source

This release lets mise install PyPy on the precompiled path (including on Windows), adds Node source-build patching, and lands a wide set of fixes across config precedence, install hooks, version pinning, and the Rust, conda, and vfox backends.

Added
  • python: PyPy can now be installed on the precompiled path — when python.compile=false, and unconditionally on Windows, where PyPy versions previously never appeared in mise ls-remote python and could not be installed at all. mise reads the upstream downloads.python.org/pypy index, downloads and extracts the correct archive, runs ensurepip, and records a blake3 checksum in the lockfile on first install (PyPy publishes no machine-readable checksums). (#​11846 by @​JamBalaya56562)

    mise install python@pypy3.10-7.3.17
  • node: add node.apply_patches (MISE_NODE_APPLY_PATCHES) to apply local or remote patches to the Node source build before ./configure runs, mirroring ruby.apply_patches. It accepts a newline-separated list of patch files or URLs. Strip level is auto-detected from git- or diff-style markers, and patches are recorded in the lockfile since they change the built artifact. If patches are set but a precompiled Node was installed, mise now warns instead of silently dropping them. (#​11850 by @​JamBalaya56562)

    [settings.node]
    compile = true
    apply_patches = "./patches/local.patch"
Fixed
  • config: global config precedence inside ~/.config/mise now matches the documentation — config.local.toml overrides config.toml, which overrides conf.d/*.toml. Previously the order was reversed for [settings], [tools], and [env] when ~/.config/mise was outside the cwd walk. (#​11906 by @​halms)
  • config: mise use now updates a single tool version in place within a standard [tools.<name>] table, preserving comments, key ordering, whitespace, and nested option tables instead of collapsing the table to inline form. (#​11848 by @​Marukome0743)
  • install: inline preinstall and postinstall hooks now run from the owning project root, so relative paths resolve consistently even when mise install is started from a subdirectory. The invocation directory remains available through MISE_ORIGINAL_CWD. (#​11857 by @​jdx)
  • use: mise use --pin now prefers an exact available release when pinning, instead of reusing a more-specific installed fuzzy match. For example mise use --pin erlang@27.3 will pin 27.3 if that exact release exists remotely, rather than depending on which versions happen to be installed. (#​11838 by @​Marukome0743)
  • task: editing a root [task_templates.*] definition or a monorepo task default now correctly invalidates affected tasks, so stale outputs are no longer marked up to date after a template change. (#​11858 by @​jdx)
  • rust: mise now reuses a complete external rustup installation (for example one installed by Homebrew) when the default Rust homes are not initialized, instead of downloading and initializing its own. Explicitly configured Cargo/Rustup homes continue using the mise-managed path. (#​11840 by @​Marukome0743)
  • conda: conda package commands now run through prefix-aware launchers that activate each command's own conda prefix, fixing tools like jdtls that expand ${CONDA_PREFIX} and rely on activation scripts. Dependency executables stay isolated from the user's shell PATH. (#​11855 by @​Marukome0743)
  • python: disable_tools = ["python"] (and allowlist forms like enable_tools = ["node"]) now also suppress the _.python.venv directive, so a disabled Python no longer leaves its virtualenv activated on PATH. (#​11885 by @​JamBalaya56562)
  • vfox: configured vfox tool options are now exposed to plugin hooks through MISE_TOOL_OPTS__* (with legacy RTX_TOOL_OPTS__* aliases), so hooks reading os.getenv("MISE_TOOL_OPTS__...") see the resolved options during install, uninstall, exec-env, and lock paths. (#​11884 by @​Marukome0743)
  • aqua: explicit github_release package-type overrides from version and platform overrides are now applied, fixing installs such as recent Claude Code releases that failed with "relative URL without a base". (#​11901 by @​Marukome0743)
Changed
  • cache: remote build-cache prefetch now downloads output blobs concurrently (up to 48 in parallel) while reserving foreground slots for compiler lookups, dramatically speeding up large Rust cache restores that previously downloaded thousands of small artifacts serially. (#​11905 by @​jdx)
Documentation
Registry
Breaking Changes
  • If you relied on disable_tools = ["python"] while still keeping a _.python.venv activated, that virtualenv will no longer be activated. The existing venv remains on disk and is restored automatically when Python is re-enabled. (#​11885)

Full Changelog: jdx/mise@v2026.8.4...v2026.8.5

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

v2026.8.4: : Cross-backend ls, semver ordering, and bootstrap cask pruning

Compare Source

This release adds explicit semantic version ordering for major backends, teaches mise ls and mise install --force to work across backends, extends bootstrap package management with platform filters and cask pruning, and lands a broad batch of task, config, and platform-specific fixes.

Added
  • backend: tools can now declare an explicit version_order (source or semver) so that latest and version-prefix resolution follow semantic precedence instead of source/chronological order. This is enabled for Aqua, GitHub, GitLab, Forgejo, and HTTP backends, and fixes cases where a backport or older release line was picked ahead of a newer version (for example neo4j, victoria-metrics, go-getter, talosctl, rpk, and tealdeer). mise ls-remote continues to show upstream source order. (#​11774 by @​jdx)

  • ls: mise ls <name> now matches a tool installed from multiple backends. Previously, installing a tool from both its registry backend and, say, a cargo: or ubi: build would show only one of them under mise ls <name> even though both were on PATH. Spelling out a backend (e.g. mise ls ubi:jqlang/jq) still narrows to that single backend. (#​11822 by @​JamBalaya56562)

  • install: mise install --force now works without tool arguments, reinstalling every configured, OS-supported tool (or the monorepo union with --monorepo). (#​11802 by @​Marukome0743)

  • upgrade: add an upgrade.auto_prune setting (default true) that controls whether mise upgrade removes the version it replaced, plus a --prune flag to force removal on for a single run when the setting is off. Useful when a mise-managed interpreter backs a virtualenv you do not want deleted on unattended upgrades. (#​11788 by @​JamBalaya56562)

    [settings]
    upgrade.auto_prune = false
  • bootstrap: mise bootstrap packages prune --manager brew-cask can now conservatively remove mise-owned Homebrew casks that are no longer declared in [bootstrap.packages]. Removal is gated by install-time receipt metadata, fingerprint checks, and ownership validation, and Homebrew-owned, pkg, lifecycle, drifted, or shared casks are skipped with an explicit reason. (#​11810 by @​jdx)

  • bootstrap: [bootstrap.packages] entries can now use table form with a version and [tools]-style os selectors, so a single config can target macOS-only casks and Linux fonts. Platform-incompatible packages surface as unavailable in status output instead of aborting the run, while explicit requests for unsupported packages still error. (#​11809 by @​jdx)

  • brew: the brew-cask manager now supports installing font casks directly from git URLs, including selecting a branch and staging files from a subdirectory. (#​11781 by @​roele)

  • aqua: relative aqua.registries entries in a config file are now resolved against that config's root, so a registry.yaml committed inside a project repository can be referenced without a machine-specific absolute path. (#​11804 by @​JamBalaya56562)

    [settings]
    aqua.registries = ["registry.yaml"]
  • spm: spm: installs can now be pinned to a commit via rev:<commit> (and compatible ref:<commit>), building from source. (#​11815 by @​Marukome0743)

  • generate: generated git hooks can now carry extra mise flags. Anything after -- is inserted between mise and run, so a hook can target config in a subdirectory or set other global flags. (#​11820 by @​JamBalaya56562)

    mise generate git-pre-commit --task lint -- -C subdir -E ci
Fixed
Documentation
Registry
New Contributors

Full Changelog: jdx/mise@v2026.8.3...v2026.8.4

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

v2026.8.3: : Flatpak, Font Casks, and Task Precedence Fixes

Compare Source

This release expands bootstrap package management with per-user Flatpak support and Linux font casks, adds a per-tool pipx registry option and a shim safety setting, and lands a batch of task precedence, lockfile, and Python fixes.

Added
  • bootstrap: manage per-user Flatpak installations with a new flatpak-user package manager. The existing flatpak:<id> entries stay system-scoped, and you can now declare both scopes in the same config, including the same application ID. (#​11757 by @​jdx)

  • brew: the built-in brew-cask manager now works on Linux for font-only casks, installing fonts under $XDG_DATA_HOME/fonts via Linuxbrew. Non-font casks on Linux fail with a clear unsupported-platform error. (#​11758 by @​jdx)

    mise bootstrap packages use brew-cask:font-heavy-data-nerd-font
  • pipx: add a per-tool registry_url option so version listing and latest resolution can target a private PyPI-style index without changing the global pipx.registry_url. The latest-version cache is keyed by registry URL to avoid cross-registry reuse. (#​11754 by @​jdx)

  • shim: add a not_found_system_fallback setting (MISE_NOT_FOUND_SYSTEM_FALLBACK, default true). Setting it to false prevents a shim for a missing tool from silently falling back to a same-named binary on PATH, failing loudly instead — useful for hardened environments that pin an explicit allowlist of tools. (#​11755 by @​richid)

Fixed
  • task: inline [tasks.<name>] definitions now take precedence over a same-named task from an included TOML file instead of being silently discarded. Metadata-only inline blocks overlay the included command rather than replacing it. (#​11734 by @​jdx)
  • task: a metadata-only inline task in a higher-precedence file such as mise.local.toml now overlays the command-bearing definition from a lower file instead of wiping out its run. Command-bearing higher-precedence tasks still fully replace the lower one. (#​11745 by @​jdx)
  • task: tasks declaring double_dash="required" again accept values passed after --, which had regressed to being rejected. (#​11729 by @​jdx)
  • config: configured backend options such as postinstall are now applied to explicitly requested runtime versions (e.g. mise install solidity@0.8.2) that carry registry defaults, instead of being skipped. (#​11550 by @​risu729)
  • lockfile: setting lockfile = true now creates missing project lockfiles during mise use, mise install, and upgrade flows. An unset setting continues to update existing lockfiles only. (#​11746 by @​jdx)
  • python: a plain mise lock now preserves the python-build-standalone artifact already recorded for each platform instead of churning the lockfile to the newest build. Use mise lock --bump to advance the PBS build explicitly. (#​11747 by @​jdx)
  • python: skip junctions when syncing installs to uv to avoid errors on Windows. (#​11683 by @​risu729)
  • github: release-age filters like minimum_release_age now use GitHub's published_at timestamp rather than the commit created_at, so a newly published release pointing at an older commit no longer bypasses the filter. Applies across Aqua, GitHub, Ubi, SPM, Pipx, and GitHub-backed core tools. (#​11756 by @​jdx)
  • use: adding multiple tools in a single mise use now keeps an already-sorted [tools] table alphabetically ordered. (#​11713 by @​jdx)
  • rust: expand ~ in the home setting. (#​11752 by @​xqm32)
  • vfox: resolve backend aliases for custom plugins. (#​11736 by @​jdx)
  • vfox: cancel in-flight HTTP retries when interrupted with Ctrl-C. (#​11735 by @​jdx)
  • npm shim: npm link <package-name> (and its npm ln alias) now triggers an auto-reshim, since it installs a package globally. (#​11748 by @​cheezmil)
  • ls-remote: suppress the minimum_release_age warning during shell completions. (#​11727 by @​beisenherz)
  • docs: fix an incorrect ripgrep URL in the tool-stub docs. (#​11725 by @​arti5an)
New Contributors

Full Changelog: jdx/mise@v2026.8.2...v2026.8.3

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

v2026.8.2: : Declarative System Bootstrap

Compare Source

This release turns mise bootstrap into a full declarative host-provisioning system: alongside packages, mise can now converge privileged files, Linux users and groups, systemd services, Docker Compose projects, and firewall rules — all with plan/apply/status workflows, secret handling, and the ability to run over SSH against remote hosts. It also makes Ruby's ruby.compile=false a strict precompiled-only mode and lands a batch of install and lockfile fixes.

Highlights

  • mise bootstrap gains a Terraform-style declarative model. A new mise bootstrap plan previews changes with table or JSON output and detailed exit codes, and each resource type has its own apply/status commands that converge only when something actually differs.
  • Bootstrap can now provision far more than tools and packages: privileged files and directories, Linux accounts, systemd services, Compose projects, and host firewall rules, with dependency ordering, fail-closed safety checks, and secret inputs sourced from environment variables (never stored in config).
  • The same bootstrap project can be applied to remote machines over SSH via mise bootstrap remote, including automatic detection of the target's OS/arch/libc and signature-verified download of the matching mise binary.

Added

  • bootstrap: declarative resource plans. mise bootstrap plan previews what bootstrap would change before applying, with table or --json output and optional --detailed-exitcode (0 = no changes, 2 = changes, 1 = error). Resources have stable identities, dependency graphs, and validation for duplicates, missing dependencies, and cycles. (#​11669 by @​jdx)
  • bootstrap: manage privileged files and directories via [bootstrap.files] and [bootstrap.directories], with content (inline or from a source), ownership, mode, and explicit present/absent state. Writes are atomic, removal is opt-in (and requires recursive = true for non-empty directories), and privileged work runs through hidden helpers that never expose file content in argv or logs. (#​11674 by @​jdx)
  • bootstrap: secret inputs for managed files. [bootstrap.secrets] references sensitive values through environment variables so nothing is stored in config, and managed files with template = true can render them via {{ secret(name="...") }}. mise bootstrap secrets status reports availability without revealing values, and --prompt-secrets prompts securely for anything missing. (#​11680 by @​jdx)
  • bootstrap: manage Linux users and groups via [bootstrap.users] and [bootstrap.groups], with create/update/remove, supplementary groups, home handling, and explicit state = "absent". Accounts converge before the files that reference them, and UID/GID collisions fail closed. (#​11681 by @​jdx)
  • bootstrap: manage Linux systemd services via [bootstrap.services] for running/stopped, enabled/disabled, and masked state. Managed files and directories can set notify to trigger reload, restart, or reload_or_restart handlers, but only after a real file change. (#​11688 by @​jdx)
  • bootstrap: manage Docker Compose projects via [bootstrap.compose] for running, stopped, and absent states, with pull/build/recreate/wait policies, one-shot services, orphan/volume/image removal, and explicit dependencies. Convergence compares live container runtime and health to the rendered Compose model (Compose v2 only). (#​11689 by @​jdx)
  • bootstrap: manage Linux host firewall rules via [bootstrap.linux.firewall] with nftables, firewalld, and UFW backends (backend = "auto"). Includes SSH-lockout protection (default-deny requires a covering allow rule or allow_lockout = true), drift detection, and preservation of undeclared rules unless exclusive is set. (#​11694 by @​jdx)
  • bootstrap: run bootstrap over SSH with mise bootstrap remote, targeting a named [bootstrap.remote.hosts] inventory or ad-hoc user@host targets. mise archives and stages your project, provisions a compatible mise binary on the host, runs bootstrap with forwarded flags, and cleans up staging afterward. (#​11690 by @​jdx)
  • bootstrap: remote provisioning now detects each target's OS, architecture, and Linux libc (glibc vs musl) and, when the local binary is not compatible, downloads the matching raw executable for the same release from GitHub with minisign-verified checksums. Custom or debug builds fail closed and require an explicit mise_bin, remote_mise, or bootstrap_command. (#​11693 by @​jdx)

Changed

  • ruby: ruby.compile = false is now a strict precompiled-only mode, matching python.compile. Installs error with no precompiled ruby found instead of silently falling back to ruby-build, and version listings (mise ls-remote ruby, fuzzy resolution) are filtered to versions that actually have a precompiled binary for your platform. Previously false was a no-op after precompiled binaries became the default in 2026.8.0. Unset and compile = true are unchanged; Windows is unaffected. (#​11710 by @​jdx)
  • task: workspace task inference is now opt-in per provider via task.auto_infer (e.g. task.auto_infer = ["node"]) instead of running whenever experimental features are enabled. Explicit mise tasks always take precedence over inferred package scripts on name and alias collisions. (#​11706 by @​jdx)

Fixed

  • brew: :any_skip_relocation bottles no longer leave unresolved @@HOMEBREW_*@@ placeholders in scripts and config files. That tag now only skips binary linkage relocation while text placeholders are still replaced. (#​11665 by @​jdx)
  • brew-cask: detect extensionless DMG downloads (such as Raycast) by their UDIF trailer instead of treating them as raw executables and failing to find the app bundle. (#​11692 by @​jacobbednarz)
  • lock: mise lock --bump now errors instead of writing an incomplete lockfile when a version bump would drop platform coverage that the previous locked version had. Best-effort skips are retained for platforms a tool never supported. (#​11664 by @​jdx)
  • pipx: release-age gating now uses PyPI's precise RFC3339 upload_time_iso_8601 timestamp instead of the timezone-naive upload_time, which previously made freshly released packages appear up to ~24h younger and over-gated them under minimum_release_age. (#​11662 by @​Guria)
  • pacman: pacman -Q is now parsed under LC_ALL=C so missing-package detection works in non-English locales; previously [bootstrap.packages] could bail on a translated "was not found" message. (#​11673 by @​rarandeyo)
  • sync: clear stale incomplete markers when an external link (from uv, nvm, pyenv, nodenv, or Homebrew) is confirmed healthy, so mise where no longer treats a working external version as incomplete after an interrupted install. (#​11172 by @​risu729)
  • completions: an explicit -- no longer hijacks task argument completion after usage v5. mise run <task> -- <TAB> again offers the task's declared choices instead of falling back to filenames, while still forwarding extra arguments. (#​11711 by @​jdx)
  • registry: shim auto-install uses new declared bins metadata to pick the correct provider before falling back to incidental executables, fixing cases where invoking the npm shim could run Node's bundled npm instead of the configured npm version. (#​11666, #​11671, #​11676, #​11677, #​11678 by @​jdx)

New Contributors

Full Changelog: jdx/mise@v2026.8.1...v2026.8.2

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

v2026.8.1: : Task Cache Goes Remote, Affected Tasks, and Config Ergonomics

Compare Source

This release rounds out mise's experimental task artifact cache with size/age limits, inspection tooling, and a full local-plus-remote cache backend (including authenticated CI caching), adds experimental mise run --affected for monorepos, and lands a batch of config, upgrade, and install fixes.

Highlights

  • The experimental task output cache now supports remote sharing: a composite store reads locally first, promotes remote hits, and mirrors writes, with authenticated requests backed by token files or GitHub Actions OIDC. Cache entries can be inspected, cleared per-task, and bounded by size and age.
  • Experimental mise run --affected runs only the tasks in monorepo projects touched by your Git changes, using workspace dependency graphs, global task inputs, and provider lockfile attribution to decide what is affected.
  • The config-writing flags are now more forgiving: --file and --path are interchangeable across the commands that write config, so you no longer have to remember which name each subcommand expects.

Added

  • task: experimental mise run --affected selects and runs only the tasks in projects affected by Git changes, combining the workspace dependency graph, global_inputs, and provider lockfile diffs. Base and head revisions can be overridden with --affected-base/--affected-head or MISE_AFFECTED_*. Includes JSON output and an --explain breakdown of why each task was selected. (#​11590, #​11587, #​11589, #​11591, #​11593 by @​jdx)

    mise run --affected test
    mise run --affected --affected-base main test
  • task: remote task cache. A composite store layers local and remote backends, reading local first and promoting remote hits, then committing locally before mirroring writes so a remote failure never loses a local hit. Requests are hardened, verified, streamed, and support read/write access modes. (#​11622, #​11623, #​11624, #​11626, #​11627 by @​jdx)

  • task: authenticated remote cache. Credentials resolve in fixed precedence: an explicit bearer token, a global-only token file (MISE_TASK_CACHE_REMOTE_TOKEN_FILE), then GitHub Actions OIDC when MISE_TASK_CACHE_REMOTE_OIDC_AUDIENCE is set. HTTPS is enforced except for loopback development endpoints. (#​11625, #​11653 by @​jdx)

  • task: task.cache_max_size and task.cache_max_age settings cap the task output cache independently of the global prune age, evicting least-recently-accessed entries after writes and rejecting expired entries on restore. (#​11610 by @​jdx)

  • task: inspect and selectively clear the cache with mise cache task <task> (table or --json, reporting stored size, restorable bytes, saved time, last access, and outputs) and mise cache clear --task <task>, which removes only that task's entries without touching your working-tree outputs. (#​11604 by @​jdx)

  • task: mise run --task-cache-explain <task> prints a structural breakdown of what feeds a task's cache key (input categories, counts, env/var names and presence, platform) without emitting secret-derived hashes, and works under --dry-run. Companion changes report cache miss reasons, cache statistics, resolved cache paths, and add JSON explanation output. (#​11595, #​11597, #​11599, #​11600, #​11601 by @​jdx)

  • task: cache artifacts are now checksum-verified and cache declarations are audited on load. (#​11605, #​11617 by @​jdx)

  • config: --file and --path are now interchangeable across the commands that write config: mise use, mise set, mise unuse, mise unset, mise config get, and mise config set. (#​11577, #​11616, #​11631, #​11640 by @​JamBalaya56562)

    mise use --file mise.local.toml node@22
    mise set --path mise.local.toml FOO=bar
  • upgrade: mise upgrade --no-prune keeps the version being replaced instead of uninstalling it, so external references such as virtualenvs built from a mise-managed Python keep working. Also works with --bump. (#​11639 by @​JamBalaya56562)

  • env: on Windows, mise now warns when the generated PATH exceeds the ~8191-character length at which cmd.exe silently drops the variable, which otherwise makes every command appear unrecognized. (#​11643 by @​JamBalaya56562)

  • vfox: Lua plugins gain strip_components = 1 on archiver.decompress plus sorted file.list, file.glob, and file.move, letting plugins flatten versioned archive roots and rename executables portably without shelling out. (#​11652 by @​jdx)

Fixed

  • config: tool versions may now contain a colon, so templated versions like {{ exec(...) | split(pat=': ') | last }} and selectors resolved from templates no longer fail config loading. (#​11580 by @​JamBalaya56562)
  • config: config writes no longer pick a target that config loading would ignore, honor ignore filters when a --path <dir> is given, and no longer write the global config into a conf.d drop-in. (#​11571, #​11609, #​11633 by @​JamBalaya56562)
  • upgrade: mise upgrade --bump now applies every eligible tool bump in the same config file instead of letting the last save overwrite earlier ones, and preserves successful bumps when another tool in the file fails to install. (#​11572 by @​Marukome0743)
  • install: a failed backend install no longer leaves runtime aliases such as latest pointing at the removed version; mise rebuilds valid symlinks (or removes dangling ones) after cleanup. (#​11579 by @​Marukome0743)
  • brew: Linux Homebrew bottles containing shebang executables with binary payloads (such as Watchman's watchman-diag zipapp) now relocate correctly with long Linuxbrew prefixes. (#​11632 by @​Marukome0743)
  • pipx: extras are now applied to git-based installs. (#​11586 by @​jdx)
  • prune: read-only shared installs are excluded from pruning. (#​11644 by @​Marukome0743)
  • task: dangling task symlinks are skipped, wildcard task matching respects group boundaries, shared pre/post dependencies are supported, and task-list flags are rejected on subcommands. Task cache writes are serialized and abandoned partial writes are cleaned up. (#​11574, #​11581, #​11578 by @​Marukome0743; #​11638, #​11606, #​11608 by @​jdx)
  • schema: JSON schemas are now published alongside the documentation. (#​11596 by @​jdx)

Documentation

Full Changelog: jdx/mise@v2026.8.0...v2026.8.1

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

v2026.8.0: : 15% faster shims, multi-language workspaces, and precompiled Ruby

Compare Source

This release makes mise noticeably faster on Linux x64: shims have 15% lower latency, while config-aware commands are 8–11% faster in local release-to-release benchmarks. It also significantly expands the experimental monorepo task workflow with dependency inference across Cargo, uv (Python), Go, and Node workspaces, and makes precompiled Ruby binaries the default.

⚡ Performance: up to 15% lower latency

Official checksum-verified Linux x64 GNU binaries were compared on an AMD Ryzen 9 7950X3D using an isolated offline fixture with warm filesystem caches (20 warmups and 200 measured runs per command):

Workload v2026.7.18 v2026.8.0 Lower latency
Node shim dispatch 6.990 ms 5.929 ms 15.2%
tasks ls 7.353 ms 6.574 ms 10.6%
env -s bash 7.942 ms 7.187 ms 9.5%
current 7.667 ms 6.961 ms 9.2%
settings 5.823 ms 5.331 ms 8.5%
--help 5.036 ms 4.731 ms 6.1%
version 5.108 ms 4.884 ms 4.4%
registry 7.457 ms 7.181 ms 3.7%

Release downloads are smaller as well:

Linux x64 artifact Size change
.tar.xz 11.1% smaller
.tar.gz 5.9% smaller
.tar.zst 5.0% smaller
Allocated ELF sections 0.6% smaller

The raw executable file is 2.5% larger because of the BOLT file layout, despite its smaller allocated sections and compressed artifacts. Shim dispatch was measured in two reversed-order 300-run rounds. These are whole-release results against v2026.7.18, so they include all changes between the releases rather than isolating BOLT alone.

Highlights
  • Workspace inference now spans four ecosystems. mise tasks graph discovers projects and internal dependency edges from Cargo, uv, Go, and Node workspace metadata without needing the underlying toolchain installed, and --explain attributes every project, edge, and task field to its source.
  • Precompiled Ruby binaries are now the default, cutting install times for most users while keeping source builds available on demand.
Added
  • task: Cargo workspaces are now inferred for the task graph. mise parses root and member Cargo.toml files (no cargo binary required) to build cargo:<package> projects and internal edges from normal, dev, build, target-specific, renamed, and inherited workspace = true path dependencies, with provenance surfaced in graph output. (#​11554 by @​jdx)

  • task: uv (Python) workspaces are inferred from pyproject.toml. When [tool.uv.workspace] is present, member globs and exclusions define uv:<package> projects and edges come from [tool.uv.sources] workspace = true / local path entries across main, optional, dependency-group, and legacy dev dependencies — again without invoking uv or Python. (#​11556 by @​jdx)

  • task: Go workspaces are discovered from go.work use directives and each module's go.mod, registering stable go:<module-path> projects without running the go binary. Dependency ordering is supplied explicitly via [monorepo.projects] overrides. (#​11559 by @​jdx)

  • task: workspace providers can now contribute task suggestions. The Node provider imports supported inputs, outputs, cache, and dependsOn metadata from matching turbo.json entries for inferred package scripts, tracking turbo.json as a task definition source. Unsupported Turbo expressions are left unset. (#​11543 by @​jdx)

  • task: mise tasks graph --explain shows provider and metadata-source provenance for every inferred project, dependency edge, task, and provider-suggested field, and --json now serializes the same attribution. Config overrides are labeled as configuration rather than misattributed to inference. (#​11547 by @​jdx)

    mise tasks graph --explain
  • task: mise watch gains a per-task watch.no_vcs_ignore option so tasks can watch sources that are excluded by .gitignore (such as generated files). VCS ignores stay enabled by default to avoid scanning broad build directories; one opted-in task enables it for the combined watch process. (#​11535 by @​Marukome0743)

    [tasks.generate]
    run = "process generated/output.json"
    sources = ["generated/outp
    

Note

PR body was truncated to here.


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 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.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate Bot changed the title chore(deps): update dependency jdx/mise to v2026.3.18 chore(deps): update dependency jdx/mise to v2026.4.0 Apr 1, 2026
@renovate renovate Bot changed the title chore(deps): update dependency jdx/mise to v2026.4.0 chore(deps): update dependency jdx/mise to v2026.4.1 Apr 2, 2026
@renovate
renovate Bot force-pushed the renovate/all branch 2 times, most recently from 7bca63d to 78cde9b Compare April 3, 2026 13:52
@renovate renovate Bot changed the title chore(deps): update dependency jdx/mise to v2026.4.1 chore(deps): update dependency jdx/mise to v2026.4.3 Apr 3, 2026
@renovate renovate Bot changed the title chore(deps): update dependency jdx/mise to v2026.4.3 chore(deps): update dependency jdx/mise to v2026.4.4 Apr 5, 2026
@renovate
renovate Bot force-pushed the renovate/all branch 2 times, most recently from 71dfc7c to 2c2deda Compare April 6, 2026 13:24
@renovate renovate Bot changed the title chore(deps): update dependency jdx/mise to v2026.4.4 chore(deps): update dependency jdx/mise to v2026.4.5 Apr 6, 2026
@renovate renovate Bot changed the title chore(deps): update dependency jdx/mise to v2026.4.5 chore(deps): update dependency jdx/mise to v2026.4.6 Apr 8, 2026
@renovate
renovate Bot force-pushed the renovate/all branch 2 times, most recently from 9807261 to 23e68ca Compare April 9, 2026 10:49
@renovate renovate Bot changed the title chore(deps): update dependency jdx/mise to v2026.4.6 chore(deps): update dependency jdx/mise to v2026.4.7 Apr 9, 2026
@renovate renovate Bot changed the title chore(deps): update dependency jdx/mise to v2026.4.7 chore(deps): update dependency jdx/mise to v2026.4.8 Apr 10, 2026
@renovate renovate Bot changed the title chore(deps): update dependency jdx/mise to v2026.4.8 chore(deps): update dependency jdx/mise to v2026.4.9 Apr 11, 2026
@renovate renovate Bot changed the title chore(deps): update dependency jdx/mise to v2026.4.9 chore(deps): update dependency jdx/mise to v2026.4.10 Apr 12, 2026
@renovate renovate Bot changed the title chore(deps): update dependency jdx/mise to v2026.4.10 chore(deps): update dependency jdx/mise to v2026.4.11 Apr 13, 2026
@renovate renovate Bot changed the title chore(deps): update dependency jdx/mise to v2026.4.11 chore(deps): update dependency jdx/mise to v2026.4.14 Apr 16, 2026
@renovate renovate Bot changed the title chore(deps): update dependency jdx/mise to v2026.4.14 chore(deps): update dependency jdx/mise to v2026.4.15 Apr 16, 2026
@renovate renovate Bot changed the title chore(deps): update dependency jdx/mise to v2026.4.15 chore(deps): update dependency jdx/mise to v2026.4.16 Apr 17, 2026
@renovate renovate Bot changed the title chore(deps): update dependency jdx/mise to v2026.4.16 chore(deps): update dependency jdx/mise to v2026.4.17 Apr 18, 2026
@renovate renovate Bot changed the title chore(deps): update dependency jdx/mise to v2026.4.22 chore(deps): update dependency jdx/mise to v2026.4.23 Apr 26, 2026
@renovate renovate Bot changed the title chore(deps): update dependency jdx/mise to v2026.4.23 chore(deps): update dependency jdx/mise to v2026.4.24 Apr 27, 2026
@renovate renovate Bot changed the title chore(deps): update dependency jdx/mise to v2026.4.24 chore(deps): update dependency jdx/mise to v2026.4.25 Apr 28, 2026
@renovate renovate Bot changed the title chore(deps): update dependency jdx/mise to v2026.4.25 chore(deps): update dependency jdx/mise to v2026.4.26 Apr 29, 2026
@renovate renovate Bot changed the title chore(deps): update dependency jdx/mise to v2026.4.26 chore(deps): update dependency jdx/mise to v2026.4.27 Apr 29, 2026
@renovate renovate Bot changed the title chore(deps): update dependency jdx/mise to v2026.4.27 chore(deps): update dependency jdx/mise to v2026.4.28 Apr 30, 2026
@renovate
renovate Bot force-pushed the renovate/all branch from 1d8da69 to 0837f8f Compare May 3, 2026 22:13
@renovate renovate Bot changed the title chore(deps): update dependency jdx/mise to v2026.4.28 chore(deps): update dependency jdx/mise to v2026.5.0 May 3, 2026
@renovate
renovate Bot force-pushed the renovate/all branch from 0837f8f to 5599c9b Compare May 5, 2026 14:44
@renovate renovate Bot changed the title chore(deps): update dependency jdx/mise to v2026.5.0 chore(deps): update dependency jdx/mise to v2026.5.1 May 5, 2026
@renovate
renovate Bot force-pushed the renovate/all branch from 5599c9b to 4c38329 Compare May 7, 2026 13:38
@renovate renovate Bot changed the title chore(deps): update dependency jdx/mise to v2026.5.1 chore(deps): update dependency jdx/mise to v2026.5.2 May 7, 2026
@renovate
renovate Bot force-pushed the renovate/all branch from 4c38329 to 951583f Compare May 8, 2026 12:59
@renovate renovate Bot changed the title chore(deps): update dependency jdx/mise to v2026.5.2 chore(deps): update dependency jdx/mise to v2026.5.3 May 8, 2026
@renovate
renovate Bot force-pushed the renovate/all branch from 951583f to 406abab Compare May 9, 2026 13:44
@renovate renovate Bot changed the title chore(deps): update dependency jdx/mise to v2026.5.3 chore(deps): update dependency jdx/mise to v2026.5.4 May 9, 2026
@renovate
renovate Bot force-pushed the renovate/all branch from 406abab to ac5e40c Compare May 10, 2026 12:44
@renovate renovate Bot changed the title chore(deps): update dependency jdx/mise to v2026.5.4 chore(deps): update dependency jdx/mise to v2026.5.5 May 10, 2026
@renovate
renovate Bot force-pushed the renovate/all branch from ac5e40c to a88eca2 Compare May 11, 2026 18:01
@renovate renovate Bot changed the title chore(deps): update dependency jdx/mise to v2026.5.5 chore(deps): update dependency jdx/mise to v2026.5.6 May 11, 2026
@renovate renovate Bot changed the title chore(deps): update dependency jdx/mise to v2026.5.6 chore(deps): update dependency jdx/mise to v2026.5.7 May 13, 2026
@renovate
renovate Bot force-pushed the renovate/all branch 2 times, most recently from ce968d3 to ca638bd Compare May 14, 2026 21:39
@renovate renovate Bot changed the title chore(deps): update dependency jdx/mise to v2026.5.7 chore(deps): update dependency jdx/mise to v2026.5.8 May 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants