jdx Release Notes
264 release notes curated from 3 sources by the Releasebot Team. Last updated: Jul 19, 2026
jdx Products
- Jul 17, 2026
- Date parsed from source:Jul 17, 2026
- First seen by Releasebot:Jul 19, 2026
v1.31.0: Composable Profiles
fnox adds composable multi-profile support, letting users stack multiple active profiles with ordered overrides and new profile-aware commands and builders. It also improves Proton Pass handling by pointing locked sessions to session unlock instead of a generic auth hint.
A small release headlined by composable multi-profile support, plus a friendlier Proton Pass error when your session is locked.
Added
Compose multiple active profiles (#605) -- @gaojunran
You can now activate more than one profile at a time as an ordered overlay stack. The top-level config is the base, and each profile is layered on top in order, with later profiles overriding earlier ones on key conflicts.
# Repeatable flags fnox -P aws -P prod exec -- ./app # Comma-separated fnox -P aws,prod exec -- ./app # Environment variable FNOX_PROFILE=aws,prod fnox exec -- ./appThe effective config resolves as top-level config + profiles.aws + profiles.prod, and fnox.<profile>.toml files are loaded for each active profile in order. Write commands (set, remove, import, sync, provider add/remove) target the last active profile by default, and the full profile stack is factored into the daemon's request protocol, socket path, and cache key. Library users get a new with_profiles() builder.
Fixed
Proton Pass suggests unlocking a locked session (#612) -- @TyceHerrman
pass-cli reports locked sessions as "Session is locked. Please unlock your session and try again.", but fnox previously fell through to a generic configuration/authentication hint. Locked sessions are now recognized and fnox points you at pass-cli session unlock instead of offering the configured login command. All other Proton Pass error mappings (login, key storage, agent reason, missing fields, missing secrets, generic CLI errors) are unchanged.
New Contributors
@gaojunran made their first contribution in #605
@syhol made their first contribution in #614
Full Changelog: v1.30.0...v1.31.0
💚 Sponsor fnox
fnox is maintained by @jdx, an open source developer for entire.io, the title sponsor of the jdx.dev open source tools including mise, aube, hk, and more. Keeping fnox secure, maintained, and free is funded by sponsors.
If fnox is handling secrets or config for you or your team, please consider sponsoring at jdx.dev. Sponsorships are what let fnox stay independent and the project keep moving.
Original source - Jul 17, 2026
- Date parsed from source:Jul 17, 2026
- First seen by Releasebot:Jul 17, 2026
All of your release notes in one feed
Join Releasebot and get updates from jdx and hundreds of other software products.
- Jul 17, 2026
- Date parsed from source:Jul 17, 2026
- First seen by Releasebot:Jul 17, 2026
v2026.7.10
mise skips remote discovery for exact versions in more backends.
(backend) skip remote discovery for exact versions in more back…
Original source - Jul 16, 2026
- Date parsed from source:Jul 16, 2026
- First seen by Releasebot:Jul 17, 2026
- Jul 16, 2026
- Date parsed from source:Jul 16, 2026
- First seen by Releasebot:Jul 17, 2026
v2026.7.8
mise adds repos update and exec commands in bootstrap.
(bootstrap) add repos update and exec commands by @jdx in [#110…
Original source Similar to jdx with recent updates:
- Smokeball release notes136 release notes · Latest Jul 16, 2026
- Cosmolex release notes20 release notes · Latest Jul 30, 2025
- PracticePanther release notes35 release notes · Latest Jul 7, 2026
- Salesforce release notes57 release notes · Latest Jul 1, 2026
- Microsoft release notes731 release notes · Latest Jul 20, 2026
- Zoom release notes179 release notes · Latest Jul 18, 2026
- Jul 16, 2026
- Date parsed from source:Jul 16, 2026
- First seen by Releasebot:Jul 2, 2026
- Modified by Releasebot:Jul 17, 2026
aqua-registry-v2026.7.3
mise releases aqua-registry 2026.7.3.
Release aqua-registry 2026.7.3
Original source - Jul 15, 2026
- Date parsed from source:Jul 15, 2026
- First seen by Releasebot:Jul 16, 2026
- Jul 15, 2026
- Date parsed from source:Jul 15, 2026
- First seen by Releasebot:Jul 16, 2026
v2026.7.7: Monorepo deps, systemd timers, and OAuth reliability
mise releases monorepo dependency provider support, systemd bootstrap timers, and stronger GitHub token refresh and cache handling for concurrent runs. It also improves asset selection, task templating, status display, schema support, and adds the microsandbox registry entry.
This release extends dependency providers and systemd bootstrap to monorepo and timer-based workflows, and hardens GitHub OAuth token refreshes and cache clearing against concurrent mise processes.
Added
deps: experimental mise deps --monorepo runs dependency providers across every explicitly configured [monorepo].config_roots entry, aligned with mise install --monorepo. Provider IDs are qualified by config root (e.g. //apps/api:uv) so repeated provider names across subprojects no longer collide, and mise installs the union of tools declared across participating roots before running providers. Plain mise deps remains scoped to the current config root. (#10975 by @jdx)
monorepo_root = true
[monorepo]
config_roots = ["apps/", "packages/"]
mise deps --monorepo
mise deps --monorepo --only //apps/api:uv
bootstrap: manage systemd user timers alongside services via [bootstrap.linux.systemd.units]. Timer entries render to .timer units with scheduling (on_boot_sec, on_unit_active_sec, on_unit_inactive_sec, on_calendar), persistence, and timers.target linkage. Services gain optional directives including type, remain_after_exit, exec_stop, start/stop timeouts, no_new_privileges, and private_tmp. When a unit name switches between service and timer, the stale sibling unit is stopped, disabled, and removed on apply. (#10984 by @jdx)
Fixed
github: serialize OAuth token refreshes across mise processes. Single-use refresh tokens were only guarded by an in-process mutex, so parallel mise runs could burn the same token or overwrite the cache with stale data. The full read-refresh-write cycle now holds a filesystem lock, re-reads the cache after acquiring it, and writes atomically. Rejected refreshes now surface a sanitized error with reauthorization guidance instead of falling back silently to anonymous requests. (#10995 by @jdx)
cache: mise cache clear no longer fails with DirectoryNotEmpty when another mise process (e.g. hook-env) recreates cache files mid-removal. Removal now retries with bounded backoff and tolerates concurrently recreated entries, while permission and other errors still propagate. (#10993 by @jdx)
github: skip OS package and installer assets (.apk, .deb, .rpm, DMG/PKG, MSI/MSIX/AppX and sidecars) during automatic asset selection for the github:, gitlab:, and forgejo: backends, so releases containing only unsupported packages now report that no platform asset matches instead of installing an unusable file. Explicit asset_pattern and URL selection are unchanged. (#11001 by @risu729)
aqua: honor explicit false overrides for rosetta2, windows_arm_emulation, and no_asset, so a version or platform override can disable inherited emulation or asset flags instead of being treated as omitted. (#11002 by @risu729)
vfox: support short annotated-tag refs in plugin source URLs (e.g. a .git URL followed by #v1.0.0), resolving explicit refs against exact remote branch and tag namespaces so annotated tags no longer fail to check out. (#10998 by @junior-ricon)
task: render Tera templates in nested task-level tool option arrays and tables, and preserve their structure through resolution instead of dropping structured values. (#10960 by @risu729)
bootstrap: add Homebrew-compatible Array#second, #third, #fourth, and #fifth helpers to the cask shim, fixing casks (such as OrbStack) that reference version.csv.second. (#10992 by @casparbreloh)
status: status.show_env output now respects the status.truncate setting instead of always truncating. (#10983 by @ytjmt)
schema: add bootstrap.macos.launchd.agents.<name>.start_calendar_interval to the published schema (single schedule or array), so strict TOML validators and editors accept valid launchd calendar configurations. (#11008 by @risu729)
Registry
Add microsandbox (aqua:superradcompany/microsandbox) (#10985 by @joealden).
New Contributors
@junior-ricon made their first contribution in #10998
@ytjmt made their first contribution in #10983
@casparbreloh made their first contribution in #10992
Full Changelog: v2026.7.6...v2026.7.7
💚 Sponsor mise
mise is maintained by @jdx, an open source developer for entire.io, the title sponsor of the jdx.dev open source tools. Development is funded by sponsors.
If mise saves you or your team time, please consider sponsoring at jdx.dev. Individual and company sponsorships keep mise fast, free, and independent.
Original source - Jul 14, 2026
- Date parsed from source:Jul 14, 2026
- First seen by Releasebot:Jul 16, 2026
v1.51.0: Structured argv and disjunctive selectors
hk ships structured argv commands and match_any selectors for safer, more flexible file matching, plus a new sherif builtin for TypeScript and JavaScript monorepos. It also fixes quiet and silent output, hook argument duplication, stash lock waits, and Linux auto-batching limits.
Two configuration expansions land in this release: shell-free argv commands with per-file argument expansion, and match_any selectors that combine globs and types with OR semantics. Alongside them, correctness fixes for --quiet/--silent, config-based hook argument forwarding, transient index locks, and Linux argument-size limits.
Added
Structured argv commands (@jdx) #1067. A step's check/fix/check_list_files/check_diff can now be a Command with an explicit argv list that runs a binary via PATH without a shell. Standalone {{files}} and {{workspace_files}} entries expand to one argument per file (raw paths), so names with spaces or shell metacharacters are passed literally. Auto-batching, hk test, progress output, and fix suggestions all go through shared Command rendering, and many builtins (prettier, ruff, biome, ...) have moved to structured commands. Existing string and platform Script commands are unchanged; structured commands can't be combined with shell or prefix.
check = new Command { argv = List("wc", "-c", "{{files}}") }match_any disjunctive file selectors (@risu729) #1055. Clauses compose with OR semantics; glob and types within a clause compose with AND. match_any cannot be mixed with the top-level glob or types, and empty selectors are rejected at validation time. {{globs}} and progress text reflect the combined patterns. The shellcheck and shfmt builtins have adopted it so they also pick up extensionless shell scripts detected by shebang, without giving up their extension globs.
["shellcheck"] { match_any = List( new { glob = List("**/*.sh", "**/*.bash") }, new { types = List("sh", "bash") } ) check = "shellcheck {{files}}" }sherif builtin (@smasato) #1062. Adds sherif, the opinionated zero-config linter for TypeScript/JavaScript monorepos. check = "sherif" / fix = "sherif --fix --no-install"; sherif always scans from the repo root, so the commands take no file arguments. Globs cover **/package.json and **/pnpm-workspace.yaml; auto-suggested when "sherif" appears in package.json.
["sherif"] = Builtins.sherifFixed
--quiet and --silent really suppress output now (@smasato) #1058. Previously these flags only lowered the log level and switched progress to text mode, which streams every update on a new line rather than hiding anything. They now set ProgressOutput::Quiet so progress lines and successful-step summaries are gone; --quiet still prints failed-step summaries (essential diagnostic), --silent prints nothing but exit code. --stats is suppressed under both. Informational println!s in init/install/migrate were routed through info! so the flags apply there too. CI/non-interactive text-mode behavior is unchanged.
Config-based hooks no longer duplicate arguments (@jdx) #1065. Git 2.54+ already appends hook arguments to hook.<name>.command, and hk was also expanding "$@", so argument-bearing hooks received every argument twice. For pre-push this meant the duplicated remote/URL were parsed as an explicit file list, which overrode push-range discovery and silently skipped file-filtered steps. hook_run_args no longer appends "$@"; legacy .git/hooks/ shims still use it via git_hook_content. Fixes discussion #1063.
Stash waits out transient index locks (@jdx) #1060. Shell-based stash paths now resolve the worktree lock via git rev-parse --git-path index.lock and sleep with bounded backoff (up to ~775ms) before running git stash push, so a briefly held lock from another Git process no longer aborts the hook. A persistent lock still surfaces as a normal Git error after the wait window; libgit2 stash_save is unchanged. Fixes discussion #1056.
Linux per-argument size limit respected in auto-batching (@jdx) #1066. hk passes each rendered command to the shell as one sh -c argument, and Linux limits each argument to 32 pages (~128 KiB) independently of the aggregate ARG_MAX. Batching now caps rendered commands using both the existing ARG_MAX / 2 margin and MAX_ARG_STRLEN, sizes each chunk independently so later, longer paths cannot overflow a batch, and returns a clear error when even a single-file command cannot fit. Fixes discussion #1061.
Documentation
Vertically center social link icons on the docs site (@smasato) #1059.
Full Changelog: v1.50.0...v1.51.0
💚 Sponsor hk
hk is maintained by @jdx, an open source developer for entire.io, the title sponsor of the jdx.dev open source tools including mise, aube, and more. Work on hk is funded by sponsorships.
If hk has sped up your pre-commit loop or made linting feel less painful, please consider sponsoring at jdx.dev. Sponsorships are what keep hk moving and the project independent.
Original source - Jul 14, 2026
- Date parsed from source:Jul 14, 2026
- First seen by Releasebot:Jul 15, 2026
v2026.7.6: Sandbox defaults, Flatpak bootstrap, and smarter task output
mise adds task output style controls, stronger sandbox defaults, broader bootstrap and registry support, and a raft of fixes across config, backend, GitHub, npm, cargo, and more. It also updates quiet task output behavior and other breaking task variable changes.
Added
task: per-task output style field, decoupled from verbosity, so styles like prefix and quietness combine freely #10885
sandbox: global [settings.sandbox] deny defaults (deny_all, deny_read, deny_write, deny_net, deny_env) #10940
bootstrap: Flatpak package support for [bootstrap.packages] on Linux #10951
oci: reproducible host path copy layers via mise oci build --copy HOST_PATH:IMAGE_PATH and [[oci.copy]] #10952
doctor: mise doctor now warns when a mise shim is shadowed by an earlier executable in PATH #10919
aqua: support for private github_content and github_archive packages via authenticated GitHub API endpoints #10915
task: task-level timeout values now render Tera templates #10959
http: http_download_timeout setting caps total download wall-clock time (default 30 minutes) #10920
registry: add git-town (aqua:git-town/git-town) #10935 and bundler (gem:bundler) #10939
Fixed
backend: reinstall rolling versions (e.g. nightly) when the installed content is outdated #10827
backend: align migrated backend resolution #10969
config: keep already-installed versions eligible when minimum_release_age is configured #10973
config: let user table-syntax tool options override registry defaults #10924
config: reload settings when config is reset so bootstrap phases use a consistent snapshot #10945
config: warn when a tool version uses an unsupported npm-style semver range #10916
config: add Tera contrib helpers #10970
task: preserve structured task-level tool options (arrays/tables such as os, depends, install_env) #10958
task: isolate usage_* variables per invocation so nested tasks don't inherit stale parser output #10963
task: invalidate auto freshness after a failed rerun #10953
task: respect configured includes directory when editing/adding file tasks #10955
s3: resolve cross-platform lockfile URLs for locked mode #10873
bootstrap: preserve symlinks when extracting DMGs and always detach on copy failure #10949
bootstrap: support localized brew casks (language, on_system_conditional) and reuse existing Ruby #10950
erlang: lock source install outcomes #10937
github: align SLSA provenance with the selected asset #10928
github: treat bin/rename_exe as install-time options #10925
npm: isolate version queries from project cwd #10927
cargo: own the cargo-binstall compile fallback #10926
registry: normalize backend platform selectors #10938
registry: rename the podman binary to podman-remote #10826
file: ignore malformed pax metadata during sparse detection #10978
copr: fix x86_64 builds (nasm/cmake for Fedora, PREBUILT_NASM for RHEL/EPEL) #10947 and add PIE flag for aws-lc probe #10974
toolset: preserve ref selector install identity #10942
Changed
cargo: disable cargo-quickinstall by default; opt back in with cargo.binstall_quickinstall = true #10923
registry: revert preferring aqua for codex #10922
Performance
aqua: skip public reachability probes for packages marked private #10914
Documentation
aqua: document local custom registries #10966
config: clarify sub-version arithmetic #10943
Breaking Changes
task: --quiet / quiet = true / MISE_QUIET=1 no longer collapse task output to un-prefixed interleave; they now preserve the resolved style. Use --output quiet (or -o interleave) for the old behavior #10885
task: usage_* variables are now invocation-local; workflows that injected them as implicit inputs must declare an input with env= instead #10963
💚 Sponsor mise
mise is maintained by @jdx, an open source developer for entire.io, the title sponsor of the jdx.dev open source tools. Development is funded by sponsors.
If mise saves you or your team time, please consider sponsoring at jdx.dev. Individual and company sponsorships keep mise fast, free, and independent.
Original source - Jul 14, 2026
- Date parsed from source:Jul 14, 2026
- First seen by Releasebot:Jul 10, 2026
- Modified by Releasebot:Jul 15, 2026
- Jul 9, 2026
- Date parsed from source:Jul 9, 2026
- First seen by Releasebot:Jul 10, 2026
- Jul 9, 2026
- Date parsed from source:Jul 9, 2026
- First seen by Releasebot:Jul 10, 2026
- Jul 9, 2026
- Date parsed from source:Jul 9, 2026
- First seen by Releasebot:Jul 10, 2026
v2026.7.5: Worktree-Aware Trust and npm 12 Support
mise releases smarter config trust for git worktrees and monorepos, sharing trust from a repo’s main checkout to linked worktrees and letting mise trust --all cover nested configs. It also fixes npm 12 support for npm-backed tools and switches the codex shorthand to the npm package by default.
This release makes config trust smarter across git worktrees and monorepos, and fixes npm-backed tools on npm 12.
Added
Trust is shared across git worktrees. Trust records are keyed by absolute path, so every new git worktree add checkout used to re-prompt for the same config. A config inside a linked worktree is now trusted automatically when the equivalent path in the repository's main checkout is trusted — trusting a repo once covers all of its worktrees. This is especially helpful for workflows that spin up many short-lived worktrees (e.g. AI-agent worktrees under .claude/worktrees/). Sharing flows one way, from main checkout to worktrees; an explicit --ignore still wins, and paranoid mode is excluded since its trust is tied to per-file content hashes. mise untrust inside a worktree now warns that the main checkout still trusts the config (#10890 by @jdx).
mise trust --all now trusts nested subdirectory configs. Previously --all only trusted config files in the current directory and its parents. It now also walks subdirectories and trusts each nested config root it finds, so a monorepo's nested configs can be trusted with one explicit command. The walk respects .gitignore, skips hidden directories, and skips node_modules, vendor, target, dist, and build so vendored configs are left untrusted. Each nested config gets its own trust record, so a config added later in a new subdirectory still prompts (#10889 by @jdx).
Fixed
npm: support npm 12 output. npm 12 wraps npm view --json responses in a single-item array, which broke version listing and latest-version detection for npm-backed tools. mise now normalizes both the legacy object shape and the new wrapped shape, and tolerates missing time metadata (#10888 by @jdx).
Changed
registry: the codex shorthand now prefers npm:@openai/codex over the aqua GitHub asset. The aqua asset for recent releases shipped only the main codex binary and omitted codex-code-mode-host, which broke tool calling; the npm package installs the full vendor bundle. Aqua remains available as an explicit or fallback backend (#10893 by @jdx).
Full Changelog: v2026.7.4...v2026.7.5
💚 Sponsor mise
mise is maintained by @jdx, an open source developer for entire.io, the title sponsor of the jdx.dev open source tools. Development is funded by sponsors.
If mise saves you or your team time, please consider sponsoring at jdx.dev. Individual and company sponsorships keep mise fast, free, and independent.
Original source - Jul 9, 2026
- Date parsed from source:Jul 9, 2026
- First seen by Releasebot:Jul 10, 2026
v2026.7.4: Bootstrap goes stable
mise releases a stable bootstrap and dotfiles experience, improves Rust install reconciliation for missing components and targets, and restores Linux arm64 glibc compatibility for release builds. It also speeds up install checks, refines upgrade behavior, and polishes docs and CLI links.
This release graduates mise bootstrap and mise dotfiles out of experimental mode, teaches mise install to reconcile Rust components and targets, and restores Linux arm64 glibc compatibility for release builds.
Added
Bootstrap and dotfiles are now stable. mise bootstrap and all of its subcommands (packages, repos, macOS/Linux user services, shell activation, login shell) plus mise dotfiles no longer require experimental mode, so they work with MISE_EXPERIMENTAL=0. The related mise doctor diagnostics (system packages, macOS defaults, login-shell drift) and the missing [bootstrap.packages] hint on mise install are always on as well (#10869 by @jdx).
Skip re-installs in the mise.run install script. Setting MISE_INSTALL_SKIP_IF_EXISTS avoids re-downloading mise when the requested version is already present at the install path, which is handy for CI/Docker builds that re-run the installer on every build (#10882 by @JamBalaya56562):
curl https://mise.run | MISE_INSTALL_SKIP_IF_EXISTS=1 shOnly the resolved install path is checked (not the wider PATH), and default behavior is unchanged unless you opt in.
Fixed
install: the Rust backend now asks rustup whether the configured components and targets are actually installed before skipping an install, so mise install reconciles missing components/targets on an already-installed toolchain instead of treating a bare symlink as complete. Array-form config is now parsed (with trimming and empty-entry filtering) and host-suffixed component names are matched (#10876 by @jdx).
task: task_source_files() is once again available when a task defines usage args and its run script is re-rendered with parsed CLI values (#10870 by @jdx).
upgrade: mise upgrade --minimum-release-age no longer prints a misleading "newer release ignored" warning when the installed version already satisfies the hidden latest release (#10877 by @jdx).
build: pinned the aarch64-unknown-linux-gnu cross image back to a fixed tag and added a shared glibc-floor check to release packaging, restoring predictable glibc compatibility for Linux arm64 tarballs (#10875 by @jdx).
Performance
install: missing-version detection now runs each backend's install-satisfaction check in parallel, speeding up detection for larger tool sets (a follow-up to the Rust reconciliation work). If the parallel batch fails it falls back to a sequential pass so the missing list stays accurate (#10881 by @jdx).
Changed
registry: the Scala shorthand now resolves to the canonical vfox:mise-plugins/vfox-scala fork; the asdf:mise-plugins/mise-scala fallback is unchanged (#10864 by @jdx).
Documentation
Fixed the broken bootstrap docs intro, linked the bootstrap sub-pages, and made a style/consistency pass across the bootstrap pages (#10878, #10880 by @jdx).
Fixed broken source-code links in the generated CLI reference (#10879 by @jdx).
Aqua Registry Updates
New packages: sderosiaux/launchdeck, syntax-sh/lexicon-releases.
Full Changelog: v2026.7.3...v2026.7.4
💚 Sponsor mise
mise is maintained by @jdx, an open source developer for entire.io, the title sponsor of the jdx.dev open source tools. Development is funded by sponsors.
If mise saves you or your team time, please consider sponsoring at jdx.dev. Individual and company sponsorships keep mise fast, free, and independent.
Original source
Curated by the Releasebot team
Releasebot is an aggregator of official release notes from hundreds of software vendors and thousands of sources.
Our editorial process involves the manual review and audit of release notes procured with the help of automated systems.