v2026.10.15
jdx/misev2026.10.15Oct 19, 2026by mise-en-dev
Upgrading?
AI Summary
This release extends the default 24-hour `minimum_release_age` cooldown to all backends and introduces a PowerShell installer for Windows. It also adds new template functions, dotnet LTS/STS aliases, and improves documentation accessibility.
Key Highlights
- Default `minimum_release_age` now applies to every backend, including asdf, vfox, and conda.
- New PowerShell installer (`install.ps1`) for Windows with automatic upgrades.
- New template functions (`read_json`, `read_yaml`, `read_toml`) for parsing files in configuration.
- New tool aliases `dotnet@lts` and `dotnet@sts` for LTS and STS channels.
Breaking Changes
- The default `minimum_release_age` now applies to backends that previously ignored it, causing versions less than 24 hours old to resolve to 'no versions found'.
New Features
- PowerShell installer for Windows.
- Template functions: `read_json`, `read_yaml`, `read_toml`.
- Tool aliases: `dotnet@lts` and `dotnet@sts`.
- Command: `mise bootstrap --prune-dotfiles`.
- Setting: `dotfiles.windows_symlinks`.
- Configuration: `version_date_expr` for `http:` tools.
- Plugin hook: vfox plugins can now report release dates.
- Alias: `mise tasks -a`.
Full Release Notes
The default 24-hour `minimum_release_age` now applies to every backend. Many more backends report release dates, so the cooldown can actually hold new versions back, and mise warns when it installs a version it couldn't date. This release also adds a PowerShell installer for Windows, `read_json`/`read_yaml`/`read_toml` template functions, `dotnet@lts`/`dotnet@sts`, and new dotfiles options.
## Changed
- **The default `minimum_release_age` applies to every backend.** The built-in 24h cooldown used to cover only backends that reported release dates (aqua, cargo, core, github, npm, pypi and others). asdf, vfox, conda, dotnet, `http:` and `s3:` tools had no cutoff at all. Now every backend gets the cooldown. A tool whose only version is less than 24h old now resolves to "no versions found", as aqua and github tools already did. To opt a tool out, add it to `minimum_release_age_excludes`. To turn the cooldown off, set `minimum_release_age = "0s"`. [#14701](https://github.com/jdx/mise/pull/14701) (@jdx)
- **mise warns when it can't check a version's release date.** A version with no known date still passes the cutoff, but `mise install`, `mise upgrade` and `mise use` now print a one-time warning naming the version. Exact pins you wrote yourself don't trigger it. `mise env`, `mise ls`, `mise outdated` and `mise ls-remote` never print it. [#14694](https://github.com/jdx/mise/pull/14694) (@jdx)
```
WARN asdf:tiny@3.1.0 has no release date, so the ... cutoff cannot be checked and it is allowed (exclude it with minimum_release_age_excludes to silence this)
```
- **More backends report release dates, so the cooldown applies to them:**
- conda versions use the channel's earliest index timestamp. [#14693](https://github.com/jdx/mise/pull/14693)
- aqua packages that take versions from git tags (`version_source: github_tag`, such as `aws/aws-cli`, `docker/cli` and `cockroachdb/cockroach`) are now dated. [#14691](https://github.com/jdx/mise/pull/14691)
- dotnet dates come from Microsoft's releases index. deno and erlang dates come from their GitHub releases. [#14692](https://github.com/jdx/mise/pull/14692)
- Every python version now has a date, and so do many more ruby versions (from ruby-lang.org, Maven Central for JRuby, and GitHub for TruffleRuby). Rust's `stable`, `beta` and `nightly` channels are dated too. With an explicit past cutoff, `rust@stable` resolves to the newest stable release that is old enough, and `beta`/`nightly` resolve to a dated build from before the cutoff. [#14697](https://github.com/jdx/mise/pull/14697)
- The dart, flutter, nim, julia, nomad-pack, sentinel, tfc-agent, android-cli, cursor-agent and twg registry tools now report dates. [#14698](https://github.com/jdx/mise/pull/14698)
All by @jdx.
- **Version lists for more backends come from the mise-versions host.** `npm:`, `pipx:`, `cargo:`, `gem:`, `go:`, `dotnet:` and `spm:` tools now list versions from mise-versions, like other registry tools, instead of going to their own source. So do http/s3 tools with a `version_list_url`. If you redirect a source, mise still lists from that source directly. That covers a custom npm registry or `npm.shell_out`, `pypi.registry_url`, a non-default `GOPROXY`, `cargo.registry_name`, a custom gem source, `dotnet.registry_url`, S3 endpoint overrides, and local listing options. conda always lists from its channel. The host cache TTL now follows the tool's `minimum_release_age`. To list everything from the source, set `MISE_USE_VERSIONS_HOST=0`. [#14700](https://github.com/jdx/mise/pull/14700) (@jdx)
## Added
- **PowerShell installer for Windows.** It's published with each release as `install.ps1` and served from mise.run at `/powershell` and `/pwsh`, so you pipe it into `iex` with `irm`. It works on PowerShell 5.1+ and doesn't need admin rights. It installs the newest release that is at least 24h old, or `MISE_VERSION` if set. The download is verified against `SHASUMS256.txt` from GitHub Releases. `mise.exe` and `mise-shim.exe` go into `~\.local\bin`, and that directory is added to your user `Path`. Re-running it upgrades an existing install. Options include `MISE_INSTALL_PATH`, `MISE_INSTALL_MODIFY_PATH=0`, `MISE_INSTALL_SHIMS_PATH=1` and `MISE_INSTALL_FROM_GITHUB=1`. See the "Installing mise" docs for the full command. [#14660](https://github.com/jdx/mise/pull/14660) (@jdx, @lhs-12)
- **`read_json()`, `read_yaml()` and `read_toml()` template functions** parse a file so a template can use a value from it. This saves copying a version from `package.json` or `Pulumi.yaml` into `mise.toml` by hand. Relative paths resolve from the config file's directory. A missing key is an error unless you add `| default(value="...")`. Like `read_file()`, these functions need a trusted config, and they don't work in safe mode, `.miserc.toml` or OCI dotfile templates. [#14705](https://github.com/jdx/mise/pull/14705) (@jdx, @edahlseng)
```toml
[tools]
node = "{{ read_json(path='package.json')['volta']['node'] }}"
pulumi = "{{ read_yaml(path='Pulumi.yaml')['requiredPulumiVersion'] }}"
```
- **`dotnet@lts` and `dotnet@sts`** resolve to the newest SDK in the current LTS or STS channel, using Microsoft's release index. Preview, go-live and end-of-life channels are skipped. A `lts` alias you define in `[tool_alias.dotnet.versions]` still takes precedence. Runtime-only installs still need an exact version. [#14683](https://github.com/jdx/mise/pull/14683) (@jdx)
- **`mise bootstrap --prune-dotfiles`** removes dotfiles that are no longer deployed, the same way `mise dot apply --prune` does, so `mise bootstrap --upgrade --prune-dotfiles` handles everything in one run. The prune runs at the end of the dotfiles phase. It respects `--dry-run`, `--yes` and `--skip dotfiles`. Copies you edited are left in place. [#14681](https://github.com/jdx/mise/pull/14681) (@jdx, @thernstig)
- **`dotfiles.windows_symlinks`** (default `false`) makes `symlink` and `symlink-each` create real file symlinks on Windows. With it on, apply fails if Windows refuses to create a link, instead of silently copying. To create symlinks, Windows needs Developer Mode or an elevated shell. If you turn the setting back off, `mise dot unapply` needs `--force` on entries that still hold links. [#14682](https://github.com/jdx/mise/pull/14682) (@jdx)
```toml
[settings.dotfiles]
windows_symlinks = true
```
- **`http:` tools can report release dates** with the new `version_date_expr` option. It maps versions to dates from the `version_list_url` response. Use `version_date_url` to read the dates from a different URL, and `version_date_next_expr` to follow paged listings (same host only). Dates can be RFC 3339, `YYYY-MM-DD` or HTTP dates. [#14696](https://github.com/jdx/mise/pull/14696) (@jdx)
- **vfox plugins can report release dates.** An `Available` or `BackendListVersions` hook can return `created_at` (RFC 3339) for each version. Plain version strings still work. [#14695](https://github.com/jdx/mise/pull/14695) (@jdx)
- `mise tasks -a` is a short alias for `mise tasks --all`. [#14674](https://github.com/jdx/mise/pull/14674) (@williamsjokvist)
## Fixed
- `mise fmt` no longer breaks multiline inline tables (TOML 1.1). It used to pull comments out of the table and drop indentation. Now it leaves these tables exactly as written. [#14670](https://github.com/jdx/mise/pull/14670) (@jdx, @ponko2)
- If one task's `dir` template fails to render, other task commands keep working. Before, every command failed, including `mise tasks validate`. Now `mise tasks validate` reports the broken task as `invalid-directory-template`, and only running that task fails. [#14680](https://github.com/jdx/mise/pull/14680) (@jdx)
- aqua tools now find their binaries in macOS universal archives, such as fastfetch 2.70.0. [#14665](https://github.com/jdx/mise/pull/14665) (@jdx)
- npm: lifecycle scripts approved by `allow_builds` now run even when `~/.npmrc` sets `ignore-scripts=true`. [#14661](https://github.com/jdx/mise/pull/14661) (@jdx)
- npm: `mise lock` no longer fails when your aube config sets a different default lockfile, such as `pnpm-lock.yaml`. [#14659](https://github.com/jdx/mise/pull/14659) (@jdx)
- `.7z` tool archives now extract when mise's data directory path contains `..`, for example in a localized mise setup. [#14657](https://github.com/jdx/mise/pull/14657) (@jdx, @sevenc-nanashi)
- The `mise-shim.exe` in the Windows release now keeps its version tag, so `mise doctor` and `mise reshim --force` stop reporting it as outdated. The warning goes away after you update and run `mise reshim --force`. [#14656](https://github.com/jdx/mise/pull/14656) (@jdx)
- On Windows, `symlink-each` dotfiles messages and dry-run previews now say the files were copied rather than symlinked. [#14654](https://github.com/jdx/mise/pull/14654) (@jdx, @lhs-12)
- Rust: with a `RUSTUP_DIST_SERVER` mirror configured and GitHub unreachable, mise now lists the `stable`, `beta` and `nightly` channels instead of failing, so `rust@stable` installs through the mirror. [#14662](https://github.com/jdx/mise/pull/14662) (@jdx)
- On Windows, `http:` installs of large archives no longer fail with "Access is denied" while antivirus is scanning the extracted files. mise now retries the final move for up to about a minute. [#14703](https://github.com/jdx/mise/pull/14703) (@jdx)
## Documentation
- New [mise.toml playground](https://mise.jdx.dev/configuration/playground.html): a schema-aware editor with hover help, completion and error checking. You can share a config as a link. Every `mise.toml` example in the docs now shows hover help on its keys. [#14673](https://github.com/jdx/mise/pull/14673), [#14686](https://github.com/jdx/mise/pull/14686) (@jdx)
- The [mise.toml reference](https://mise.jdx.dev/configuration/reference.html) is now a searchable key explorer grouped by topic. Each key shows its type, default and a real example. Nearly every key now has a description, and these also appear in `mise config explain`. [#14687](https://github.com/jdx/mise/pull/14687), [#14690](https://github.com/jdx/mise/pull/14690), [#14688](https://github.com/jdx/mise/pull/14688) (@jdx)
- The fnox secrets page now covers setup, CI and migration. The dotnet page explains how private feeds authenticate. [#14675](https://github.com/jdx/mise/pull/14675), [#14679](https://github.com/jdx/mise/pull/14679) (@jdx)
**Full Changelog**: https://github.com/jdx/mise/compare/v2026.10.14...v2026.10.15
## 💚 Sponsor mise
mise is built and maintained by [@jdx](https://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.
Related Repositories
A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io
An open-source remote desktop application designed for self-hosting, as an alternative to TeamViewer.
Build smaller, faster, and more secure desktop and mobile applications with a web frontend.
π RuView turns commodity WiFi signals into real-time spatial intelligence, vital sign monitoring, and presence detection — all without a single pixel of video.
Incredibly fast JavaScript runtime, bundler, test runner, and package manager – all in one