@icebreakers/monorepo-templates 3.0.0 → 3.0.1

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.
Files changed (38) hide show
  1. package/assets/.agents/skills/repoctl/references/commands.md +1 -1
  2. package/assets/.github/workflows/ci.yml +3 -3
  3. package/assets/.github/workflows/release-intent-auto.yml +1 -1
  4. package/assets/.github/workflows/release.yml +3 -3
  5. package/assets/.github/workflows/repoctl-docs-deploy.yml +1 -1
  6. package/assets/.github/workflows/repoctl-docs.yml +1 -1
  7. package/assets/AGENTS.md +10 -2
  8. package/assets/CONTRIBUTING.md +1 -1
  9. package/assets/Dockerfile +1 -1
  10. package/assets/package.json +4 -4
  11. package/assets/pnpm-workspace.yaml +1 -1
  12. package/package.json +2 -2
  13. package/templates/cli/package.json +1 -1
  14. package/templates/client/package.json +4 -4
  15. package/templates/next/README.md +1 -1
  16. package/templates/next/package.json +4 -4
  17. package/templates/nimbus/UPSTREAM.md +2 -2
  18. package/templates/nimbus/package.json +2 -2
  19. package/templates/react-lib/package.json +5 -5
  20. package/templates/react-vite/package.json +3 -3
  21. package/templates/server/package.json +1 -1
  22. package/templates/tsdown/package.json +1 -1
  23. package/templates/vitepress/package.json +2 -2
  24. package/templates/vitepress/reference/devcontainer.md +1 -1
  25. package/templates/vitepress/start/index.md +3 -1
  26. package/templates/vitepress/start/install-repoctl.md +2 -0
  27. package/templates/vitepress/start/install.md +3 -1
  28. package/templates/vitepress/tasks/adopt-existing.md +1 -1
  29. package/templates/vitepress/tasks/ci.md +2 -2
  30. package/templates/vitepress/tasks/release.md +2 -2
  31. package/templates/vitepress/zh/reference/devcontainer.md +1 -1
  32. package/templates/vitepress/zh/start/index.md +3 -1
  33. package/templates/vitepress/zh/start/install-repoctl.md +2 -0
  34. package/templates/vitepress/zh/start/install.md +3 -1
  35. package/templates/vitepress/zh/tasks/adopt-existing.md +1 -1
  36. package/templates/vitepress/zh/tasks/ci.md +2 -2
  37. package/templates/vitepress/zh/tasks/release.md +2 -2
  38. package/templates/vue-lib/package.json +2 -2
@@ -159,7 +159,7 @@ The command uses `GITHUB_TOKEN`, `GITHUB_REPOSITORY`, `GITHUB_API_URL`, and
159
159
  `GITHUB_SHA` to upsert the Release PR, package tags, and GitHub Releases. It
160
160
  consumes `pnpm-publish-summary.json` and is safe to retry.
161
161
 
162
- `oidc-audit` independently checks every versioned public child package using the current GitHub-hosted job's OIDC identity and the official npm registry. It returns safe JSON (`schemaVersion: 1`) with allowlisted identity fields, per-package HTTP status/message and aggregate success. The CLI fails if any exchange fails, but still checks all packages. It does not load release configuration, consume intents, execute quality scripts/hooks, publish, or create tags/Releases. Recovery flags (`source-sha`, `dry-run`, `package`, `version`) are incompatible. The managed workflow has a separate read-only audit job with Node 24, `id-token: write` and installation lifecycle scripts disabled; generated projects need only installed repoctl, while the source workspace builds its tooling closure.
162
+ `oidc-audit` independently checks every versioned public child package using the current GitHub-hosted job's OIDC identity and the official npm registry. It returns safe JSON (`schemaVersion: 1`) with allowlisted identity fields, per-package HTTP status/message and aggregate success. The CLI fails if any exchange fails, but still checks all packages. It does not load release configuration, consume intents, execute quality scripts/hooks, publish, or create tags/Releases. Recovery flags (`source-sha`, `dry-run`, `package`, `version`) are incompatible. The managed workflow has a separate read-only audit job with Node.js 24.22.1, `id-token: write` and installation lifecycle scripts disabled; generated projects need only installed repoctl, while the source workspace builds its tooling closure.
163
163
 
164
164
  Use `auditReleaseOidc({ cwd, env?, fetch? })` for the same programmatic report. JWTs, request tokens and exchange tokens are never included or saved. A 404 alone cannot identify expired trust: check npm package settings and repository/workflow/environment matching. If npm explicitly says `Expired`, delete/recreate the configuration and perform the first successful publish within 48 hours under [npm's policy](https://github.blog/changelog/2026-10-02-unvalidated-npm-trusted-publishing-configurations-now-expire/). A successful exchange does not complete that initial publish validation; auditing immediately before publishing narrows that gap.
165
165
 
@@ -28,7 +28,7 @@ jobs:
28
28
  fail-fast: false
29
29
  matrix:
30
30
  os: [ ubuntu-latest, windows-latest, macos-latest ]
31
- node-version: [ 22, 24 ]
31
+ node-version: [ 22.23.4, 24.22.1, 26.12.1 ]
32
32
  runs-on: ${{ matrix.os }}
33
33
  # Remote Caching enabled - configure TURBO_TOKEN and TURBO_TEAM in repository settings
34
34
  env:
@@ -65,11 +65,11 @@ jobs:
65
65
  run: pnpm build
66
66
 
67
67
  - name: Typecheck
68
- if: ${{ matrix.os != 'windows-latest' || matrix.node-version != 22 }}
68
+ if: ${{ matrix.os != 'windows-latest' || matrix.node-version != '22.23.4' }}
69
69
  run: pnpm typecheck
70
70
 
71
71
  - name: Typecheck (Windows Node 22)
72
- if: ${{ matrix.os == 'windows-latest' && matrix.node-version == 22 }}
72
+ if: ${{ matrix.os == 'windows-latest' && matrix.node-version == '22.23.4' }}
73
73
  run: pnpm exec turbo run typecheck --concurrency=1
74
74
 
75
75
  - name: TSD
@@ -33,7 +33,7 @@ jobs:
33
33
  - name: Setup Node.js environment
34
34
  uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
35
35
  with:
36
- node-version: 24
36
+ node-version: 24.22.1
37
37
 
38
38
  - name: Validate GitHub App configuration
39
39
  if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.head.repo.full_name == github.repository }}
@@ -98,7 +98,7 @@ jobs:
98
98
  - name: Setup Node.js environment
99
99
  uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
100
100
  with:
101
- node-version: 24
101
+ node-version: 24.22.1
102
102
  cache: pnpm
103
103
 
104
104
  - name: Install npm with trusted publishing support
@@ -239,7 +239,7 @@ jobs:
239
239
  - name: Setup Node.js environment
240
240
  uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
241
241
  with:
242
- node-version: 24
242
+ node-version: 24.22.1
243
243
  cache: pnpm
244
244
 
245
245
  - name: Install npm with trusted publishing support
@@ -296,7 +296,7 @@ jobs:
296
296
  - name: Setup Node.js environment
297
297
  uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
298
298
  with:
299
- node-version: 24
299
+ node-version: 24.22.1
300
300
  cache: pnpm
301
301
 
302
302
  - name: Install Dependencies without lifecycle scripts
@@ -46,7 +46,7 @@ jobs:
46
46
 
47
47
  - uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
48
48
  with:
49
- node-version: 24
49
+ node-version: 24.22.1
50
50
  cache: pnpm
51
51
 
52
52
  - run: pnpm install --frozen-lockfile
@@ -47,7 +47,7 @@ jobs:
47
47
  - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0
48
48
  - uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
49
49
  with:
50
- node-version: 24
50
+ node-version: 24.22.1
51
51
  cache: pnpm
52
52
  - run: pnpm install --frozen-lockfile
53
53
  - id: sites
package/assets/AGENTS.md CHANGED
@@ -26,7 +26,15 @@ Preview without writing files: `pnpm exec repo new <name> --template <key> --dry
26
26
 
27
27
  If the user asks you to create a new business project, do not add it inside an
28
28
  existing unrelated repository. Use a new or empty directory outside the repoctl
29
- source checkout. Start a new workspace with:
29
+ source checkout.
30
+
31
+ Node.js 25+ does not bundle Corepack. On those versions, or if `corepack` is
32
+ unavailable, first run `npm install --global corepack@0.36.0`. Then run
33
+ `corepack enable` before the first pnpm command. After entering the generated
34
+ project, run `corepack enable` again as shown below so pnpm uses that workspace's
35
+ `packageManager` field.
36
+
37
+ Start a new workspace with:
30
38
 
31
39
  ```bash
32
40
  pnpm create repoctl@latest <dir> -- --yes --templates <keys>
@@ -52,7 +60,7 @@ pnpm exec repo check
52
60
 
53
61
  ## Requirements
54
62
 
55
- - Node.js 22.13 or newer
63
+ - Node.js matching `^22.23.4 || ^24.22.1 || >=26.12.1` (24.22.1 LTS recommended)
56
64
  - pnpm (run `corepack enable` so the declared workspace version is used)
57
65
  - CLI output is English by default; `--lang zh-CN` or `REPOCTL_LANG=zh-CN` selects Simplified Chinese
58
66
 
@@ -6,7 +6,7 @@ repoctl accepts bug fixes, documentation improvements, tests, and focused featur
6
6
 
7
7
  ## Development setup
8
8
 
9
- 1. Use Node.js 22.13+ and enable Corepack.
9
+ 1. Use Node.js matching `^22.23.4 || ^24.22.1 || >=26.12.1` (24.22.1 LTS recommended). On Node.js 25+ or if `corepack` is unavailable, first run `npm install --global corepack@0.36.0`; then run `corepack enable`.
10
10
  2. Run `pnpm install`.
11
11
  3. Create a focused branch from `main`.
12
12
  4. Add or update tests with the implementation.
package/assets/Dockerfile CHANGED
@@ -1,4 +1,4 @@
1
- FROM node:22-alpine AS base
1
+ FROM node:24.22.1-alpine AS base
2
2
  ENV PNPM_HOME="/pnpm"
3
3
  ENV PATH="$PNPM_HOME:$PATH"
4
4
  RUN corepack enable
@@ -3,7 +3,7 @@
3
3
  "type": "module",
4
4
  "version": "0.0.0",
5
5
  "private": true,
6
- "packageManager": "pnpm@12.13.0",
6
+ "packageManager": "pnpm@12.14.0",
7
7
  "description": "Source workspace for repoctl and Icebreaker's shared development packages",
8
8
  "author": "ice breaker <hi@sonofmagic.top>",
9
9
  "license": "MIT",
@@ -23,7 +23,7 @@
23
23
  "typescript"
24
24
  ],
25
25
  "engines": {
26
- "node": ">=22.13.0"
26
+ "node": "^22.23.4 || ^24.22.1 || >=26.12.1"
27
27
  },
28
28
  "scripts": {
29
29
  "build": "turbo run build",
@@ -71,7 +71,7 @@
71
71
  "@commitlint/cli": "^21.2.3",
72
72
  "@eslint/config-inspector": "^3.5.0",
73
73
  "@types/node": "^26.6.5",
74
- "@vitest/coverage-v8": "~5.0.4",
74
+ "@vitest/coverage-v8": "~5.0.5",
75
75
  "eslint": "^10.12.0",
76
76
  "execa": "^10.1.1",
77
77
  "lefthook": "2.2.2",
@@ -83,7 +83,7 @@
83
83
  "tsdown": "0.23.1",
84
84
  "turbo": "^2.11.8",
85
85
  "typescript": "^6.0.3",
86
- "vitest": "~5.0.4",
86
+ "vitest": "~5.0.5",
87
87
  "yaml": "^2.9.1"
88
88
  },
89
89
  "publishConfig": {
@@ -23,7 +23,7 @@ overrides:
23
23
  vite: 8.3.4
24
24
  postcss: 8.5.30
25
25
  postcss-selector-parser: 7.1.6
26
- js-yaml: 5.4.3
26
+ js-yaml: 5.5.0
27
27
  nanoid: 6.0.2
28
28
  brace-expansion: 5.0.12
29
29
  minimatch@<4>brace-expansion: 1.1.21
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@icebreakers/monorepo-templates",
3
3
  "type": "module",
4
- "version": "3.0.0",
4
+ "version": "3.0.1",
5
5
  "description": "Built-in project templates and managed workspace assets for repoctl",
6
6
  "author": "ice breaker <hi@sonofmagic.top>",
7
7
  "license": "MIT",
@@ -43,7 +43,7 @@
43
43
  "templates"
44
44
  ],
45
45
  "engines": {
46
- "node": ">=22.13.0"
46
+ "node": "^22.23.4 || ^24.22.1 || >=26.12.1"
47
47
  },
48
48
  "dependencies": {
49
49
  "@inquirer/checkbox": "^5.2.6",
@@ -25,7 +25,7 @@
25
25
  "ice": "./dev/index.ts"
26
26
  },
27
27
  "engines": {
28
- "node": ">=22.13.0"
28
+ "node": "^22.23.4 || ^24.22.1 || >=26.12.1"
29
29
  },
30
30
  "scripts": {
31
31
  "start": "node --experimental-strip-types src/index.ts",
@@ -22,7 +22,7 @@
22
22
  "template"
23
23
  ],
24
24
  "engines": {
25
- "node": ">=22.13.0"
25
+ "node": "^22.23.4 || ^24.22.1 || >=26.12.1"
26
26
  },
27
27
  "scripts": {
28
28
  "dev": "pnpm cf-typegen && vite --host",
@@ -37,10 +37,10 @@
37
37
  },
38
38
  "dependencies": {
39
39
  "@faker-js/faker": "^10.6.0",
40
- "@tanstack/vue-query": "^5.104.2",
41
- "@tanstack/vue-query-devtools": "^6.3.2",
40
+ "@tanstack/vue-query": "^5.104.3",
41
+ "@tanstack/vue-query-devtools": "^6.3.3",
42
42
  "@tanstack/vue-table": "^9.3.1",
43
- "@tanstack/vue-virtual": "^3.13.45",
43
+ "@tanstack/vue-virtual": "^3.13.46",
44
44
  "@trpc/client": "^11.19.0",
45
45
  "clsx": "^2.1.1",
46
46
  "pinia": "^4.1.0",
@@ -1,6 +1,6 @@
1
1
  # Next.js App Router workspace
2
2
 
3
- This TypeScript template follows `create-next-app@16.3.8`'s App Router layout and uses the shared repoctl tooling. It includes a server page, a client counter and `GET /api/health`. It requires Node 22.13 or newer and shares the workspace's pnpm version and lockfile.
3
+ This TypeScript template follows `create-next-app@16.3.8`'s App Router layout and uses the shared repoctl tooling. It includes a server page, a client counter and `GET /api/health`. It supports Node.js `^22.23.4 || ^24.22.1 || >=26.12.1` (24.22.1 LTS recommended) and shares the workspace's pnpm version and lockfile.
4
4
 
5
5
  Run these from the generated workspace root:
6
6
 
@@ -6,7 +6,7 @@
6
6
  "description": "Internal Next.js App Router and TypeScript application template shipped with repoctl",
7
7
  "license": "MIT",
8
8
  "engines": {
9
- "node": ">=22.13.0"
9
+ "node": "^22.23.4 || ^24.22.1 || >=26.12.1"
10
10
  },
11
11
  "scripts": {
12
12
  "dev": "next dev",
@@ -19,7 +19,7 @@
19
19
  "test:dev": "vitest"
20
20
  },
21
21
  "dependencies": {
22
- "next": "16.4.1",
22
+ "next": "16.4.2",
23
23
  "react": "^19.3.1",
24
24
  "react-dom": "^19.3.1"
25
25
  },
@@ -29,8 +29,8 @@
29
29
  "@types/react": "^19.3.0",
30
30
  "@types/react-dom": "^19.3.0",
31
31
  "@vitejs/plugin-react": "^6.1.2",
32
- "jsdom": "^30.1.2",
32
+ "jsdom": "^30.1.3",
33
33
  "typescript": "~6.0.3",
34
- "vitest": "~5.0.4"
34
+ "vitest": "~5.0.5"
35
35
  }
36
36
  }
@@ -6,9 +6,9 @@ This template adapts the static empty starter from [Cloudflare Nimbus](https://g
6
6
  - Starter commit: `aae348048a8c659f84c39696ee6b20c2ad2f5ae2`
7
7
  - Nimbus package: `@cloudflare/nimbus-docs@0.17.0`
8
8
  - Nimbus release commit: `1951de5cc3e420a5e672f192c334584216716c1e`
9
- - Astro: `7.3.8`
9
+ - Astro: `7.4.0`
10
10
 
11
- Nimbus declares Astro `>=7.2.6 <8`; Astro requires Node `>=22.12.0`, so this workspace retains its stricter Node `>=22.13.0` baseline. The repository validates builds, Astro diagnostics and TypeScript checks with TypeScript `6.0.3` and Vite `8.3.4`. Resolved dependencies are recorded in the monorepo's root `pnpm-lock.yaml`; generated projects use their own root workspace lockfile.
11
+ Nimbus declares Astro `>=7.2.6 <8`; Astro `7.4.0` requires Node `>=22.22.0`. This workspace applies the stricter security baseline `^22.23.4 || ^24.22.1 || >=26.12.1` and recommends Node.js 24.22.1 LTS. The repository validates builds, Astro diagnostics and TypeScript checks with TypeScript `6.0.3` and Vite `8.3.4`. Resolved dependencies are recorded in the monorepo's root `pnpm-lock.yaml`; generated projects use their own root workspace lockfile.
12
12
 
13
13
  Agent endpoint routes and the content-loading approach come from that starter. The bilingual layout, navigation, search interface, examples and workspace checks are repoctl adaptations. These files are maintained locally; generating a project never downloads the upstream starter.
14
14
 
@@ -6,7 +6,7 @@
6
6
  "description": "Bilingual Nimbus documentation starter",
7
7
  "license": "MIT",
8
8
  "engines": {
9
- "node": ">=22.13.0"
9
+ "node": "^22.23.4 || ^24.22.1 || >=26.12.1"
10
10
  },
11
11
  "scripts": {
12
12
  "dev": "astro dev",
@@ -20,7 +20,7 @@
20
20
  },
21
21
  "dependencies": {
22
22
  "@cloudflare/nimbus-docs": "0.17.0",
23
- "astro": "7.3.8"
23
+ "astro": "7.4.0"
24
24
  },
25
25
  "devDependencies": {
26
26
  "@astrojs/check": "^0.9.10",
@@ -16,7 +16,7 @@
16
16
  "main": "./dist/index.js",
17
17
  "types": "./dist/index.d.ts",
18
18
  "files": ["LICENSE", "README.md", "dist"],
19
- "engines": { "node": ">=22.13.0" },
19
+ "engines": { "node": "^22.23.4 || ^24.22.1 || >=26.12.1" },
20
20
  "scripts": {
21
21
  "build": "vite build",
22
22
  "lint": "eslint . && stylelint \"src/**/*.css\"",
@@ -27,8 +27,8 @@
27
27
  "test:dev": "vitest"
28
28
  },
29
29
  "peerDependencies": {
30
- "react": "^19.3.0",
31
- "react-dom": "^19.3.0"
30
+ "react": "^19.3.1",
31
+ "react-dom": "^19.3.1"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@testing-library/dom": "^10.4.2",
@@ -36,13 +36,13 @@
36
36
  "@types/react": "^19.3.0",
37
37
  "@types/react-dom": "^19.3.0",
38
38
  "@vitejs/plugin-react": "^6.1.2",
39
- "jsdom": "^30.1.2",
39
+ "jsdom": "^30.1.3",
40
40
  "react": "^19.3.1",
41
41
  "react-dom": "^19.3.1",
42
42
  "tsd": "^0.33.0",
43
43
  "typescript": "~6.0.3",
44
44
  "vite": "^8.3.4",
45
45
  "vite-plugin-dts": "^5.1.2",
46
- "vitest": "~5.0.4"
46
+ "vitest": "~5.0.5"
47
47
  }
48
48
  }
@@ -6,7 +6,7 @@
6
6
  "description": "Internal React, Vite and TypeScript application template shipped with repoctl",
7
7
  "license": "MIT",
8
8
  "engines": {
9
- "node": ">=22.13.0"
9
+ "node": "^22.23.4 || ^24.22.1 || >=26.12.1"
10
10
  },
11
11
  "scripts": {
12
12
  "dev": "vite",
@@ -28,9 +28,9 @@
28
28
  "@types/react": "^19.3.0",
29
29
  "@types/react-dom": "^19.3.0",
30
30
  "@vitejs/plugin-react": "^6.1.2",
31
- "jsdom": "^30.1.2",
31
+ "jsdom": "^30.1.3",
32
32
  "typescript": "~6.0.3",
33
33
  "vite": "^8.3.4",
34
- "vitest": "~5.0.4"
34
+ "vitest": "~5.0.5"
35
35
  }
36
36
  }
@@ -31,7 +31,7 @@
31
31
  "dist"
32
32
  ],
33
33
  "engines": {
34
- "node": ">=22.13.0"
34
+ "node": "^22.23.4 || ^24.22.1 || >=26.12.1"
35
35
  },
36
36
  "scripts": {
37
37
  "dev": "pnpm cf-typegen && wrangler dev",
@@ -43,7 +43,7 @@
43
43
  ],
44
44
  "publishConfig": {},
45
45
  "engines": {
46
- "node": ">=22.13.0"
46
+ "node": "^22.23.4 || ^24.22.1 || >=26.12.1"
47
47
  },
48
48
  "scripts": {
49
49
  "dev": "tsdown -w",
@@ -22,7 +22,7 @@
22
22
  "monorepo"
23
23
  ],
24
24
  "engines": {
25
- "node": ">=22.13.0"
25
+ "node": "^22.23.4 || ^24.22.1 || >=26.12.1"
26
26
  },
27
27
  "scripts": {
28
28
  "dev": "vitepress dev",
@@ -44,7 +44,7 @@
44
44
  "tailwindcss": "^4.3.3",
45
45
  "vitepress": "2.0.0-alpha.20",
46
46
  "vitepress-plugin-llms": "^1.14.0",
47
- "vitest": "~5.0.4",
47
+ "vitest": "~5.0.5",
48
48
  "vue-tsc": "^3.3.13",
49
49
  "wrangler": "^4.135.0"
50
50
  }
@@ -10,7 +10,7 @@ repo tooling devcontainer --apply ../devcontainer-plan.json
10
10
 
11
11
  Review the JSON plan before applying it. Four files are proposed under the root `.devcontainer`: `devcontainer.json`, `Dockerfile`, `setup.mjs` and `README.md`. Existing custom files and an alternate root `.devcontainer.json` block application and are preserved. JSON contains per-file hashes and unified diffs; replaying a fully applied plan is a no-op. Input or target changes require a fresh preview. `--out` creates a new plan file and refuses to overwrite one.
12
12
 
13
- The preset chooses the first pinned Node version compatible with root `engines.node`: `24.21.0`, then `22.23.3`. Use `--node-version <exact-version>` for another stable Node version at least `22.13.0` that satisfies the declared range. The requested `node:<version>-bookworm` image must exist when Docker starts; preview does not contact a registry. Root `packageManager` must pin a stable pnpm version, optionally with a Corepack integrity hash.
13
+ The preset chooses the first pinned Node version compatible with root `engines.node`: `24.22.1`, then `22.23.4`, then `26.12.1`. Node.js 24.22.1 LTS is recommended. Use `--node-version <exact-version>` for another stable Node version that satisfies both the security baseline `^22.23.4 || ^24.22.1 || >=26.12.1` and root `engines.node`. The requested `node:<version>-bookworm` image must exist when Docker starts; preview does not contact a registry. Root `packageManager` must pin a stable pnpm version, optionally with a Corepack integrity hash.
14
14
 
15
15
  Open the generated workspace with the Dev Containers extension, or explicitly run the [Dev Containers CLI](https://github.com/devcontainers/cli). Container creation installs Corepack `0.36.0`, enables pnpm, checks its exact version and installs the workspace with engine enforcement. A present `pnpm-lock.yaml` is frozen; initial setup without a lockfile creates it. Corepack or installation failures stop setup.
16
16
 
@@ -25,4 +25,6 @@ The CLI works with pnpm workspaces and understands Turborepo task graphs. It doe
25
25
 
26
26
  ## Before you continue
27
27
 
28
- You need Node.js 22.13 or newer and pnpm available on your path. Run commands from the repository root so repoctl can read the workspace configuration.
28
+ You need Node.js matching `^22.23.4 || ^24.22.1 || >=26.12.1` (24.22.1 LTS recommended) and pnpm available on your path. Run commands from the repository root so repoctl can read the workspace configuration.
29
+
30
+ On Node.js 25+ or if `corepack` is unavailable, first run `npm install --global corepack@0.36.0`, then run `corepack enable`. See [installation prerequisites](./install.md#prerequisites).
@@ -7,6 +7,8 @@ description: Install repoctl in a pnpm monorepo, initialize managed defaults, an
7
7
 
8
8
  Install repoctl as a development dependency so every teammate and CI job uses the same version.
9
9
 
10
+ Prepare pnpm first using the [installation prerequisites](./install.md#prerequisites), including installing Corepack separately on Node.js 25+ or when the `corepack` command is unavailable.
11
+
10
12
  ```bash
11
13
  pnpm add -D repoctl
12
14
  pnpm exec repo init
@@ -4,10 +4,12 @@ This guide follows the order you would use when adding repoctl to a workspace.
4
4
 
5
5
  ## Prerequisites
6
6
 
7
- - Node.js 22.13 or newer.
7
+ - Node.js matching `^22.23.4 || ^24.22.1 || >=26.12.1` (24.22.1 LTS recommended).
8
8
  - pnpm. Corepack is recommended: `corepack enable`.
9
9
  - Git. `repo doctor` reads repository metadata and checks the commit workflow.
10
10
 
11
+ Node.js 25+ does not bundle Corepack. On those versions, or if `corepack` is unavailable, first run `npm install --global corepack@0.36.0`, then run `corepack enable`.
12
+
11
13
  ```bash
12
14
  node -v
13
15
  pnpm -v
@@ -8,7 +8,7 @@ Use this task when a workspace already has scripts, hooks, or configuration that
8
8
 
9
9
  - Run commands from the workspace root.
10
10
  - Commit or stash unrelated local changes.
11
- - Confirm that Node.js 22.13 or newer and pnpm are available.
11
+ - Confirm that Node.js matches `^22.23.4 || ^24.22.1 || >=26.12.1` (24.22.1 LTS recommended) and pnpm is available.
12
12
 
13
13
  ## Smallest Command
14
14
 
@@ -144,7 +144,7 @@ jobs:
144
144
  - uses: pnpm/action-setup@v6
145
145
  - uses: actions/setup-node@v7
146
146
  with:
147
- node-version: 22
147
+ node-version: 24.22.1
148
148
  cache: pnpm
149
149
  - run: pnpm install --frozen-lockfile
150
150
  - id: matrix
@@ -177,7 +177,7 @@ jobs:
177
177
  - uses: pnpm/action-setup@v6
178
178
  - uses: actions/setup-node@v7
179
179
  with:
180
- node-version: 22
180
+ node-version: 24.22.1
181
181
  cache: pnpm
182
182
  - run: pnpm install --frozen-lockfile
183
183
  - name: Run this job's planned stages
@@ -79,7 +79,7 @@ Choose `oidc-audit` when manually dispatching the managed Release workflow, or r
79
79
  pnpm exec repo release ci --mode oidc-audit
80
80
  ```
81
81
 
82
- The job needs `id-token: write`, Node 24 and the same repository, workflow file and environment as actual publishing. A different diagnostic workflow has a different identity. The managed workflow uses a separate audit job with only `contents: read` and `id-token: write`, disables install lifecycle scripts and skips GitHub App credentials and release quality checks. Only the repoctl source workspace builds its tooling closure; consumer workflows use the installed CLI. Custom workflows should use the same isolation and install with `pnpm install --frozen-lockfile --ignore-scripts`.
82
+ The job needs `id-token: write`, Node.js 24.22.1 and the same repository, workflow file and environment as actual publishing. A different diagnostic workflow has a different identity. The managed workflow uses a separate audit job with only `contents: read` and `id-token: write`, disables install lifecycle scripts and skips GitHub App credentials and release quality checks. Only the repoctl source workspace builds its tooling closure; consumer workflows use the installed CLI. Custom workflows should use the same isolation and install with `pnpm install --frozen-lockfile --ignore-scripts`.
83
83
 
84
84
  The command independently routes before release configuration and checks every versioned public child package against the official npm registry, including packages already published. It requests short-lived exchange credentials but never uploads packages, changes versions/intents, runs hooks, writes progress files, creates tags/Releases or saves tokens. `source-sha`, `dry-run`, `package` and `version` recovery inputs must be empty. JSON includes `schemaVersion: 1`, safe identity fields, each package's HTTP status/message and `ok`; failures complete the whole package report before exiting with code 1. `auditReleaseOidc({ cwd, env?, fetch? })` exposes the same report without printing it; callers must check `ok`.
85
85
 
@@ -199,7 +199,7 @@ Scheduled npm checks skip only when every current public package is already avai
199
199
 
200
200
  Nightly runs configured `qualityScripts` and `hooks.verify`, prepares real tarballs from committed source outside the checkout, and validates package exports, types and isolated installation. Versions include the base version, nightly marker, full commit SHA and build digest. After publication, a clean consumer installs the actual tags or URLs and checks identities, entrypoints and types. Formal versioning and post-publication hooks remain part of the normal release flow.
201
201
 
202
- The workflow uses Node 24, the workspace's pinned pnpm, checkout without persisted credentials and the existing publication concurrency group. Reports, tarballs and consumer diagnostics are retained for 14 days, including failed runs; the Actions summary contains the result and install commands.
202
+ The workflow uses Node.js 24.22.1, the workspace's pinned pnpm, checkout without persisted credentials and the existing publication concurrency group. Reports, tarballs and consumer diagnostics are retained for 14 days, including failed runs; the Actions summary contains the result and install commands.
203
203
 
204
204
  The workflow command is:
205
205
 
@@ -10,7 +10,7 @@ repo tooling devcontainer --apply ../devcontainer-plan.json
10
10
 
11
11
  先审阅 JSON,再应用计划。预设在根 `.devcontainer` 下生成 `devcontainer.json`、`Dockerfile`、`setup.mjs` 和 `README.md`。已有自定义文件或根 `.devcontainer.json` 会阻止应用并保留原状。JSON 提供逐文件 hash 和 unified diff;完整应用过的计划再次执行不会写入。输入或目标变化后应重新预览。`--out` 只创建新计划文件,不覆盖已有文件。
12
12
 
13
- 默认依次从 `24.21.0`、`22.23.3` 中选择满足根 `engines.node` 的固定版本。可用 `--node-version <精确版本>` 指定其他满足声明范围、至少为 `22.13.0` 的稳定 Node 版本。启动 Docker 时对应 `node:<版本>-bookworm` 镜像必须存在;预览不会访问 registry。根 `packageManager` 必须固定稳定 pnpm 版本,可以包含 Corepack integrity hash。
13
+ 默认依次从 `24.22.1`、`22.23.4`、`26.12.1` 中选择满足根 `engines.node` 的固定版本,推荐使用 Node.js 24.22.1 LTS。可用 `--node-version <精确版本>` 指定其他同时满足安全基线 `^22.23.4 || ^24.22.1 || >=26.12.1` 和根 `engines.node` 的稳定 Node 版本。启动 Docker 时对应 `node:<版本>-bookworm` 镜像必须存在;预览不会访问 registry。根 `packageManager` 必须固定稳定 pnpm 版本,可以包含 Corepack integrity hash。
14
14
 
15
15
  生成配置后,通过 Dev Containers 扩展打开工作区,或主动运行 [Dev Containers CLI](https://github.com/devcontainers/cli)。创建容器会安装 Corepack `0.36.0`、启用 pnpm、检查其精确版本,并强制校验 engines 后安装工作区。存在 `pnpm-lock.yaml` 时使用 frozen lockfile;首次没有 lockfile 时创建它。Corepack 或安装失败会终止初始化。
16
16
 
@@ -25,4 +25,6 @@ CLI 支持 pnpm workspace,并能理解 Turborepo 任务图,但不会替代
25
25
 
26
26
  ## 开始前确认
27
27
 
28
- 你需要 Node.js 22.13 或更新版本,并确保 pnpm 在 PATH 中。从仓库根目录执行命令,这样 repoctl 才能读取 workspace 配置。
28
+ 你需要满足 `^22.23.4 || ^24.22.1 || >=26.12.1` 的 Node.js(推荐 24.22.1 LTS),并确保 pnpm 在 PATH 中。从仓库根目录执行命令,这样 repoctl 才能读取 workspace 配置。
29
+
30
+ 使用 Node.js 25+ 或找不到 `corepack` 命令时,先运行 `npm install --global corepack@0.36.0`,再运行 `corepack enable`。详见[安装前提](./install.md)。
@@ -7,6 +7,8 @@ description: 在 pnpm monorepo 中安装 repoctl,初始化受管默认值并
7
7
 
8
8
  把 repoctl 安装为开发依赖,让成员和 CI 使用同一个版本。
9
9
 
10
+ 先按[安装前提](./install.md)准备 pnpm;使用 Node.js 25+ 或找不到 `corepack` 命令时,需要单独安装 Corepack。
11
+
10
12
  ```bash
11
13
  pnpm add -D repoctl
12
14
  pnpm exec repo init
@@ -4,10 +4,12 @@
4
4
 
5
5
  ## 准备环境
6
6
 
7
- - Node.js 22.13 或更高版本。
7
+ - 满足 `^22.23.4 || ^24.22.1 || >=26.12.1` 的 Node.js(推荐 24.22.1 LTS)。
8
8
  - pnpm。推荐通过 Corepack 启用:`corepack enable`。
9
9
  - Git。`repo doctor` 会读取仓库信息,用来补全 package metadata 和诊断提交链路。
10
10
 
11
+ Node.js 25+ 不再内置 Corepack。使用这些版本,或找不到 `corepack` 命令时,先运行 `npm install --global corepack@0.36.0`,再运行 `corepack enable`。
12
+
11
13
  ```bash
12
14
  node -v
13
15
  pnpm -v
@@ -8,7 +8,7 @@
8
8
 
9
9
  - 在 workspace 根目录执行命令。
10
10
  - 提交或暂存与本次接入无关的本地改动。
11
- - 确认 Node.js 22.13 或更新版本以及 pnpm 可用。
11
+ - 确认 Node.js 满足 `^22.23.4 || ^24.22.1 || >=26.12.1`(推荐 24.22.1 LTS),并且 pnpm 可用。
12
12
 
13
13
  ## 最小命令
14
14
 
@@ -172,7 +172,7 @@ jobs:
172
172
  - uses: pnpm/action-setup@v6
173
173
  - uses: actions/setup-node@v7
174
174
  with:
175
- node-version: 22
175
+ node-version: 24.22.1
176
176
  cache: pnpm
177
177
  - run: pnpm install --frozen-lockfile
178
178
  - id: matrix
@@ -205,7 +205,7 @@ jobs:
205
205
  - uses: pnpm/action-setup@v6
206
206
  - uses: actions/setup-node@v7
207
207
  with:
208
- node-version: 22
208
+ node-version: 24.22.1
209
209
  cache: pnpm
210
210
  - run: pnpm install --frozen-lockfile
211
211
  - name: Run this job's planned stages
@@ -147,7 +147,7 @@ repo release ci --mode prepare
147
147
  pnpm exec repo release ci --mode oidc-audit
148
148
  ```
149
149
 
150
- job 需要 `id-token: write` 和 Node 24,并使用实际发布时的仓库、工作流文件及 environment。另建诊断工作流会改变身份。受管工作流使用独立的核验 job,只授予 `contents: read` 和 `id-token: write`,关闭安装 lifecycle scripts,跳过 GitHub App 令牌及发布质量检查。只有 repoctl 源码仓库构建工具依赖闭包;消费方直接使用已安装的 CLI。自定义工作流也应隔离这些步骤,使用 `pnpm install --frozen-lockfile --ignore-scripts` 安装。
150
+ job 需要 `id-token: write` 和 Node.js 24.22.1,并使用实际发布时的仓库、工作流文件及 environment。另建诊断工作流会改变身份。受管工作流使用独立的核验 job,只授予 `contents: read` 和 `id-token: write`,关闭安装 lifecycle scripts,跳过 GitHub App 令牌及发布质量检查。只有 repoctl 源码仓库构建工具依赖闭包;消费方直接使用已安装的 CLI。自定义工作流也应隔离这些步骤,使用 `pnpm install --frozen-lockfile --ignore-scripts` 安装。
151
151
 
152
152
  命令在加载发布配置前独立路由,向官方 npm registry 逐个核验有版本号的公开子包,包含已发布的包。它只申请短时交换凭据,不上传包、不修改版本或 intent、不运行 hooks、不写进度文件、不创建 tag/Release,也不保存 token。`source-sha`、`dry-run`、`package` 和 `version` 恢复输入必须为空。JSON 包含 `schemaVersion: 1`、允许展示的身份字段、每包 HTTP 状态及 npm 错误信息、整体 `ok`;即使某包失败也会继续完成全部包报告,最后以退出码 1 失败。程序化 API `auditReleaseOidc({ cwd, env?, fetch? })` 返回同一报告而不打印;调用者须检查 `ok`。
153
153
 
@@ -205,7 +205,7 @@ npm 定时任务只有在全部公开包都对应当前提交和同一构建身
205
205
 
206
206
  nightly 执行配置的 `qualityScripts` 和 `hooks.verify`,在检出目录以外从已提交源码构建真实 tarball,并验证包导出、类型和隔离安装。版本包含基础版本、nightly 标记、完整提交 SHA 和构建摘要。发布后,干净消费者通过实际标签或 URL 安装,再核验身份、运行入口和类型。正式版本准备与发布后 hooks 仍属于普通发布流程。
207
207
 
208
- 工作流使用 Node 24、仓库锁定的 pnpm、不保留凭据的 checkout,并复用现有发布并发组。成功与失败均保留报告、tarball 和消费者诊断 14 天;Actions 摘要提供结果与安装命令。
208
+ 工作流使用 Node.js 24.22.1、仓库锁定的 pnpm、不保留凭据的 checkout,并复用现有发布并发组。成功与失败均保留报告、tarball 和消费者诊断 14 天;Actions 摘要提供结果与安装命令。
209
209
 
210
210
  工作流执行:
211
211
 
@@ -33,7 +33,7 @@
33
33
  "dist"
34
34
  ],
35
35
  "engines": {
36
- "node": ">=22.13.0"
36
+ "node": "^22.23.4 || ^24.22.1 || >=26.12.1"
37
37
  },
38
38
  "scripts": {
39
39
  "build": "vue-tsc -b && vite build",
@@ -62,7 +62,7 @@
62
62
  "@vitejs/plugin-vue": "^6.0.10",
63
63
  "@vue/test-utils": "^2.5.1",
64
64
  "@vue/tsconfig": "^0.9.1",
65
- "jsdom": "^30.1.2",
65
+ "jsdom": "^30.1.3",
66
66
  "vite": "^8.3.4",
67
67
  "vite-plugin-dts": "^5.1.2",
68
68
  "vue": "^3.5.44",