v2026.6.14
jitsucom/jitsuv2026.6.14Jun 25, 2026by mise-en-dev
AI Summary
Introduces a comprehensive overhaul of the bootstrap system with new subcommands, declarative configurations for shell activation and repos, and enhanced cross-platform support.
Key Highlights
- New `bootstrap` subcommands and config sections
- Support for brew-cask binary artifacts
- Consolidated status reporting
- Offline binary lookups
New Features
- Bootstrap inverse skip (`--only`)
- Homebrew formulae import/prune
- Declarative shell activation config
- Git repo cloning config
- Support for riscv64 and loongarch64
- Fixed Sigstore TUF root fetches with URL replacements
Full Release Notes
## Added - **bootstrap:** `mise bootstrap --only <part>` as the inverse of `--skip`, accepting repeated/comma-separated phase names and mutually exclusive with `--skip` ([#10607](https://github.com/jdx/mise/pull/10607) by @jdx). - **bootstrap:** `mise bootstrap packages import` / `prune` for Homebrew formulae, snapshotting requested installed formulae into `[bootstrap.packages]` and ledger-pruning only adopted formulae no longer needed by merged config ([#10606](https://github.com/jdx/mise/pull/10606) by @jdx). - **bootstrap:** `mise bootstrap status` (alias `ls`) aggregates packages, dotfiles, macOS defaults, launchd, systemd, login shell, repos, shell activation, and `[tools]` into one report with `--json` and `--missing` (non-zero exit when anything is out of sync) ([#10608](https://github.com/jdx/mise/pull/10608), [#10612](https://github.com/jdx/mise/pull/10612) by @jdx). - **bootstrap:** Consolidated `bootstrap: follow-up` summary listing deferred user actions (macOS defaults relaunches, login shell re-login, unavailable managers, OS-skipped phases) at the end of `mise bootstrap`; dry runs show `follow-up if applied` ([#10609](https://github.com/jdx/mise/pull/10609) by @jdx). - **bootstrap:** Declarative `[bootstrap.mise_shell_activate]` config plus `mise bootstrap shell apply/status` to install marker-delimited `mise activate`/`shims` snippets in bash, zsh, and fish rc files ([#10610](https://github.com/jdx/mise/pull/10610) by @jdx). - **bootstrap:** Path-keyed `[bootstrap.repos]` with `mise bootstrap repos apply/status` to clone/update git checkouts; runs after packages, before dotfiles, with `pre-repos`/`post-repos` hooks and safety checks for dirty trees and origin mismatches ([#10611](https://github.com/jdx/mise/pull/10611) by @jdx). - **bootstrap:** Restructured `mise bootstrap` subcommands so visible CLI mirrors config sections (`packages apply`, `dotfiles`, `mise-shell-activate`, `macos defaults`, `macos launchd-agents`, `linux systemd-units`, `repos`); legacy paths kept as hidden aliases ([#10613](https://github.com/jdx/mise/pull/10613) by @jdx). - **brew:** Built-in `brew-cask` installer now supports `binary` cask artifacts (e.g. 1Password CLI `op`), staging in the Caskroom and symlinking under the Homebrew prefix ([#10604](https://github.com/jdx/mise/pull/10604) by @jdx). - **backend:** Asset platform detection now recognizes `riscv64` (including `riscv64gc`) and `loongarch64`, so tools like `aqua:astral-sh/uv` install correctly on those hosts ([#10506](https://github.com/jdx/mise/pull/10506) by @elerch). ## Fixed - **which:** `mise which` now auto-enables `prefer_offline`, so binary lookups no longer make remote HTTP calls when an installed version satisfies the request, even with `minimum_release_age` configured ([#10595](https://github.com/jdx/mise/pull/10595) by @JamBalaya56562). - **sigstore:** Sigstore TUF root fetches honor `settings.url_replacements`, fixing aqua cosign-verified installs (e.g. `cosign@3.1.1`) behind a mirror; the embedded production root is still pinned so a mirror cannot forge trust ([#10596](https://github.com/jdx/mise/pull/10596) by @JamBalaya56562). - **config:** Treat symlinked global config paths as global so `~/.config/mise/conf.d/*.toml` on Fedora Atomic / ostree (`/home` -> `/var/home`) is no longer flagged as non-global and stripped ([#10597](https://github.com/jdx/mise/pull/10597) by @JamBalaya56562). - **config:** `mise set` and other TOML writes now target the nearest config directory before picking the lowest-precedence file in it, so nested projects no longer accidentally update a parent `mise.toml` ([#10603](https://github.com/jdx/mise/pull/10603) by @jdx). - **config:** Return a clean read-only error instead of panicking when something tries to write to an idiomatic version file (e.g. `mise use --path package.json`) ([#10602](https://github.com/jdx/mise/pull/10602) by @jdx). - **github:** `github::get_headers` returns an error rather than panicking on a relative URL, fixing an unwrap crash seen installing `aqua:jdx/aube@v1.24.0` ([#10591](https://github.com/jdx/mise/pull/10591) by @risu729). - **hook-env:** Suppress repeated untrusted-config warnings while staying in the same directory; leaving and re-entering, or editing `.mise.toml`, re-enables the warning, and explicit commands still report the full error ([#10589](https://github.com/jdx/mise/pull/10589) by @jdx). - **settings:** `mise settings set` for a brand-new dotted key no longer emits an empty `[settings]` header before the nested `[settings.foo]` table ([#10605](https://github.com/jdx/mise/pull/10605) by @jdx). - **completions:** Deduplicate plugin names in shell completion so `mise ls --installed` no longer surfaces duplicate `plugin@` entries ([#10351](https://github.com/jdx/mise/pull/10351) by @zeitlinger). ## Documentation - Added a `mise` song page ([#10614](https://github.com/jdx/mise/pull/10614) by @jdx). ## 💚 Sponsor mise mise is built by [@jdx](https://github.com/jdx) under [**en.dev**](https://en.dev) — an independent studio making developer tooling (mise, [aube](https://aube.en.dev/), and more). Development is funded by sponsors. If mise saves you or your team time, please consider sponsoring at [en.dev](https://en.dev). Individual and company sponsorships keep mise fast, free, and independent.