v11y-check 0.15.8 โ 0.16.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 +663 -0
- package/.readyup/kits/default.js +1 -1
- package/.readyup/manifest.json +2 -2
- package/CHANGELOG.md +375 -0
- package/README.md +9 -1
- package/package.json +9 -7
|
@@ -0,0 +1,663 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"version": "0.16.0",
|
|
4
|
+
"date": "2026-09-08",
|
|
5
|
+
"sections": [
|
|
6
|
+
{
|
|
7
|
+
"title": "๐ Features",
|
|
8
|
+
"audience": "all",
|
|
9
|
+
"items": [
|
|
10
|
+
{
|
|
11
|
+
"description": "Report a package whose tarball would omit its changelog (#768)",
|
|
12
|
+
"body": "Adds ReadyUp checks to verify that every published package bundles its changelog files: the human-readable `CHANGELOG.md` and the machine-readable `changelog.json`.",
|
|
13
|
+
"hash": "25dd5c01b5e5b0ac26b266613fe71f47428e6c5c"
|
|
14
|
+
}
|
|
15
|
+
]
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"title": "๐งช Tests",
|
|
19
|
+
"audience": "dev",
|
|
20
|
+
"items": [
|
|
21
|
+
{
|
|
22
|
+
"description": "Read console spy output with listConsoleLines rather than by hand (#781)",
|
|
23
|
+
"body": "- Replaces the hand-rolled reads of a console spy's `mock.calls` in the `nmr`, `release-kit`, and `v11y-check` test suites with `listConsoleLines` from `@williamthorsen/toolbelt.vitest/candidate`.\n- Clears the `toolbelt.vitest/no-console-calls-read` recommendation that `rdy run --packages` reported.",
|
|
24
|
+
"hash": "9a5fbc2f01e8468821be89c345c59ade913074f4"
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
]
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"version": "0.15.8",
|
|
32
|
+
"date": "2026-09-01",
|
|
33
|
+
"sections": [
|
|
34
|
+
{
|
|
35
|
+
"title": "โป๏ธ Refactoring",
|
|
36
|
+
"audience": "dev",
|
|
37
|
+
"items": [
|
|
38
|
+
{
|
|
39
|
+
"description": "Upgrade to readyup v0.34 and exclude a private repo root from kit checks (#759)",
|
|
40
|
+
"body": "Upgrades `readyup` to v0.34, whose `discoverWorkspaces` now reports the repo root. `release-kit`'s `npm-auto-publish` kit filters that root out unless it is publishable, so a private root is no longer listed in the kit's report.\n\nTest suites for release-kit's ReadyUp kits have been refactored to use the patterns documented in v0.34.",
|
|
41
|
+
"hash": "2c0cf04c9a282e10e03c3fd1a44d4330b8a25a94"
|
|
42
|
+
}
|
|
43
|
+
]
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"title": "โ๏ธ Tooling",
|
|
47
|
+
"audience": "dev",
|
|
48
|
+
"items": [
|
|
49
|
+
{
|
|
50
|
+
"description": "Restrict node:fs scaffolding in test code to the temporary tree's API (#756)",
|
|
51
|
+
"body": "Adds an ESLint restriction that flags the `node:fs` and `node:fs/promises` calls that scaffold a temporary directory in test code instead of using the `TempTree` API. Also migrates `v11y-check`'s `node:fs/promises` scaffolding to that API.",
|
|
52
|
+
"hash": "c3290759d44f6396602bd3bd69a00d6518e2e0cc"
|
|
53
|
+
}
|
|
54
|
+
]
|
|
55
|
+
}
|
|
56
|
+
]
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"version": "0.15.7",
|
|
60
|
+
"date": "2026-08-24",
|
|
61
|
+
"sections": [
|
|
62
|
+
{
|
|
63
|
+
"title": "โป๏ธ Refactoring",
|
|
64
|
+
"audience": "dev",
|
|
65
|
+
"items": [
|
|
66
|
+
{
|
|
67
|
+
"description": "Upgrade ReadyUp and the toolbelt packages, adopting their new APIs (#748)",
|
|
68
|
+
"body": "Upgrades `readyup` and the `@williamthorsen/toolbelt.*` packages to their latest versions.\n\nThe `readFile` utility from `readyup` replaces hand-rolled code in `nmr`.",
|
|
69
|
+
"hash": "9e54b0670c67b6b1da5d7afca7fe071ecbed2797"
|
|
70
|
+
}
|
|
71
|
+
]
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"title": "๐งช Tests",
|
|
75
|
+
"audience": "dev",
|
|
76
|
+
"items": [
|
|
77
|
+
{
|
|
78
|
+
"description": "Scaffold the nmr-core, root, and v11y-check trees through the write API (#734)",
|
|
79
|
+
"body": "Converts the `node:fs` scaffolding in five test suites across `nmr-core`, the repo root, and `v11y-check` to the temporary tree's own write API, which refuses a path that escapes the tree. Fixture helpers in `hashWorkingTree.tool.test.ts` and `init.unit.test.ts` take the tree itself in place of a captured directory string.",
|
|
80
|
+
"hash": "91afecf0302d84ac8e67607b81a0269b1c410464"
|
|
81
|
+
}
|
|
82
|
+
]
|
|
83
|
+
}
|
|
84
|
+
]
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"version": "0.15.6",
|
|
88
|
+
"date": "2026-08-20",
|
|
89
|
+
"sections": [
|
|
90
|
+
{
|
|
91
|
+
"title": "๐งช Tests",
|
|
92
|
+
"audience": "dev",
|
|
93
|
+
"items": [
|
|
94
|
+
{
|
|
95
|
+
"description": "Register the working directory for disposal alongside the tree it points into (#724)",
|
|
96
|
+
"body": "Converts the `release-kit` and `v11y-check` suites that run from inside a temporary directory to `createTempTree` and `pointCwdAt`, registered through `disposeOnTestFinished` or scoped with `using`. Reverse-order disposal now restores the working directory before removing the tree it pointed into, which each suite previously had to sequence by hand.",
|
|
97
|
+
"hash": "6d3a42a33913ae9900b8a2d106329dcf690941e6"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"description": "Route the remaining hand-built temporary directories through createTempTree (#725)",
|
|
101
|
+
"body": "Replaces the hand-built temporary directories in the `release-kit` and `v11y-check` test suites with a `createTempTree` fixture, dropping the `beforeEach`/`afterEach` pairs that created and removed them.",
|
|
102
|
+
"hash": "92e76397f6f5ef3068b7f4805599fd090f930f7d"
|
|
103
|
+
}
|
|
104
|
+
]
|
|
105
|
+
}
|
|
106
|
+
]
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"version": "0.15.5",
|
|
110
|
+
"date": "2026-08-19",
|
|
111
|
+
"sections": [
|
|
112
|
+
{
|
|
113
|
+
"title": "๐งช Tests",
|
|
114
|
+
"audience": "dev",
|
|
115
|
+
"items": [
|
|
116
|
+
{
|
|
117
|
+
"description": "Register fixture-repo cleanup against the test that asks for it (#715)",
|
|
118
|
+
"body": "Routes nmr's `buildRepo` fixture helper through `createTempTree`, registering each fixture directory's removal against the test that requested it. The module-level accumulator and the exported `removeFixtureDirs` have been removed.",
|
|
119
|
+
"hash": "4186900691928b41e56b6f1855ca74b9700c1968"
|
|
120
|
+
}
|
|
121
|
+
]
|
|
122
|
+
}
|
|
123
|
+
]
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"version": "0.15.3",
|
|
127
|
+
"date": "2026-08-17",
|
|
128
|
+
"sections": [
|
|
129
|
+
{
|
|
130
|
+
"title": "โป๏ธ Refactoring",
|
|
131
|
+
"audience": "dev",
|
|
132
|
+
"items": [
|
|
133
|
+
{
|
|
134
|
+
"description": "Adopt silenceConsole across the test suites (#677)",
|
|
135
|
+
"body": "Adopts `silenceConsole` from `@williamthorsen/toolbelt.vitest` to replace all hand-rolled `vi.spyOn(console, โฆ)` spies and reduce boilerplate across the repo's test suites. The function returns a disposable, allowing the caller to use `using` to enable restoration of the console method at the end of the test scope.",
|
|
136
|
+
"hash": "412fd27cfe1324612aa123d1f8166fb6b37a07ff"
|
|
137
|
+
}
|
|
138
|
+
]
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"title": "๐งช Tests",
|
|
142
|
+
"audience": "dev",
|
|
143
|
+
"items": [
|
|
144
|
+
{
|
|
145
|
+
"description": "Replace the stdio spies with captureStdio (#678)",
|
|
146
|
+
"body": "Replaces every `process.stdout` and `process.stderr` spy in the test suites with `captureStdio` from `@williamthorsen/toolbelt.testing` and deletes the obviated local capture helpers. `captureStdio` buffers writes rather than recording calls, so assertions that previously used `toHaveBeenCalledWith` instead check `stderr`/`stdout` strings and their chunk arrays.\n\nSeparately, `unicorn/no-nonstandard-builtin-properties` is off for test files. Its hand-maintained symbol table omits `Symbol.dispose`, which a suite-scoped capture calls to restore the streams, and `schema: []` offers no way to extend the table.",
|
|
147
|
+
"hash": "b59304680cd26864d282ec3b36eac31bc2e0386d"
|
|
148
|
+
}
|
|
149
|
+
]
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"title": "๐ท CI",
|
|
153
|
+
"audience": "dev",
|
|
154
|
+
"items": [
|
|
155
|
+
{
|
|
156
|
+
"description": "Migrate the reusable workflows to pnpm/setup (#687)",
|
|
157
|
+
"body": "Migrates the four reusable workflows from `pnpm/action-setup` to `pnpm/setup`, which installs pnpm as a native standalone binary and can supply the JavaScript runtime in the same step. `audit`, `create-github-release`, and `publish` now set up in one step with no `actions/setup-node`; `release` keeps it, because `pnpm/setup` omits `npm` and `npx` from the runtime it installs while `release-kit prepare` spawns `npx git-cliff` and `npx prettier`.\n\nMigration: consumers of `audit`, `create-github-release`, and `publish` need a `devEngines.packageManager` or `packageManager` field pinning pnpm 11 or newer, the only range `pnpm/setup` installs. `create-github-release` and `publish` additionally need `@williamthorsen/release-kit` as a root dependency, because they now invoke it through `pnpm exec` instead of `npx --yes`.",
|
|
158
|
+
"migration": "Consumers of `audit`, `create-github-release`, and `publish` need a `devEngines.packageManager` or `packageManager` field pinning pnpm 11 or newer, the only range `pnpm/setup` installs. `create-github-release` and `publish` additionally need `@williamthorsen/release-kit` as a root dependency, because they now invoke it through `pnpm exec` instead of `npx --yes`.",
|
|
159
|
+
"hash": "4934262977ae2a8955c5308e590b330cfc8042da"
|
|
160
|
+
}
|
|
161
|
+
]
|
|
162
|
+
}
|
|
163
|
+
]
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
"version": "0.15.2",
|
|
167
|
+
"date": "2026-08-13",
|
|
168
|
+
"sections": [
|
|
169
|
+
{
|
|
170
|
+
"title": "โป๏ธ Refactoring",
|
|
171
|
+
"audience": "dev",
|
|
172
|
+
"items": [
|
|
173
|
+
{
|
|
174
|
+
"description": "Adopt toolbelt.errors for error-message extraction and cause-chaining (#652)",
|
|
175
|
+
"body": "Improves error reporting by adopting standardized ways of capturing and describing errors across the codebase.",
|
|
176
|
+
"hash": "30e6dac440ca7c61b8f44fb2998ff9e933425008"
|
|
177
|
+
}
|
|
178
|
+
]
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"title": "โ๏ธ Tooling",
|
|
182
|
+
"audience": "dev",
|
|
183
|
+
"items": [
|
|
184
|
+
{
|
|
185
|
+
"description": "Upgrade the lint config and clear its violations (#671)",
|
|
186
|
+
"body": "Upgrades `@williamthorsen/eslint-config-typescript`, along with other config packages, and clears lint violations surfaced by the newly activated rules.",
|
|
187
|
+
"hash": "17124c0ccd1a101d9fc46743b8e6b05d1e639e19"
|
|
188
|
+
}
|
|
189
|
+
]
|
|
190
|
+
}
|
|
191
|
+
]
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
"version": "0.15.0",
|
|
195
|
+
"date": "2026-08-08",
|
|
196
|
+
"sections": [
|
|
197
|
+
{
|
|
198
|
+
"title": "๐ Features",
|
|
199
|
+
"audience": "all",
|
|
200
|
+
"items": [
|
|
201
|
+
{
|
|
202
|
+
"description": "Stop reporting absence checks that pass (#610)",
|
|
203
|
+
"body": "A ReadyUp check that checks for a problem (such as an unwanted file or a stale config reference) now stays silent unless it finds one. The `nmr`, `release-kit`, and `v11y-check` ReadyUp kits previously printed a line for every such check on every run.",
|
|
204
|
+
"hash": "aa4cbae89dfe4f6268ca4de318213fc3f610aba0"
|
|
205
|
+
}
|
|
206
|
+
]
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
"title": "๐ Bug fixes",
|
|
210
|
+
"audience": "all",
|
|
211
|
+
"items": [
|
|
212
|
+
{
|
|
213
|
+
"description": "Publish build output atomically so a failed build cannot destroy it (#631)",
|
|
214
|
+
"body": "Fixes an issue where a failed or still-running `nmr build` could leave a package with no build output at all, breaking the tooling that a subsequent build depends on. Separately, the error reported when a package's build output is missing now names the correct recovery command.",
|
|
215
|
+
"hash": "79ea249c38dfa265c4be6da57f8a340e54e578b8"
|
|
216
|
+
}
|
|
217
|
+
]
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
"title": "โ๏ธ Tooling",
|
|
221
|
+
"audience": "dev",
|
|
222
|
+
"items": [
|
|
223
|
+
{
|
|
224
|
+
"description": "Fix lint in v11y-check and clear four deferred lint rules (#620)",
|
|
225
|
+
"body": "Fixes deferred lint violations in v11y-check package and removes the cap on the severity of four associated rules when a strict-lint check is run.",
|
|
226
|
+
"hash": "b761f0698962b2bd4acbd0ce9976aebba7244624"
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
"description": "Migrate to the shared tsconfig baseline (#626)",
|
|
230
|
+
"body": "Adopts `@williamthorsen/tsconfig` as the standard TypeScript configuration for this repo, replacing the previous hand-maintained copy. Reading a property through an index signature now requires bracket notation or a type that declares the property. The `nmr` build now fails on a base TypeScript config it cannot resolve, rather than building without it, and it now resolves a base config named by package name alone.",
|
|
231
|
+
"hash": "890a67c84b99d7efa663f8e64cf0beb89168581b"
|
|
232
|
+
}
|
|
233
|
+
]
|
|
234
|
+
}
|
|
235
|
+
]
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
"version": "0.14.2",
|
|
239
|
+
"date": "2026-08-05",
|
|
240
|
+
"sections": [
|
|
241
|
+
{
|
|
242
|
+
"title": "๐งช Tests",
|
|
243
|
+
"audience": "dev",
|
|
244
|
+
"items": [
|
|
245
|
+
{
|
|
246
|
+
"description": "Clear the deferred vitest test rules and enforce them (#602)",
|
|
247
|
+
"body": "Fixes a subset of previously deferred lint violations and restores the severity of Vitest lint rules to \"error\" for purposes strict linting.",
|
|
248
|
+
"hash": "4b43d29580fe9736fb2b4fa4ae6c2348cca53754"
|
|
249
|
+
}
|
|
250
|
+
]
|
|
251
|
+
}
|
|
252
|
+
]
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
"version": "0.14.1",
|
|
256
|
+
"date": "2026-08-04",
|
|
257
|
+
"sections": [
|
|
258
|
+
{
|
|
259
|
+
"title": "Dependency updates",
|
|
260
|
+
"audience": "dev",
|
|
261
|
+
"items": [{ "description": "Bumped `@williamthorsen/nmr-core` to 0.9.1" }]
|
|
262
|
+
}
|
|
263
|
+
]
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
"version": "0.14.0",
|
|
267
|
+
"date": "2026-08-04",
|
|
268
|
+
"sections": [
|
|
269
|
+
{
|
|
270
|
+
"title": "๐ Features",
|
|
271
|
+
"audience": "all",
|
|
272
|
+
"items": [
|
|
273
|
+
{
|
|
274
|
+
"description": "Publish each package's readyup kit from the package that owns it (#590)",
|
|
275
|
+
"body": "ReadyUp checks for `@williamthorsen/nmr`, `@williamthorsen/release-kit`, and `v11y-check` are now run directly against these packages, guaranteeing a version-appropriate check, instead of against their host repo. The package must be installed as a direct dependency in the calling repo.\n\nThe syntax is `rdy run --from npm:<package>`. `rdy run --packages` runs the kits contained in any packages listed in `.config/readyup.config.ts`. Requires `readyup` 0.23 or later.",
|
|
276
|
+
"hash": "f0fa3b416564ed4490c48007453fcb20c04807b3"
|
|
277
|
+
}
|
|
278
|
+
]
|
|
279
|
+
}
|
|
280
|
+
]
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
"version": "0.13.0",
|
|
284
|
+
"date": "2026-08-03",
|
|
285
|
+
"sections": [
|
|
286
|
+
{
|
|
287
|
+
"title": "๐ Features",
|
|
288
|
+
"audience": "all",
|
|
289
|
+
"items": [
|
|
290
|
+
{
|
|
291
|
+
"description": "Publish nmr's readyup kit with a test-tier conformance check (#580)",
|
|
292
|
+
"body": "`@williamthorsen/nmr` is now bundled with ReadyUp kits that check a repo's alignment with `nmr` requirements and recommendations.\n\n`rdy run --from npm:@williamthorsen/nmr` checks the repo against the kits without prior configuration. Once the package is added to the ReadyUp config, `rdy run --packages` will run the `nmr` kits along with those of any other registered package. Requires `readyup` v0.23 or greater.",
|
|
293
|
+
"hash": "94bd46acfecf87d6ec0f981ee561c0ebf22d9c09"
|
|
294
|
+
}
|
|
295
|
+
]
|
|
296
|
+
}
|
|
297
|
+
]
|
|
298
|
+
},
|
|
299
|
+
{
|
|
300
|
+
"version": "0.12.0",
|
|
301
|
+
"date": "2026-08-03",
|
|
302
|
+
"sections": [
|
|
303
|
+
{
|
|
304
|
+
"title": "๐ Features",
|
|
305
|
+
"audience": "all",
|
|
306
|
+
"items": [
|
|
307
|
+
{
|
|
308
|
+
"description": "Retire integration label in favor of an isolation-tier test ladder (#552)",
|
|
309
|
+
"body": "Test groups are now named for what a test reaches rather than for how much of the codebase it covers: `integration` and `app` are replaced by `unit`, `tool`, `localhost`, and `remote`.\n\n`nmr test` now runs the `tool` group alongside `unit`, so the first run after upgrading may fail on tests that nothing was running before. Upgrading means renaming `*.int.test.ts` files onto the new groups and replacing `nmr test:integration` with `nmr test:tool`.",
|
|
310
|
+
"breaking": true,
|
|
311
|
+
"hash": "81f16694dc295c754d35e692eedd75f47be35f4d"
|
|
312
|
+
}
|
|
313
|
+
]
|
|
314
|
+
},
|
|
315
|
+
{
|
|
316
|
+
"title": "โป๏ธ Refactoring",
|
|
317
|
+
"audience": "dev",
|
|
318
|
+
"items": [
|
|
319
|
+
{
|
|
320
|
+
"description": "Share nmr-core's cache primitives with nmr-compile (#570)",
|
|
321
|
+
"body": "A package's writes to the build cache are now hidden from other packages until the write is complete. A failing build now reports its error in the same form as every other `nmr` command. `tsx` is no longer required to build a package.",
|
|
322
|
+
"hash": "2a67cf1e6181cb8713de485859c3731e16edacf6"
|
|
323
|
+
}
|
|
324
|
+
]
|
|
325
|
+
}
|
|
326
|
+
]
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
"version": "0.11.3",
|
|
330
|
+
"date": "2026-07-30",
|
|
331
|
+
"sections": [
|
|
332
|
+
{
|
|
333
|
+
"title": "โ๏ธ Tooling",
|
|
334
|
+
"audience": "dev",
|
|
335
|
+
"items": [
|
|
336
|
+
{
|
|
337
|
+
"description": "Adopt Vitest projects in this repo (#530)",
|
|
338
|
+
"body": "Simplifies test configurations so that every package exposes the same test commands, which select suites by test category: `nmr test` runs everything except integration tests, `nmr test:integration` runs only those, and `nmr test:all` runs both. `nmr test:integration` now succeeds in a package that has no integration tests instead of failing. release-kit's drift checks can now be run on their own, apart from unit and integration tests. A fresh clone now has to run `pnpm run bootstrap` before any test run, not just before `nmr` commands.",
|
|
339
|
+
"hash": "a2fdd9c03c419f8fb70941ff5a3c580a6badcde6"
|
|
340
|
+
}
|
|
341
|
+
]
|
|
342
|
+
}
|
|
343
|
+
]
|
|
344
|
+
},
|
|
345
|
+
{
|
|
346
|
+
"version": "0.11.1",
|
|
347
|
+
"date": "2026-07-22",
|
|
348
|
+
"sections": [
|
|
349
|
+
{
|
|
350
|
+
"title": "๐ฆ Dependencies",
|
|
351
|
+
"audience": "dev",
|
|
352
|
+
"items": [
|
|
353
|
+
{
|
|
354
|
+
"description": "Upgrade dependencies and align the Node support policy (#483)",
|
|
355
|
+
"body": "All four published packages (`nmr`, `nmr-core`, `release-kit`, and `v11y-check`) now require Node.js 24 or later, up from Node 18.17. Separately, `nmr-compile` now rebuilds when the TypeScript version changes.",
|
|
356
|
+
"hash": "3090aa1ec68224f88e0b537ae09282e8e636f711"
|
|
357
|
+
}
|
|
358
|
+
]
|
|
359
|
+
}
|
|
360
|
+
]
|
|
361
|
+
},
|
|
362
|
+
{
|
|
363
|
+
"version": "0.11.0",
|
|
364
|
+
"date": "2026-07-13",
|
|
365
|
+
"sections": [
|
|
366
|
+
{
|
|
367
|
+
"title": "๐ Features",
|
|
368
|
+
"audience": "all",
|
|
369
|
+
"items": [
|
|
370
|
+
{
|
|
371
|
+
"description": "Fail a package that declares types but ships none (#467)",
|
|
372
|
+
"body": "`nmr attw` now fails a package that claims to ship type declarations but ships none. Such a package used to pass, leaving every TypeScript consumer of it silently typed as `any`.\n\n A package that ships working declarations found only by sitting beside its JavaScript entry point escapes the check, since it declares nothing. Add a `types` entry to bring it under the check.",
|
|
373
|
+
"breaking": true,
|
|
374
|
+
"hash": "8ccea9d93cd63a7963a7a7516e20f8d54069bd7b"
|
|
375
|
+
}
|
|
376
|
+
]
|
|
377
|
+
}
|
|
378
|
+
]
|
|
379
|
+
},
|
|
380
|
+
{
|
|
381
|
+
"version": "0.10.0",
|
|
382
|
+
"date": "2026-07-01",
|
|
383
|
+
"sections": [
|
|
384
|
+
{
|
|
385
|
+
"title": "๐ Features",
|
|
386
|
+
"audience": "all",
|
|
387
|
+
"items": [
|
|
388
|
+
{
|
|
389
|
+
"description": "Rebuild nmr-compile on a unified tsc emit (#455)",
|
|
390
|
+
"body": "`nmr` now compiles a package's JavaScript and type declarations in one step, rewriting every import form โ static, re-export, dynamic `import()`, bare side-effect, and tsconfig `paths` aliases โ to runnable `.js` in both outputs. It now requires TypeScript 5.7 or newer as a peer dependency.",
|
|
391
|
+
"breaking": true,
|
|
392
|
+
"hash": "0e55822c88cad341f90b052b15fb9af41e7ae414"
|
|
393
|
+
}
|
|
394
|
+
]
|
|
395
|
+
}
|
|
396
|
+
]
|
|
397
|
+
},
|
|
398
|
+
{
|
|
399
|
+
"version": "0.9.0",
|
|
400
|
+
"date": "2026-06-30",
|
|
401
|
+
"sections": [
|
|
402
|
+
{
|
|
403
|
+
"title": "๐ Features",
|
|
404
|
+
"audience": "all",
|
|
405
|
+
"items": [
|
|
406
|
+
{
|
|
407
|
+
"description": "Rewrite parseArgs on node:util with typed error and exit API (#428)",
|
|
408
|
+
"body": "`@williamthorsen/nmr-core` gains a typed error API for CLI parsing: `parseArgsOrExit` (parse, or print a usage error and exit) and `ParseError` replace the per-command boilerplate, so every bundled CLI reports a flag mistake the same way. Breaking: the `translateParseError` export is removed and `parseArgs` now throws `ParseError`.",
|
|
409
|
+
"breaking": true,
|
|
410
|
+
"hash": "5629bef8f645485b401a04f06ff9153ef5472282"
|
|
411
|
+
},
|
|
412
|
+
{
|
|
413
|
+
"description": "Auto-activate integration test variant from config presence (#448)",
|
|
414
|
+
"body": "A package can now separate its integration tests from its standalone suite simply by including a `vitest.integration.config.ts` (alongside a `vitest.standalone.config.ts`). The `--int-test` flag that previously enabled this is removed โ that config-file pairing is now the only way to activate the separation. In such a package, `test` and `test:coverage` run only the standalone suite and skip integration tests, while a new `test:all` runs both suites together. The separation now holds even when tests run across every package at once, so a full-workspace `test` run still keeps integration tests out of the default suite. Packages that previously hand-copied these test scripts no longer need to.",
|
|
415
|
+
"breaking": true,
|
|
416
|
+
"hash": "ee320b913ef1d7255c78eef6fc9ab3b9e94dfd39"
|
|
417
|
+
}
|
|
418
|
+
]
|
|
419
|
+
},
|
|
420
|
+
{
|
|
421
|
+
"title": "๐ Bug fixes",
|
|
422
|
+
"audience": "all",
|
|
423
|
+
"items": [
|
|
424
|
+
{
|
|
425
|
+
"description": "Prevent CLI output truncation when piped before exit (#446)",
|
|
426
|
+
"body": "Fixes an issue where large output from the `nmr` and `v11y` commands could be truncated when captured through a pipe โ for example, by a CI job.",
|
|
427
|
+
"hash": "fa7eeb12c1739b4bce3a73d9143cea4dd967b291"
|
|
428
|
+
}
|
|
429
|
+
]
|
|
430
|
+
},
|
|
431
|
+
{
|
|
432
|
+
"title": "โป๏ธ Refactoring",
|
|
433
|
+
"audience": "dev",
|
|
434
|
+
"items": [
|
|
435
|
+
{
|
|
436
|
+
"description": "Route all CLI error reporting through a single stderr helper (#437)",
|
|
437
|
+
"body": "Consolidates error reporting across the CLIs so every command reports errors the same way, and guards against the previous inconsistency returning. The error messages and exit codes users see are unchanged.",
|
|
438
|
+
"hash": "63e36b3f80bd8858e940362ea2914cb9a19fd821"
|
|
439
|
+
}
|
|
440
|
+
]
|
|
441
|
+
}
|
|
442
|
+
]
|
|
443
|
+
},
|
|
444
|
+
{
|
|
445
|
+
"version": "0.8.0",
|
|
446
|
+
"date": "2026-06-27",
|
|
447
|
+
"sections": [
|
|
448
|
+
{
|
|
449
|
+
"title": "๐ Features",
|
|
450
|
+
"audience": "all",
|
|
451
|
+
"items": [
|
|
452
|
+
{
|
|
453
|
+
"description": "Centralize the per-package build as an nmr-compile bin (#419)",
|
|
454
|
+
"body": "Introduces `nmr-compile`, a single command shipped with `@williamthorsen/nmr` that compiles each workspace package and now backs the default build. Consuming repos can delete their own per-package build script and pick up future build fixes just by upgrading nmr. Repeated builds with unchanged source now reliably skip recompiling instead of occasionally rebuilding for no reason, and import aliases now resolve correctly in symlinked checkouts.",
|
|
455
|
+
"hash": "cc20e3130087689c2fe8bf0e6de4b1349646296e"
|
|
456
|
+
}
|
|
457
|
+
]
|
|
458
|
+
}
|
|
459
|
+
]
|
|
460
|
+
},
|
|
461
|
+
{
|
|
462
|
+
"version": "0.7.1",
|
|
463
|
+
"date": "2026-05-19",
|
|
464
|
+
"sections": [
|
|
465
|
+
{
|
|
466
|
+
"title": "โป๏ธ Refactoring",
|
|
467
|
+
"audience": "dev",
|
|
468
|
+
"items": [
|
|
469
|
+
{
|
|
470
|
+
"description": "Restructure tests and align core package directory with package name (#405)",
|
|
471
|
+
"body": "Tests in every package are now typechecked alongside the code they cover, so type breakage in tests fails the build instead of slipping through. The `core` package's workspace directory is renamed to match its package name, so `nmr -F nmr-core ...` and `pnpm --filter nmr-core ...` now resolve where they previously failed.",
|
|
472
|
+
"hash": "91006ec4281be902d66dfdef3917f603ee56b5c3"
|
|
473
|
+
}
|
|
474
|
+
]
|
|
475
|
+
}
|
|
476
|
+
]
|
|
477
|
+
},
|
|
478
|
+
{
|
|
479
|
+
"version": "0.7.0",
|
|
480
|
+
"date": "2026-05-10",
|
|
481
|
+
"sections": [
|
|
482
|
+
{
|
|
483
|
+
"title": "๐ Features",
|
|
484
|
+
"audience": "all",
|
|
485
|
+
"items": [
|
|
486
|
+
{
|
|
487
|
+
"description": "Rename audit-deps to v11y-check (#383)",
|
|
488
|
+
"body": "The package previously published as `@williamthorsen/audit-deps` has been renamed to `v11y-check`. The CLI command is now `v11y-check`, and the default config file is `.config/v11y-check.config.json`. Existing users should install `v11y-check` in place of `@williamthorsen/audit-deps`, rename their config file, and update any scripts that invoke `audit-deps`. Behavior is unchanged.",
|
|
489
|
+
"hash": "1ce3d2f915d39eba52f1792b44ad02d21deafba5"
|
|
490
|
+
}
|
|
491
|
+
]
|
|
492
|
+
}
|
|
493
|
+
]
|
|
494
|
+
},
|
|
495
|
+
{
|
|
496
|
+
"version": "0.6.1",
|
|
497
|
+
"date": "2026-05-04",
|
|
498
|
+
"sections": [
|
|
499
|
+
{
|
|
500
|
+
"title": "โป๏ธ Refactoring",
|
|
501
|
+
"audience": "dev",
|
|
502
|
+
"items": [
|
|
503
|
+
{
|
|
504
|
+
"description": "Read package version at runtime via shared helper (#338)",
|
|
505
|
+
"body": "Fixes an issue where running `audit-deps`, `nmr`, or `release-kit` from the locally built `dist/esm/` after a `git pull` could report a stale version. Each CLI now reads its version directly from its `package.json` at startup, so version reads stay in sync with the installed source without requiring a fresh `pnpm install` or rebuild."
|
|
506
|
+
}
|
|
507
|
+
]
|
|
508
|
+
},
|
|
509
|
+
{
|
|
510
|
+
"title": "๐ Documentation",
|
|
511
|
+
"audience": "dev",
|
|
512
|
+
"items": [
|
|
513
|
+
{
|
|
514
|
+
"description": "Clarify which vulnerabilities `audit-deps sync` adds (#363)",
|
|
515
|
+
"body": "Clarifies the action hints printed by `audit-deps check` so users understand exactly which vulnerabilities `audit-deps sync` will allowlist. The hints now read \"add **the listed** vulnerabilities to the allowlist\", tying the action to the report shown immediately above. The previous wording โ \"add vulnerabilities to the allowlist\" โ could imply that `sync` is selective or interactive, when in fact it non-interactively allowlists every unallowed vulnerability in the report."
|
|
516
|
+
}
|
|
517
|
+
]
|
|
518
|
+
}
|
|
519
|
+
]
|
|
520
|
+
},
|
|
521
|
+
{
|
|
522
|
+
"version": "0.6.0",
|
|
523
|
+
"date": "2026-04-30",
|
|
524
|
+
"sections": [
|
|
525
|
+
{
|
|
526
|
+
"title": "๐ Features",
|
|
527
|
+
"audience": "all",
|
|
528
|
+
"items": [
|
|
529
|
+
{
|
|
530
|
+
"description": "Add status indicator to standing-issue title (#335)",
|
|
531
|
+
"body": "Adds a status indicator and bot-origin emoji to the standing issue maintained by the dependency-audit workflow. The title now reflects the most severe finding category and is refreshed on every run โ `๐ค Dependency audit status: 3 vulnerabilities found ๐จ`, `๐ค Dependency audit status: no vulnerabilities โ
`, and so on. Status priority is severity-driven: unallowed vulnerabilities outrank suppressed entries, which outrank stale allowlist entries."
|
|
532
|
+
}
|
|
533
|
+
]
|
|
534
|
+
}
|
|
535
|
+
]
|
|
536
|
+
},
|
|
537
|
+
{
|
|
538
|
+
"version": "0.5.0",
|
|
539
|
+
"date": "2026-04-23",
|
|
540
|
+
"sections": [
|
|
541
|
+
{
|
|
542
|
+
"title": "๐ Features",
|
|
543
|
+
"audience": "all",
|
|
544
|
+
"items": [
|
|
545
|
+
{
|
|
546
|
+
"description": "Show below-threshold vulnerabilities and threshold in check output (#244)",
|
|
547
|
+
"body": "Surfaces below-threshold vulnerabilities in the check command's output instead of silently hiding them. When the severity threshold is above `low`, vulnerabilities that fall below it now appear with an `โน๏ธ` marker and \"ignored\" annotation in bare output, full advisory detail in verbose output, and a distinct `belowThreshold` array in JSON output. Scope headers display the active threshold (e.g., `๐ฆ prod (threshold: ๐ moderate):`) so users can see what filtering is in effect. The \"No known vulnerabilities found\" message now only appears when there are truly zero vulnerabilities across all categories. Exit code behavior is unchanged โ only above-threshold, non-allowlisted vulnerabilities cause failure."
|
|
548
|
+
},
|
|
549
|
+
{
|
|
550
|
+
"description": "Replace --only with --tags on release-kit publish and push (#273)",
|
|
551
|
+
"body": "`release-kit publish` and `release-kit push` now filter by full tag name via `--tags=<tag1,tag2>` instead of workspace directory name via `--only=<dir>`, matching the shape already used by `create-github-release`. Callers pass the tag they care about (e.g., `core-v1.3.0`) directly, with no translation step back to the publishing workspace's directory name. The reusable workflow gains an optional `tags:` input, and the internal `publish.yaml` caller now passes `tags: ${{ github.ref_name }}`, making the publish scope explicit rather than relying on the single-tag fetch default of `actions/checkout@v6`.",
|
|
552
|
+
"breaking": true
|
|
553
|
+
},
|
|
554
|
+
{
|
|
555
|
+
"description": "Scaffold audit.yaml workflow from audit-deps init (#277)",
|
|
556
|
+
"body": "Adds GitHub Actions workflow scaffolding to `audit-deps init`. Running the command now writes both `.config/audit-deps.config.json` and `.github/workflows/audit.yaml` in the target repo, so that consumers no longer have to copy the canonical caller workflow by hand from this repo. The workflow content is shipped as a bundled template that ships to npm, and the repo's own workflow is kept byte-identical to that template via a consistency test โ the canonical workflow cannot silently drift from what is published."
|
|
557
|
+
}
|
|
558
|
+
]
|
|
559
|
+
},
|
|
560
|
+
{
|
|
561
|
+
"title": "โป๏ธ Refactoring",
|
|
562
|
+
"audience": "dev",
|
|
563
|
+
"items": [
|
|
564
|
+
{
|
|
565
|
+
"description": "Rename `node-monorepo-core` to `nmr-core` (#304)",
|
|
566
|
+
"body": "Renames the shared-utilities package from `@williamthorsen/node-monorepo-core` to `@williamthorsen/nmr-core`, aligning it with the repository's `nmr-*` naming convention. The package's functionality and version are unchanged; only the published name differs.",
|
|
567
|
+
"breaking": true
|
|
568
|
+
}
|
|
569
|
+
]
|
|
570
|
+
}
|
|
571
|
+
]
|
|
572
|
+
},
|
|
573
|
+
{
|
|
574
|
+
"version": "0.4.0",
|
|
575
|
+
"date": "2026-04-17",
|
|
576
|
+
"sections": [
|
|
577
|
+
{
|
|
578
|
+
"title": "๐ Features",
|
|
579
|
+
"audience": "all",
|
|
580
|
+
"items": [
|
|
581
|
+
{
|
|
582
|
+
"description": "Allow audit-deps to work without a config (#235)",
|
|
583
|
+
"body": "Adds a no-config mode to `audit-deps` so `npx @williamthorsen/audit-deps` produces a useful vulnerability report in any repo without requiring a config file. Replaces the four confusing severity booleans with a single `severityThreshold` field: `critical`, `high`, `moderate`, or `low`. Adds a JSON Schema to the generated configs."
|
|
584
|
+
},
|
|
585
|
+
{
|
|
586
|
+
"description": "Store full ISO 8601 datetime in `addedAt` (#236)",
|
|
587
|
+
"body": "Replaces the ambiguous `YYYY-MM-DD` date-only string in allowlist `addedAt` fields with a full ISO 8601 UTC datetime (e.g., `2026-04-15T14:30:00.000Z`). This removes timezone ambiguity and adds time-of-day precision for more accurate relative-time display."
|
|
588
|
+
},
|
|
589
|
+
{
|
|
590
|
+
"description": "Improve DX of audit-deps bare output (#241)",
|
|
591
|
+
"body": "Redesigns the `audit-deps` bare output format to show GHSA IDs instead of npm-specific numeric advisory IDs, add severity text labels, and guide developers toward next steps. The new format includes an intro banner reflecting the audit scope, scope-labeled sections with emoji markers, bulleted findings with severity indicators, relative-time annotations on allowed vulnerabilities, and a unified `Actions:` footer with context-aware verbose and sync hints. Extracts shared time-formatting helpers into a dedicated module to support relative timestamps in both bare and verbose formatters."
|
|
592
|
+
}
|
|
593
|
+
]
|
|
594
|
+
}
|
|
595
|
+
]
|
|
596
|
+
},
|
|
597
|
+
{
|
|
598
|
+
"version": "0.3.0",
|
|
599
|
+
"date": "2026-04-16",
|
|
600
|
+
"sections": [
|
|
601
|
+
{
|
|
602
|
+
"title": "๐ Features",
|
|
603
|
+
"audience": "all",
|
|
604
|
+
"items": [
|
|
605
|
+
{
|
|
606
|
+
"description": "Decouple audit from CI quality gate and add audit workflow (#210)",
|
|
607
|
+
"body": "Dependency audit is now decoupled from the CI quality gate so that transient upstream CVEs no longer block the merging of unrelated code changes. Audit now runs in a dedicated workflow with non-blocking PR integration (acknowledgment checkbox) and a daily scheduled run that tracks results in a standing GitHub issue. A readyup kit is available to validate the new setup in consuming repos."
|
|
608
|
+
},
|
|
609
|
+
{
|
|
610
|
+
"description": "Replace bare-command help with grouped check (#211)",
|
|
611
|
+
"body": "The bare `audit-deps` command now runs a grouped vulnerability check instead of showing help text. Each scope (prod first, then dev) shows unallowed vulnerabilities with severity indicators, allowed vulnerabilities with annotations, and stale allowlist entries flagged for cleanup. Exit code is 1 when unallowed vulnerabilities exist.\n\nThe previous raw audit-ci passthrough moves behind `--raw`. The `report` subcommand is removed; its functionality is superseded by the new default output. `--dev`/`--prod`, `--config`, and `--json` compose with both the bare command and `--raw`.\n\n- Add optional `severity` field to `AuditResult` and extract it from audit-ci advisory JSON.\n- Add `checkCommand` that cross-references audit results with the config allowlist to classify vulnerabilities and detect stale entries. Forward `runReport` stderr to `process.stderr` when non-empty, matching the existing `auditCommand` pattern.\n- Add `formatCheckText` and `formatCheckJson` formatters in `format-check.ts`, with severity-to-emoji mapping (๐ด critical/high, ๐ moderate, ๐ก low/info).\n- Extract `generateScopeConfig` to deduplicate the `generateAuditCiConfig` try/catch error-wrapping shared by `checkCommand`, `syncCommand`, and `loadAndGenerate`.\n- Route bare invocation to `checkCommand`, `--raw` to `auditCommand`.\n- Remove `reportCommand`, `showReportHelp`, and `report` from `SUBCOMMANDS`.\n- Update help text to document `--raw` and the new default behavior.\n- Cover new and modified behavior with unit tests, including severity parsing, formatter output, `checkCommand` classification and exit codes, stale-entry detection, stderr forwarding, scope ordering, and `--raw` routing."
|
|
612
|
+
},
|
|
613
|
+
{
|
|
614
|
+
"description": "Verbose check output for audit-deps (#213)",
|
|
615
|
+
"body": "Adds a `--verbose` / `-v` flag to the default `audit-deps` check that produces a detailed per-vulnerability report โ advisory title, severity, every affected dependency path, link, and description โ replacing the need to chase the URL for each finding. Both bare and verbose outputs gain an `Actions:` footer that tells the user exactly which `audit-deps sync` invocation will resolve the current state, and `sync` now stamps an `addedAt` date on allowlist entries so allowed vulnerabilities carry an `allowed X ago (YYYY-MM-DD)` line when displayed in verbose mode."
|
|
616
|
+
}
|
|
617
|
+
]
|
|
618
|
+
},
|
|
619
|
+
{
|
|
620
|
+
"title": "๐ Documentation",
|
|
621
|
+
"audience": "dev",
|
|
622
|
+
"items": [
|
|
623
|
+
{
|
|
624
|
+
"description": "Align README and help text with current CLI API",
|
|
625
|
+
"body": "Update the Quick start and CLI reference in the `audit-deps` README to match the grouped-check default, the removal of the `report` command, and the new `--raw` flag. Remove \"(CI mode)\" from the `--raw` help-text description; the flag is not tied to CI environments."
|
|
626
|
+
}
|
|
627
|
+
]
|
|
628
|
+
}
|
|
629
|
+
]
|
|
630
|
+
},
|
|
631
|
+
{
|
|
632
|
+
"version": "0.2.1",
|
|
633
|
+
"date": "2026-04-15",
|
|
634
|
+
"sections": [
|
|
635
|
+
{
|
|
636
|
+
"title": "โ๏ธ Tooling",
|
|
637
|
+
"audience": "dev",
|
|
638
|
+
"items": [
|
|
639
|
+
{
|
|
640
|
+
"description": "Enable automated publication to npm (#187)",
|
|
641
|
+
"body": "Prepares the repository for reliable tag-triggered npm publishing by adding missing package metadata, standardizing licensing, and introducing a readyup kit that validates publish readiness across all packages."
|
|
642
|
+
}
|
|
643
|
+
]
|
|
644
|
+
}
|
|
645
|
+
]
|
|
646
|
+
},
|
|
647
|
+
{
|
|
648
|
+
"version": "0.2.0",
|
|
649
|
+
"date": "2026-04-10",
|
|
650
|
+
"sections": [
|
|
651
|
+
{
|
|
652
|
+
"title": "๐ Features",
|
|
653
|
+
"audience": "all",
|
|
654
|
+
"items": [
|
|
655
|
+
{
|
|
656
|
+
"description": "Create audit-deps wrapper to manage dependency audits (#183)",
|
|
657
|
+
"body": "Adds a new `@williamthorsen/audit-deps` package that wraps `audit-ci` with a typed JSON config model, per-scope (dev/prod) severity thresholds, and a sync workflow that automates allowlist management. The package provides a CLI with five commands: default audit (CI pass/fail), `report` (all vulnerabilities), `sync` (diff-based allowlist updates), `generate` (flat config regeneration), and `init` (config scaffolding)."
|
|
658
|
+
}
|
|
659
|
+
]
|
|
660
|
+
}
|
|
661
|
+
]
|
|
662
|
+
}
|
|
663
|
+
]
|
package/.readyup/kits/default.js
CHANGED
|
@@ -63,7 +63,7 @@ var default_default = defineRdyKit({
|
|
|
63
63
|
]
|
|
64
64
|
});
|
|
65
65
|
function getMinVersion() {
|
|
66
|
-
const picked = { "version": "0.
|
|
66
|
+
const picked = { "version": "0.16.0" };
|
|
67
67
|
if (typeof picked["version"] !== "string") {
|
|
68
68
|
throw new TypeError("v11y-check/package.json: 'version' must be a string");
|
|
69
69
|
}
|
package/.readyup/manifest.json
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"path": "kits/default.ts"
|
|
14
14
|
},
|
|
15
15
|
{
|
|
16
|
-
"hash": "
|
|
16
|
+
"hash": "85008b8a",
|
|
17
17
|
"kind": "inline",
|
|
18
18
|
"path": "../package.json",
|
|
19
19
|
"paths": [
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"readyupVersion": "0.35.0",
|
|
27
27
|
"source": "kits/default.ts",
|
|
28
28
|
"sourceHash": "52754bbb",
|
|
29
|
-
"targetHash": "
|
|
29
|
+
"targetHash": "7de75704"
|
|
30
30
|
}
|
|
31
31
|
]
|
|
32
32
|
}
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
## 0.16.0 โ 2026-09-08
|
|
6
|
+
|
|
7
|
+
### ๐ Features
|
|
8
|
+
|
|
9
|
+
- Report a package whose tarball would omit its changelog (#768)
|
|
10
|
+
|
|
11
|
+
Adds ReadyUp checks to verify that every published package bundles its changelog files: the human-readable `CHANGELOG.md` and the machine-readable `changelog.json`.
|
|
12
|
+
|
|
13
|
+
### ๐งช Tests
|
|
14
|
+
|
|
15
|
+
- Read console spy output with listConsoleLines rather than by hand (#781)
|
|
16
|
+
|
|
17
|
+
- Replaces the hand-rolled reads of a console spy's `mock.calls` in the `nmr`, `release-kit`, and `v11y-check` test suites with `listConsoleLines` from `@williamthorsen/toolbelt.vitest/candidate`.
|
|
18
|
+
- Clears the `toolbelt.vitest/no-console-calls-read` recommendation that `rdy run --packages` reported.
|
|
19
|
+
|
|
20
|
+
## 0.15.8 โ 2026-09-01
|
|
21
|
+
|
|
22
|
+
### โป๏ธ Refactoring
|
|
23
|
+
|
|
24
|
+
- Upgrade to readyup v0.34 and exclude a private repo root from kit checks (#759)
|
|
25
|
+
|
|
26
|
+
Upgrades `readyup` to v0.34, whose `discoverWorkspaces` now reports the repo root. `release-kit`'s `npm-auto-publish` kit filters that root out unless it is publishable, so a private root is no longer listed in the kit's report.
|
|
27
|
+
|
|
28
|
+
Test suites for release-kit's ReadyUp kits have been refactored to use the patterns documented in v0.34.
|
|
29
|
+
|
|
30
|
+
### โ๏ธ Tooling
|
|
31
|
+
|
|
32
|
+
- Restrict node:fs scaffolding in test code to the temporary tree's API (#756)
|
|
33
|
+
|
|
34
|
+
Adds an ESLint restriction that flags the `node:fs` and `node:fs/promises` calls that scaffold a temporary directory in test code instead of using the `TempTree` API. Also migrates `v11y-check`'s `node:fs/promises` scaffolding to that API.
|
|
35
|
+
|
|
36
|
+
## 0.15.7 โ 2026-08-24
|
|
37
|
+
|
|
38
|
+
### โป๏ธ Refactoring
|
|
39
|
+
|
|
40
|
+
- Upgrade ReadyUp and the toolbelt packages, adopting their new APIs (#748)
|
|
41
|
+
|
|
42
|
+
Upgrades `readyup` and the `@williamthorsen/toolbelt.*` packages to their latest versions.
|
|
43
|
+
|
|
44
|
+
The `readFile` utility from `readyup` replaces hand-rolled code in `nmr`.
|
|
45
|
+
|
|
46
|
+
### ๐งช Tests
|
|
47
|
+
|
|
48
|
+
- Scaffold the nmr-core, root, and v11y-check trees through the write API (#734)
|
|
49
|
+
|
|
50
|
+
Converts the `node:fs` scaffolding in five test suites across `nmr-core`, the repo root, and `v11y-check` to the temporary tree's own write API, which refuses a path that escapes the tree. Fixture helpers in `hashWorkingTree.tool.test.ts` and `init.unit.test.ts` take the tree itself in place of a captured directory string.
|
|
51
|
+
|
|
52
|
+
## 0.15.6 โ 2026-08-20
|
|
53
|
+
|
|
54
|
+
### ๐งช Tests
|
|
55
|
+
|
|
56
|
+
- Register the working directory for disposal alongside the tree it points into (#724)
|
|
57
|
+
|
|
58
|
+
Converts the `release-kit` and `v11y-check` suites that run from inside a temporary directory to `createTempTree` and `pointCwdAt`, registered through `disposeOnTestFinished` or scoped with `using`. Reverse-order disposal now restores the working directory before removing the tree it pointed into, which each suite previously had to sequence by hand.
|
|
59
|
+
|
|
60
|
+
- Route the remaining hand-built temporary directories through createTempTree (#725)
|
|
61
|
+
|
|
62
|
+
Replaces the hand-built temporary directories in the `release-kit` and `v11y-check` test suites with a `createTempTree` fixture, dropping the `beforeEach`/`afterEach` pairs that created and removed them.
|
|
63
|
+
|
|
64
|
+
## 0.15.5 โ 2026-08-19
|
|
65
|
+
|
|
66
|
+
### ๐งช Tests
|
|
67
|
+
|
|
68
|
+
- Register fixture-repo cleanup against the test that asks for it (#715)
|
|
69
|
+
|
|
70
|
+
Routes nmr's `buildRepo` fixture helper through `createTempTree`, registering each fixture directory's removal against the test that requested it. The module-level accumulator and the exported `removeFixtureDirs` have been removed.
|
|
71
|
+
|
|
72
|
+
## 0.15.3 โ 2026-08-17
|
|
73
|
+
|
|
74
|
+
### โป๏ธ Refactoring
|
|
75
|
+
|
|
76
|
+
- Adopt silenceConsole across the test suites (#677)
|
|
77
|
+
|
|
78
|
+
Adopts `silenceConsole` from `@williamthorsen/toolbelt.vitest` to replace all hand-rolled `vi.spyOn(console, โฆ)` spies and reduce boilerplate across the repo's test suites. The function returns a disposable, allowing the caller to use `using` to enable restoration of the console method at the end of the test scope.
|
|
79
|
+
|
|
80
|
+
### ๐งช Tests
|
|
81
|
+
|
|
82
|
+
- Replace the stdio spies with captureStdio (#678)
|
|
83
|
+
|
|
84
|
+
Replaces every `process.stdout` and `process.stderr` spy in the test suites with `captureStdio` from `@williamthorsen/toolbelt.testing` and deletes the obviated local capture helpers. `captureStdio` buffers writes rather than recording calls, so assertions that previously used `toHaveBeenCalledWith` instead check `stderr`/`stdout` strings and their chunk arrays.
|
|
85
|
+
|
|
86
|
+
Separately, `unicorn/no-nonstandard-builtin-properties` is off for test files. Its hand-maintained symbol table omits `Symbol.dispose`, which a suite-scoped capture calls to restore the streams, and `schema: []` offers no way to extend the table.
|
|
87
|
+
|
|
88
|
+
### ๐ท CI
|
|
89
|
+
|
|
90
|
+
- Migrate the reusable workflows to pnpm/setup (#687)
|
|
91
|
+
|
|
92
|
+
Migrates the four reusable workflows from `pnpm/action-setup` to `pnpm/setup`, which installs pnpm as a native standalone binary and can supply the JavaScript runtime in the same step. `audit`, `create-github-release`, and `publish` now set up in one step with no `actions/setup-node`; `release` keeps it, because `pnpm/setup` omits `npm` and `npx` from the runtime it installs while `release-kit prepare` spawns `npx git-cliff` and `npx prettier`.
|
|
93
|
+
|
|
94
|
+
Migration: consumers of `audit`, `create-github-release`, and `publish` need a `devEngines.packageManager` or `packageManager` field pinning pnpm 11 or newer, the only range `pnpm/setup` installs. `create-github-release` and `publish` additionally need `@williamthorsen/release-kit` as a root dependency, because they now invoke it through `pnpm exec` instead of `npx --yes`.
|
|
95
|
+
|
|
96
|
+
## 0.15.2 โ 2026-08-13
|
|
97
|
+
|
|
98
|
+
### โป๏ธ Refactoring
|
|
99
|
+
|
|
100
|
+
- Adopt toolbelt.errors for error-message extraction and cause-chaining (#652)
|
|
101
|
+
|
|
102
|
+
Improves error reporting by adopting standardized ways of capturing and describing errors across the codebase.
|
|
103
|
+
|
|
104
|
+
### โ๏ธ Tooling
|
|
105
|
+
|
|
106
|
+
- Upgrade the lint config and clear its violations (#671)
|
|
107
|
+
|
|
108
|
+
Upgrades `@williamthorsen/eslint-config-typescript`, along with other config packages, and clears lint violations surfaced by the newly activated rules.
|
|
109
|
+
|
|
110
|
+
## 0.15.0 โ 2026-08-08
|
|
111
|
+
|
|
112
|
+
### ๐ Features
|
|
113
|
+
|
|
114
|
+
- Stop reporting absence checks that pass (#610)
|
|
115
|
+
|
|
116
|
+
A ReadyUp check that checks for a problem (such as an unwanted file or a stale config reference) now stays silent unless it finds one. The `nmr`, `release-kit`, and `v11y-check` ReadyUp kits previously printed a line for every such check on every run.
|
|
117
|
+
|
|
118
|
+
### ๐ Bug fixes
|
|
119
|
+
|
|
120
|
+
- Publish build output atomically so a failed build cannot destroy it (#631)
|
|
121
|
+
|
|
122
|
+
Fixes an issue where a failed or still-running `nmr build` could leave a package with no build output at all, breaking the tooling that a subsequent build depends on. Separately, the error reported when a package's build output is missing now names the correct recovery command.
|
|
123
|
+
|
|
124
|
+
### โ๏ธ Tooling
|
|
125
|
+
|
|
126
|
+
- Fix lint in v11y-check and clear four deferred lint rules (#620)
|
|
127
|
+
|
|
128
|
+
Fixes deferred lint violations in v11y-check package and removes the cap on the severity of four associated rules when a strict-lint check is run.
|
|
129
|
+
|
|
130
|
+
- Migrate to the shared tsconfig baseline (#626)
|
|
131
|
+
|
|
132
|
+
Adopts `@williamthorsen/tsconfig` as the standard TypeScript configuration for this repo, replacing the previous hand-maintained copy. Reading a property through an index signature now requires bracket notation or a type that declares the property. The `nmr` build now fails on a base TypeScript config it cannot resolve, rather than building without it, and it now resolves a base config named by package name alone.
|
|
133
|
+
|
|
134
|
+
## 0.14.2 โ 2026-08-05
|
|
135
|
+
|
|
136
|
+
### ๐งช Tests
|
|
137
|
+
|
|
138
|
+
- Clear the deferred vitest test rules and enforce them (#602)
|
|
139
|
+
|
|
140
|
+
Fixes a subset of previously deferred lint violations and restores the severity of Vitest lint rules to "error" for purposes strict linting.
|
|
141
|
+
|
|
142
|
+
## 0.14.1 โ 2026-08-04
|
|
143
|
+
|
|
144
|
+
### Dependency updates
|
|
145
|
+
|
|
146
|
+
- Bumped `@williamthorsen/nmr-core` to 0.9.1
|
|
147
|
+
|
|
148
|
+
## 0.14.0 โ 2026-08-04
|
|
149
|
+
|
|
150
|
+
### ๐ Features
|
|
151
|
+
|
|
152
|
+
- Publish each package's readyup kit from the package that owns it (#590)
|
|
153
|
+
|
|
154
|
+
ReadyUp checks for `@williamthorsen/nmr`, `@williamthorsen/release-kit`, and `v11y-check` are now run directly against these packages, guaranteeing a version-appropriate check, instead of against their host repo. The package must be installed as a direct dependency in the calling repo.
|
|
155
|
+
|
|
156
|
+
The syntax is `rdy run --from npm:<package>`. `rdy run --packages` runs the kits contained in any packages listed in `.config/readyup.config.ts`. Requires `readyup` 0.23 or later.
|
|
157
|
+
|
|
158
|
+
## 0.13.0 โ 2026-08-03
|
|
159
|
+
|
|
160
|
+
### ๐ Features
|
|
161
|
+
|
|
162
|
+
- Publish nmr's readyup kit with a test-tier conformance check (#580)
|
|
163
|
+
|
|
164
|
+
`@williamthorsen/nmr` is now bundled with ReadyUp kits that check a repo's alignment with `nmr` requirements and recommendations.
|
|
165
|
+
|
|
166
|
+
`rdy run --from npm:@williamthorsen/nmr` checks the repo against the kits without prior configuration. Once the package is added to the ReadyUp config, `rdy run --packages` will run the `nmr` kits along with those of any other registered package. Requires `readyup` v0.23 or greater.
|
|
167
|
+
|
|
168
|
+
## 0.12.0 โ 2026-08-03
|
|
169
|
+
|
|
170
|
+
### ๐ Features
|
|
171
|
+
|
|
172
|
+
- ๐จ **Breaking:** Retire integration label in favor of an isolation-tier test ladder (#552)
|
|
173
|
+
|
|
174
|
+
Test groups are now named for what a test reaches rather than for how much of the codebase it covers: `integration` and `app` are replaced by `unit`, `tool`, `localhost`, and `remote`.
|
|
175
|
+
|
|
176
|
+
`nmr test` now runs the `tool` group alongside `unit`, so the first run after upgrading may fail on tests that nothing was running before. Upgrading means renaming `*.int.test.ts` files onto the new groups and replacing `nmr test:integration` with `nmr test:tool`.
|
|
177
|
+
|
|
178
|
+
### โป๏ธ Refactoring
|
|
179
|
+
|
|
180
|
+
- Share nmr-core's cache primitives with nmr-compile (#570)
|
|
181
|
+
|
|
182
|
+
A package's writes to the build cache are now hidden from other packages until the write is complete. A failing build now reports its error in the same form as every other `nmr` command. `tsx` is no longer required to build a package.
|
|
183
|
+
|
|
184
|
+
## 0.11.3 โ 2026-07-30
|
|
185
|
+
|
|
186
|
+
### โ๏ธ Tooling
|
|
187
|
+
|
|
188
|
+
- Adopt Vitest projects in this repo (#530)
|
|
189
|
+
|
|
190
|
+
Simplifies test configurations so that every package exposes the same test commands, which select suites by test category: `nmr test` runs everything except integration tests, `nmr test:integration` runs only those, and `nmr test:all` runs both. `nmr test:integration` now succeeds in a package that has no integration tests instead of failing. release-kit's drift checks can now be run on their own, apart from unit and integration tests. A fresh clone now has to run `pnpm run bootstrap` before any test run, not just before `nmr` commands.
|
|
191
|
+
|
|
192
|
+
## 0.11.1 โ 2026-07-22
|
|
193
|
+
|
|
194
|
+
### ๐ฆ Dependencies
|
|
195
|
+
|
|
196
|
+
- Upgrade dependencies and align the Node support policy (#483)
|
|
197
|
+
|
|
198
|
+
All four published packages (`nmr`, `nmr-core`, `release-kit`, and `v11y-check`) now require Node.js 24 or later, up from Node 18.17. Separately, `nmr-compile` now rebuilds when the TypeScript version changes.
|
|
199
|
+
|
|
200
|
+
## 0.11.0 โ 2026-07-13
|
|
201
|
+
|
|
202
|
+
### ๐ Features
|
|
203
|
+
|
|
204
|
+
- ๐จ **Breaking:** Fail a package that declares types but ships none (#467)
|
|
205
|
+
|
|
206
|
+
`nmr attw` now fails a package that claims to ship type declarations but ships none. Such a package used to pass, leaving every TypeScript consumer of it silently typed as `any`.
|
|
207
|
+
|
|
208
|
+
A package that ships working declarations found only by sitting beside its JavaScript entry point escapes the check, since it declares nothing. Add a `types` entry to bring it under the check.
|
|
209
|
+
|
|
210
|
+
## 0.10.0 โ 2026-07-01
|
|
211
|
+
|
|
212
|
+
### ๐ Features
|
|
213
|
+
|
|
214
|
+
- ๐จ **Breaking:** Rebuild nmr-compile on a unified tsc emit (#455)
|
|
215
|
+
|
|
216
|
+
`nmr` now compiles a package's JavaScript and type declarations in one step, rewriting every import form โ static, re-export, dynamic `import()`, bare side-effect, and tsconfig `paths` aliases โ to runnable `.js` in both outputs. It now requires TypeScript 5.7 or newer as a peer dependency.
|
|
217
|
+
|
|
218
|
+
## 0.9.0 โ 2026-06-30
|
|
219
|
+
|
|
220
|
+
### ๐ Features
|
|
221
|
+
|
|
222
|
+
- ๐จ **Breaking:** Rewrite parseArgs on node:util with typed error and exit API (#428)
|
|
223
|
+
|
|
224
|
+
`@williamthorsen/nmr-core` gains a typed error API for CLI parsing: `parseArgsOrExit` (parse, or print a usage error and exit) and `ParseError` replace the per-command boilerplate, so every bundled CLI reports a flag mistake the same way. Breaking: the `translateParseError` export is removed and `parseArgs` now throws `ParseError`.
|
|
225
|
+
|
|
226
|
+
- ๐จ **Breaking:** Auto-activate integration test variant from config presence (#448)
|
|
227
|
+
|
|
228
|
+
A package can now separate its integration tests from its standalone suite simply by including a `vitest.integration.config.ts` (alongside a `vitest.standalone.config.ts`). The `--int-test` flag that previously enabled this is removed โ that config-file pairing is now the only way to activate the separation. In such a package, `test` and `test:coverage` run only the standalone suite and skip integration tests, while a new `test:all` runs both suites together. The separation now holds even when tests run across every package at once, so a full-workspace `test` run still keeps integration tests out of the default suite. Packages that previously hand-copied these test scripts no longer need to.
|
|
229
|
+
|
|
230
|
+
### ๐ Bug fixes
|
|
231
|
+
|
|
232
|
+
- Prevent CLI output truncation when piped before exit (#446)
|
|
233
|
+
|
|
234
|
+
Fixes an issue where large output from the `nmr` and `v11y` commands could be truncated when captured through a pipe โ for example, by a CI job.
|
|
235
|
+
|
|
236
|
+
### โป๏ธ Refactoring
|
|
237
|
+
|
|
238
|
+
- Route all CLI error reporting through a single stderr helper (#437)
|
|
239
|
+
|
|
240
|
+
Consolidates error reporting across the CLIs so every command reports errors the same way, and guards against the previous inconsistency returning. The error messages and exit codes users see are unchanged.
|
|
241
|
+
|
|
242
|
+
## 0.8.0 โ 2026-06-27
|
|
243
|
+
|
|
244
|
+
### ๐ Features
|
|
245
|
+
|
|
246
|
+
- Centralize the per-package build as an nmr-compile bin (#419)
|
|
247
|
+
|
|
248
|
+
Introduces `nmr-compile`, a single command shipped with `@williamthorsen/nmr` that compiles each workspace package and now backs the default build. Consuming repos can delete their own per-package build script and pick up future build fixes just by upgrading nmr. Repeated builds with unchanged source now reliably skip recompiling instead of occasionally rebuilding for no reason, and import aliases now resolve correctly in symlinked checkouts.
|
|
249
|
+
|
|
250
|
+
## 0.7.1 โ 2026-05-19
|
|
251
|
+
|
|
252
|
+
### โป๏ธ Refactoring
|
|
253
|
+
|
|
254
|
+
- Restructure tests and align core package directory with package name (#405)
|
|
255
|
+
|
|
256
|
+
Tests in every package are now typechecked alongside the code they cover, so type breakage in tests fails the build instead of slipping through. The `core` package's workspace directory is renamed to match its package name, so `nmr -F nmr-core ...` and `pnpm --filter nmr-core ...` now resolve where they previously failed.
|
|
257
|
+
|
|
258
|
+
## 0.7.0 โ 2026-05-10
|
|
259
|
+
|
|
260
|
+
### ๐ Features
|
|
261
|
+
|
|
262
|
+
- Rename audit-deps to v11y-check (#383)
|
|
263
|
+
|
|
264
|
+
The package previously published as `@williamthorsen/audit-deps` has been renamed to `v11y-check`. The CLI command is now `v11y-check`, and the default config file is `.config/v11y-check.config.json`. Existing users should install `v11y-check` in place of `@williamthorsen/audit-deps`, rename their config file, and update any scripts that invoke `audit-deps`. Behavior is unchanged.
|
|
265
|
+
|
|
266
|
+
## 0.6.1 โ 2026-05-04
|
|
267
|
+
|
|
268
|
+
### โป๏ธ Refactoring
|
|
269
|
+
|
|
270
|
+
- Read package version at runtime via shared helper (#338)
|
|
271
|
+
|
|
272
|
+
Fixes an issue where running `audit-deps`, `nmr`, or `release-kit` from the locally built `dist/esm/` after a `git pull` could report a stale version. Each CLI now reads its version directly from its `package.json` at startup, so version reads stay in sync with the installed source without requiring a fresh `pnpm install` or rebuild.
|
|
273
|
+
|
|
274
|
+
### ๐ Documentation
|
|
275
|
+
|
|
276
|
+
- Clarify which vulnerabilities `audit-deps sync` adds (#363)
|
|
277
|
+
|
|
278
|
+
Clarifies the action hints printed by `audit-deps check` so users understand exactly which vulnerabilities `audit-deps sync` will allowlist. The hints now read "add **the listed** vulnerabilities to the allowlist", tying the action to the report shown immediately above. The previous wording โ "add vulnerabilities to the allowlist" โ could imply that `sync` is selective or interactive, when in fact it non-interactively allowlists every unallowed vulnerability in the report.
|
|
279
|
+
|
|
280
|
+
## 0.6.0 โ 2026-04-30
|
|
281
|
+
|
|
282
|
+
### ๐ Features
|
|
283
|
+
|
|
284
|
+
- Add status indicator to standing-issue title (#335)
|
|
285
|
+
|
|
286
|
+
Adds a status indicator and bot-origin emoji to the standing issue maintained by the dependency-audit workflow. The title now reflects the most severe finding category and is refreshed on every run โ `๐ค Dependency audit status: 3 vulnerabilities found ๐จ`, `๐ค Dependency audit status: no vulnerabilities โ
`, and so on. Status priority is severity-driven: unallowed vulnerabilities outrank suppressed entries, which outrank stale allowlist entries.
|
|
287
|
+
|
|
288
|
+
## 0.5.0 โ 2026-04-23
|
|
289
|
+
|
|
290
|
+
### ๐ Features
|
|
291
|
+
|
|
292
|
+
- Show below-threshold vulnerabilities and threshold in check output (#244)
|
|
293
|
+
|
|
294
|
+
Surfaces below-threshold vulnerabilities in the check command's output instead of silently hiding them. When the severity threshold is above `low`, vulnerabilities that fall below it now appear with an `โน๏ธ` marker and "ignored" annotation in bare output, full advisory detail in verbose output, and a distinct `belowThreshold` array in JSON output. Scope headers display the active threshold (e.g., `๐ฆ prod (threshold: ๐ moderate):`) so users can see what filtering is in effect. The "No known vulnerabilities found" message now only appears when there are truly zero vulnerabilities across all categories. Exit code behavior is unchanged โ only above-threshold, non-allowlisted vulnerabilities cause failure.
|
|
295
|
+
|
|
296
|
+
- ๐จ **Breaking:** Replace --only with --tags on release-kit publish and push (#273)
|
|
297
|
+
|
|
298
|
+
`release-kit publish` and `release-kit push` now filter by full tag name via `--tags=<tag1,tag2>` instead of workspace directory name via `--only=<dir>`, matching the shape already used by `create-github-release`. Callers pass the tag they care about (e.g., `core-v1.3.0`) directly, with no translation step back to the publishing workspace's directory name. The reusable workflow gains an optional `tags:` input, and the internal `publish.yaml` caller now passes `tags: ${{ github.ref_name }}`, making the publish scope explicit rather than relying on the single-tag fetch default of `actions/checkout@v6`.
|
|
299
|
+
|
|
300
|
+
- Scaffold audit.yaml workflow from audit-deps init (#277)
|
|
301
|
+
|
|
302
|
+
Adds GitHub Actions workflow scaffolding to `audit-deps init`. Running the command now writes both `.config/audit-deps.config.json` and `.github/workflows/audit.yaml` in the target repo, so that consumers no longer have to copy the canonical caller workflow by hand from this repo. The workflow content is shipped as a bundled template that ships to npm, and the repo's own workflow is kept byte-identical to that template via a consistency test โ the canonical workflow cannot silently drift from what is published.
|
|
303
|
+
|
|
304
|
+
### โป๏ธ Refactoring
|
|
305
|
+
|
|
306
|
+
- ๐จ **Breaking:** Rename `node-monorepo-core` to `nmr-core` (#304)
|
|
307
|
+
|
|
308
|
+
Renames the shared-utilities package from `@williamthorsen/node-monorepo-core` to `@williamthorsen/nmr-core`, aligning it with the repository's `nmr-*` naming convention. The package's functionality and version are unchanged; only the published name differs.
|
|
309
|
+
|
|
310
|
+
## 0.4.0 โ 2026-04-17
|
|
311
|
+
|
|
312
|
+
### ๐ Features
|
|
313
|
+
|
|
314
|
+
- Allow audit-deps to work without a config (#235)
|
|
315
|
+
|
|
316
|
+
Adds a no-config mode to `audit-deps` so `npx @williamthorsen/audit-deps` produces a useful vulnerability report in any repo without requiring a config file. Replaces the four confusing severity booleans with a single `severityThreshold` field: `critical`, `high`, `moderate`, or `low`. Adds a JSON Schema to the generated configs.
|
|
317
|
+
|
|
318
|
+
- Store full ISO 8601 datetime in `addedAt` (#236)
|
|
319
|
+
|
|
320
|
+
Replaces the ambiguous `YYYY-MM-DD` date-only string in allowlist `addedAt` fields with a full ISO 8601 UTC datetime (e.g., `2026-04-15T14:30:00.000Z`). This removes timezone ambiguity and adds time-of-day precision for more accurate relative-time display.
|
|
321
|
+
|
|
322
|
+
- Improve DX of audit-deps bare output (#241)
|
|
323
|
+
|
|
324
|
+
Redesigns the `audit-deps` bare output format to show GHSA IDs instead of npm-specific numeric advisory IDs, add severity text labels, and guide developers toward next steps. The new format includes an intro banner reflecting the audit scope, scope-labeled sections with emoji markers, bulleted findings with severity indicators, relative-time annotations on allowed vulnerabilities, and a unified `Actions:` footer with context-aware verbose and sync hints. Extracts shared time-formatting helpers into a dedicated module to support relative timestamps in both bare and verbose formatters.
|
|
325
|
+
|
|
326
|
+
## 0.3.0 โ 2026-04-16
|
|
327
|
+
|
|
328
|
+
### ๐ Features
|
|
329
|
+
|
|
330
|
+
- Decouple audit from CI quality gate and add audit workflow (#210)
|
|
331
|
+
|
|
332
|
+
Dependency audit is now decoupled from the CI quality gate so that transient upstream CVEs no longer block the merging of unrelated code changes. Audit now runs in a dedicated workflow with non-blocking PR integration (acknowledgment checkbox) and a daily scheduled run that tracks results in a standing GitHub issue. A readyup kit is available to validate the new setup in consuming repos.
|
|
333
|
+
|
|
334
|
+
- Replace bare-command help with grouped check (#211)
|
|
335
|
+
|
|
336
|
+
The bare `audit-deps` command now runs a grouped vulnerability check instead of showing help text. Each scope (prod first, then dev) shows unallowed vulnerabilities with severity indicators, allowed vulnerabilities with annotations, and stale allowlist entries flagged for cleanup. Exit code is 1 when unallowed vulnerabilities exist.
|
|
337
|
+
|
|
338
|
+
The previous raw audit-ci passthrough moves behind `--raw`. The `report` subcommand is removed; its functionality is superseded by the new default output. `--dev`/`--prod`, `--config`, and `--json` compose with both the bare command and `--raw`.
|
|
339
|
+
|
|
340
|
+
- Add optional `severity` field to `AuditResult` and extract it from audit-ci advisory JSON.
|
|
341
|
+
- Add `checkCommand` that cross-references audit results with the config allowlist to classify vulnerabilities and detect stale entries. Forward `runReport` stderr to `process.stderr` when non-empty, matching the existing `auditCommand` pattern.
|
|
342
|
+
- Add `formatCheckText` and `formatCheckJson` formatters in `format-check.ts`, with severity-to-emoji mapping (๐ด critical/high, ๐ moderate, ๐ก low/info).
|
|
343
|
+
- Extract `generateScopeConfig` to deduplicate the `generateAuditCiConfig` try/catch error-wrapping shared by `checkCommand`, `syncCommand`, and `loadAndGenerate`.
|
|
344
|
+
- Route bare invocation to `checkCommand`, `--raw` to `auditCommand`.
|
|
345
|
+
- Remove `reportCommand`, `showReportHelp`, and `report` from `SUBCOMMANDS`.
|
|
346
|
+
- Update help text to document `--raw` and the new default behavior.
|
|
347
|
+
- Cover new and modified behavior with unit tests, including severity parsing, formatter output, `checkCommand` classification and exit codes, stale-entry detection, stderr forwarding, scope ordering, and `--raw` routing.
|
|
348
|
+
|
|
349
|
+
- Verbose check output for audit-deps (#213)
|
|
350
|
+
|
|
351
|
+
Adds a `--verbose` / `-v` flag to the default `audit-deps` check that produces a detailed per-vulnerability report โ advisory title, severity, every affected dependency path, link, and description โ replacing the need to chase the URL for each finding. Both bare and verbose outputs gain an `Actions:` footer that tells the user exactly which `audit-deps sync` invocation will resolve the current state, and `sync` now stamps an `addedAt` date on allowlist entries so allowed vulnerabilities carry an `allowed X ago (YYYY-MM-DD)` line when displayed in verbose mode.
|
|
352
|
+
|
|
353
|
+
### ๐ Documentation
|
|
354
|
+
|
|
355
|
+
- Align README and help text with current CLI API
|
|
356
|
+
|
|
357
|
+
Update the Quick start and CLI reference in the `audit-deps` README to match the grouped-check default, the removal of the `report` command, and the new `--raw` flag. Remove "(CI mode)" from the `--raw` help-text description; the flag is not tied to CI environments.
|
|
358
|
+
|
|
359
|
+
## 0.2.1 โ 2026-04-15
|
|
360
|
+
|
|
361
|
+
### โ๏ธ Tooling
|
|
362
|
+
|
|
363
|
+
- Enable automated publication to npm (#187)
|
|
364
|
+
|
|
365
|
+
Prepares the repository for reliable tag-triggered npm publishing by adding missing package metadata, standardizing licensing, and introducing a readyup kit that validates publish readiness across all packages.
|
|
366
|
+
|
|
367
|
+
## 0.2.0 โ 2026-04-10
|
|
368
|
+
|
|
369
|
+
### ๐ Features
|
|
370
|
+
|
|
371
|
+
- Create audit-deps wrapper to manage dependency audits (#183)
|
|
372
|
+
|
|
373
|
+
Adds a new `@williamthorsen/audit-deps` package that wraps `audit-ci` with a typed JSON config model, per-scope (dev/prod) severity thresholds, and a sync workflow that automates allowlist management. The package provides a CLI with five commands: default audit (CI pass/fail), `report` (all vulnerabilities), `sync` (diff-based allowlist updates), `generate` (flat config regeneration), and `init` (config scaffolding).
|
|
374
|
+
|
|
375
|
+
<!-- Generated by release-kit. Do not edit this file. Use .meta/changelog-overrides.json to override entries. -->
|
package/README.md
CHANGED
|
@@ -2,7 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
Wraps [audit-ci](https://github.com/IBM/audit-ci) with a richer config model, typed JSON source of truth, and a sync workflow that automates allowlist management.
|
|
4
4
|
|
|
5
|
-
<!-- section:release-notes
|
|
5
|
+
<!-- section:release-notes -->
|
|
6
|
+
## Release notes โ v0.16.0 (2026-09-08)
|
|
7
|
+
|
|
8
|
+
### ๐ Features
|
|
9
|
+
|
|
10
|
+
- Report a package whose tarball would omit its changelog (#768)
|
|
11
|
+
|
|
12
|
+
Adds ReadyUp checks to verify that every published package bundles its changelog files: the human-readable `CHANGELOG.md` and the machine-readable `changelog.json`.
|
|
13
|
+
<!-- /section:release-notes -->
|
|
6
14
|
|
|
7
15
|
## Installation
|
|
8
16
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "v11y-check",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.16.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Wrap audit-ci with a richer config model, typed JSON source of truth, and sync workflow",
|
|
6
6
|
"keywords": [
|
|
@@ -36,22 +36,24 @@
|
|
|
36
36
|
"v11y-check": "bin/v11y.js"
|
|
37
37
|
},
|
|
38
38
|
"files": [
|
|
39
|
+
".meta/changelog.json",
|
|
39
40
|
".readyup/kits/*.js",
|
|
40
41
|
".readyup/manifest.json",
|
|
42
|
+
"CHANGELOG.md",
|
|
41
43
|
"bin",
|
|
42
44
|
"dist",
|
|
43
45
|
"templates"
|
|
44
46
|
],
|
|
45
47
|
"dependencies": {
|
|
46
|
-
"@williamthorsen/nmr-core": "0.
|
|
47
|
-
"@williamthorsen/toolbelt.errors": "0.
|
|
48
|
+
"@williamthorsen/nmr-core": "0.11.0",
|
|
49
|
+
"@williamthorsen/toolbelt.errors": "0.7.0",
|
|
48
50
|
"audit-ci": "7.1.0",
|
|
49
|
-
"zod": "4.4
|
|
51
|
+
"zod": "4.5.4"
|
|
50
52
|
},
|
|
51
53
|
"devDependencies": {
|
|
52
|
-
"@williamthorsen/toolbelt.filesystem": "0.8.
|
|
53
|
-
"@williamthorsen/toolbelt.testing": "0.5.
|
|
54
|
-
"@williamthorsen/toolbelt.vitest": "0.
|
|
54
|
+
"@williamthorsen/toolbelt.filesystem": "0.8.3",
|
|
55
|
+
"@williamthorsen/toolbelt.testing": "0.5.1",
|
|
56
|
+
"@williamthorsen/toolbelt.vitest": "0.9.0",
|
|
55
57
|
"readyup": "0.35.0"
|
|
56
58
|
},
|
|
57
59
|
"engines": {
|