chore(deps): update dependency jdx/mise to v2026 - #220
Open
renovate[bot] wants to merge 1 commit into
Open
renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
6 times, most recently
from
July 30, 2026 03:03
b069281 to
4210d96
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
4 times, most recently
from
August 5, 2026 03:26
7255dd3 to
18a73a9
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
3 times, most recently
from
August 12, 2026 20:16
2752ba1 to
661a5bf
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
4 times, most recently
from
August 20, 2026 23:10
6445a85 to
c5325ef
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
4 times, most recently
from
August 26, 2026 03:48
9dd559c to
fac6f2e
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
4 times, most recently
from
September 3, 2026 00:28
61548e9 to
844f10e
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
4 times, most recently
from
September 11, 2026 04:03
b504efd to
25c7628
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
6 times, most recently
from
September 18, 2026 07:31
5986910 to
e80a868
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
2 times, most recently
from
September 25, 2026 00:17
39250db to
279fd64
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
from
September 25, 2026 22:29
279fd64 to
64f8ae1
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:
Test plan: CI should pass with updated dependencies. No review required: this is an automated dependency update PR.
Release Notes
jdx/mise (jdx/mise)
v2026.9.14: : conf.d folder fragments, Stow-style dotfiles options, and mise-versions for any public GitHub repoCompare Source
A folder inside any
conf.ddirectory now loads as its own config fragment and serves as the config root for the files in it, which gives[bootstrap].config_rootsusers a direct migration path.[dotfiles]gains two GNU Stow-style options: relative symlinks anddot-<name>sources. Release metadata for any public github.com repo now comes from mise-versions, and the registry can require GitHub attestations for specific tools.Added
conf.d folder fragments. A folder in a global, system, or project
conf.ddirectory now loads as a fragment. Relative paths,{{ config_root }}, and task working directories resolve inside that folder, so a bundle can keep its files next to its config. Each folder can holdmise.toml,mise.local.toml,mise.<env>.toml, andmise.<env>.local.toml. Folders are not searched recursively, and folders whose names start with.are skipped. A folder can be a symlink. Folder fragments load after the single-file fragments in the sameconf.d(in folder-name order) and beforeconfig.toml.mise use/mise setnever write to them. #13603Compatibility: if a directory inside a
conf.dthat mise reads already contains amise.toml, that file now loads.Relative dotfile symlinks.
symlinkandsymlink-eachentries can now point at their source by a relative path, so links keep working when a home directory is mounted at a different path or moved. Turn this on for all entries withdotfiles.relative_symlinks = true(orMISE_DOTFILES_RELATIVE_SYMLINKS=1), or per entry withrelative = true/false. When you turn it on, existing absolute links are re-pointed on the next apply. Turning it off does not convert relative links back to absolute ones. This option has no effect on Windows. #13583dot_prefixfor dotfiles. Withdot_prefix = trueon asymlink-eachor directorycopyentry, any path component nameddot-<name>deploys as.<name>(for example,home/dot-config/foodeploys as~/.config/foo).excludeandmanifest = "git"still match source names. If two sources map to the same target, apply fails.mise dot addrefuses to capture intodot_prefixentries, andmise ocibuilds use the same mapping. #13585mise-versions for any public github.com repo. For
github:,aqua:, andpackslip:tools that aren't in the registry, version listing, release lookup, and attestation lookup now go through mise-versions, so they no longer use your GitHub API rate limit in the common case. Private repos still use your own token against api.github.com. #13584paranoidmode, mise checks a "no attestations" answer from the mirror against GitHub before skipping verification.url_replacementsreroutes GitHub API paths, mise skips mise-versions for that metadata.Registry-required GitHub attestations. Registry
github:backends can declareattestations_since = "<semver>". For versions at or after that boundary:mise lockrecordsgithub-attestationsprovenance.42 registry tools now set this boundary, including
aube,aqua,pixi,ty,pandoc,fnox,doppler, andsyncthing. Users who have turned offgithub_attestationsare not affected. #13586Fixed
waiting for install lock held by pid 61907). This is usually a shim auto-installing the tool. #13588http_download_timeoutis still the hard limit. #13589latest/1/1.2runtime symlinks pointing into it. #13596mise prune: no longer deletes versions pinned by another project when you run it from a directory whose.miserc.tomllists that project inignored_config_paths. The same fix applies tomise ls --prunableand the stale-version check inmise upgrade. These commands now honorignored_config_pathsonly fromMISE_IGNORED_CONFIG_PATHSand global or systemmiserc.toml. #13602mise oci build: directory[dotfiles]entries (symlink-eachand directorycopy) now honorexcludeandmanifest = "git", so the image contains the same filesmise dot applydeploys. #13591latestno longer resolves to PEP 440 developmental releases such as2026.9.16.232951.dev0, matching what pip and uv do. Local labels like1.1+gpu.dev0are still treated as stable. #13601mise use 'pypi:git+ssh://git@github.com/psf/black.git'now works. Previously, the@ingit@was read as the version separator. #13610MISE_USE_VERSIONS_HOST=0: now fetches the version list from the source instead of reusing a cached, possibly older list from the versions host. #13605ftpmirror.gnu.org) and still reject tarballs whose checksum doesn't match. This affects Unix only. Every other download still refuses HTTPS-to-HTTP redirects. #13611EISDIR: illegal operation on a directory, lstat 'C:'duringnpm:installs. #13608Changed
[bootstrap].config_rootsdeprecation warning now explains how to move each root into aconf.dfolder, either by moving it or by symlinking it. The removal date (mise 2027.3.3) is unchanged. #13598spin-frameworknow installs through aqua by default. The previous backend is still available. #13594 by @scopFull Changelog: jdx/mise@vfox-v2026.9.15...v2026.9.14
💚 Sponsor mise
mise is built and maintained by @jdx, an open source developer at entire.io, the title sponsor of his open source work.
If mise saves you or your team time, please consider becoming an individual or company sponsor. Your support funds ongoing development and helps keep mise fast, free, and independent.
v2026.9.13: : OpenTelemetry for tasks, shared daemon providers,mise backends switch, and declarative dotfile removalCompare Source
mise runcan now export OpenTelemetry traces and logs (experimental), and experimental daemon providers let several projects and worktrees share one PostgreSQL, CockroachDB, or NATS server, each with its own database or account. Lockfiles no longer switch backends on their own when the registry moves a tool: the newmise backends switchcommand does it when you ask.[dotfiles]and[bootstrap.files]can now remove files and manage permissions, andmise bootstrap unapplyremoves what a module set up. The experimentalpkgx:backend has been removed.Highlights
[daemon_providers]run long-lived servers, and projects attach to them with an isolated database or NATS account per checkout.mise lock --bumpchecks remote versions and fails when it can't, lockfiles no longer record versions that were never confirmed, and tool stubs lock into the project'smise.lock.mode = "absent",remove_emptytemplates, permissions-only entries, removal of empty directories mise created, andmise bootstrap unapplylet a config describe what should not be on a machine.Added
Tasks
OpenTelemetry export for
mise run(experimental). Each run becomes one trace, with a span per task (grouped by monorepo package) that carries its exit code and redacted args. W3CTRACEPARENTis read from the environment and passed to each task, so nestedmise runcalls and instrumented tools appear in the same trace. Nothing is exported unlessotel.enabled = trueand an OTLP endpoint is set. Offline mode disables export, and each export times out after 3s by default. A separateotel.logs = truesetting exports task stdout (INFO) and stderr (WARN) as log records linked to their spans, with redactions applied first. Withotel.logson, tasks ininterleave/quietmodes no longer get a TTY; use--rawfor tasks that need one. #13557, #13558, #13559 (built on work by @MatthiasGrandl and @zeitlinger)Daemons (experimental)
Shared server providers. Declare long-lived PostgreSQL, CockroachDB, or NATS servers in global config under
[daemon_providers]and manage them withmise daemons providers ls|start|stop|restart. Providers have their own tools, ports, and persistent data. They run in an isolated environment and are not tied to any checkout. #13534Per-checkout databases and accounts on a shared server. A project daemon with
provider = "..."gets its own database (PostgreSQL/CockroachDB) or its own NATS account with separate subjects and JetStream data. Each checkout path gets a stable name, so worktrees share the server but not the data. Give several daemons the sameresourcename to share data on purpose. Connection env vars point at the right database, and NATS gets an authenticatedNATS_URL. #13536, #13537Lockfiles and backends
mise backends switch. When the registry moves a tool to a new backend (as happened with hk and communique moving topackslip:), a tool locked to the old backend now stays there.mise installandmise lockprint a warning that points to the new command, which moves lock entries to the registry's backend at the same versions, relocks their platforms, and reinstalls. It supports--dry-run,--global, andTOOL@VERSION. If any relock fails, every lockfile it changed is restored. #13543Tool stubs lock into the project's
mise.lock.mise generate tool-stub --locknow records the stub in the nearest project lockfile (listed undertool-stubs), so installs verify the recorded checksums and--locked/MISE_LOCKED=1accept stubs. Previously the[lock]section written into the stub was never used, so checksums were never checked. #13502Install from a local archive. The
http:backend acceptsfile://URLs. It copies the archive instead of downloading it, still verifieschecksum, and works offline. #13574Checksum mismatch hints for re-uploaded GitHub assets. When a
github:oraqua:install fails a checksum check, mise asks GitHub for the asset's current digest. If that digest matches the download, the error says the maintainer probably re-uploaded the asset. The install still fails. #13512vfox
BackendUninstallhook. Backend plugins can definehooks/backend_uninstall.luato clean up outside the install directory. It runs before removal on uninstall, upgrade, and prune. If the hook errors, the install directory is kept. #13522CLI
mise searchchecks package registries. Add a prefix to search npm, crates.io, RubyGems, or NuGet (mise search npm:typescript-language,cargo:,gem:,dotnet:).--allsearches every source at once. Plain searches and shell completion still make no registry requests, andMISE_OFFLINE=1skips them. #13550mise lsby backend.-b/--backend(repeatable) filters by backend and also works with--json.--groupedprints one section per backend. #13530mise config get/set. Tab completes dotted keys, with descriptions, from the schema and from the target file.--file,--global, and--systemare respected. #13551mise --helpis now coloured on terminals (and respectsNO_COLOR), wraps at the terminal's real width, and shows the mise logo onmise/mise --helpwhen there's room. #13449url, which appears inmise tool(andmise tool <name> --url) and inmise registry --json. #13533Configuration and hooks
.miserc.local.toml. Sets per-checkout early config, such asenv = ["native"], without editing the shared.miserc.toml. At each directory level it is read before.miserc.toml. CLI flags andMISE_ENVstill take precedence. #13440backendandinstall_pathinMISE_INSTALLED_TOOLS. Postinstall hooks can now see where each tool came from and exactly where it was installed. #13421 (@garysassano)Dotfiles
Choose what a tracked directory saves.
excludeandincludelists onmode = "track"entries. Exclusions always win.include = []selects nothing. Narrowing a list does not delete the files on other machines. #13418, #13432Preview before tracking.
mise dot track --dry-runandmise dot paths --previewshow file counts, sizes, exclusions, and skipped nested repositories. Large trees get a warning. #13417mode = "absent"removes a file or symlink at the target, with support for OSvariants. Directories and special files are refused, even with--force. #13513permissionskey. Overrides the mode of copy, template, and content entries, or manages only the permissions of an existing file such as~/.ssh/config. Status, diff, and apply report and fix drift. The key is ignored on Windows. #13514remove_empty = trueon templates removes the target when the template renders empty. A file you have edited since mise last wrote it is kept unless you pass--force. #13515Empty parent directories mise created are removed along with their target on apply and unapply. This only applies inside
$HOMEand never to directories that already existed. #13518Warnings from background captures, such as credential-named files saved in plaintext, are now shown by the next
mise dotcommand ormise bootstrap. Previously they only went to the watcher logs. #13483Bootstrap
mise bootstrap unapply <ENV>...removes the files, directories, user services, and dotfile entries a module added after you deselect it. Anything another environment still declares is kept. Supports--dry-runand--force. #13441[bootstrap.files]entries. Declare onlymode/owner/groupto manage a file's metadata without taking over its contents. #13511remove_empty = trueon templated[bootstrap.files]removes the target when the template renders empty. #13510before,binds_to,part_of,conflicts,exec_start_pre,exec_start_post, andexec_stop_post.~now expands after exec prefixes such as-~/bin/check. #13526Registry
mole(#13363, @casparbreloh),reviewdog(#13562, @takumin), andnim(#13461, @elijahr).aubenow points ataubepkg/aube(#13541).Fixed
Tools, installs, and lockfiles
mise cache prunecould delete files from installed tools: it followed symlinks out of the cache into install directories and left npm cache entries half-empty. It now never follows symlinks and removes stale entries as a whole.cache_prune_age = "0s"now also turns offmise cache prune. #13424mise lock --bumpnow checks remote versions for every selector (for example"6", not onlylatest) and fails when the version list can't be fetched, where it used to exit 0 with stale versions. Packslip registry tools no longer callapi.github.comin normal use, which avoids rate-limit errors. #13544mise lockrefuses to record an aqua version that only resolved to its own request string because the version list failed to load. When such an install fails, the error now says why. #13552mise lock --globalno longer skips global tools that the project config shadows, and no longer overwrites a global pin with the project's version. #13547mise lockno longer tries to lock3.9.6~aube~<digest>-style install directory names for npm and pipx tools. #13542mise upgrade --bump tool@selectornow saves the selector to the config, asmise usedoes. #13179 (@zeitlinger)npm_execpath(such asre2) now run through aube, not mise's task runner. #13484[wrappers.cargo] command = "mbx"now install the missing provider tool before running it. #13532*_tokens.tomlare trimmed. #13488.tar.zstarchives compressed with a long window now extract. #13566.mise-binsfor registry files listed by name only (#13525), and reports only the provenance and signature checks mise actually performs (#13549).binkeeps the.exeextension. #13529brew-caskpercent-decodes artifact filenames taken from cask URLs. #13431mise self-updatefails before downloading when it can't write to the install directory. #13453Tasks
[tasks.hello]block no longer creates an empty task that hidesmise-tasks/hello.sh. It now configures the script, and dependency groups keep theirdependswhen another config layer adds metadata. #13448rununder a file task's name now replaces the script. #13458 (see Breaking Changes)Shell, CLI, and platforms
misefunction now embeds the path to the mise binary, so it keeps working in shells that copied the function but not$__MISE_EXE(for example Claude Code's Bash tool on Windows). #13491cargo install misefor Windows targets works again. #13573Dotfiles, history, and bootstrap
environmentno longer run throughcmd.exebehind a console window that killed the service when closed, and shell metacharacters in the environment are no longer rejected. The history watcher also runs without a console window. #13429, #13428mise bootstrapnow runs[history.reload]commands after its dotfiles phase writes matching files, asmise dot applydoes. #13509Security
[bootstrap.files]and[bootstrap.directories]changes run as root, mise no longer follows a symlink in the path that another user could have planted (CWE-59). Status and dry-run show these paths asunknown, and apply refuses them. Symlinks inside root-owned directories that no one else can write, such as/etcon macOS, still work. #13539, #13546Breaking Changes
pkgx:backend is removed. Entries like"pkgx:stedolan.github.io/jq"no longer resolve; switch to the registry shorthand (jq) oraqua:/github:. Lockfiles with pkgx sections still load, and those sections are dropped the next time mise writes the file. Thepkgxregistry entry for the pkgx CLI itself is unchanged. #13555mise.lockrecords a different one. Runmise backends switchto move it. #13543[tasks."hello.sh"] run = ...used to be ignored and now runs.[tasks.hello] run = ...no longer leaveshello.shavailable as a separate task. To keep both, give the inline command its own name. #13458mise generate tool-stub --lockneeds a project config above the stub. It writes to that project'smise.lockand no longer pins the stub'sversion. Any old[lock]section is ignored and removed. Older mise releases droptool-stubsfrommise.lock. #13502include/excludeneed current mise on every machine. Upgrade every machine that shares the dotfiles setup before usingincludelists. New checkpoints use schema version 2, which older clients can't roll back. #13432[bootstrap.directories]removals always run as root, so a path that crosses a symlink in a user-writable directory is now refused, even under$HOME. Declare the resolved path instead. #13546New Contributors
Full Changelog: jdx/mise@v2026.9.12...v2026.9.13
💚 Sponsor mise
mise is built and maintained by @jdx, an open source developer at entire.io, the title sponsor of his open source work.
If mise saves you or your team time, please consider becoming an individual or company sponsor. Your support funds ongoing development and helps keep mise fast, free, and independent.
v2026.9.12: : Tasks that require daemons, worktree-aware ports and URLs, Scoop and zypper packages, and official Docker imagesCompare Source
The experimental
[daemons]system grows substantially: tasks can declare the daemons they need,[daemon_groups]selects subsets of a project's services,port = "auto"and stable<NAME>_URLhostnames let several git worktrees run the same stack side by side, and CockroachDB, NATS, and SpiceDB join the PostgreSQL and Redis presets. Outside daemons,[bootstrap.packages]gainsscoop:andzypper:managers,mise install --systemelevates with sudo only for the final publish step, official mise images are published to GHCR and Docker Hub, and a run ofbrew-caskfixes lets many more casks install unattended.Highlights
[tasks.x] daemons = [...]starts and waits for services before a task runs, daemons can run a mise task,[daemon_groups]andmise daemons start <group>select subsets, andmise daemons register,urls, andpruneround out the lifecycle. Worktrees get deterministic ports, hostnames, and optionally checkout-localdata_dirstorage without hand-assigned numbers.brew-casknow picks the right build for the host macOS release, runs installers that need sudo, applies pkg installer choices andset_ownershipsteps, upgrades pkg-only self-updating casks, and survives DMGs with license prompts or unreadable metadata;brew:resolves formula aliases such asopenssl.enterhooks fire again when a shell starts inside a project, npm tools with only pre-releases resolvelatestagain, generatedpre-pushhooks no longer append git's arguments to the task command, andmise installrefuses a lockfile entry whose download URL names a different release than itsversion. Lockfile sidecars now verify on Windows checkouts with CRLF line endings.Added
daemons: Tasks can require daemons and daemons can run tasks.
daemons = ["postgres", "nats"](ortruefor all project daemons) on a task starts them via pitchfork, waits for readiness, and then runs the task; already-running daemons are left alone, and--skip-deps/--dry-runskip them. A daemon can declaretask = "dev:core"withargsinstead ofrun, andinit = [...]runs idempotent setup commands before the long-running process on every start.mise tasks infoshows a task's daemons. (#13340)daemons:
[daemon_groups]names project-scoped subsets of daemons; groups may nest other groups and work wherever a daemon name does, including--group.mise daemons startwith no arguments now starts thedefaultgroup when a project declares one, and every project daemon otherwise. (#13347)daemons: A daemon entry with
project = "../other-checkout"and optionalnameruns a daemon defined in another project under that project's tools, environment, and data, and can be used independs.[daemons_settings] namespace = "services"gives daemons stablenamespace/nameIDs (with a per-worktree suffix unlessnamespace_per_worktree = false). Requires pitchfork 2.25.0 or later. (#13339)daemons:
port = "auto"(orport = { auto = true, base = 3000, stride = 1 }for custom daemons) keeps the base port in the primary checkout and derives a deterministic offset in each linked git worktree. Resolved ports are exported before startup asPGPORT/DATABASE_URLfor presets and<NAME>_PORTfor custom daemons, andmise daemons ls --jsonreportsportandport_auto. mise does not fall back to another port; startup diagnoses conflicts with running mise-managed daemons in other projects, and two daemons in one project claiming the same port now fail at config load. (#13342)daemons: Every daemon with a
portgets a stable hostname served by pitchfork's reverse proxy, exported as<NAME>_URL(for exampleapi.shop.localhostin the primary checkout, orapi.shop-pr-42.shop.localhostin a linked worktree). Per-daemonproxy(a label,true, orfalse) andproxy_tls("terminate"or"passthrough") control routing; thepostgresandredispresets opt out.mise daemons urlslists hostnames, ports, proxy modes, and status. Setproxy = falseon custom daemons that do not speak HTTP. (#13368)daemons: CockroachDB (
preset = "cockroachdb"), NATS ("nats"), and SpiceDB ("spicedb") presets install the tool, initialize data, wait for readiness, and exportDATABASE_URL,NATS_URL,SPICEDB_ENDPOINT, andSPICEDB_PRESHARED_KEY. Presets now support named-port overrides such asports.http_port = 8081and typedoptions. Unix-only; NATS and SpiceDB readiness checks needcurl. (#13346)daemons:
mise daemons registerinstalls missing tools, validates the daemon graph, and registers pitchfork configuration without starting anything, so a fresh checkout can start on its first hostname request. (#13399)daemons:
mise daemons prunefinds daemon state left behind by deleted projects and worktrees, shows paths and sizes, and removes it after confirmation (--dry-runpreviews,--yesconfirms ordinary cases).mise daemons ls --jsonaddsroot,state_dir,data_size, anddata_size_human. (#13338)daemons:
data_dir = ".data/postgres"keeps a preset's persistent data inside the checkout (relative to the project root; absolute and~/paths also work), so each worktree gets its own database. Changing the path does not move existing data. (#13408)bootstrap: A
scoopmanager for Windows."scoop:extras/vscode" = "latest"adds the bucket if missing, pinned versions install viaapp@version,state = "absent"uninstalls, and--updateopts in toscoop update. Only user-scope installs are managed; entries are skipped on other platforms. (#13324)bootstrap: A
zyppermanager for openSUSE and SUSE Linux Enterprise, supporting status, install,name=versionpins (including downgrades), upgrade, and removal, with retries when zypper asks for a package-manager restart. (#13335, @m407)bootstrap:
process_typeon[bootstrap.macos.launchd.agents.*]maps to launchd'sProcessType(Background,Standard,Adaptive,Interactive); misspellings are rejected at config time instead of being silently ignored by launchd. (#13402, @waynehoover)install:
mise install --systemon Unix downloads, verifies, and unpacks as the invoking user, then uses sudo only to publish into the system install and shim directories. Supports relocatable tools fromaqua,github,gitlab,forgejo,http, ands3without a tool-levelpostinstall;system_packages.sudo = falsedisables elevation. (#13384)docker: Official release images at
ghcr.io/jdx/miseandjdxcode/miseforlinux/amd64andlinux/arm64, built from the minisign-verified release binaries. Tags2026.9.12,2026.9, andlatestare a scratch image forCOPY --from=;*-debiananddebianare a Debian slim base withcurlandgit. (#13413)config:
unixis accepted as anosselector in[tools],[bootstrap.packages],[doctor.checks], and[dotfiles]variants, matching every non-Windows platform. A concrete OS variant still wins over aunixone. (#13395)go: With
goinidiomatic_version_file_enable_tools, thetoolchainline of an activego.workselects the Go version and, as with thegocommand, membergo.modfiles are ignored in workspace mode.GOWORK(auto,off, or an absolute path) is honored. (#13337)bazel:
.bazelversionis an idiomatic version file forbazelwhen enabled; only concrete releases are read, solatest,last_green,8.x, and commit hashes select nothing rather than failing. (#13336)tasks: File-task
#USAGE include file="..."paths may be relative to the task file or use environment variables such as$MISE_CONFIG_ROOT,$MISE_TASK_DIR, and$MISE_PROJECT_ROOT, so shared flagsets no longer need absolute paths. (#13372)dotfiles:
mise dot applynow runs matching[history.reload]commands for the targets it actually wrote, once each after all writes;--dry-runand no-op applies run none. (#13414)registry: Added
codegraph(aqua:colbymchenry/codegraph). (#13355, @3w36zj6)Fixed
enterhook again; a regression in 2026.9.x had limited it tocdinto the project. (#13383)@deepseek-ai/dsh) is no longer reported missing aftermise use npm:...@latest;latestfalls back to the newest installed pre-release when no stable version is installed. (#13390)npm:tool no longer fail withfailed to acquire project lock: Permission denied. (#13379)mise generate git-pre-commithooks pass only the message file ("$1") forcommit-msg,prepare-commit-msg,applypatch-msg, andsendemail-validate, and no arguments for other hooks, so apre-pushtask no longer runsnpm test origin <url>. Existing hooks change when regenerated. (#13377)mise installfails before downloading when a locked platform URL provably names a different release than the entry'sversion(for example after a tool bumpedversioninmise.lockwithout refreshing the platform block, or a release dropped a platform).mise lockstill repairs the entry. (#13401).mise/locks/verify on Windows checkouts where git rewrote them to CRLF, digests recorded from CRLF bytes by older versions keep working and heal on the next ordinary install, and a relocated sidecar is pinned to the bytes actually written. Repositories can drop.mise/locks/** -textworkarounds. (#13398, #13403, #13407)variationsentry Homebrew publishes for the host macOS release instead of always the newest release's build (Raycast on Sequoia now gets 1.104.x, not the Tahoe-only 2.x), and reportsnot available for this platformfor null variations. (#13376)sudo: true(such aslogi-options+) run through mise's sudo path, and$HOMEBREW_PREFIX/$APPDIRplaceholders in installer paths and arguments are expanded. (#13380)choices(microsoft-outlook,microsoft-teams) install viainstaller -applyChoiceChangesXML; casks whose flight steps useset_ownership(parsec) install; andmise bootstrap packages upgradehandles self-updating casks that install only from a.pkg(tailscale-app,karabiner-elements) by comparingpkgutilreceipt versions. (#13385, #13386, #13387)staged_path, unblocking casks such as AeroSpace. (#13369, @soodoh)hdiutil'sAgree Y/N?prompt, and DMGs with unreadable root metadata such as.Trashes(for examplemysqlworkbench) extract instead of failing withPermission denied. Applies tobrew-cask,macos-app, and aqua DMG downloads. (#13353, @hisaac; #13378)openssl->openssl@3,act_runner->gitea-runner) resolve forbrew:packages and tap formula dependencies instead of failing with a 404; mise warns to use the canonical name sostatuscan track it. (#13382)winget:Git.Gitandwinget:git.git) that disagree onstateorversionare rejected with both names, instead of converging differently per machine. Entries kept apart byosorenvselectors are not compared. (#13334)raw.githubusercontent.com, so private Homebrew taps resolve. (#13345, @waynehoover){{ version }}inplatforms.<target>.urlis rendered with the resolved version for the GitHub, GitLab, and Forgejo backends, so versioned source archives can followlatest. (#13359, @casparbreloh)No versions found;latestresolves directly through the module proxy orgo list, and release dates are fetched only for the newest versions.minimum_release_agestays exact by dating individual undated candidates on demand. (#13362, #13364)mise tasks validaterecognizes child monorepo task references such asdepends = ["//crates/gui:dev"]independs,depends_post,wait_for, and structuredrun. (#13373, @nettlesh)ready_cmdandhealth_cmdprobes run in the owning project's mise environment, so a supervisor shared by several worktrees no longer probes one checkout with another'sAPI_PORT. (#13396)mise dot editopens tracked files (mode = "track") in place and inlinecontententries in their declaring config, instead of failing withNo such file or directory; it warns when editing a tracked symlink whose destination history does not capture. (#13332)0700~/.claudeholding a trackedsettings.jsonis recreated private on a new machine rather than0755. (#13412)mise dot origin setandmise dot syncnow names the commands for each way out. (#13411)Documentation
runscript. (#13388)Breaking Changes
latesttag:ghcr.io/jdx/mise:latestandjdxcode/mise:latestare now the scratch image (static binary and CA certificates, no shell). CI and dev-container users should switch to thedebiantag and install their tools explicitly; the previous source-built image remains under the unsupporteddevtag. (#13413)versiondisagrees with a platform URL now failmise installinstead of silently installing the wrong release. Runmise lockto regenerate the entry. (#13401)mise generate git-pre-commit, non-message hooks no longer receive git's arguments. To keep them, edit the hook to use"$@"and declare the arguments withusage. (#13377)stateorversionare rejected; delete one entry. (#13334)mise daemons startwith no arguments starts only thedefaultgroup when one is declared; a project with two daemons resolving to the same port fails to load; custom daemons with aportnow export<NAME>_PORTand<NAME>_URL, so setproxy = falseon non-HTTP daemons. (#13347, #13342, #13368)New Contributors
Full Changelog: jdx/mise@v2026.9.11...v2026.9.12
💚 Sponsor mise
mise is built and maintained by @jdx, an open source developer at entire.io, the title sponsor of his open source work.
If mise saves you or your team time, please consider becoming an individual or company sponsor. Your support funds ongoing development and helps keep mise fast, free, and independent.
v2026.9.11: : macos-app bootstrap packages, task template inheritance for flags and file tasks, and Swift on Linux fixesCompare Source
A new
macos-appbootstrap manager installs.appbundles from a pinned URL and checksum when no Homebrew cask exists, task templates now composeusageflags and can be extended from file tasks, and Swift on Linux picks its distro build from swift.org's release index instead of a hard-coded map that 404'd on arm64 and on newer Fedora, Amazon Linux, and Arch hosts. Install failures also become far more actionable: errors name theminimum_release_agecutoff that hid every version, the child's last stderr line, or the shared libraries a Swift toolchain cannot load.Highlights
"macos-app:<name>"entries in[bootstrap.packages]download, checksum-verify, and install a.appinto/Applicationsusing mise's existing cask pipeline, with stricter ownership rules for apps already at the target.extendsa template now inherits the template'susageflags alongside its own, file tasks can write#MISE extends="...", and a template'svarscan read the values the extending task supplies.Added
bootstrap: The
macos-apppackage manager installs a macOS.appbundle from a vendor or internal download.version,url,sha256, andartifactare all required ("latest"is rejected because mise cannot discover releases behind a plain URL);{{version}}is interpolated intourl, so a release bump is a two-field edit. Only.dmgand.ziparchives containing an app bundle are supported, state is kept in mise's state directory rather than Homebrew's Caskroom, and an app already at the destination that this entry does not own is refused unlessadopt = trueand the contents match.mise bootstrap packages upgradecannot discover new versions for these entries, andprune --manager macos-appis unsupported. Preferbrew-caskwherever a cask exists. (#13279)tasks: A task that names a template with
extendsand declares its ownusagenow gets the template's flags too, listed first in--help. Previously the task's spec replaced the template's entirely, so shared flags had to be copied into every task. Workspace-root task defaults still only fill inusagewhen the task has none. A flag declared in both places is listed twice; declare each flag in one place, or use usage flagsets for replacements. (#13310)tasks: File tasks (including remote HTTP and
git::scripts) can use#MISE extends="<template>"in their header to inherit tools, env, description, aliases, and other fields from a task template; previously the field was warned about and ignored. A task whose command is a script file no longer picks up a template'srun. (#13307)swift: When a Linux install fails its
swift --versioncheck, mise runslddover the toolchain and lists every unresolved shared library (for examplelibform.so.6, libncurses.so.6, libpanel.so.6on an Arch-family host running a ubi9 build), with the tool'sinstall_envapplied so anLD_LIBRARY_PATHremedy is not misreported.docs/lang/swift.mddocuments the workaround. (#13319)Fixed
<platform>-<arch>download directory. (#13293, fixes #13291)ID_LIKEconsulted (Linux Mint gets an Ubuntu build)Configuration
📅 Schedule: (in timezone America/Los_Angeles)
🚦 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.