@icebreakers/monorepo-templates 2.3.0 → 2.3.2

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.
@@ -45,7 +45,7 @@ jobs:
45
45
  - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0
46
46
 
47
47
  - name: Setup Node.js environment
48
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
48
+ uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
49
49
  with:
50
50
  node-version: ${{ matrix.node-version }}
51
51
  cache: pnpm
@@ -31,7 +31,7 @@ jobs:
31
31
  persist-credentials: false
32
32
 
33
33
  - name: Setup Node.js environment
34
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
34
+ uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
35
35
  with:
36
36
  node-version: 24
37
37
 
@@ -91,11 +91,10 @@ jobs:
91
91
  - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0
92
92
 
93
93
  - name: Setup Node.js environment
94
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
94
+ uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
95
95
  with:
96
96
  node-version: 24
97
97
  cache: pnpm
98
- registry-url: https://registry.npmjs.org
99
98
 
100
99
  - name: Install npm with trusted publishing support
101
100
  run: npm install --global npm@11.16.0 --registry=https://registry.npmjs.org
@@ -103,7 +102,8 @@ jobs:
103
102
  - name: Install Dependencies
104
103
  run: pnpm install --frozen-lockfile
105
104
 
106
- - name: Run repo release CI
105
+ - name: Release plan
106
+ id: release-plan
107
107
  env:
108
108
  GITHUB_TOKEN: ${{ steps.app-token.outputs.token || secrets.REPOCTL_RELEASE_TOKEN || secrets.CHANGESETS_RELEASE_TOKEN || github.token }}
109
109
  REPO_RELEASE_MODE: ${{ inputs.mode || 'auto' }}
@@ -111,17 +111,78 @@ jobs:
111
111
  REPO_RELEASE_VERSION: ${{ inputs.version }}
112
112
  REPO_RELEASE_DRY_RUN: ${{ inputs.dry-run }}
113
113
  REPO_RELEASE_RECOVERY_SOURCE_SHA: ${{ inputs.source-sha }}
114
- run: pnpm exec repo release ci
114
+ run: pnpm exec repo release ci --stage plan
115
+
116
+ - name: Release verify
117
+ id: release-verify
118
+ if: ${{ steps.release-plan.outputs.run == 'true' }}
119
+ env:
120
+ GITHUB_TOKEN: ${{ steps.app-token.outputs.token || secrets.REPOCTL_RELEASE_TOKEN || secrets.CHANGESETS_RELEASE_TOKEN || github.token }}
121
+ REPO_RELEASE_MODE: ${{ inputs.mode || 'auto' }}
122
+ REPO_RELEASE_PACKAGE: ${{ inputs.package }}
123
+ REPO_RELEASE_VERSION: ${{ inputs.version }}
124
+ REPO_RELEASE_DRY_RUN: ${{ inputs.dry-run }}
125
+ REPO_RELEASE_RECOVERY_SOURCE_SHA: ${{ inputs.source-sha }}
126
+ run: pnpm exec repo release ci --stage verify
127
+
128
+ - name: Release prepare
129
+ id: release-prepare
130
+ if: ${{ steps.release-plan.outputs.run == 'true' }}
131
+ env:
132
+ GITHUB_TOKEN: ${{ steps.app-token.outputs.token || secrets.REPOCTL_RELEASE_TOKEN || secrets.CHANGESETS_RELEASE_TOKEN || github.token }}
133
+ REPO_RELEASE_MODE: ${{ inputs.mode || 'auto' }}
134
+ REPO_RELEASE_PACKAGE: ${{ inputs.package }}
135
+ REPO_RELEASE_VERSION: ${{ inputs.version }}
136
+ REPO_RELEASE_DRY_RUN: ${{ inputs.dry-run }}
137
+ REPO_RELEASE_RECOVERY_SOURCE_SHA: ${{ inputs.source-sha }}
138
+ run: pnpm exec repo release ci --stage prepare
139
+
140
+ - name: Release upload
141
+ id: release-upload
142
+ if: ${{ steps.release-prepare.outputs.publish == 'true' }}
143
+ env:
144
+ GITHUB_TOKEN: ${{ steps.app-token.outputs.token || secrets.REPOCTL_RELEASE_TOKEN || secrets.CHANGESETS_RELEASE_TOKEN || github.token }}
145
+ REPO_RELEASE_MODE: ${{ inputs.mode || 'auto' }}
146
+ REPO_RELEASE_PACKAGE: ${{ inputs.package }}
147
+ REPO_RELEASE_VERSION: ${{ inputs.version }}
148
+ REPO_RELEASE_DRY_RUN: ${{ inputs.dry-run }}
149
+ REPO_RELEASE_RECOVERY_SOURCE_SHA: ${{ inputs.source-sha }}
150
+ run: pnpm exec repo release ci --stage upload
151
+
152
+ - name: Release confirm
153
+ id: release-confirm
154
+ if: ${{ steps.release-prepare.outputs.publish == 'true' }}
155
+ env:
156
+ GITHUB_TOKEN: ${{ steps.app-token.outputs.token || secrets.REPOCTL_RELEASE_TOKEN || secrets.CHANGESETS_RELEASE_TOKEN || github.token }}
157
+ REPO_RELEASE_MODE: ${{ inputs.mode || 'auto' }}
158
+ REPO_RELEASE_PACKAGE: ${{ inputs.package }}
159
+ REPO_RELEASE_VERSION: ${{ inputs.version }}
160
+ REPO_RELEASE_DRY_RUN: ${{ inputs.dry-run }}
161
+ REPO_RELEASE_RECOVERY_SOURCE_SHA: ${{ inputs.source-sha }}
162
+ run: pnpm exec repo release ci --stage confirm
163
+
164
+ - name: Release finalize
165
+ id: release-finalize
166
+ if: ${{ steps.release-prepare.outputs.publish == 'true' }}
167
+ env:
168
+ GITHUB_TOKEN: ${{ steps.app-token.outputs.token || secrets.REPOCTL_RELEASE_TOKEN || secrets.CHANGESETS_RELEASE_TOKEN || github.token }}
169
+ REPO_RELEASE_MODE: ${{ inputs.mode || 'auto' }}
170
+ REPO_RELEASE_PACKAGE: ${{ inputs.package }}
171
+ REPO_RELEASE_VERSION: ${{ inputs.version }}
172
+ REPO_RELEASE_DRY_RUN: ${{ inputs.dry-run }}
173
+ REPO_RELEASE_RECOVERY_SOURCE_SHA: ${{ inputs.source-sha }}
174
+ run: pnpm exec repo release ci --stage finalize
115
175
 
116
176
  - name: Preserve npm publish progress
117
177
  if: ${{ always() }}
118
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
178
+ uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
119
179
  with:
120
180
  name: npm-publish-progress-${{ github.run_id }}-${{ github.run_attempt }}
121
181
  path: |
122
182
  pnpm-publish-summary.json
123
183
  repoctl-publish-progress.json
124
184
  repoctl-release-progress.json
185
+ repoctl-ci-progress.json
125
186
  if-no-files-found: ignore
126
187
  retention-days: 14
127
188
 
@@ -141,7 +202,7 @@ jobs:
141
202
  - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0
142
203
 
143
204
  - name: Setup Node.js environment
144
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
205
+ uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
145
206
  with:
146
207
  node-version: 24
147
208
  cache: pnpm
package/assets/gitignore CHANGED
@@ -48,3 +48,5 @@ config.ts.timestamp-*.mjs
48
48
  /repoctl-publish-progress.json.*.tmp
49
49
 
50
50
  /repoctl-release-progress.json
51
+
52
+ /repoctl-ci-progress.json
@@ -3,7 +3,7 @@
3
3
  "type": "module",
4
4
  "version": "0.0.0",
5
5
  "private": true,
6
- "packageManager": "pnpm@12.9.1",
6
+ "packageManager": "pnpm@12.10.1",
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",
@@ -50,7 +50,9 @@
50
50
  "postinstall": "pnpm run build",
51
51
  "commit": "commit",
52
52
  "commitlint": "commitlint --edit",
53
- "sync": "turbo run sync",
53
+ "sync": "pnpm sync:npmmirror",
54
+ "sync:npmmirror": "repo release sync-npmmirror --all",
55
+ "release:sync-npmmirror": "repo release sync-npmmirror --published",
54
56
  "inspector": "npx @eslint/config-inspector",
55
57
  "build:inspector": "pnpm build && npx @eslint/config-inspector build",
56
58
  "-------": "---------------",
@@ -6,6 +6,8 @@
6
6
  ":semanticCommitTypeAll(chore)"
7
7
  ],
8
8
  "rangeStrategy": "bump",
9
+ "minimumReleaseAge": "7 days",
10
+ "internalChecksFilter": "strict",
9
11
  "gitIgnoredAuthors": [
10
12
  "41898282+github-actions[bot]@users.noreply.github.com",
11
13
  "335527025+auto-upgrade-deps[bot]@users.noreply.github.com"
@@ -2,6 +2,11 @@ import type { MonorepoConfig } from 'repoctl'
2
2
 
3
3
  export default {
4
4
  commands: {
5
+ release: {
6
+ hooks: {
7
+ afterPublish: [{ script: 'release:sync-npmmirror', continueOnError: true, idempotent: true }],
8
+ },
9
+ },
5
10
  create: {
6
11
  defaultTemplate: 'tsdown',
7
12
  renameJson: false,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@icebreakers/monorepo-templates",
3
3
  "type": "module",
4
- "version": "2.3.0",
4
+ "version": "2.3.2",
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",
@@ -39,7 +39,7 @@
39
39
  "@faker-js/faker": "^10.6.0",
40
40
  "@tanstack/vue-query": "^5.104.1",
41
41
  "@tanstack/vue-query-devtools": "^6.3.1",
42
- "@tanstack/vue-table": "^9.2.6",
42
+ "@tanstack/vue-table": "^9.2.7",
43
43
  "@tanstack/vue-virtual": "^3.13.39",
44
44
  "@trpc/client": "^11.19.0",
45
45
  "clsx": "^2.1.1",
@@ -48,11 +48,11 @@
48
48
  "tailwind-variants": "^3.3.1",
49
49
  "vue": "^3.5.43",
50
50
  "vue-i18n": "^11.4.13",
51
- "vue-router": "^5.3.1"
51
+ "vue-router": "^5.4.0"
52
52
  },
53
53
  "devDependencies": {
54
54
  "@cloudflare/vite-plugin": "^1.56.0",
55
- "@hono/node-server": "^2.1.3",
55
+ "@hono/node-server": "^2.1.4",
56
56
  "@hono/trpc-server": "^0.4.2",
57
57
  "@tailwindcss/vite": "^4.3.3",
58
58
  "@trpc/server": "^11.19.0",
@@ -20,11 +20,11 @@
20
20
  },
21
21
  "dependencies": {
22
22
  "@cloudflare/nimbus-docs": "0.16.0",
23
- "astro": "7.3.6"
23
+ "astro": "7.3.7"
24
24
  },
25
25
  "devDependencies": {
26
26
  "@astrojs/check": "^0.9.10",
27
- "@astrojs/language-server": "2.17.1",
27
+ "@astrojs/language-server": "2.17.2",
28
28
  "astro-eslint-parser": "^3.2.0",
29
29
  "eslint-plugin-astro": "^3.2.1",
30
30
  "eslint-plugin-mdx": "^3.8.1",
@@ -64,7 +64,7 @@
64
64
  "types": "./dist/index.d.ts"
65
65
  },
66
66
  "devDependencies": {
67
- "@hono/node-server": "^2.1.3",
67
+ "@hono/node-server": "^2.1.4",
68
68
  "consola": "^3.4.2",
69
69
  "hono": "^4.13.13",
70
70
  "tsdown": "0.23.0",
@@ -8,12 +8,14 @@ Renovate keeps dependencies current through reviewable pull requests. It is most
8
8
  {
9
9
  "extends": ["config:recommended", "group:allNonMajor"],
10
10
  "rangeStrategy": "bump",
11
+ "minimumReleaseAge": "7 days",
12
+ "internalChecksFilter": "strict",
11
13
  "automerge": true,
12
14
  "automergeType": "pr"
13
15
  }
14
16
  ```
15
17
 
16
- The repository groups compatible minor and patch updates. Cloudflare Workers tooling is grouped separately because Wrangler and its Vite plugin have a deliberate compatibility relationship.
18
+ The repository groups compatible minor and patch updates. Cloudflare Workers tooling is grouped separately because Wrangler and its Vite plugin have a deliberate compatibility relationship. Renovate waits seven days after each version is published before it can create an update branch or pull request. `internalChecksFilter: "strict"` keeps the stability check blocking, so a pending `renovate/stability-days` check does not appear as a pull request yet. The timer is evaluated for each version independently; it does not require a package to stop publishing for seven days. Security updates follow the same seven-day wait so every automated update gets the same validation window.
17
19
 
18
20
  ## Review an update
19
21
 
@@ -52,25 +52,24 @@ npx renovate
52
52
 
53
53
  ```json
54
54
  {
55
- "extends": ["config:base"],
56
- "packageRules": [
57
- {
58
- "matchUpdateTypes": ["minor", "patch"],
59
- "automerge": true
60
- },
61
- {
62
- "matchUpdateTypes": ["major"],
63
- "automerge": false
64
- }
65
- ]
55
+ "extends": ["config:recommended", "group:allNonMajor"],
56
+ "rangeStrategy": "bump",
57
+ "minimumReleaseAge": "7 days",
58
+ "internalChecksFilter": "strict",
59
+ "automerge": true,
60
+ "automergeType": "pr"
66
61
  }
67
62
  ```
68
63
 
69
64
  解释:
70
65
 
71
- - 使用基础配置 `"extends": ["config:base"]`。
72
- - **minor/patch 更新** 自动合并。
73
- - **major 更新** 需要人工 review。
66
+ - 使用推荐配置,并将兼容的非 major 更新分组。
67
+ - `"rangeStrategy": "bump"` 让版本范围随升级一起更新。
68
+ - `"minimumReleaseAge": "7 days"` 要求每个新版本发布满 7 天后才进入升级候选。
69
+ - `"internalChecksFilter": "strict"` 让 `renovate/stability-days` 稳定性检查保持阻塞状态;检查通过前不会创建升级分支或 PR。
70
+ - `"automerge": true` 和 `"automergeType": "pr"` 允许通过检查的升级 PR 自动合并。
71
+
72
+ Renovate 按版本分别计时:它等待的是当前版本发布后的 7 天,而不是等待这个包连续 7 天没有新发布。安全更新也遵循相同的 7 天等待窗口,确保自动升级都经过一致的验证时间。
74
73
 
75
74
  ### 实际效果
76
75