From 4113b54c6cfaa914931c71ada8fe2781d594295e Mon Sep 17 00:00:00 2001 From: Jack Zhuang <277994282+os-zhuang@users.noreply.github.com> Date: Tue, 2 Jun 2026 13:59:03 +0800 Subject: [PATCH] fix(release): stop fixed-group major cascade from internal peerDependencies MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Internal @objectstack/* peerDependencies on packages in the changesets `fixed` group caused every minor changeset to escalate the whole 69-package group to a major (8.0.0): in a fixed group changesets rewrites peer ranges each release and treats a peer-range change as breaking. Required internal peers → dependencies; optional internal peers → devDependencies (still available for workspace tests, no longer a published peer edge). Verified: `changeset status` drops from 69 major (8.0.0) to 0 major (next release is correctly 7.6.0). Affected: cli, express, sveltekit, hono, nuxt, nextjs, nestjs, fastify, plugin-msw (peer→dep); plugin-dev, service-datasource, service-ai (optional peer→devDep). Co-Authored-By: Claude Opus 4.8 --- .changeset/fix-fixed-group-peer-major.md | 24 +++++++ packages/adapters/express/package.json | 4 +- packages/adapters/fastify/package.json | 4 +- packages/adapters/hono/package.json | 4 +- packages/adapters/nestjs/package.json | 6 +- packages/adapters/nextjs/package.json | 4 +- packages/adapters/nuxt/package.json | 4 +- packages/adapters/sveltekit/package.json | 4 +- packages/cli/package.json | 5 +- packages/plugins/plugin-dev/package.json | 44 +----------- packages/plugins/plugin-msw/package.json | 6 +- packages/services/service-ai/package.json | 8 +-- .../services/service-datasource/package.json | 13 +--- pnpm-lock.yaml | 72 ++++++++++--------- 14 files changed, 93 insertions(+), 109 deletions(-) create mode 100644 .changeset/fix-fixed-group-peer-major.md diff --git a/.changeset/fix-fixed-group-peer-major.md b/.changeset/fix-fixed-group-peer-major.md new file mode 100644 index 000000000..aabc12906 --- /dev/null +++ b/.changeset/fix-fixed-group-peer-major.md @@ -0,0 +1,24 @@ +--- +"@objectstack/cli": patch +"@objectstack/express": patch +"@objectstack/sveltekit": patch +"@objectstack/hono": patch +"@objectstack/nuxt": patch +"@objectstack/nextjs": patch +"@objectstack/nestjs": patch +"@objectstack/fastify": patch +"@objectstack/plugin-msw": patch +"@objectstack/plugin-dev": patch +"@objectstack/service-datasource": patch +"@objectstack/service-ai": patch +--- + +fix(release): stop the fixed-group major cascade caused by internal `@objectstack/*` peerDependencies. + +These packages declared workspace peerDependencies on other framework packages +in the changesets `fixed` group. Inside a fixed group, changesets rewrites those +peer ranges on every release and treats a peer-range change as breaking → major, +which cascaded to **all 69 packages → 8.0.0** on *any* minor changeset. Required +internal peers are now regular `dependencies`; optional ones move to +`devDependencies` (kept for in-workspace tests, no longer a published peer edge). +Releases now bump correctly (patch/minor) instead of a spurious major. diff --git a/packages/adapters/express/package.json b/packages/adapters/express/package.json index d9b761b77..7e0a68be5 100644 --- a/packages/adapters/express/package.json +++ b/packages/adapters/express/package.json @@ -17,7 +17,6 @@ "test:watch": "vitest" }, "peerDependencies": { - "@objectstack/runtime": "workspace:^", "express": "^5.1.0" }, "devDependencies": { @@ -52,5 +51,8 @@ ], "engines": { "node": ">=18.0.0" + }, + "dependencies": { + "@objectstack/runtime": "workspace:^" } } diff --git a/packages/adapters/fastify/package.json b/packages/adapters/fastify/package.json index 5519e8356..933fa5f97 100644 --- a/packages/adapters/fastify/package.json +++ b/packages/adapters/fastify/package.json @@ -17,7 +17,6 @@ "test:watch": "vitest" }, "peerDependencies": { - "@objectstack/runtime": "workspace:^", "fastify": "^5.8.5" }, "devDependencies": { @@ -51,5 +50,8 @@ ], "engines": { "node": ">=18.0.0" + }, + "dependencies": { + "@objectstack/runtime": "workspace:^" } } diff --git a/packages/adapters/hono/package.json b/packages/adapters/hono/package.json index 98c4020aa..5b33fa12d 100644 --- a/packages/adapters/hono/package.json +++ b/packages/adapters/hono/package.json @@ -18,10 +18,10 @@ }, "dependencies": { "@objectstack/plugin-hono-server": "workspace:*", - "@objectstack/types": "workspace:*" + "@objectstack/types": "workspace:*", + "@objectstack/runtime": "workspace:^" }, "peerDependencies": { - "@objectstack/runtime": "workspace:^", "hono": "^4.12.8" }, "devDependencies": { diff --git a/packages/adapters/nestjs/package.json b/packages/adapters/nestjs/package.json index b66d1d081..8329bc013 100644 --- a/packages/adapters/nestjs/package.json +++ b/packages/adapters/nestjs/package.json @@ -11,8 +11,7 @@ }, "peerDependencies": { "@nestjs/common": "^11.1.19", - "@nestjs/core": "^11.1.19", - "@objectstack/runtime": "workspace:^" + "@nestjs/core": "^11.1.19" }, "devDependencies": { "@nestjs/common": "^11.1.24", @@ -45,5 +44,8 @@ ], "engines": { "node": ">=18.0.0" + }, + "dependencies": { + "@objectstack/runtime": "workspace:^" } } diff --git a/packages/adapters/nextjs/package.json b/packages/adapters/nextjs/package.json index dadc98e0a..24cf1a70d 100644 --- a/packages/adapters/nextjs/package.json +++ b/packages/adapters/nextjs/package.json @@ -10,7 +10,6 @@ "test:watch": "vitest" }, "peerDependencies": { - "@objectstack/runtime": "workspace:^", "next": "^16.2.4", "react": "^19.2.5", "react-dom": "^19.2.5" @@ -48,5 +47,8 @@ ], "engines": { "node": ">=18.0.0" + }, + "dependencies": { + "@objectstack/runtime": "workspace:^" } } diff --git a/packages/adapters/nuxt/package.json b/packages/adapters/nuxt/package.json index 81ab72fd5..c99f47742 100644 --- a/packages/adapters/nuxt/package.json +++ b/packages/adapters/nuxt/package.json @@ -17,7 +17,6 @@ "test:watch": "vitest" }, "peerDependencies": { - "@objectstack/runtime": "workspace:^", "h3": "^1.15.11" }, "devDependencies": { @@ -51,5 +50,8 @@ ], "engines": { "node": ">=18.0.0" + }, + "dependencies": { + "@objectstack/runtime": "workspace:^" } } diff --git a/packages/adapters/sveltekit/package.json b/packages/adapters/sveltekit/package.json index dcacf7e24..723d0619b 100644 --- a/packages/adapters/sveltekit/package.json +++ b/packages/adapters/sveltekit/package.json @@ -17,7 +17,6 @@ "test:watch": "vitest" }, "peerDependencies": { - "@objectstack/runtime": "workspace:^", "@sveltejs/kit": "^2.58.0" }, "devDependencies": { @@ -50,5 +49,8 @@ ], "engines": { "node": ">=18.0.0" + }, + "dependencies": { + "@objectstack/runtime": "workspace:^" } } diff --git a/packages/cli/package.json b/packages/cli/package.json index 0ba35b794..dfa03203b 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -43,7 +43,7 @@ "@objectstack/account": "workspace:*", "@objectstack/client": "workspace:*", "@objectstack/console": "workspace:*", - "@objectstack/core": "workspace:*", + "@objectstack/core": "workspace:^", "@objectstack/driver-memory": "workspace:^", "@objectstack/driver-mongodb": "workspace:^", "@objectstack/driver-sql": "workspace:^", @@ -93,9 +93,6 @@ "yaml": "^2.9.0", "zod": "^4.4.3" }, - "peerDependencies": { - "@objectstack/core": "workspace:^" - }, "devDependencies": { "@oclif/plugin-help": "^6.2.50", "@oclif/plugin-plugins": "^5.4.72", diff --git a/packages/plugins/plugin-dev/package.json b/packages/plugins/plugin-dev/package.json index 293cbdded..a56aad040 100644 --- a/packages/plugins/plugin-dev/package.json +++ b/packages/plugins/plugin-dev/package.json @@ -21,7 +21,7 @@ "@objectstack/spec": "workspace:*", "@objectstack/types": "workspace:*" }, - "peerDependencies": { + "devDependencies": { "@objectstack/driver-memory": "workspace:^", "@objectstack/objectql": "workspace:^", "@objectstack/plugin-auth": "workspace:^", @@ -30,47 +30,7 @@ "@objectstack/plugin-security": "workspace:^", "@objectstack/rest": "workspace:^", "@objectstack/runtime": "workspace:^", - "@objectstack/service-i18n": "workspace:^" - }, - "peerDependenciesMeta": { - "@objectstack/driver-memory": { - "optional": true - }, - "@objectstack/objectql": { - "optional": true - }, - "@objectstack/runtime": { - "optional": true - }, - "@objectstack/plugin-auth": { - "optional": true - }, - "@objectstack/plugin-hono-server": { - "optional": true - }, - "@objectstack/plugin-org-scoping": { - "optional": true - }, - "@objectstack/plugin-security": { - "optional": true - }, - "@objectstack/rest": { - "optional": true - }, - "@objectstack/service-i18n": { - "optional": true - } - }, - "devDependencies": { - "@objectstack/driver-memory": "workspace:*", - "@objectstack/objectql": "workspace:*", - "@objectstack/plugin-auth": "workspace:*", - "@objectstack/plugin-hono-server": "workspace:*", - "@objectstack/plugin-org-scoping": "workspace:*", - "@objectstack/plugin-security": "workspace:*", - "@objectstack/rest": "workspace:*", - "@objectstack/runtime": "workspace:*", - "@objectstack/service-i18n": "workspace:*", + "@objectstack/service-i18n": "workspace:^", "@types/node": "^25.9.1", "typescript": "^6.0.3", "vitest": "^4.1.8" diff --git a/packages/plugins/plugin-msw/package.json b/packages/plugins/plugin-msw/package.json index 40bf1cde8..807a2f683 100644 --- a/packages/plugins/plugin-msw/package.json +++ b/packages/plugins/plugin-msw/package.json @@ -16,15 +16,13 @@ "build": "tsup --config ../../../tsup.config.ts", "test": "vitest run" }, - "peerDependencies": { - "@objectstack/runtime": "workspace:^" - }, "dependencies": { "@objectstack/core": "workspace:*", "@objectstack/objectql": "workspace:*", "@objectstack/spec": "workspace:*", "@objectstack/types": "workspace:*", - "msw": "^2.14.6" + "msw": "^2.14.6", + "@objectstack/runtime": "workspace:^" }, "devDependencies": { "@objectstack/runtime": "workspace:*", diff --git a/packages/services/service-ai/package.json b/packages/services/service-ai/package.json index fb6c18a56..bb46eaa99 100644 --- a/packages/services/service-ai/package.json +++ b/packages/services/service-ai/package.json @@ -30,8 +30,7 @@ "@ai-sdk/anthropic": "^3.0.0", "@ai-sdk/gateway": "^3.0.0", "@ai-sdk/google": "^3.0.0", - "@ai-sdk/openai": "^3.0.0", - "@objectstack/embedder-openai": "workspace:^" + "@ai-sdk/openai": "^3.0.0" }, "peerDependenciesMeta": { "@ai-sdk/anthropic": { @@ -45,13 +44,10 @@ }, "@ai-sdk/openai": { "optional": true - }, - "@objectstack/embedder-openai": { - "optional": true } }, "devDependencies": { - "@objectstack/embedder-openai": "workspace:*", + "@objectstack/embedder-openai": "workspace:^", "@objectstack/platform-objects": "workspace:*", "@types/node": "^25.9.1", "typescript": "^6.0.3", diff --git a/packages/services/service-datasource/package.json b/packages/services/service-datasource/package.json index ff3978aef..93fe274ad 100644 --- a/packages/services/service-datasource/package.json +++ b/packages/services/service-datasource/package.json @@ -29,16 +29,6 @@ "@objectstack/core": "workspace:*", "@objectstack/spec": "workspace:*" }, - "peerDependencies": { - "@objectstack/driver-memory": "workspace:*", - "@objectstack/driver-mongodb": "workspace:*", - "@objectstack/driver-sql": "workspace:*" - }, - "peerDependenciesMeta": { - "@objectstack/driver-sql": { "optional": true }, - "@objectstack/driver-mongodb": { "optional": true }, - "@objectstack/driver-memory": { "optional": true } - }, "devDependencies": { "@objectstack/driver-memory": "workspace:*", "@objectstack/driver-sql": "workspace:*", @@ -46,7 +36,8 @@ "@types/node": "^25.9.1", "tsup": "^8.5.1", "typescript": "^6.0.3", - "vitest": "^4.1.8" + "vitest": "^4.1.8", + "@objectstack/driver-mongodb": "workspace:*" }, "keywords": [ "objectstack", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b1371c65b..0209fee86 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -318,10 +318,11 @@ importers: version: 6.0.3 packages/adapters/express: - devDependencies: + dependencies: '@objectstack/runtime': - specifier: workspace:* + specifier: workspace:^ version: link:../../runtime + devDependencies: '@types/express': specifier: ^5.0.6 version: 5.0.6 @@ -336,10 +337,11 @@ importers: version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@25.9.1)(@vitest/coverage-v8@4.1.8)(happy-dom@20.9.0)(msw@2.14.6(@types/node@25.9.1)(typescript@6.0.3))(vite@8.0.16(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)) packages/adapters/fastify: - devDependencies: + dependencies: '@objectstack/runtime': - specifier: workspace:* + specifier: workspace:^ version: link:../../runtime + devDependencies: fastify: specifier: ^5.8.5 version: 5.8.5 @@ -355,13 +357,13 @@ importers: '@objectstack/plugin-hono-server': specifier: workspace:* version: link:../../plugins/plugin-hono-server + '@objectstack/runtime': + specifier: workspace:^ + version: link:../../runtime '@objectstack/types': specifier: workspace:* version: link:../../types devDependencies: - '@objectstack/runtime': - specifier: workspace:* - version: link:../../runtime hono: specifier: ^4.12.23 version: 4.12.23 @@ -373,6 +375,10 @@ importers: version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@25.9.1)(@vitest/coverage-v8@4.1.8)(happy-dom@20.9.0)(msw@2.14.6(@types/node@25.9.1)(typescript@6.0.3))(vite@8.0.16(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)) packages/adapters/nestjs: + dependencies: + '@objectstack/runtime': + specifier: workspace:^ + version: link:../../runtime devDependencies: '@nestjs/common': specifier: ^11.1.24 @@ -380,9 +386,6 @@ importers: '@nestjs/core': specifier: ^11.1.24 version: 11.1.24(@nestjs/common@11.1.24(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2) - '@objectstack/runtime': - specifier: workspace:* - version: link:../../runtime typescript: specifier: ^6.0.3 version: 6.0.3 @@ -391,10 +394,11 @@ importers: version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@25.9.1)(@vitest/coverage-v8@4.1.8)(happy-dom@20.9.0)(msw@2.14.6(@types/node@25.9.1)(typescript@6.0.3))(vite@8.0.16(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)) packages/adapters/nextjs: - devDependencies: + dependencies: '@objectstack/runtime': - specifier: workspace:* + specifier: workspace:^ version: link:../../runtime + devDependencies: next: specifier: ^16.2.6 version: 16.2.6(@opentelemetry/api@1.9.1)(@playwright/test@1.60.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) @@ -412,10 +416,11 @@ importers: version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@25.9.1)(@vitest/coverage-v8@4.1.8)(happy-dom@20.9.0)(msw@2.14.6(@types/node@25.9.1)(typescript@6.0.3))(vite@8.0.16(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)) packages/adapters/nuxt: - devDependencies: + dependencies: '@objectstack/runtime': - specifier: workspace:* + specifier: workspace:^ version: link:../../runtime + devDependencies: h3: specifier: ^1.15.11 version: 1.15.11 @@ -427,10 +432,11 @@ importers: version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@25.9.1)(@vitest/coverage-v8@4.1.8)(happy-dom@20.9.0)(msw@2.14.6(@types/node@25.9.1)(typescript@6.0.3))(vite@8.0.16(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)) packages/adapters/sveltekit: - devDependencies: + dependencies: '@objectstack/runtime': - specifier: workspace:* + specifier: workspace:^ version: link:../../runtime + devDependencies: '@sveltejs/kit': specifier: ^2.61.1 version: 2.61.1(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.55.3)(vite@8.0.16(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(svelte@5.55.3)(typescript@6.0.3)(vite@8.0.16(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)) @@ -456,7 +462,7 @@ importers: specifier: workspace:* version: link:../console '@objectstack/core': - specifier: workspace:* + specifier: workspace:^ version: link:../core '@objectstack/driver-memory': specifier: workspace:^ @@ -1281,31 +1287,31 @@ importers: version: link:../../types devDependencies: '@objectstack/driver-memory': - specifier: workspace:* + specifier: workspace:^ version: link:../driver-memory '@objectstack/objectql': - specifier: workspace:* + specifier: workspace:^ version: link:../../objectql '@objectstack/plugin-auth': - specifier: workspace:* + specifier: workspace:^ version: link:../plugin-auth '@objectstack/plugin-hono-server': - specifier: workspace:* + specifier: workspace:^ version: link:../plugin-hono-server '@objectstack/plugin-org-scoping': - specifier: workspace:* + specifier: workspace:^ version: link:../plugin-org-scoping '@objectstack/plugin-security': - specifier: workspace:* + specifier: workspace:^ version: link:../plugin-security '@objectstack/rest': - specifier: workspace:* + specifier: workspace:^ version: link:../../rest '@objectstack/runtime': - specifier: workspace:* + specifier: workspace:^ version: link:../../runtime '@objectstack/service-i18n': - specifier: workspace:* + specifier: workspace:^ version: link:../../services/service-i18n '@types/node': specifier: ^25.9.1 @@ -1403,6 +1409,9 @@ importers: '@objectstack/objectql': specifier: workspace:* version: link:../../objectql + '@objectstack/runtime': + specifier: workspace:^ + version: link:../../runtime '@objectstack/spec': specifier: workspace:* version: link:../../spec @@ -1413,9 +1422,6 @@ importers: specifier: ^2.14.6 version: 2.14.6(@types/node@25.9.1)(typescript@6.0.3) devDependencies: - '@objectstack/runtime': - specifier: workspace:* - version: link:../../runtime '@types/node': specifier: ^25.9.1 version: 25.9.1 @@ -1704,7 +1710,7 @@ importers: version: 4.4.3 devDependencies: '@objectstack/embedder-openai': - specifier: workspace:* + specifier: workspace:^ version: link:../../plugins/embedder-openai '@objectstack/platform-objects': specifier: workspace:* @@ -1831,9 +1837,6 @@ importers: '@objectstack/core': specifier: workspace:* version: link:../../core - '@objectstack/driver-mongodb': - specifier: workspace:* - version: link:../../plugins/driver-mongodb '@objectstack/spec': specifier: workspace:* version: link:../../spec @@ -1841,6 +1844,9 @@ importers: '@objectstack/driver-memory': specifier: workspace:* version: link:../../plugins/driver-memory + '@objectstack/driver-mongodb': + specifier: workspace:* + version: link:../../plugins/driver-mongodb '@objectstack/driver-sql': specifier: workspace:* version: link:../../plugins/driver-sql