Skip to content

build(deps): bump the @wordpress group to one Gutenberg release - #691

Merged
dcalhoun merged 7 commits into
trunkfrom
build/bump-wordpress-packages
Sep 21, 2026
Merged

dcalhoun merged 7 commits into
trunkfrom
build/bump-wordpress-packages

Conversation

@dcalhoun

@dcalhoun dcalhoun commented Sep 17, 2026

Copy link
Copy Markdown
Member

What?

Update the @wordpress dependencies group to the latest releases.

Why?

These dependencies have been stale for several months, missing out on the latest features and bug fixes.

How?

  • Bump the @wordpress dependency versions
  • Regenerate patch-package files
  • Drop the @wordpress/rich-text patch fixed in WordPress/gutenberg#82598
  • Fix background color E2E test query to match UI change
  • Add an apiFetch middleware restoring the media Allow header browsers hide cross-origin, which canUser reads as denied since WordPress/gutenberg#76307

Testing Instructions

Given the numerous dependency updates, it's worth regression testing the editor in a broad manner.

Accessibility Testing Instructions

General regression testing editor navigating with screen readers.

Screenshots or screencast

N/A, no user-facing changes.


AI-generated details

Supersedes #661. That branch is Dependabot's; this one carries enough of our own work that it should be reviewed as ours.

Why the group had to move together

Dependabot bumped most of the group to the 55.0-era release but left element (6.46.0), compose (7.46.0), blocks (15.27.0) and core-data (7.54.0) on their previous majors. Every bumped package asks for element@^8.7.0, compose@^8.8.0, blocks@^16.0.0 and core-data@^8.0.0, so npm nested a second copy of each under 90 dependents — 36 copies of element alone. That is the split make check-wp-packages exists to catch.

core-data@7.54.0 was also what pinned icons at ^15.5.0, so the KNOWN_DUPLICATES allowance retired itself on its own terms: its comment already said it resolves once the packages move together.

The missing Upload button

@wordpress/core-data 7.42.0 (Gutenberg #76307) made getUserPermissionsFromAllowHeader return false for every action when the Allow header is missing. Before, it returned {}, so canUser stayed undefined.

@wordpress/editor reads hasUploadPermissions: canUser( 'create', { kind: 'postType', name: 'attachment' } ) ?? true. false does not fall through ??, so settings.mediaUpload becomes undefined and the Upload and Media Library buttons disappear from every MediaPlaceholder.

The header is missing because the editor is cross-origin to the REST API on some surfaces. A browser hides response headers the site does not name in Access-Control-Expose-Headers, and WordPress names only X-WP-Total, X-WP-TotalPages and Link.

This has blocked the whole @wordpress stream since April: #459, #506 and #538 (core-data), #537 (editor), #535 (compose), #508 and #536 (html-entities) and #539 (token-list) were all closed unmerged. The 52-package, 8-major size of this bump is that backlog.

Surface Editor origin Cross-origin? Upload without a fix
iOS, bundled file:// with allowUniversalAccessFromFileURLs 🟢 CORS bypassed 🟢 OK
iOS, Vite dev server http://localhost:5173 🔴 Yes 🔴 Broken
Android, self-hosted with application password https://<site-host>/assets/ 🟢 No 🟢 OK
Android, namespaced sites https://<site-host>/assets/ 🔴 Yes 🔴 Broken
Android, Vite dev server http://localhost:5173 🔴 Yes 🔴 Broken
Web E2E / make dev-server localhost:5173 🔴 Yes 🔴 Broken

The fix

mediaPermissionsMiddleware in src/utils/api-fetch.js fills in Allow: GET, POST on OPTIONS /wp/v2/media, only when the header is missing. WordPress always allows GET on that collection, so a missing header there means the browser hid it, and same-origin responses pass through untouched. Every other permission check keeps core-data's own semantics.

This replaces a core-data patch that made the canUser resolver return early whenever Allow was unreadable. Review showed why the narrower fix is better:

  • The patch did not make "missing means unknown" hold: getEntityRecord still writes false, and same-origin a missing header genuinely means "nothing permitted" (rest_send_allow_header() omits it only then).
  • Only hasUploadPermissions needs undefined. The two strict checks in the bundled packages are better served by false: the global styles hook waits for typeof === 'boolean', and Post Content renders nothing while === undefined.
  • Upstream is converging on canUser always settling to a boolean (#76307, #82638), and #82638 stops the patch applying. The middleware relies only on canUser sending OPTIONS and reading Allow, which has held since 2018.

Behaviour compared with trunk

  • Upload: unchanged optimistic default. On cross-origin surfaces, a user without upload_files sees an Upload button that fails on use.
  • Global Styles data, cross-origin: now loads, matching same-origin surfaces. It reaches the Gallery gap calculation, one-axis layout gap fallbacks, per-block style variation CSS and inspector inherited values. The canvas stylesheet still comes from the host's editorSettings.
  • Post Content block: renders read-only content instead of nothing where entity permissions are unreadable.

Options considered

Namespaced Android Local dev + E2E Source of truth Depends on
apiFetch middleware (chosen) 🟢 🟢 None, assumes upload Public middleware and REST Allow contract
Patch core-data (replaced) 🟢 🟢 None, assumes upload Resolver internals; reverses #76307 everywhere
Seed the store (incl. #462) 🟢 🟡 #462 needs a host Global upload_files Store keys and resolution args (#82638 changed them)
Preload OPTIONS /wp/v2/media with Allow 🟢 🔴 Real, per request Public preloading contract; host fetch
Expose Allow server-side 🟢 🔴 Real, per request Server change outside this repo
Relay OPTIONS through the native proxy 🟢 🔴 Real, per request New runtime machinery on both platforms
Vite dev proxy 🔴 🟢 Real, per request Masks the production bug locally
Hold the bump n/a n/a n/a Not viable: core-data@^8 is required by 6+ packages

Follow-ups

Other changes in this branch

  • Four patches regenerated. Inserter became a forwardRef function component upstream, so the open/popoverProps passthrough reads from the destructured parameter list rather than this.props.
  • The @wordpress/rich-text patch is deleted: preventFocusCapture now subscribes pointercancel to its pointerup handler upstream.
  • color-gradient.spec.js selector updated. The colour controls moved into a tools panel headed "Background" where the control is labelled "Color", the same label the text colour control carries, so the old substring match reached the panel's options menu instead.

Verification

make npm-dependencies REFRESH_DEPS=1 (7 patches apply), make lint-js-fix, make test-js, make check-wp-packages, make test-e2e (49 passed; an earlier run had four upload specs time out against Playground and pass on rerun). With the middleware unregistered, the image upload E2E fails with no Upload button.

🤖 Generated with Claude Code

@github-actions github-actions Bot added the [Type] Build Tooling Issues or PRs related to build tooling label Sep 17, 2026
@wpmobilebot

wpmobilebot commented Sep 17, 2026

Copy link
Copy Markdown

XCFramework Build

This PR's XCFramework is available for testing. Add the following to your Package.swift:

.package(url: "https://github.com/wordpress-mobile/GutenbergKit", branch: "pr-build/691")

Built from 9df95a9

dependabot Bot and others added 5 commits September 18, 2026 13:03
…h 52 updates

Bumps the wordpress-packages group with 52 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [@wordpress/a11y](https://github.com/WordPress/gutenberg/tree/HEAD/packages/a11y) | `4.43.0` | `4.55.0` |
| [@wordpress/api-fetch](https://github.com/WordPress/gutenberg/tree/HEAD/packages/api-fetch) | `7.43.0` | `7.55.0` |
| [@wordpress/autop](https://github.com/WordPress/gutenberg/tree/HEAD/packages/autop) | `4.43.0` | `4.55.0` |
| [@wordpress/base-styles](https://github.com/WordPress/gutenberg/tree/HEAD/packages/base-styles) | `6.19.0` | `13.1.0` |
| [@wordpress/blob](https://github.com/WordPress/gutenberg/tree/HEAD/packages/blob) | `4.43.0` | `4.55.0` |
| [@wordpress/block-editor](https://github.com/WordPress/gutenberg/tree/HEAD/packages/block-editor) | `15.14.0` | `17.1.0` |
| [@wordpress/block-library](https://github.com/WordPress/gutenberg/tree/HEAD/packages/block-library) | `9.41.0` | `11.0.0` |
| [@wordpress/blocks](https://github.com/WordPress/gutenberg/tree/HEAD/packages/blocks) | `15.16.0` | `15.27.0` |
| [@wordpress/commands](https://github.com/WordPress/gutenberg/tree/HEAD/packages/commands) | `1.43.0` | `1.55.0` |
| [@wordpress/components](https://github.com/WordPress/gutenberg/tree/HEAD/packages/components) | `32.5.0` | `40.1.0` |
| [@wordpress/compose](https://github.com/WordPress/gutenberg/tree/HEAD/packages/compose) | `7.43.0` | `7.46.0` |
| [@wordpress/core-data](https://github.com/WordPress/gutenberg/tree/HEAD/packages/core-data) | `7.41.0` | `7.54.0` |
| [@wordpress/data](https://github.com/WordPress/gutenberg/tree/HEAD/packages/data) | `10.43.0` | `10.55.0` |
| [@wordpress/data-controls](https://github.com/WordPress/gutenberg/tree/HEAD/packages/data-controls) | `4.41.0` | `4.55.0` |
| [@wordpress/date](https://github.com/WordPress/gutenberg/tree/HEAD/packages/date) | `5.43.0` | `5.55.0` |
| [@wordpress/deprecated](https://github.com/WordPress/gutenberg/tree/HEAD/packages/deprecated) | `4.43.0` | `4.55.0` |
| [@wordpress/dom](https://github.com/WordPress/gutenberg/tree/HEAD/packages/dom) | `4.43.0` | `4.55.0` |
| [@wordpress/dom-ready](https://github.com/WordPress/gutenberg/tree/HEAD/packages/dom-ready) | `4.43.0` | `4.55.0` |
| [@wordpress/edit-post](https://github.com/WordPress/gutenberg/tree/HEAD/packages/edit-post) | `8.41.0` | `8.55.0` |
| [@wordpress/editor](https://github.com/WordPress/gutenberg/tree/HEAD/packages/editor) | `14.41.0` | `15.0.0` |
| [@wordpress/element](https://github.com/WordPress/gutenberg/tree/HEAD/packages/element) | `6.43.0` | `6.46.0` |
| [@wordpress/escape-html](https://github.com/WordPress/gutenberg/tree/HEAD/packages/escape-html) | `3.43.0` | `3.55.0` |
| [@wordpress/format-library](https://github.com/WordPress/gutenberg/tree/HEAD/packages/format-library) | `5.41.0` | `5.55.0` |
| [@wordpress/global-styles-engine](https://github.com/WordPress/gutenberg/tree/HEAD/packages/global-styles-engine) | `1.9.0` | `1.22.0` |
| [@wordpress/hooks](https://github.com/WordPress/gutenberg/tree/HEAD/packages/hooks) | `4.43.0` | `4.55.0` |
| [@wordpress/html-entities](https://github.com/WordPress/gutenberg/tree/HEAD/packages/html-entities) | `4.43.0` | `4.55.0` |
| [@wordpress/i18n](https://github.com/WordPress/gutenberg/tree/HEAD/packages/i18n) | `6.16.0` | `6.28.0` |
| [@wordpress/icons](https://github.com/WordPress/gutenberg/tree/HEAD/packages/icons) | `11.8.0` | `16.0.0` |
| [@wordpress/is-shallow-equal](https://github.com/WordPress/gutenberg/tree/HEAD/packages/is-shallow-equal) | `5.43.0` | `5.55.0` |
| [@wordpress/keyboard-shortcuts](https://github.com/WordPress/gutenberg/tree/HEAD/packages/keyboard-shortcuts) | `5.43.0` | `5.55.0` |
| [@wordpress/keycodes](https://github.com/WordPress/gutenberg/tree/HEAD/packages/keycodes) | `4.43.0` | `4.55.0` |
| [@wordpress/media-utils](https://github.com/WordPress/gutenberg/tree/HEAD/packages/media-utils) | `5.41.0` | `5.55.0` |
| [@wordpress/notices](https://github.com/WordPress/gutenberg/tree/HEAD/packages/notices) | `5.41.0` | `5.55.0` |
| [@wordpress/patterns](https://github.com/WordPress/gutenberg/tree/HEAD/packages/patterns) | `2.41.0` | `2.55.0` |
| [@wordpress/plugins](https://github.com/WordPress/gutenberg/tree/HEAD/packages/plugins) | `7.41.0` | `7.55.0` |
| [@wordpress/preferences](https://github.com/WordPress/gutenberg/tree/HEAD/packages/preferences) | `4.43.0` | `4.55.0` |
| [@wordpress/preferences-persistence](https://github.com/WordPress/gutenberg/tree/HEAD/packages/preferences-persistence) | `2.41.0` | `2.55.0` |
| [@wordpress/primitives](https://github.com/WordPress/gutenberg/tree/HEAD/packages/primitives) | `4.43.0` | `4.55.0` |
| [@wordpress/priority-queue](https://github.com/WordPress/gutenberg/tree/HEAD/packages/priority-queue) | `3.43.0` | `3.55.0` |
| [@wordpress/private-apis](https://github.com/WordPress/gutenberg/tree/HEAD/packages/private-apis) | `1.43.0` | `1.55.0` |
| [@wordpress/rich-text](https://github.com/WordPress/gutenberg/tree/HEAD/packages/rich-text) | `7.43.0` | `7.55.0` |
| [@wordpress/router](https://github.com/WordPress/gutenberg/tree/HEAD/packages/router) | `1.41.0` | `1.55.0` |
| [@wordpress/server-side-render](https://github.com/WordPress/gutenberg/tree/HEAD/packages/server-side-render) | `6.17.0` | `6.31.0` |
| [@wordpress/shortcode](https://github.com/WordPress/gutenberg/tree/HEAD/packages/shortcode) | `4.43.0` | `4.55.0` |
| [@wordpress/style-engine](https://github.com/WordPress/gutenberg/tree/HEAD/packages/style-engine) | `2.43.0` | `2.55.0` |
| [@wordpress/theme](https://github.com/WordPress/gutenberg/tree/HEAD/packages/theme) | `0.8.0` | `2.1.0` |
| [@wordpress/token-list](https://github.com/WordPress/gutenberg/tree/HEAD/packages/token-list) | `3.41.0` | `3.55.0` |
| [@wordpress/url](https://github.com/WordPress/gutenberg/tree/HEAD/packages/url) | `4.43.0` | `4.55.0` |
| [@wordpress/viewport](https://github.com/WordPress/gutenberg/tree/HEAD/packages/viewport) | `6.41.0` | `6.55.0` |
| [@wordpress/warning](https://github.com/WordPress/gutenberg/tree/HEAD/packages/warning) | `3.43.0` | `3.55.0` |
| [@wordpress/widgets](https://github.com/WordPress/gutenberg/tree/HEAD/packages/widgets) | `4.41.0` | `4.55.0` |
| [@wordpress/wordcount](https://github.com/WordPress/gutenberg/tree/HEAD/packages/wordcount) | `4.42.0` | `4.55.0` |

Updates `@wordpress/a11y` from 4.43.0 to 4.55.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/a11y/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/a11y@4.55.0/packages/a11y)

Updates `@wordpress/api-fetch` from 7.43.0 to 7.55.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/api-fetch/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/api-fetch@7.55.0/packages/api-fetch)

Updates `@wordpress/autop` from 4.43.0 to 4.55.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/autop/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/autop@4.55.0/packages/autop)

Updates `@wordpress/base-styles` from 6.19.0 to 13.1.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/base-styles/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/base-styles@13.1.0/packages/base-styles)

Updates `@wordpress/blob` from 4.43.0 to 4.55.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/blob/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/blob@4.55.0/packages/blob)

Updates `@wordpress/block-editor` from 15.14.0 to 17.1.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/block-editor/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/block-editor@17.1.0/packages/block-editor)

Updates `@wordpress/block-library` from 9.41.0 to 11.0.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/block-library/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/block-library@11.0.0/packages/block-library)

Updates `@wordpress/blocks` from 15.16.0 to 15.27.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/blocks/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/blocks@15.27.0/packages/blocks)

Updates `@wordpress/commands` from 1.43.0 to 1.55.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/commands/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/commands@1.55.0/packages/commands)

Updates `@wordpress/components` from 32.5.0 to 40.1.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/components/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/components@40.1.0/packages/components)

Updates `@wordpress/compose` from 7.43.0 to 7.46.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/compose/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/compose@7.46.0/packages/compose)

Updates `@wordpress/core-data` from 7.41.0 to 7.54.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/core-data/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/core-data@7.54.0/packages/core-data)

Updates `@wordpress/data` from 10.43.0 to 10.55.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/data/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/data@10.55.0/packages/data)

Updates `@wordpress/data-controls` from 4.41.0 to 4.55.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/data-controls/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/data-controls@4.55.0/packages/data-controls)

Updates `@wordpress/date` from 5.43.0 to 5.55.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/date/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/date@5.55.0/packages/date)

Updates `@wordpress/deprecated` from 4.43.0 to 4.55.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/deprecated/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/deprecated@4.55.0/packages/deprecated)

Updates `@wordpress/dom` from 4.43.0 to 4.55.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/dom/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/dom@4.55.0/packages/dom)

Updates `@wordpress/dom-ready` from 4.43.0 to 4.55.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/dom-ready/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/dom-ready@4.55.0/packages/dom-ready)

Updates `@wordpress/edit-post` from 8.41.0 to 8.55.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/edit-post/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/edit-post@8.55.0/packages/edit-post)

Updates `@wordpress/editor` from 14.41.0 to 15.0.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/editor/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/editor@15.0.0/packages/editor)

Updates `@wordpress/element` from 6.43.0 to 6.46.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/element/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/element@6.46.0/packages/element)

Updates `@wordpress/escape-html` from 3.43.0 to 3.55.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/escape-html/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/escape-html@3.55.0/packages/escape-html)

Updates `@wordpress/format-library` from 5.41.0 to 5.55.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/format-library/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/format-library@5.55.0/packages/format-library)

Updates `@wordpress/global-styles-engine` from 1.9.0 to 1.22.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/global-styles-engine/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/global-styles-engine@1.22.0/packages/global-styles-engine)

Updates `@wordpress/hooks` from 4.43.0 to 4.55.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/hooks/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/hooks@4.55.0/packages/hooks)

Updates `@wordpress/html-entities` from 4.43.0 to 4.55.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/html-entities/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/html-entities@4.55.0/packages/html-entities)

Updates `@wordpress/i18n` from 6.16.0 to 6.28.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/i18n/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/i18n@6.28.0/packages/i18n)

Updates `@wordpress/icons` from 11.8.0 to 16.0.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/icons/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/icons@16.0.0/packages/icons)

Updates `@wordpress/is-shallow-equal` from 5.43.0 to 5.55.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/is-shallow-equal/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/is-shallow-equal@5.55.0/packages/is-shallow-equal)

Updates `@wordpress/keyboard-shortcuts` from 5.43.0 to 5.55.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/keyboard-shortcuts/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/keyboard-shortcuts@5.55.0/packages/keyboard-shortcuts)

Updates `@wordpress/keycodes` from 4.43.0 to 4.55.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/keycodes/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/keycodes@4.55.0/packages/keycodes)

Updates `@wordpress/media-utils` from 5.41.0 to 5.55.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/media-utils/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/media-utils@5.55.0/packages/media-utils)

Updates `@wordpress/notices` from 5.41.0 to 5.55.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/notices/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/notices@5.55.0/packages/notices)

Updates `@wordpress/patterns` from 2.41.0 to 2.55.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/patterns/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/patterns@2.55.0/packages/patterns)

Updates `@wordpress/plugins` from 7.41.0 to 7.55.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/plugins/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/plugins@7.55.0/packages/plugins)

Updates `@wordpress/preferences` from 4.43.0 to 4.55.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/preferences/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/preferences@4.55.0/packages/preferences)

Updates `@wordpress/preferences-persistence` from 2.41.0 to 2.55.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/preferences-persistence/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/preferences-persistence@2.55.0/packages/preferences-persistence)

Updates `@wordpress/primitives` from 4.43.0 to 4.55.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/primitives/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/primitives@4.55.0/packages/primitives)

Updates `@wordpress/priority-queue` from 3.43.0 to 3.55.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/priority-queue/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/priority-queue@3.55.0/packages/priority-queue)

Updates `@wordpress/private-apis` from 1.43.0 to 1.55.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/private-apis/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/private-apis@1.55.0/packages/private-apis)

Updates `@wordpress/rich-text` from 7.43.0 to 7.55.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/rich-text/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/rich-text@7.55.0/packages/rich-text)

Updates `@wordpress/router` from 1.41.0 to 1.55.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/router/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/router@1.55.0/packages/router)

Updates `@wordpress/server-side-render` from 6.17.0 to 6.31.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/server-side-render/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/server-side-render@6.31.0/packages/server-side-render)

Updates `@wordpress/shortcode` from 4.43.0 to 4.55.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/shortcode/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/shortcode@4.55.0/packages/shortcode)

Updates `@wordpress/style-engine` from 2.43.0 to 2.55.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/style-engine/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/style-engine@2.55.0/packages/style-engine)

Updates `@wordpress/theme` from 0.8.0 to 2.1.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/theme/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/theme@2.1.0/packages/theme)

Updates `@wordpress/token-list` from 3.41.0 to 3.55.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/token-list/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/token-list@3.55.0/packages/token-list)

Updates `@wordpress/url` from 4.43.0 to 4.55.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/url/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/url@4.55.0/packages/url)

Updates `@wordpress/viewport` from 6.41.0 to 6.55.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/viewport/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/viewport@6.55.0/packages/viewport)

Updates `@wordpress/warning` from 3.43.0 to 3.55.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/warning/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/warning@3.55.0/packages/warning)

Updates `@wordpress/widgets` from 4.41.0 to 4.55.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/widgets/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/widgets@4.55.0/packages/widgets)

Updates `@wordpress/wordcount` from 4.42.0 to 4.55.0
- [Release notes](https://github.com/WordPress/gutenberg/releases)
- [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/wordcount/CHANGELOG.md)
- [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/wordcount@4.55.0/packages/wordcount)

---
updated-dependencies:
- dependency-name: "@wordpress/a11y"
  dependency-version: 4.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/api-fetch"
  dependency-version: 7.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/autop"
  dependency-version: 4.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/base-styles"
  dependency-version: 13.1.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/blob"
  dependency-version: 4.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/block-editor"
  dependency-version: 17.1.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/block-library"
  dependency-version: 11.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/blocks"
  dependency-version: 15.27.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/commands"
  dependency-version: 1.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/components"
  dependency-version: 40.1.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/compose"
  dependency-version: 7.46.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/core-data"
  dependency-version: 7.54.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/data"
  dependency-version: 10.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/data-controls"
  dependency-version: 4.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/date"
  dependency-version: 5.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/deprecated"
  dependency-version: 4.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/dom"
  dependency-version: 4.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/dom-ready"
  dependency-version: 4.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/edit-post"
  dependency-version: 8.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/editor"
  dependency-version: 15.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/element"
  dependency-version: 6.46.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/escape-html"
  dependency-version: 3.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/format-library"
  dependency-version: 5.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/global-styles-engine"
  dependency-version: 1.22.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/hooks"
  dependency-version: 4.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/html-entities"
  dependency-version: 4.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/i18n"
  dependency-version: 6.28.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/icons"
  dependency-version: 16.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/is-shallow-equal"
  dependency-version: 5.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/keyboard-shortcuts"
  dependency-version: 5.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/keycodes"
  dependency-version: 4.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/media-utils"
  dependency-version: 5.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/notices"
  dependency-version: 5.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/patterns"
  dependency-version: 2.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/plugins"
  dependency-version: 7.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/preferences"
  dependency-version: 4.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/preferences-persistence"
  dependency-version: 2.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/primitives"
  dependency-version: 4.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/priority-queue"
  dependency-version: 3.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/private-apis"
  dependency-version: 1.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/rich-text"
  dependency-version: 7.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/router"
  dependency-version: 1.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/server-side-render"
  dependency-version: 6.31.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/shortcode"
  dependency-version: 4.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/style-engine"
  dependency-version: 2.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/theme"
  dependency-version: 2.1.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/token-list"
  dependency-version: 3.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/url"
  dependency-version: 4.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/viewport"
  dependency-version: 6.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/warning"
  dependency-version: 3.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/widgets"
  dependency-version: 4.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
- dependency-name: "@wordpress/wordcount"
  dependency-version: 4.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wordpress-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
Dependabot left `element`, `compose`, `blocks`, and `core-data` on their
previous majors while the rest of the group moved to the 55.0-era
release. Every bumped package asks for `element@^8.7.0`, `compose@^8.8.0`,
`blocks@^16.0.0`, and `core-data@^8.0.0`, so npm nested a second copy of
each under 90 dependents -- 36 copies of `element` alone -- which is the
split `check-wp-packages` exists to catch.

`core-data@7.54.0` was also what held `icons` at `^15.5.0`, so the
`KNOWN_DUPLICATES` allowance goes away on its own terms: its comment
already said it resolves once the packages move together.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
`Inserter` became a `forwardRef` function component upstream, so the
`open` and `popoverProps` passthrough now reads them off the destructured
parameter list rather than `this.props`. The rest carry over unchanged.

Drops the `@wordpress/rich-text` patch: `preventFocusCapture` now
subscribes `pointercancel` to its `pointerup` handler upstream, which is
what the patch added.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The colour controls moved into a tools panel headed "Background", where
the control itself is labelled "Color" -- the same label the text colour
control carries. The old `name: 'Background'` lookup is a substring match,
so it no longer reached a colour control at all: it matched the panel's
"Background options" menu toggle and opened that menu instead.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
`core-data@7.42.0` began reporting every action as denied when a response
carries no readable `Allow` header, where it previously left `canUser`
undefined. `@wordpress/editor` reads
`hasUploadPermissions: canUser( ... ) ?? true`, and `false` does not fall
through `??`, so `settings.mediaUpload` became undefined and the Upload and
Media Library buttons vanished from every `MediaPlaceholder`.

The header is unreadable because the editor is cross-origin to the REST API
on most hosts, and a browser hides response headers the site does not name
in `Access-Control-Expose-Headers` -- WordPress names only `X-WP-Total`,
`X-WP-TotalPages` and `Link`. The resolver already returns early when it
cannot reach the endpoint; this adds the symmetric case for a response whose
header it cannot read, so absent reads as unknown rather than denied and
real permissions still win same-origin.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@dcalhoun
dcalhoun force-pushed the build/bump-wordpress-packages branch from 6360b5b to c2c0a8a Compare September 18, 2026 17:16

@dcalhoun dcalhoun left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Noting that the patch files can be difficult to understand when viewing the diff. It can be worthwhile to view and compare the actual file before and after in separate tabs.

@adalpari adalpari left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Generally looks good to me. Claude raised these "medium" points you might want to have a look:

# Severity File Finding
1 Medium patches/@wordpress+core-data+8.0.0.patch:17 The patch guards only the canUser resolver. getEntityRecord (resolvers.mjs:79) reads the same Allow header and unconditionally dispatches receiveUserPermissions with all-false plus finishResolutions('canUser', …), so entity-scoped canUser still reports denied cross-origin and the patched resolver can't correct it. getUserPermissionCacheKey's .filter(Boolean) makes getEntityRecord('root','site')'s empty key collapse onto the exact keys canUser('*', {kind:'root',name:'site'}) reads. No visible breakage today (consumers use truthiness; the only ?? true consumer, hasUploadPermissions, has no id in its key), but the "absence means unknown" invariant the patch claims does not hold.
2 Medium patches/@wordpress+core-data+8.0.0.patch:17 !allowedMethods conflates "header hidden by CORS" with "WordPress sent no Allow because the user is permitted nothing" — rest_send_allow_header() only emits the header when $allowed_methods is non-empty. This flips genuine denials to unknown on the same-origin surfaces the PR marks as keeping real permissions; the README wording ("a response whose header it cannot read") understates it.

dcalhoun and others added 2 commits September 21, 2026 12:11
Browsers hide `Allow` from cross-origin REST responses, so `canUser` reports
uploads as denied and the editor drops its Upload buttons. Filling in the
header for `OPTIONS /wp/v2/media` alone keeps every other permission on
core-data's own semantics, and relies only on the public apiFetch middleware
contract rather than core-data internals.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The media permissions middleware restores upload without it. The patch left
every unreadable `canUser` check `undefined`, which upstream treats as a bug
(#76307, #82638) and which stalls consumers waiting on a boolean, such as the
editor's global styles hook. It also no longer applies to core-data trunk.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FWFUxityk43QLUBh2hjb46
@dcalhoun

dcalhoun commented Sep 21, 2026

Copy link
Copy Markdown
Member Author

Generally looks good to me. Claude raised these "medium" points you might want to have a look:

Thanks for sharing these, @adalpari. I researched and both were right. It seems they would not have significant user impact now, but it's worth addressing.

I addressed both by replacing the patch with a middleware (93f81ae, 9df95a9). An added benefit: this helps us avoid adding yet another patch, which improves maintainability.


AI-generated details
  1. getEntityRecord still writes false. Correct. The patch only covered the canUser resolver, so "missing means unknown" didn't hold.
  2. A missing Allow also means "nothing permitted". Also correct. rest_send_allow_header() omits it when every permission check fails, which is the case #76307 set out to fix.

Tracing the consumers showed only hasUploadPermissions (?? true) needs undefined. The two strict checks in the packages we bundle, the global styles hook (typeof === 'boolean') and Post Content (=== undefined), both work better with false. Upstream is also moving towards canUser always settling to a boolean (WordPress/gutenberg#82638), and that change stops the patch applying anyway.

So I replaced the patch with an apiFetch middleware that fills in Allow: GET, POST on OPTIONS /wp/v2/media, only when the header is missing (93f81ae, 9df95a9). WordPress always allows GET on that collection, so a missing header there means the browser hid it. Every other permission check keeps core-data's own semantics, so neither finding applies any more. The description has the details and follow-ups.

@dcalhoun
dcalhoun merged commit dc44d45 into trunk Sep 21, 2026
28 checks passed
@dcalhoun
dcalhoun deleted the build/bump-wordpress-packages branch September 21, 2026 18:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

[Type] Build Tooling Issues or PRs related to build tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants