mise-en-place
The front-end to your dev env Pronounced "MEEZ ahn plahs"
- site: https://mise.jdx.dev/
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, somise bootstrap packagescan 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
defaultsnow support nested TOML arrays and tables (for example Dockpersistent-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(andmise bootstrap remote --adopt), separate frommise bootstrap --fromfor running a bootstrap project. The dotfiles, history, setup, and services guides were reorganized to lead with usable examples. The previous--from-gitspelling 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.comHTTPS 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 -cso 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/.cmddispatch after shim-mode changes are now pruned, and Aqua ARM64 emulation candidates apply the registry'samd64replacement so tools like LuaLS resolve their publishedwin32-x64assets. (#12931 by @jdx) - bootstrap: Bootstrap no longer aborts on Arch when
pacman -Qprints a file advisory for a missing package that shares its name with a directory in the current working directory (for example afish/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 syncruns 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 -versionbanner 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 versionnow uses themise settings auto_update=truesyntax to match the rest ofmise 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
- Added cargo-deny, kingfisher, nushell, shellharden, sherif, and tauri-cli. (#12938 by @jrandolf)
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: https://github.com/jdx/mise/compare/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.