v2026.2.22

jdx/misev2026.2.22Feb 27, 2026by mise-en-dev

AI Summary

A small release adding a new way to check for outdated plugins, along with three bug fixes for archive installs, tool environment resolution, and cross-platform Ruby lockfiles.

Key Highlights

  • New `mise plugins ls --outdated` flag to check remote git refs in parallel
  • `rename_exe` works with archives containing a `bin/` subdirectory
  • Installing cargo/npm/pipx tools no longer crashes with `tools = true` env directives
  • Ruby lockfile resolves correct Windows checksums for RubyInstaller2
  • Registry: terradozer switched to GitHub fork

New Features

  • mise plugins ls --outdated flag
  • rename_exe fix for bin/ subdirectory in archives
  • Fix for tools = true env directive resolution during install
  • Ruby lockfile Windows checksum fix

Full Release Notes

A small release adding a new way to check for outdated plugins, along with three bug fixes for archive installs, tool environment resolution, and cross-platform Ruby lockfiles.

## Added

- **`mise plugins ls --outdated` flag** -- A new `-o`/`--outdated` flag checks remote git refs in parallel and displays only plugins where the local SHA differs from the remote. Shows a table with plugin name, URL, ref, local SHA, and remote SHA. Prints "All plugins are up to date" when everything is current. [#8360](https://github.com/jdx/mise/pull/8360) by @jdx
  ```sh
  $ mise plugins ls --outdated
  Plugin  Url                                             Ref   Local    Remote
  tiny    https://github.com/mise-plugins/rtx-tiny.git    main  abc1234  def5678
  ```

## Fixed

- **`rename_exe` works with archives containing a `bin/` subdirectory** -- When an archive extracts to a layout like `prefix/bin/binary`, the `rename_exe` option was silently skipped because it searched the extraction root non-recursively instead of the `bin/` subdirectory where the binary actually lives. Both the GitHub-style backend and the HTTP backend now auto-detect the `bin/` subdirectory as the search directory, matching the same logic used by `discover_bin_paths()` for PATH construction. [#8358](https://github.com/jdx/mise/pull/8358) by @jdx

- **Installing cargo/npm/pipx tools no longer crashes with `tools = true` env directives** -- When `[env]` contained entries like `NODE_VERSION = { value = "{{ tools.node.version }}", tools = true }`, installing npm/cargo/pipx tools would fail with "Variable not found in context" because the referenced tools might not be installed yet. The cargo, npm, and pipx backends now skip `tools = true` env directive resolution during installation while still including tool paths in PATH. [#8356](https://github.com/jdx/mise/pull/8356) by @jdx

- **Ruby lockfile resolves correct Windows checksums** -- Running `mise lock` on macOS/Linux now correctly resolves RubyInstaller2 binary URLs and checksums for Windows platform entries, instead of incorrectly using the MRI source tarball checksum. The lockfile generator now fetches the correct `.7z` asset from the `oneclick/rubyinstaller2` GitHub releases for Windows targets. [#8357](https://github.com/jdx/mise/pull/8357) by @jdx

## Changed

- **Registry: terradozer switched to GitHub fork** -- The terradozer registry entry now points to `github:chenrui333/terradozer` (replacing the archived asdf plugin and unavailable aqua backend), and is restricted to Linux and macOS. [#8365](https://github.com/jdx/mise/pull/8365) by @chenrui333

## New Contributors

* @chenrui333 made their first contribution in [#8365](https://github.com/jdx/mise/pull/8365)

**Full Changelog**: https://github.com/jdx/mise/compare/v2026.2.21...v2026.2.22