Skip to content

Commit 89191b4

Browse files
chore(deps): update dependency jdx/mise to v2026.8.15 (#2436)
> ℹ️ **Note** > > This PR body was truncated due to platform limits. This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [jdx/mise](https://redirect.github.com/jdx/mise) | uses-with | minor | `v2026.8.11` → `v2026.9.7` | --- ### Release Notes <details> <summary>jdx/mise (jdx/mise)</summary> ### [`v2026.9.7`](https://redirect.github.com/jdx/mise/releases/tag/v2026.9.7): : Lockfile revision 2 with npm and Python dependency graphs, dotfile conflict inspection [Compare Source](https://redirect.github.com/jdx/mise/compare/v2026.9.6...v2026.9.7) This release introduces `mise.lock` revision 2, which records complete transitive dependency graphs for npm tools (via embedded aube) and Python tools (via uv) in native sidecar files, and adds `mise bootstrap dotfiles conflicts` for inspecting dotfile sync conflicts before resolving them. It also lets dotfile templates consume bootstrap secrets, stops `minimum_release_age` from rejecting versions already committed to a lockfile, and closes a security gap in `history.describe_command`. ##### Added - **lock:** Lockfile revision 2 records the full dependency graph of npm tools installed by embedded aube and of `pypi:` tools installed by uv, then replays it with a strict frozen install so two projects on the same top-level version can still receive their own reviewed transitive graph. Graphs live in native sidecar files (`uv.lock` / `aube-lock.yaml` plus a manifest) under `.mise/locks/<backend-tool>/<version>/`, referenced from `mise.lock` by relative path and SHA-256 digest, so the lockfile itself stays small. Commit the sidecar directory with `mise.lock`. New lockfiles use revision 2; existing revision 0 and 1 files keep their format until you run `mise lock --upgrade`. `mise lock --bump <tool>` refreshes a tool's transitive graph even when its top-level version is unchanged, ordinary `mise install` validates and accepts hand-edited sidecars, and `mise install --locked` rejects digest mismatches until you run `mise lock`. Python graph locking requires uv 0.12.10 or newer and published wheels for the target platform; Git sources, standalone pipx installs, and free-form `uvx_args`/`pipx_args` stay version-only. ([#&#8203;13131](https://redirect.github.com/jdx/mise/pull/13131), [#&#8203;13146](https://redirect.github.com/jdx/mise/pull/13146) by [@&#8203;jdx](https://redirect.github.com/jdx)) ```sh mise lock --upgrade # move an existing lockfile to revision 2 and resolve graphs mise install --locked # replay the recorded graphs mise lock --bump pypi:black # refresh Black's dependencies without changing its version ``` - **pypi:** `pypi:` is now the preferred name for the Python CLI backend; `pipx:` remains fully supported as an alias with no warnings, and settings accept both `pypi.*` and `pipx.*` names. The two spellings are distinct tool identities (`pypi-black` vs `pipx-black` install directories and lock entries), so switching spelling creates a new installation. ([#&#8203;13146](https://redirect.github.com/jdx/mise/pull/13146) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **bootstrap:** `mise bootstrap dotfiles conflicts [PATH...]` shows a read-only comparison of the saved local and fetched remote versions of a conflicted dotfile so you can decide between `--take-remote` and `--keep-local` with full context. The default output is a unified diff including file-mode changes; `--difftool` opens the configured Git `diff.tool` (falling back to `merge.tool`) and `--tool <name>` picks one explicitly. Encrypted contents are decrypted only into private temporary files, and inspection never modifies either side or marks the conflict resolved. Bootstrap secrets are also now resolved from the same composed config maps as dotfile discovery, so root-scoped dotfile templates can use secrets declared by their bootstrap root. ([#&#8203;13144](https://redirect.github.com/jdx/mise/pull/13144) by [@&#8203;jdx](https://redirect.github.com/jdx)) ```sh mise bootstrap dotfiles conflicts ~/.config/mise/config.toml mise bootstrap dotfiles conflicts --difftool ~/.config/mise/config.toml ``` - **dotfiles:** Dotfile templates (`mode = "template"`) can reference `[bootstrap.secrets]` values with `{{ secret(name="...") }}`, matching managed bootstrap file templates. Dotfiles commands that render templates (`add`, `apply`, `diff`, `edit`, `status`, `unapply`) accept `--prompt-secrets`; without an available value, rendering fails closed. A full `mise bootstrap` run preflights dotfile templates before making changes, `mise bootstrap status` reports secrets used only by dotfiles, and textual diffs redact resolved secret values. ([#&#8203;13140](https://redirect.github.com/jdx/mise/pull/13140) by [@&#8203;jdx](https://redirect.github.com/jdx)) ```toml [bootstrap.secrets] api_token = "EXAMPLE_API_TOKEN" [dotfiles."~/.config/example/credentials"] source = "dotfiles/credentials.tmpl" mode = "template" ``` ##### Fixed - **lock:** Installing from a committed `mise.lock` no longer fails when the locked release is younger than `minimum_release_age`. The cutoff still applies when resolving unlocked fuzzy requests and when generating or bumping a lockfile, and `npm:`/`pypi:` still forward it to unpinned transitive dependencies, but a reviewed lock entry now reproduces immediately in CI instead of waiting for the release to cool. ([#&#8203;13128](https://redirect.github.com/jdx/mise/pull/13128) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **config:** A `.python-version` (or other idiomatic version file) containing `system` selects the system interpreter without printing the mise-specific `@system` deprecation warning, matching the existing `.tool-versions` exception. Explicit `python@system` requests from mise configuration or command arguments still warn. ([#&#8203;13132](https://redirect.github.com/jdx/mise/pull/13132) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **npm:** Embedded aube is updated to 2.2.16, fixing the Bun checksum install regression and ensuring local npm tarballs keep their manifest package name. ([#&#8203;13145](https://redirect.github.com/jdx/mise/pull/13145) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **registry:** The `mc` shorthand uses `aqua:minio/mc` again now that the upstream Aqua registry entry is restored, with `asdf:mise-plugins/mise-mc` kept as the fallback. ([#&#8203;13124](https://redirect.github.com/jdx/mise/pull/13124) by [@&#8203;jdx](https://redirect.github.com/jdx)) ##### Security - **history:** `history.describe_command` is now global-only. Previously an implicitly trusted project could set it and have a later dotfiles history checkpoint execute the project-controlled command with unencrypted tracked-file diffs. The setting is honored only from system/global configuration or `MISE_HISTORY_DESCRIBE_COMMAND`; project values are ignored with a warning. ([#&#8203;13134](https://redirect.github.com/jdx/mise/pull/13134) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **oci:** `mise oci build` now renders dotfile templates with a restricted engine: `secret()` is rejected and the `env` context, `get_env()`, `exec()`, and `read_file()` are unavailable, so ambient credentials cannot be baked into a publishable image layer. ([#&#8203;13140](https://redirect.github.com/jdx/mise/pull/13140) by [@&#8203;jdx](https://redirect.github.com/jdx)) ##### Breaking Changes - **Lockfile revision 2 is not readable by older mise versions.** Newly created lockfiles use revision 2, and existing files switch only when you run `mise lock --upgrade`. Upgrade collaborators and CI to this release before committing a revision 2 `mise.lock`, and commit the `.mise/locks/` (or `.config/mise/locks/`) sidecar directory alongside it. Revision 2 `--locked` installs fail if a recorded graph is missing or its digest does not match. If you gitignore `mise.local.lock`, also ignore its matching sidecar subdirectory (for example `.mise/locks/mise.local/`). - **`history.describe_command` in project configuration is ignored.** Move it to `~/.config/mise/config.toml` or set `MISE_HISTORY_DESCRIBE_COMMAND`. - **`mise oci build` dotfile templates** can no longer call `secret()`, `get_env()`, `exec()`, or `read_file()` or read the `env` context. **Full Changelog**: <https://github.com/jdx/mise/compare/v2026.9.6...v2026.9.7> ##### 💚 Sponsor mise mise is built and maintained by [@&#8203;jdx](https://redirect.github.com/jdx), an open source developer at [**entire.io**](https://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](https://jdx.dev/sponsors.html). Your support funds ongoing development and helps keep mise fast, free, and independent. ### [`v2026.9.6`](https://redirect.github.com/jdx/mise/releases/tag/v2026.9.6): : Project daemons, mise doctor project, and vfox backend tool discovery [Compare Source](https://redirect.github.com/jdx/mise/compare/vfox-v2026.9.5...v2026.9.6) This release adds experimental project daemons backed by pitchfork, a `mise doctor project` command for project-declared diagnostic checks, and tool discovery from vfox backend plugins in `mise search`. It also changes the HTTP backend's default install layout so uninstall and prune reclaim disk space, speeds up warm `lockfile_mode = "generate"` installs and repeated OCI builds, and fixes a batch of nushell, monorepo, lockfile, brew, and Windows bootstrap issues. #### Highlights - **Services next to tools:** `[daemons]` declares background processes and PostgreSQL/Redis presets in `mise.toml`, managed through `mise daemons` and optionally started when you enter the project. `[doctor.checks.<name>]` lets projects declare their own environment probes for `mise doctor project`. - **Discovery and output:** `mise search`, shell completion, and interactive `mise use` now include tools published by installed vfox backend plugins, and `settings.truncate` / `--no-truncate` disable terminal-width truncation (automatically when a coding agent is detected). - **Storage and speed:** HTTP tools now extract into their own install directory by default (opt back into deduplication with `shared_extraction = true`), warm generate-mode installs skip needless lockfile rewrites, and OCI builds share a local tool-layer cache. #### Added - **daemons:** New experimental `[daemons]` section and `mise daemons` command family (`start`, `stop`, `restart`, `ls`, `status`, `logs`, `tui`) manage project background processes with pitchfork. PostgreSQL and Redis presets install the database as a tool (participating in lockfiles), supply connection environment variables and readiness checks, and keep project data across stop/start. Daemons with `auto = ["start", "stop"]` start when entering the project from an activated Bash, Zsh, or Fish shell and are released when the last shell session leaves. Requires `experimental = true` and pitchfork 2.25.0 or later; database presets are Unix-only and PostgreSQL uses loopback trust authentication intended for local development. ([#&#8203;13085](https://redirect.github.com/jdx/mise/pull/13085) by [@&#8203;jdx](https://redirect.github.com/jdx)) ```toml [settings] experimental = true [daemons] postgres = "18" redis = "8" [daemons.web] run = "npm run dev" port = 3000 auto = ["start", "stop"] ``` - **doctor:** `mise doctor project` runs checks declared in `[doctor.checks.<name>]` with the project's environment and installed tools, reporting PASS/FAIL/error/skipped per check in text or `--json`. Checks support `description`, `hint`, `timeout` (default `10s`), `dir`, `shell`, and `os` selectors, run concurrently under the `jobs` limit, and exit nonzero when any check fails. Ordinary `mise doctor` does not run them, and hints are never executed. A follow-up aligned `dir` resolution with task conventions (config root for project configs including `~/mise.toml`, `~/` expansion), fixed head-of-line blocking when one probe hangs, and kept `nohup mise doctor project` alive on SIGHUP. ([#&#8203;13062](https://redirect.github.com/jdx/mise/pull/13062), [#&#8203;13089](https://redirect.github.com/jdx/mise/pull/13089) by [@&#8203;jdx](https://redirect.github.com/jdx)) ```toml [doctor.checks.openssl] description = "OpenSSL development files are discoverable" run = "pkg-config --exists openssl" hint = "Run `mise bootstrap packages apply` to install the declared build dependencies." timeout = "5s" os = ["linux", "macos"] ``` - **vfox:** Tools provided by installed vfox backend plugins now appear in `mise search`, shell completion, and interactive `mise use`, namespaced as `<plugin>:<tool>`. Plugins can implement `BackendListTools` for a finite catalog and/or `BackendSearchTools` for query-driven discovery in large ecosystems; a prefixed query like `npm:eslint` is routed only to that plugin. Results are cached, slow plugins fall back to stale cache, and existing plugins need no changes. `mise registry` remains registry-only. ([#&#8203;13111](https://redirect.github.com/jdx/mise/pull/13111) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **cli:** New `settings.truncate` (and `MISE_TRUNCATE`, default `true`) controls terminal-width shortening of table cells and task metadata. `mise ls`, `mise config ls`, and `mise bootstrap dotfiles status` gain `--truncate` / `--no-truncate`, and output is kept complete automatically when a known coding agent is detected. ([#&#8203;13112](https://redirect.github.com/jdx/mise/pull/13112) by [@&#8203;jdx](https://redirect.github.com/jdx)) ```sh mise bootstrap dotfiles status --no-truncate ``` - **bootstrap:** `[bootstrap.macos.dock]` gains `apps`, an ordered list of pinned application paths. Status compares identity and order (ignoring Dock-added metadata), apply adds, removes, and reorders application tiles while preserving other tiles and `persistent-others`, and an empty list removes all application tiles. Paths must be absolute or home-relative `.app` bundles. ([#&#8203;13075](https://redirect.github.com/jdx/mise/pull/13075) by [@&#8203;azohra](https://redirect.github.com/azohra)) ```toml [bootstrap.macos.dock] apps = [ "/System/Applications/Utilities/Terminal.app", "/Applications/Firefox.app", ] ``` - **bootstrap:** `mise bootstrap packages where brew:<formula>` prints an installed formula's stable `opt` root (for example `/opt/homebrew/opt/unzip`), so scripts can put keg-only executables on PATH without hardcoding the Homebrew prefix or Cellar version. Missing installs exit nonzero with empty stdout. ([#&#8203;13083](https://redirect.github.com/jdx/mise/pull/13083) by [@&#8203;himkt](https://redirect.github.com/himkt)) - **dotfiles:** Destination `variants` can omit `source` when every variant sets a `target`; the entry key is then resolved as a relative path under `settings.dotfiles.root` instead of next to `mise.toml`. Parent traversal is rejected. ([#&#8203;13087](https://redirect.github.com/jdx/mise/pull/13087) by [@&#8203;jdx](https://redirect.github.com/jdx)) ```toml [dotfiles."vscode/settings.json"] mode = "copy" variants = [ { os = "macos", target = "~/Library/Application Support/Code/User/settings.json" }, { os = "linux", target = "~/.config/Code/User/settings.json" }, ] ``` - **fmt:** `mise fmt` now sorts lists whose order has no meaning: `redactions` lexically, and task `sources`/`outputs`, `task_templates` sources/outputs, `task_config.global_inputs`, and `input_groups` by reach (`@group:` references, then globs, then literal paths). Lists containing `!` exclusions, entries starting with template syntax, or comments are left untouched, and precedence-sensitive lists such as `env_file`, `tools.*`, `includes`, and `depends` are never sorted. ([#&#8203;13058](https://redirect.github.com/jdx/mise/pull/13058) by [@&#8203;jrandolf](https://redirect.github.com/jrandolf)) - **oci:** `mise oci build` gains `--no-cache` to bypass the new local tool-layer cache; entries live under each tool's cache directory and are removed by `mise cache clear TOOL`. ([#&#8203;13056](https://redirect.github.com/jdx/mise/pull/13056) by [@&#8203;jdx](https://redirect.github.com/jdx)) #### Changed - **http:** New `http:` installations extract directly into their own install directory, so `mise uninstall` and `mise prune` now remove their files instead of leaving payloads in `$MISE_DATA_DIR/http-tarballs/`. Set `shared_extraction = true` on a tool to keep the previous deduplicated symlink layout. Existing symlinked installs keep working; `mise install --force <tool>` migrates one to independent files without disturbing other installs that share the content. Legacy `http-tarballs` entries are not reclaimed automatically. Shared raw and compressed binary caches now also include the executable filename in their key, so differently named tools no longer reuse the wrong filename. ([#&#8203;13059](https://redirect.github.com/jdx/mise/pull/13059) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **oci:** `mise oci push --no-cache` now bypasses both the remote registry cache and the local tool-layer cache. ([#&#8203;13056](https://redirect.github.com/jdx/mise/pull/13056) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **registry:** `postgres`, `redis`, and `mongodb` now prefer `conda:` backends, installing prebuilt conda-forge binaries in seconds instead of compiling through vfox; vfox and asdf remain as fallbacks. `conda:redis-server` covers Linux and macOS only. ([#&#8203;13061](https://redirect.github.com/jdx/mise/pull/13061) by [@&#8203;jdx](https://redirect.github.com/jdx)) #### Performance - **lockfile:** Warm `mise install` runs in `lockfile_mode = "generate"` skip scheduling work for tools whose artifact metadata is already reusable, and skip rebuilding, serializing, and staging the lockfile entirely when nothing was installed and the on-disk lock already matches (preserving comments in the file). Explicit `mise lock`, forced provenance verification, upgrades, and new platforms still regenerate. ([#&#8203;13101](https://redirect.github.com/jdx/mise/pull/13101), [#&#8203;13103](https://redirect.github.com/jdx/mise/pull/13103) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **oci:** `mise oci push --from BASE` no longer downloads base layers when the base and target live in the same repository, and `oci build`, `oci run`, and `oci push` share a local cache of packaged tool layers keyed on file contents, so repeated builds with overlapping tools skip tar and gzip work. ([#&#8203;13055](https://redirect.github.com/jdx/mise/pull/13055), [#&#8203;13056](https://redirect.github.com/jdx/mise/pull/13056) by [@&#8203;jdx](https://redirect.github.com/jdx)) #### Fixed - **nushell:** `mise activate nu` no longer throws `env_variable_not_found` on every prompt or `cd` when a variable to hide is absent from the current scope; `hide-env` is now wrapped in `try`, matching the no-op behavior of other shells. ([#&#8203;13071](https://redirect.github.com/jdx/mise/pull/13071) by [@&#8203;i-api](https://redirect.github.com/i-api)) - **task:** Task-level tools are now auto-installed for tasks referenced from `run` entries, including names rendered at runtime, right before they execute; `--skip-tools` is honored and install failures are reported as task failures without blocking siblings. ([#&#8203;13086](https://redirect.github.com/jdx/mise/pull/13086) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **config:** `[monorepo]` settings are now merged across same-directory config layers (base plus `mise.<env>.toml` overlays): omitted fields are inherited, an overlay's `config_roots` replaces the base list, and `monorepo_root = false` in an overlay disables the root and its descendant trust. ([#&#8203;13084](https://redirect.github.com/jdx/mise/pull/13084) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **lockfile:** Runtime tool requests such as `mise which hk --tool hk@latest` now use the lockfile belonging to the config that effectively defines the tool, instead of merging project and global pins and reporting a false "multiple resolutions" ambiguity or selecting an overridden pin. `mise which --tool` warns when a lower-precedence config has a matching pin the effective config lacks. ([#&#8203;13042](https://redirect.github.com/jdx/mise/pull/13042) by [@&#8203;nettlesh](https://redirect.github.com/nettlesh)) - **lockfile:** Complete lockfile generation for Packslip tools skips platforms with no published artifact while still writing supported targets, and a verified Packslip signer may now replace legacy `github-attestations` metadata on upgrade instead of being rejected as a provenance downgrade. ([#&#8203;13102](https://redirect.github.com/jdx/mise/pull/13102), [#&#8203;13105](https://redirect.github.com/jdx/mise/pull/13105) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **upgrade:** `mise upgrade` now detects updates between letter-suffixed versions such as tmux `3.7b` to `3.7c`; `sub-N` aliases keep resolving numeric components as before. ([#&#8203;13119](https://redirect.github.com/jdx/mise/pull/13119) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **brew:** Formulae that are keg-only solely because macOS ships them (such as `brew:zip` and `brew:unzip`) are now linked into `<prefix>/bin` on Linux, matching Homebrew. Kegs installed by earlier mise versions stay unlinked until the next `mise bootstrap packages upgrade` or a reinstall. ([#&#8203;13108](https://redirect.github.com/jdx/mise/pull/13108) by [@&#8203;lil-lon](https://redirect.github.com/lil-lon)) - **brew-cask:** Tap casks with `preflight_steps` or `postflight_steps` no longer fail during metadata extraction; declarative `run` steps are captured as structured steps and executed by mise, with support for `must_succeed = false`. ([#&#8203;13060](https://redirect.github.com/jdx/mise/pull/13060) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **bootstrap:** `mise bootstrap remote` on Windows now finds `ssh.exe` and `tar.exe` on PATH instead of failing with `required command 'ssh' not found`. ([#&#8203;13117](https://redirect.github.com/jdx/mise/pull/13117) by [@&#8203;JamBalaya56562](https://redirect.github.com/JamBalaya56562)) - **bootstrap:** macOS defaults status explains type mismatches, showing for example `2 (real; expected integer)` instead of two identical-looking values marked `differs`. ([#&#8203;13096](https://redirect.github.com/jdx/mise/pull/13096) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **dotfiles:** `mise bootstrap dotfiles track` honors the global `yes` setting for confirmations, and warns when tracking a symlink whose resolved source is not itself tracked, suggesting the command to enroll it. ([#&#8203;13072](https://redirect.github.com/jdx/mise/pull/13072) by [@&#8203;nettlesh](https://redirect.github.com/nettlesh), [#&#8203;13095](https://redirect.github.com/jdx/mise/pull/13095) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **schema:** The JSON schema now models Git directory `manifest` dotfile entries, restricting explicit modes to `copy` or `symlink-each` and rejecting combinations with inline content or file-edit fields. ([#&#8203;12741](https://redirect.github.com/jdx/mise/pull/12741) by [@&#8203;risu729](https://redirect.github.com/risu729)) - **asdf:** `mise asdf install` and `mise asdf reshim` no longer re-enter the full CLI dispatch, avoiding stack overflows on small-stack Linux environments; `asdf install` now follows the same implicit config trust as `mise install`. Bash completions are regenerated for the updated usage-rs word-break handling. ([#&#8203;13114](https://redirect.github.com/jdx/mise/pull/13114) by [@&#8203;jdx](https://redirect.github.com/jdx)) #### Registry - Added `mpv` (`conda:mpv`, Linux and macOS) ([#&#8203;13049](https://redirect.github.com/jdx/mise/pull/13049) by [@&#8203;i-api](https://redirect.github.com/i-api)), `agent-browser` (`aqua:vercel-labs/agent-browser`) ([#&#8203;13088](https://redirect.github.com/jdx/mise/pull/13088) by [@&#8203;3w36zj6](https://redirect.github.com/3w36zj6)), and `himalaya` (`github:pimalaya/himalaya`) ([#&#8203;13091](https://redirect.github.com/jdx/mise/pull/13091) by [@&#8203;i-api](https://redirect.github.com/i-api)). - `editorconfig-checker` installs again after 4.0.1 renamed its assets and executable; the shorthand now uses the GitHub backend. ([#&#8203;13098](https://redirect.github.com/jdx/mise/pull/13098) by [@&#8203;jdx](https://redirect.github.com/jdx)) - `mc` installs from MinIO's GitHub releases instead of the retired Aqua download URL that returned HTTP 410. ([#&#8203;13113](https://redirect.github.com/jdx/mise/pull/13113) by [@&#8203;jdx](https://redirect.github.com/jdx)) #### Documentation - The docs landing page gains interactive diagrams for project environment switching, bootstrap machine resources, tool configuration precedence, artifact cache execution, and tracked dotfile synchronization. ([#&#8203;13065](https://redirect.github.com/jdx/mise/pull/13065), [#&#8203;13066](https://redirect.github.com/jdx/mise/pull/13066), [#&#8203;13067](https://redirect.github.com/jdx/mise/pull/13067), [#&#8203;13068](https://redirect.github.com/jdx/mise/pull/13068), [#&#8203;13069](https://redirect.github.com/jdx/mise/pull/13069) by [@&#8203;jdx](https://redirect.github.com/jdx)) - The task-running guide is reorganized around finding and running tasks, passing arguments, then controlling execution. ([#&#8203;13077](https://redirect.github.com/jdx/mise/pull/13077) by [@&#8203;azohra](https://redirect.github.com/azohra)) #### New Contributors - [@&#8203;lil-lon](https://redirect.github.com/lil-lon) made their first contribution in [#&#8203;13108](https://redirect.github.com/jdx/mise/pull/13108) **Full Changelog**: <https://github.com/jdx/mise/compare/v2026.9.5...v2026.9.6> #### 💚 Sponsor mise mise is built and maintained by [@&#8203;jdx](https://redirect.github.com/jdx), an open source developer at [**entire.io**](https://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](https://jdx.dev/sponsors.html). Your support funds ongoing development and helps keep mise fast, free, and independent. ### [`v2026.9.5`](https://redirect.github.com/jdx/mise/releases/tag/v2026.9.5): : macOS defaults, per-platform dotfiles, and complete lockfiles [Compare Source](https://redirect.github.com/jdx/mise/compare/vfox-v2026.9.4...vfox-v2026.9.5) This release deepens macOS bootstrap support with current-host and nested defaults, lets dotfiles and tasks adapt to the platform and to parsed arguments, and adds an opt-in trial of complete lockfile generation. It also carries a batch of install progress, self-update, brew-cask, and sandbox fixes. #### Added - **bootstrap:** New `[[bootstrap.macos.defaults_entries]]` blocks let you set macOS preferences explicitly with `domain`, `key`, `value`, and an optional `host` (`any` by default, or `current`), covering preferences normally written via `defaults -currentHost` while keeping the existing `[bootstrap.macos.defaults]` shorthand. Entries also accept an optional `path` to patch a nested dictionary value without replacing its siblings, preserving property-list types and creating missing parents. ([#&#8203;12983](https://redirect.github.com/jdx/mise/pull/12983) by [@&#8203;azohra](https://redirect.github.com/azohra), [#&#8203;12984](https://redirect.github.com/jdx/mise/pull/12984) by [@&#8203;azohra](https://redirect.github.com/azohra)) ```toml [[bootstrap.macos.defaults_entries]] domain = "com.apple.dock" key = "autohide" value = true host = "current" ``` - **bootstrap:** More friendly macOS preferences: Finder folder sorting and default cloud save location, Dock autohide delay and timing (integers or floats), and keyboard automatic capitalization and spelling correction, all using snake\_case names consistent with the existing sections. ([#&#8203;13032](https://redirect.github.com/jdx/mise/pull/13032) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **bootstrap:** `[bootstrap.files]` and `[bootstrap.directories]` entries gain `phase = "pre-packages"` so repository definitions, apt sources, and signing keys can be applied before package installation instead of only afterward. Existing declarations default to `"post-packages"`. ([#&#8203;13052](https://redirect.github.com/jdx/mise/pull/13052) by [@&#8203;jdx](https://redirect.github.com/jdx)) ```toml [bootstrap.files."/etc/apt/sources.list.d/vendor.sources"] source = "./files/vendor.sources" phase = "pre-packages" ``` - **bootstrap:** Ordinary `[bootstrap.files]` templates can now reference resolved `[vars]` values, alongside the existing `config_root`, `target`, and `secret()` helpers. ([#&#8203;13033](https://redirect.github.com/jdx/mise/pull/13033) by [@&#8203;nettlesh](https://redirect.github.com/nettlesh)) - **dotfiles:** A single dotfiles source can deploy to different destinations per operating system, architecture, or mise profile using `variants` with an optional `target`. This works for `copy`, `symlink`, `symlink-each`, and `template` modes. ([#&#8203;13050](https://redirect.github.com/jdx/mise/pull/13050) by [@&#8203;jdx](https://redirect.github.com/jdx)) ```toml [dotfiles.settings] source = "dotfiles/vscode/settings.json" mode = "copy" variants = [ { os = "macos", target = "~/Library/Application Support/Code/User/settings.json" }, { os = "linux", target = "~/.config/Code/User/settings.json" }, ] ``` - **task:** Task `sources` and `outputs` can now use `{{usage.*}}` templates, resolved per invocation from parsed arguments and flags before freshness and artifact-cache checks run, so different argument values track freshness independently. ([#&#8203;13051](https://redirect.github.com/jdx/mise/pull/13051) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **brew-cask:** Casks with structured `set_permissions` preflight/postflight steps now install correctly (for example `brew-cask:blender`), running an unprivileged `chmod` over resolved staged or appdir paths instead of failing with an unsupported step-type error. ([#&#8203;13043](https://redirect.github.com/jdx/mise/pull/13043) by [@&#8203;azohra](https://redirect.github.com/azohra)) - **lock:** Opt-in trial of complete lockfile generation via `lockfile_mode = "generate"` (or `MISE_LOCKFILE_MODE=generate`). The default remains incremental `merge`. Generate mode rebuilds lockfiles from current requests while treating the previous file as an immutable baseline, reusing unchanged artifacts and publishing through staged atomic writes so failures or concurrent edits do not clobber a good lockfile. This mode records only cryptographically verified provenance per target platform; `provenance_verified` is no longer treated as a trust signal. ([#&#8203;13031](https://redirect.github.com/jdx/mise/pull/13031) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **self-update:** New `disable_update_warning` setting (`MISE_DISABLE_UPDATE_WARNING`) suppresses "newer mise available" notices in `mise version`, `mise --version`, and `mise doctor`. Explicit self-update and automatic updates are unaffected. ([#&#8203;13028](https://redirect.github.com/jdx/mise/pull/13028) by [@&#8203;jdx](https://redirect.github.com/jdx)) #### Fixed - **install:** Interactive installs no longer leave a permanent line for every resolved, skipped, or already-installed tool; live progress shows what is happening while the final summary lists what changed (for example `installed 1 tool in 1.1s: dummy@1.0.0`). `mise upgrade` no longer duplicates its old to new version list. ([#&#8203;13030](https://redirect.github.com/jdx/mise/pull/13030) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **install:** Long non-TTY installs no longer flood CI logs with a snapshot every three seconds. The heartbeat now scales to roughly 10% of elapsed time, clamped between 3 seconds and 1 minute. ([#&#8203;13036](https://redirect.github.com/jdx/mise/pull/13036) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **self-update:** On 32-bit ARM, `mise self-update` now selects the correct `linux-armv7` archive instead of requesting a missing `linux-arm` one and falling back to an ARM64 binary that failed signature verification. A missing archive now fails asset selection rather than picking the wrong architecture. ([#&#8203;13023](https://redirect.github.com/jdx/mise/pull/13023) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **self-update:** npm installs now ship the instructions file that redirects update guidance to the package manager, so they no longer advertise `mise self-update`. ([#&#8203;13028](https://redirect.github.com/jdx/mise/pull/13028) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **brew-cask:** `mise bootstrap packages upgrade` no longer replaces the bundle of a running self-updating app (for example Chrome), which could strand helper processes and blank out tabs. Such apps are skipped while running and left to update themselves. ([#&#8203;13041](https://redirect.github.com/jdx/mise/pull/13041) by [@&#8203;azohra](https://redirect.github.com/azohra)) - **brew-cask:** The cask metadata fetch error no longer includes stale advice about installing with `brew` and a broken documentation anchor; it now gives a short, accurate message. ([#&#8203;12800](https://redirect.github.com/jdx/mise/pull/12800) by [@&#8203;Marukome0743](https://redirect.github.com/Marukome0743)) - **bootstrap:** `mise bootstrap dotfiles origin set <url>` now uses the repository's own default branch when `--branch` is omitted, so repositories on `master` connect correctly instead of publishing a second root branch. A missing requested branch is now reported clearly rather than mistaken for an empty repository. ([#&#8203;13037](https://redirect.github.com/jdx/mise/pull/13037) by [@&#8203;Dhaulagiri](https://redirect.github.com/Dhaulagiri)) - **dotfiles:** History watcher locks now live alongside the history store in the state directory instead of being hashed into the cache directory, so a launchd watcher and an interactive shell using different cache directories coordinate correctly and `dotfiles status` no longer misreports `declared-not-running`. Existing watchers must be stopped and restarted with the updated binary. ([#&#8203;13038](https://redirect.github.com/jdx/mise/pull/13038) by [@&#8203;ascarter](https://redirect.github.com/ascarter)) - **sandbox:** The macOS Seatbelt profile now allows `file-read-metadata` on the ancestors of readable paths, fixing `Operation not permitted` failures when a portable Ruby resolves its own executable during third-party tap evaluation. Symlinked data directories and allow-listed paths are also handled. ([#&#8203;13039](https://redirect.github.com/jdx/mise/pull/13039) by [@&#8203;Marukome0743](https://redirect.github.com/Marukome0743)) #### Registry - Added `clipboard` ([github:Slackadays/Clipboard](https://redirect.github.com/Slackadays/Clipboard)) by [@&#8203;i-api](https://redirect.github.com/i-api) in [#&#8203;13044](https://redirect.github.com/jdx/mise/pull/13044) #### New Contributors - [@&#8203;Dhaulagiri](https://redirect.github.com/Dhaulagiri) made their first contribution in [#&#8203;13037](https://redirect.github.com/jdx/mise/pull/13037) **Full Changelog**: <https://github.com/jdx/mise/compare/v2026.9.4...v2026.9.5> #### 💚 Sponsor mise mise is built and maintained by [@&#8203;jdx](https://redirect.github.com/jdx), an open source developer at [**entire.io**](https://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](https://jdx.dev/sponsors.html). Your support funds ongoing development and helps keep mise fast, free, and independent. ### [`v2026.9.4`](https://redirect.github.com/jdx/mise/releases/tag/v2026.9.4): : Nix Bootstrap, Environment Selectors, and Man Pages [Compare Source](https://redirect.github.com/jdx/mise/compare/vfox-v2026.9.3...vfox-v2026.9.4) This release expands the bootstrap package model with Nix support and environment selectors, teaches packslip tools to ship man pages, and adds a task-scoped quiet setting. It also carries a wide batch of packslip, bootstrap, and cross-platform fixes plus a major speedup to dotfiles history rebuilds. #### Added - **bootstrap:** Nix is now a built-in `[bootstrap.packages]` manager on Linux and macOS. Declare packages with the `nix:` prefix and apply them through your normal Nix profile; the manager supports use, apply, status JSON, and targeted upgrades while leaving Nix sources, caches, trust, and profile rollback under Nix control. This also adds `mise bootstrap packages export --format nix` to emit a deterministic NixOS module from your `nix:` declarations and `packages use --no-install` to record declarations without touching package managers. ([#&#8203;13013](https://redirect.github.com/jdx/mise/pull/13013) by [@&#8203;jdx](https://redirect.github.com/jdx)) ```toml [bootstrap.packages] "nix:ripgrep" = "latest" ``` - **bootstrap:** `[bootstrap.packages]` entries gain an `env` selector (a single environment or a list), so a package is only enabled when one of its listed mise environments is active via `-E` or `MISE_ENV`. When both `os` and `env` are set, both must match. Packages for inactive environments stay declared and are protected from pruning. ([#&#8203;12956](https://redirect.github.com/jdx/mise/pull/12956) by [@&#8203;jdx](https://redirect.github.com/jdx)) ```toml [bootstrap.packages] "brew:postgresql" = { version = "latest", env = ["dev", "test"] } ``` - **packslip:** Packslip-installed tools can now ship man pages declared as static `man` resources, alongside completions and agent skills. While a tool version is active, mise prepends its man root to `MANPATH` and keeps system and caller-defined paths visible, so `man <tool>` works. Existing installs need to be reinstalled to pick up man pages. ([#&#8203;13012](https://redirect.github.com/jdx/mise/pull/13012) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **task:** New `task.quiet` setting (and `MISE_TASK_QUIET`) suppresses mise's own task messages, prefixes, and command-echo headers without hiding task output or affecting other commands. The bundled `output = "quiet"` mode is deprecated in favor of explicit output style plus this setting; removal is scheduled for 2027.9.3. ([#&#8203;12980](https://redirect.github.com/jdx/mise/pull/12980) by [@&#8203;jdx](https://redirect.github.com/jdx)) #### Fixed - **install:** A lazy tool whose `depends` target is also lazy now installs correctly on first use through a shim, `mise x`, or a task; mise installs the provider together with its still-missing configured dependencies instead of failing the preflight. ([#&#8203;12997](https://redirect.github.com/jdx/mise/pull/12997) by [@&#8203;balintant](https://redirect.github.com/balintant)) - **backend:** 32-bit ARM resolution now uses Go's canonical `arm` architecture name for Aqua (so registry replacements apply), and automatic GitHub release asset selection no longer picks a generic `source.tar.gz` when no published binary targets the host. ([#&#8203;13004](https://redirect.github.com/jdx/mise/pull/13004) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **bootstrap:** Homebrew bottles with hard-linked Mach-O executables are now signed correctly on macOS. Every hard-link alias is tracked and included in the signing list after relocation, fixing cases like fish where an aliased binary was killed with SIGKILL after a successful install. ([#&#8203;12988](https://redirect.github.com/jdx/mise/pull/12988) by [@&#8203;nettlesh](https://redirect.github.com/nettlesh)) - **packslip:** `mise lock --platform` now verifies the signed release manifest and records the correct URL, checksum, size, and signer for each requested target platform (including Windows x64), so locked installs work across platforms. ([#&#8203;13002](https://redirect.github.com/jdx/mise/pull/13002) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **packslip:** On glibc Linux, an artifact's `glibc_min` is now honored during selection: when the GNU build requires a newer glibc than the host, mise falls back to a matching static musl build if one exists. ([#&#8203;13009](https://redirect.github.com/jdx/mise/pull/13009) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **packslip:** Windows installs now link shims with the correct `.exe` filename, while Unix keeps extensionless names. ([#&#8203;13006](https://redirect.github.com/jdx/mise/pull/13006) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **packslip:** Activated man roots are now scoped to Packslip-backed tool versions, and the caller's original `MANPATH` is included in the environment-cache identity so one cached process cannot serve another caller's `MANPATH`. ([#&#8203;13016](https://redirect.github.com/jdx/mise/pull/13016) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **prune:** `mise prune` no longer exits successfully without pruning when it cannot show a confirmation prompt; it now fails with guidance to pass `--yes` or set `MISE_YES=1`. Follow-up prunes from commands like `mise unuse` still leave installs in place when nobody can answer. ([#&#8203;13003](https://redirect.github.com/jdx/mise/pull/13003) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **generate:** `mise generate tool-stub` now respects a stub's top-level `os` selector when deciding whether to write a Windows `.cmd` launcher, so a linux/macos-only stub no longer produces a launcher even with `--lock`. ([#&#8203;13008](https://redirect.github.com/jdx/mise/pull/13008) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **dotfiles:** History path filters resolve correctly when `HOME` is a symlink, so aliased, canonical, and tilde paths address the same history entry and `show latest`/`diff` no longer report a missing checkpoint. ([#&#8203;12982](https://redirect.github.com/jdx/mise/pull/12982) by [@&#8203;azohra](https://redirect.github.com/azohra)) - **brew:** The published crate now includes the tap formula and cask metadata shims, fixing `cargo install --locked mise` builds from crates.io. ([#&#8203;13001](https://redirect.github.com/jdx/mise/pull/13001) by [@&#8203;jdx](https://redirect.github.com/jdx)) #### Changed - **bootstrap:** `[bootstrap].config_roots` and the `mise bootstrap config-roots` command are now deprecated (hidden from help and removed from public docs), with removal scheduled for mise 2027.3.3. Existing configurations keep working during the compatibility window but emit a warning directing users to global or system bootstrap configuration. ([#&#8203;13010](https://redirect.github.com/jdx/mise/pull/13010) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **registry:** Added basecamp to the registry. ([#&#8203;13024](https://redirect.github.com/jdx/mise/pull/13024)) #### Performance - **history:** Dotfiles history index rebuilds are dramatically faster, reconstructing checkpoint metadata in-process with gix instead of spawning Git per checkpoint. On an 80-checkpoint, 44-file reproducer this cut a rebuild from roughly 26-28 seconds and thousands of Git processes down to under a second. Removed annotations are now correctly dropped after a rebuild, and SHA-256 history repositories are supported. ([#&#8203;13011](https://redirect.github.com/jdx/mise/pull/13011) by [@&#8203;jdx](https://redirect.github.com/jdx)) #### Deprecated - The task `output = "quiet"` mode (use `task.quiet` instead; removal in 2027.9.3) ([#&#8203;12980](https://redirect.github.com/jdx/mise/pull/12980)). - `[bootstrap].config_roots` and `mise bootstrap config-roots` (removal in mise 2027.3.3) ([#&#8203;13010](https://redirect.github.com/jdx/mise/pull/13010)). #### New Contributors - [@&#8203;balintant](https://redirect.github.com/balintant) made their first contribution in [#&#8203;12997](https://redirect.github.com/jdx/mise/pull/12997) **Full Changelog**: <https://github.com/jdx/mise/compare/v2026.9.3...v2026.9.4> #### 💚 Sponsor mise mise is built and maintained by [@&#8203;jdx](https://redirect.github.com/jdx), an open source developer at [**entire.io**](https://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](https://jdx.dev/sponsors.html). Your support funds ongoing development and helps keep mise fast, free, and independent. ### [`v2026.9.3`](https://redirect.github.com/jdx/mise/releases/tag/v2026.9.3): : Winget bootstrap, signed vfox plugins, and faster inline commands [Compare Source](https://redirect.github.com/jdx/mise/compare/vfox-v2026.9.2...vfox-v2026.9.3) This release brings Windows bootstrap into the package-manager era with WinGet support, extends the packslip signing model to vfox plugins, and speeds up simple tasks by skipping the shell on Unix. It also carries a batch of bootstrap, sandbox, and Windows ARM64 fixes. ##### Added - **bootstrap:** WinGet is now a built-in `[bootstrap.packages]` manager on Windows, so `mise bootstrap packages` can check status, install, and upgrade apps by exact package ID. It supports version pins, source refresh, and automatic source-agreement acceptance. Scoop, Chocolatey, and package removal remain future work. ([#&#8203;12928](https://redirect.github.com/jdx/mise/pull/12928) by [@&#8203;jdx](https://redirect.github.com/jdx)) ```toml [bootstrap.packages] "winget:Microsoft.PowerShell" = "latest" ``` - **vfox:** External vfox plugins can now be installed from signed packslip archives instead of a Git clone, reusing the packslip backend's release selection, signature verification, digest checks, and signer pins. This is aimed at non-registry plugins; registry defaults and embedded plugins are unchanged. ([#&#8203;12948](https://redirect.github.com/jdx/mise/pull/12948) by [@&#8203;jdx](https://redirect.github.com/jdx)) ```sh mise plugins install vfox:bfs 'packslip:mise-plugins/vfox-bfs#0.1.0' ``` - **bootstrap:** Dotfile line edits gain `position = "prepend"` to insert a managed line at the top of a file instead of appending (the default). An existing exact match is left in place, and unrelated bytes, CRLF endings, and a UTF-8 BOM are preserved. ([#&#8203;12941](https://redirect.github.com/jdx/mise/pull/12941) by [@&#8203;jdx](https://redirect.github.com/jdx)) ```toml [dotfiles] "/etc/zshrc/zdotdir" = { line = 'ZDOTDIR=$HOME/.config/zsh/', position = "prepend" } ``` - **bootstrap:** macOS bootstrap `defaults` now support nested TOML arrays and tables (for example Dock `persistent-apps`), reading and writing preferences through Core Foundation so booleans, numbers, strings, arrays, and dictionaries keep their plist types. Collections apply as whole-value replacements; datetimes and binary plist data are still skipped with a warning. ([#&#8203;12947](https://redirect.github.com/jdx/mise/pull/12947) by [@&#8203;jdx](https://redirect.github.com/jdx)) ##### Changed - **bootstrap:** Adopting global configuration or a shared dotfile-history setup repository is now spelled `mise bootstrap --adopt` (and `mise bootstrap remote --adopt`), separate from `mise bootstrap --from` for running a bootstrap project. The dotfiles, history, setup, and services guides were reorganized to lead with usable examples. The previous `--from-git` spelling still works as a hidden alias but warns and is scheduled for removal in mise 2026.10.0. ([#&#8203;12953](https://redirect.github.com/jdx/mise/pull/12953) by [@&#8203;jdx](https://redirect.github.com/jdx)) ##### Fixed - **github:** Git operations (clones, fetches, submodules) that GitHub now challenges with HTTP 401 on public repositories can authenticate using mise's existing GitHub token sources via a command-scoped `github.com` HTTPS credential helper. Tokens are kept out of command arguments and URLs, and Enterprise hosts are out of scope. ([#&#8203;12945](https://redirect.github.com/jdx/mise/pull/12945) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **config:** The default inline task shell is now `sh -o errexit -c` so shells that consume the argument right after `-c` (such as FreeBSD sh) run your command instead of trying to execute `-o`. ([#&#8203;12949](https://redirect.github.com/jdx/mise/pull/12949) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **windows:** Fixed two Windows ARM64 issues: stale command-wrapper shims (like a leftover `cargo.exe`) that caused recursive `.exe`/`.cmd` dispatch after shim-mode changes are now pruned, and Aqua ARM64 emulation candidates apply the registry's `amd64` replacement so tools like LuaLS resolve their published `win32-x64` assets. ([#&#8203;12931](https://redirect.github.com/jdx/mise/pull/12931) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **bootstrap:** Bootstrap no longer aborts on Arch when `pacman -Q` prints a file advisory for a missing package that shares its name with a directory in the current working directory (for example a `fish/` folder in a dotfiles checkout). ([#&#8203;12932](https://redirect.github.com/jdx/mise/pull/12932) by [@&#8203;nettlesh](https://redirect.github.com/nettlesh)) - **sandbox:** Read-restricted macOS Seatbelt profiles now allow metadata-only access to `/private`, fixing startup failures for load-relative binaries like Ruby 4.0.6 when run under `/private/tmp`. Directory listings and descendant reads stay denied. ([#&#8203;12940](https://redirect.github.com/jdx/mise/pull/12940) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **bootstrap:** The macOS notification helper is now built and Developer ID-signed at release time and spawned with a start handshake, so short `dotfiles sync` runs no longer race the helper and macOS accepts it. Unsigned source builds (such as Homebrew) disable notifications and warn during origin setup. ([#&#8203;12946](https://redirect.github.com/jdx/mise/pull/12946) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **vfox:** vfox install phases now flow through the active install progress reporter, mapping noisy download, checksum, attestation, and extraction lines into concise phases instead of scrolling log output. ([#&#8203;12944](https://redirect.github.com/jdx/mise/pull/12944) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **java:** The `java -version` banner shown during install verification now stays inside the interactive install progress row instead of printing to the terminal. ([#&#8203;12943](https://redirect.github.com/jdx/mise/pull/12943) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **version:** The auto-update hint from `mise version` now uses the `mise settings auto_update=true` syntax to match the rest of `mise settings`. ([#&#8203;12957](https://redirect.github.com/jdx/mise/pull/12957) by [@&#8203;jdx](https://redirect.github.com/jdx)) ##### Performance - On Unix, plain inline commands (like `node build.js`) now run directly when a conservative planner deems them safe, skipping the shell wrapper. Anything involving shell syntax, quoting, expansion, builtins, ambiguous PATH lookup, explicit shell settings, or sandboxed/audited tasks still uses the shell, and Windows is unchanged. In a microbenchmark of short commands this cut about 11% off elapsed time. ([#&#8203;12950](https://redirect.github.com/jdx/mise/pull/12950) by [@&#8203;jdx](https://redirect.github.com/jdx)) ##### Registry - Added cargo-deny, kingfisher, nushell, shellharden, sherif, and tauri-cli. ([#&#8203;12938](https://redirect.github.com/jdx/mise/pull/12938) by [@&#8203;jrandolf](https://redirect.github.com/jrandolf)) ##### Documentation - Restored the prominent project name and pronunciation on the homepage. ([#&#8203;12936](https://redirect.github.com/jdx/mise/pull/12936) by [@&#8203;jdx](https://redirect.github.com/jdx)) - Dropped the "you need Git installed" prerequisite from the install docs. ([#&#8203;12958](https://redirect.github.com/jdx/mise/pull/12958) by [@&#8203;jdx](https://redirect.github.com/jdx)) **Full Changelog**: <https://github.com/jdx/mise/compare/v2026.9.2...v2026.9.3> ##### 💚 Sponsor mise mise is built and maintained by [@&#8203;jdx](https://redirect.github.com/jdx), an open source developer at [**entire.io**](https://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](https://jdx.dev/sponsors.html). Your support funds ongoing development and helps keep mise fast, free, and independent. ### [`v2026.9.2`](https://redirect.github.com/jdx/mise/releases/tag/v2026.9.2): : Packslip Backend, SSH Relay, and Reimagined Install Progress [Compare Source](https://redirect.github.com/jdx/mise/compare/vfox-v2026.9.1...vfox-v2026.9.2) This is a large release headlined by the new stable `packslip:` backend for installing tools from a vendor's own signed release manifest, a read-only GitHub SSH relay for remote onboarding, redesigned install progress for both terminals and CI logs, and a rebuilt dotfiles-tracking model for bootstrap. It also carries dozens of fixes across shims, tasks, brew, Go, npm, and the schema, plus two security fixes. ##### Highlights - The `packslip:` backend is now generally available: install tools directly from a project's cryptographically signed release manifest, with signer pinning, trusted stampers, host-requirement checks, shell completions, and agent skills all driven from the same signed source. - Install output was reimagined end to end. Interactive terminals get a live region with a fractional install-wide bar and permanent completion lines, while CI logs, pipes, and AI-agent terminals get a compact append-only reporter instead of thousands of scrolling rows. - Bootstrap grows a read-only GitHub SSH relay and `--from-git` onboarding, an AUR package manager, and a rebuilt dotfiles-history model that tracks files through ordinary Git commits synchronized with an origin. ##### Added - **packslip:** New `packslip:` backend installs tools from a vendor-published, signed release manifest (a sigstore bundle) that names every artifact with its digest, platform, format, and executables. The tool name is a pin, like a `known_hosts` entry: `packslip:github.com/owner/repo` accepts only a packslip signed by that repository's release workflow, and signature, log entry, statement, digest, and size are all verified before anything is unpacked. Custom hosts and monorepo tools are supported. The backend is no longer experimental. ([#&#8203;12778](https://redirect.github.com/jdx/mise/pull/12778), [#&#8203;12811](https://redirect.github.com/jdx/mise/pull/12811) by [@&#8203;jdx](https://redirect.github.com/jdx)) ```toml [tools] "packslip:github.com/oxc-project/oxc/oxlint" = "latest" ``` - **packslip:** Signer pinning remembers, per project, the signer that signed the first accepted release in a `pins.toml` file (like SSH's known\_hosts) and records the signer in `mise.lock`, so a later release signed by anyone else, or one that weakens provenance, is refused. `mise packslip pins` lists what is pinned and `mise packslip forget <project>` accepts an announced key rotation. ([#&#8203;12783](https://redirect.github.com/jdx/mise/pull/12783) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **packslip:** New `packslip.stampers` setting lets you require that a trusted host has stamped a version before mise offers or installs it (a scanning service, a mirror, or eventually the registry), with a per-tool `trust = "vendor"` override. ([#&#8203;12782](https://redirect.github.com/jdx/mise/pull/12782) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **packslip:** Declared host requirements (OS/glibc minimums, shared libraries, required commands) are checked before download; confirmed failures refuse the install, gaps mise cannot verify warn only, and `ignore_requirements = true` overrides hard failures. `latest` also resolves from verified vendor recommendations. ([#&#8203;12804](https://redirect.github.com/jdx/mise/pull/12804), [#&#8203;12805](https://redirect.github.com/jdx/mise/pull/12805) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **packslip:** A tool's packslip can ship shell completions and agent skills. `mise completion <shell> --tool <name>` prints (or `--install` writes a version-aware stub for) completions for whichever version is active in the current directory, and `mise skills ls` / `mise skills sync` link a tool's Agent Skills into `.claude/skills` at the pinned version. Completions are also loaded automatically in activated shells. ([#&#8203;12779](https://redirect.github.com/jdx/mise/pull/12779), [#&#8203;12780](https://redirect.github.com/jdx/mise/pull/12780), [#&#8203;12848](https://redirect.github.com/jdx/mise/pull/12848) by [@&#8203;jdx](https://redirect.github.com/jdx)) - **install:** Redesigned install progress. Interactive terminals now show > ❗ **Important** > > ✂ PR body was truncated to here. </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "before 4am on Monday" - Automerge - At any time (no schedule defined) 🚦 **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. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC40OS4wIiwidXBkYXRlZEluVmVyIjoiNDQuNzkuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiZGVwZW5kZW5jaWVzIl19--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
1 parent 3f8cfbd commit 89191b4

16 files changed

Lines changed: 32 additions & 32 deletions

‎.github/workflows/acceptance-tests.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
1616
- uses: jdx/mise-action@c2a87611a18de5b3828c5652fe268e992400cb5c # v4.3.0
1717
with:
18-
version: v2026.8.11
19-
sha256: 3d825b8341925abb398fba6fd8dcd7d6e92ade6820d892da62992e0765638e66
18+
version: v2026.9.7
19+
sha256: d479d7c0df37652ddfd6d1887ef92a67a17effc7ec4ac612f46845099f814c6f
2020
- name: Run acceptance tests
2121
run: mise run acceptance-test

‎.github/workflows/api-diff.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ jobs:
3434
persist-credentials: false
3535
- uses: jdx/mise-action@c2a87611a18de5b3828c5652fe268e992400cb5c # v4.3.0
3636
with:
37-
version: v2026.8.11
38-
sha256: 3d825b8341925abb398fba6fd8dcd7d6e92ade6820d892da62992e0765638e66
37+
version: v2026.9.7
38+
sha256: d479d7c0df37652ddfd6d1887ef92a67a17effc7ec4ac612f46845099f814c6f
3939
- name: Cache local Maven repository
4040
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
4141
with:

‎.github/workflows/build.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ jobs:
1414
persist-credentials: false
1515
- uses: jdx/mise-action@c2a87611a18de5b3828c5652fe268e992400cb5c # v4.3.0
1616
with:
17-
version: v2026.8.11
18-
sha256: 3d825b8341925abb398fba6fd8dcd7d6e92ade6820d892da62992e0765638e66
17+
version: v2026.9.7
18+
sha256: d479d7c0df37652ddfd6d1887ef92a67a17effc7ec4ac612f46845099f814c6f
1919
- name: Cache local Maven repository
2020
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
2121
with:

‎.github/workflows/bump-api-diff-baseline.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ jobs:
3535
persist-credentials: true
3636
- uses: jdx/mise-action@c2a87611a18de5b3828c5652fe268e992400cb5c # v4.3.0
3737
with:
38-
version: v2026.8.11
39-
sha256: 3d825b8341925abb398fba6fd8dcd7d6e92ade6820d892da62992e0765638e66
38+
version: v2026.9.7
39+
sha256: d479d7c0df37652ddfd6d1887ef92a67a17effc7ec4ac612f46845099f814c6f
4040
- name: Cache local Maven repository
4141
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
4242
with:

‎.github/workflows/generate-protobuf.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ jobs:
2020
persist-credentials: false
2121
- uses: jdx/mise-action@c2a87611a18de5b3828c5652fe268e992400cb5c # v4.3.0
2222
with:
23-
version: v2026.8.11
24-
sha256: 3d825b8341925abb398fba6fd8dcd7d6e92ade6820d892da62992e0765638e66
23+
version: v2026.9.7
24+
sha256: d479d7c0df37652ddfd6d1887ef92a67a17effc7ec4ac612f46845099f814c6f
2525
- name: Cache local Maven repository
2626
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
2727
with:

‎.github/workflows/github-pages.yaml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ jobs:
3939
fetch-depth: 0
4040
- uses: jdx/mise-action@c2a87611a18de5b3828c5652fe268e992400cb5c # v4.3.0
4141
with:
42-
version: v2026.8.11
43-
sha256: 3d825b8341925abb398fba6fd8dcd7d6e92ade6820d892da62992e0765638e66
42+
version: v2026.9.7
43+
sha256: d479d7c0df37652ddfd6d1887ef92a67a17effc7ec4ac612f46845099f814c6f
4444
cache: "false"
4545
- name: Setup Pages
4646
id: pages

‎.github/workflows/java-version-matrix-tests.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ jobs:
3333
- name: Set up mise
3434
uses: jdx/mise-action@c2a87611a18de5b3828c5652fe268e992400cb5c # v4.3.0
3535
with:
36-
version: v2026.8.11
37-
sha256: 3d825b8341925abb398fba6fd8dcd7d6e92ade6820d892da62992e0765638e66
36+
version: v2026.9.7
37+
sha256: d479d7c0df37652ddfd6d1887ef92a67a17effc7ec4ac612f46845099f814c6f
3838

3939
- name: Cache local Maven repository
4040
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0

‎.github/workflows/jmx-exporter-compatibility.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ jobs:
2424
persist-credentials: false
2525
- uses: jdx/mise-action@c2a87611a18de5b3828c5652fe268e992400cb5c # v4.3.0
2626
with:
27-
version: v2026.8.11
28-
sha256: 3d825b8341925abb398fba6fd8dcd7d6e92ade6820d892da62992e0765638e66
27+
version: v2026.9.7
28+
sha256: d479d7c0df37652ddfd6d1887ef92a67a17effc7ec4ac612f46845099f814c6f
2929
- name: Cache local Maven repository
3030
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
3131
with:

‎.github/workflows/lint.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ jobs:
2323
- name: Setup mise
2424
uses: jdx/mise-action@c2a87611a18de5b3828c5652fe268e992400cb5c # v4.3.0
2525
with:
26-
version: v2026.8.11
27-
sha256: 3d825b8341925abb398fba6fd8dcd7d6e92ade6820d892da62992e0765638e66
26+
version: v2026.9.7
27+
sha256: d479d7c0df37652ddfd6d1887ef92a67a17effc7ec4ac612f46845099f814c6f
2828

2929
- name: Lint
3030
env:

‎.github/workflows/micrometer-compatibility.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ jobs:
3232
persist-credentials: false
3333
- uses: jdx/mise-action@c2a87611a18de5b3828c5652fe268e992400cb5c # v4.3.0
3434
with:
35-
version: v2026.8.11
36-
sha256: 3d825b8341925abb398fba6fd8dcd7d6e92ade6820d892da62992e0765638e66
35+
version: v2026.9.7
36+
sha256: d479d7c0df37652ddfd6d1887ef92a67a17effc7ec4ac612f46845099f814c6f
3737
- name: Cache local Maven repository
3838
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
3939
with:

0 commit comments

Comments
 (0)