@williamthorsen/nmr 0.32.2 → 0.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  /** @noformat — @generated. Do not edit. Compiled by rdy. */
2
2
  /* eslint-disable */
3
- export const __readyupVersion = "0.29.0";
3
+ export const __readyupVersion = "0.30.0";
4
4
 
5
5
 
6
6
  // .readyup/kits/default.ts
@@ -25,7 +25,7 @@ var ROOT_TYPECHECK_STEP = { run: "root:typecheck", declinesArgs: true };
25
25
  var workspaceScripts = {
26
26
  build: ["compile"],
27
27
  check: [TYPECHECK_STEP, "fmt:check", "lint:check", "test"],
28
- "check:strict": [TYPECHECK_STEP, "fmt:check", "lint:strict", "test:coverage"],
28
+ "check:strict": [TYPECHECK_STEP, "fmt:check", "lint:strict", "test"],
29
29
  clean: "nmr-clean",
30
30
  compile: "nmr-compile",
31
31
  fix: ["lint", "fmt"],
@@ -53,7 +53,7 @@ var rootScripts = {
53
53
  "audit:prod": "pnpm exec v11y --prod",
54
54
  build: ["-R build"],
55
55
  check: [TYPECHECK_STEP, "fmt:check", "lint:check", "test"],
56
- "check:strict": [TYPECHECK_STEP, "fmt:check", "lint:strict", "test:coverage"],
56
+ "check:strict": [TYPECHECK_STEP, "fmt:check", "lint:strict", "test"],
57
57
  // Excludes the audit, which in CI has a workflow of its own. The build is what the narrowed check runs
58
58
  // against, so it declines the arguments rather than being narrowed by them.
59
59
  ci: [{ run: "build", declinesArgs: true }, "check:strict"],
@@ -402,7 +402,7 @@ function formatPaths(paths) {
402
402
  ${paths.map((path2) => ` ${path2}`).join("\n")}`;
403
403
  }
404
404
  function getMinVersion() {
405
- const picked = { "version": "0.32.2" };
405
+ const picked = { "version": "0.33.0" };
406
406
  if (typeof picked["version"] !== "string") {
407
407
  throw new TypeError("nmr/package.json: 'version' must be a string");
408
408
  }
@@ -13,7 +13,7 @@
13
13
  "path": "kits/default.ts"
14
14
  },
15
15
  {
16
- "hash": "cca25de2",
16
+ "hash": "1cd4c58d",
17
17
  "kind": "inline",
18
18
  "path": "../package.json",
19
19
  "paths": [
@@ -21,7 +21,7 @@
21
21
  ]
22
22
  },
23
23
  {
24
- "hash": "94bb3c62",
24
+ "hash": "74bd7994",
25
25
  "kind": "module",
26
26
  "path": "../src/default-scripts.ts"
27
27
  },
@@ -38,10 +38,10 @@
38
38
  ],
39
39
  "name": "default",
40
40
  "path": "kits/default.js",
41
- "readyupVersion": "0.29.0",
41
+ "readyupVersion": "0.30.0",
42
42
  "source": "kits/default.ts",
43
43
  "sourceHash": "904ac753",
44
- "targetHash": "bc4d49d1"
44
+ "targetHash": "2b35e5fd"
45
45
  }
46
46
  ]
47
47
  }
package/README.md CHANGED
@@ -3,19 +3,15 @@
3
3
  Context-aware script runner for pnpm monorepos. Ships an `nmr` (node-monorepo run) binary that provides centralized, consistent script execution across workspace packages and the monorepo root.
4
4
 
5
5
  <!-- section:release-notes -->
6
- ## Release notes — v0.32.2 (2026-08-19)
6
+ ## Release notes — v0.33.0 (2026-08-20)
7
7
 
8
- ### 🐛 Bug fixes
8
+ ### 🎉 Features
9
9
 
10
- - Recognize nmr behind a quoted environment assignment (#709)
10
+ - Drop the coverage step from the `check:strict` gate (#727)
11
11
 
12
- Fixes an issue where a `package.json` entry that re-invoked its own command from behind an environment assignment whose quoted value carried a space (e.g., `"build": "NODE_OPTIONS=\"--a --b\" nmr build"`) caused nmr to hang.
12
+ Drops the coverage step from `check:strict` in both the workspace and root registries: The gate now runs `test` rather than `test:coverage`.
13
13
 
14
- - Restore upgrade reporting for repos that pin exact versions (#720)
15
-
16
- Fixes an issue where `nmr upgrade` reported nothing in a repo that pins dependencies to exact versions, however far behind the tree was. nmr's shared upgrade policy now supplies both settings the upgrade tool needs to report a bare pin -- locked dependencies are included, and the range searched is `minor` -- and the default `upgrade` scripts no longer pass `--include-locked`, which went inert on its own in taze 20.0.1. The policy reaches a repo only through a `taze.config.ts` calling `defineConfig`, and nmr's ReadyUp kit now warns when a repo carries none.
17
-
18
- The `minor` range mode applies to every dependency, not only a pinned one: a `~` range is searched as `^`, so minor upgrades are proposed for it, and a `packageMode` entry other than `minor` drops its dependency from a default pass rather than narrowing it.
14
+ Coverage is still available as `nmr test:coverage`, run as a separate step.
19
15
  <!-- /section:release-notes -->
20
16
 
21
17
  ## Installation
@@ -311,7 +307,7 @@ A check that passed on a working tree passes again on the same working tree. nmr
311
307
 
312
308
  ```console
313
309
  $ nmr ci
314
- # ... four minutes of build, typecheck, lint, and coverage ...
310
+ # ... four minutes of build, typecheck, lint, and tests ...
315
311
 
316
312
  $ nmr ci
317
313
  ⏭️ node-monorepo-tools: ci: passed 2m ago on this tree, saved ~4m
@@ -406,7 +402,7 @@ $ nmr check
406
402
  ⏭️ nmr-core: check: passed 3m ago on this tree, saved ~48s — replayed: nmr-core: fmt:check: All matched files use Prettier code style!; nmr-core: test: Test Files 6 passed (6) Tests 41 passed (41)
407
403
  ```
408
404
 
409
- The assembly is flat: a constituent that is itself a composite contributes its own leaves' lines, so a skipped `ci` replays a package's `test:coverage` rather than one opaque `check:strict` line. A delegate expands into the scopes it fans out to, and a constituent that recorded no excerpt is absent rather than inferred: `typecheck` and `lint:check` print nothing on success and contribute nothing above, and a command outside the [cacheable set](#what-is-cached) records nothing at all, so `ci` replays what `check:strict` earned and nothing for `build`.
405
+ The assembly is flat: a constituent that is itself a composite contributes its own leaves' lines, so a skipped `ci` replays a package's `test` rather than one opaque `check:strict` line. A delegate expands into the scopes it fans out to, and a constituent that recorded no excerpt is absent rather than inferred: `typecheck` and `lint:check` print nothing on success and contribute nothing above, and a command outside the [cacheable set](#what-is-cached) records nothing at all, so `ci` replays what `check:strict` earned and nothing for `build`.
410
406
 
411
407
  It is assembled when the composite records its pass rather than when it skips, so every excerpt in it was certified during that one run, on that one tree. `NMR_RUN_ID` is what makes that provable; see [reserved environment variables](#reserved-environment-variables).
412
408
 
@@ -579,7 +575,7 @@ These scripts are available out of the box. Repo-wide config (tier 2) and per-pa
579
575
  | ---------------- | ----------------------------------------------------------- |
580
576
  | `build` | `compile` |
581
577
  | `check` | `typecheck`, `fmt:check`, `lint:check`, `test` |
582
- | `check:strict` | `typecheck`, `fmt:check`, `lint:strict`, `test:coverage` |
578
+ | `check:strict` | `typecheck`, `fmt:check`, `lint:strict`, `test` |
583
579
  | `clean` | `nmr-clean` |
584
580
  | `compile` | `nmr-compile` |
585
581
  | `fix` | `lint`, `fmt` |
@@ -640,10 +636,12 @@ Neither is bound to a git hook. `prepush` is named for when you run it, not for
640
636
 
641
637
  #### Check and quality
642
638
 
643
- | Command | Runs |
644
- | -------------- | -------------------------------------------------------- |
645
- | `check` | `typecheck`, `fmt:check`, `lint:check`, `test` |
646
- | `check:strict` | `typecheck`, `fmt:check`, `lint:strict`, `test:coverage` |
639
+ | Command | Runs |
640
+ | -------------- | ----------------------------------------------- |
641
+ | `check` | `typecheck`, `fmt:check`, `lint:check`, `test` |
642
+ | `check:strict` | `typecheck`, `fmt:check`, `lint:strict`, `test` |
643
+
644
+ Neither gate computes coverage: Instrumentation multiplies the wall time of the run they exist to keep short. Coverage is [`test:coverage`](#test-selections), run as a step of its own; a repo that wants it inside the gate [overrides](#configuration) `check:strict`.
647
645
 
648
646
  #### Fix
649
647
 
@@ -4,7 +4,7 @@ const ROOT_TYPECHECK_STEP = { run: 'root:typecheck', declinesArgs: true };
4
4
  export const workspaceScripts = {
5
5
  build: ['compile'],
6
6
  check: [TYPECHECK_STEP, 'fmt:check', 'lint:check', 'test'],
7
- 'check:strict': [TYPECHECK_STEP, 'fmt:check', 'lint:strict', 'test:coverage'],
7
+ 'check:strict': [TYPECHECK_STEP, 'fmt:check', 'lint:strict', 'test'],
8
8
  clean: 'nmr-clean',
9
9
  compile: 'nmr-compile',
10
10
  fix: ['lint', 'fmt'],
@@ -31,7 +31,7 @@ export const rootScripts = {
31
31
  'audit:prod': 'pnpm exec v11y --prod',
32
32
  build: ['-R build'],
33
33
  check: [TYPECHECK_STEP, 'fmt:check', 'lint:check', 'test'],
34
- 'check:strict': [TYPECHECK_STEP, 'fmt:check', 'lint:strict', 'test:coverage'],
34
+ 'check:strict': [TYPECHECK_STEP, 'fmt:check', 'lint:strict', 'test'],
35
35
  ci: [{ run: 'build', declinesArgs: true }, 'check:strict'],
36
36
  clean: 'nmr-clean',
37
37
  fix: ['lint', 'fmt'],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@williamthorsen/nmr",
3
- "version": "0.32.2",
3
+ "version": "0.33.0",
4
4
  "private": false,
5
5
  "description": "Context-aware script runner for pnpm monorepos",
6
6
  "keywords": [
@@ -80,7 +80,7 @@
80
80
  "@williamthorsen/toolbelt.testing": "0.3.0",
81
81
  "@williamthorsen/toolbelt.vitest": "0.4.0",
82
82
  "prettier": "3.9.6",
83
- "readyup": "0.29.0",
83
+ "readyup": "0.30.0",
84
84
  "tinyglobby": "0.2.17",
85
85
  "typescript": "6.0.3",
86
86
  "vitest": "4.1.10"