v2026.2.8

jdx/misev2026.2.8Feb 9, 2026by mise-en-dev

AI Summary

A comprehensive overhaul of the hooks system to fix reliability issues, combined with the ability to detect Node.js versions directly from package.json files.

Key Highlights

  • Hooks overhaul addressing execution order and infinite loop issues
  • Node version detection from package.json using devEngines and packageManager
  • Precompiled Ruby binaries go stable

New Features

  • --dry-run-code flag for install, upgrade, prune, uninstall, and use commands

Full Release Notes

This release focuses on hooks—fixing 12 community-reported issues that were making them unreliable. There are also some nice quality-of-life improvements for Node.js and Ruby users.

### Highlights

**Hooks overhaul** — A comprehensive fix for the hooks system addressing a dozen issues reported by the community. Global hooks now actually work, hook execution order is corrected (leave fires before enter), infinite loops in fish shell are fixed, and postinstall hooks can now find all installed tools. [#8058](https://github.com/jdx/mise/pull/8058)

**Node version detection from package.json** — mise now reads tool versions directly from `package.json` using the `devEngines` and `packageManager` fields. This means your Node, Bun, pnpm, yarn, and npm versions can be auto-detected without a separate `.tool-versions` or `mise.toml` file. Semver ranges are simplified automatically (`>=18.0.0` → `18`). [#8059](https://github.com/jdx/mise/pull/8059)

**Precompiled Ruby goes stable** — You can now use precompiled Ruby binaries by setting `ruby.compile=false` without needing `experimental=true`. This will become the default in 2026.8.0. If you haven't tried it, precompiled Ruby installs in seconds instead of minutes. [#8052](https://github.com/jdx/mise/pull/8052)

### New Features

- **`--dry-run-code` flag** — Added to `install`, `upgrade`, `prune`, `uninstall`, and `use` commands. Behaves like `--dry-run` but exits with code 1 when there's work to do, enabling patterns like `if ! mise install --dry-run-code -q; then mise install; fi` [#8063](https://github.com/jdx/mise/pull/8063)

### Bug Fixes

- **MISE_ARCH override** — The bun and erlang plugins now respect `MISE_ARCH` at runtime, which is useful for Windows ARM64 users running x64 binaries under emulation [#8062](https://github.com/jdx/mise/pull/8062)
- **key=value format** — `mise settings set`, `mise settings add`, `mise config set`, and `mise shell-alias set` now accept `key=value` as a single argument [#8053](https://github.com/jdx/mise/pull/8053)

### Registry

- Added **quicktype** (`npm:quicktype`) — thanks @zdunecki! [#8054](https://github.com/jdx/mise/pull/8054)

### Dependencies

- Upgraded to TOML 1.1 support via toml 0.9 and toml_edit 0.24 [#8057](https://github.com/jdx/mise/pull/8057)