v0.1.5
This release focuses on package-manager fidelity — npm-lockfile round-trips and pnpm injected-dependency migration — alongside an internal Rust idiomaticity pass and a tsconfig-cache crash fix.
Note
The workspace minimum supported Rust version moved 1.85 → 1.88 (6230023) to allow let-chains in nub's own crates. This affects only people building nub from source; the published packages ship prebuilt binaries and need no toolchain.
Package manager
| Area | What changed | Commit |
|---|---|---|
| npm lockfile fidelity | npm's per-package keys — hasInstallScript, hasShrinkwrap, inBundle, deprecated, bundleDependencies — are now captured and re-emitted, so a nub-mediated rewrite of a real npm lockfile no longer produces a spurious diff on native-addon packages |
1050f8e |
| Injected dependencies | nub pm use nub now migrates projects that use pnpm's dependenciesMeta.injected instead of refusing them; the install path already materialized injected deps faithfully, so this removes a stale migration refusal |
1732386 |
The three repo-wide inject settings — injectWorkspacePackages, dedupeInjectedDeps, and syncInjectedDepsAfterScripts — still warn and drop on migration.
Runtime fixes
The tsconfig cache in nub-native now recovers from a poisoned mutex instead of panicking: both lock accesses in load_for_dir use unwrap_or_else(|e| e.into_inner()), so a single earlier transient panic no longer makes every subsequent loadTsconfig / resolveTs call fail. Thanks to @nerkoux for the fix. (#24, 92c4069)
Documentation
- The Yarn environment-variable compatibility note now lists the specific supported settings instead of jargon (
6b98d7f).
Internals
A behavior-preserving Rust idiomaticity pass across nub's own crates — combinators, helper extraction, and let-chain flattening of nested conditionals. No runtime behavior changes.
| Crate | What changed | Commit |
|---|---|---|
| nub-cli | Idiomatic cleanups in cli.rs and the agent module |
0d1329a |
| nub-core | Nested conditionals flattened with let-chains | 1ad14c6 |
| nub-native | Idiomatic cleanups in cache/resolve/lib | b66f72f |
| pm_engine | Combinators and helper extraction | 237e5a6 |
A follow-up fixed fmt plus a clippy double_ended_iterator_last lint surfaced by the pass (40f9e58).
Testing
- New pnpm injected-deps conformance fixture (
72d4494,a965eec). - A
hasInstallScriptround-trip conformance fixture ships with the npm-lockfile field-preservation change (1050f8e).
Commits in this release
- vendor/aube: bump pin for npm-lockfile round-trip field preservation (
1050f8e) - release: scannable release-notes style — codify in skill Step 4 + AGENTS.md (
eabd574) - fray: tighten reminder + rest-guard inbox discipline (drain oldest, incomplete-handoff = needs-retry) (
594210b) - cli: idiomatic cleanups in cli.rs and agent module (
0d1329a) - nub-core: flatten nested conditionals with let-chains (
1ad14c6) - nub-native: idiomatic cleanups in cache/resolve/lib (
b66f72f) - pm_engine: idiomatic cleanups (combinators, helper extraction) (
237e5a6) - nub-native: recover from mutex poison in tsconfig cache (#24,
92c4069) - docs: replace jargon YARN_* compat note with explicit supported settings (
6b98d7f) - ci: fix fmt + clippy double_ended_iterator_last from idiomaticity pass (
40f9e58) - chore: bump workspace MSRV to 1.88 for let-chains (
6230023) - pm: allow nub-identity migration for projects using dependenciesMeta.injected (
1732386) - tests: add pnpm injected-deps conformance fixture (
72d4494) - tests: fix stale injected-deps dir-B comment in conformance run.sh (
a965eec) - v0.1.5 (
8698b06)
Full Changelog: v0.1.4...v0.1.5