The front-end to your dev env Pronounced "MEEZ ahn plahs"
- site: https://mise.jdx.dev/
The front-end to your dev env Pronounced "MEEZ ahn plahs"
The front-end to your dev env Pronounced "MEEZ ahn plahs"
A feature-packed release that replaces the conda backend with production-grade internals, adds a native .NET SDK plugin, and finally enforces per-task timeouts. Several lockfile and environment-handling fixes round things out.
Conda backend rewritten with rattler -- The experimental conda backend has been completely rewritten to use the rattler Rust crates (the same engine behind pixi), replacing ~1,600 lines of custom code that relied on the unsupported anaconda.org API. This brings a proper SAT-based dependency solver, correct binary prefix replacement, and repodata caching via CDN. #8325 by @jdx
Native .NET SDK management -- A new core plugin for .NET SDK installs all versions side-by-side under a shared DOTNET_ROOT, matching .NET's native multi-version model. It uses Microsoft's official dotnet-install script and supports global.json for per-project SDK pinning. #8326 by @jdx
Per-task timeouts are now enforced -- The timeout field on tasks (added in v2025.1.6 but never wired up) now actually kills tasks that exceed their limit. Timeouts send SIGTERM with a 5-second grace period before SIGKILL, and both per-task and global task_timeout settings are respected. #8250 by @tvararu
mise use dotnet@8 now installs via a native core plugin with side-by-side version support and global.json detection. Configure DOTNET_ROOT via the new dotnet.dotnet_root setting. #8326 by @jdxtimeout field are now killed if they exceed the configured duration. Works with both per-task config and the global task_timeout/--timeout flag. #8250 by @tvararu
[tasks.deploy]
run = "npm run deploy"
timeout = "5m"
.vsix files as ZIP archives and extracts them correctly, enabling tools distributed as VS Code extensions to be installed via http: URLs. #8306 by @sosumappuoxfmt -- Added the oxfmt formatter to the tool registry. #8316 by @taoufik07rattler_solve, rattler_repodata_gateway, rattler::install). Binary prefix replacement now works correctly (the old code skipped binary files entirely). Since the conda backend is still experimental, this is a non-breaking change. #8325 by @jdx--locked -- mise install --locked no longer writes to mise.lock, matching the semantics of cargo install --locked and uv pip install --locked. #8308 by @jdxmise lock now removes stale tool entries that are no longer present in config, keeping the lockfile aligned with the current toolset. #8265 by @mackwiclocked=true alongside lockfile=false now produces a clear error instead of silently ignoring the lock. #8329 by @jdxwatch_files triggers on every change -- The hook-env fast-path now checks [[watch_files]] paths, fixing a bug where only the first file change triggered the associated run command. #8317 by @jdxoneOf ambiguity in the mise schema that rejected [env] entries using age encryption. #8328 by @adamliang0open-policy-agent/regal. #8315 by @charlieegan3conda_packages entries are no longer silently dropped during --locked installs, and concurrent downloads no longer race on the same temp file. #8335 by @jdxFull Changelog: https://github.com/jdx/mise/compare/v2026.2.19...v2026.2.20