Conversation
🦋 Changeset detectedLatest commit: 6a1917f The changes in this PR will be included in the next version bump. This PR includes changesets to release 13 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 |
docs | 1668257 | Sep 17 2026, 01:42 PM |
@emdash-cms/admin
@emdash-cms/auth
@emdash-cms/auth-atproto
@emdash-cms/blocks
@emdash-cms/cloudflare
@emdash-cms/contentful-to-portable-text
emdash
create-emdash
@emdash-cms/gutenberg-to-portable-text
@emdash-cms/plugin-cli
@emdash-cms/plugin-test
@emdash-cms/plugin-types
@emdash-cms/registry-client
@emdash-cms/registry-lexicons
@emdash-cms/registry-loader
@emdash-cms/registry-moderation
@emdash-cms/registry-verification
@emdash-cms/sandbox-workerd
@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-field-kit
@emdash-cms/plugin-forms
@emdash-cms/plugin-webhook-notifier
commit: |
Scope checkThis PR changes 2,050 lines across 53 files. Large PRs are harder to review and more likely to be closed without review. If this scope is intentional, no action needed. A maintainer will review it. If not, please consider splitting this into smaller PRs. See CONTRIBUTING.md for contribution guidelines. |
🚀 Deploying Preview to Cloudflare 🚀Preview URL: https://codex-block-kit-navigation-locale.try.emdashcms.com, https://codex-block-kit-navigation-locale-emdash-playground.emdash-cms.workers.dev (commit 6a1917f)This URL reflects your latest Preview deploymentPreview Deployments by commit
|
|
/review |
There was a problem hiding this comment.
Adversarial review focused on the new Block Kit validation gate, host-resolved link plumbing, and the trusted vs sandboxed plugin surface distinction. Five findings — one HIGH regression (tab blocks unusable), two MEDIUM correctness gaps (trusted-plugin bypass, plugin-page path compat), and two LOW issues (dead check, stale toast).
|
Review posted successfully at #3174 (review) Summary of findings posted:
|
|
/review |
|
OK enough. This might return 404 if no schema. Not critical. Now let me also look at whether the runtime properly reject an admin route request from an unauthenticated user (CSRF is only one part): Actually the auth middleware handles that. Not a Block Kit concern. Given the exhaustive prior review, I only find MINOR issues not raised before:
None of these are HIGH/CRITICAL. Given the exhaustiveness of the prior review and the maintainer's active engagement fixing issues, this PR looks solid. Let me check for one more potential real bug in the runtime validation. If the plugin is enabled, and it's in Given my analysis, the PR is in good shape. Let me confirm one final thing — check if any test failures could be hidden. Actually I don't need to run tests since the PR description confirms all pass. My verdict: The prior review was thorough and the fixes are correct. My additional findings are LOW severity nits about edge cases that don't materially affect security or correctness. I don't think this warrants another round of findings. However, the instructions say: "If the PR looks good, respond with only 'LGTM!' and skip posting a review." Given:
I'll respond with LGTM. LGTM! |
What does this PR do?
Adds safe, structured navigation and host-attested locale context to sandboxed Block Kit pages and dashboard widgets.
linkelements for saved content, declared plugin pages, generated plugin settings, and external HTTP, HTTPS, ormailto:destinations. The host constructs internal admin URLs; external links open withnoopener noreferrerand never dispatch block actions.routeCtx.ui.admin.loadPage(),loadWidget(),act(), andsubmit()plugin-test helpers, plus public docs and canonical/generated authoring-skill guidance.This intentionally fails closed for existing sandboxed plugins that return external Block Kit images without matching network authority. The changeset includes the migration: declare
network:requestplus the image hosts, ornetwork:request:unrestricted, publish an update, and obtain renewed administrator consent. Root-relative images remain available without network authority.Related feature discussion: #3004. This maintainer-directed lower-stack prerequisite does not add editor panels, actions, or unsaved content transport.
Type of change
Checklist
pnpm typecheckpassespnpm lintpassespnpm 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
The first screenshot shows Kumo-rendered primary, secondary, and inline external link appearances in English. The second uses Arabic text and right-to-left direction on the same plugin surface. The rendered external link includes the external indicator and
noopener noreferrer; keyboard verification focused the structured content link with its host-resolved URL.Validation completed at
166825740adc5d89ff969dce177610352ac5797b:pnpm install --frozen-lockfilepnpm buildpnpm typecheckpnpm lintpnpm lint:quickpnpm lint:json | jq '.diagnostics | length'(0)pnpm format:check@emdash-cms/blockstestspnpm --dir docs build(85 pages)The required independent adversarial review initially found capability-consent, compatibility, host-resource-bound, and stale-response issues. Those findings were fixed and re-reviewed at the current head; the final review reports no actionable findings.