From a224e3111eed2f9213e3cf7190a2bb74a2b9b7ab Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 9 Sep 2026 08:37:05 +0000 Subject: [PATCH] chore: release 2026-09-09.2 --- .../{ => pre}/app-server-dependencies.md | 0 .../{ => pre}/catalog-shared-ui-packages.md | 0 .../{ => pre}/plugin-client-dependencies.md | 0 .../server-deployment-prune-and-retarget.md | 0 .../{ => pre}/single-peer-declaration.md | 0 .../app-plugin-cli-example/CHANGELOG.md | 10 ++++ .../app-plugin-cli-example/package.json | 2 +- .../app-plugin-database-example/CHANGELOG.md | 10 ++++ .../app-plugin-database-example/package.json | 2 +- .../CHANGELOG.md | 13 +++++ .../package.json | 2 +- .../app-plugin-queue-example/CHANGELOG.md | 15 ++++++ .../app-plugin-queue-example/package.json | 2 +- .../app-plugin-realtime-example/CHANGELOG.md | 10 ++++ .../app-plugin-realtime-example/package.json | 2 +- .../app-plugin-registry-example/CHANGELOG.md | 24 +++++++++ .../app-plugin-registry-example/package.json | 2 +- .../CHANGELOG.md | 29 +++++++++++ .../package.json | 2 +- .../app-plugin-routes-example/CHANGELOG.md | 29 +++++++++++ .../app-plugin-routes-example/package.json | 2 +- .../CHANGELOG.md | 10 ++++ .../package.json | 2 +- .../app-plugin-skills-example/CHANGELOG.md | 15 ++++++ .../app-plugin-skills-example/package.json | 2 +- .../app-plugin-ai-employee/CHANGELOG.md | 29 +++++++++++ .../app-plugin-ai-employee/package.json | 2 +- .../app-plugin-ai-knowledge-base/CHANGELOG.md | 30 +++++++++++ .../app-plugin-ai-knowledge-base/package.json | 2 +- .../app-plugin-authentication/CHANGELOG.md | 24 +++++++++ .../app-plugin-authentication/package.json | 2 +- .../app-plugin-authorization/CHANGELOG.md | 29 +++++++++++ .../app-plugin-authorization/package.json | 2 +- .../app-plugin-file-repository/CHANGELOG.md | 10 ++++ .../app-plugin-file-repository/package.json | 2 +- packages/plugins/app-plugin-file/CHANGELOG.md | 30 +++++++++++ packages/plugins/app-plugin-file/package.json | 2 +- packages/plugins/app-plugin-hub/CHANGELOG.md | 30 +++++++++++ packages/plugins/app-plugin-hub/package.json | 2 +- packages/plugins/app-plugin-i18n/CHANGELOG.md | 16 ++++++ packages/plugins/app-plugin-i18n/package.json | 2 +- .../plugins/app-plugin-install/CHANGELOG.md | 29 +++++++++++ .../plugins/app-plugin-install/package.json | 2 +- .../CHANGELOG.md | 30 +++++++++++ .../package.json | 2 +- .../CHANGELOG.md | 24 +++++++++ .../package.json | 2 +- .../CHANGELOG.md | 15 ++++++ .../package.json | 2 +- .../app-plugin-notification/CHANGELOG.md | 30 +++++++++++ .../app-plugin-notification/package.json | 2 +- .../plugins/app-plugin-workflow/CHANGELOG.md | 29 +++++++++++ .../plugins/app-plugin-workflow/package.json | 2 +- .../app-template-default/CHANGELOG.md | 41 +++++++++++++++ .../app-template-default/package.json | 4 +- .../app-template-examples/CHANGELOG.md | 50 +++++++++++++++++++ .../app-template-examples/package.json | 4 +- .../templates/app-template-hub/CHANGELOG.md | 46 +++++++++++++++++ .../templates/app-template-hub/package.json | 4 +- packages/tools/create-plugin/CHANGELOG.md | 24 +++++++++ packages/tools/create-plugin/package.json | 2 +- 61 files changed, 712 insertions(+), 31 deletions(-) rename .changeset/{ => pre}/app-server-dependencies.md (100%) rename .changeset/{ => pre}/catalog-shared-ui-packages.md (100%) rename .changeset/{ => pre}/plugin-client-dependencies.md (100%) rename .changeset/{ => pre}/server-deployment-prune-and-retarget.md (100%) rename .changeset/{ => pre}/single-peer-declaration.md (100%) diff --git a/.changeset/app-server-dependencies.md b/.changeset/pre/app-server-dependencies.md similarity index 100% rename from .changeset/app-server-dependencies.md rename to .changeset/pre/app-server-dependencies.md diff --git a/.changeset/catalog-shared-ui-packages.md b/.changeset/pre/catalog-shared-ui-packages.md similarity index 100% rename from .changeset/catalog-shared-ui-packages.md rename to .changeset/pre/catalog-shared-ui-packages.md diff --git a/.changeset/plugin-client-dependencies.md b/.changeset/pre/plugin-client-dependencies.md similarity index 100% rename from .changeset/plugin-client-dependencies.md rename to .changeset/pre/plugin-client-dependencies.md diff --git a/.changeset/server-deployment-prune-and-retarget.md b/.changeset/pre/server-deployment-prune-and-retarget.md similarity index 100% rename from .changeset/server-deployment-prune-and-retarget.md rename to .changeset/pre/server-deployment-prune-and-retarget.md diff --git a/.changeset/single-peer-declaration.md b/.changeset/pre/single-peer-declaration.md similarity index 100% rename from .changeset/single-peer-declaration.md rename to .changeset/pre/single-peer-declaration.md diff --git a/packages/examples/app-plugin-cli-example/CHANGELOG.md b/packages/examples/app-plugin-cli-example/CHANGELOG.md index b5137981d2d..7b8e5979ad7 100644 --- a/packages/examples/app-plugin-cli-example/CHANGELOG.md +++ b/packages/examples/app-plugin-cli-example/CHANGELOG.md @@ -1,5 +1,15 @@ # @nocobase/app-plugin-cli-example +## 0.1.0-beta.1 + +### Patch Changes + +- 52d1107: Declare each peer dependency once, dropping the devDependency that used to accompany it. + + The pairing was required on the grounds that a peer range is wide enough for development to drift off this repository's copy. It is not: pnpm installs a peer and links it into the plugin's own `node_modules`, resolving `workspace:^` to the same package `workspace:*` would. A plugin with the devDependency removed still links, typechecks, builds, and tests against it — verified against a clean install with every plugin's `node_modules` deleted first. + + What remained was a second declaration that changed nothing and had to be kept in step with the first. `pnpm peers:check` no longer asks for it, and `create-plugin` no longer emits it. + ## 0.1.0-beta.0 ### Minor Changes diff --git a/packages/examples/app-plugin-cli-example/package.json b/packages/examples/app-plugin-cli-example/package.json index 2c51ea6509b..ce95ebd8a89 100644 --- a/packages/examples/app-plugin-cli-example/package.json +++ b/packages/examples/app-plugin-cli-example/package.json @@ -2,7 +2,7 @@ "name": "@nocobase/app-plugin-cli-example", "displayName": "CLI Example App Plugin", "description": "Example app plugin that contributes commands to the app's nocobase CLI.", - "version": "0.1.0-beta.0", + "version": "0.1.0-beta.1", "type": "module", "prettier": "@nocobase/dev-config/prettier", "engines": { diff --git a/packages/examples/app-plugin-database-example/CHANGELOG.md b/packages/examples/app-plugin-database-example/CHANGELOG.md index 62854488fbe..c8f878c4091 100644 --- a/packages/examples/app-plugin-database-example/CHANGELOG.md +++ b/packages/examples/app-plugin-database-example/CHANGELOG.md @@ -1,5 +1,15 @@ # @nocobase/app-plugin-database-example +## 0.1.0-beta.5 + +### Patch Changes + +- 52d1107: Declare each peer dependency once, dropping the devDependency that used to accompany it. + + The pairing was required on the grounds that a peer range is wide enough for development to drift off this repository's copy. It is not: pnpm installs a peer and links it into the plugin's own `node_modules`, resolving `workspace:^` to the same package `workspace:*` would. A plugin with the devDependency removed still links, typechecks, builds, and tests against it — verified against a clean install with every plugin's `node_modules` deleted first. + + What remained was a second declaration that changed nothing and had to be kept in step with the first. `pnpm peers:check` no longer asks for it, and `create-plugin` no longer emits it. + ## 0.1.0-beta.4 ### Minor Changes diff --git a/packages/examples/app-plugin-database-example/package.json b/packages/examples/app-plugin-database-example/package.json index 126d2291dbc..42987e04e23 100644 --- a/packages/examples/app-plugin-database-example/package.json +++ b/packages/examples/app-plugin-database-example/package.json @@ -2,7 +2,7 @@ "name": "@nocobase/app-plugin-database-example", "displayName": "Database Example App Plugin", "description": "Example app plugin with a migration and seed.", - "version": "0.1.0-beta.4", + "version": "0.1.0-beta.5", "type": "module", "prettier": "@nocobase/dev-config/prettier", "engines": { diff --git a/packages/examples/app-plugin-file-repository-example/CHANGELOG.md b/packages/examples/app-plugin-file-repository-example/CHANGELOG.md index 05b4ae25ffd..4edd712db20 100644 --- a/packages/examples/app-plugin-file-repository-example/CHANGELOG.md +++ b/packages/examples/app-plugin-file-repository-example/CHANGELOG.md @@ -1,5 +1,18 @@ # @nocobase/app-plugin-file-repository-example +## 0.0.2-beta.1 + +### Patch Changes + +- 52d1107: Declare each peer dependency once, dropping the devDependency that used to accompany it. + + The pairing was required on the grounds that a peer range is wide enough for development to drift off this repository's copy. It is not: pnpm installs a peer and links it into the plugin's own `node_modules`, resolving `workspace:^` to the same package `workspace:*` would. A plugin with the devDependency removed still links, typechecks, builds, and tests against it — verified against a clean install with every plugin's `node_modules` deleted first. + + What remained was a second declaration that changed nothing and had to be kept in step with the first. `pnpm peers:check` no longer asks for it, and `create-plugin` no longer emits it. + +- Updated dependencies [52d1107] + - @nocobase/app-plugin-file-repository@0.0.2-beta.1 + ## 0.0.2-beta.0 ### Patch Changes diff --git a/packages/examples/app-plugin-file-repository-example/package.json b/packages/examples/app-plugin-file-repository-example/package.json index a77d40c523f..0669d1db65f 100644 --- a/packages/examples/app-plugin-file-repository-example/package.json +++ b/packages/examples/app-plugin-file-repository-example/package.json @@ -2,7 +2,7 @@ "name": "@nocobase/app-plugin-file-repository-example", "displayName": "File Repository Example App Plugin", "description": "Attachments collection, API routes, and an upload page demonstrating File Repository.", - "version": "0.0.2-beta.0", + "version": "0.0.2-beta.1", "type": "module", "prettier": "@nocobase/dev-config/prettier", "sideEffects": false, diff --git a/packages/examples/app-plugin-queue-example/CHANGELOG.md b/packages/examples/app-plugin-queue-example/CHANGELOG.md index 466dbcd1b11..074814539e2 100644 --- a/packages/examples/app-plugin-queue-example/CHANGELOG.md +++ b/packages/examples/app-plugin-queue-example/CHANGELOG.md @@ -1,5 +1,20 @@ # @nocobase/app-plugin-queue-example +## 0.1.0-beta.5 + +### Patch Changes + +- 52d1107: Declare each peer dependency once, dropping the devDependency that used to accompany it. + + The pairing was required on the grounds that a peer range is wide enough for development to drift off this repository's copy. It is not: pnpm installs a peer and links it into the plugin's own `node_modules`, resolving `workspace:^` to the same package `workspace:*` would. A plugin with the devDependency removed still links, typechecks, builds, and tests against it — verified against a clean install with every plugin's `node_modules` deleted first. + + What remained was a second declaration that changed nothing and had to be kept in step with the first. `pnpm peers:check` no longer asks for it, and `create-plugin` no longer emits it. + +- Updated dependencies [52d1107] +- Updated dependencies [52d1107] +- Updated dependencies [52d1107] + - @nocobase/app-plugin-authentication@0.1.0-beta.9 + ## 0.1.0-beta.4 ### Minor Changes diff --git a/packages/examples/app-plugin-queue-example/package.json b/packages/examples/app-plugin-queue-example/package.json index d440523db62..6d4b4491fde 100644 --- a/packages/examples/app-plugin-queue-example/package.json +++ b/packages/examples/app-plugin-queue-example/package.json @@ -2,7 +2,7 @@ "name": "@nocobase/app-plugin-queue-example", "displayName": "Queue Example App Plugin", "description": "Example app plugin with a convention-based queue job and route.", - "version": "0.1.0-beta.4", + "version": "0.1.0-beta.5", "type": "module", "prettier": "@nocobase/dev-config/prettier", "engines": { diff --git a/packages/examples/app-plugin-realtime-example/CHANGELOG.md b/packages/examples/app-plugin-realtime-example/CHANGELOG.md index db656f9254c..d6e7751bce7 100644 --- a/packages/examples/app-plugin-realtime-example/CHANGELOG.md +++ b/packages/examples/app-plugin-realtime-example/CHANGELOG.md @@ -1,5 +1,15 @@ # @nocobase/app-plugin-realtime-example +## 0.1.0-beta.5 + +### Patch Changes + +- 52d1107: Declare each peer dependency once, dropping the devDependency that used to accompany it. + + The pairing was required on the grounds that a peer range is wide enough for development to drift off this repository's copy. It is not: pnpm installs a peer and links it into the plugin's own `node_modules`, resolving `workspace:^` to the same package `workspace:*` would. A plugin with the devDependency removed still links, typechecks, builds, and tests against it — verified against a clean install with every plugin's `node_modules` deleted first. + + What remained was a second declaration that changed nothing and had to be kept in step with the first. `pnpm peers:check` no longer asks for it, and `create-plugin` no longer emits it. + ## 0.1.0-beta.4 ### Minor Changes diff --git a/packages/examples/app-plugin-realtime-example/package.json b/packages/examples/app-plugin-realtime-example/package.json index 604d6816c7c..8d2da6dd7d5 100644 --- a/packages/examples/app-plugin-realtime-example/package.json +++ b/packages/examples/app-plugin-realtime-example/package.json @@ -2,7 +2,7 @@ "name": "@nocobase/app-plugin-realtime-example", "displayName": "Realtime Example App Plugin", "description": "Example app plugin with a realtime clock publisher and page.", - "version": "0.1.0-beta.4", + "version": "0.1.0-beta.5", "type": "module", "prettier": "@nocobase/dev-config/prettier", "engines": { diff --git a/packages/examples/app-plugin-registry-example/CHANGELOG.md b/packages/examples/app-plugin-registry-example/CHANGELOG.md index 45c9b6cbb23..39891fcf02b 100644 --- a/packages/examples/app-plugin-registry-example/CHANGELOG.md +++ b/packages/examples/app-plugin-registry-example/CHANGELOG.md @@ -1,5 +1,29 @@ # @nocobase/app-plugin-registry-example +## 0.0.2-beta.3 + +### Patch Changes + +- 52d1107: Resolve the shared UI packages through the workspace catalog: `@base-ui/react`, `class-variance-authority`, `clsx`, `lucide-react`, `shadcn`, `tailwind-merge`, and `tw-animate-css`. + + Every package already agreed on one version for each of these — the catalog is what keeps them agreeing. A range edited in one manifest and not the others would otherwise put two copies of a UI primitive into an application's bundle, which is the kind of drift nothing reports until a component behaves differently depending on which plugin rendered it. + + Peer dependencies use `catalog:` too. `pnpm pack` resolves it before publishing, so a consumer still reads an ordinary range. + +- 52d1107: Declare the packages each plugin's browser code imports as peer dependencies, so an application that installs the plugin can resolve them while a server deployment installs none of them. + + A plugin's `client/` is not bundled by the plugin: `build` is `tsc`, so `dist/client/*.js` keeps its bare imports and the consuming application's Vite build resolves them. That application has only what the published manifest declares, and npm does not publish `devDependencies` — so a client import declared only there fails with `Could not resolve "…"`. `sonner` and `@xyflow/react` both shipped that way. Ten of these plugins appeared to work only because `app-template-default` happened to declare the same package for its own use; `@nocobase/app-plugin-hub`'s CodeMirror imports had no such coincidence and were unresolvable wherever it was installed. + + Peer dependencies are what satisfy both sides. An application installs one shared copy, and a deployment — which sets `autoInstallPeers: false` — installs none, so packages a server never requires stay out of it. Each keeps a matching devDependency so the workspace still resolves it and the version used here stays pinned. None is marked `optional`: an optional peer is not auto-installed anywhere, including in the application that needs it. + + `create-plugin` emits the same shape and its generated `AGENTS.md` teaches it, so a plugin created tomorrow declares its browser packages as peers rather than repeating the mistake. + +- 52d1107: Declare each peer dependency once, dropping the devDependency that used to accompany it. + + The pairing was required on the grounds that a peer range is wide enough for development to drift off this repository's copy. It is not: pnpm installs a peer and links it into the plugin's own `node_modules`, resolving `workspace:^` to the same package `workspace:*` would. A plugin with the devDependency removed still links, typechecks, builds, and tests against it — verified against a clean install with every plugin's `node_modules` deleted first. + + What remained was a second declaration that changed nothing and had to be kept in step with the first. `pnpm peers:check` no longer asks for it, and `create-plugin` no longer emits it. + ## 0.0.2-beta.2 ### Patch Changes diff --git a/packages/examples/app-plugin-registry-example/package.json b/packages/examples/app-plugin-registry-example/package.json index 4bfafda1fac..79f4039fc13 100644 --- a/packages/examples/app-plugin-registry-example/package.json +++ b/packages/examples/app-plugin-registry-example/package.json @@ -2,7 +2,7 @@ "name": "@nocobase/app-plugin-registry-example", "displayName": "UI Registry Example App Plugin", "description": "Example plugin demonstrating runtime UI and application-owned Registry UI.", - "version": "0.0.2-beta.2", + "version": "0.0.2-beta.3", "type": "module", "prettier": "@nocobase/dev-config/prettier", "engines": { diff --git a/packages/examples/app-plugin-repository-example/CHANGELOG.md b/packages/examples/app-plugin-repository-example/CHANGELOG.md index 2e271206255..40829ae7165 100644 --- a/packages/examples/app-plugin-repository-example/CHANGELOG.md +++ b/packages/examples/app-plugin-repository-example/CHANGELOG.md @@ -1,5 +1,34 @@ # @nocobase/app-plugin-repository-example +## 0.1.0-beta.2 + +### Patch Changes + +- 52d1107: Resolve the shared UI packages through the workspace catalog: `@base-ui/react`, `class-variance-authority`, `clsx`, `lucide-react`, `shadcn`, `tailwind-merge`, and `tw-animate-css`. + + Every package already agreed on one version for each of these — the catalog is what keeps them agreeing. A range edited in one manifest and not the others would otherwise put two copies of a UI primitive into an application's bundle, which is the kind of drift nothing reports until a component behaves differently depending on which plugin rendered it. + + Peer dependencies use `catalog:` too. `pnpm pack` resolves it before publishing, so a consumer still reads an ordinary range. + +- 52d1107: Declare the packages each plugin's browser code imports as peer dependencies, so an application that installs the plugin can resolve them while a server deployment installs none of them. + + A plugin's `client/` is not bundled by the plugin: `build` is `tsc`, so `dist/client/*.js` keeps its bare imports and the consuming application's Vite build resolves them. That application has only what the published manifest declares, and npm does not publish `devDependencies` — so a client import declared only there fails with `Could not resolve "…"`. `sonner` and `@xyflow/react` both shipped that way. Ten of these plugins appeared to work only because `app-template-default` happened to declare the same package for its own use; `@nocobase/app-plugin-hub`'s CodeMirror imports had no such coincidence and were unresolvable wherever it was installed. + + Peer dependencies are what satisfy both sides. An application installs one shared copy, and a deployment — which sets `autoInstallPeers: false` — installs none, so packages a server never requires stay out of it. Each keeps a matching devDependency so the workspace still resolves it and the version used here stays pinned. None is marked `optional`: an optional peer is not auto-installed anywhere, including in the application that needs it. + + `create-plugin` emits the same shape and its generated `AGENTS.md` teaches it, so a plugin created tomorrow declares its browser packages as peers rather than repeating the mistake. + +- 52d1107: Declare each peer dependency once, dropping the devDependency that used to accompany it. + + The pairing was required on the grounds that a peer range is wide enough for development to drift off this repository's copy. It is not: pnpm installs a peer and links it into the plugin's own `node_modules`, resolving `workspace:^` to the same package `workspace:*` would. A plugin with the devDependency removed still links, typechecks, builds, and tests against it — verified against a clean install with every plugin's `node_modules` deleted first. + + What remained was a second declaration that changed nothing and had to be kept in step with the first. `pnpm peers:check` no longer asks for it, and `create-plugin` no longer emits it. + +- Updated dependencies [52d1107] +- Updated dependencies [52d1107] +- Updated dependencies [52d1107] + - @nocobase/app-plugin-authentication@0.1.0-beta.9 + ## 0.1.0-beta.1 ### Patch Changes diff --git a/packages/examples/app-plugin-repository-example/package.json b/packages/examples/app-plugin-repository-example/package.json index 6e8591819d0..dad7b20a17e 100644 --- a/packages/examples/app-plugin-repository-example/package.json +++ b/packages/examples/app-plugin-repository-example/package.json @@ -2,7 +2,7 @@ "name": "@nocobase/app-plugin-repository-example", "displayName": "Repository Example App Plugin", "description": "CRM and order management demonstrating relational Repository HTTP APIs.", - "version": "0.1.0-beta.1", + "version": "0.1.0-beta.2", "type": "module", "prettier": "@nocobase/dev-config/prettier", "engines": { diff --git a/packages/examples/app-plugin-routes-example/CHANGELOG.md b/packages/examples/app-plugin-routes-example/CHANGELOG.md index a3d39a1e821..b3127c6931e 100644 --- a/packages/examples/app-plugin-routes-example/CHANGELOG.md +++ b/packages/examples/app-plugin-routes-example/CHANGELOG.md @@ -1,5 +1,34 @@ # @nocobase/app-plugin-routes-example +## 0.1.0-beta.8 + +### Patch Changes + +- 52d1107: Resolve the shared UI packages through the workspace catalog: `@base-ui/react`, `class-variance-authority`, `clsx`, `lucide-react`, `shadcn`, `tailwind-merge`, and `tw-animate-css`. + + Every package already agreed on one version for each of these — the catalog is what keeps them agreeing. A range edited in one manifest and not the others would otherwise put two copies of a UI primitive into an application's bundle, which is the kind of drift nothing reports until a component behaves differently depending on which plugin rendered it. + + Peer dependencies use `catalog:` too. `pnpm pack` resolves it before publishing, so a consumer still reads an ordinary range. + +- 52d1107: Declare the packages each plugin's browser code imports as peer dependencies, so an application that installs the plugin can resolve them while a server deployment installs none of them. + + A plugin's `client/` is not bundled by the plugin: `build` is `tsc`, so `dist/client/*.js` keeps its bare imports and the consuming application's Vite build resolves them. That application has only what the published manifest declares, and npm does not publish `devDependencies` — so a client import declared only there fails with `Could not resolve "…"`. `sonner` and `@xyflow/react` both shipped that way. Ten of these plugins appeared to work only because `app-template-default` happened to declare the same package for its own use; `@nocobase/app-plugin-hub`'s CodeMirror imports had no such coincidence and were unresolvable wherever it was installed. + + Peer dependencies are what satisfy both sides. An application installs one shared copy, and a deployment — which sets `autoInstallPeers: false` — installs none, so packages a server never requires stay out of it. Each keeps a matching devDependency so the workspace still resolves it and the version used here stays pinned. None is marked `optional`: an optional peer is not auto-installed anywhere, including in the application that needs it. + + `create-plugin` emits the same shape and its generated `AGENTS.md` teaches it, so a plugin created tomorrow declares its browser packages as peers rather than repeating the mistake. + +- 52d1107: Declare each peer dependency once, dropping the devDependency that used to accompany it. + + The pairing was required on the grounds that a peer range is wide enough for development to drift off this repository's copy. It is not: pnpm installs a peer and links it into the plugin's own `node_modules`, resolving `workspace:^` to the same package `workspace:*` would. A plugin with the devDependency removed still links, typechecks, builds, and tests against it — verified against a clean install with every plugin's `node_modules` deleted first. + + What remained was a second declaration that changed nothing and had to be kept in step with the first. `pnpm peers:check` no longer asks for it, and `create-plugin` no longer emits it. + +- Updated dependencies [52d1107] +- Updated dependencies [52d1107] +- Updated dependencies [52d1107] + - @nocobase/app-plugin-authentication@0.1.0-beta.9 + ## 0.1.0-beta.7 ### Patch Changes diff --git a/packages/examples/app-plugin-routes-example/package.json b/packages/examples/app-plugin-routes-example/package.json index 6a20dcdbca0..309bc732a66 100644 --- a/packages/examples/app-plugin-routes-example/package.json +++ b/packages/examples/app-plugin-routes-example/package.json @@ -2,7 +2,7 @@ "name": "@nocobase/app-plugin-routes-example", "displayName": "Routes Example App Plugin", "description": "Full-stack example with server and lazy client routes.", - "version": "0.1.0-beta.7", + "version": "0.1.0-beta.8", "type": "module", "sideEffects": false, "prettier": "@nocobase/dev-config/prettier", diff --git a/packages/examples/app-plugin-service-provider-example/CHANGELOG.md b/packages/examples/app-plugin-service-provider-example/CHANGELOG.md index 7a5bdad4779..60cf1f07847 100644 --- a/packages/examples/app-plugin-service-provider-example/CHANGELOG.md +++ b/packages/examples/app-plugin-service-provider-example/CHANGELOG.md @@ -1,5 +1,15 @@ # @nocobase/app-plugin-service-provider-example +## 0.1.0-beta.3 + +### Patch Changes + +- 52d1107: Declare each peer dependency once, dropping the devDependency that used to accompany it. + + The pairing was required on the grounds that a peer range is wide enough for development to drift off this repository's copy. It is not: pnpm installs a peer and links it into the plugin's own `node_modules`, resolving `workspace:^` to the same package `workspace:*` would. A plugin with the devDependency removed still links, typechecks, builds, and tests against it — verified against a clean install with every plugin's `node_modules` deleted first. + + What remained was a second declaration that changed nothing and had to be kept in step with the first. `pnpm peers:check` no longer asks for it, and `create-plugin` no longer emits it. + ## 0.1.0-beta.2 ### Minor Changes diff --git a/packages/examples/app-plugin-service-provider-example/package.json b/packages/examples/app-plugin-service-provider-example/package.json index 3655729eabe..191e472aa7f 100644 --- a/packages/examples/app-plugin-service-provider-example/package.json +++ b/packages/examples/app-plugin-service-provider-example/package.json @@ -2,7 +2,7 @@ "name": "@nocobase/app-plugin-service-provider-example", "displayName": "Service Provider Example App Plugin", "description": "Example app plugin that registers and manages a service through a ServiceProvider.", - "version": "0.1.0-beta.2", + "version": "0.1.0-beta.3", "type": "module", "prettier": "@nocobase/dev-config/prettier", "engines": { diff --git a/packages/examples/app-plugin-skills-example/CHANGELOG.md b/packages/examples/app-plugin-skills-example/CHANGELOG.md index 7620461da02..21c5a0bc9ff 100644 --- a/packages/examples/app-plugin-skills-example/CHANGELOG.md +++ b/packages/examples/app-plugin-skills-example/CHANGELOG.md @@ -1,5 +1,20 @@ # @nocobase/app-plugin-skills-example +## 0.1.0-beta.2 + +### Patch Changes + +- 52d1107: Declare each peer dependency once, dropping the devDependency that used to accompany it. + + The pairing was required on the grounds that a peer range is wide enough for development to drift off this repository's copy. It is not: pnpm installs a peer and links it into the plugin's own `node_modules`, resolving `workspace:^` to the same package `workspace:*` would. A plugin with the devDependency removed still links, typechecks, builds, and tests against it — verified against a clean install with every plugin's `node_modules` deleted first. + + What remained was a second declaration that changed nothing and had to be kept in step with the first. `pnpm peers:check` no longer asks for it, and `create-plugin` no longer emits it. + +- Updated dependencies [52d1107] +- Updated dependencies [52d1107] +- Updated dependencies [52d1107] + - @nocobase/app-plugin-authentication@0.1.0-beta.9 + ## 0.1.0-beta.1 ### Minor Changes diff --git a/packages/examples/app-plugin-skills-example/package.json b/packages/examples/app-plugin-skills-example/package.json index fad9b179c9e..0354e961902 100644 --- a/packages/examples/app-plugin-skills-example/package.json +++ b/packages/examples/app-plugin-skills-example/package.json @@ -2,7 +2,7 @@ "name": "@nocobase/app-plugin-skills-example", "displayName": "Skills Example App Plugin", "description": "A small App Notice component and authenticated Server API for demonstrating Plugin Skills.", - "version": "0.1.0-beta.1", + "version": "0.1.0-beta.2", "type": "module", "prettier": "@nocobase/dev-config/prettier", "engines": { diff --git a/packages/plugins/app-plugin-ai-employee/CHANGELOG.md b/packages/plugins/app-plugin-ai-employee/CHANGELOG.md index 6b58c350375..48d754f8b84 100644 --- a/packages/plugins/app-plugin-ai-employee/CHANGELOG.md +++ b/packages/plugins/app-plugin-ai-employee/CHANGELOG.md @@ -1,5 +1,34 @@ # @nocobase/app-plugin-ai-employee +## 0.1.0-beta.5 + +### Patch Changes + +- 52d1107: Resolve the shared UI packages through the workspace catalog: `@base-ui/react`, `class-variance-authority`, `clsx`, `lucide-react`, `shadcn`, `tailwind-merge`, and `tw-animate-css`. + + Every package already agreed on one version for each of these — the catalog is what keeps them agreeing. A range edited in one manifest and not the others would otherwise put two copies of a UI primitive into an application's bundle, which is the kind of drift nothing reports until a component behaves differently depending on which plugin rendered it. + + Peer dependencies use `catalog:` too. `pnpm pack` resolves it before publishing, so a consumer still reads an ordinary range. + +- 52d1107: Declare the packages each plugin's browser code imports as peer dependencies, so an application that installs the plugin can resolve them while a server deployment installs none of them. + + A plugin's `client/` is not bundled by the plugin: `build` is `tsc`, so `dist/client/*.js` keeps its bare imports and the consuming application's Vite build resolves them. That application has only what the published manifest declares, and npm does not publish `devDependencies` — so a client import declared only there fails with `Could not resolve "…"`. `sonner` and `@xyflow/react` both shipped that way. Ten of these plugins appeared to work only because `app-template-default` happened to declare the same package for its own use; `@nocobase/app-plugin-hub`'s CodeMirror imports had no such coincidence and were unresolvable wherever it was installed. + + Peer dependencies are what satisfy both sides. An application installs one shared copy, and a deployment — which sets `autoInstallPeers: false` — installs none, so packages a server never requires stay out of it. Each keeps a matching devDependency so the workspace still resolves it and the version used here stays pinned. None is marked `optional`: an optional peer is not auto-installed anywhere, including in the application that needs it. + + `create-plugin` emits the same shape and its generated `AGENTS.md` teaches it, so a plugin created tomorrow declares its browser packages as peers rather than repeating the mistake. + +- 52d1107: Declare each peer dependency once, dropping the devDependency that used to accompany it. + + The pairing was required on the grounds that a peer range is wide enough for development to drift off this repository's copy. It is not: pnpm installs a peer and links it into the plugin's own `node_modules`, resolving `workspace:^` to the same package `workspace:*` would. A plugin with the devDependency removed still links, typechecks, builds, and tests against it — verified against a clean install with every plugin's `node_modules` deleted first. + + What remained was a second declaration that changed nothing and had to be kept in step with the first. `pnpm peers:check` no longer asks for it, and `create-plugin` no longer emits it. + +- Updated dependencies [52d1107] +- Updated dependencies [52d1107] +- Updated dependencies [52d1107] + - @nocobase/app-plugin-authentication@0.1.0-beta.9 + ## 0.1.0-beta.4 ### Minor Changes diff --git a/packages/plugins/app-plugin-ai-employee/package.json b/packages/plugins/app-plugin-ai-employee/package.json index 0f95d252f24..1020daf2530 100644 --- a/packages/plugins/app-plugin-ai-employee/package.json +++ b/packages/plugins/app-plugin-ai-employee/package.json @@ -2,7 +2,7 @@ "name": "@nocobase/app-plugin-ai-employee", "displayName": "AI Employee App Plugin", "description": "Database-backed AI employee runtime, routes, resources, and built-in employees for NocoBase Apps.", - "version": "0.1.0-beta.4", + "version": "0.1.0-beta.5", "type": "module", "prettier": "@nocobase/dev-config/prettier", "engines": { diff --git a/packages/plugins/app-plugin-ai-knowledge-base/CHANGELOG.md b/packages/plugins/app-plugin-ai-knowledge-base/CHANGELOG.md index 76067b275c4..925f99119b1 100644 --- a/packages/plugins/app-plugin-ai-knowledge-base/CHANGELOG.md +++ b/packages/plugins/app-plugin-ai-knowledge-base/CHANGELOG.md @@ -1,5 +1,35 @@ # @nocobase/app-plugin-ai-knowledge-base +## 0.1.0-beta.5 + +### Patch Changes + +- 52d1107: Resolve the shared UI packages through the workspace catalog: `@base-ui/react`, `class-variance-authority`, `clsx`, `lucide-react`, `shadcn`, `tailwind-merge`, and `tw-animate-css`. + + Every package already agreed on one version for each of these — the catalog is what keeps them agreeing. A range edited in one manifest and not the others would otherwise put two copies of a UI primitive into an application's bundle, which is the kind of drift nothing reports until a component behaves differently depending on which plugin rendered it. + + Peer dependencies use `catalog:` too. `pnpm pack` resolves it before publishing, so a consumer still reads an ordinary range. + +- 52d1107: Declare the packages each plugin's browser code imports as peer dependencies, so an application that installs the plugin can resolve them while a server deployment installs none of them. + + A plugin's `client/` is not bundled by the plugin: `build` is `tsc`, so `dist/client/*.js` keeps its bare imports and the consuming application's Vite build resolves them. That application has only what the published manifest declares, and npm does not publish `devDependencies` — so a client import declared only there fails with `Could not resolve "…"`. `sonner` and `@xyflow/react` both shipped that way. Ten of these plugins appeared to work only because `app-template-default` happened to declare the same package for its own use; `@nocobase/app-plugin-hub`'s CodeMirror imports had no such coincidence and were unresolvable wherever it was installed. + + Peer dependencies are what satisfy both sides. An application installs one shared copy, and a deployment — which sets `autoInstallPeers: false` — installs none, so packages a server never requires stay out of it. Each keeps a matching devDependency so the workspace still resolves it and the version used here stays pinned. None is marked `optional`: an optional peer is not auto-installed anywhere, including in the application that needs it. + + `create-plugin` emits the same shape and its generated `AGENTS.md` teaches it, so a plugin created tomorrow declares its browser packages as peers rather than repeating the mistake. + +- 52d1107: Declare each peer dependency once, dropping the devDependency that used to accompany it. + + The pairing was required on the grounds that a peer range is wide enough for development to drift off this repository's copy. It is not: pnpm installs a peer and links it into the plugin's own `node_modules`, resolving `workspace:^` to the same package `workspace:*` would. A plugin with the devDependency removed still links, typechecks, builds, and tests against it — verified against a clean install with every plugin's `node_modules` deleted first. + + What remained was a second declaration that changed nothing and had to be kept in step with the first. `pnpm peers:check` no longer asks for it, and `create-plugin` no longer emits it. + +- Updated dependencies [52d1107] +- Updated dependencies [52d1107] +- Updated dependencies [52d1107] + - @nocobase/app-plugin-ai-employee@0.1.0-beta.5 + - @nocobase/app-plugin-authentication@0.1.0-beta.9 + ## 0.1.0-beta.4 ### Minor Changes diff --git a/packages/plugins/app-plugin-ai-knowledge-base/package.json b/packages/plugins/app-plugin-ai-knowledge-base/package.json index acbfeda401a..57cd52f04c5 100644 --- a/packages/plugins/app-plugin-ai-knowledge-base/package.json +++ b/packages/plugins/app-plugin-ai-knowledge-base/package.json @@ -2,7 +2,7 @@ "name": "@nocobase/app-plugin-ai-knowledge-base", "displayName": "AI Knowledge Base App Plugin", "description": "Knowledge base, document segmentation, and PGVector integration for NocoBase Apps.", - "version": "0.1.0-beta.4", + "version": "0.1.0-beta.5", "type": "module", "prettier": "@nocobase/dev-config/prettier", "engines": { diff --git a/packages/plugins/app-plugin-authentication/CHANGELOG.md b/packages/plugins/app-plugin-authentication/CHANGELOG.md index a9242896911..dc6c9124bf7 100644 --- a/packages/plugins/app-plugin-authentication/CHANGELOG.md +++ b/packages/plugins/app-plugin-authentication/CHANGELOG.md @@ -1,5 +1,29 @@ # @nocobase/app-plugin-authentication +## 0.1.0-beta.9 + +### Patch Changes + +- 52d1107: Resolve the shared UI packages through the workspace catalog: `@base-ui/react`, `class-variance-authority`, `clsx`, `lucide-react`, `shadcn`, `tailwind-merge`, and `tw-animate-css`. + + Every package already agreed on one version for each of these — the catalog is what keeps them agreeing. A range edited in one manifest and not the others would otherwise put two copies of a UI primitive into an application's bundle, which is the kind of drift nothing reports until a component behaves differently depending on which plugin rendered it. + + Peer dependencies use `catalog:` too. `pnpm pack` resolves it before publishing, so a consumer still reads an ordinary range. + +- 52d1107: Declare the packages each plugin's browser code imports as peer dependencies, so an application that installs the plugin can resolve them while a server deployment installs none of them. + + A plugin's `client/` is not bundled by the plugin: `build` is `tsc`, so `dist/client/*.js` keeps its bare imports and the consuming application's Vite build resolves them. That application has only what the published manifest declares, and npm does not publish `devDependencies` — so a client import declared only there fails with `Could not resolve "…"`. `sonner` and `@xyflow/react` both shipped that way. Ten of these plugins appeared to work only because `app-template-default` happened to declare the same package for its own use; `@nocobase/app-plugin-hub`'s CodeMirror imports had no such coincidence and were unresolvable wherever it was installed. + + Peer dependencies are what satisfy both sides. An application installs one shared copy, and a deployment — which sets `autoInstallPeers: false` — installs none, so packages a server never requires stay out of it. Each keeps a matching devDependency so the workspace still resolves it and the version used here stays pinned. None is marked `optional`: an optional peer is not auto-installed anywhere, including in the application that needs it. + + `create-plugin` emits the same shape and its generated `AGENTS.md` teaches it, so a plugin created tomorrow declares its browser packages as peers rather than repeating the mistake. + +- 52d1107: Declare each peer dependency once, dropping the devDependency that used to accompany it. + + The pairing was required on the grounds that a peer range is wide enough for development to drift off this repository's copy. It is not: pnpm installs a peer and links it into the plugin's own `node_modules`, resolving `workspace:^` to the same package `workspace:*` would. A plugin with the devDependency removed still links, typechecks, builds, and tests against it — verified against a clean install with every plugin's `node_modules` deleted first. + + What remained was a second declaration that changed nothing and had to be kept in step with the first. `pnpm peers:check` no longer asks for it, and `create-plugin` no longer emits it. + ## 0.1.0-beta.8 ### Patch Changes diff --git a/packages/plugins/app-plugin-authentication/package.json b/packages/plugins/app-plugin-authentication/package.json index 575fb2b9ba2..5f9fa198475 100644 --- a/packages/plugins/app-plugin-authentication/package.json +++ b/packages/plugins/app-plugin-authentication/package.json @@ -2,7 +2,7 @@ "name": "@nocobase/app-plugin-authentication", "displayName": "Authentication App Plugin", "description": "Authentication plugin for NocoBase applications.", - "version": "0.1.0-beta.8", + "version": "0.1.0-beta.9", "type": "module", "sideEffects": false, "prettier": "@nocobase/dev-config/prettier", diff --git a/packages/plugins/app-plugin-authorization/CHANGELOG.md b/packages/plugins/app-plugin-authorization/CHANGELOG.md index 663881c8aeb..993263b8bab 100644 --- a/packages/plugins/app-plugin-authorization/CHANGELOG.md +++ b/packages/plugins/app-plugin-authorization/CHANGELOG.md @@ -1,5 +1,34 @@ # @nocobase/app-plugin-authorization +## 0.2.0-beta.8 + +### Patch Changes + +- 52d1107: Resolve the shared UI packages through the workspace catalog: `@base-ui/react`, `class-variance-authority`, `clsx`, `lucide-react`, `shadcn`, `tailwind-merge`, and `tw-animate-css`. + + Every package already agreed on one version for each of these — the catalog is what keeps them agreeing. A range edited in one manifest and not the others would otherwise put two copies of a UI primitive into an application's bundle, which is the kind of drift nothing reports until a component behaves differently depending on which plugin rendered it. + + Peer dependencies use `catalog:` too. `pnpm pack` resolves it before publishing, so a consumer still reads an ordinary range. + +- 52d1107: Declare the packages each plugin's browser code imports as peer dependencies, so an application that installs the plugin can resolve them while a server deployment installs none of them. + + A plugin's `client/` is not bundled by the plugin: `build` is `tsc`, so `dist/client/*.js` keeps its bare imports and the consuming application's Vite build resolves them. That application has only what the published manifest declares, and npm does not publish `devDependencies` — so a client import declared only there fails with `Could not resolve "…"`. `sonner` and `@xyflow/react` both shipped that way. Ten of these plugins appeared to work only because `app-template-default` happened to declare the same package for its own use; `@nocobase/app-plugin-hub`'s CodeMirror imports had no such coincidence and were unresolvable wherever it was installed. + + Peer dependencies are what satisfy both sides. An application installs one shared copy, and a deployment — which sets `autoInstallPeers: false` — installs none, so packages a server never requires stay out of it. Each keeps a matching devDependency so the workspace still resolves it and the version used here stays pinned. None is marked `optional`: an optional peer is not auto-installed anywhere, including in the application that needs it. + + `create-plugin` emits the same shape and its generated `AGENTS.md` teaches it, so a plugin created tomorrow declares its browser packages as peers rather than repeating the mistake. + +- 52d1107: Declare each peer dependency once, dropping the devDependency that used to accompany it. + + The pairing was required on the grounds that a peer range is wide enough for development to drift off this repository's copy. It is not: pnpm installs a peer and links it into the plugin's own `node_modules`, resolving `workspace:^` to the same package `workspace:*` would. A plugin with the devDependency removed still links, typechecks, builds, and tests against it — verified against a clean install with every plugin's `node_modules` deleted first. + + What remained was a second declaration that changed nothing and had to be kept in step with the first. `pnpm peers:check` no longer asks for it, and `create-plugin` no longer emits it. + +- Updated dependencies [52d1107] +- Updated dependencies [52d1107] +- Updated dependencies [52d1107] + - @nocobase/app-plugin-authentication@0.1.0-beta.9 + ## 0.2.0-beta.7 ### Patch Changes diff --git a/packages/plugins/app-plugin-authorization/package.json b/packages/plugins/app-plugin-authorization/package.json index f8b6183debb..7c05654ac88 100644 --- a/packages/plugins/app-plugin-authorization/package.json +++ b/packages/plugins/app-plugin-authorization/package.json @@ -2,7 +2,7 @@ "name": "@nocobase/app-plugin-authorization", "displayName": "Authorization App Plugin", "description": "Authorization integration and permission management UI for NocoBase applications.", - "version": "0.2.0-beta.7", + "version": "0.2.0-beta.8", "type": "module", "sideEffects": false, "prettier": "@nocobase/dev-config/prettier", diff --git a/packages/plugins/app-plugin-file-repository/CHANGELOG.md b/packages/plugins/app-plugin-file-repository/CHANGELOG.md index 56225621c35..5c15b6f58e4 100644 --- a/packages/plugins/app-plugin-file-repository/CHANGELOG.md +++ b/packages/plugins/app-plugin-file-repository/CHANGELOG.md @@ -1,5 +1,15 @@ # @nocobase/app-plugin-file-repository +## 0.0.2-beta.1 + +### Patch Changes + +- 52d1107: Declare each peer dependency once, dropping the devDependency that used to accompany it. + + The pairing was required on the grounds that a peer range is wide enough for development to drift off this repository's copy. It is not: pnpm installs a peer and links it into the plugin's own `node_modules`, resolving `workspace:^` to the same package `workspace:*` would. A plugin with the devDependency removed still links, typechecks, builds, and tests against it — verified against a clean install with every plugin's `node_modules` deleted first. + + What remained was a second declaration that changed nothing and had to be kept in step with the first. `pnpm peers:check` no longer asks for it, and `create-plugin` no longer emits it. + ## 0.0.2-beta.0 ### Patch Changes diff --git a/packages/plugins/app-plugin-file-repository/package.json b/packages/plugins/app-plugin-file-repository/package.json index 47afbade54c..83c8b702b03 100644 --- a/packages/plugins/app-plugin-file-repository/package.json +++ b/packages/plugins/app-plugin-file-repository/package.json @@ -2,7 +2,7 @@ "name": "@nocobase/app-plugin-file-repository", "displayName": "File Repository App Plugin", "description": "File repositories with uploads, stable content URLs, and Client/Server services.", - "version": "0.0.2-beta.0", + "version": "0.0.2-beta.1", "type": "module", "prettier": "@nocobase/dev-config/prettier", "sideEffects": false, diff --git a/packages/plugins/app-plugin-file/CHANGELOG.md b/packages/plugins/app-plugin-file/CHANGELOG.md index 2d16f703cc4..6489c900b85 100644 --- a/packages/plugins/app-plugin-file/CHANGELOG.md +++ b/packages/plugins/app-plugin-file/CHANGELOG.md @@ -1,5 +1,35 @@ # @nocobase/app-plugin-file +## 0.1.0-beta.8 + +### Patch Changes + +- 52d1107: Resolve the shared UI packages through the workspace catalog: `@base-ui/react`, `class-variance-authority`, `clsx`, `lucide-react`, `shadcn`, `tailwind-merge`, and `tw-animate-css`. + + Every package already agreed on one version for each of these — the catalog is what keeps them agreeing. A range edited in one manifest and not the others would otherwise put two copies of a UI primitive into an application's bundle, which is the kind of drift nothing reports until a component behaves differently depending on which plugin rendered it. + + Peer dependencies use `catalog:` too. `pnpm pack` resolves it before publishing, so a consumer still reads an ordinary range. + +- 52d1107: Declare the packages each plugin's browser code imports as peer dependencies, so an application that installs the plugin can resolve them while a server deployment installs none of them. + + A plugin's `client/` is not bundled by the plugin: `build` is `tsc`, so `dist/client/*.js` keeps its bare imports and the consuming application's Vite build resolves them. That application has only what the published manifest declares, and npm does not publish `devDependencies` — so a client import declared only there fails with `Could not resolve "…"`. `sonner` and `@xyflow/react` both shipped that way. Ten of these plugins appeared to work only because `app-template-default` happened to declare the same package for its own use; `@nocobase/app-plugin-hub`'s CodeMirror imports had no such coincidence and were unresolvable wherever it was installed. + + Peer dependencies are what satisfy both sides. An application installs one shared copy, and a deployment — which sets `autoInstallPeers: false` — installs none, so packages a server never requires stay out of it. Each keeps a matching devDependency so the workspace still resolves it and the version used here stays pinned. None is marked `optional`: an optional peer is not auto-installed anywhere, including in the application that needs it. + + `create-plugin` emits the same shape and its generated `AGENTS.md` teaches it, so a plugin created tomorrow declares its browser packages as peers rather than repeating the mistake. + +- 52d1107: Declare each peer dependency once, dropping the devDependency that used to accompany it. + + The pairing was required on the grounds that a peer range is wide enough for development to drift off this repository's copy. It is not: pnpm installs a peer and links it into the plugin's own `node_modules`, resolving `workspace:^` to the same package `workspace:*` would. A plugin with the devDependency removed still links, typechecks, builds, and tests against it — verified against a clean install with every plugin's `node_modules` deleted first. + + What remained was a second declaration that changed nothing and had to be kept in step with the first. `pnpm peers:check` no longer asks for it, and `create-plugin` no longer emits it. + +- Updated dependencies [52d1107] +- Updated dependencies [52d1107] +- Updated dependencies [52d1107] + - @nocobase/app-plugin-authentication@0.1.0-beta.9 + - @nocobase/app-plugin-authorization@0.2.0-beta.8 + ## 0.1.0-beta.7 ### Minor Changes diff --git a/packages/plugins/app-plugin-file/package.json b/packages/plugins/app-plugin-file/package.json index b0910e48bd8..3141424236e 100644 --- a/packages/plugins/app-plugin-file/package.json +++ b/packages/plugins/app-plugin-file/package.json @@ -2,7 +2,7 @@ "name": "@nocobase/app-plugin-file", "displayName": "File App Plugin", "description": "Minimal file storage, access, route, and UI contracts for NocoBase applications.", - "version": "0.1.0-beta.7", + "version": "0.1.0-beta.8", "type": "module", "sideEffects": false, "prettier": "@nocobase/dev-config/prettier", diff --git a/packages/plugins/app-plugin-hub/CHANGELOG.md b/packages/plugins/app-plugin-hub/CHANGELOG.md index 4f98898371f..f4e8945ffb5 100644 --- a/packages/plugins/app-plugin-hub/CHANGELOG.md +++ b/packages/plugins/app-plugin-hub/CHANGELOG.md @@ -1,5 +1,35 @@ # @nocobase/app-plugin-hub +## 0.0.2-beta.2 + +### Patch Changes + +- 52d1107: Resolve the shared UI packages through the workspace catalog: `@base-ui/react`, `class-variance-authority`, `clsx`, `lucide-react`, `shadcn`, `tailwind-merge`, and `tw-animate-css`. + + Every package already agreed on one version for each of these — the catalog is what keeps them agreeing. A range edited in one manifest and not the others would otherwise put two copies of a UI primitive into an application's bundle, which is the kind of drift nothing reports until a component behaves differently depending on which plugin rendered it. + + Peer dependencies use `catalog:` too. `pnpm pack` resolves it before publishing, so a consumer still reads an ordinary range. + +- 52d1107: Declare the packages each plugin's browser code imports as peer dependencies, so an application that installs the plugin can resolve them while a server deployment installs none of them. + + A plugin's `client/` is not bundled by the plugin: `build` is `tsc`, so `dist/client/*.js` keeps its bare imports and the consuming application's Vite build resolves them. That application has only what the published manifest declares, and npm does not publish `devDependencies` — so a client import declared only there fails with `Could not resolve "…"`. `sonner` and `@xyflow/react` both shipped that way. Ten of these plugins appeared to work only because `app-template-default` happened to declare the same package for its own use; `@nocobase/app-plugin-hub`'s CodeMirror imports had no such coincidence and were unresolvable wherever it was installed. + + Peer dependencies are what satisfy both sides. An application installs one shared copy, and a deployment — which sets `autoInstallPeers: false` — installs none, so packages a server never requires stay out of it. Each keeps a matching devDependency so the workspace still resolves it and the version used here stays pinned. None is marked `optional`: an optional peer is not auto-installed anywhere, including in the application that needs it. + + `create-plugin` emits the same shape and its generated `AGENTS.md` teaches it, so a plugin created tomorrow declares its browser packages as peers rather than repeating the mistake. + +- 52d1107: Declare each peer dependency once, dropping the devDependency that used to accompany it. + + The pairing was required on the grounds that a peer range is wide enough for development to drift off this repository's copy. It is not: pnpm installs a peer and links it into the plugin's own `node_modules`, resolving `workspace:^` to the same package `workspace:*` would. A plugin with the devDependency removed still links, typechecks, builds, and tests against it — verified against a clean install with every plugin's `node_modules` deleted first. + + What remained was a second declaration that changed nothing and had to be kept in step with the first. `pnpm peers:check` no longer asks for it, and `create-plugin` no longer emits it. + +- Updated dependencies [52d1107] +- Updated dependencies [52d1107] +- Updated dependencies [52d1107] + - @nocobase/app-plugin-authentication@0.1.0-beta.9 + - @nocobase/app-plugin-authorization@0.2.0-beta.8 + ## 0.0.2-beta.1 ### Patch Changes diff --git a/packages/plugins/app-plugin-hub/package.json b/packages/plugins/app-plugin-hub/package.json index 0d9eee17e35..d5eaf86f093 100644 --- a/packages/plugins/app-plugin-hub/package.json +++ b/packages/plugins/app-plugin-hub/package.json @@ -2,7 +2,7 @@ "name": "@nocobase/app-plugin-hub", "displayName": "Application Hub", "description": "Create, configure, release, and deploy applications through a managed app host.", - "version": "0.0.2-beta.1", + "version": "0.0.2-beta.2", "type": "module", "prettier": "@nocobase/dev-config/prettier", "engines": { diff --git a/packages/plugins/app-plugin-i18n/CHANGELOG.md b/packages/plugins/app-plugin-i18n/CHANGELOG.md index f831cf696c8..466aaff8cff 100644 --- a/packages/plugins/app-plugin-i18n/CHANGELOG.md +++ b/packages/plugins/app-plugin-i18n/CHANGELOG.md @@ -1,5 +1,21 @@ # @nocobase/app-plugin-i18n +## 0.1.0-beta.4 + +### Patch Changes + +- 52d1107: Resolve the shared UI packages through the workspace catalog: `@base-ui/react`, `class-variance-authority`, `clsx`, `lucide-react`, `shadcn`, `tailwind-merge`, and `tw-animate-css`. + + Every package already agreed on one version for each of these — the catalog is what keeps them agreeing. A range edited in one manifest and not the others would otherwise put two copies of a UI primitive into an application's bundle, which is the kind of drift nothing reports until a component behaves differently depending on which plugin rendered it. + + Peer dependencies use `catalog:` too. `pnpm pack` resolves it before publishing, so a consumer still reads an ordinary range. + +- 52d1107: Declare each peer dependency once, dropping the devDependency that used to accompany it. + + The pairing was required on the grounds that a peer range is wide enough for development to drift off this repository's copy. It is not: pnpm installs a peer and links it into the plugin's own `node_modules`, resolving `workspace:^` to the same package `workspace:*` would. A plugin with the devDependency removed still links, typechecks, builds, and tests against it — verified against a clean install with every plugin's `node_modules` deleted first. + + What remained was a second declaration that changed nothing and had to be kept in step with the first. `pnpm peers:check` no longer asks for it, and `create-plugin` no longer emits it. + ## 0.1.0-beta.3 ### Patch Changes diff --git a/packages/plugins/app-plugin-i18n/package.json b/packages/plugins/app-plugin-i18n/package.json index 785d7f99993..a73a6ad39d5 100644 --- a/packages/plugins/app-plugin-i18n/package.json +++ b/packages/plugins/app-plugin-i18n/package.json @@ -2,7 +2,7 @@ "name": "@nocobase/app-plugin-i18n", "displayName": "Internationalization", "description": "Adds language switching to a NocoBase app, on top of @nocobase/i18n.", - "version": "0.1.0-beta.3", + "version": "0.1.0-beta.4", "type": "module", "prettier": "@nocobase/dev-config/prettier", "sideEffects": false, diff --git a/packages/plugins/app-plugin-install/CHANGELOG.md b/packages/plugins/app-plugin-install/CHANGELOG.md index 5d0914591af..f9ff86311a6 100644 --- a/packages/plugins/app-plugin-install/CHANGELOG.md +++ b/packages/plugins/app-plugin-install/CHANGELOG.md @@ -1,5 +1,34 @@ # @nocobase/app-plugin-install +## 0.1.0-beta.6 + +### Patch Changes + +- 52d1107: Resolve the shared UI packages through the workspace catalog: `@base-ui/react`, `class-variance-authority`, `clsx`, `lucide-react`, `shadcn`, `tailwind-merge`, and `tw-animate-css`. + + Every package already agreed on one version for each of these — the catalog is what keeps them agreeing. A range edited in one manifest and not the others would otherwise put two copies of a UI primitive into an application's bundle, which is the kind of drift nothing reports until a component behaves differently depending on which plugin rendered it. + + Peer dependencies use `catalog:` too. `pnpm pack` resolves it before publishing, so a consumer still reads an ordinary range. + +- 52d1107: Declare the packages each plugin's browser code imports as peer dependencies, so an application that installs the plugin can resolve them while a server deployment installs none of them. + + A plugin's `client/` is not bundled by the plugin: `build` is `tsc`, so `dist/client/*.js` keeps its bare imports and the consuming application's Vite build resolves them. That application has only what the published manifest declares, and npm does not publish `devDependencies` — so a client import declared only there fails with `Could not resolve "…"`. `sonner` and `@xyflow/react` both shipped that way. Ten of these plugins appeared to work only because `app-template-default` happened to declare the same package for its own use; `@nocobase/app-plugin-hub`'s CodeMirror imports had no such coincidence and were unresolvable wherever it was installed. + + Peer dependencies are what satisfy both sides. An application installs one shared copy, and a deployment — which sets `autoInstallPeers: false` — installs none, so packages a server never requires stay out of it. Each keeps a matching devDependency so the workspace still resolves it and the version used here stays pinned. None is marked `optional`: an optional peer is not auto-installed anywhere, including in the application that needs it. + + `create-plugin` emits the same shape and its generated `AGENTS.md` teaches it, so a plugin created tomorrow declares its browser packages as peers rather than repeating the mistake. + +- 52d1107: Declare each peer dependency once, dropping the devDependency that used to accompany it. + + The pairing was required on the grounds that a peer range is wide enough for development to drift off this repository's copy. It is not: pnpm installs a peer and links it into the plugin's own `node_modules`, resolving `workspace:^` to the same package `workspace:*` would. A plugin with the devDependency removed still links, typechecks, builds, and tests against it — verified against a clean install with every plugin's `node_modules` deleted first. + + What remained was a second declaration that changed nothing and had to be kept in step with the first. `pnpm peers:check` no longer asks for it, and `create-plugin` no longer emits it. + +- Updated dependencies [52d1107] +- Updated dependencies [52d1107] +- Updated dependencies [52d1107] + - @nocobase/app-plugin-authentication@0.1.0-beta.9 + ## 0.1.0-beta.5 ### Patch Changes diff --git a/packages/plugins/app-plugin-install/package.json b/packages/plugins/app-plugin-install/package.json index af45cfb1fd7..a34d49bd297 100644 --- a/packages/plugins/app-plugin-install/package.json +++ b/packages/plugins/app-plugin-install/package.json @@ -2,7 +2,7 @@ "name": "@nocobase/app-plugin-install", "displayName": "Install App Plugin", "description": "Redirects unconfigured applications to the installation page.", - "version": "0.1.0-beta.5", + "version": "0.1.0-beta.6", "type": "module", "sideEffects": false, "prettier": "@nocobase/dev-config/prettier", diff --git a/packages/plugins/app-plugin-notification-in-app/CHANGELOG.md b/packages/plugins/app-plugin-notification-in-app/CHANGELOG.md index fc9144426c6..6e870720d3a 100644 --- a/packages/plugins/app-plugin-notification-in-app/CHANGELOG.md +++ b/packages/plugins/app-plugin-notification-in-app/CHANGELOG.md @@ -1,5 +1,35 @@ # @nocobase/app-plugin-notification-in-app +## 0.2.0-beta.6 + +### Patch Changes + +- 52d1107: Resolve the shared UI packages through the workspace catalog: `@base-ui/react`, `class-variance-authority`, `clsx`, `lucide-react`, `shadcn`, `tailwind-merge`, and `tw-animate-css`. + + Every package already agreed on one version for each of these — the catalog is what keeps them agreeing. A range edited in one manifest and not the others would otherwise put two copies of a UI primitive into an application's bundle, which is the kind of drift nothing reports until a component behaves differently depending on which plugin rendered it. + + Peer dependencies use `catalog:` too. `pnpm pack` resolves it before publishing, so a consumer still reads an ordinary range. + +- 52d1107: Declare the packages each plugin's browser code imports as peer dependencies, so an application that installs the plugin can resolve them while a server deployment installs none of them. + + A plugin's `client/` is not bundled by the plugin: `build` is `tsc`, so `dist/client/*.js` keeps its bare imports and the consuming application's Vite build resolves them. That application has only what the published manifest declares, and npm does not publish `devDependencies` — so a client import declared only there fails with `Could not resolve "…"`. `sonner` and `@xyflow/react` both shipped that way. Ten of these plugins appeared to work only because `app-template-default` happened to declare the same package for its own use; `@nocobase/app-plugin-hub`'s CodeMirror imports had no such coincidence and were unresolvable wherever it was installed. + + Peer dependencies are what satisfy both sides. An application installs one shared copy, and a deployment — which sets `autoInstallPeers: false` — installs none, so packages a server never requires stay out of it. Each keeps a matching devDependency so the workspace still resolves it and the version used here stays pinned. None is marked `optional`: an optional peer is not auto-installed anywhere, including in the application that needs it. + + `create-plugin` emits the same shape and its generated `AGENTS.md` teaches it, so a plugin created tomorrow declares its browser packages as peers rather than repeating the mistake. + +- 52d1107: Declare each peer dependency once, dropping the devDependency that used to accompany it. + + The pairing was required on the grounds that a peer range is wide enough for development to drift off this repository's copy. It is not: pnpm installs a peer and links it into the plugin's own `node_modules`, resolving `workspace:^` to the same package `workspace:*` would. A plugin with the devDependency removed still links, typechecks, builds, and tests against it — verified against a clean install with every plugin's `node_modules` deleted first. + + What remained was a second declaration that changed nothing and had to be kept in step with the first. `pnpm peers:check` no longer asks for it, and `create-plugin` no longer emits it. + +- Updated dependencies [52d1107] +- Updated dependencies [52d1107] +- Updated dependencies [52d1107] + - @nocobase/app-plugin-authentication@0.1.0-beta.9 + - @nocobase/app-plugin-notification@0.1.0-beta.5 + ## 0.2.0-beta.5 ### Patch Changes diff --git a/packages/plugins/app-plugin-notification-in-app/package.json b/packages/plugins/app-plugin-notification-in-app/package.json index 2b81014e7e1..f16344afccd 100644 --- a/packages/plugins/app-plugin-notification-in-app/package.json +++ b/packages/plugins/app-plugin-notification-in-app/package.json @@ -2,7 +2,7 @@ "name": "@nocobase/app-plugin-notification-in-app", "displayName": "In-app Notification App Plugin", "description": "Provides an authenticated in-app inbox, notification Channel, and development-only Client inbox page.", - "version": "0.2.0-beta.5", + "version": "0.2.0-beta.6", "type": "module", "prettier": "@nocobase/dev-config/prettier", "engines": { diff --git a/packages/plugins/app-plugin-notification-provider/CHANGELOG.md b/packages/plugins/app-plugin-notification-provider/CHANGELOG.md index a501b06b4a9..afb9d751932 100644 --- a/packages/plugins/app-plugin-notification-provider/CHANGELOG.md +++ b/packages/plugins/app-plugin-notification-provider/CHANGELOG.md @@ -1,5 +1,29 @@ # @nocobase/app-plugin-notification-provider +## 0.1.0-beta.8 + +### Patch Changes + +- 52d1107: Resolve the shared UI packages through the workspace catalog: `@base-ui/react`, `class-variance-authority`, `clsx`, `lucide-react`, `shadcn`, `tailwind-merge`, and `tw-animate-css`. + + Every package already agreed on one version for each of these — the catalog is what keeps them agreeing. A range edited in one manifest and not the others would otherwise put two copies of a UI primitive into an application's bundle, which is the kind of drift nothing reports until a component behaves differently depending on which plugin rendered it. + + Peer dependencies use `catalog:` too. `pnpm pack` resolves it before publishing, so a consumer still reads an ordinary range. + +- 52d1107: Declare the packages each plugin's browser code imports as peer dependencies, so an application that installs the plugin can resolve them while a server deployment installs none of them. + + A plugin's `client/` is not bundled by the plugin: `build` is `tsc`, so `dist/client/*.js` keeps its bare imports and the consuming application's Vite build resolves them. That application has only what the published manifest declares, and npm does not publish `devDependencies` — so a client import declared only there fails with `Could not resolve "…"`. `sonner` and `@xyflow/react` both shipped that way. Ten of these plugins appeared to work only because `app-template-default` happened to declare the same package for its own use; `@nocobase/app-plugin-hub`'s CodeMirror imports had no such coincidence and were unresolvable wherever it was installed. + + Peer dependencies are what satisfy both sides. An application installs one shared copy, and a deployment — which sets `autoInstallPeers: false` — installs none, so packages a server never requires stay out of it. Each keeps a matching devDependency so the workspace still resolves it and the version used here stays pinned. None is marked `optional`: an optional peer is not auto-installed anywhere, including in the application that needs it. + + `create-plugin` emits the same shape and its generated `AGENTS.md` teaches it, so a plugin created tomorrow declares its browser packages as peers rather than repeating the mistake. + +- 52d1107: Declare each peer dependency once, dropping the devDependency that used to accompany it. + + The pairing was required on the grounds that a peer range is wide enough for development to drift off this repository's copy. It is not: pnpm installs a peer and links it into the plugin's own `node_modules`, resolving `workspace:^` to the same package `workspace:*` would. A plugin with the devDependency removed still links, typechecks, builds, and tests against it — verified against a clean install with every plugin's `node_modules` deleted first. + + What remained was a second declaration that changed nothing and had to be kept in step with the first. `pnpm peers:check` no longer asks for it, and `create-plugin` no longer emits it. + ## 0.1.0-beta.7 ### Minor Changes diff --git a/packages/plugins/app-plugin-notification-provider/package.json b/packages/plugins/app-plugin-notification-provider/package.json index 8d2d4b4437c..faf015a4eb1 100644 --- a/packages/plugins/app-plugin-notification-provider/package.json +++ b/packages/plugins/app-plugin-notification-provider/package.json @@ -2,7 +2,7 @@ "name": "@nocobase/app-plugin-notification-provider", "displayName": "Notification Provider App Plugin", "description": "Registers a Sonner-backed Refine notification provider with the application client runtime.", - "version": "0.1.0-beta.7", + "version": "0.1.0-beta.8", "type": "module", "prettier": "@nocobase/dev-config/prettier", "sideEffects": false, diff --git a/packages/plugins/app-plugin-notification-providers/CHANGELOG.md b/packages/plugins/app-plugin-notification-providers/CHANGELOG.md index fb84c7a4e39..bcfe775f762 100644 --- a/packages/plugins/app-plugin-notification-providers/CHANGELOG.md +++ b/packages/plugins/app-plugin-notification-providers/CHANGELOG.md @@ -1,5 +1,20 @@ # @nocobase/app-plugin-notification-providers +## 0.2.0-beta.3 + +### Patch Changes + +- 52d1107: Declare each peer dependency once, dropping the devDependency that used to accompany it. + + The pairing was required on the grounds that a peer range is wide enough for development to drift off this repository's copy. It is not: pnpm installs a peer and links it into the plugin's own `node_modules`, resolving `workspace:^` to the same package `workspace:*` would. A plugin with the devDependency removed still links, typechecks, builds, and tests against it — verified against a clean install with every plugin's `node_modules` deleted first. + + What remained was a second declaration that changed nothing and had to be kept in step with the first. `pnpm peers:check` no longer asks for it, and `create-plugin` no longer emits it. + +- Updated dependencies [52d1107] +- Updated dependencies [52d1107] +- Updated dependencies [52d1107] + - @nocobase/app-plugin-notification@0.1.0-beta.5 + ## Unreleased ### Minor Changes diff --git a/packages/plugins/app-plugin-notification-providers/package.json b/packages/plugins/app-plugin-notification-providers/package.json index ca496d2cda0..b0ac5d1f107 100644 --- a/packages/plugins/app-plugin-notification-providers/package.json +++ b/packages/plugins/app-plugin-notification-providers/package.json @@ -2,7 +2,7 @@ "name": "@nocobase/app-plugin-notification-providers", "displayName": "Notification Providers App Plugin", "description": "Provides built-in notification Channels and Providers.", - "version": "0.2.0-beta.2", + "version": "0.2.0-beta.3", "type": "module", "prettier": "@nocobase/dev-config/prettier", "engines": { diff --git a/packages/plugins/app-plugin-notification/CHANGELOG.md b/packages/plugins/app-plugin-notification/CHANGELOG.md index adb28b52a1b..469bf8fffaa 100644 --- a/packages/plugins/app-plugin-notification/CHANGELOG.md +++ b/packages/plugins/app-plugin-notification/CHANGELOG.md @@ -1,5 +1,35 @@ # @nocobase/app-plugin-notification +## 0.1.0-beta.5 + +### Patch Changes + +- 52d1107: Resolve the shared UI packages through the workspace catalog: `@base-ui/react`, `class-variance-authority`, `clsx`, `lucide-react`, `shadcn`, `tailwind-merge`, and `tw-animate-css`. + + Every package already agreed on one version for each of these — the catalog is what keeps them agreeing. A range edited in one manifest and not the others would otherwise put two copies of a UI primitive into an application's bundle, which is the kind of drift nothing reports until a component behaves differently depending on which plugin rendered it. + + Peer dependencies use `catalog:` too. `pnpm pack` resolves it before publishing, so a consumer still reads an ordinary range. + +- 52d1107: Declare the packages each plugin's browser code imports as peer dependencies, so an application that installs the plugin can resolve them while a server deployment installs none of them. + + A plugin's `client/` is not bundled by the plugin: `build` is `tsc`, so `dist/client/*.js` keeps its bare imports and the consuming application's Vite build resolves them. That application has only what the published manifest declares, and npm does not publish `devDependencies` — so a client import declared only there fails with `Could not resolve "…"`. `sonner` and `@xyflow/react` both shipped that way. Ten of these plugins appeared to work only because `app-template-default` happened to declare the same package for its own use; `@nocobase/app-plugin-hub`'s CodeMirror imports had no such coincidence and were unresolvable wherever it was installed. + + Peer dependencies are what satisfy both sides. An application installs one shared copy, and a deployment — which sets `autoInstallPeers: false` — installs none, so packages a server never requires stay out of it. Each keeps a matching devDependency so the workspace still resolves it and the version used here stays pinned. None is marked `optional`: an optional peer is not auto-installed anywhere, including in the application that needs it. + + `create-plugin` emits the same shape and its generated `AGENTS.md` teaches it, so a plugin created tomorrow declares its browser packages as peers rather than repeating the mistake. + +- 52d1107: Declare each peer dependency once, dropping the devDependency that used to accompany it. + + The pairing was required on the grounds that a peer range is wide enough for development to drift off this repository's copy. It is not: pnpm installs a peer and links it into the plugin's own `node_modules`, resolving `workspace:^` to the same package `workspace:*` would. A plugin with the devDependency removed still links, typechecks, builds, and tests against it — verified against a clean install with every plugin's `node_modules` deleted first. + + What remained was a second declaration that changed nothing and had to be kept in step with the first. `pnpm peers:check` no longer asks for it, and `create-plugin` no longer emits it. + +- Updated dependencies [52d1107] +- Updated dependencies [52d1107] +- Updated dependencies [52d1107] + - @nocobase/app-plugin-authentication@0.1.0-beta.9 + - @nocobase/app-plugin-authorization@0.2.0-beta.8 + ## 0.1.0-beta.4 ### Patch Changes diff --git a/packages/plugins/app-plugin-notification/package.json b/packages/plugins/app-plugin-notification/package.json index f1f8e8e0715..7c2e6b70d3a 100644 --- a/packages/plugins/app-plugin-notification/package.json +++ b/packages/plugins/app-plugin-notification/package.json @@ -2,7 +2,7 @@ "name": "@nocobase/app-plugin-notification", "displayName": "Notification App Plugin", "description": "Provides the application notification runtime, storage, delivery, and logs.", - "version": "0.1.0-beta.4", + "version": "0.1.0-beta.5", "type": "module", "prettier": "@nocobase/dev-config/prettier", "engines": { diff --git a/packages/plugins/app-plugin-workflow/CHANGELOG.md b/packages/plugins/app-plugin-workflow/CHANGELOG.md index 8674d787f84..f7c1f211ad4 100644 --- a/packages/plugins/app-plugin-workflow/CHANGELOG.md +++ b/packages/plugins/app-plugin-workflow/CHANGELOG.md @@ -1,5 +1,34 @@ # @nocobase/app-plugin-workflow +## 0.1.0-beta.11 + +### Patch Changes + +- 52d1107: Resolve the shared UI packages through the workspace catalog: `@base-ui/react`, `class-variance-authority`, `clsx`, `lucide-react`, `shadcn`, `tailwind-merge`, and `tw-animate-css`. + + Every package already agreed on one version for each of these — the catalog is what keeps them agreeing. A range edited in one manifest and not the others would otherwise put two copies of a UI primitive into an application's bundle, which is the kind of drift nothing reports until a component behaves differently depending on which plugin rendered it. + + Peer dependencies use `catalog:` too. `pnpm pack` resolves it before publishing, so a consumer still reads an ordinary range. + +- 52d1107: Declare the packages each plugin's browser code imports as peer dependencies, so an application that installs the plugin can resolve them while a server deployment installs none of them. + + A plugin's `client/` is not bundled by the plugin: `build` is `tsc`, so `dist/client/*.js` keeps its bare imports and the consuming application's Vite build resolves them. That application has only what the published manifest declares, and npm does not publish `devDependencies` — so a client import declared only there fails with `Could not resolve "…"`. `sonner` and `@xyflow/react` both shipped that way. Ten of these plugins appeared to work only because `app-template-default` happened to declare the same package for its own use; `@nocobase/app-plugin-hub`'s CodeMirror imports had no such coincidence and were unresolvable wherever it was installed. + + Peer dependencies are what satisfy both sides. An application installs one shared copy, and a deployment — which sets `autoInstallPeers: false` — installs none, so packages a server never requires stay out of it. Each keeps a matching devDependency so the workspace still resolves it and the version used here stays pinned. None is marked `optional`: an optional peer is not auto-installed anywhere, including in the application that needs it. + + `create-plugin` emits the same shape and its generated `AGENTS.md` teaches it, so a plugin created tomorrow declares its browser packages as peers rather than repeating the mistake. + +- 52d1107: Declare each peer dependency once, dropping the devDependency that used to accompany it. + + The pairing was required on the grounds that a peer range is wide enough for development to drift off this repository's copy. It is not: pnpm installs a peer and links it into the plugin's own `node_modules`, resolving `workspace:^` to the same package `workspace:*` would. A plugin with the devDependency removed still links, typechecks, builds, and tests against it — verified against a clean install with every plugin's `node_modules` deleted first. + + What remained was a second declaration that changed nothing and had to be kept in step with the first. `pnpm peers:check` no longer asks for it, and `create-plugin` no longer emits it. + +- Updated dependencies [52d1107] +- Updated dependencies [52d1107] +- Updated dependencies [52d1107] + - @nocobase/app-plugin-authentication@0.1.0-beta.9 + ## 0.1.0-beta.10 ### Minor Changes diff --git a/packages/plugins/app-plugin-workflow/package.json b/packages/plugins/app-plugin-workflow/package.json index e257c083d52..0736a84bb03 100644 --- a/packages/plugins/app-plugin-workflow/package.json +++ b/packages/plugins/app-plugin-workflow/package.json @@ -2,7 +2,7 @@ "name": "@nocobase/app-plugin-workflow", "displayName": "Workflow App Plugin", "description": "Adds workflow runtime, persistence, and HTTP APIs to a NocoBase app.", - "version": "0.1.0-beta.10", + "version": "0.1.0-beta.11", "type": "module", "sideEffects": [ "**/*.css" diff --git a/packages/templates/app-template-default/CHANGELOG.md b/packages/templates/app-template-default/CHANGELOG.md index ba3a65c95ac..4dffde354db 100644 --- a/packages/templates/app-template-default/CHANGELOG.md +++ b/packages/templates/app-template-default/CHANGELOG.md @@ -1,5 +1,46 @@ # @nocobase/app-template-default +## 1.0.0-beta.19 + +### Minor Changes + +- 52d1107: Keep client packages out of the server deployment, and make every native binary match the platform being deployed to. + + A plugin's `client/` is compiled by the consuming application's Vite build, so the packages it imports have to be published in the plugin's manifest — but a server has no client build and never requires them. Plugins now declare those as peer dependencies, and the generated `dist/pnpm-workspace.yaml` sets `autoInstallPeers: false`, so an application installs one shared copy while a deployment installs none. What reaches a server is decided by declarations rather than by analysis. + + Native binaries are compiled for one platform, architecture, C library, and Node ABI at once, so a build made on a Mac installs binaries a Linux server cannot load. `pnpm build` targets the machine it runs on, keeping `pnpm build && pnpm start` working; `--target linux-x64` (or `linux-arm64`, `linux-x64-musl`, `darwin-arm64`, `win32-x64`) and `--node-version` select another. Each build states the platform it produced and records it in `dist/package.json` under `nocobase.buildTarget`. + + The build then verifies its own result: it fails when a package the application's own server, database, or CLI code imports would not reach a deployment. It reads literal specifiers, so an import whose name is assembled at run time is invisible to it and has to be declared deliberately. + + Add `pnpm server:deps:retarget` and `pnpm server:deps:verify`, which run the two steps on their own. + +### Patch Changes + +- 52d1107: Declare the packages an application's server, database, and CLI code imports in `dependencies` rather than `devDependencies`, and generate `dist/package.json` from that declaration instead of by scanning the built output. + + The scan existed because the declaration did not: with every package in `devDependencies`, nothing could tell which of them a deployment needed, so the build walked `dist/server` for bare imports and expanded each transitive dependency by hand. With the declaration correct, `pnpm install` applies the same rules — a plugin's `dependencies` come along, its `peerDependencies` are skipped by `autoInstallPeers: false`, and `devDependencies` were never published — and a scan that resolves specifiers is a scan that can miss one. + +- 52d1107: Resolve the shared UI packages through the workspace catalog: `@base-ui/react`, `class-variance-authority`, `clsx`, `lucide-react`, `shadcn`, `tailwind-merge`, and `tw-animate-css`. + + Every package already agreed on one version for each of these — the catalog is what keeps them agreeing. A range edited in one manifest and not the others would otherwise put two copies of a UI primitive into an application's bundle, which is the kind of drift nothing reports until a component behaves differently depending on which plugin rendered it. + + Peer dependencies use `catalog:` too. `pnpm pack` resolves it before publishing, so a consumer still reads an ordinary range. + +- Updated dependencies [52d1107] +- Updated dependencies [52d1107] +- Updated dependencies [52d1107] + - @nocobase/app-plugin-ai-employee@0.1.0-beta.5 + - @nocobase/app-plugin-ai-knowledge-base@0.1.0-beta.5 + - @nocobase/app-plugin-authentication@0.1.0-beta.9 + - @nocobase/app-plugin-authorization@0.2.0-beta.8 + - @nocobase/app-plugin-i18n@0.1.0-beta.4 + - @nocobase/app-plugin-install@0.1.0-beta.6 + - @nocobase/app-plugin-notification@0.1.0-beta.5 + - @nocobase/app-plugin-notification-in-app@0.2.0-beta.6 + - @nocobase/app-plugin-workflow@0.1.0-beta.11 + - @nocobase/app-plugin-file-repository@0.0.2-beta.1 + - @nocobase/app-plugin-notification-providers@0.2.0-beta.3 + ## 1.0.0-beta.18 ### Minor Changes diff --git a/packages/templates/app-template-default/package.json b/packages/templates/app-template-default/package.json index 36fd18b0a6d..fd1573c3450 100644 --- a/packages/templates/app-template-default/package.json +++ b/packages/templates/app-template-default/package.json @@ -1,7 +1,7 @@ { "name": "@nocobase/app-template-default", "displayName": "Default Template", - "version": "1.0.0-beta.18", + "version": "1.0.0-beta.19", "type": "module", "prettier": "@nocobase/dev-config/prettier", "engines": { @@ -10,7 +10,7 @@ "packageManager": "pnpm@11.7.0", "nocobase": { "templateKind": "app", - "defaultTemplateVersion": "1.0.0-beta.18" + "defaultTemplateVersion": "1.0.0-beta.19" }, "devDependencies": { "@ai-sdk/react": "2.0.0", diff --git a/packages/templates/app-template-examples/CHANGELOG.md b/packages/templates/app-template-examples/CHANGELOG.md index 053b2bb07b1..003fb2b066d 100644 --- a/packages/templates/app-template-examples/CHANGELOG.md +++ b/packages/templates/app-template-examples/CHANGELOG.md @@ -1,5 +1,55 @@ # @nocobase/app-template-examples +## 0.1.0-beta.1 + +### Minor Changes + +- 52d1107: Keep client packages out of the server deployment, and make every native binary match the platform being deployed to. + + A plugin's `client/` is compiled by the consuming application's Vite build, so the packages it imports have to be published in the plugin's manifest — but a server has no client build and never requires them. Plugins now declare those as peer dependencies, and the generated `dist/pnpm-workspace.yaml` sets `autoInstallPeers: false`, so an application installs one shared copy while a deployment installs none. What reaches a server is decided by declarations rather than by analysis. + + Native binaries are compiled for one platform, architecture, C library, and Node ABI at once, so a build made on a Mac installs binaries a Linux server cannot load. `pnpm build` targets the machine it runs on, keeping `pnpm build && pnpm start` working; `--target linux-x64` (or `linux-arm64`, `linux-x64-musl`, `darwin-arm64`, `win32-x64`) and `--node-version` select another. Each build states the platform it produced and records it in `dist/package.json` under `nocobase.buildTarget`. + + The build then verifies its own result: it fails when a package the application's own server, database, or CLI code imports would not reach a deployment. It reads literal specifiers, so an import whose name is assembled at run time is invisible to it and has to be declared deliberately. + + Add `pnpm server:deps:retarget` and `pnpm server:deps:verify`, which run the two steps on their own. + +### Patch Changes + +- 52d1107: Declare the packages an application's server, database, and CLI code imports in `dependencies` rather than `devDependencies`, and generate `dist/package.json` from that declaration instead of by scanning the built output. + + The scan existed because the declaration did not: with every package in `devDependencies`, nothing could tell which of them a deployment needed, so the build walked `dist/server` for bare imports and expanded each transitive dependency by hand. With the declaration correct, `pnpm install` applies the same rules — a plugin's `dependencies` come along, its `peerDependencies` are skipped by `autoInstallPeers: false`, and `devDependencies` were never published — and a scan that resolves specifiers is a scan that can miss one. + +- 52d1107: Resolve the shared UI packages through the workspace catalog: `@base-ui/react`, `class-variance-authority`, `clsx`, `lucide-react`, `shadcn`, `tailwind-merge`, and `tw-animate-css`. + + Every package already agreed on one version for each of these — the catalog is what keeps them agreeing. A range edited in one manifest and not the others would otherwise put two copies of a UI primitive into an application's bundle, which is the kind of drift nothing reports until a component behaves differently depending on which plugin rendered it. + + Peer dependencies use `catalog:` too. `pnpm pack` resolves it before publishing, so a consumer still reads an ordinary range. + +- Updated dependencies [52d1107] +- Updated dependencies [52d1107] +- Updated dependencies [52d1107] + - @nocobase/app-plugin-ai-employee@0.1.0-beta.5 + - @nocobase/app-plugin-ai-knowledge-base@0.1.0-beta.5 + - @nocobase/app-plugin-authentication@0.1.0-beta.9 + - @nocobase/app-plugin-authorization@0.2.0-beta.8 + - @nocobase/app-plugin-i18n@0.1.0-beta.4 + - @nocobase/app-plugin-install@0.1.0-beta.6 + - @nocobase/app-plugin-notification@0.1.0-beta.5 + - @nocobase/app-plugin-notification-in-app@0.2.0-beta.6 + - @nocobase/app-plugin-workflow@0.1.0-beta.11 + - @nocobase/app-plugin-repository-example@0.1.0-beta.2 + - @nocobase/app-plugin-routes-example@0.1.0-beta.8 + - @nocobase/app-plugin-file-repository@0.0.2-beta.1 + - @nocobase/app-plugin-notification-providers@0.2.0-beta.3 + - @nocobase/app-plugin-cli-example@0.1.0-beta.1 + - @nocobase/app-plugin-database-example@0.1.0-beta.5 + - @nocobase/app-plugin-file-repository-example@0.0.2-beta.1 + - @nocobase/app-plugin-queue-example@0.1.0-beta.5 + - @nocobase/app-plugin-realtime-example@0.1.0-beta.5 + - @nocobase/app-plugin-service-provider-example@0.1.0-beta.3 + - @nocobase/app-plugin-skills-example@0.1.0-beta.2 + ## 0.0.2-beta.0 ### Patch Changes diff --git a/packages/templates/app-template-examples/package.json b/packages/templates/app-template-examples/package.json index 875d14a9d3d..00cf8ebc979 100644 --- a/packages/templates/app-template-examples/package.json +++ b/packages/templates/app-template-examples/package.json @@ -1,7 +1,7 @@ { "name": "@nocobase/app-template-examples", "displayName": "NocoBase Examples", - "version": "0.0.2-beta.0", + "version": "0.1.0-beta.1", "type": "module", "prettier": "@nocobase/dev-config/prettier", "engines": { @@ -10,7 +10,7 @@ "packageManager": "pnpm@11.7.0", "nocobase": { "templateKind": "app", - "defaultTemplateVersion": "0.0.2-beta.0" + "defaultTemplateVersion": "0.1.0-beta.1" }, "devDependencies": { "@ai-sdk/react": "2.0.0", diff --git a/packages/templates/app-template-hub/CHANGELOG.md b/packages/templates/app-template-hub/CHANGELOG.md index dd3252d5991..d5edf67c1eb 100644 --- a/packages/templates/app-template-hub/CHANGELOG.md +++ b/packages/templates/app-template-hub/CHANGELOG.md @@ -1,5 +1,51 @@ # @nocobase/app-template-hub +## 1.0.0-beta.9 + +### Minor Changes + +- 52d1107: Keep client packages out of the server deployment, and make every native binary match the platform being deployed to. + + A plugin's `client/` is compiled by the consuming application's Vite build, so the packages it imports have to be published in the plugin's manifest — but a server has no client build and never requires them. Plugins now declare those as peer dependencies, and the generated `dist/pnpm-workspace.yaml` sets `autoInstallPeers: false`, so an application installs one shared copy while a deployment installs none. What reaches a server is decided by declarations rather than by analysis. + + Native binaries are compiled for one platform, architecture, C library, and Node ABI at once, so a build made on a Mac installs binaries a Linux server cannot load. `pnpm build` targets the machine it runs on, keeping `pnpm build && pnpm start` working; `--target linux-x64` (or `linux-arm64`, `linux-x64-musl`, `darwin-arm64`, `win32-x64`) and `--node-version` select another. Each build states the platform it produced and records it in `dist/package.json` under `nocobase.buildTarget`. + + The build then verifies its own result: it fails when a package the application's own server, database, or CLI code imports would not reach a deployment. It reads literal specifiers, so an import whose name is assembled at run time is invisible to it and has to be declared deliberately. + + Add `pnpm server:deps:retarget` and `pnpm server:deps:verify`, which run the two steps on their own. + +### Patch Changes + +- 52d1107: Declare the packages an application's server, database, and CLI code imports in `dependencies` rather than `devDependencies`, and generate `dist/package.json` from that declaration instead of by scanning the built output. + + The scan existed because the declaration did not: with every package in `devDependencies`, nothing could tell which of them a deployment needed, so the build walked `dist/server` for bare imports and expanded each transitive dependency by hand. With the declaration correct, `pnpm install` applies the same rules — a plugin's `dependencies` come along, its `peerDependencies` are skipped by `autoInstallPeers: false`, and `devDependencies` were never published — and a scan that resolves specifiers is a scan that can miss one. + +- 52d1107: Resolve the shared UI packages through the workspace catalog: `@base-ui/react`, `class-variance-authority`, `clsx`, `lucide-react`, `shadcn`, `tailwind-merge`, and `tw-animate-css`. + + Every package already agreed on one version for each of these — the catalog is what keeps them agreeing. A range edited in one manifest and not the others would otherwise put two copies of a UI primitive into an application's bundle, which is the kind of drift nothing reports until a component behaves differently depending on which plugin rendered it. + + Peer dependencies use `catalog:` too. `pnpm pack` resolves it before publishing, so a consumer still reads an ordinary range. + +- Updated dependencies [52d1107] +- Updated dependencies [52d1107] +- Updated dependencies [52d1107] + - @nocobase/app-plugin-authentication@0.1.0-beta.9 + - @nocobase/app-plugin-authorization@0.2.0-beta.8 + - @nocobase/app-plugin-hub@0.0.2-beta.2 + - @nocobase/app-plugin-i18n@0.1.0-beta.4 + - @nocobase/app-plugin-install@0.1.0-beta.6 + - @nocobase/app-plugin-notification@0.1.0-beta.5 + - @nocobase/app-plugin-notification-in-app@0.2.0-beta.6 + - @nocobase/app-plugin-workflow@0.1.0-beta.11 + - @nocobase/app-plugin-routes-example@0.1.0-beta.8 + - @nocobase/app-plugin-notification-providers@0.2.0-beta.3 + - @nocobase/app-plugin-cli-example@0.1.0-beta.1 + - @nocobase/app-plugin-database-example@0.1.0-beta.5 + - @nocobase/app-plugin-queue-example@0.1.0-beta.5 + - @nocobase/app-plugin-realtime-example@0.1.0-beta.5 + - @nocobase/app-plugin-service-provider-example@0.1.0-beta.3 + - @nocobase/app-plugin-skills-example@0.1.0-beta.2 + ## 1.0.0-beta.8 ### Minor Changes diff --git a/packages/templates/app-template-hub/package.json b/packages/templates/app-template-hub/package.json index 831b54486a5..ff2fbcec63b 100644 --- a/packages/templates/app-template-hub/package.json +++ b/packages/templates/app-template-hub/package.json @@ -1,7 +1,7 @@ { "name": "@nocobase/app-template-hub", "displayName": "NocoBase Hub", - "version": "1.0.0-beta.8", + "version": "1.0.0-beta.9", "type": "module", "prettier": "@nocobase/dev-config/prettier", "engines": { @@ -10,7 +10,7 @@ "packageManager": "pnpm@11.7.0", "nocobase": { "templateKind": "hub", - "defaultTemplateVersion": "1.0.0-beta.8" + "defaultTemplateVersion": "1.0.0-beta.9" }, "devDependencies": { "@ai-sdk/react": "2.0.0", diff --git a/packages/tools/create-plugin/CHANGELOG.md b/packages/tools/create-plugin/CHANGELOG.md index 29e81aac12b..58b684dddfb 100644 --- a/packages/tools/create-plugin/CHANGELOG.md +++ b/packages/tools/create-plugin/CHANGELOG.md @@ -1,5 +1,29 @@ # @nocobase/create-plugin +## 0.1.0-beta.4 + +### Patch Changes + +- 52d1107: Resolve the shared UI packages through the workspace catalog: `@base-ui/react`, `class-variance-authority`, `clsx`, `lucide-react`, `shadcn`, `tailwind-merge`, and `tw-animate-css`. + + Every package already agreed on one version for each of these — the catalog is what keeps them agreeing. A range edited in one manifest and not the others would otherwise put two copies of a UI primitive into an application's bundle, which is the kind of drift nothing reports until a component behaves differently depending on which plugin rendered it. + + Peer dependencies use `catalog:` too. `pnpm pack` resolves it before publishing, so a consumer still reads an ordinary range. + +- 52d1107: Declare the packages each plugin's browser code imports as peer dependencies, so an application that installs the plugin can resolve them while a server deployment installs none of them. + + A plugin's `client/` is not bundled by the plugin: `build` is `tsc`, so `dist/client/*.js` keeps its bare imports and the consuming application's Vite build resolves them. That application has only what the published manifest declares, and npm does not publish `devDependencies` — so a client import declared only there fails with `Could not resolve "…"`. `sonner` and `@xyflow/react` both shipped that way. Ten of these plugins appeared to work only because `app-template-default` happened to declare the same package for its own use; `@nocobase/app-plugin-hub`'s CodeMirror imports had no such coincidence and were unresolvable wherever it was installed. + + Peer dependencies are what satisfy both sides. An application installs one shared copy, and a deployment — which sets `autoInstallPeers: false` — installs none, so packages a server never requires stay out of it. Each keeps a matching devDependency so the workspace still resolves it and the version used here stays pinned. None is marked `optional`: an optional peer is not auto-installed anywhere, including in the application that needs it. + + `create-plugin` emits the same shape and its generated `AGENTS.md` teaches it, so a plugin created tomorrow declares its browser packages as peers rather than repeating the mistake. + +- 52d1107: Declare each peer dependency once, dropping the devDependency that used to accompany it. + + The pairing was required on the grounds that a peer range is wide enough for development to drift off this repository's copy. It is not: pnpm installs a peer and links it into the plugin's own `node_modules`, resolving `workspace:^` to the same package `workspace:*` would. A plugin with the devDependency removed still links, typechecks, builds, and tests against it — verified against a clean install with every plugin's `node_modules` deleted first. + + What remained was a second declaration that changed nothing and had to be kept in step with the first. `pnpm peers:check` no longer asks for it, and `create-plugin` no longer emits it. + ## 0.1.0-beta.3 ### Minor Changes diff --git a/packages/tools/create-plugin/package.json b/packages/tools/create-plugin/package.json index 8a833afc251..50d259e09f9 100644 --- a/packages/tools/create-plugin/package.json +++ b/packages/tools/create-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@nocobase/create-plugin", - "version": "0.1.0-beta.3", + "version": "0.1.0-beta.4", "description": "Create a NocoBase 3 application plugin.", "type": "module", "prettier": "@nocobase/dev-config/prettier",