@williamthorsen/release-kit 9.1.0 → 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
@@ -5,13 +5,15 @@ Version-bumping and changelog-generation toolkit for release workflows.
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
7
  <!-- section:release-notes -->
8
- ## Release notes — v9.1.0 (2026-07-31)
8
+ ## Release notes — v10.0.0 (2026-08-03)
9
9
 
10
10
  ### 🎉 Features
11
11
 
12
- - Make label descriptions optional and generate none for scope labels (#539)
12
+ - 🚨 **Breaking:** Retire integration label in favor of an isolation-tier test ladder (#552)
13
13
 
14
- `release-kit` now supports labels without a description, and `release-kit sync-labels init` generates scope labels without one. Applying a label without a description clears any existing description the repository carries for that label.
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`.
15
17
  <!-- /section:release-notes -->
16
18
 
17
19
  ## Installation
@@ -94,7 +96,7 @@ Configuration is optional. The CLI works out of the box by auto-discovering work
94
96
  ### Config file
95
97
 
96
98
  ```typescript
97
- import { defineConfig } from '@williamthorsen/release-kit';
99
+ import { defineConfig } from '@williamthorsen/release-kit/config';
98
100
 
99
101
  export default defineConfig({
100
102
  // Exclude a workspace from release processing
@@ -162,7 +164,7 @@ interface RetiredPackage {
162
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:
163
165
 
164
166
  ```typescript
165
- import { defineConfig } from '@williamthorsen/release-kit';
167
+ import { defineConfig } from '@williamthorsen/release-kit/config';
166
168
 
167
169
  export default defineConfig({
168
170
  retiredPackages: [{ name: '@scope/preflight', tagPrefix: 'preflight-v', successor: 'readyup' }],
@@ -195,7 +197,7 @@ The rule is enforced at config load; the resulting error identifies both collidi
195
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.
196
198
 
197
199
  ```typescript
198
- import type { ReleaseKitConfig } from '@williamthorsen/release-kit';
200
+ import type { ReleaseKitConfig } from '@williamthorsen/release-kit/config';
199
201
 
200
202
  const config: ReleaseKitConfig = {
201
203
  // Empty object is enough to opt in. Every non-excluded workspace contributes.
@@ -732,7 +734,7 @@ Every `sync-labels` subcommand refuses to run while the retired `.config/sync-la
732
734
  #### Label configuration
733
735
 
734
736
  ```typescript
735
- import { defineConfig } from '@williamthorsen/release-kit';
737
+ import { defineConfig } from '@williamthorsen/release-kit/config';
736
738
 
737
739
  export default defineConfig({
738
740
  repoLabels: {
@@ -879,7 +881,7 @@ Minimal worked example for a repo whose pre-v5 tags were `core-v0.2.7` and whose
879
881
 
880
882
  ```typescript
881
883
  // .config/release-kit.config.ts
882
- import type { ReleaseKitConfig } from '@williamthorsen/release-kit';
884
+ import type { ReleaseKitConfig } from '@williamthorsen/release-kit/config';
883
885
 
884
886
  const config: ReleaseKitConfig = {
885
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.0",
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"