test(deps): update dependency mise to v2026.9.13 (main) - #7491
Conversation
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (3)
Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review. 📝 WalkthroughWalkthroughThe Docker test image definitions now install mise version 2026.9.13 instead of 2026.9.12. ChangesDocker test images
Estimated code review effort: 1 (Trivial) | ~3 minutes Change: Other Merge Risk: ⚪ Minimal · up to The updated mise release provides the verified Linux assets required by the test images, so no actionable merge risk is evident. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
This PR contains the following updates:
2026.9.12→2026.9.13Release Notes
jdx/mise (mise)
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.
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Enabled.
♻ 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.