deps: update dependency jdx/mise to v2026.4.18#1386
Open
renovate[bot] wants to merge 1 commit intomainfrom
Open
deps: update dependency jdx/mise to v2026.4.18#1386renovate[bot] wants to merge 1 commit intomainfrom
renovate[bot] wants to merge 1 commit intomainfrom
Conversation
54360e3 to
71a216d
Compare
71a216d to
11699ab
Compare
11699ab to
ce21d84
Compare
ce21d84 to
cde65f7
Compare
cde65f7 to
c95b558
Compare
c95b558 to
14ef483
Compare
14ef483 to
2f0f213
Compare
2f0f213 to
858b71c
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:
2026.4.7→2026.4.18Release Notes
jdx/mise (jdx/mise)
v2026.4.18: : Deps management, aube support, and vfox plugin dependenciesCompare Source
A feature-packed release that renames
mise preparetomise depswith new package management subcommands, adds aube as an npm backend package manager, enables vfox plugins to declare their own dependencies, and ships several important fixes for version resolution, lockfile concurrency, and GitHub Enterprise attestation verification.Highlights
mise preparerenamed tomise depswith add/remove subcommands -- The experimental dependency management command is nowmise deps, with newmise deps add npm:reactandmise deps remove npm:lodashsubcommands for managing individual packages. All config keys, settings, state files, and CLI flags have been updated accordingly ([prepare]to[deps],--no-prepareto--no-deps).npm.package_managernow defaults to"auto", which prefers theaubepackage manager when available and falls back tonpm. Explicitnpm.package_manager = "aube"is also supported.PLUGIN.depends = {"node", "python"}inmetadata.lua, so mise resolves installation order automatically without users needingdepends = [...]in their config.version_list_urlnow query their upstream sources directly, fixing the issue where tools like Flutter showed outdated versions.Added
mise depscommand with add/remove subcommands -- The experimentalmise preparecommand has been renamed tomise deps. Newmise deps addandmise deps removesubcommands let you manage individual packages usingecosystem:packagesyntax. Currently supports npm, yarn, pnpm, and bun ecosystems. Baremise depsdefaults tomise deps install(the previousmise preparebehavior). #9056 by @jdx--beforeflag formise latest-- One-off latest-version lookups can now be constrained by release date. Supports absolute dates (2024-06-01) and relative durations (90d,1y). Overrides per-toolinstall_beforeoptions and the globalinstall_beforesetting. #9168 by @risu729Aube package manager support for npm backend -- The npm backend now supports
aubeas an alternative package manager. The new defaultnpm.package_manager = "auto"prefersaubewhen it is available in the active toolset and falls back tonpmotherwise. #9256 by @jdxfilter_binsoption for SPM backend -- Restrict which executable products are built and linked from a Swift package. Filtering happens beforeswift build, so unwanted products are never compiled. #9253 by @jdxvfox plugin-declared dependencies via
metadata.lua-- Plugin authors can now declare tool dependencies directly in their plugin'smetadata.lua. User-specifieddependsinmise.tomlremains additive. #9051 by @ahemonRegistry: bitwarden-secrets-manager -- Now available via the aqua backend (
aqua:bitwarden/sdk-sm), replacing the legacy asdf plugin for better checksum/SLSA verification. #9255 by @msuzoaguFixed
Stale version listings for package-registry backends -- Backends with canonical upstream sources (npm, pipx, cargo, gem, go, and http/s3 with
version_list_url) now skip themise-versions.jdx.devcache and query upstream directly. This fixes the issue where tools like Flutter showed outdated versions until users setMISE_USE_VERSIONS_HOST=0. #9245 by @jdxConcurrent lockfile save race condition -- Fixed
ENOENTerrors when multiple mise processes updated the same lockfile simultaneously (commonly seen with parallel tool installs in CI viahk). Each save now uses a uniquely named temp file instead of a fixedmise.lock.tmppath. #9250 by @jdxGitHub Enterprise attestation verification -- Artifact attestation verification now routes to the configured
api_urlinstead of always hittingapi.github.com, fixing401 Unauthorizederrors for GHES users. #9254 by @jdxNoisy third-party debug/trace logs suppressed -- Debug and trace logs from dependency crates (h2, hyper, reqwest, rustls, etc.) are now filtered out of
-v/-vvoutput. SetMISE_LOG_VERBOSE_DEPS=1to restore them. #9248 by @jdxAnimated progress UI disabled in CI -- CI environments no longer show animated progress frames even when stderr is allocated as a TTY, preventing thousands of duplicate log lines. #9249 by @jdx
mise userespects--quietand--silent-- The "tools:", "removed:", and "would update" messages are now suppressed when--quietor--silentis passed. #9251 by @jdx--lockedworks for vfox backend plugins -- Custom Lua backend plugins that cannot provide download URLs no longer fail with "No lockfile URL found" when usingmise install --locked. #9252 by @jdxNew Contributors
Full Changelog: jdx/mise@v2026.4.17...v2026.4.18
v2026.4.17: : install_before fixes, lockfile repair, and new registry toolsCompare Source
A fix-heavy release that addresses several
install_beforeedge cases across npm, pipx, and backend latest lookups, repairs lockfile generation for aqua tools with custom version prefixes, and adds six new tools to the registry.Highlights
install_beforenow works consistently across backends -- The date-based version cutoff is now respected in direct latest lookups, npm no longer drifts by a day due to double timestamp sampling, and pipx/uv installs forward the cutoff via--exclude-newer/--uploaded-prior-to.mise locknow correctly propagatesversion_prefix(e.g.jq-) to GitHub release lookups, fixing empty platform URLs that broke--lockedmode.mise b--env_file,dotenv,env_path, and themise bshorthand now emit deprecation warnings with removal scheduled for 2027.4.0.Fixed
install_beforerespected in backend latest lookups -- Direct calls likemise latest npm:prettiernow apply the effectiveinstall_beforecutoff, not just install/upgrade flows. #9193 by @risu729tool@latestroutes through stable lookup -- An explicit@latestsuffix now follows the same backend-specific fast path as an unqualified tool name, so both forms return the same version. #9228 by @risu729npm
install_beforeday drift -- Fixed an off-by-one whereinstall_before = "3d"could compute--min-release-age=4due to a secondTimestamp::now()call drifting past the day boundary. A stable per-process timestamp and a 60-second tolerance window eliminate the issue. #9157 by @risu729install_beforeforwarded to pipx and uv installs --pipx:tools now pass--exclude-newerto uv and--uploaded-prior-to(via--pip-args) to pipx, so Python package installs respect the date cutoff. #9190 by @risu729Warning for old bun/pnpm with
install_before-- Wheninstall_beforeis active and the detected bun or pnpm version is below the minimum that supports release-age flags, mise now warns instead of silently ignoring the cutoff. #9232 by @risu729Lockfile version prefix propagation --
mise locknow usesversion_prefixwhen looking up GitHub releases for aqua tools, fixing empty platform URLs that caused--lockedinstalls to fail. #9242 by @effatishfmt available on Windows -- The
shfmtregistry entry no longer restricts to Linux/macOS, somise use shfmtworks on Windows via the aqua backend. #9191 by @zeitlingerGitLab expired OAuth2 token warning -- When mise reads a GitLab token from glab's config and the OAuth2 expiry has passed, it now warns the user to refresh (e.g.
glab api user) instead of failing silently. #9195 by @stanhuGitHub auth skipped on release asset downloads -- Token lookup is now skipped for GitHub release asset CDN hosts (
objects.githubusercontent.com, etc.), avoiding unnecessary authentication failures on public downloads. #9060 by @risu729Empty
enable_toolsdisables all tools -- An explicitly emptyenable_toolslist now means "disable all tools" rather than "no filter", matching user expectations as an allowlist. #9108 by @risu729Deprecation warnings for legacy env keys --
env_file,dotenv, andenv_pathnow warn when used, directing users toenv._.fileandenv._.path. Removal is scheduled for 2027.4.0. #9205 by @risu729mise bshorthand deprecated -- Themise balias formise backendsnow emits a deprecation warning with removal scheduled for 2027.4.0. #9234 by @risu729Added
New Contributors
Full Changelog: jdx/mise@v2026.4.16...v2026.4.17
v2026.4.16: : Tera templates in inline tasks, raw_args passthrough, and runtime symlink pathsCompare Source
A feature-rich release with two new task runner capabilities, an important fix for how mise exposes tool paths in the environment, and a batch of task system improvements.
Inline table run tasks (
run = [{ task = "...", args = [...] }]) now support Tera templates, so you can pass parsed usage arguments into sub-task calls. A newraw_argsoption lets proxy tasks forward all flags -- including--help-- directly to the underlying command without mise intercepting them. On the tooling side, fuzzy version requests likepython = "3.14"now put the stable runtime symlink on PATH instead of the resolved patch directory, so virtualenvs and other tools that cache interpreter paths survive patch upgrades.Highlights
argsandenvin table-stylerunentries can now use{{usage.*}}variables, connecting usage-parsed arguments to sub-task invocations.raw_argsfor proxy tasks -- Tasks that wrap tools with their own CLI (Djangomanage.py, Next.js, argparse scripts) can setraw_args = trueso mise never intercepts--helpor rewrites flags..../installs/python/3.14/bin) rather than the concrete patch directory, so downstream tools that cache paths are not broken by patch upgrades.[tasks.my-script]block inmise.tomlnow overlays env, description, dir, and other metadata onto a same-named file task instead of being silently dropped.Added
Tera template support for inline table run tasks --
argsandenvvalues inrun = [{ task = "greet", args = ["{{usage.name}}"] }]are now rendered through the Tera engine, allowing usage-parsed arguments and environment variables to flow into sub-task calls. #9079 by @iamkrootraw_argstask option -- Setraw_args = trueon a task definition (TOML or file header) to skip mise's argument parsing entirely. All arguments, including--helpand-h, are forwarded verbatim to the underlying command. Additionally,mise run task -- --helpnow bypasses the usage parser even withoutraw_args, restoring the documented escape hatch. #9118 by @jdx.perl-versionsupport for perl -- The perl registry entry now recognizes.perl-versionfiles for both auto-detection and idiomatic version file reading (whenidiomatic_version_file_enable_toolsincludes"perl"), matching the pattern used by plenv. #9102 by @ergofriendRegistry: ibmcloud -- IBM Cloud CLI is now available via
mise use ibmcloud. #9139 by @dnweRegistry: rush -- rush, a cross-platform tool for executing jobs in parallel (similar to GNU parallel), is now available via
mise use rush. #9146 by @jdxFixed
Runtime symlink paths for fuzzy versions -- When a fuzzy version like
python = "3.14"resolved to3.14.4, PATH used the concrete install directory (.../installs/python/3.14.4/bin). Now mise uses the stable requested-version symlink (.../installs/python/3.14/bin), so tools that cache interpreter paths (e.g. virtualenvs) survive patch upgrades without breaking. #9143 by @jdxGo subpath packages reinstalling on every upgrade -- A stale workaround in the Go backend overrode the version to "latest" for subpath packages, causing
mise upto reinstall them every time because the resolved version directory didn't match. This workaround has been removed now that proxy-based resolution handles subpath packages correctly. #9135 by @c22Missing task suggestions --
mise run <missing-task>now suggests similar task names and shows a compact table of available tasks (up to 20), making it easier to find the right name. #9141 by @jdxTask prefix colors no longer use red/yellow -- Red and yellow were removed from the task prefix color palette because they could be confused with errors and warnings. The palette now uses 16 styles: 4 base colors (blue, magenta, cyan, green) combined with 4 modifiers (regular, bold, dim, bright). #8782 by @lechuckcaptain
TOML task block merged into same-named file task -- A
[tasks.my-script]block inmise.tomlwas silently discarded when a file task with the same name existed. Now the TOML block overlays env, description, dir, aliases, depends, and other metadata onto the file task. Additionally,mise tasks ls --jsonnow reports the resolved task directory instead of null. #9147 by @jdxnpm
install_beforerespected for dist-tag resolution --mise latestand similar commands that resolve npm dist-tags now honor theinstall_beforedate filter instead of always returning the absolute latest version. #9145 by @webkazGitHub attestation verification uses full token chain -- Attestation verification was only using the
GITHUB_TOKENenvironment variable, ignoring tokens configured viacredential_command,github_tokens.toml, theghCLI, orgit credential fill. This caused unauthenticated rate-limit hits even when a valid token was configured. #9154 by @jdxTool option serialization round-trips correctly -- Comma-containing string values in tool options (e.g.
[tool_options]) no longer get split into fake extra keys during re-serialization, and empty brackets are no longer emitted when all remaining options are filtered out. #9124 by @atharvasingh7007vfox backend falls back to absolute bin path -- When a vfox plugin does not set
env_keys, mise now falls back to the absolute bin path instead of failing. #9151 by @80avinmise self-updateavailable in stub builds -- When compiled without theself_updateCargo feature, the subcommand was completely missing from the CLI. It now shows a stub message explaining the feature is unavailable. #9144 by @salim-bNew Contributors
Full Changelog: jdx/mise@v2026.4.15...v2026.4.16
v2026.4.15: : Windows path separator fix and improved GitHub token detectionCompare Source
A small release with an important Windows fix and an improved GitHub rate-limit warning. Path-list environment variables now use the correct OS-native separator on Windows, and the 403 rate-limit warning now checks all configured GitHub token sources instead of only the
GITHUB_TOKENenvironment variable.Fixed
Path-list environment variables broken on Windows -- Settings that accept colon-separated path lists (
MISE_TRUSTED_CONFIG_PATHS,MISE_IGNORED_CONFIG_PATHS,MISE_CEILING_PATHS,MISE_SHARED_INSTALL_DIRS,MISE_TASK_DISABLE_PATHS) always split on:, which conflicts with Windows drive letters (e.g.C:\foo). These settings now use the OS-native path separator (:on Unix,;on Windows) viastd::env::split_paths, matching howPATHitself is handled. #9058 by @richardthe3rdGitHub 403 warning shown even when a token is configured -- The rate-limit warning that appears on GitHub API 403 errors previously only checked the
GITHUB_TOKENenvironment variable. Users who configured a token viaghCLI,github_tokens.toml,credential_command, orgit credentialwould still see the misleading "GITHUB_TOKEN is not set" hint. The warning now checks all supported token sources and links to the GitHub tokens documentation. #9121 by @jdxAdded
New Contributors
Full Changelog: jdx/mise@v2026.4.14...v2026.4.15
v2026.4.14: : Fix GitHub attestation verification for some toolsCompare Source
A small patch release that fixes GitHub artifact attestation verification failures affecting some tools installed via the
github:backend.Fixed
github:backend that use GitHub release attestations (e.g.github:jdx/communique@0.1.9,github:jdx/fnox@1.20.0) could fail verification because the upstreamsigstore-verificationlibrary did not handle GitHub release attestation certificates whose Subject Alternative Name (SAN) URL lacked a trailing slash. The dependency has been bumped from 0.2.3 to 0.2.5, which includes the upstream fix. #9128 by @jdxFull Changelog: jdx/mise@v2026.4.13...v2026.4.14
v2026.4.13: : Remote version cache, Go install_before, and task tool objectsCompare Source
This release fixes several backend and schema edge cases, including stale GitHub/GitLab/Forgejo version caches,
go:moduleinstall_beforefiltering, vfox plugins pinned to Git commit hashes, and task-local tool options.Highlights
go:module versions now carry release timestamps, allowinginstall_beforeto filter them correctly.toolsnow accepts object syntax, matching top-level tool declarations for options like Rust targets.Added
Object syntax for task-level tools -- Task-local
toolsentries now support map/object values in addition to strings, matching top-level[tools]behavior. This allows task-specific tool options such as Rust cross-compilation targets without requiring those options globally. #9087 by @BinlogoFixed
MISE_FETCH_REMOTE_VERSIONS_CACHEignored by GitHub, GitLab, and Forgejo backends -- These backends previously hardcoded a daily API cache duration, ignoringfetch_remote_versions_cache,MISE_FETCH_REMOTE_VERSIONS_CACHE=0, andprefer_offline. They now use the shared setting, matching other backends and allowing users to bypass stale release caches. #9096 by @mcnclgo:module versions ignoredinstall_before-- The Go backend now populates version metadata with release timestamps from the module proxy andgo list -m -json, allowinginstall_beforeto filter module versions correctly instead of falling back to untimestamped candidates. #9097 by @mariusvniekerkvfox plugins pinned to Git commit hashes in
mise.toml--mise installcould fail for vfox plugins declared with Git URLs and commit hashes becauseensure_installeddid not share the same install path asmise plugin install. vfox plugin installation now reuses the plugin install logic so both flows behave consistently. #9099 by @Oyami-SrkSchema support for OS/architecture filters -- The JSON schemas now share reusable tool
osfilter definitions, including compoundos/archentries such asmacos/arm64andlinux/x64, across top-level tools and task-local tools. #9095 by @risu729Changed
rustls-webpkion the modern rustls stack, and adjusted advisory ignores for the older transitive AWS rustls dependency chain so advisory checks can pass again. #9112 by @jdxNew Contributors
Full Changelog: jdx/mise@v2026.4.12...v2026.4.13
v2026.4.12: : OS/arch filtering, task confirmation defaults, and npm supply chain improvementsCompare Source
This release adds OS/architecture compound filtering for tool configuration, lets task confirmation prompts default to "no" for destructive actions, and upgrades npm supply chain protection to use the recommended
--min-release-ageflag. It also fixes several bugs including a panic on empty config filename overrides and circular shim symlinks.Highlights
osfield now supportsos/archcompound entries like"macos/arm64"or"linux/x64", letting you restrict tools to specific platform and architecture combinations.confirmcan now default to "no", so destructive tasks require the user to explicitly opt in rather than just pressing Enter.--min-release-ageflag on npm 11.10.0+, aligning with npm's recommended approach.Added
OS/architecture compound syntax in tool filtering -- The
osfield on tool entries now acceptsos/archentries (e.g.os = ["linux", "macos/arm64"]). When an entry contains/, both the OS and architecture must match. Plain OS entries continue to match any architecture. OS aliases (darwintomacos) and arch aliases (aarch64toarm64,x86_64/amd64tox64) are normalized automatically. #9088 by @RobertDeRoseTask confirmation default -- The
confirmfield on tasks now accepts a map withmessageanddefaultkeys, allowing you to set whether the prompt defaults to "yes" or "no". This is useful for destructive tasks where you want the user to explicitly confirm. The existing string syntax continues to work and defaults to "yes" for backwards compatibility. #9089 by @roelenpm
--min-release-agefor supply chain protection -- Wheninstall_beforeis configured, mise now uses npm's--min-release-age=<days>flag for npm 11.10.0+, which is the flag npm recommends for supply chain protection. Older npm versions continue to use--before. Sub-day windows also fall back to--beforesince--min-release-ageis day-granular. #9072 by @webkazNew registry entries -- Added
openfga(#9084 by @mnm364),copilot(#9082 by @risu729), andtrzsz-go(#9083 by @ZeroAurora).Fixed
Panic on empty
MISE_OVERRIDE_CONFIG_FILENAMES-- SettingMISE_OVERRIDE_CONFIG_FILENAMES=""(e.g. to clear it for a child process) caused a panic because the empty string was injected as a config path, which resolved to the filesystem root and had no parent directory. Empty segments from empty strings, leading/trailing colons, and consecutive colons are now filtered out. #9076 by @baby-joelCircular shim symlinks when shims are on PATH -- When
mise activate --shimsput the shims directory on PATH and amiseshim existed (e.g. from havingcore:rustin the toolset after a cargo install),reshimwould create shims pointing to the mise shim instead of the real binary, including a circularmisetomisesymlink that broke all shims.doctorwould also falsely report all shims as "missing". Both now usewhich_no_shimsto resolve the real mise binary. #9071 by @kevinswiber__MISE_EXEnot exported in bash activate -- The__MISE_EXEvariable was not exported in the bash activation script, so child shells couldn't access it and themisefunction failed. Additionally, when ARGV0 was a bare name (e.g.mise) instead of an absolute path, PATH changes could break execution. The variable is now properly exported and bare names are resolved viawhich. #9081 by @fru1tworldAliased installs sharing a backend were deduplicated -- When multiple tool aliases (e.g.
iiiandiii-console) resolved to the same backend and version (e.g.github:iii-hq/iii@latest), the install scheduler collapsed them into a single job and skipped the second install. The dependency graph now keys on the configured tool name plus version, so alias-specific options likeasset_patternandbin_pathare preserved. #9093 by @jdxNew Contributors
Full Changelog: jdx/mise@v2026.4.11...v2026.4.12
v2026.4.11: : Task dependency templates and npm semver range supportCompare Source
A small release with two meaningful bug fixes: task dependency templates with
{{usage.*}}references now resolve correctly even when the task is called without arguments, andpackage.jsondevEnginesversion fields are now parsed as full npm semver ranges instead of being simplified into prefix matches.Fixed
Task dependency templates now render without arguments -- When a task declared dependencies using
{{usage.*}}templates (e.g.depends = ["child {{usage.app}}"]), those templates were only rendered if the task received explicit CLI arguments. If the usage spec defined defaults but no args were passed, the templates were left unresolved and the dependencies were silently dropped, causing the task to run with no dependencies at all. The guard now checks whether dependencies contain usage references rather than whether args are non-empty. #9062 by @MatthiasGrandlnpm semver ranges in
devEngines-- mise previously simplifiedpackage.jsondevEnginesversion fields by stripping range operators (>=,^,~) and trimming trailing.0segments to produce a prefix for fuzzy matching. This was lossy and incorrect in many cases (e.g.^20.0.1was simplified to20, matching20.0.0). mise now preserves the original range string and resolves it against available versions using proper npm semver semantics via thenodejs-semvercrate. Compound ranges (>=20 <21 || >=22), caret/tilde ranges, and wildcard segments all work correctly. #9061 by @risu729Documentation typo in Go backend -- The docs for Go build tags incorrectly showed
--tagsinstead of the correct-tagsflag. #9065 by @dolmenNew Contributors
Full Changelog: jdx/mise@v2026.4.10...v2026.4.11
v2026.4.10: : Fix spurious warnings from postinstall hooks running tasksCompare Source
A small patch release that fixes a single bug affecting tool postinstall hooks.
Fixed
postinstallhook ran a nestedmise run, the child process inherited theMISE_TOOL_VERSIONenvironment variable set during hooks.ToolsetBuilderwas incorrectly parsing this as a request to install a tool namedtoolat the given version via theMISE_<TOOL>_VERSIONconvention, producing spurious registry warnings before the task executed. mise now ignoresMISE_TOOL_VERSIONin the same way it already ignoredMISE_INSTALL_VERSION. #9050 by @risu729Full Changelog: jdx/mise@v2026.4.9...v2026.4.10
v2026.4.9: : Cross-device installs, deterministic lockfiles, and sandbox template supportCompare Source
This release fixes cross-device tool installation failures, makes lockfile provenance resolution deterministic across platforms, and adds sandbox field support to task templates. Several smaller fixes address env precedence in multi-environment setups and spurious warnings from
tools=truemodule hooks.Highlights
rename()returns a cross-device error.mise locknow resolves SLSA provenance URLs for all target platforms, not just the current host. This eliminates non-deterministic lockfile diffs when runningmise lockon different machines.deny_all,deny_read,deny_write,deny_net,deny_env,allow_read,allow_write,allow_net,allow_env), with deny fields composing restrictively and allow lists combining template and task-local values.Fixed
Cross-device tool installation -- When the downloads folder is on a different mount than the installs folder (common with Docker cache mounts or devcontainers),
rename()fails withEXDEV. mise now uses amove_filehelper that falls back to copy+remove, fixing installation of bun, deno, erlang, java, and ruby in these setups. #9032 by @bgeronDeterministic SLSA provenance in lockfiles --
mise lockpreviously only resolved full SLSA provenance URLs for the current host platform, writingprovenance = "slsa"(short form) for cross-platform entries. Now both the GitHub and Aqua backends resolve provenance URLs for all target platforms, producing byte-for-byte identical lockfiles regardless of which machine generates them. #8982 by @cameronbrillSandbox fields in task templates -- Task templates now accept sandbox configuration fields. Deny fields compose restrictively (OR with task-local settings), and allow lists combine template values with task-local values. #9046 by @risu729
Env precedence for task config -- With multiple
MISE_ENVvalues (e.g.,MISE_ENV=prod,ci),task_config.includesandtask_config.dirnow correctly respect the documented last-env-wins precedence. Previously the order was reversed, causing the wrong profile's task config to take effect. #9039 by @risu729Spurious warnings from
tools=truemodule hooks -- When a vfox backend tool triggereddependency_env(), it previously resolved alltools=trueenv modules with an incomplete PATH, causing "command not found" warnings. The dependency env now skipstools=truemodule resolution entirely. #9011 by @jdxImplicit
self_updatewith rustls features -- Building mise with--features rustlsor--features rustls-native-rootsno longer implicitly enables theself_updatefeature. Theself_update/rustlsentries in these feature lists were redundant and caused the optionalself_updatedependency to be silently pulled in. #9040 by @salim-bJSON schema completeness -- Added missing fields to the mise JSON schema: sandbox fields on tasks, legacy top-level
env_file/dotenv/env_pathshortcuts (marked deprecated), and age encryption directive options with proper nesting. #9044 by @risu729Windows
.exein release checksums -- Release builds now publish the extractedmise.exealongside the Windows.ziparchives and include it inSHASUMS256.txt, enabling SHA256 verification of the standalone binary (e.g., bymise-action). #8997 by @zeitlingergrantedregistry entry -- Updated thegrantedtool to point to the newfwdcloudsec/grantedrepository after the project moved fromcommon-fate/granted. #9033 by @risu729New Contributors
Full Changelog: jdx/mise@v2026.4.8...v2026.4.9
v2026.4.8: : Task engine stability and Go subpath version resolutionCompare Source
This release brings significant stability improvements to the task runner -- fixing hangs, deadlocks, and panics across several edge cases in task dependency graphs and parallel execution. It also overhauls Go version resolution for subpath packages by querying the module proxy directly, and adds new configuration options for sandbox environment filtering and lockfile platform targeting.
Highlights
go:github.com/foo/bar/cmd/bazthat live under a subpath of their Go module now resolve versions correctly, eliminating persistent "no latest version found" warnings.MISE_JOBS=1, panics in replacing output mode, stale source caching in dependency chains, and warnings with remote tasks.allow_envpatterns -- Sandbox env filtering now supports globs likeMYAPP_*to allow entire namespaces of environment variables.lockfile_platformssetting -- Restrict lockfile operations to only the platforms you care about, avoiding unnecessary checksum resolution.Added
Wildcard patterns in sandbox
allow_env--allow_envnow supports glob wildcards (e.g.,MYAPP_*) to pass through namespaces of environment variables in sandboxed tasks and exec. Works in both CLI flags and task config. #8974 by @jdxlockfile_platformssetting -- New setting to restrict which platforms are targeted during lockfile operations. When set,mise install,mise use, andmise lockonly resolve checksums/URLs for the configured platforms instead of all common platforms. Explicitmise lock --platformflags still override this setting. #8966 by @cameronbrillExamples rendered in
task --help--#USAGE exampledirectives in task scripts now appear in--helpoutput, thanks to an upgrade to usage-lib v3. #8890 by @baby-joelFixed
Go subpath package version resolution -- The Go backend previously used
go list -m -versionsto resolve versions, which returns an empty version list for subpath packages (e.g.,github.com/ankitpokhrel/jira-cli/cmd/jira), making it impossible to resolve "latest". mise now queries the Go module proxy ($GOPROXY) directly, generating path prefix candidates and using HTTP responses to distinguish real modules from non-module subpaths. This respects theGOPROXYenvironment variable and falls back togo listforGOPROXY=direct. #8968 by @c22Task hang when skipped task has dependents -- When a task with
sources/outputswas skipped (up-to-date), a race condition in the dependency graph could leave downstream dependents hanging indefinitely. The failed channel send now properly resets the task's "sent" state so it can be re-emitted on a new channel. #8937 by @jdxDependent task source invalidation -- When a dependency task runs because its own sources changed, downstream tasks that depend on it now also re-run, even if their own sources haven't changed. Sourceless dependencies (which always run) do not trigger this invalidation, preserving the usefulness of
sourceson dependents. #8975 by @jdxDeadlock with
MISE_JOBS=1and sub-task references -- WhenMISE_JOBS=1and a task'srunarray contains both sub-task references ({ task = "foo" }) and scripts, the parent task now temporarily releases its semaphore permit before waiting on the sub-task, preventing a classic deadlock. #8976 by @jdxPanic with parallel sub-tasks in replacing output mode -- Running parallel sub-tasks (via
tasks = [...]in run steps) withoutput = "replacing"no longer panics. Dynamically injected sub-tasks are now lazily initialized in the progress reporter map. #8986 by @jdxRemote task warning with arguments -- Remote git task files are now fetched before parsing usage specs, fixing spurious "failed to parse task file" warnings when running remote tasks with arguments. #8979 by @jdx
Tera templates in tool postinstall hooks -- Tool-level
postinstallscripts (e.g.,[tools.ripgrep] postinstall) now render Tera templates before execution, so variables like{{tools.ripgrep.path}}work correctly. #8978 by @jdxMissing env vars in tool postinstall hooks --
MISE_CONFIG_ROOTandMISE_PROJECT_ROOTare now set in tool-level postinstall hooks, matching the behavior of project-level hooks. #8977 by @jdxmise upgrade tool@versionnot updating lockfile --mise upgrade tool@versionandmise lock tool@versionnow properly update the lockfile with the specified version. When the version doesn't match the current config prefix (e.g., upgrading from"2"to3.0.1), the config is auto-bumped to match while preserving the original version precision. #8983 by @jdxBash 3.2 activation with
set -u-- The bash activation script no longer fails with__MISE_FLAGS[@​]: unbound variableon macOS's default bash 3.2 whenset -u(nounset) is enabled and no flags are set. #8988 by @jdxNew Contributors
Full Changelog: jdx/mise@v2026.4.7...v2026.4.8
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, 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.