Skip to content

ci: Bump Base Space - #145

Open
weebo-update-cli[bot] wants to merge 12 commits into
mainfrom
updatecli_main_b2953c14201aba5345763c8e9cfb0eb24f27286e207e871bba1bfe716172de46
Open

ci: Bump Base Space#145
weebo-update-cli[bot] wants to merge 12 commits into
mainfrom
updatecli_main_b2953c14201aba5345763c8e9cfb0eb24f27286e207e871bba1bfe716172de46

Conversation

@weebo-update-cli

@weebo-update-cli weebo-update-cli Bot commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

Upgrade BaseSpace

Bump mise version

change detected: * key "$.base_tools.mise" updated from "v2026.9.1" to "v2026.9.2", in file "versions.yaml"

v2026.9.2
This is a large release headlined by the new stable `packslip:` backend for installing tools from a vendor's own signed release manifest, a read-only GitHub SSH relay for remote onboarding, redesigned install progress for both terminals and CI logs, and a rebuilt dotfiles-tracking model for bootstrap. It also carries dozens of fixes across shims, tasks, brew, Go, npm, and the schema, plus two security fixes.

## Highlights
- The `packslip:` backend is now generally available: install tools directly from a project's cryptographically signed release manifest, with signer pinning, trusted stampers, host-requirement checks, shell completions, and agent skills all driven from the same signed source.
- Install output was reimagined end to end. Interactive terminals get a live region with a fractional install-wide bar and permanent completion lines, while CI logs, pipes, and AI-agent terminals get a compact append-only reporter instead of thousands of scrolling rows.
- Bootstrap grows a read-only GitHub SSH relay and `--from-git` onboarding, an AUR package manager, and a rebuilt dotfiles-history model that tracks files through ordinary Git commits synchronized with an origin.

## Added
- **packslip:** New `packslip:` backend installs tools from a vendor-published, signed release manifest (a sigstore bundle) that names every artifact with its digest, platform, format, and executables. The tool name is a pin, like a `known_hosts` entry: `packslip:github.com/owner/repo` accepts only a packslip signed by that repository's release workflow, and signature, log entry, statement, digest, and size are all verified before anything is unpacked. Custom hosts and monorepo tools are supported. The backend is no longer experimental. ([#12778](https://github.com/jdx/mise/pull/12778), [#12811](https://github.com/jdx/mise/pull/12811) by @jdx)

  ```toml
  [tools]
  "packslip:github.com/oxc-project/oxc/oxlint" = "latest"
  ```
- **packslip:** Signer pinning remembers, per project, the signer that signed the first accepted release in a `pins.toml` file (like SSH's known_hosts) and records the signer in `mise.lock`, so a later release signed by anyone else, or one that weakens provenance, is refused. `mise packslip pins` lists what is pinned and `mise packslip forget <project>` accepts an announced key rotation. ([#12783](https://github.com/jdx/mise/pull/12783) by @jdx)
- **packslip:** New `packslip.stampers` setting lets you require that a trusted host has stamped a version before mise offers or installs it (a scanning service, a mirror, or eventually the registry), with a per-tool `trust = "vendor"` override. ([#12782](https://github.com/jdx/mise/pull/12782) by @jdx)
- **packslip:** Declared host requirements (OS/glibc minimums, shared libraries, required commands) are checked before download; confirmed failures refuse the install, gaps mise cannot verify warn only, and `ignore_requirements = true` overrides hard failures. `latest` also resolves from verified vendor recommendations. ([#12804](https://github.com/jdx/mise/pull/12804), [#12805](https://github.com/jdx/mise/pull/12805) by @jdx)
- **packslip:** A tool's packslip can ship shell completions and agent skills. `mise completion <shell> --tool <name>` prints (or `--install` writes a version-aware stub for) completions for whichever version is active in the current directory, and `mise skills ls` / `mise skills sync` link a tool's Agent Skills into `.claude/skills` at the pinned version. Completions are also loaded automatically in activated shells. ([#12779](https://github.com/jdx/mise/pull/12779), [#12780](https://github.com/jdx/mise/pull/12780), [#12848](https://github.com/jdx/mise/pull/12848) by @jdx)
- **install:** Redesigned install progress. Interactive terminals now show a live region with an install-wide fractional bar, per-tool phase/elapsed/artifact rows, dependency-wait rows ("waiting for node@24.20.0"), and permanent completion lines written into scrollback. `prune`, `uninstall`, and upgrade removals reuse the same session, so pruning hundreds of versions no longer floods the screen. ([#12906](https://github.com/jdx/mise/pull/12906) by @jdx)
- **install:** CI logs, pipes, and AI-agent terminals (`CLAUDECODE`/`AI_AGENT`) get a compact append-only reporter: one permanent line per finished tool plus a periodic snapshot of the bar, active phases, transfer rates, and queue count, instead of hundreds of scrolling status rows. Resolver hosts and retry progress are surfaced too. ([#12902](https://github.com/jdx/mise/pull/12902), [#12907](https://github.com/jdx/mise/pull/12907) by @jdx)
- **ssh:** New `mise ssh` runs ordinary OpenSSH sessions with optional session-scoped, read-only GitHub access, and `mise bootstrap remote --from-git` onboards a remote host from a Git repo. The initiating machine keeps the credential and brokers authorized clone/fetch and REST reads over an SSH Unix-socket forward; no token is installed on the target. ([#12830](https://github.com/jdx/mise/pull/12830) by @jdx)

  ```sh
  mise ssh devbox --github-relay-read-only --github-relay-repo jdx/dotfiles
  ```
- **bootstrap:** `mise bootstrap --from-git <GIT_URL>` clones a repository-backed global config into `$MISE_CONFIG_DIR` so its `config.toml`, `conf.d/`, and tasks apply on the first bootstrap and stay active afterward. ([#12715](https://github.com/jdx/mise/pull/12715) by @jdx)
- **bootstrap:** New `aur:` package manager installs from the Arch User Repository via `yay` (preferred) or `paru`, with foreign-package status detection so repo packages with colliding names cannot satisfy an AUR request. Bootstrap can also declare packages as absent to remove them, and now reports which root declarations were selected. ([#12718](https://github.com/jdx/mise/pull/12718), [#12716](https://github.com/jdx/mise/pull/12716), [#12770](https://github.com/jdx/mise/pull/12770) by @jdx)
- **bootstrap:** Rebuilt dotfiles tracking. Files enrolled with `mode = "track"` stay in place while mise commits changes to a separate bare Git store with checkpoints, rollback/undo, and optional origin synchronization, including encryption of shared files before storage. ([#12918](https://github.com/jdx/mise/pull/12918) by @jdx)
- **activate:** New `activate_shims = false` (`MISE_ACTIVATE_SHIMS=false`) keeps tool shim directories off PATH during activation and hooks without changing your auto-install or lazy-tool settings. Command wrappers such as mr-boxington's `cargo` keep working. ([#12926](https://github.com/jdx/mise/pull/12926) by @jdx)
- **core:** Rust tools accept `mr_boxington = true` and `mise use` gains a repeatable `--tool-option KEY=VALUE` flag, so setting up the Cargo wrapper is a single command. ([#12908](https://github.com/jdx/mise/pull/12908) by @jdx)

  ```sh
  mise use --tool-option mr_boxington=true rust mr-boxington
  ```
- **ruby:** mise now reads Bundler's `ruby file: ".ruby-version"` form from a `Gemfile` (resolving the path next to the Gemfile), so projects that pin Ruby through a sibling file resolve correctly. ([#12914](https://github.com/jdx/mise/pull/12914) by @jdx)
- **self-update:** New global-only `self_update.repository` and `self_update.api_url` settings let organizations point manual updates, out-of-date hints, and automatic updates at a curated GitHub or GitHub Enterprise release mirror. Project config cannot redirect updates, and artifacts still pass the embedded-signature check. ([#12735](https://github.com/jdx/mise/pull/12735) by @jdx)
- **backend:** `install_env` is now applied when resolving and downloading tools, not just at build time. ([#12777](https://github.com/jdx/mise/pull/12777) by @rabadin)
- **brew:** mise can now evaluate ordinary third-party taps. ([#12774](https://github.com/jdx/mise/pull/12774) by @jdx)

## Fixed
- **shim:** Lazy tool names now match on Windows, and `mise-shim.exe` resolves correctly through a symlinked `mise.exe`. ([#12699](https://github.com/jdx/mise/pull/12699) by @jdx, [#12915](https://github.com/jdx/mise/pull/12915) by @acooler15)
- **activate:** Paths are translated for the calling Windows POSIX shell, and PowerShell pipeline input is now forwarded. ([#12736](https://github.com/jdx/mise/pull/12736), [#12925](https://github.com/jdx/mise/pull/12925) by @jdx)
- **nushell:** The activation prelude preserves the PATH list type. ([#12754](https://github.com/jdx/mise/pull/12754) by @Junaid-PK)
- **task:** Task globs no longer loop on symlinks, `sources` accepts a single string, task status is preserved when the cache audit tracer fails, and POSIX shells no longer have PATH pre-converted (the shell already does it). ([#12711](https://github.com/jdx/mise/pull/12711), [#12769](https://github.com/jdx/mise/pull/12769) by @jdx, [#12530](https://github.com/jdx/mise/pull/12530) by @risu729, [#12696](https://github.com/jdx/mise/pull/12696) by @JamBalaya56562)
- **npm:** Global installs now work with pnpm 12. ([#12717](https://github.com/jdx/mise/pull/12717) by @jdx)
- **go:** Private modules resolve via Go, and loong64 uses the correct artifact architecture. ([#12731](https://github.com/jdx/mise/pull/12731) by @kejne, [#12767](https://github.com/jdx/mise/pull/12767) by @jdx)
- **brew:** A tapped install now explains why it found no API metadata, and all tap formula layouts are supported. brew-cask packages with `auto_updates` enabled are upgraded correctly. ([#12645](https://github.com/jdx/mise/pull/12645) by @Marukome0743, [#12837](https://github.com/jdx/mise/pull/12837) by @soodoh, [#12857](https://github.com/jdx/mise/pull/12857) by @himkt)
- **github:** Releases with no assets are omitted from the version list, and OAuth-refresh warnings are silenced during env export and shown only once when a refresh is rejected. ([#12572](https://github.com/jdx/mise/pull/12572) by @Marukome0743, [#12855](https://github.com/jdx/mise/pull/12855), [#12911](https://github.com/jdx/mise/pull/12911) by @jdx)
- **config:** Every newly added `.tool-versions` line is now terminated with a newline. ([#12740](https://github.com/jdx/mise/pull/12740) by @dylanpulver)
- **env:** Bootstrap shims for lazy tools are created when printing the env, and duplicate unset directives are removed from hook output. ([#12726](https://github.com/jdx/mise/pull/12726) by @hktitof, [#12707](https://github.com/jdx/mise/pull/12707) by @jdx)
- **http:** A failed download's partial file is flushed before giving up, and cache compression finishes before files are published. ([#12823](https://github.com/jdx/mise/pull/12823) by @Marukome0743, [#12894](https://github.com/jdx/mise/pull/12894) by @jdx)
- **bootstrap:** Tera templates render in hooks, tildes expand in managed file sources, and the relative config dir is pinned during reexec. ([#12727](https://github.com/jdx/mise/pull/12727), [#12768](https://github.com/jdx/mise/pull/12768), [#12721](https://github.com/jdx/mise/pull/12721) by @jdx)
- **backend:** Disabled plugins are excluded from shorthand resolution, and installed plugins are included in plugin completion. ([#12927](https://github.com/jdx/mise/pull/12927), [#12720](https://github.com/jdx/mise/pull/12720) by @jdx)
- **rust:** Incomplete rustup toolchains are reconciled. ([#12771](https://github.com/jdx/mise/pull/12771) by @jdx)
- **oci/vfox/aqua:** OCI reused tool layers preserve their paths, vfox preserves the tool name from legacy lockfiles, and aqua handles repository transfers in attestations. ([#12749](https://github.com/jdx/mise/pull/12749), [#12745](https://github.com/jdx/mise/pull/12745), [#12766](https://github.com/jdx/mise/pull/12766) by @jdx)
- **sandbox:** `SYS_fork`/`SYS_vfork` are omitted on aarch64. ([#12807](https://github.com/jdx/mise/pull/12807) by @jamescassell)
- **dotfiles:** A stale directory the deeper walk already removed is tolerated. ([#12697](https://github.com/jdx/mise/pull/12697) by @vladbisceanu)
- **schema:** Absent bootstrap packages, inline dotfile content, and missing built-in deps providers are now modeled. ([#12785](https://github.com/jdx/mise/pull/12785) by @nettlesh, [#12738](https://github.com/jdx/mise/pull/12738), [#12739](https://github.com/jdx/mise/pull/12739) by @risu729)
- **lockfile:** The deferred provenance baseline is dropped once auto-lock verifies the upgrade. ([#12825](https://github.com/jdx/mise/pull/12825) by @jdx)

## Security
- **http:** URL replacements no longer forward authorization headers or URL credentials when an HTTPS origin is rewritten to HTTP; such credential-carrying downgrades are refused, and errors omit URLs so embedded credentials cannot leak through diagnostics. ([#12879](https://github.com/jdx/mise/pull/12879) by @jdx)
- **self-update:** Self-update now requires secure release sources. ([#12737](https://github.com/jdx/mise/pull/12737) by @jdx)

## New Contributors
* @acooler15 made their first contribution in [#12915](https://github.com/jdx/mise/pull/12915)
* @soodoh made their first contribution in [#12837](https://github.com/jdx/mise/pull/12837)
* @jamescassell made their first contribution in [#12807](https://github.com/jdx/mise/pull/12807)
* @nettlesh made their first contribution in [#12785](https://github.com/jdx/mise/pull/12785)
* @Junaid-PK made their first contribution in [#12754](https://github.com/jdx/mise/pull/12754)
* @kejne made their first contribution in [#12731](https://github.com/jdx/mise/pull/12731)
* @dylanpulver made their first contribution in [#12740](https://github.com/jdx/mise/pull/12740)
* @Svector-anu made their first contribution in [#12714](https://github.com/jdx/mise/pull/12714)
* @vladbisceanu made their first contribution in [#12697](https://github.com/jdx/mise/pull/12697)

**Full Changelog**: https://github.com/jdx/mise/compare/v2026.9.1...v2026.9.2

## 💚 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.
v2026.9.1
This release expands bootstrap system setup with firewall rate limiting and more systemd directives, adds a scoped locked mode for mixing distribution and user tool policies, and fixes lazy tools so they install when invoked from tasks and `mise x`.

## Added
- **bootstrap:** New `action = "limit"` for incoming TCP firewall rules rate-limits connections per source. It maps to UFW's native limiting and bounded per-source IPv4/IPv6 nftables meters; firewalld fails closed since it cannot express safe per-source limiting. Limit rules are treated as preserving SSH access by the lockout guard. ([#12669](https://github.com/jdx/mise/pull/12669) by @jdx)
- **bootstrap:** Bootstrap systemd units now support `requires` (`Requires=`), repeatable `environment_file` (`EnvironmentFile=`), `nice`, and `umask`, with validation for nice ranges (-20 to 19) and octal umasks. Note that `requires` does not imply ordering; use `after` for that. ([#12683](https://github.com/jdx/mise/pull/12683) by @jdx)
- **config:** New global-only `locked_scopes` setting (also `MISE_LOCKED_SCOPES`) lets you scope locked mode to specific config sources, so a distribution can ship rolling or lazy tools through `/etc/mise/config.toml` without forcing users to maintain a system lockfile. Defaults to all three scopes to preserve existing behavior. ([#12667](https://github.com/jdx/mise/pull/12667) by @jdx)

  ```toml
  [settings]
  locked_scopes = ["project", "global"]
  ```

## Fixed
- **task:** Lazy tools (`lazy = true`) now install when their command is invoked from a `mise run` task or `mise x`, matching the behavior of an activated shell. mise inserts the shim farms after real tool paths for lazy toolsets and reconciles missing bootstrap shims for hand-edited declarations, so tasks no longer fail with `command: not found`. ([#12687](https://github.com/jdx/mise/pull/12687) by @jdx)
- **env:** Environment variables configured for removal (`false` values and unset directives) are now consistently unset across `mise exec`, tasks, `mise env`, hook-env, deps, and tool stubs, so inherited or secret variables are no longer leaked back into child processes. ([#12664](https://github.com/jdx/mise/pull/12664) by @jdx)
- **shim:** `mise reshim` can now safely target shared executable directories like `~/.local/bin` or `/usr/local/bin`. It identifies mise-owned shims and only replaces or prunes those, leaving unmanaged files and symlinks in place, and `--force` rebuilds mise-owned shims rather than wiping the whole directory. ([#12675](https://github.com/jdx/mise/pull/12675) by @jdx)
- **brew-cask:** Cask binaries that reference their surrounding extracted payload now keep that payload beside the staged binary, so tools like `codex` that exec helpers or read manifests from their own tree continue working after temporary install files are cleaned up. ([#12686](https://github.com/jdx/mise/pull/12686) by @azohra)
- **upgrade:** Fixed recursive deferred tool pruning that could hang new terminals when prompt hooks triggered a full tracked-config scan. Deferred cleanup now takes a non-blocking lock and is skipped for shell-integration and `--no-config` commands. ([#12676](https://github.com/jdx/mise/pull/12676) by @jdx)
- **install:** Install failures caused by a missing marker file now name the affected file and operation instead of reporting a bare OS error. ([#12624](https://github.com/jdx/mise/pull/12624) by @JamBalaya56562)
- **install:** `mise install --dry-run` for an s3 tool that only declares a URL for another platform now reports the missing platform and available options instead of falsely claiming it would install. ([#12641](https://github.com/jdx/mise/pull/12641) by @hktitof)

## Changed
- **registry:** Registry command (shim) names are now inferred from the preferred Aqua package at build time, removing redundant `bins` declarations from hundreds of registry entries. Explicit `bins` are kept only where mise intentionally exposes a different command set, and `mise registry --json` exposes the inferred names. ([#12668](https://github.com/jdx/mise/pull/12668) by @jdx)

## New Contributors
* @azohra made their first contribution in [#12686](https://github.com/jdx/mise/pull/12686)
* @hktitof made their first contribution in [#12641](https://github.com/jdx/mise/pull/12641)

**Full Changelog**: https://github.com/jdx/mise/compare/v2026.9.0...v2026.9.1

## 💚 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.
v2026.9.0
This release introduces lazy tool shims, which install a tool automatically the first time one of its commands is invoked, plus an opt-in Erlang precompiled OS override and a fix for nested `mise` calls during postinstall hooks.

## Added
- **tools:** Declare a tool as lazy in `[tools]` with `lazy = true` and mise generates bootstrap shims into its normal user/system shim farms. The provider is installed only when one of its commands is first called, then executes immediately; subsequent calls run the real binary without another mise dispatch. Registry tools derive their command names from registry `bins`, while explicit or non-registry backends declare them with `lazy_bins`. A bare `mise install` skips lazy declarations; use `mise install --include-lazy` to provision them all. New global path settings (`shims_dir`/`MISE_SHIMS_DIR`, `system_installs_dir`/`MISE_SYSTEM_INSTALLS_DIR`, `system_shims_dir`/`MISE_SYSTEM_SHIMS_DIR`) and `mise reshim --system` support system-scoped and collocated layouts. ([#12594](https://github.com/jdx/mise/pull/12594) by @jdx)

  ```toml
  [tools]
  node = { version = "24", lazy = true }
  "github:example/acme" = { version = "1.2.3", lazy = true, lazy_bins = ["acme", "acmectl"] }
  ```
- **erlang:** New `erlang.precompiled_os` setting (and `MISE_ERLANG_PRECOMPILED_OS`) opts into a specific Bob Ubuntu build target—including Ubuntu 26.04—on compatible glibc distributions. Automatic target detection is unchanged, and lockfiles now preserve the selected OS for reproducible builds. Note the portability constraints around shared-library SONAMEs documented with the setting. ([#12637](https://github.com/jdx/mise/pull/12637) by @jdx)

## Fixed
- **install:** Postinstall hooks now activate the exact tool version being installed, so nested `mise` invocations (such as `mise which` or `mise ls`) resolve that version instead of an older discoverable one—or losing the tool entirely when it was declared through a custom config path with `mise use --path`. ([#12635](https://github.com/jdx/mise/pull/12635) by @jdx)

## Registry
- Added `engram` ([#12480](https://github.com/jdx/mise/pull/12480) by @AndryOre)
- Added `gentle-ai` ([aqua:Gentleman-Programming/gentle-ai](https://github.com/Gentleman-Programming/gentle-ai)) ([#12444](https://github.com/jdx/mise/pull/12444) by @AndryOre)

## New Contributors
* @AndryOre made their first contribution in [#12444](https://github.com/jdx/mise/pull/12444)

**Full Changelog**: https://github.com/jdx/mise/compare/v2026.8.16...v2026.9.0

## 💚 Sponsor mise

mise is maintained by [@jdx](https://github.com/jdx), an open source developer for [**entire.io**](https://entire.io), the title sponsor of the [jdx.dev](https://jdx.dev) open source tools. Development is funded by sponsors.

If mise saves you or your team time, please consider sponsoring at [jdx.dev](https://jdx.dev/sponsors.html). Individual and company sponsorships keep mise fast, free, and independent.
v2026.8.16
This release adds configurable command wrappers for intercepting ordinary commands, alongside a batch of shell and PATH fixes that make Windows activation more reliable and clearer upgrade and error messaging.

## Added
- **shims:** New `[wrappers]` config lets you intercept an ordinary command name with a different command, arguments, and environment. Wrappers take precedence over mise-managed tools, and mise strips its dispatch directories before delegating so the underlying tool still resolves from mise or the system. Works with normal activation, `activate --shims`, and `mise exec`; managed wrapper shims are refreshed by `mise reshim`. ([#12617](https://github.com/jdx/mise/pull/12617) by @jdx)

  ```toml
  [tools]
  mr-boxington = "1.1.0"

  [wrappers.cargo]
  command = "mbx"
  env = { MBX_CARGO_SHIM_MODE = "1" }
  ```

## Fixed
- **elvish:** `mise env` and `mise activate --shims` now emit valid Elvish quoting instead of bash's. This fixes several corruptions that mostly surfaced on Windows: stray quotes and the wrong PATH separator in `activate --shims`, apostrophes and `!` arriving with backslashes, and `\n` sequences in paths like `C:\nodejs` being turned into newlines. ([#12584](https://github.com/jdx/mise/pull/12584) by @JamBalaya56562)
- **fish:** `mise env -s fish` now splits PATH on the host's separator and recognizes the `Path` spelling on Windows, so semicolon-separated Windows paths are no longer severed at each drive letter. Empty PATH segments are dropped rather than adding the current directory. ([#12582](https://github.com/jdx/mise/pull/12582) by @JamBalaya56562)
- **http:** The "No URL for platform" error now lists every platform key a tool actually declares in `mise.toml`, including typos and unrecognized names, instead of falling back to a misleading "requires 'url' option" message with an empty available list. ([#12580](https://github.com/jdx/mise/pull/12580) by @JamBalaya56562)
- **upgrade:** When tools are current for their configured version ranges but newer releases exist beyond those ranges, `mise upgrade` no longer prints "All tools are up to date". It now lists the affected tools with their current and available versions plus the config source, and points to `mise upgrade --bump`. ([#12613](https://github.com/jdx/mise/pull/12613) by @jdx)

  ```text
  Newer versions are available but do not match the configured version ranges:
    node 26.7.0 → 26.8.1 (~/.config/mise/config.toml)
  Run `mise upgrade --bump` to update the configuration and upgrade.
  ```
- **task:** Double-dash task arguments are now preserved with `double_dash="preserve"`. The first `--` separator was previously consumed by the outer CLI parser and lost before reaching the task. ([#12628](https://github.com/jdx/mise/pull/12628) by @jdx)
- **npm:** Embedded Aube npm installs are now isolated as a standalone one-package workspace, so a `pnpm-workspace.yaml` above `MISE_DATA_DIR` can no longer redirect the install into the outer workspace or mutate it. This mainly affects GitLab CI layouts where the data dir lives under `CI_PROJECT_DIR`. ([#12630](https://github.com/jdx/mise/pull/12630) by @jdx)
- **bootstrap:** Repository status checks now honor the global `--jobs` limit, so `mise bootstrap` status, apply, and update run these read-only git checks with bounded concurrency. ([#12629](https://github.com/jdx/mise/pull/12629) by @jdx)

## Changed
- **registry:** `acli`, `mimirtool`, and `specstory` are no longer restricted to Linux and macOS and can now be installed and run on Windows. ([#12627](https://github.com/jdx/mise/pull/12627) by @JamBalaya56562)
- **registry:** `llama.cpp` resolution now includes prereleases, since upstream began flagging its rolling `bNNNN` builds as GitHub prereleases. The existing minimum-release-age and `b` version prefix behavior is unchanged. ([#12614](https://github.com/jdx/mise/pull/12614) by @jdx)

**Full Changelog**: https://github.com/jdx/mise/compare/v2026.8.15...v2026.8.16

## 💚 Sponsor mise

mise is maintained by [@jdx](https://github.com/jdx), an open source developer for [**entire.io**](https://entire.io), the title sponsor of the [jdx.dev](https://jdx.dev) open source tools. Development is funded by sponsors.

If mise saves you or your team time, please consider sponsoring at [jdx.dev](https://jdx.dev/sponsors.html). Individual and company sponsorships keep mise fast, free, and independent.
v2026.8.15
This release expands the dotfiles/bootstrap workflow with previews, bulk capture, git-tracked manifests, and profile reconciliation, adds scoped config collection updates and per-tool postinstall hooks, and rounds it out with a large batch of fixes across tasks, schema validation, Windows, lockfiles, and shims.

## Highlights
- Dotfiles management grows a full preview-and-capture workflow: `mise bootstrap dotfiles diff`, bulk `add --changed`, git-tracked directory manifests, and automatic reconciliation when a profile switches a target's source.
- `mise config set` learns idempotent list updates (`--append`/`--remove`) and explicit `--global`/`--system` targeting, and `mise use` gains per-tool `--postinstall` hooks.
- Safer upgrades: replaced tool versions now linger for a grace period instead of being deleted immediately, so a bad upgrade is easier to recover from.

## Added
- **dotfiles:** New `mise bootstrap dotfiles diff` previews exactly what `apply` would change without writing anything, printing unified content patches for copy, template, and inline entries and structural summaries for symlinks and directories. Optional target filters use the same selection semantics as `apply`. ([#12511](https://github.com/jdx/mise/pull/12511) by @jdx)
- **dotfiles:** `mise bootstrap dotfiles add --changed` captures every drifted copy-mode target back into its source in one command, without naming each path. Directory copies, symlinks, templates, and inline content are skipped, and untrusted configs are blocked. ([#12512](https://github.com/jdx/mise/pull/12512) by @jdx)
- **dotfiles:** Directory `copy` and `symlink-each` entries can now set `manifest = "git"` to manage only paths returned by `git ls-files`, so a dotfiles repo that `gitignore`s everything and force-adds selected paths no longer traverses (or links) ignored home-directory content. Links are removed when a file drops out of the index. ([#12523](https://github.com/jdx/mise/pull/12523) by @jdx)
- **dotfiles:** `symlink-each` apply now reconciles stale links when a profile change (for example toggling `MISE_ENV` between home and work) points a target at a different source. Only links still pointing at the previously recorded source are removed; unmanaged paths and paths desired by another active source are left alone, and dry-run previews the removals. ([#12524](https://github.com/jdx/mise/pull/12524) by @jdx)
- **bootstrap:** `mise bootstrap --from <git-url>` clones a setup/dotfiles repo (into `$MISE_DATA_DIR/bootstrap-repo` by default, or `--from-dir`), then runs bootstrap from that checkout. Existing checkouts are reused when the origin matches, `--update` fast-forwards them, and `--dry-run` only prints the planned `git clone`/`git pull`. ([#12525](https://github.com/jdx/mise/pull/12525) by @jdx)
- **use:** `mise use --postinstall <COMMAND>` attaches a per-tool post-install hook that runs only when that tool is installed or reinstalled. Repeat the flag before each tool to give each its own hook. ([#12609](https://github.com/jdx/mise/pull/12609) by @jdx)

  ```sh
  mise use --postinstall "mbx setup --defaults" mr-boxington
  ```
- **config:** `mise config set` gains `--append` and `--remove` for list-like keys (append without duplicates, remove matching entries, promote scalars to arrays as needed) while preserving TOML comments and formatting, plus explicit `--global`/`--system` targeting for `config get`/`set`. Tool postinstall hooks now also receive `MISE_CONFIG_FILE`, `MISE_GLOBAL_CONFIG_FILE`, `MISE_CONFIG_ROOT`, and `MISE_PROJECT_ROOT`. ([#12603](https://github.com/jdx/mise/pull/12603) by @jdx)
- **config:** Templates can now reference `config_source`, the absolute path of the config file the template lives in (not resolved through symlinks). This lets a shared config symlinked into `conf.d` add its own real directory to `PATH`, for example `{{ config_source | canonicalize | dirname }}/bin`. Available in `mise.toml`, `.tool-versions`, `[env]` directives, and `[settings.age]`. ([#12454](https://github.com/jdx/mise/pull/12454) by @Marukome0743)
- **task:** `task_source_files(only_changed=true)` returns only the sources written since the task last succeeded, so linters and formatters can run against just what changed. A failed run keeps its files outstanding until the task passes. ([#12470](https://github.com/jdx/mise/pull/12470) by @Marukome0743)
- **outdated:** `mise outdated --json` now includes a `release_url` field pointing at the release page for the offered version (from the versions host, aqua, GitHub/GitLab, or the rust core plugin). The key is omitted rather than null when no page is available. ([#12494](https://github.com/jdx/mise/pull/12494) by @Marukome0743)

## Changed
- **upgrade:** `mise upgrade` no longer deletes the replaced install immediately. When `upgrade.auto_prune` is on, the old version stays on disk and is scheduled for removal after `upgrade.prune_after` (default 24h), cleaned up opportunistically on later runs. `--prune` still removes immediately and `--no-prune` keeps the old tree with no scheduled cleanup. `mise ls` surfaces deferred removals. ([#12593](https://github.com/jdx/mise/pull/12593) by @jdx)

## Fixed
- **env,tasks:** `.env` files written as UTF-16 (the default from Windows PowerShell 5.1's `>` and `Out-File`) are now decoded and loaded instead of being silently dropped, and a UTF-16 task file now gets a clear hint to save it as UTF-8. ([#12507](https://github.com/jdx/mise/pull/12507) by @JamBalaya56562)
- **install:** `mise install --dry-run` no longer claims it would install a tool that cannot actually be installed on this platform. ([#12568](https://github.com/jdx/mise/pull/12568) by @JamBalaya56562)
- **exec:** `mise exec` now reports clearly when a requested tool is not available on the current platform. ([#12547](https://github.com/jdx/mise/pull/12547) by @JamBalaya56562)
- **config:** Request-specific tool options are preserved rather than dropped during config merges. ([#12060](https://github.com/jdx/mise/pull/12060) by @risu729)
- **config:** A bare `tool_alias` value is now resolved through the registry. ([#12506](https://github.com/jdx/mise/pull/12506) by @Marukome0743)
- **config:** Minimum-release-age exclusions from multiple configs are merged instead of overwritten. ([#12460](https://github.com/jdx/mise/pull/12460) by @jdx)
- **lockfile:** Version ties are broken correctly when a legacy lockfile answers `latest`, and links belonging to other backends are ignored. ([#12583](https://github.com/jdx/mise/pull/12583), [#12605](https://github.com/jdx/mise/pull/12605) by @Marukome0743, @jdx)
- **monorepo:** Idiomatic version files are resolved from the task's own config root. ([#12565](https://github.com/jdx/mise/pull/12565) by @kaii-zen)
- **task:** Several ordering fixes so injected and dependency tasks keep their intended slots, tasks that link back into themselves are skipped, and `taskkill` output is suppressed on Windows. ([#12450](https://github.com/jdx/mise/pull/12450), [#12466](https://github.com/jdx/mise/pull/12466), [#12482](https://github.com/jdx/mise/pull/12482), [#12510](https://github.com/jdx/mise/pull/12510), [#12563](https://github.com/jdx/mise/pull/12563) by @Marukome0743, @jrandolf, @JamBalaya56562, @sortA0329)
- **shims/generate:** Arguments are now delivered intact for `file`-mode shims and Windows launchers, and `mise generate` explains when a `--mise-bin` path has no Windows launcher. Non-executable system fallbacks are skipped. ([#12502](https://github.com/jdx/mise/pull/12502), [#12463](https://github.com/jdx/mise/pull/12463), [#12496](https://github.com/jdx/mise/pull/12496), [#12545](https://github.com/jdx/mise/pull/12545) by @JamBalaya56562, @jdx)
- **http:** Raw binaries are copied on Windows where a junction cannot name a file, and a download that fails because the path is too long now explains itself. ([#12465](https://github.com/jdx/mise/pull/12465), [#12550](https://github.com/jdx/mise/pull/12550) by @Marukome0743, @JamBalaya56562)
- **link/file:** Links whose target no longer exists can now be shown and removed. ([#12468](https://github.com/jdx/mise/pull/12468), [#12469](https://github.com/jdx/mise/pull/12469) by @JamBalaya56562)
- **trust:** The ignore list is now read by what its entries point at, matching how trust links are stored. ([#12428](https://github.com/jdx/mise/pull/12428) by @JamBalaya56562)
- **watch:** The terminal is restored when the watched process is signalled. ([#12451](https://github.com/jdx/mise/pull/12451) by @Marukome0743)
- **activate:** The pwsh deactivation preamble no longer pollutes `$Error`. ([#12483](https://github.com/jdx/mise/pull/12483) by @JamBalaya56562)
- **backend:** Rolling updates behind a versions host are now detected. ([#12440](https://github.com/jdx/mise/pull/12440) by @jdx)
- **github:** Stale cached attestations are retried. ([#12495](https://github.com/jdx/mise/pull/12495) by @jdx)
- **ls-remote:** Recorded listing errors now cause a failure instead of returning stale/empty results. ([#12551](https://github.com/jdx/mise/pull/12551) by @jdx)
- **npm:** Dangling aube-backed tool installs are repaired. ([#12570](https://github.com/jdx/mise/pull/12570) by @jdx)
- **bootstrap:** Brew cask dependencies are preserved during prune. ([#12461](https://github.com/jdx/mise/pull/12461) by @jdx)
- **azure:** The CLI now includes pip for extension support. ([#12555](https://github.com/jdx/mise/pull/12555) by @esteve)
- **registry:** Windows/arm64 can fall back to x64 backends, as aqua already does. ([#12560](https://github.com/jdx/mise/pull/12560) by @JamBalaya56562)
- **doctor:** The self-update leftover check is gated so it does not fire for installs that manage updates elsewhere. ([#12438](https://github.com/jdx/mise/pull/12438) by @salim-b)
- **schema:** Several JSON schema corrections so registry, plugin, tool-option, and settings definitions match what the build consumers actually accept. ([#12514](https://github.com/jdx/mise/pull/12514), [#12515](https://github.com/jdx/mise/pull/12515), [#12520](https://github.com/jdx/mise/pull/12520), [#12522](https://github.com/jdx/mise/pull/12522), [#12527](https://github.com/jdx/mise/pull/12527) by @risu729)

## Performance
- **brew:** Homebrew bootstrap bottles are now downloaded concurrently (bounded by `MISE_JOBS`), while pouring, source builds, and prefix linking stay in dependency order. ([#12604](https://github.com/jdx/mise/pull/12604) by @jdx)

## Registry
New tools: pkgx, onefetch, syncthing, ols, spin-framework, cursor-agent, 7zip, mosh, pastel, broot, exiftool, spotify-player, yt-dlp-nightly, and cliamp. magika and sbt now install from their GitHub releases, and pre-commit uses the pipx backend on Windows. Various dependency and OS-limit cleanups were also applied. ([#12272](https://github.com/jdx/mise/pull/12272), [#12437](https://github.com/jdx/mise/pull/12437), [#12448](https://github.com/jdx/mise/pull/12448), [#12484](https://github.com/jdx/mise/pull/12484), [#12485](https://github.com/jdx/mise/pull/12485), [#12478](https://github.com/jdx/mise/pull/12478), [#12486](https://github.com/jdx/mise/pull/12486), [#12532](https://github.com/jdx/mise/pull/12532), [#12535](https://github.com/jdx/mise/pull/12535), [#12533](https://github.com/jdx/mise/pull/12533), [#12538](https://github.com/jdx/mise/pull/12538), [#12539](https://github.com/jdx/mise/pull/12539), [#12542](https://github.com/jdx/mise/pull/12542), [#12581](https://github.com/jdx/mise/pull/12581), [#12553](https://github.com/jdx/mise/pull/12553), [#12567](https://github.com/jdx/mise/pull/12567), [#12549](https://github.com/jdx/mise/pull/12549))

## New Contributors
- @sortA0329 made their first contribution in [#12563](https://github.com/jdx/mise/pull/12563)
- @seuros made their first contribution in [#12519](https://github.com/jdx/mise/pull/12519)
- @pb3975 made their first contribution in [#12478](https://github.com/jdx/mise/pull/12478)
- @ThorstenHans made their first contribution in [#12485](https://github.com/jdx/mise/pull/12485)

**Full Changelog**: https://github.com/jdx/mise/compare/v2026.8.14...v2026.8.15

## 💚 Sponsor mise

mise is maintained by [@jdx](https://github.com/jdx), an open source developer for [**entire.io**](https://entire.io), the title sponsor of the [jdx.dev](https://jdx.dev) open source tools. Development is funded by sponsors.

If mise saves you or your team time, please consider sponsoring at [jdx.dev](https://jdx.dev/sponsors.html). Individual and company sponsorships keep mise fast, free, and independent.
v2026.8.14
This is a small release focused on bug fixes for npm (aube-backed) installs, HTTP cache cleanup, and Windows config pruning.

## Fixed
- **npm:** Aube-backed npm installs no longer drop a synthetic `.npmrc` into the per-tool install directory. Install-scoped settings such as `minimumReleaseAge`, `trustPolicyExclude`, `allowedUnpopularPackages`, and (for CLI installs) `globalDir`/`globalBinDir` now go into `.config/aube/config.toml` as typed TOML, while `allowBuilds` stays in `package.json`. Inline-table `trust_policy_excludes` / `allow_low_downloads` in `mise.toml` still round-trip correctly. ([#12425](https://github.com/jdx/mise/pull/12425) by @jdx)
- **npm:** mise now intercepts the private `__node-gyp-bootstrap` trampoline that embedded aube's lazy `node-gyp` shim re-execs. Previously naked-run rewriting turned it into `mise run __node-gyp-bootstrap …` and failed with "no tasks defined", breaking `allow_builds` installs whose lifecycle scripts call `node-gyp` (for example gemini-cli via node-pty). ([#12429](https://github.com/jdx/mise/pull/12429) by @jdx)
- **http:** A failed extraction (truncated download, unreadable archive, full disk, or Ctrl-C mid-extraction) no longer leaves a permanent hash-named temp directory behind in `http-tarballs`. All failure paths now clean up the temp directory. ([#12420](https://github.com/jdx/mise/pull/12420) by @Marukome0743)
- **prune:** `mise prune --configs` on Windows now removes trusted config links whose target no longer exists. Because Windows stores these links as plain files holding the target path, the previous existence check never fired; the link's target is now resolved before deciding whether to prune. ([#12418](https://github.com/jdx/mise/pull/12418) by @JamBalaya56562)

**Full Changelog**: https://github.com/jdx/mise/compare/v2026.8.13...v2026.8.14

## 💚 Sponsor mise

mise is maintained by [@jdx](https://github.com/jdx), an open source developer for [**entire.io**](https://entire.io), the title sponsor of the [jdx.dev](https://jdx.dev) open source tools. Development is funded by sponsors.

If mise saves you or your team time, please consider sponsoring at [jdx.dev](https://jdx.dev/sponsors.html). Individual and company sponsorships keep mise fast, free, and independent.
GitHub Action workflow link
Updatecli logo

Created automatically by Updatecli

Options:

Most of Updatecli configuration is done via its manifest(s).

  • If you close this pull request, Updatecli will automatically reopen it, the next time it runs.
  • If you close this pull request and delete the base branch, Updatecli will automatically recreate it, erasing all previous commits made.

Feel free to report any issues at github.com/updatecli/updatecli.
If you find this tool useful, do not hesitate to star our GitHub repository as a sign of appreciation, and/or to tell us directly on our chat!

Made with ❤️️ by updatecli
@weebo-update-cli
weebo-update-cli Bot force-pushed the updatecli_main_b2953c14201aba5345763c8e9cfb0eb24f27286e207e871bba1bfe716172de46 branch from cd8566e to 96e80d1 Compare August 17, 2026 23:33
GitHub Actions Bot added 11 commits August 20, 2026 00:07
Made with ❤️️ by updatecli
Made with ❤️️ by updatecli
Made with ❤️️ by updatecli
Made with ❤️️ by updatecli
Made with ❤️️ by updatecli
Made with ❤️️ by updatecli
Made with ❤️️ by updatecli
Made with ❤️️ by updatecli
Made with ❤️️ by updatecli
Made with ❤️️ by updatecli
Made with ❤️️ by updatecli
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants