@williamthorsen/nmr 0.43.0 โ 0.45.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.
- package/.meta/changelog.json +168 -0
- package/.readyup/kits/default.js +1331 -136
- package/.readyup/manifest.json +148 -9
- package/CHANGELOG.md +51 -0
- package/README.md +17 -3
- package/agents/guidance/rulebooks/nmr.md +1 -1
- package/dist/esm/commands/fmt-cache.d.ts +26 -0
- package/dist/esm/commands/fmt-cache.js +71 -0
- package/dist/esm/commands/fmt.d.ts +10 -3
- package/dist/esm/commands/fmt.js +34 -6
- package/dist/esm/config.js +74 -9
- package/dist/esm/default-scripts.d.ts +10 -1
- package/dist/esm/default-scripts.js +45 -39
- package/dist/esm/defineConfig.d.ts +1 -1
- package/dist/esm/entry-chain.d.ts +24 -0
- package/dist/esm/entry-chain.js +57 -0
- package/dist/esm/glyphs.d.ts +1 -1
- package/dist/esm/help.d.ts +1 -1
- package/dist/esm/help.js +3 -3
- package/dist/esm/helpers/createOutputRecorder.d.ts +17 -0
- package/dist/esm/helpers/createOutputRecorder.js +22 -0
- package/dist/esm/helpers/escapeControlCharacters.d.ts +10 -0
- package/dist/esm/helpers/escapeControlCharacters.js +12 -0
- package/dist/esm/resolve-scripts.d.ts +5 -3
- package/dist/esm/resolve-scripts.js +7 -3
- package/dist/esm/resolver.d.ts +5 -4
- package/dist/esm/resolver.js +16 -6
- package/dist/esm/runCli.js +146 -101
- package/dist/esm/runner.d.ts +7 -0
- package/dist/esm/runner.js +105 -15
- package/dist/esm/steps.d.ts +50 -18
- package/dist/esm/steps.js +82 -13
- package/dist/esm/taze.d.ts +5 -2
- package/dist/esm/taze.js +4 -1
- package/dist/esm/tiers.d.ts +5 -4
- package/dist/esm/types.d.ts +10 -0
- package/dist/esm/vitest-git-isolation.js +3 -1
- package/dist/esm/vitest.js +9 -5
- package/dist/esm/workspace-globs.d.ts +5 -0
- package/dist/esm/workspace-globs.js +8 -0
- package/docs/check-cache.md +2 -0
- package/docs/reporting.md +2 -0
- package/docs/scripts.md +36 -10
- package/docs/upgrades.md +1 -1
- package/docs/utilities.md +14 -2
- package/docs/vitest.md +20 -8
- package/package.json +7 -7
package/.meta/changelog.json
CHANGED
|
@@ -1,4 +1,172 @@
|
|
|
1
1
|
[
|
|
2
|
+
{
|
|
3
|
+
"version": "0.45.0",
|
|
4
|
+
"date": "2026-10-12",
|
|
5
|
+
"sections": [
|
|
6
|
+
{
|
|
7
|
+
"title": "๐ Features",
|
|
8
|
+
"audience": "all",
|
|
9
|
+
"items": [
|
|
10
|
+
{
|
|
11
|
+
"description": "Adds `maintenance.auto=false` to the git config that the Vitest git-isolation setup file injects, so that a git command run by a test does not start a detached `git maintenance` process that can still be writing under `.git` when the test removes the repository. (#1033)",
|
|
12
|
+
"hash": "a46223192e0dac47366d7c9c46acb3a1234d1dfc",
|
|
13
|
+
"entry": 1
|
|
14
|
+
}
|
|
15
|
+
]
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"title": "๐ Bug fixes",
|
|
19
|
+
"audience": "all",
|
|
20
|
+
"items": [
|
|
21
|
+
{
|
|
22
|
+
"description": "Fixes the issue that `nmr-fmt` failed a run in which every path matched by the pathspecs was one that it skips, such as a symlink, a submodule gitlink, or an unreadable file, and makes such a run exit 0 and name the skipped paths on stderr. (#1010)",
|
|
23
|
+
"hash": "aef8382212b6ab4b5e48fd2086e018a6e9da2cef",
|
|
24
|
+
"entry": 1
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"description": "Fixes the issue that a `rootScripts` or `workspaceScripts` entry in `.config/nmr.config.ts` that names its own key, as a shell segment or as a step-list element, re-entered nmr without bound, by rejecting the entry when the config loads with an error that names the file, the field, the key, and the edit that resolves it. (#1011)",
|
|
28
|
+
"hash": "6c61d03429b378a131910c3980b77caf29fd0e51",
|
|
29
|
+
"entry": 1
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"description": "Fixes the issue that a package's own `package.json` entry running `nmr -R <same command>` re-entered that package without bound instead of being discarded or rejected as a self-reference. (#1011)",
|
|
33
|
+
"hash": "6c61d03429b378a131910c3980b77caf29fd0e51",
|
|
34
|
+
"entry": 2
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"description": "Fixes the issue that nmr treated a root entry such as `pnpm --recursive exec nmr build` as a re-invocation of its own command, because it ignored the `-r`, `--filter`, and `-w` flags that pnpm applies to the nmr that it launches. (#1011)",
|
|
38
|
+
"hash": "6c61d03429b378a131910c3980b77caf29fd0e51",
|
|
39
|
+
"entry": 3
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"description": "Fixes the issue that `nmr` hung when a script entry re-entered its own command in the same directory without nmr recognizing the self-reference, as `nmr -F own-pkg build` in `own-pkg`'s own `build` or a cycle through two entries does, by failing the run with an error that names the command and the directory and lists the commands that the run had entered, outermost first. (#1012)",
|
|
43
|
+
"hash": "db41c4b556572ede212a409fce8d845af3572f19",
|
|
44
|
+
"entry": 1
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"description": "Fixes the issue that the test-tier definitions in `vitest.md` gave a test that starts its own loopback server three defensible tiers: `tool` is now a process that the test starts or a program that the environment supplies, `localhost` a service already running on this machine, and an in-process server from the package's own dependency closure `unit`. (#1023)",
|
|
48
|
+
"hash": "77709de748dc7d06e76dea179f8b8741d3b8a38a",
|
|
49
|
+
"entry": 1
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"description": "Fixes the issue that `nmr`'s warning about a `package.json` script that runs `nmr` through a shell sent an entry whose whole value is `nmr <name>` to `.config/nmr.config.ts`, when the accurate edit is to replace that value with the command of the `<name>` script in the same file. (#1030)",
|
|
53
|
+
"hash": "ff02b6eb099cbfd92616946afdabac737c955c1c",
|
|
54
|
+
"entry": 1
|
|
55
|
+
}
|
|
56
|
+
]
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"title": "โป๏ธ Refactoring",
|
|
60
|
+
"audience": "dev",
|
|
61
|
+
"items": [
|
|
62
|
+
{
|
|
63
|
+
"description": "Moves the work of `runInvocation` in `nmr` into the phase functions `establishInvocation`, `planRun`, and `executePlan`, which `runCli` calls in order, and changes `runGated` and `reportRecording` to take a named `RunPlan` in place of an options object that repeated its fields. (#1014)",
|
|
64
|
+
"hash": "c761afb7f37e64ce89b83178cfcc4bc4933a8587",
|
|
65
|
+
"entry": 1
|
|
66
|
+
}
|
|
67
|
+
]
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"title": "๐งช Tests",
|
|
71
|
+
"audience": "dev",
|
|
72
|
+
"items": [
|
|
73
|
+
{
|
|
74
|
+
"description": "Replaces the `GIT_CEILING_DIRECTORIES` stub with a `GIT_DIR` stub that points to a missing path in the no-repository test of `check-cache-gate.tool.test.ts`, and sets `maintenance.auto` to `false` in the file's fixture repository, so that git neither finds a leftover of the removed `repo/.git` nor starts a detached maintenance process that writes under `.git`. (#1032)",
|
|
75
|
+
"hash": "66996a15b7ef27374c81212f10a20efd3d48f4ff",
|
|
76
|
+
"entry": 1
|
|
77
|
+
}
|
|
78
|
+
]
|
|
79
|
+
}
|
|
80
|
+
]
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"version": "0.44.0",
|
|
84
|
+
"date": "2026-10-11",
|
|
85
|
+
"sections": [
|
|
86
|
+
{
|
|
87
|
+
"title": "๐ Features",
|
|
88
|
+
"audience": "all",
|
|
89
|
+
"items": [
|
|
90
|
+
{
|
|
91
|
+
"description": "Enables Prettier's content-keyed cache in `nmr-fmt` (run by `nmr fmt` and `nmr fmt:check`), which skips each file whose content, Prettier version, resolved options, and lockfile are unchanged since a run that passed it, and adds `--no-cache` and `NMR_NO_CACHE=1` to bypass it. (#993)",
|
|
92
|
+
"hash": "8c49c92f557273f018a1e12709146e713d49d223",
|
|
93
|
+
"entry": 1
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"description": "Adds the `shouldRunInBackground` field to a composite element in `.config/nmr.config.ts`, which starts the step, runs the steps after it without waiting, prints the step's output whole after the step ends, and fails the composite if the step fails. (#1003)",
|
|
97
|
+
"hash": "683232387f38e81916f20718e0d4e9a7abb3d3ef",
|
|
98
|
+
"entry": 1
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"description": "Adds a `self-hosted runner` checklist to nmr's readyup kit, which reads the repo's GitHub settings through `gh`, recommends setting `CI_RUNS_ON` when a private repo with an online self-hosted runner and compatible workflows has not set it, and warns about each failing condition once the variable is set. (#1006)",
|
|
102
|
+
"hash": "e7ee5fe2e147d737d11a302403b4b342d64de194",
|
|
103
|
+
"entry": 1
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"description": "Adds the root-only config key `selfHostedRunner.exempt`, a non-empty reason that stops the kit from recommending `CI_RUNS_ON` for a repo that qualifies for the self-hosted runners but stays off them. (#1006)",
|
|
107
|
+
"hash": "e7ee5fe2e147d737d11a302403b4b342d64de194",
|
|
108
|
+
"entry": 2
|
|
109
|
+
}
|
|
110
|
+
]
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"title": "๐ชฆ Removed",
|
|
114
|
+
"audience": "all",
|
|
115
|
+
"items": [
|
|
116
|
+
{
|
|
117
|
+
"description": "Removes the zero-argument form of `getDefaultRootScripts` from the `@williamthorsen/nmr/scripts` export, which now requires the monorepo root so that it can read the declared workspaces. (#992)",
|
|
118
|
+
"breaking": true,
|
|
119
|
+
"migration": "Pass the monorepo root to `getDefaultRootScripts`, as in `getDefaultRootScripts(monorepoRoot)`; a directory without a `pnpm-workspace.yaml` returns root lint commands that do not exclude any directory, where the old call excluded `packages/**`.",
|
|
120
|
+
"hash": "075a76eaecb7304f6645c917693c785c1e08b20b",
|
|
121
|
+
"entry": 2
|
|
122
|
+
}
|
|
123
|
+
]
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"title": "๐ Bug fixes",
|
|
127
|
+
"audience": "all",
|
|
128
|
+
"items": [
|
|
129
|
+
{
|
|
130
|
+
"description": "Fixes the issue that `root:lint`, `root:lint:check`, and `root:lint:strict` linted every workspace outside `packages/` under the root ESLint config, by excluding each workspace package that `pnpm-workspace.yaml` declares, with its `!` exclusions honored, in place of the fixed `packages/**`. (#992)",
|
|
131
|
+
"hash": "075a76eaecb7304f6645c917693c785c1e08b20b",
|
|
132
|
+
"entry": 1
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"description": "Fixes the issue that `defineConfig({ mode: undefined })` emptied the `nmr upgrade` report, by translating a cleared `mode` into the `'default'` mode of taze (the upgrade tool that `nmr upgrade` runs), which follows the range that each dependency declares. (#1008)",
|
|
136
|
+
"hash": "5813dcbe9d11fce34edaf819a264eb634f948d3c",
|
|
137
|
+
"entry": 1
|
|
138
|
+
}
|
|
139
|
+
]
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"title": "โก Performance",
|
|
143
|
+
"audience": "all",
|
|
144
|
+
"items": [
|
|
145
|
+
{
|
|
146
|
+
"description": "Sets `maxWorkers: 3` on every project built by `defineVitestConfig` and `defineRootVitestConfig` when the machine has 2 or fewer cores, such as GitHub's standard runner for a private repo, on which Vitest's default ran every test file serially on one worker. (#994)",
|
|
147
|
+
"hash": "9a4494c2ff740c2b278a2e28bb05a4ab117134ba",
|
|
148
|
+
"entry": 1
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"description": "Changes the default `check` and `check:strict` to start lint first and run it in the background, so that a local check, `nmr ci`, and `nmr prepush` no longer wait for type-aware lint to finish before typecheck, the format check, and the tests run. (#1003)",
|
|
152
|
+
"hash": "683232387f38e81916f20718e0d4e9a7abb3d3ef",
|
|
153
|
+
"entry": 2
|
|
154
|
+
}
|
|
155
|
+
]
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
"title": "๐ Documentation",
|
|
159
|
+
"audience": "dev",
|
|
160
|
+
"items": [
|
|
161
|
+
{
|
|
162
|
+
"description": "Documents in `docs/vitest.md` that Vitest's `--maxWorkers` flag has no effect on a machine with 2 or fewer cores, and that `VITEST_MAX_WORKERS`, `--no-file-parallelism`, or `maxWorkers` in the `project` seam overrides the default there. (#994)",
|
|
163
|
+
"hash": "9a4494c2ff740c2b278a2e28bb05a4ab117134ba",
|
|
164
|
+
"entry": 2
|
|
165
|
+
}
|
|
166
|
+
]
|
|
167
|
+
}
|
|
168
|
+
]
|
|
169
|
+
},
|
|
2
170
|
{
|
|
3
171
|
"version": "0.43.0",
|
|
4
172
|
"date": "2026-10-09",
|