chore(deps): update all non-major dependencies - #36
Open
renovate[bot] wants to merge 1 commit into
Open
Conversation
renovate
Bot
force-pushed
the
renovate/all-minor-patch
branch
4 times, most recently
from
July 28, 2026 11:32
1d922df to
ae31b49
Compare
RedStar071
approved these changes
Jul 28, 2026
renovate
Bot
force-pushed
the
renovate/all-minor-patch
branch
from
July 29, 2026 01:54
ae31b49 to
542d62b
Compare
renovate
Bot
force-pushed
the
renovate/all-minor-patch
branch
from
July 29, 2026 14:45
542d62b to
7982822
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
1.25.0→1.35.0v4.1.0→v4.6.0^0.56.0→^0.61.0Release Notes
jdx/aube (aube)
v1.35.0: : Supply-chain name gates, relocatable virtual store, and richer embeddingCompare Source
This release hardens
aube addagainst typosquats and freshly-registered hallucinated package names, lets you relocate the global virtual store without dragging every other tool's cache along, adds atrust checkcommand for inspecting a version before installing, and expands theaube::embedsurface so hosts like mise can own workspace discovery and confirmation prompts.Highlights
aube add— new packages are quarantined for 30 days and requested names are challenged against a top-100,000 npm corpus for close lookalikes, with interactive "did you mean?" prompts and fail-closed behavior in CI (#1157).globalVirtualStoreDirsetting plus fixes to the long-brokencacheDirlet you relocate the global virtual store onto a fast volume without moving all your metadata caches (#1146).aube::embedfacade so embedders can supply their own UI and repo-scoped boundaries (#1154, #1168, #1169).Added
Block new and lookalike package names on
add(#1157 by @jdx) — Two supply-chain reputation gates now run on public npmjs names, alongside the existing OSV and low-download checks. AminimumPackageAgesetting (default 30 days) quarantines newly registered names by checking npmtime.created, raising the cost of registering a plausible AI-hallucinated name right before use. A second gate compares the requested name against an embedded, download-ranked top-100,000 npm corpus using bounded Damerau–Levenshtein distance, with scope-aware rules (basenames compared within a scope, full names across scopes). Interactive sessions get "did you mean?" / new-name confirmations; non-interactive contexts fail closed withERR_AUBE_SIMILAR_PACKAGE_NAME,ERR_AUBE_NEW_PACKAGE_NAME, orERR_AUBE_PACKAGE_AGE_CHECK_FAILED.--allow-low-downloadsnow bypasses all three reputation gates andallowedUnpopularPackagesexempts a name from the similar-name, age, and download checks.# disable the age quarantine for a run AUBE_MINIMUM_PACKAGE_AGE=0 aube add some-fresh-packageaube trust check <package>@​<version>(#1144 by @jdx) — Inspect a specific package version's publishing trust status without installing it, with human-readable and JSON reports.--ignore-default-excludesenforces the underlying no-downgrade policy directly. The built-in Hono exception is now scoped to@hono/node-server@1.19.15(trusted publishing resumed in 1.19.17) so it no longer disables protection for future versions.Relocate the global virtual store independently (#1146 by @jdx) — A new
globalVirtualStoreDirsetting moves only the virtual store tree (the part that must sit on thestoreDirvolume for hardlinks), leaving packument/metadata caches where they are. It's available via env,.npmrc, andaube-workspace.yaml, and wins overcacheDirwhen both are set.aube doctorgained aglobal-virtual-storeline, itsstoreline now honorsstoreDir, and cross-volume fallbacks carry aWARN_AUBE_GVS_CROSS_VOLUMEcode.Route embedded confirmations through host handlers (#1154 by @jdx) — Embedding hosts can attach a structured, async
InstallPromptHandlerso aube confirmations (such as low-download warnings) render through the host's own UI instead of reading process stdin. Prompt waits honor the existing install cancellation token, and a missing handler fails closed. Standalone aube keeps its interactive terminal prompts.Configurable workspace discovery for embedders (#1169 by @jdx) —
aube::embednow exposesis_workspace_project_rootanddiscover_workspace_packages, plus an opt-inConfinedToRootboundary that rejects parent-relative/absolute globs and out-of-root symlinks for repository-scoped hosts. Discovery now expands brace alternates (e.g.{apps,packages}/*) in positive and negative patterns and treats an on-disk workspace YAML as authoritative even when its package list is empty. The default remains pnpm-compatible, still allowing../**.Expose package manifest types from
aube::embed(#1168 by @jdx) —PackageJson,Workspaces, andManifestErrorare re-exported from the stable embedding facade so hosts get aube's tolerant real-world manifest parsing without depending onaube-manifestdirectly or duplicating schemas.Fixed
aube exec, the local-bin fallback ofaube run, and non-shellaube dlxnow decode aube-generated POSIX/cmd wrappers, resolve the real target, and launch recognized native binaries (ELF, Mach-O, FAT/FAT64, validated PE, and Windows command suffixes) directly while preserving the wrapper environment,NODE_PATH, arguments, and Unixargv[0]. JavaScript and interpreter-backed bins are unchanged.update --latest(#1166 by @jdx) — Selecting acatalog:dependency in the interactive upgrade picker previously did nothing: resolution reused the unchanged catalog range and reported it as already latest. Catalog entries are now resolved through the registrylatesttag and written back to the highest-precedence source (aube-workspace.yaml,pnpm-workspace.yaml, orpackage.jsoncatalogs), preserving membercatalog:references, range prefixes, and YAML comments.--no-saveleaves on-disk ranges untouched while still refreshing lockfile resolutions.clean(#1163 by @jdx) —aube clean/purgeno longer wipes the wholenode_modules/tree. It now removes only install-managed content (top-level packages plus aube/pnpm-owned hidden entries like.bin,.aube,.pnpm) and leaves unrecognized dotdirs such as Vite's.vite/and.vite-temp/in place, matching pnpm. Symlinked/junctioned module directories are still removed wholesale without walking the target.supportedArchitecturesconfigured, any command that re-resolved the graph could strip optional packages for other platforms out ofpnpm-lock.yaml,aube-lock.yaml,bun.lock, or npm lockfiles, silently making a committed lockfile unusable elsewhere. Portable lockfiles now always resolve every platform variant, while fetch/link still honor the configured architectures so foreign packages stay out ofnode_modules.--lockfile-onlyonaube list(#1161 by @jdx) — pnpm addedlist --lockfile-onlyin v10.23.0 and CI scripts use it, but clap rejected the flag before the command could run. It's now accepted (including thela/llaliases) as a compatibility no-op, since list already reads exclusively from the canonical lockfile and needs nonode_modules.allowBuilds.npmrcvalues (#1159 by @jdx) —allowBuildswas incorrectly advertised as an.npmrcsource, so a user-level.npmrcallowlist appeared inconfig get/config list/config explainwhile install (which reads it only from workspace YAML and the manifest) safely ignored it. Config inspection now filters.npmrcrows to settings that actually declare that source; free-form unknown keys still round-trip.add_to_projectnever reads aube's stdin for confirmation.New Contributors
Full Changelog: jdx/aube@v1.34.0...v1.35.0
💚 Sponsor aube
aube is maintained by @jdx, an open source developer for entire.io, the title sponsor of the jdx.dev open source tools including mise. Work on aube is funded by sponsors.
If aube is saving your team install time or CI minutes, please consider sponsoring at jdx.dev. Individual and company sponsorships are what keep the project fast, free, and independent.
v1.34.0: : Smarter completions and resolver safetyCompare Source
This release rounds out shell completion —
aubxnow completes, and TAB now offers registry packages, project bins, workspace packages, settings, and more — teaches the resolver to never mistake a deprecated republish for an upgrade, and makes activated shims survive aube upgrades.Added
aubxsupport (#1130 by @jdx) — Completions are now generated for theaubxmulticall surface alongsideaubeandaubr, and a set of dynamic completers fills in real values as you type: registry packages (queried against your configured npm registry with scoped-registry auth, a ~1.2s timeout, and a 2 MiB response cap), local dependencies, workspace packages, project bins fromnode_modules/.bin, settings/aliases, patch keys, and filesystem paths. Typed text is safely quoted before evaluation, and theaubxspec stops at the fetched command so downstream arguments aren't parsed as aube flags.effect=metadata for every command (#1122 by @jdx) — All 114 aube commands now declare whether they only inspect state (read), change it (write), or destroy something (destructive), via usage 4'seffect=. Registry commands likepublish,deprecate,dist-tag, andaccessare neverreadand carry blast-radius comments (they affect every consumer of a package), while code-running commands (run,exec,dlx,node,create, …) are deliberately left unclassified since their effect is whatever the executed code does. This lets tooling reason about what a command will do before running it. Requires ausageCLI of 4.0 or newer to consume the generated spec.Fixed
codemirror@6.65.7, an accidental republish of 5.65.7) could makeaube outdatedoffer a downgrade-in-disguise as an upgrade and cause installs to land on the withdrawn version. Version selection now mirrors pnpm:dist-tags.latestwins when it's in range, otherwise the highest satisfying non-deprecated version, otherwise (as a tiebreak, not a filter) the highest satisfying version so ranges that only reach deprecated versions still resolve. The rule is shared across install/add/update, the vulnerable-version re-pick, and theWantedcolumn ofoutdated/update, keeping them in agreement.aube activatepreviously symlinked each tool shim to the exact executable that created it, so removing a version-managed aube left every activated shim dangling. Activation now writes small dispatcher scripts that resolve the currentaubefromPATHand route through an internal marker, matching mise's stable-indirection model. Windows behavior is unchanged.0755, and rename it over the live path, closing the window where a concurrent command could see a missing or half-written shim.Already up to date, producing two completion lines for one result. The progress row is now cleared for no-op installs, while real installs and--lockfile-onlyruns still keep the finished bar (or CI summary) visible.aubr(#1128 by @jdx) —aube completionnow registers a dedicatedaubrsurface, so bothaube run <TAB>andaubr <TAB>complete the scripts declared in the nearestpackage.json(with their commands as descriptions). Previouslyaubr <TAB>was treated as an unknown top-level invocation and offered nothing.Changed
opencode-aiin the native-build critical path (#1127 by @jdx) —opencode-aiis added to the curated build-heavy allowlist so its tarball is fetched earlier and its build step can overlap with remaining package downloads.Full Changelog: jdx/aube@v1.33.1...v1.34.0
💚 Sponsor aube
aube is maintained by @jdx, an open source developer for entire.io, the title sponsor of the jdx.dev open source tools including mise. Work on aube is funded by sponsors.
If aube is saving your team install time or CI minutes, please consider sponsoring at jdx.dev. Individual and company sponsorships are what keep the project fast, free, and independent.
v1.33.1: : Progress bar and node-gyp fixesCompare Source
A small patch release with two install-path fixes: interactive terminals get their animated progress bar back, and embedders can build native packages again.
Fixed
AUBE_TTY_PROGRESSgate introduced back in v1.10.0 had quietly routed every interactive terminal to the CI-oriented append-only heartbeat, so installs appeared to jump in ~2s chunks (0% → 83% → 100%) instead of animating. That gate is removed:stderrTTYs now get the smooth in-place bar again, while pipes and CI runners still use the line-oriented heartbeat.--reporter=append-onlyremains available to force line output on demand.current_exe, which named the host binary and failed witherror: unexpected argument '--ignore-scripts' found. This broke installs of any npm package whose build scripts reach node-gyp (gemini-cli, vercel, wrangler, orval, and others) on a cold cache. The bootstrap now runs in-process under the existing project lock, so native builds work for embedders. Standaloneaubebehavior is unchanged.Full Changelog: jdx/aube@v1.33.0...v1.33.1
💚 Sponsor aube
aube is maintained by @jdx, an open source developer for entire.io, the title sponsor of the jdx.dev open source tools including mise. Work on aube is funded by sponsors.
If aube is saving your team install time or CI minutes, please consider sponsoring at jdx.dev. Individual and company sponsorships are what keep the project fast, free, and independent.
v1.33.0: : Script completions, embeddable Node wrappers, and pnpm 11.16+ compatibilityCompare Source
This release brings
package.jsonscript completions and a polishedaube runpicker, extends the library-embedding work so hosts can wrap the Node runtime, adds FreeBSD support, and tracks pnpm 11.16/11.17 compatibility across settings,version, and login hardening.Added
package.jsonscripts (#1108 by @jdx) —aube run <TAB>now completes the scripts declared in the nearestpackage.json, showing each script's command as the description. This works through a hand-written usage spec fragment merged onto the generated completions, so no reinstall is needed —aube completion <shell>re-derives the spec at TAB time and runs the completer per project. Note:-C/--diron the line being completed is not forwarded to the completer (a usage limitation).EmbedderRuntimebuilder offers two constructors:selector(bin_dir)(the version-manager case, identical to #1079) andwrapper(node_program)for instrumenting runtimes, transpiling loaders, and sandboxes — keeping a shim onPATHand at$NODEwhile pointingnpm_node_execpathat the real binary sonode-gypstill resolves correctly. Wrappers can contribute lifecycle-script env viaenv_append/env_set(withNODE_OPTIONSappending by default). Registration is process-wide viaset_embedder_runtime(first-write-wins), with per-install and per-call overrides, and new in-process entry pointsembed::{run, exec, dlx, node}that anchor on an explicitproject_dir. Every field is optional; unset reproduces standalone aube byte-for-byte. See the new "Node runtime" and "Run scripts, binaries, and Node" sections indocs/embedding/rust.md.update.ignoreDeps,audit.level, andaudit.ignoreworkspace settings. The deprecatedupdateConfig.ignoreDependencies,auditConfig, and top-levelauditLevelspellings are retained as fallbacks, with the canonical keys taking precedence.update.ignoreDepsapplies to bothaube updateandaube outdated, andaube auditnow resolves its severity from config instead of hard-defaulting tolow(CLI--audit-levelstill wins). Projects using pnpm's new configuration behave the same under aube without rewriting.aube version from-git(#1102 by @jdx) — Acceptsfrom-gitas a version target, resolving the latest semver-like Git tag viagit describeand normalizing a leadingv. Matchespnpm version from-gitadded in pnpm 11.17.Platform::current()now detects FreeBSD as a host platform, unblocking Node runtime resolution via PATH, installed-Node scans, and mise (previously it hard-errored). Scoped to source compatibility: there are no published FreeBSD release binaries, soaube self-updatereturns a clear message pointing topkg/mise instead.Fixed
aube runscript picker no longer scrambles the output (#1109 by @jdx) — Long script commands that wrapped past the terminal width used to stack duplicate frames on every keypress. The picker now shows the script name as the label with the command aligned in a secondary column, truncated to the real terminal width, and starts in filtering mode so typing searches script names immediately. Bundlesdemand2.0.4 for correct redraws on resize.node_modules/.modules.yamlmetadata exposing its virtual-store path, so Vite 8.1+ works with GVS natively without manualserver.fs.allowconfiguration. Older Vite releases receive an equivalent project-local compatibility copy while unrelated dependencies stay shared. GVS is no longer disabled by default for Vite/VitePress.is-odd@3.0.1) was not applied when the package was installed under an npm alias (odd-alias: npm:is-odd@3.0.1), even though the lockfile recorded the patched identity. Patch lookups now fall back to the registry name, matching pnpm's behavior.Security
ERR_AUBE_WEB_LOGIN_RESPONSE_TOO_LARGEwithout persisting a token. Mirrors the hardening in pnpm 11.17.Full Changelog: jdx/aube@v1.32.0...v1.33.0
💚 Sponsor aube
aube is maintained by @jdx, an open source developer for entire.io, the title sponsor of the jdx.dev open source tools including mise. Work on aube is funded by sponsors.
If aube is saving your team install time or CI minutes, please consider sponsoring at jdx.dev. Individual and company sponsorships are what keep the project fast, free, and independent.
v1.32.0: : Host-supplied node for embedded lifecycle scriptsCompare Source
A small release that continues the library-embedding work from v1.30.0/v1.31.0, letting hosts embedding
aube::embed::addtell aube whichnodeto run dependency lifecycle scripts on. Standaloneaubebehavior is unchanged.Added
PATHcan now point aube at the right binary.embed::InstallOptionsandAddToProjectOptionsgain anode_bin_dir: Option<PathBuf>; when set, aube seeds its per-install runtime slot with the host's node (prepending that dir to the scriptPATHand probing--versionso engine checks match) instead of resolving its own runtime or falling back to an ambientnodePATH lookup. This restores the behavior the oldaube add --globalsubprocess path had for in-process embedders such as mise'snpm:tool support. The runtime slot is a per-installtokio::task_local, so concurrent installs are safe, and leavingnode_bin_dirunset (the default for all CLI, CI, deploy, and FFI paths) preserves normal runtime switching.Full Changelog: jdx/aube@v1.31.0...v1.32.0
💚 Sponsor aube
aube is maintained by @jdx, an open source developer for entire.io, the title sponsor of the jdx.dev open source tools including mise. Work on aube is funded by sponsors.
If aube is saving your team install time or CI minutes, please consider sponsoring at jdx.dev. Individual and company sponsorships are what keep the project fast, free, and independent.
v1.31.0: : Embeddable without the publish & DNS stackCompare Source
A small release that continues the library-embedding work from v1.30.0, letting install-only hosts like mise depend on the
aubecrate without pulling in the sigstore publishing stack or a forced DNS resolver. Standaloneaubebehavior is unchanged.Added
aubecrate is now embeddable without the publish/DNS stack (#1069 by @jdx) — Follow-up to #1068, unblocking mise's use of the install path (aube::embed::add) as a library instead of shelling out to theaubebinary. Two dependencies an install-only embedder never needs are now opt-out:publishfeature (on by default) gates the sigstore provenance/signing supply chain (sigstore-*,ambient-id,x509-cert, etc.), which is only used byaube publish. ThePublishCLI variant and its command modules are compiled out when the feature is off.hickory-dnsis dropped fromaube-registry's defaults (nowdefault = ["rustls"]), so embedders pulling it in transitively no longer have reqwest's DNS resolver silently flipped for the whole binary via feature unification. Theaubebinary re-enables it through theaubecrate's defaults, so standalone builds are unchanged.aubecrate gainsrustlsandhickory-dnsfeatures that forward to reqwest /aube-registry/aube-util, so it can be depended on withdefault-features = false, features = ["rustls"]— producing a build tree with zero sigstore, hickory, ratatui, or mimalloc nodes.Full Changelog: jdx/aube@v1.30.0...v1.31.0
💚 Sponsor aube
aube is maintained by @jdx, an open source developer for entire.io, the title sponsor of the jdx.dev open source tools including mise. Work on aube is funded by sponsors.
If aube is saving your team install time or CI minutes, please consider sponsoring at jdx.dev. Individual and company sponsorships are what keep the project fast, free, and independent.
v1.30.0: : Clean process teardown for dlx and execCompare Source
This release fixes a long-standing issue where
aube dlxandaube execcould leave the tool they launched running after aube itself was terminated, and lays the groundwork for embedding aube's library crates in other tools like mise.Fixed
aube dlxno longer orphans the tool it launches (#1065 by @jdx) — Previously, terminatingaubeleft the spawned tool running, reparented toinit(ppid=1), surviving even a catchableSIGTERM— leaking long-running stdio servers and memory on every host teardown (discussion #1059).dlxandexecspawns now route through a process guard that ties the child's lifetime to aube: on any Unix, catchable signals (SIGTERM/SIGINT/SIGHUP/SIGQUIT) are forwarded to the child (sopkill -x aubestops the tool), and on LinuxPR_SET_PDEATHSIGadditionally reaps the child even on an uncatchableSIGKILL. This matches the teardown behavior ofnpx,pnpm dlx, andbunx. (macOSSIGKILL-of-aube remains a documented gap.)Changed
Standalone
aube exec <bin>andaube dlx <local-bin>now replace aube's process image (#1067 by @jdx) — On the standalone Unix binary, these single-tool paths nowexecvpinto the tool instead of spawning it as a supervised child. The tool inherits aube's pid, so any signal — including an uncatchableSIGKILL— reaches it directly with no supervisor process to outlive, closing the macOSSIGKILLgap for these paths. This matches howaube nodeandmise xalready behave. Embedded hosts (aube-ffi/aube-node), Windows, thedlxinstall path, and recursiveaube exec -rcontinue to use the supervised spawn.Worth noting: on the standalone binary,
aube exec <bin>/aube dlx <local-bin>no longer appears as a parent process — the tool takes over aube's pid.Added
aube-registry) into other tools like mise. The workspace MSRV is lowered from 1.93 to 1.91, and TLS/DNS/zlib backend selection (rustls,hickory-dns,zlib-ng) moves from the workspace to leaf crates so embedders no longer inherit those global build side effects. Standalone aube behavior is unchanged via defaults; embedders opt in withdefault-features = false, features = ["rustls"].Full Changelog: jdx/aube@v1.29.1...v1.30.0
💚 Sponsor aube
aube is maintained by @jdx, an open source developer for entire.io, the title sponsor of the jdx.dev open source tools including mise. Work on aube is funded by sponsors.
If aube is saving your team install time or CI minutes, please consider sponsoring at jdx.dev. Individual and company sponsorships are what keep the project fast, free, and independent.
v1.29.1: : minimumReleaseAge now covers add pinsCompare Source
A small but security-relevant patch release that closes a
minimumReleaseAgebypass inaube add.Fixed
aube addnow honorsminimumReleaseAgewhen pinning manifest versions (#1056 by @jdx) — Previously the version written intopackage.jsoncame straight from the packument with no release-age cutoff, so dist-tag adds (including the defaultaube add pkg) and--save-exactcould pin a freshly published version that full resolution would have gated — exactly the version most likely to be a compromisedlatestin a supply-chain attack. The manifest step now routes through the resolver'spick_version, so gatedlatesttags are steered to the newest version clearing the cutoff, deliberate exact pins and non-latesttags are still honored (or refused underminimumReleaseAgeStrict=truewithERR_AUBE_NO_MATURE_MATCHING_VERSION), andminimumReleaseAgeExcludeexemptions apply consistently. Offline adds skip the gate as before.Note that this activates the default 24h gate for
addpicks, which was silently inert for dist-tag and exact adds until now:Full Changelog: jdx/aube@v1.29.0...v1.29.1
💚 Sponsor aube
aube is maintained by @jdx, an open source developer for entire.io, the title sponsor of the jdx.dev open source tools including mise. Work on aube is funded by sponsors.
If aube is saving your team install time or CI minutes, please consider sponsoring at jdx.dev. Individual and company sponsorships are what keep the project fast, free, and independent.
v1.29.0: : Benchmark RefreshCompare Source
A small maintenance release with no user-facing code changes. The only update refreshes the published benchmark numbers so the README's install-speed claims match the latest measurements.
Changed
benchmarks/results.jsonplus the READMEBENCH_RATIOSblock. Warm-install claims now read ~5× faster than pnpm and ~2× faster than Bun, with the repeatinstall && testscenario at ~39× vs pnpm.Full Changelog: jdx/aube@v1.28.0...v1.29.0
💚 Sponsor aube
aube is maintained by @jdx, an open source developer for entire.io, the title sponsor of the jdx.dev open source tools including mise. Work on aube is funded by sponsors.
If aube is saving your team install time or CI minutes, please consider sponsoring at jdx.dev. Individual and company sponsorships are what keep the project fast, free, and independent.
v1.28.0: : Embeddable aubeCompare Source
This release makes aube embeddable in other applications, landing a stable in-process embedding API for both Rust and Node.js/Bun/Electron hosts, and fixes a warm-path bug where changed local
file:/portal:directory dependencies weren't reinstalled.Highlights
aube::embedRust facade (#1042), and a production@jdxcode/aube-nodeNode-API addon (#1025) — all by @jdx.Added
@jdxcode/aube-nodeNode-API addon (#1025 by @jdx) — Run aube installs in-process from Node.js, Bun, Electron, and compiled Bun executables. The addon exposesinstall/add, dev-dependency saves, structured progress/output events, cooperative cancellation viaAbortSignal, offline mode, structured errors (AubeErrorwith stablecodeanddiagnostic), and result statistics. It createspackage.jsonwhen absent, saves requested versions exactly, honors supported lockfile formats and project registry/auth config, skips lifecycle scripts, and uses aube's install-state fast path. Independent projects install concurrently; operations on the same workspace serialize through its project lock, and cancellation duringaddrestores manifest and lockfile snapshots. Ships the root package plus eight optional platform packages (macOS, Windows, glibc and musl Linux), with signed macOS addons, attested tarballs, and npm trusted publishing.Stable
aube::embedRust API (#1042 by @jdx) — Native Rust hosts get a supported public contract (initialize,install,add,error_code) without depending on internalaube-util,aube-settings, or CLI command structs.add_to_projectholds the workspace project lock across manifest mutation and install, supports offline/network modes, and rolls backpackage.jsonand the lockfile on cancellation. Includes docs covering embedding, concurrency, lifecycle policy, and errors.Install control hooks (#1036 by @jdx) — New invocation-scoped
InstallControlwith human (CLI default), structured-event, and silent output modes. A non-blockingInstallReporterdelivers phase, progress, and output events, and cooperative cancellation returns the stableERR_AUBE_INSTALL_CANCELLEDdiagnostic at safe install boundaries. Concurrent installs stay isolated via Tokio task-local state; standaloneaube installbehavior is unchanged.Fixed
file:directory orportal:dependency could previously hit theAlready up to datefast path and leave stale installed output, even when the file size was unchanged. Install freshness now records per-source content and metadata fingerprints (BLAKE3), and the linker re-materializes mutable local entries during the ensuing full install.Full Changelog: jdx/aube@ba5f3c5...v1.28.0
💚 Sponsor aube
aube is maintained by @jdx, an open source developer for entire.io, the title sponsor of the jdx.dev open source tools including mise. Work on aube is funded by sponsors.
If aube is saving your team install time or CI minutes, please consider sponsoring at jdx.dev. Individual and company sponsorships are what keep the project fast, free, and independent.
v1.27.0: : access, git-repo build approvals, concurrent installsCompare Source
A feature release that adds an npm-style
aube accesscommand and Git-repository-scopedallowBuildskeys, tightens credential redaction on publish, fixes stale pnpm patch handling after re-resolve, and lays the groundwork for parallel embedded installs by making the explicit-install path fully reentrant.Added
aube access(#1012 by @jdx) — Manage registry package permissions from the CLI, modeled on npm and compatible with pnpm's forms. Subcommands coverget status,list packages/list collaborators,ls packages [entity](pnpm-compatible),set status=public|private,set mfa=none|publish|automation,grant <permission> <team> <package>, andrevoke <team> <package>. Requests use scoped-registry auth, honor--otpfor MFA-protected mutations, cap response bodies, and produce distinct errors (ERR_AUBE_ACCESS_ENTITY_NOT_FOUNDvs. plain 404). Supports--jsonfor scripting alongside the human-readable default.Git-repository build approvals (#1010 by @jdx) —
allowBuildsrules can now be keyed by a package plus a normalized Git repository URL (for example,native-addon@git+<https repo url>). The commit is intentionally omitted from the key so audited repositories can advance to new SHAs without re-approving each one. Exact per-source approvals and name-only registry approvals still work as before, and deny rules continue to win over allows. Repository rules are applied consistently across lifecycle execution, script jailing, ignored-build reporting, and install graph hashes.aube add --dangerously-allow-all-builds(#1016 by @risu729) — The broad build-approval flag was previously only accepted oninstall, soaube add --global <pkg> --dangerously-allow-all-builds(as used by mise) was rejected at parse time. The flag now works onadd, is forwarded through local, filtered, and global add paths into the shared install pipeline, and conflicts explicitly with--deny-build=<pkg>. The override is invocation-scoped — it does not persistdangerouslyAllowAllBuilds=trueto project config.Fixed
Redact inline registry credentials in publish output (#1009 by @jdx) — When a registry URL embeds credentials in the
user:secret@hostform, publish no longer echoes them raw. The "already published" error, the OIDC token-exchange failure wrapper, and the--dry-run"would PUT to …" line now pass URLs throughaube_util::url::redact_url. Dry-run output is centralized indry_run_outcome_line, with test coverage confirming scoped package targets redact inline auth while preserving the encoded path.Ignore stale pnpm patch entries after re-resolve (#1022 by @jdx, fixes #1019) — On a non-frozen install that had to re-resolve,
overlay_metadata_fromwas copyingpatchedDependenciesfrom the previouspnpm-lock.yaml, so removed or wrong-version patches were still being applied and written back. Fresh-resolve now replacesgraph.patched_dependencieswith the workspace's currentread_patched_dependencies, and the pnpm 11 hash-only scalar form is no longer misread as a file path. Bats coverage was added for both the pnpm 10 object form and the pnpm 11 hash-only form.Changed
Reentrant explicit-directory installs (#1026 by @jdx) — Removes the process-wide project-lock reentrancy flag that could let an install for project B skip its filesystem lock just because project A was already installing in the same process. Commands that chain into install (
add,remove,update, filtered add,ci,dedupe) now hold an explicitProjectLockguard and callinstall::run_with_project_lock. Dependency-chain diagnostics move from a global mutex to Tokio task-local state and propagate into spawned fetch and lifecycle tasks, so parallel installs no longer clobber each other's transitive error chains.configure_script_settingsalso only mutates global script config when scripts aren't disabled.Per-install runtime and script-settings isolation (#1027 by @jdx) — Building on #1026, Node runtime selection and lifecycle-script settings are now scoped to each explicit install via nested task-local scopes (
runtime,aube_scripts) instead of process-wide snapshots. Spawned fetch and dependency-lifecycle tasks inherit the owning install's context viascope_current. The install entry usesrun_scopedandBox::pinsrun_innerto avoid Tokio worker stack overflow when scopes stack, andaube runtime setnow re-readspackage.jsonand the lockfile-pinned runtime for its status line rather than trusting a possibly stale process cache. Non-install CLI commands continue to use the process-wide fallbacks. Together with #1026, this is prerequisite groundwork for concurrent embedded installs to drop their addon-wide serialization mutex.Refreshed benchmarks for v1.26.0 (#1002 by @jdx) —
benchmarks/results.jsonand the READMEBENCH_RATIOSblock regenerated on the hermetic Verdaccio registry against aube 1.26.0 and pnpm 11.10.0. Public ratios shift to ~3× Bun / ~6× pnpm on warm installs and ~3× Bun / ~28× pnpm on the repeatinstall && testcase.New Contributors
Full Changelog: jdx/aube@v1.26.0...v1.27.0
💚 Sponsor aube
aube is maintained by @jdx, an open source developer for entire.io, the title sponsor of the jdx.dev open source tools including mise. Work on aube is funded by sponsors.
If aube is saving your team install time or CI minutes, please consider sponsoring at jdx.dev. Individual and company sponsorships are what keep the project fast, free, and independent.
v1.26.0: : bugs, prefix, and pnpm-parity polishCompare Source
A feature release that adds two pnpm-compatible commands (
aube bugsandaube prefix), fills a workspace-flag gap inaube bin, propagates proxy configuration into lifecycle scripts, and fixes two install-time failure modes around old lockfiles and malformed JSR specs.Added
aube bugs(aliasissues) (#992 by @jdx) — Resolves the package's bug tracker URL and opens it in the default browser, modeled on pnpm. With no arguments it reads the current project'spackage.json; withnameorname@versionit fetches the registry packument (honoring sharedNetworkArgs/--registry). URLs come frombugs(string orbugs.url), falling back torepositorywith normalization for GitHub/GitLab/Bitbucket shorthands,git@URLs, and an/issuessuffix when needed. Onlyhttp(s)URLs are opened; setAUBE_NO_OPEN=1to print without spawning a browser.aube prefix/aube prefix -g(#991 by @jdx) — Prints the nearest package root (or cwd), aligned with pnpm.-gprints the global prefix directory, resolved fromAUBE_HOME/PNPM_HOME/ platform defaults; this stays separate fromglobalBinDir, so a custom global bin path does not change whatprefix -greports. The command respects-Cand is exempt from the package-manager guard like other path-only helpers.aube bin -w/--workspace-root(#993 by @jdx) — The long form already worked because the global--workspace-rootflag chdirs before dispatch, butbinnever registered the pnpm-style-wshort. From a workspace sub-package,aube bin -wnow walks up viafind_workspace_rootand prints the rootnode_modules/.bin. Conflicts with-g/--globalat parse time; a no-op (falls through to plainbin) outside a workspace so it's safe in shell aliases.HTTP_PROXY/HTTPS_PROXY/NO_PROXY, plusNODE_USE_ENV_PROXY=1so Node 24+ honors the same proxy for built-infetch/http(which ignorenpm_config_proxy).httpProxyfalls back tohttpsProxyper npm/pnpm behavior. The block is set only when a proxy URL is actually configured —noProxyalone won't stamp env — so direct-connection users don't see Node's experimental proxy warnings.Fixed
integrity(#995 by @jdx) — Follows up #994: older lockfiles that still contain aresolution.tarballwithout an accompanyingintegrityfield were failing during parse even thoughstrictStoreIntegritydefaults to false. A newParseOptions(strict_store_integrity) is threaded through the install path — pre-parse, frozen/dry-run selection, lockfile-only, metadata overlay,--lockfile-dirremapping, andensure_for_cwd— so non-strict installs read those entries and re-resolve instead of aborting. Library callers andparse_for_importremain strict by default.jsr:specs (#990 by @jdx) —jsr_to_npm_namenow validates each scope and name component withvalid_jsr_name_part: empty parts,.,.., uppercase, spaces, encoded slashes, and anything outside[a-z0-9._-]are rejected before being translated to@jsr/….aube add jsr:@​std/../collectionsand similar now fail asinvalid jsr: specat parse time; legitimate scoped names like@std/collectionsare unchanged.Changed
npm install && npm run testrepeat case.aube sponsors, generated CLI docs, and the release-workflow sponsor blurb now list entire.io as title sponsor and point at jdx.dev as the canonical sponsors hub. The docs-site sponsors feed switches totitle/premier/partnertier naming.Full Changelog: jdx/aube@v1.25.2...v1.26.0
💚 Sponsor aube
aube is maintained by @jdx, an open source developer for entire.io, the title sponsor of the jdx.dev open source tools including mise. Work on aube is funded by sponsors.
If aube is saving your team install time or CI minutes, please consider sponsoring at jdx.dev. Individual and company sponsorships are what keep the project fast, free, and independent.
v1.25.2: : Cold-install lockfile write overlapCompare Source
A small performance release: cold installs now write
aube-lock.yamlconcurrently with the link phase instead of blocking on it, plus refreshed public benchmark numbers against v1.25.1.Changed
filter_graphandrun_link_phase, leaving the linker idle. It now runs on a `tokio::task:Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR was generated by Mend Renovate. View the repository job log.
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.