Update dependency jdx/mise to v2026.4.28#294
Merged
Merged
Conversation
00eeccf to
f8f4413
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:
v2026.4.3→v2026.4.28Release Notes
jdx/mise (jdx/mise)
v2026.4.28: : Remote tasks pinned by commit SHACompare Source
A small patch release: remote tasks pinned to a commit SHA no longer panic, and the Fedora COPR packaging pipeline picks up Dockerfile fixes again.
Fixed
(task) Remote tasks referenced by commit SHA (a
git::source with?ref=<40-char hex>) no longer crash mise withwe map by name only and have no object-id in refspecfromgix(#9473) by @jdx.gix-refspecparses any 40- or 64-char hex string as anObjectIdrefspec, butgix::clone::fetch::util::find_custom_refnameonly handles name-based matches andexpect()s on the result, so passing a bare SHA toprepare_clone.with_ref_name()triggered a hard process panic on every cache miss.Git::clonenow detects SHA-shaped refs via alooks_like_shaheuristic, skips both thewith_ref_name()andgit clone -bpaths (neither accepts bare SHAs), drops--depth 1since shallow clones may not contain the requested object, and checks out the SHA after the clone via the existing CLI-backed update. Named branches and tags continue to use the existing fast paths. Closes #9472.(copr) The
copr-publishworkflow no longer pins a staleghcr.io/jdx/mise:coprimage digest, anddocker.ymlnow rebuilds the:coprimage wheneverpackaging/copr/Dockerfilechanges onmain(#9451) by @bestagi. Previously the workflow kept hittingModuleNotFoundError: No module named 'rich'even after #9421 switchedcopr-clitodnf install, because the hardcoded digest still pointed at the old pip-installed image.New Contributors
Full Changelog: jdx/mise@v2026.4.27...v2026.4.28
v2026.4.27: : npm install args, smarter watch, and a macOS shim recursion fixCompare Source
A focused release: more control over how npm-backed tools get installed, smarter
mise watchthat follows task dependencies, and a fix for a nasty macOS shim recursion that could lock up a shell duringmise up --bump.Added
(backend) New
npm_args,pnpm_args,bun_args, andaube_argstool options on the npm backend (#9109) by @risu729. Each one is forwarded to the matching package manager when it's the activesettings.npm.package_manager, mirroring thepipxbackend's style. The args are also recorded in the lockfile and at install time:(env) External vfox environment plugins now get
ctx.config_rootin theirMiseEnv/MisePathhooks (#9465) by @hisaac. This matches what built-in directives like_.filealready see, so plugins (e.g.mise-xcode) can resolve user-supplied relative paths against the project root regardless of the shell's cwd.watch_filesreturned from a plugin are now also absolutized againstconfig_rootinstead ofcurrent_dir().(task)
mise watchnow follows the task graph and watches the sources of each chosen task's dependencies as well as its own (#9437) by @43081j. Pass--skip-deps(or setskip_deps) to restore the previous "task sources only" behavior. Explicit--globoverrides still win.(release)
scripts/gen-aqua-changelog.shnow diffs the previous tag'sregistry.yamlagainst the current one and emitsNew Packages/Updated Packagessections in the release PR, instead of dumping the aqua-registry release tags rolled into the release (#9471) by @jdx. This restores the pre-#9043 behavior for the merged-registry world.Fixed
(backend) When
_list_remote_versionsreturned an empty list (invalid module path, throttling, etc.) the empty result was cached as if it were authoritative, poisoning both the on-disk cache file and the in-memoryOnceCellfor up to an hour (#9444) by @c22. The cache is now cleared in both places when the list comes back empty, so the next call re-fetches.(shims) Fixed an infinite shim recursion on macOS reported in #9462 where
mise up --bumpagainst npm packages would loopmise -> npm shim -> mise -> npm shim -> ...and sometimes crash the session (#9468) by @jdx. The trigger was a case-mismatched$HOMEinPATH(/Users/Olfway/...vs./Users/olfway/...) — the shims-stripping inBackend::dependency_envcompared byte-equal, so on case-insensitive APFS/HFS+ volumes it was a no-op andnpmre-resolved to the mise shim. A newfile::paths_eqdoes case-insensitive compares on macOS/Windows and byte-equal on Linux, and is now used everywhere mise asks "is this PATH entry the shims directory?" — includingpath_env_without_shims,which_no_shims,PathEnvpartitioning,cli::execprogram resolution, and the doctor'sshims_on_pathcheck (which had been silently reportingnofor affected users).(task) Under
deny_env = trueon Linux, every env var was being stripped from the child process — including thePATH/HOME/USER/SHELL/TERM/LANGthatfilter_envand the docs say should pass through (#9467) by @jdx, fixing #9466.apply_sandbox()was callingCommand::env_clear()after the task executor populated explicit envs via.envs(filtered_env), wiping both. The Linux branch now snapshots the explicit envs before clearing and re-applies them; macOS already did this. A newpath_testtask ine2e/sandbox/test_sandbox_taskguards against regressions.New Contributors
Full Changelog: jdx/mise@v2026.4.26...v2026.4.27
v2026.4.25: : Sharper task tooling and lockfile fixesCompare Source
A patch release focused on smoothing rough edges in tasks (sandbox path resolution, dependency templates, a new
--name-onlylisting) and fixing a handful of upgrade/ls-remotepitfalls.Added
(task) New
--name-onlyflag onmise tasks ls(andmise tasks) prints one task name per line — no headers, no padding, no description column (#9435) by @jdx. It composes with--all,--global/--local,--hidden,--sort/--sort-order, and uses a broken-pipe-tolerant writer so dropping it intofzfJust Works:mise run "$(mise tasks ls --name-only --all | fzf)"Conflicts with
--json,--extended, and--usage.Fixed
(task) Dependency templates can now branch on
usagevalues inside Tera statement tags, not just output expressions, and boolean/array flags are passed through with their real types instead of stringified (#9424) by @jdx. So this finally does what it looks like:(task) Tasks that define
usagewith subcommands but no top-level args/flags now correctly populateusage.cmdfor dependency templates, fixing a regression from #9424 where the early-return path skipped subcommand handling (#9431) by @jdx. The fix also de-duplicatesmake_usage_ctxbetween the script parser and the dep renderer so they can't drift again.(task) Sandbox
allow_read/allow_writepaths declared on a task are now resolved against the task's effective working directory rather than the shell'spwd(#9428) by @jdx. Previously,dir = "../bar"plusallow_read = ["."]opened up the caller's directory while the task itself ran inbar/and got blocked. CLI overrides likemise run --allow-read=…still resolve against shell cwd. Closes #9423.(lockfile)
mise upgradenow updates the global lockfile (~/.config/mise/mise.lock) when bumping a fuzzy version such aslatest(#9442) by @jdx. The grouping pass was excluding global config files entirely, and fuzzy requests could re-resolve through the stale lockfile entry mid-update. Newly installed versions are now overlaid before lockfiles are rewritten, so a globaldummy = "latest"upgrading from1.0.0to2.0.0actually pins2.0.0.(aqua) When
list_releases_including_prereleasesreturned an empty list (paginated/cached edge case, throttling, or a repo that genuinely has no releases), aqua fell back tolist_tagsand pulled in every git tag in the repo (#9443) by @jdx. For monorepos that tag sub-crates, that meant ripgrep'sgrep-regex-0.1.1and friends ended up in the sharedmise-versionssnapshot, soripgrep = "latest"resolved to a tag with no matching release asset and 404'd on install. Empty release lists now propagate as empty version lists; packages that legitimately use tags as their version source still opt in viaversion_source = "github_tag". Theremote_versionscache filename is also reverted toremote_versions.msgpack.zto avoid needlessly invalidating existing caches —VersionInfoalready deserializes forward-compatibly. (Server-sidemise-versionssnapshots will need to be regenerated with this fix.)(ls-remote)
mise ls-remote --jsonno longer emits"rolling":false,"prerelease":falseon every entry (#9439) by @jdx. Dummy output is now[{"version":"1.0.0"},{"version":"1.1.0"},{"version":"2.0.0"}]. Backends that legitimately set either flag (rust nightly/beta/stable, github/aqua pre-releases) still emit the field; cached entries written by older builds continue to deserialize.(docs) The docs site no longer flickers between light/dark themes on initial load (#9427) by @vhespanha. VitePress's anti-flicker inline script is now marked
data-cfasync="false"so Cloudflare's Rocket Loader stops deferring it. Fixes #9393.(Dockerfile)
copr-cliis now installed viadnfinstead of pip, fixingModuleNotFoundError: No module named 'rich'in the publish-copr workflow (#9421) by @bestagi.New Contributors
Full Changelog: jdx/mise@v2026.4.24...v2026.4.25
v2026.4.24: : Resilient downloads and global pre-release opt-inCompare Source
A small release that hardens HTTP downloads against flaky networks and adds a global way to surface pre-release versions, plus refreshed intro messaging.
Added
(ls-remote) New global
prereleasessetting (MISE_PRERELEASES=1) and a--prereleaseflag formise ls-remote(#9415) by @jdx. Acts asprerelease = trueapplied to every tool, so GitHub releases flaggedprerelease: trueshow up inls-remote,latestresolves against the full list, and fuzzy queries like1.2can match pre-release tags. Currently honored by thegithub:andaqua:backends; draft releases are still excluded.Fixed
(http) HTTP requests now retry transient failures with a jittered backoff schedule (~200ms / 1s / 4s / 15s, then capped at 15s) and the default
http_retriesis bumped from0to3(#9414) by @jdx. Retries fire on 5xx, 408, 429, and network-layer errors (connect refused, timeout, mid-stream body drops); deterministic 4xx responses like 404 fail fast without retry. Downloads wrap the full request + body so a chunk failure mid-stream restarts from byte 0 instead of failing the install. Each retry logs awarn!immediately so flaky infrastructure surfaces in real time, and the same logic now powers vfox plugin downloads (which honorMISE_HTTP_RETRIEStoo). SetMISE_HTTP_RETRIES=0to opt out. Thehttp→httpsfallback now only triggers on connection-level errors, not on HTTP status errors.(release)
scripts/publish-s3.shnow purges themise.en.devCloudflare zone (alongsidejdx.devandmise.run) after each S3 publish (#9416) by @jdx. Becauseinstall.shis uploaded withimmutablecache-control, missing the purge could leave one zone serving the previous release'sinstall.shnext to a new release'sinstall.sh.minisig.Documentation
Full Changelog: jdx/mise@v2026.4.23...v2026.4.24
v2026.4.23: : Pre-releases, libc preference, and a Node musl fixCompare Source
A patch release that adds a global
libcpreference and pre-release opt-in forgithub:/aqua:backends, alongside fixes for Node musl downloads, read-only system installs, andmise prunenetwork hangs.Added
(backend) Per-tool
prerelease = trueopt-in for thegithub:andaqua:backends (#9329) by @jakedgy. When set, GitHub releases flaggedprerelease: trueshow up inmise ls-remote,latestresolves against the full list including pre-releases, and fuzzy queries like1.2can match pre-release tags. Default behavior is unchanged; draft releases are still excluded.(backend) Global
libcsetting for selecting Linux precompiled binary variants (#9404) by @jdx. Acceptsmusl,glibc, orgnuand threads throughPlatform::current()/PlatformTargetso generic GitHub asset matching, aqua registry replacements (e.g.unknown-linux-gnu↔unknown-linux-musl), Bun, Python precompiled builds, Node, and vfoxenvTypeall honor the preference.export MISE_LIBC=muslFixed
(install) Stop rewriting healthy runtime symlinks (#9410) by @jdx. The rebuild path was unconditionally
remove_all+ recreating everylatest -> X.Y.Zsymlink, which became a hard failure under the common Docker pattern where root populates/usr/local/share/mise/installs/at build time and a non-root user runsmise installat runtime. Healthy symlinks now take a no-op path; the read-only system dir is no longer touched. If a write is genuinely required and can't happen, the install fails loudly instead of silently leaving a stalelatest.(node) Route musl tarball URLs to
unofficial-builds.nodejs.org(#9409) by @jdx. After #9404 Node started appending-muslto filenames but kept routing throughnodejs.org/dist/(which doesn't host them), causing 404s and lockfiles where the URL had a-muslsuffix while the checksum was still pinned to the glibc tarball. The tarball URL and matchingSHASUMS256.txtnow come from the same host, and a customnode.mirror_urlstill passes through unchanged. Lockfile merging is also hardened to drop stalechecksum/size/url_apiwhen URLs disagree.(prune) Skip remote version resolution for tracked configs (#9406) by @jdx.
mise prunewas hitting npm, the Go proxy, and the GitHub API to resolve tracked-config tool versions, which could hang on slow or failing registries. Since prune only protects installed versions from deletion, anofflineflag is now threaded throughResolveOptionsfor prune.mise upgradeis unchanged and still queries fresh remote data. Closes #9405.(backend) Allow unresolved
latestopt-in (#9401) by @jdx.latestnow falls back to an unresolved selector only when a backend's unfiltered remote version list is empty and the backend opts in viaunresolved_latest_version().pipxopts in for git-backed requests; backends that require concrete versions continue to fail rather than create literallatest/installs. Ifminimum_release_agefilters all candidates out, mise still reports no matching version.(schema) Allow array values in tool
additionalProperties(#9400) by @JP-Ellis. Configs likerust = { version = "1.77", components = ["rustfmt", "clippy"] }are no longer flagged as invalid by linters such as tombi.Registry
rumdl(#9397) by @scopllmfit(#9412) by @jylenhofNew Contributors
Full Changelog: jdx/mise@v2026.4.22...v2026.4.23
v2026.4.22: : Repaired latest resolution and clearer deps outputCompare Source
A focused patch release that repairs two
@latestregressions, givesmise depsclearer per-provider output labels, and renames theinstall_beforesetting tominimum_release_ageto match the wider ecosystem.Highlights
@latestresolution is fixed for Go modules that only publish pseudo-versions, and staleinstalls/<tool>/latest/directories are now repaired automatically.install_beforesetting has been renamed tominimum_release_age; the old name keeps working as a deprecated alias.mise depsoutput is now labeled by provider (e.g.[deps.codegen]) instead of repeating the raw command.Fixed
(backend) Two separate
@latestissues are repaired in #9383 by @jdx:@latestviago list -m -json <module>@​latest, so modules that only publish pseudo-versions still install a concrete version.installs/<tool>/latest/directories are now repaired generically by the runtime symlink migration. The migration reruns under a new marker and refreshes onlyinstall_stateafter rewriting directories, so the current process picks up the repaired layout without rebuilding the backend map (which previously broke config aliases). Numeric partial-version dirs such asinstalls/<tool>/25/are left alone, and real direct-URLlatestinstalls (e.g. UBI URL installs) are preserved when there is no concrete version to replace them with.(task)
mise depsoutput is now labeled with a stable[deps.<provider>]prefix on stdout/stderr (and in the progress message) instead of using the rawruncommand as the prefix, making repeated output from commands likepip install -r requirements.txtmuch easier to follow.mise deps add/removecontinues to run unprefixed. (#9385) by @jdxChanged
install_beforesetting and per-tool option have been renamed tominimum_release_age, matching pnpm's terminology. The oldinstall_beforename is preserved as a hidden, deprecated alias — global settings are migrated at load time, per-tool options resolve through the new key, and the JSON schema marks the old name as deprecated. Precedence is unchanged:--before> per-tool > global. (#9384) by @jdxAdded
Documentation
Cargo.tomlat build time), linking to the GitHub releases page. The build emits a warning if the version cannot be parsed instead of silently falling back. (#9388, #9389) by @jdxAqua Registry
Updated aqua-registry from v4.498.0 to v4.499.0.
Sponsor mise
mise is built by @jdx under en.dev — an independent studio making developer tooling (mise, aube, and more). Development is funded by sponsors. If mise saves you or your team time, please consider sponsoring at en.dev.
Full Changelog: jdx/mise@v2026.4.21...v2026.4.22
v2026.4.21: : untrust command and prune lockfile fixesCompare Source
A patch release that adds a new
mise untrustcommand, teachesmise pruneto skip tools tracked in lockfiles, and tightens GitHub asset auto-detection.Highlights
mise untrustcommand revokes trust on a config file.mise prunenow respects tracked lockfiles and no longer removes tools listed in them.--securityflag onmise registryincludes security info in JSON output.Added
--securityflag onmise registryincludes security info in JSON output. (#9364) by @jdxmise untrustcommand. (#9370) by @jdxFixed
mise prunenow respects tracked lockfiles. (#9373) by @jdxDocumentation
Registry
flux-operator-mcpaqua path. (#9357) by @monotekopenshift-install. (#9372) by @jdxgo-sdk. (#9371) by @jdxNew Contributors
Sponsor mise
mise is built by @jdx under en.dev — an independent studio making developer tooling (mise, aube, and more). Development is funded by sponsors. If mise saves you or your team time, please consider sponsoring at en.dev.
Full Changelog: jdx/mise@v2026.4.20...v2026.4.21
v2026.4.20: : Lockfile cleanup and path: fixesCompare Source
A focused patch release that cleans up two long-standing lockfile and path-resolution bugs, makes GitHub attestation verification tolerant of regex-based aqua registry URLs, and reworks how the aqua registry is baked into mise.
Highlights
mise lock tool@latestnow writes a concrete version and heals lockfiles already poisoned withversion = "latest".path:tool versions with relative paths resolve correctly against the config root.registry.yaml, pinned by tag.Fixed
(config) Relative
path:tool versions are now resolved at parse time against the config's root directory (or CWD for CLI args), with~/expansion and leading./stripped. Previously, a value likepath:./packages/logrwas joined withinstalls_pathat install time and produced a bogus directory such as~/.local/share/mise/installs/logr/./packages/logr. (#9320) by @jdx(lock)
mise lockhandling of@latesthas been overhauled (#9321 by @jdx):mise lock tool@latestnow resolveslatestto the newest installed version instead of writing the literal string"latest"into the lockfile.mise lockno longer produces duplicate[[tools.<name>]]entries when the config usestool = "latest".version = "latest"are cleaned up in a singlemise lockrun.GitHub artifact attestation verification now works when the aqua registry entry uses a regex in the workflow URL, unblocking installs such as
aqua:updatecli/updatecli. (#9327) by @monotekChanged
registry.yaml, pinned by tag viacrates/aqua-registry/aqua-registry/metadata.json. The build script generates a canonical package-id map plus an alias lookup table, so runtime lookups only parse the selected package YAML. The pinned tag is now visible inmise doctor. (#9043) by @risu729Added
grafana-kubernetes-plugin. (#9300) by @monotekDocumentation
http/https, dismissals persist per-id inlocalStorage, and the banner height is kept in sync with--vp-layout-top-heightvia aResizeObserver. Theexpiresfield is respected so banners automatically hide after a given date. (#9326, #9330, #9334) by @jdxAqua Registry
Updated aqua-registry from v4.492.0 to v4.498.0, which includes:
Sponsor mise
mise is built by @jdx under en.dev — an independent studio making developer tooling (mise, aube, and more). Development is funded by sponsors.
If mise saves you or your team time, please consider sponsoring at en.dev. Individual and company sponsorships keep mise fast, free, and independent.
Full Changelog: jdx/mise@v2026.4.19...v2026.4.20
v2026.4.19: : OCI images, aqua templates, and more resilient installsCompare Source
This release adds a new way to package environments as OCI images, improves backend flexibility with aqua variable templating, and tightens several authentication and concurrency edge cases that were causing friction in real workflows.
The biggest addition is
misesupport for building OCI images directly frommise.toml, with per-tool layering to make image rebuilds more efficient. Alongside that, aqua-backed tools can now use templated variables, which should make more registries and package definitions work cleanly without custom glue. On the reliability side, fixes in conda, GitHub auth handling, vfox token usage, and interactive CLI cancellation should make automation and authenticated installs behave more predictably.Highlights
mise.tomlwith per-tool image layers.gsudo,kiro-cli,llama.cpp, and Flux operator tooling.Changes
Features
mise.tomlwith per-tool layers by @jdx in #9273gsudo(Sudo for Windows) to registry by @jdx in #9281Bug Fixes
self-updatecommand by @jdx in #9259Registry
flux-operator&flux-operator-mcpby @tiyee in #8852kiro-cliby @jdx in #9274llama.cpp(github:ggml-org/llama.cpp) by @jdx in #9282💚 Sponsor mise
mise is built by @jdx under en.dev — an independent studio making developer tooling (mise, aube, and more). Development is funded by sponsors.
If mise saves you or your team time, please consider sponsoring at en.dev. Individual and company sponsorships keep mise fast, free, and independent.
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"), mConfiguration
📅 Schedule: (UTC)
* 0-3 1 * *)🚦 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.
This PR was generated by Mend Renovate. View the repository job log.