Conversation
…ckage.json Renames the deprecated capability aliases (`read:content`, `write:content`, `read:media`, `write:media`, `network:fetch`, `network:fetch:any`) used by the built-in plugins to their current names. Plugin descriptors now read `version` from each package's `package.json` instead of carrying a stale hard-coded literal.
🦋 Changeset detectedLatest commit: 9f58d54 The changes in this PR will be included in the next version bump. This PR includes changesets to release 6 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
emdash-perf-coordinator | 9f58d54 | May 05 2026, 07:21 AM |
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
emdash-i18n | 9f58d54 | May 05 2026, 07:21 AM |
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
docs | 9f58d54 | May 05 2026, 07:22 AM |
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
emdash-demo-cache | 9f58d54 | May 05 2026, 07:22 AM |
@emdash-cms/admin
@emdash-cms/auth
@emdash-cms/blocks
@emdash-cms/cloudflare
emdash
create-emdash
@emdash-cms/gutenberg-to-portable-text
@emdash-cms/x402
@emdash-cms/plugin-ai-moderation
@emdash-cms/plugin-atproto
@emdash-cms/plugin-audit-log
@emdash-cms/plugin-color
@emdash-cms/plugin-embeds
@emdash-cms/plugin-forms
@emdash-cms/plugin-webhook-notifier
commit: |
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
emdash-playground | 9f58d54 | May 05 2026, 07:22 AM |
There was a problem hiding this comment.
Pull request overview
This PR cleans up built-in plugin manifests/descriptors by (1) updating declared capabilities from deprecated aliases to canonical names and (2) reading plugin version from each plugin package’s package.json to avoid drift between descriptor metadata and published package versions.
Changes:
- Replaced deprecated capability aliases (e.g.
read:content,network:fetch:any) with canonical capability names across built-in plugins and a Cloudflare demo manifest. - Updated multiple plugin descriptors to import
versionfrompackage.json(and updated the atproto descriptor test accordingly). - Added a changeset to patch-bump the affected published plugins.
Reviewed changes
Copilot reviewed 14 out of 14 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/plugins/webhook-notifier/src/sandbox-entry.ts | Updates network capability wording in an error message. |
| packages/plugins/webhook-notifier/src/index.ts | Uses package.json version and renames network capability to canonical name. |
| packages/plugins/sandboxed-test/src/sandbox-entry.ts | Updates comments/error text to canonical content capability names. |
| packages/plugins/sandboxed-test/src/index.ts | Uses package.json version and renames declared capabilities to canonical names. |
| packages/plugins/marketplace-test/src/index.ts | Uses package.json version and renames declared capabilities to canonical names. |
| packages/plugins/marketplace-test/README.md | Updates documented capability names to canonical names. |
| packages/plugins/forms/src/index.ts | Uses package.json version and renames declared capabilities to canonical names. |
| packages/plugins/audit-log/src/index.ts | Uses package.json version and renames declared content capability to canonical name. |
| packages/plugins/atproto/tests/plugin.test.ts | Makes version assertion track package.json and updates expected capabilities. |
| packages/plugins/atproto/src/index.ts | Uses package.json version and renames declared capabilities to canonical names. |
| packages/plugins/atproto/src/atproto.ts | Updates network capability wording in an error message. |
| packages/plugins/api-test/src/index.ts | Uses package.json version and renames declared capabilities + comments to canonical names. |
| demos/cloudflare/plugins/sandbox-test/manifest.json | Renames declared capability to canonical name. |
| .changeset/plugins-rename-deprecated-capabilities.md | Patch changeset for the published plugins affected by these cleanups. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| export function requireHttp(ctx: PluginContext) { | ||
| if (!ctx.http) { | ||
| throw new Error("AT Protocol plugin requires the network:fetch capability"); | ||
| throw new Error("AT Protocol plugin requires the network:request capability"); |
| function getFetchFn(ctx: PluginContext): FetchFn { | ||
| if (!ctx.http) { | ||
| throw new Error("Webhook notifier requires network:fetch capability"); | ||
| throw new Error("Webhook notifier requires network:request capability"); |
| format: "standard", | ||
| entrypoint: "@emdash-cms/plugin-webhook-notifier/sandbox", | ||
| capabilities: ["network:fetch:any"], | ||
| capabilities: ["network:request:unrestricted"], |
| format: "standard", | ||
| entrypoint: "@emdash-cms/plugin-audit-log/sandbox", | ||
| capabilities: ["read:content"], | ||
| capabilities: ["content:read"], |
… validation The publish endpoint's allow-list still only contained the deprecated capability aliases, so manifests using the current names (e.g. `content:read`) were rejected with 400. Adds the current names alongside the deprecated ones during the transition window. The publish e2e test now reads the audit-log version from `package.json` instead of hard-coding it.
What does this PR do?
Two cleanup changes to the built-in plugins under
packages/plugins/(plus thedemos/cloudflare/plugins/sandbox-testmanifest):Rename deprecated capability aliases. The plugin runtime accepts both the deprecated names (e.g.
read:content,network:fetch:any) and the current ones (content:read,network:request:unrestricted) and silently normalizes deprecated → current, but the bundled built-in plugins were still declaring the deprecated names — which means warnings at bundle/validate and a hard fail at marketplace publish. All capabilities have been moved to current names. Comments, error messages, README snippets, and the atproto descriptor test that asserts on the capability list have been updated alongside.Read
versionfrompackage.jsoninstead of a hard-coded literal.webhook-notifieralready did this; the rest of the plugins I touched in this branch had stale literals (e.g. atproto declared0.1.0in the descriptor while the package was at0.1.2). They nowimport { version } from "../package.json"so the descriptor stays in sync with the published version.The atproto plugin test now asserts
descriptor.version === version(imported frompackage.json) instead of a hard-coded string, so the test moves with the package.A patch-bump changeset is included for the four published plugins:
@emdash-cms/plugin-atproto,@emdash-cms/plugin-audit-log,@emdash-cms/plugin-forms,@emdash-cms/plugin-webhook-notifier. The three private plugins (api-test,marketplace-test,sandboxed-test) don't need bumps.Closes #
Type of change
Checklist
pnpm typecheckpassespnpm lintpasses (the 20 remaining diagnostics live inpackages/contentful-to-portable-text/and predate this branch)pnpm testpasses (or targeted tests for my change)pnpm formathas been runmessages.pochanges except in translation PRs — a workflow extracts catalogs on merge tomain.AI-generated code disclosure
Screenshots / test output
pnpm --filter @emdash-cms/plugin-atproto test— 67/67 tests pass.pnpm --filter ... typecheck— clean across all six touched plugin packages.pnpm --filter ... build— clean; the bundleddist/index.mjsfor atproto inlinesvar version = "0.1.2";, confirming the package-json import bundles correctly.