Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 95 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,100 @@
# Changelog

## [2026.10.13](https://github.com/jdx/mise/releases/tag/v2026.10.13) - 2026-10-17

### πŸš€ Features

- **(bootstrap)** template repo url and ref, add clone options by @jdx in [#14548](https://github.com/jdx/mise/pull/14548)
- **(bootstrap)** expose system_brew_prefix to templates by @jdx in [#14572](https://github.com/jdx/mise/pull/14572)
- **(doctor)** flag a mise-shim.exe template older than mise by @jdx in [#14586](https://github.com/jdx/mise/pull/14586)
- **(ls-remote)** list every version range of a registry tool by @jdx in [#14544](https://github.com/jdx/mise/pull/14544)
- **(registry)** let one backend carry different options per version range by @jdx in [#14543](https://github.com/jdx/mise/pull/14543)
- **(shim)** render command wrapper values as templates by @jdx in [#14565](https://github.com/jdx/mise/pull/14565)
- **(vfox)** allow a headers table in the PreInstall result by @jdx in [#14531](https://github.com/jdx/mise/pull/14531)

### πŸ› Bug Fixes

- **(bootstrap)** render templates in bootstrap.user.login_shell by @jdx in [#14570](https://github.com/jdx/mise/pull/14570)
- **(ci)** install zipsign with --locked by @fang2hou in [#14551](https://github.com/jdx/mise/pull/14551)
- **(github)** install each version with its own request options by @JamBalaya56562 in [#14537](https://github.com/jdx/mise/pull/14537)
- **(hooks)** run task hooks with mise instead of the initiating tool shim by @jdx in [#14550](https://github.com/jdx/mise/pull/14550)
- **(install)** keep lockfile resolution when a linked version doesn't match the request by @jdx in [#14539](https://github.com/jdx/mise/pull/14539)
- **(java)** skip the catalog fetch when installing a locked build by @jdx in [#14534](https://github.com/jdx/mise/pull/14534)
- **(lock)** keep other platforms' option variants when mise link rewrites mise.lock by @jdx in [#14519](https://github.com/jdx/mise/pull/14519)
- **(mcp)** include the cause when a resource read fails by @diogochaves in [#14566](https://github.com/jdx/mise/pull/14566)
- **(ruby)** lock windows platforms when running mise lock on Windows by @jdx in [#14520](https://github.com/jdx/mise/pull/14520)
- **(ruby)** lock linux and macos platforms when running mise lock on Windows by @jdx in [#14529](https://github.com/jdx/mise/pull/14529)
- **(rust)** restore the components a toolchain's profile requires by @JamBalaya56562 in [#14525](https://github.com/jdx/mise/pull/14525)
- **(shim)** keep task lazy tool shims when a task installs another tool by @jdx in [#14533](https://github.com/jdx/mise/pull/14533)
- **(task)** avoid deadlock when parallel tasks install the same tool by @jdx in [#14536](https://github.com/jdx/mise/pull/14536)
- **(vfox)** pass each version only its own tool options by @JamBalaya56562 in [#14562](https://github.com/jdx/mise/pull/14562)
- **(vfox)** report an HTTP client that cannot be built instead of panicking by @JamBalaya56562 in [#14576](https://github.com/jdx/mise/pull/14576)
- **(watch)** exit quietly when watchexec is interrupted with Ctrl+C by @jdx in [#14541](https://github.com/jdx/mise/pull/14541)

### 🚜 Refactor

- **(backend)** move aqua tests into their own file by @jdx in [#14556](https://github.com/jdx/mise/pull/14556)
- **(config)** move lockfile tests into their own file by @jdx in [#14554](https://github.com/jdx/mise/pull/14554)
- **(config)** move config tests into their own file by @jdx in [#14555](https://github.com/jdx/mise/pull/14555)
- **(config)** move [dotfiles], [dotfile_groups], and [history] types into mise-system-config by @jdx in [#14569](https://github.com/jdx/mise/pull/14569)
- **(config)** move the [bootstrap] declaration types into mise-system-config by @jdx in [#14573](https://github.com/jdx/mise/pull/14573)
- **(core)** move progress reports, prompts, and themes into mise-ui by @jdx in [#14558](https://github.com/jdx/mise/pull/14558)
- **(core)** move system::sudo into mise-ui by @jdx in [#14560](https://github.com/jdx/mise/pull/14560)
- **(daemons)** move the daemon declarations, ports, presets, and runtime into mise-daemons by @jdx in [#14583](https://github.com/jdx/mise/pull/14583)
- **(lock)** split run_with_installed into phases by @jdx in [#14559](https://github.com/jdx/mise/pull/14559)
- **(oci)** move the registry client, layers, and image layout into mise-oci by @jdx in [#14582](https://github.com/jdx/mise/pull/14582)
- **(system)** split apply_locked_with_scope into phases by @jdx in [#14557](https://github.com/jdx/mise/pull/14557)
- **(system)** make package managers independent of mise's config and toolset by @jdx in [#14564](https://github.com/jdx/mise/pull/14564)
- **(system)** move system package managers into mise-system-packages by @jdx in [#14567](https://github.com/jdx/mise/pull/14567)
- **(system)** reach the config layer through a registered host by @jdx in [#14575](https://github.com/jdx/mise/pull/14575)
- **(system)** move the bootstrap, dotfiles, and history modules into mise-system by @jdx in [#14581](https://github.com/jdx/mise/pull/14581)

### πŸ“š Documentation

- **(mcp)** fix the docs build broken by the trust error example by @jdx in [#14574](https://github.com/jdx/mise/pull/14574)
- say OpenTelemetry export and spinel installs need experimental by @ZainnQureshii in [#14552](https://github.com/jdx/mise/pull/14552)

### ⚑ Performance

- **(config)** parse each settings file once per load by @jdx in [#14553](https://github.com/jdx/mise/pull/14553)

### ◀️ Revert

- Revert "chore(deps): pin zipsign-api to 0.2.1" by @jdx in [baafe33](https://github.com/jdx/mise/commit/baafe3376d7add0b3e15bacb437daf0e48b849b3)

### πŸ“¦οΈ Dependency Updates

- pin zipsign-api to 0.2.1 by @jdx in [6d1bd25](https://github.com/jdx/mise/commit/6d1bd25cca68f18ca7725155011364713ff0aed8)
- rerun providers when mise recreates the venv by @halms in [#14532](https://github.com/jdx/mise/pull/14532)
- cargo update and bump zip to 9 for the symlink advisory by @jdx in [#14577](https://github.com/jdx/mise/pull/14577)
- update zipsign-api and the release zipsign CLI to 0.2.2 by @jdx in [#14580](https://github.com/jdx/mise/pull/14580)
- update jdx crates by @renovate[bot] in [#14578](https://github.com/jdx/mise/pull/14578)

### πŸ“¦ Registry

- prefer signed xcsift releases and enable Linux by @jdx in [#14540](https://github.com/jdx/mise/pull/14540)
- install protoc-gen-connect-go v2 from its /v2 module path by @jdx in [#14545](https://github.com/jdx/mise/pull/14545)
- add rea (npm:rea-agents) by @phucisstupid in [#14421](https://github.com/jdx/mise/pull/14421)

### Chore

- **(release)** pin zipsign install to 0.2.1 by @jdx in [d5ef6f9](https://github.com/jdx/mise/commit/d5ef6f91080562dd5d09654e81530f31c68aad6d)

### Ci

- pin perf-runner image by tag and stop automerging it by @jdx in [#14579](https://github.com/jdx/mise/pull/14579)

### Security

- **(config)** ignore [settings] from untrusted project configs by @jdx in [#14538](https://github.com/jdx/mise/pull/14538)

### New Contributors

- @phucisstupid made their first contribution in [#14421](https://github.com/jdx/mise/pull/14421)
- @diogochaves made their first contribution in [#14566](https://github.com/jdx/mise/pull/14566)
- @ZainnQureshii made their first contribution in [#14552](https://github.com/jdx/mise/pull/14552)
- @fang2hou made their first contribution in [#14551](https://github.com/jdx/mise/pull/14551)

## [2026.10.12](https://github.com/jdx/mise/releases/tag/v2026.10.12) - 2026-10-16

### πŸš€ Features
Expand Down
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ members = [

[package]
name = "mise"
version = "2026.10.12"
version = "2026.10.13"
edition = "2024"
description = "Dev tools, env vars, and tasks in one CLI"
authors = ["Jeff Dickey (@jdx)"]
Expand Down
2 changes: 1 addition & 1 deletion default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

rustPlatform.buildRustPackage {
pname = "mise";
version = "2026.10.12";
version = "2026.10.13";

src = lib.cleanSource ./.;

Expand Down
1 change: 1 addition & 0 deletions docs/.vitepress/releases-issues.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{
"2026.10.13": 7,
"2026.10.12": 0,
"2026.10.11": 7,
"2026.10.10": 7,
Expand Down
2 changes: 1 addition & 1 deletion docs/.vitepress/stars.data.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
export default {
load() {
return {
stars: "35k",
stars: "35.1k",
};
},
};
2 changes: 1 addition & 1 deletion packaging/rpm/mise.spec
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Summary: Dev tools, env vars, and tasks in one CLI
Name: mise
Version: 2026.10.12
Version: 2026.10.13
Release: 1
URL: https://github.com/jdx/mise/
Group: System
Expand Down
55 changes: 55 additions & 0 deletions release-notes/2026.10.12.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# Per-tool Python runtimes for PyPI tools, Gradle workspace discovery, and env file find_up

PyPI and pipx tools can now choose their own Python runtime, the workspace graph can read Gradle multi-module builds, and `env._.file` can search parent directories. When mise-versions is having an outage, GitHub lookups now retry on `api.github.com`, and `_.source` scripts no longer pick up `~/.bashrc` when mise is launched from an editor.

## Added

- **Per-tool Python for `pypi:` tools.** Set `python` to a minor series or an exact version, and mise installs that runtime and passes it to uv or pipx for that tool only. The runtime stays private to the tool and does not become your shell's default Python. `mise lock` records the selected Python with the tool, and `mise prune` keeps any runtime that a retained tool environment still uses. You can't combine `python` with `--python`/`-p` in `uvx_args` or `pipx_args`. Tools that don't set `python` behave as before. [#14479](https://github.com/jdx/mise/pull/14479) (@jdx)

```toml
[tools]
"pypi:black" = { version = "latest", python = "3.12" }
"pypi:ruff" = { version = "latest", python = "3.12.12" }
```

If you change a tool's `python`, mise installs a new environment instead of reusing the old one. If that install fails, the previous working environment is left untouched. [#14504](https://github.com/jdx/mise/pull/14504) (@jdx)

- **Gradle workspace discovery.** `mise tasks graph` and `mise run --affected` now find projects listed by `include` in `settings.gradle` or `settings.gradle.kts`, using Groovy or Kotlin syntax. Project IDs follow Gradle paths: `:app` becomes `gradle::app`, and the root project is `gradle::`. Literal `project(":lib")` references in a project's top-level `dependencies {}` block become graph edges. mise reads the scripts as text and never runs Gradle. If an `include` is computed or conditional, a `projectDir` isn't a plain `file("...")` literal, or both settings files exist, mise reports an error that points to `[monorepo.projects."gradle:..."]` overrides. Editing the settings script marks every Gradle project as affected. Based on a prototype by @Jarvvski. [#14512](https://github.com/jdx/mise/pull/14512) (@jdx)

- **`find_up` for `env._.file`.** With `find_up = true`, mise looks for a relative path in the current directory and in every parent, so a global config can load each project's `.env` files. Files load from the root down, so values in closer files win. The default is `false`, and the option has no effect on absolute paths. [#14497](https://github.com/jdx/mise/pull/14497) (@jdx)

```toml
# ~/.config/mise/config.toml
[env]
_.file = [
{ path = ".env", find_up = true },
{ path = ".env.local", find_up = true },
]
```

- **Detect git-rewritten files in `watch_files` hooks.** mise sets `MISE_WATCH_FILES_GIT_REWRITTEN=1` when every changed file was last written before git's most recent HEAD move (checkout, pull, rebase). Commits don't count as HEAD moves. Hooks such as format-on-edit can use this to skip files the user didn't edit. `git stash pop`/`apply` don't move HEAD, so mise doesn't detect them. [#14511](https://github.com/jdx/mise/pull/14511) (@jdx)

```toml
[[watch_files]]
patterns = ["**/*.go"]
run = '[ -n "$MISE_WATCH_FILES_GIT_REWRITTEN" ] || { IFS=:; hk fix $MISE_WATCH_FILES_MODIFIED; }'
```

- **`.tera` sources inferred for dotfile group templates.** A `mode = "template"` entry in `[dotfile_groups]` no longer needs a `source` just to point at a `.tera` file. If the exact path doesn't exist, mise falls back to the same path with `.tera` added. An explicit `source` still takes precedence, and the `.tera` file is not also deployed under its suffixed name. [#14502](https://github.com/jdx/mise/pull/14502) (@jdx)

- **`mise lock` warns about unsupported platforms.** If you name platforms with `lockfile_platforms` or `mise lock --platform`, mise prints a warning for each tool version that has no build for one of them, for example `apko@0.30.0 is not available for windows-x64; it will not install there`. The default platform set still only logs this at debug level, and the exit status is unchanged. [#14500](https://github.com/jdx/mise/pull/14500) (@jdx)

- Registry: added `martin` (`github:maplibre/martin`). [#14488](https://github.com/jdx/mise/pull/14488) (@ivan-ivkovic, @jdx)

## Fixed

- **GitHub lookups survive mise-versions outages.** If mise-versions times out, drops the connection, or returns `429` or `5xx`, mise now retries the lookup on `api.github.com`, using your GitHub token if one is set. This covers releases, tags, repository contents, attestations and `self-update`. A `404`, `403` or empty answer from mise-versions is still trusted and not retried, so normal use doesn't spend GitHub's anonymous rate limit. If both sources fail, the error shows both failures, and a previously cached version list is still used. [#14501](https://github.com/jdx/mise/pull/14501) (@jdx)
- **`_.source` no longer loads `~/.bashrc`.** When mise's stdin was a socket and `SHLVL` was unset, which happens when an editor extension such as the VS Code mise extension starts it, bash sourced `~/.bashrc` before the script. That leaked variables into the environment and could drop the script's `PATH` entries. The script now runs with `--norc`. [#14487](https://github.com/jdx/mise/pull/14487) (@pikeas)
- **Each version entry uses its own options.** When a tool listed several versions, options set only on the first entry leaked into the later ones. For example, `prerelease = true` on a `latest` entry made a separate `"1"` entry resolve to a prerelease. [#14476](https://github.com/jdx/mise/pull/14476) (@JamBalaya56562, @risu729)
- **Project overrides now work when a workspace provider fails.** Previously, if a provider couldn't read its manifest (for example, a malformed `go.work`), `mise tasks graph` and `mise run --affected` failed for the whole repo. Declaring a project in that provider's namespace under `[monorepo.projects]` now replaces the provider's output and clears its error. Providers with no declared projects still fail loudly. [#14508](https://github.com/jdx/mise/pull/14508) (@jdx)

## Documentation

- Explained why `mise activate` keeps shims on `PATH` [#14493](https://github.com/jdx/mise/pull/14493) (@jdx), and clarified the platform-specific mise cache paths for CI [#14506](https://github.com/jdx/mise/pull/14506) (@zeitlinger).

**Full Changelog**: https://github.com/jdx/mise/compare/v2026.10.11...v2026.10.12
2 changes: 1 addition & 1 deletion snapcraft.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

name: mise
title: mise-en-place
version: "2026.10.12"
version: "2026.10.13"
summary: Dev tools, env vars, and tasks in one CLI
description: |
mise-en-place prepares your development environment before each command runs.
Expand Down
2 changes: 1 addition & 1 deletion vendor/aqua-registry/metadata.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"repository": "aquaproj/aqua-registry",
"tag": "b71fa54ba44033a47a387afdbbb38ec65fb6df8a"
"tag": "78bb9d1833974ebb406edc838a37ff73cbdffdb6"
}
Loading