Skip to content

chore(deps): update dependency jdx/mise to v2026 - #220

Open
renovate[bot] wants to merge 1 commit into
scipfrom
renovate/jdx-mise-2026.x
Open

chore(deps): update dependency jdx/mise to v2026#220
renovate[bot] wants to merge 1 commit into
scipfrom
renovate/jdx-mise-2026.x

Conversation

@renovate

@renovate renovate Bot commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Type Update New value References Sourcegraph
jdx/mise uses-with major 2026.9.6 source code search for "jdx/mise"

Test plan: CI should pass with updated dependencies. No review required: this is an automated dependency update PR.


Release Notes

jdx/mise (jdx/mise)

v2026.9.6: : Project daemons, mise doctor project, and vfox backend tool discovery

Compare Source

This release adds experimental project daemons backed by pitchfork, a mise doctor project command for project-declared diagnostic checks, and tool discovery from vfox backend plugins in mise search. It also changes the HTTP backend's default install layout so uninstall and prune reclaim disk space, speeds up warm lockfile_mode = "generate" installs and repeated OCI builds, and fixes a batch of nushell, monorepo, lockfile, brew, and Windows bootstrap issues.

Highlights

  • Services next to tools: [daemons] declares background processes and PostgreSQL/Redis presets in mise.toml, managed through mise daemons and optionally started when you enter the project. [doctor.checks.<name>] lets projects declare their own environment probes for mise doctor project.
  • Discovery and output: mise search, shell completion, and interactive mise use now include tools published by installed vfox backend plugins, and settings.truncate / --no-truncate disable terminal-width truncation (automatically when a coding agent is detected).
  • Storage and speed: HTTP tools now extract into their own install directory by default (opt back into deduplication with shared_extraction = true), warm generate-mode installs skip needless lockfile rewrites, and OCI builds share a local tool-layer cache.

Added

  • daemons: New experimental [daemons] section and mise daemons command family (start, stop, restart, ls, status, logs, tui) manage project background processes with pitchfork. PostgreSQL and Redis presets install the database as a tool (participating in lockfiles), supply connection environment variables and readiness checks, and keep project data across stop/start. Daemons with auto = ["start", "stop"] start when entering the project from an activated Bash, Zsh, or Fish shell and are released when the last shell session leaves. Requires experimental = true and pitchfork 2.25.0 or later; database presets are Unix-only and PostgreSQL uses loopback trust authentication intended for local development. (#​13085 by @​jdx)

    [settings]
    experimental = true
    
    [daemons]
    postgres = "18"
    redis = "8"
    
    [daemons.web]
    run = "npm run dev"
    port = 3000
    auto = ["start", "stop"]
  • doctor: mise doctor project runs checks declared in [doctor.checks.<name>] with the project's environment and installed tools, reporting PASS/FAIL/error/skipped per check in text or --json. Checks support description, hint, timeout (default 10s), dir, shell, and os selectors, run concurrently under the jobs limit, and exit nonzero when any check fails. Ordinary mise doctor does not run them, and hints are never executed. A follow-up aligned dir resolution with task conventions (config root for project configs including ~/mise.toml, ~/ expansion), fixed head-of-line blocking when one probe hangs, and kept nohup mise doctor project alive on SIGHUP. (#​13062, #​13089 by @​jdx)

    [doctor.checks.openssl]
    description = "OpenSSL development files are discoverable"
    run = "pkg-config --exists openssl"
    hint = "Run `mise bootstrap packages apply` to install the declared build dependencies."
    timeout = "5s"
    os = ["linux", "macos"]
  • vfox: Tools provided by installed vfox backend plugins now appear in mise search, shell completion, and interactive mise use, namespaced as <plugin>:<tool>. Plugins can implement BackendListTools for a finite catalog and/or BackendSearchTools for query-driven discovery in large ecosystems; a prefixed query like npm:eslint is routed only to that plugin. Results are cached, slow plugins fall back to stale cache, and existing plugins need no changes. mise registry remains registry-only. (#​13111 by @​jdx)

  • cli: New settings.truncate (and MISE_TRUNCATE, default true) controls terminal-width shortening of table cells and task metadata. mise ls, mise config ls, and mise bootstrap dotfiles status gain --truncate / --no-truncate, and output is kept complete automatically when a known coding agent is detected. (#​13112 by @​jdx)

    mise bootstrap dotfiles status --no-truncate
  • bootstrap: [bootstrap.macos.dock] gains apps, an ordered list of pinned application paths. Status compares identity and order (ignoring Dock-added metadata), apply adds, removes, and reorders application tiles while preserving other tiles and persistent-others, and an empty list removes all application tiles. Paths must be absolute or home-relative .app bundles. (#​13075 by @​azohra)

    [bootstrap.macos.dock]
    apps = [
      "/System/Applications/Utilities/Terminal.app",
      "/Applications/Firefox.app",
    ]
  • bootstrap: mise bootstrap packages where brew:<formula> prints an installed formula's stable opt root (for example /opt/homebrew/opt/unzip), so scripts can put keg-only executables on PATH without hardcoding the Homebrew prefix or Cellar version. Missing installs exit nonzero with empty stdout. (#​13083 by @​himkt)

  • dotfiles: Destination variants can omit source when every variant sets a target; the entry key is then resolved as a relative path under settings.dotfiles.root instead of next to mise.toml. Parent traversal is rejected. (#​13087 by @​jdx)

    [dotfiles."vscode/settings.json"]
    mode = "copy"
    variants = [
      { os = "macos", target = "~/Library/Application Support/Code/User/settings.json" },
      { os = "linux", target = "~/.config/Code/User/settings.json" },
    ]
  • fmt: mise fmt now sorts lists whose order has no meaning: redactions lexically, and task sources/outputs, task_templates sources/outputs, task_config.global_inputs, and input_groups by reach (@group: references, then globs, then literal paths). Lists containing ! exclusions, entries starting with template syntax, or comments are left untouched, and precedence-sensitive lists such as env_file, tools.*, includes, and depends are never sorted. (#​13058 by @​jrandolf)

  • oci: mise oci build gains --no-cache to bypass the new local tool-layer cache; entries live under each tool's cache directory and are removed by mise cache clear TOOL. (#​13056 by @​jdx)

Changed

  • http: New http: installations extract directly into their own install directory, so mise uninstall and mise prune now remove their files instead of leaving payloads in $MISE_DATA_DIR/http-tarballs/. Set shared_extraction = true on a tool to keep the previous deduplicated symlink layout. Existing symlinked installs keep working; mise install --force <tool> migrates one to independent files without disturbing other installs that share the content. Legacy http-tarballs entries are not reclaimed automatically. Shared raw and compressed binary caches now also include the executable filename in their key, so differently named tools no longer reuse the wrong filename. (#​13059 by @​jdx)
  • oci: mise oci push --no-cache now bypasses both the remote registry cache and the local tool-layer cache. (#​13056 by @​jdx)
  • registry: postgres, redis, and mongodb now prefer conda: backends, installing prebuilt conda-forge binaries in seconds instead of compiling through vfox; vfox and asdf remain as fallbacks. conda:redis-server covers Linux and macOS only. (#​13061 by @​jdx)

Performance

  • lockfile: Warm mise install runs in lockfile_mode = "generate" skip scheduling work for tools whose artifact metadata is already reusable, and skip rebuilding, serializing, and staging the lockfile entirely when nothing was installed and the on-disk lock already matches (preserving comments in the file). Explicit mise lock, forced provenance verification, upgrades, and new platforms still regenerate. (#​13101, #​13103 by @​jdx)
  • oci: mise oci push --from BASE no longer downloads base layers when the base and target live in the same repository, and oci build, oci run, and oci push share a local cache of packaged tool layers keyed on file contents, so repeated builds with overlapping tools skip tar and gzip work. (#​13055, #​13056 by @​jdx)

Fixed

  • nushell: mise activate nu no longer throws env_variable_not_found on every prompt or cd when a variable to hide is absent from the current scope; hide-env is now wrapped in try, matching the no-op behavior of other shells. (#​13071 by @​i-api)
  • task: Task-level tools are now auto-installed for tasks referenced from run entries, including names rendered at runtime, right before they execute; --skip-tools is honored and install failures are reported as task failures without blocking siblings. (#​13086 by @​jdx)
  • config: [monorepo] settings are now merged across same-directory config layers (base plus mise.<env>.toml overlays): omitted fields are inherited, an overlay's config_roots replaces the base list, and monorepo_root = false in an overlay disables the root and its descendant trust. (#​13084 by @​jdx)
  • lockfile: Runtime tool requests such as mise which hk --tool hk@latest now use the lockfile belonging to the config that effectively defines the tool, instead of merging project and global pins and reporting a false "multiple resolutions" ambiguity or selecting an overridden pin. mise which --tool warns when a lower-precedence config has a matching pin the effective config lacks. (#​13042 by @​nettlesh)
  • lockfile: Complete lockfile generation for Packslip tools skips platforms with no published artifact while still writing supported targets, and a verified Packslip signer may now replace legacy github-attestations metadata on upgrade instead of being rejected as a provenance downgrade. (#​13102, #​13105 by @​jdx)
  • upgrade: mise upgrade now detects updates between letter-suffixed versions such as tmux 3.7b to 3.7c; sub-N aliases keep resolving numeric components as before. (#​13119 by @​jdx)
  • brew: Formulae that are keg-only solely because macOS ships them (such as brew:zip and brew:unzip) are now linked into <prefix>/bin on Linux, matching Homebrew. Kegs installed by earlier mise versions stay unlinked until the next mise bootstrap packages upgrade or a reinstall. (#​13108 by @​lil-lon)
  • brew-cask: Tap casks with preflight_steps or postflight_steps no longer fail during metadata extraction; declarative run steps are captured as structured steps and executed by mise, with support for must_succeed = false. (#​13060 by @​jdx)
  • bootstrap: mise bootstrap remote on Windows now finds ssh.exe and tar.exe on PATH instead of failing with required command 'ssh' not found. (#​13117 by @​JamBalaya56562)
  • bootstrap: macOS defaults status explains type mismatches, showing for example 2 (real; expected integer) instead of two identical-looking values marked differs. (#​13096 by @​jdx)
  • dotfiles: mise bootstrap dotfiles track honors the global yes setting for confirmations, and warns when tracking a symlink whose resolved source is not itself tracked, suggesting the command to enroll it. (#​13072 by @​nettlesh, #​13095 by @​jdx)
  • schema: The JSON schema now models Git directory manifest dotfile entries, restricting explicit modes to copy or symlink-each and rejecting combinations with inline content or file-edit fields. (#​12741 by @​risu729)
  • asdf: mise asdf install and mise asdf reshim no longer re-enter the full CLI dispatch, avoiding stack overflows on small-stack Linux environments; asdf install now follows the same implicit config trust as mise install. Bash completions are regenerated for the updated usage-rs word-break handling. (#​13114 by @​jdx)

Registry

  • Added mpv (conda:mpv, Linux and macOS) (#​13049 by @​i-api), agent-browser (aqua:vercel-labs/agent-browser) (#​13088 by @​3w36zj6), and himalaya (github:pimalaya/himalaya) (#​13091 by @​i-api).
  • editorconfig-checker installs again after 4.0.1 renamed its assets and executable; the shorthand now uses the GitHub backend. (#​13098 by @​jdx)
  • mc installs from MinIO's GitHub releases instead of the retired Aqua download URL that returned HTTP 410. (#​13113 by @​jdx)

Documentation

  • The docs landing page gains interactive diagrams for project environment switching, bootstrap machine resources, tool configuration precedence, artifact cache execution, and tracked dotfile synchronization. (#​13065, #​13066, #​13067, #​13068, #​13069 by @​jdx)
  • The task-running guide is reorganized around finding and running tasks, passing arguments, then controlling execution. (#​13077 by @​azohra)

New Contributors

Full Changelog: jdx/mise@v2026.9.5...v2026.9.6

💚 Sponsor mise

mise is built and maintained by @​jdx, an open source developer at 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. Your support funds ongoing development and helps keep mise fast, free, and independent.

v2026.9.5: : macOS defaults, per-platform dotfiles, and complete lockfiles

Compare Source

This release deepens macOS bootstrap support with current-host and nested defaults, lets dotfiles and tasks adapt to the platform and to parsed arguments, and adds an opt-in trial of complete lockfile generation. It also carries a batch of install progress, self-update, brew-cask, and sandbox fixes.

Added

  • bootstrap: New [[bootstrap.macos.defaults_entries]] blocks let you set macOS preferences explicitly with domain, key, value, and an optional host (any by default, or current), covering preferences normally written via defaults -currentHost while keeping the existing [bootstrap.macos.defaults] shorthand. Entries also accept an optional path to patch a nested dictionary value without replacing its siblings, preserving property-list types and creating missing parents. (#​12983 by @​azohra, #​12984 by @​azohra)

    [[bootstrap.macos.defaults_entries]]
    domain = "com.apple.dock"
    key = "autohide"
    value = true
    host = "current"
  • bootstrap: More friendly macOS preferences: Finder folder sorting and default cloud save location, Dock autohide delay and timing (integers or floats), and keyboard automatic capitalization and spelling correction, all using snake_case names consistent with the existing sections. (#​13032 by @​jdx)

  • bootstrap: [bootstrap.files] and [bootstrap.directories] entries gain phase = "pre-packages" so repository definitions, apt sources, and signing keys can be applied before package installation instead of only afterward. Existing declarations default to "post-packages". (#​13052 by @​jdx)

    [bootstrap.files."/etc/apt/sources.list.d/vendor.sources"]
    source = "./files/vendor.sources"
    phase = "pre-packages"
  • bootstrap: Ordinary [bootstrap.files] templates can now reference resolved [vars] values, alongside the existing config_root, target, and secret() helpers. (#​13033 by @​nettlesh)

  • dotfiles: A single dotfiles source can deploy to different destinations per operating system, architecture, or mise profile using variants with an optional target. This works for copy, symlink, symlink-each, and template modes. (#​13050 by @​jdx)

    [dotfiles.settings]
    source = "dotfiles/vscode/settings.json"
    mode = "copy"
    variants = [
      { os = "macos", target = "~/Library/Application Support/Code/User/settings.json" },
      { os = "linux", target = "~/.config/Code/User/settings.json" },
    ]
  • task: Task sources and outputs can now use {{usage.*}} templates, resolved per invocation from parsed arguments and flags before freshness and artifact-cache checks run, so different argument values track freshness independently. (#​13051 by @​jdx)

  • brew-cask: Casks with structured set_permissions preflight/postflight steps now install correctly (for example brew-cask:blender), running an unprivileged chmod over resolved staged or appdir paths instead of failing with an unsupported step-type error. (#​13043 by @​azohra)

  • lock: Opt-in trial of complete lockfile generation via lockfile_mode = "generate" (or MISE_LOCKFILE_MODE=generate). The default remains incremental merge. Generate mode rebuilds lockfiles from current requests while treating the previous file as an immutable baseline, reusing unchanged artifacts and publishing through staged atomic writes so failures or concurrent edits do not clobber a good lockfile. This mode records only cryptographically verified provenance per target platform; provenance_verified is no longer treated as a trust signal. (#​13031 by @​jdx)

  • self-update: New disable_update_warning setting (MISE_DISABLE_UPDATE_WARNING) suppresses "newer mise available" notices in mise version, mise --version, and mise doctor. Explicit self-update and automatic updates are unaffected. (#​13028 by @​jdx)

Fixed

  • install: Interactive installs no longer leave a permanent line for every resolved, skipped, or already-installed tool; live progress shows what is happening while the final summary lists what changed (for example installed 1 tool in 1.1s: dummy@1.0.0). mise upgrade no longer duplicates its old to new version list. (#​13030 by @​jdx)
  • install: Long non-TTY installs no longer flood CI logs with a snapshot every three seconds. The heartbeat now scales to roughly 10% of elapsed time, clamped between 3 seconds and 1 minute. (#​13036 by @​jdx)
  • self-update: On 32-bit ARM, mise self-update now selects the correct linux-armv7 archive instead of requesting a missing linux-arm one and falling back to an ARM64 binary that failed signature verification. A missing archive now fails asset selection rather than picking the wrong architecture. (#​13023 by @​jdx)
  • self-update: npm installs now ship the instructions file that redirects update guidance to the package manager, so they no longer advertise mise self-update. (#​13028 by @​jdx)
  • brew-cask: mise bootstrap packages upgrade no longer replaces the bundle of a running self-updating app (for example Chrome), which could strand helper processes and blank out tabs. Such apps are skipped while running and left to update themselves. (#​13041 by @​azohra)
  • brew-cask: The cask metadata fetch error no longer includes stale advice about installing with brew and a broken documentation anchor; it now gives a short, accurate message. (#​12800 by @​Marukome0743)
  • bootstrap: mise bootstrap dotfiles origin set <url> now uses the repository's own default branch when --branch is omitted, so repositories on master connect correctly instead of publishing a second root branch. A missing requested branch is now reported clearly rather than mistaken for an empty repository. (#​13037 by @​Dhaulagiri)
  • dotfiles: History watcher locks now live alongside the history store in the state directory instead of being hashed into the cache directory, so a launchd watcher and an interactive shell using different cache directories coordinate correctly and dotfiles status no longer misreports declared-not-running. Existing watchers must be stopped and restarted with the updated binary. (#​13038 by @​ascarter)
  • sandbox: The macOS Seatbelt profile now allows file-read-metadata on the ancestors of readable paths, fixing Operation not permitted failures when a portable Ruby resolves its own executable during third-party tap evaluation. Symlinked data directories and allow-listed paths are also handled. (#​13039 by @​Marukome0743)

Registry

New Contributors

Full Changelog: jdx/mise@v2026.9.4...v2026.9.5

💚 Sponsor mise

mise is built and maintained by @​jdx, an open source developer at 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. Your support funds ongoing development and helps keep mise fast, free, and independent.

v2026.9.4: : Nix Bootstrap, Environment Selectors, and Man Pages

Compare Source

This release expands the bootstrap package model with Nix support and environment selectors, teaches packslip tools to ship man pages, and adds a task-scoped quiet setting. It also carries a wide batch of packslip, bootstrap, and cross-platform fixes plus a major speedup to dotfiles history rebuilds.

Added

  • bootstrap: Nix is now a built-in [bootstrap.packages] manager on Linux and macOS. Declare packages with the nix: prefix and apply them through your normal Nix profile; the manager supports use, apply, status JSON, and targeted upgrades while leaving Nix sources, caches, trust, and profile rollback under Nix control. This also adds mise bootstrap packages export --format nix to emit a deterministic NixOS module from your nix: declarations and packages use --no-install to record declarations without touching package managers. (#​13013 by @​jdx)

    [bootstrap.packages]
    "nix:ripgrep" = "latest"
  • bootstrap: [bootstrap.packages] entries gain an env selector (a single environment or a list), so a package is only enabled when one of its listed mise environments is active via -E or MISE_ENV. When both os and env are set, both must match. Packages for inactive environments stay declared and are protected from pruning. (#​12956 by @​jdx)

    [bootstrap.packages]
    "brew:postgresql" = { version = "latest", env = ["dev", "test"] }
  • packslip: Packslip-installed tools can now ship man pages declared as static man resources, alongside completions and agent skills. While a tool version is active, mise prepends its man root to MANPATH and keeps system and caller-defined paths visible, so man <tool> works. Existing installs need to be reinstalled to pick up man pages. (#​13012 by @​jdx)

  • task: New task.quiet setting (and MISE_TASK_QUIET) suppresses mise's own task messages, prefixes, and command-echo headers without hiding task output or affecting other commands. The bundled output = "quiet" mode is deprecated in favor of explicit output style plus this setting; removal is scheduled for 2027.9.3. (#​12980 by @​jdx)

Fixed

  • install: A lazy tool whose depends target is also lazy now installs correctly on first use through a shim, mise x, or a task; mise installs the provider together with its still-missing configured dependencies instead of failing the preflight. (#​12997 by @​balintant)
  • backend: 32-bit ARM resolution now uses Go's canonical arm architecture name for Aqua (so registry replacements apply), and automatic GitHub release asset selection no longer picks a generic source.tar.gz when no published binary targets the host. (#​13004 by @​jdx)
  • bootstrap: Homebrew bottles with hard-linked Mach-O executables are now signed correctly on macOS. Every hard-link alias is tracked and included in the signing list after relocation, fixing cases like fish where an aliased binary was killed with SIGKILL after a successful install. (#​12988 by @​nettlesh)
  • packslip: mise lock --platform now verifies the signed release manifest and records the correct URL, checksum, size, and signer for each requested target platform (including Windows x64), so locked installs work across platforms. (#​13002 by @​jdx)
  • packslip: On glibc Linux, an artifact's glibc_min is now honored during selection: when the GNU build requires a newer glibc than the host, mise falls back to a matching static musl build if one exists. (#​13009 by @​jdx)
  • packslip: Windows installs now link shims with the correct .exe filename, while Unix keeps extensionless names. (#​13006 by @​jdx)
  • packslip: Activated man roots are now scoped to Packslip-backed tool versions, and the caller's original MANPATH is included in the environment-cache identity so one cached process cannot serve another caller's MANPATH. (#​13016 by @​jdx)
  • prune: mise prune no longer exits successfully without pruning when it cannot show a confirmation prompt; it now fails with guidance to pass --yes or set MISE_YES=1. Follow-up prunes from commands like mise unuse still leave installs in place when nobody can answer. (#​13003 by @​jdx)
  • generate: mise generate tool-stub now respects a stub's top-level os selector when deciding whether to write a Windows .cmd launcher, so a linux/macos-only stub no longer produces a launcher even with --lock. (#​13008 by @​jdx)
  • dotfiles: History path filters resolve correctly when HOME is a symlink, so aliased, canonical, and tilde paths address the same history entry and show latest/diff no longer report a missing checkpoint. (#​12982 by @​azohra)
  • brew: The published crate now includes the tap formula and cask metadata shims, fixing cargo install --locked mise builds from crates.io. (#​13001 by @​jdx)

Changed

  • bootstrap: [bootstrap].config_roots and the mise bootstrap config-roots command are now deprecated (hidden from help and removed from public docs), with removal scheduled for mise 2027.3.3. Existing configurations keep working during the compatibility window but emit a warning directing users to global or system bootstrap configuration. (#​13010 by @​jdx)
  • registry: Added basecamp to the registry. (#​13024)

Performance

  • history: Dotfiles history index rebuilds are dramatically faster, reconstructing checkpoint metadata in-process with gix instead of spawning Git per checkpoint. On an 80-checkpoint, 44-file reproducer this cut a rebuild from roughly 26-28 seconds and thousands of Git processes down to under a second. Removed annotations are now correctly dropped after a rebuild, and SHA-256 history repositories are supported. (#​13011 by @​jdx)

Deprecated

  • The task output = "quiet" mode (use task.quiet instead; removal in 2027.9.3) (#​12980).
  • [bootstrap].config_roots and mise bootstrap config-roots (removal in mise 2027.3.3) (#​13010).

New Contributors

Full Changelog: jdx/mise@v2026.9.3...v2026.9.4

💚 Sponsor mise

mise is built and maintained by @​jdx, an open source developer at 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. Your support funds ongoing development and helps keep mise fast, free, and independent.

v2026.9.3: : Winget bootstrap, signed vfox plugins, and faster inline commands

Compare Source

This release brings Windows bootstrap into the package-manager era with WinGet support, extends the packslip signing model to vfox plugins, and speeds up simple tasks by skipping the shell on Unix. It also carries a batch of bootstrap, sandbox, and Windows ARM64 fixes.

Added

  • bootstrap: WinGet is now a built-in [bootstrap.packages] manager on Windows, so mise bootstrap packages can check status, install, and upgrade apps by exact package ID. It supports version pins, source refresh, and automatic source-agreement acceptance. Scoop, Chocolatey, and package removal remain future work. (#​12928 by @​jdx)

    [bootstrap.packages]
    "winget:Microsoft.PowerShell" = "latest"
  • vfox: External vfox plugins can now be installed from signed packslip archives instead of a Git clone, reusing the packslip backend's release selection, signature verification, digest checks, and signer pins. This is aimed at non-registry plugins; registry defaults and embedded plugins are unchanged. (#​12948 by @​jdx)

    mise plugins install vfox:bfs 'packslip:mise-plugins/vfox-bfs#0.1.0'
  • bootstrap: Dotfile line edits gain position = "prepend" to insert a managed line at the top of a file instead of appending (the default). An existing exact match is left in place, and unrelated bytes, CRLF endings, and a UTF-8 BOM are preserved. (#​12941 by @​jdx)

    [dotfiles]
    "/etc/zshrc/zdotdir" = { line = 'ZDOTDIR=$HOME/.config/zsh/', position = "prepend" }
  • bootstrap: macOS bootstrap defaults now support nested TOML arrays and tables (for example Dock persistent-apps), reading and writing preferences through Core Foundation so booleans, numbers, strings, arrays, and dictionaries keep their plist types. Collections apply as whole-value replacements; datetimes and binary plist data are still skipped with a warning. (#​12947 by @​jdx)

Changed

  • bootstrap: Adopting global configuration or a shared dotfile-history setup repository is now spelled mise bootstrap --adopt (and mise bootstrap remote --adopt), separate from mise bootstrap --from for running a bootstrap project. The dotfiles, history, setup, and services guides were reorganized to lead with usable examples. The previous --from-git spelling still works as a hidden alias but warns and is scheduled for removal in mise 2026.10.0. (#​12953 by @​jdx)

Fixed

  • github: Git operations (clones, fetches, submodules) that GitHub now challenges with HTTP 401 on public repositories can authenticate using mise's existing GitHub token sources via a command-scoped github.com HTTPS credential helper. Tokens are kept out of command arguments and URLs, and Enterprise hosts are out of scope. (#​12945 by @​jdx)
  • config: The default inline task shell is now sh -o errexit -c so shells that consume the argument right after -c (such as FreeBSD sh) run your command instead of trying to execute -o. (#​12949 by @​jdx)
  • windows: Fixed two Windows ARM64 issues: stale command-wrapper shims (like a leftover cargo.exe) that caused recursive .exe/.cmd dispatch after shim-mode changes are now pruned, and Aqua ARM64 emulation candidates apply the registry's amd64 replacement so tools like LuaLS resolve their published win32-x64 assets. (#​12931 by @​jdx)
  • bootstrap: Bootstrap no longer aborts on Arch when pacman -Q prints a file advisory for a missing package that shares its name with a directory in the current working directory (for example a fish/ folder in a dotfiles checkout). (#​12932 by @​nettlesh)
  • sandbox: Read-restricted macOS Seatbelt profiles now allow metadata-only access to /private, fixing startup failures for load-relative binaries like Ruby 4.0.6 when run under /private/tmp. Directory listings and descendant reads stay denied. (#​12940 by @​jdx)
  • bootstrap: The macOS notification helper is now built and Developer ID-signed at release time and spawned with a start handshake, so short dotfiles sync runs no longer race the helper and macOS accepts it. Unsigned source builds (such as Homebrew) disable notifications and warn during origin setup. (#​12946 by @​jdx)
  • vfox: vfox install phases now flow through the active install progress reporter, mapping noisy download, checksum, attestation, and extraction lines into concise phases instead of scrolling log output. (#​12944 by @​jdx)
  • java: The java -version banner shown during install verification now stays inside the interactive install progress row instead of printing to the terminal. (#​12943 by @​jdx)
  • version: The auto-update hint from mise version now uses the mise settings auto_update=true syntax to match the rest of mise settings. (#​12957 by @​jdx)

Performance

  • On Unix, plain inline commands (like node build.js) now run directly when a conservative planner deems them safe, skipping the shell wrapper. Anything involving shell syntax, quoting, expansion, builtins, ambiguous PATH lookup, explicit shell settings, or sandboxed/audited tasks still uses the shell, and Windows is unchanged. In a microbenchmark of short commands this cut about 11% off elapsed time. (#​12950 by @​jdx)

Registry

Documentation

  • Restored the prominent project name and pronunciation on the homepage. (#​12936 by @​jdx)
  • Dropped the "you need Git installed" prerequisite from the install docs. (#​12958 by @​jdx)

Full Changelog: jdx/mise@v2026.9.2...v2026.9.3

💚 Sponsor mise

mise is built and maintained by @​jdx, an open source developer at 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. Your support funds ongoing development and helps keep mise fast, free, and independent.

v2026.9.2: : Packslip Backend, SSH Relay, and Reimagined Install Progress

Compare Source

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, #​12811 by @​jdx)

    [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 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 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, #​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, #​12780, #​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 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, #​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 by @​jdx)

    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 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, #​12716, #​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 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 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 by @​jdx)

    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 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 by @​jdx)

  • backend: install_env is now applied when resolving and downloading tools, not just at build time. (#​12777 by @​rabadin)

  • brew: mise can now evaluate ordinary third-party taps. (#​12774 by @​jdx)

Fixed

Important

✂ PR body was truncated to here.


Configuration

📅 Schedule: (in timezone America/Los_Angeles)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate Bot added the bot label Jul 20, 2026
@renovate
renovate Bot force-pushed the renovate/jdx-mise-2026.x branch 6 times, most recently from b069281 to 4210d96 Compare July 30, 2026 03:03
@renovate
renovate Bot force-pushed the renovate/jdx-mise-2026.x branch 4 times, most recently from 7255dd3 to 18a73a9 Compare August 5, 2026 03:26
@renovate
renovate Bot force-pushed the renovate/jdx-mise-2026.x branch 3 times, most recently from 2752ba1 to 661a5bf Compare August 12, 2026 20:16
@renovate
renovate Bot force-pushed the renovate/jdx-mise-2026.x branch 4 times, most recently from 6445a85 to c5325ef Compare August 20, 2026 23:10
@renovate
renovate Bot force-pushed the renovate/jdx-mise-2026.x branch 4 times, most recently from 9dd559c to fac6f2e Compare August 26, 2026 03:48
@renovate
renovate Bot force-pushed the renovate/jdx-mise-2026.x branch 4 times, most recently from 61548e9 to 844f10e Compare September 3, 2026 00:28
@renovate
renovate Bot force-pushed the renovate/jdx-mise-2026.x branch 4 times, most recently from b504efd to 25c7628 Compare September 11, 2026 04:03
@renovate
renovate Bot force-pushed the renovate/jdx-mise-2026.x branch from 25c7628 to d7b6a0c Compare September 13, 2026 02:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants