Repository navigation
v1.21.0: Sharper pnpm lockfile parity
A pnpm-parity polish release: lockfiles now carry the two top-level integrity checksums pnpm writes, root projects under sharedWorkspaceLockfile: false get their own lockfile back, and a handful of install correctness/UX bugs around peer-suffixed source deps and the progress bar are squared away.
Added
packageExtensionsChecksumandpnpmfileChecksuminpnpm-lock.yaml(#883 by @rubnogueira) — aube now computes and emits the two top-level integrity keys pnpm uses to guard the effectivepackageExtensionsmap and the active.pnpmfile.cjs/.pnpmfile.mjs. The implementation is a faithful Rust port of theobject-hashnpm package with pnpm's exact options (respectType: false,sha256, base64, unordered arrays/objects/sets), placed immediately afteroverrides:and beforeimporters:with the right blank-line separation. The result is byte-identical to pnpm on real workspaces, so round-tripping a lockfile between pnpm and aube no longer produces a gratuitous diff.aube-lock.yamloutput is unchanged, and workspaces withoutpackageExtensionsor a pnpmfile omit the keys entirely. A newWARN_AUBE_PNPMFILE_CHECKSUM_FAILEDcovers the best-effort case where a pnpmfile can't be read for hashing.
Fixed
-
Source deps with peer context no longer crash linking (#885 by @rubnogueira) — Fresh
aube install --forceruns that pulled a git or remote-tarball dependency which acquired a peer-context suffix (e.g.some-pkg@git+<sha>(react@18.2.0)) could fail withERR_AUBE_MISSING_PACKAGE_INDEX. The streaming fetch keys those indices under the canonical source coordinate, but the resolver's peer-context post-pass rewrites the dep_path to include(peer@ver)or a hashed_<10hex>marker;remap_indices_to_contextualizednever stripped the suffix back off, so the index was dropped. It now strips both suffix forms to recover the canonical key. -
Root workspace lockfile written under
sharedWorkspaceLockfile: false(#882 by @rubnogueira) — The per-project lockfile writer explicitly skipped the.importer, so the root's ownpnpm-lock.yaml(containing the root package's dependencies) silently disappeared after install. The root is now written like any other project, resolving to the workspace root directory, with existing-format preservation intact — no surpriseaube-lock.yamlnext to apnpm-lock.yaml. Filtered installs additionally only rewrite lockfiles for the selected project(s). This brings the per-project path in line with pnpm'sshared-workspace-lockfile=falsebehavior. -
Progress bar no longer overshoots on
workspace:/link:deps (#884 by @rubnogueira) — A monorepo install (most visibly afteraube clean) could finish withreused > resolvedand emitWARN_AUBE_PROGRESS_OVERFLOW. Link deps were credited toreusedonce in the streaming pass and then a second time by the post-filter_graphcatch-up fetch, which selected work purely by absence fromindices— and link deps never populateindices. The catch-up is now scoped to non-local packages (where it belongs), and the CI summary clampsreused + downloaded <= resolvedas a guard against future counter races. -
@endevco/aubenpm scope restored (#887 by @jdx) — The npm publish identity was inadvertently renamed to@jdx/aubein the v1.18.2 path, but that package isn't published, breakingpublish-npm. The root package, generated platform sub-packages (@endevco/aube-<os>-<arch>), the preinstall lookup, and install docs are all back on@endevco, matching what users actually install.
Full Changelog: v1.20.0...v1.21.0
💚 Sponsor aube
aube is part of jdx.dev — an independent developer-tooling studio run by @jdx, also behind mise. Work on aube is funded entirely 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.