@williamthorsen/release-kit 9.1.1 → 10.0.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/CHANGELOG.md CHANGED
@@ -2,6 +2,26 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## 10.0.0 — 2026-08-03
6
+
7
+ ### 🎉 Features
8
+
9
+ - 🚨 **Breaking:** Retire integration label in favor of an isolation-tier test ladder (#552)
10
+
11
+ 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`.
12
+
13
+ `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`.
14
+
15
+ ### ♻️ Refactoring
16
+
17
+ - 🚨 **Breaking:** Move defineConfig to a dedicated config subpath (#566)
18
+
19
+ `defineConfig` now comes from the `@williamthorsen/release-kit/config` subpath rather than from the package root. The subpath also carries the config types.
20
+
21
+ - Share nmr-core's cache primitives with nmr-compile (#570)
22
+
23
+ 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.
24
+
5
25
  ## 9.1.0 — 2026-07-31
6
26
 
7
27
  ### 🎉 Features
package/README.md CHANGED
@@ -4,7 +4,17 @@ Version-bumping and changelog-generation toolkit for release workflows.
4
4
 
5
5
  Provides a self-contained CLI that auto-discovers workspaces from `pnpm-workspace.yaml`, parses conventional commits, determines version bumps, updates `package.json` files, and generates changelogs from `git-cliff --context` output rendered in-process (with optional [editorial overrides](#editorial-overrides)).
6
6
 
7
- <!-- section:release-notes --><!-- /section:release-notes -->
7
+ <!-- section:release-notes -->
8
+ ## Release notes — v10.0.0 (2026-08-03)
9
+
10
+ ### 🎉 Features
11
+
12
+ - 🚨 **Breaking:** Retire integration label in favor of an isolation-tier test ladder (#552)
13
+
14
+ 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`.
15
+
16
+ `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`.
17
+ <!-- /section:release-notes -->
8
18
 
9
19
  ## Installation
10
20
 
@@ -86,7 +96,7 @@ Configuration is optional. The CLI works out of the box by auto-discovering work
86
96
  ### Config file
87
97
 
88
98
  ```typescript
89
- import { defineConfig } from '@williamthorsen/release-kit';
99
+ import { defineConfig } from '@williamthorsen/release-kit/config';
90
100
 
91
101
  export default defineConfig({
92
102
  // Exclude a workspace from release processing
@@ -154,7 +164,7 @@ interface RetiredPackage {
154
164
  Worked example — `preflight` was extracted from this monorepo and continues as the standalone `readyup` project. Its tags stay in this repo as historical anchors:
155
165
 
156
166
  ```typescript
157
- import { defineConfig } from '@williamthorsen/release-kit';
167
+ import { defineConfig } from '@williamthorsen/release-kit/config';
158
168
 
159
169
  export default defineConfig({
160
170
  retiredPackages: [{ name: '@scope/preflight', tagPrefix: 'preflight-v', successor: 'readyup' }],
@@ -187,7 +197,7 @@ The rule is enforced at config load; the resulting error identifies both collidi
187
197
  Some monorepos ship a single combined deliverable — a Chrome extension, a CLI binary, a packaged desktop app — for which the per-workspace tags and changelogs alone do not describe what the user actually receives. Declare the optional `project` block to add a project-level release stage that runs alongside the per-workspace pipeline.
188
198
 
189
199
  ```typescript
190
- import type { ReleaseKitConfig } from '@williamthorsen/release-kit';
200
+ import type { ReleaseKitConfig } from '@williamthorsen/release-kit/config';
191
201
 
192
202
  const config: ReleaseKitConfig = {
193
203
  // Empty object is enough to opt in. Every non-excluded workspace contributes.
@@ -724,7 +734,7 @@ Every `sync-labels` subcommand refuses to run while the retired `.config/sync-la
724
734
  #### Label configuration
725
735
 
726
736
  ```typescript
727
- import { defineConfig } from '@williamthorsen/release-kit';
737
+ import { defineConfig } from '@williamthorsen/release-kit/config';
728
738
 
729
739
  export default defineConfig({
730
740
  repoLabels: {
@@ -871,7 +881,7 @@ Minimal worked example for a repo whose pre-v5 tags were `core-v0.2.7` and whose
871
881
 
872
882
  ```typescript
873
883
  // .config/release-kit.config.ts
874
- import type { ReleaseKitConfig } from '@williamthorsen/release-kit';
884
+ import type { ReleaseKitConfig } from '@williamthorsen/release-kit/config';
875
885
 
876
886
  const config: ReleaseKitConfig = {
877
887
  workspaces: [
@@ -1,2 +1,3 @@
1
1
  import type { ReleaseKitConfig } from './types.js';
2
+ export type { LabelSpec, ReleaseKitConfig, RepoLabelsConfig } from './types.js';
2
3
  export declare function defineConfig(config: ReleaseKitConfig): ReleaseKitConfig;
@@ -1,4 +1,2 @@
1
1
  export { type ChangelogOverrideScope, validateAllChangelogOverrides, type ValidateAllChangelogOverridesInputs, type ValidateAllChangelogOverridesResult, } from './changelogOverrides.js';
2
- export { defineConfig } from './defineConfig.js';
3
- export type { LabelSpec, ReleaseKitConfig, RepoLabelsConfig } from './types.js';
4
2
  export { formatValidateOverridesResult, type ValidateOverridesCommandResult } from './validateOverridesCommand.js';
package/dist/esm/index.js CHANGED
@@ -1,3 +1,2 @@
1
1
  export { validateAllChangelogOverrides, } from "./changelogOverrides.js";
2
- export { defineConfig } from "./defineConfig.js";
3
2
  export { formatValidateOverridesResult } from "./validateOverridesCommand.js";
@@ -1,6 +1,6 @@
1
1
  export function releaseConfigScript(repoType) {
2
2
  if (repoType === 'monorepo') {
3
- return `import { defineConfig } from '@williamthorsen/release-kit';
3
+ return `import { defineConfig } from '@williamthorsen/release-kit/config';
4
4
 
5
5
  export default defineConfig({
6
6
  releaseNotes: {
@@ -22,7 +22,7 @@ export default defineConfig({
22
22
  });
23
23
  `;
24
24
  }
25
- return `import { defineConfig } from '@williamthorsen/release-kit';
25
+ return `import { defineConfig } from '@williamthorsen/release-kit/config';
26
26
 
27
27
  export default defineConfig({
28
28
  releaseNotes: {
@@ -61,7 +61,7 @@ ${labelsBlock}
61
61
  },`;
62
62
  }
63
63
  export function repoLabelsConfigScript(scopeLabels) {
64
- return `import { defineConfig } from '@williamthorsen/release-kit';
64
+ return `import { defineConfig } from '@williamthorsen/release-kit/config';
65
65
 
66
66
  export default defineConfig({
67
67
  ${renderRepoLabelsBlock(scopeLabels)}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@williamthorsen/release-kit",
3
- "version": "9.1.1",
3
+ "version": "10.0.0",
4
4
  "description": "Version-bumping and changelog-generation toolkit for release workflows",
5
5
  "keywords": [],
6
6
  "homepage": "https://github.com/williamthorsen/node-monorepo-tools/tree/main/packages/release-kit#readme",
@@ -19,6 +19,10 @@
19
19
  ".": {
20
20
  "types": "./dist/esm/index.d.ts",
21
21
  "import": "./dist/esm/index.js"
22
+ },
23
+ "./config": {
24
+ "types": "./dist/esm/defineConfig.d.ts",
25
+ "import": "./dist/esm/defineConfig.js"
22
26
  }
23
27
  },
24
28
  "bin": {
@@ -39,11 +43,11 @@
39
43
  "semver": "7.8.5",
40
44
  "yaml": "2.9.0",
41
45
  "zod": "4.4.3",
42
- "@williamthorsen/nmr-core": "0.7.3"
46
+ "@williamthorsen/nmr-core": "0.8.0"
43
47
  },
44
48
  "devDependencies": {
45
49
  "@types/semver": "7.7.1",
46
- "smol-toml": "1.7.0"
50
+ "smol-toml": "1.7.1"
47
51
  },
48
52
  "engines": {
49
53
  "node": ">=24"