RTC: add regression tests for data corruption bug due to cursor scope issue#77662
Conversation
|
The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message. To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook. |
|
👋 Thanks for your first Pull Request and for helping build the future of Gutenberg and WordPress, @danluu! In case you missed it, we'd love to have you join us in our Slack community. If you want to learn more about WordPress development in general, check out the Core Handbook full of helpful information. |
9426641 to
cdc44aa
Compare
alecgeatches
left a comment
There was a problem hiding this comment.
Good additional coverage! Merging.
This updates the pinned commit hash of the Gutenberg repository from `585cf86bb6f408b1dc61175f75db016aa4760653 ` (version `23.1.0`) to `d5ac60e6118060529737127d44a6fdc8abf57eb9` (version `23.2.0`). A full list of changes included in this commit can be found on GitHub: https://github.com/WordPress/gutenberg/compare/v23.1.0..v23.2.0. The following commits are included: - Fix PHP multisite tests (WordPress/gutenberg#77825) - Revise README for FocalPointPicker component to use object-position (WordPress/gutenberg#77722) - Experiment: Add first e2e tests for Taxonomies (WordPress/gutenberg#77828) - Content Types: Add post type management (WordPress/gutenberg#77754) - Grid: lock document cursor during resize gesture (WordPress/gutenberg#77813) - Build: Add experimental `widgets/` folder support to @wordpress/build (WordPress/gutenberg#77347) - TabPanel: Fix tab indicator animation (WordPress/gutenberg#77812) - Disable TinyMCE: Repurpose experiment as Classic block removal (WordPress/gutenberg#77838) - Cover block: Inline z-index values (WordPress/gutenberg#77753) - Button: Align link variant underline with Link and ExternalLink (WordPress/gutenberg#77842) - ui/Drawer: Polish open/close animation, fix swipe on content padding (WordPress/gutenberg#77800) - Site Editor: Remove local z-index helper entries (WordPress/gutenberg#77808) - Inline sticky search z-index values (WordPress/gutenberg#77806) - Block Manager: Inline z-index values (WordPress/gutenberg#77759) - Update TypeScript to tsgo (try 2) (WordPress/gutenberg#77682) - Editor: Inline pattern chooser z-index values (WordPress/gutenberg#77772) - Media editor modal: disable scroll wheel zoom while a crop is active (WordPress/gutenberg#77826) - Media editor modal: disable scroll wheel zoom while a pan/drag is active (WordPress/gutenberg#77863) - Media Editor Modal: Try adding undo/redo for the image cropper (WordPress/gutenberg#77782) - Connectors: Stop e2e capability restriction from leaking across specs (WordPress/gutenberg#77857) - Media Upload Modal: Fix pagination and search (WordPress/gutenberg#77872) - `defaultRenderingMode` value not respected when changed using `block_editor_settings_all` (WordPress/gutenberg#77870) - Media editor modal: expand keyboard shortcuts and add interaction helpers (WordPress/gutenberg#77871) - Media editor modal: name landmark regions and add panel headings (WordPress/gutenberg#77875) - Media Editor Modal: Use shift modifier to adjust keyboard pan speed (WordPress/gutenberg#77878) - Disable Classic block: Always register, hide from inserter conditionally (WordPress/gutenberg#77840) - ESLint: Replace `eslint-plugin-react-compiler` with `eslint-plugin-react-hooks` (WordPress/gutenberg#69962) - Disable Classic block: Control inserter support via filter (WordPress/gutenberg#77845) - Grid: add `renderResizeHandle` render prop (WordPress/gutenberg#77811) - Grid: render resize handle as component (WordPress/gutenberg#77888) - Update uuid dependency (WordPress/gutenberg#77848) - Added Translator Context for Reply (WordPress/gutenberg#77891) - Media editor modal: add Shift+R for counter-clockwise rotation (WordPress/gutenberg#77898) - Update references to default branch. (WordPress/gutenberg#77606) - Notes: Keep tall floating threads scrollable on short content (WordPress/gutenberg#77821) - Taxonomy edit route: declare @wordpress/base-styles as dependency (WordPress/gutenberg#77901) - Post Types DataViews: Make titles clickable to open edit page (WordPress/gutenberg#77885) - Upgrade and unify @types/node version (WordPress/gutenberg#77900) - Widget Types: replace bootstrap with resolver (WordPress/gutenberg#77847) - SlotFill: add dependencies to updateFill effect (WordPress/gutenberg#77907) - Grid: prevent resize runaway near viewport edge (WordPress/gutenberg#77854) - Experiment: Add taxonomy visibility fields (WordPress/gutenberg#77835) - Content Types: Add Duplicate action to taxonomy management (WordPress/gutenberg#77853) - Site Editor: Inline layout z-index values (WordPress/gutenberg#77807) - RTC: Clarify WPBlockSelection type and link to duplicates in other packages. (WordPress/gutenberg#77862) - Editor: Improve revisions diff pairing performance (WordPress/gutenberg#77126) - Media Editor Modal: In the image cropper, pan when dragging the crop instead of constraining to the visible area (WordPress/gutenberg#77899) - Block Editor: Clarify logic for 'directInsert' inner blocks setting (WordPress/gutenberg#77873) - Block Editor: Fix target block for copying direct insert block attributes (WordPress/gutenberg#77877) - Link: Fix awkward focus outline around the new-tab icon (WordPress/gutenberg#77910) - Plugin loader: use require for build/constants.php (WordPress/gutenberg#77908) - Tests: Fix argument forwarding for test:unit workspace scripts (WordPress/gutenberg#77541) - Try responsive global block styles with states (WordPress/gutenberg#77513) - Image editor: suppress image editor undo/redo while a crop interaction is active (WordPress/gutenberg#77930) - Experimental: Content types - disable create/save button based on form validity (WordPress/gutenberg#77931) - Guidelines: Refactor accordion to use CollapsibleCard (WordPress/gutenberg#77903) - Guidelines REST: Require read access for standard route (WordPress/gutenberg#77843) - Embed: Add '[embed]' shortcode transform (WordPress/gutenberg#77937) - Edit Post: Fix suppressed errors in Layout component (WordPress/gutenberg#77940) - Experiment: User post types REST controller (WordPress/gutenberg#77915) - Content Types: Add Duplicate action to post type management (WordPress/gutenberg#77844) - Experiment: Content types fix new instance returned in `useSelect` (WordPress/gutenberg#77916) - Select: Hide user agent focus ring in popup (WordPress/gutenberg#77919) - Interactivity API: Fix popover bind hydration (WordPress/gutenberg#77797) - UI: Use string label type for form controls (WordPress/gutenberg#77860) - Widget Types: bootstrap registry into the dashboard client (WordPress/gutenberg#77917) - ui/Drawer: Forward `render` prop on `Drawer.Content` to the scroll container (WordPress/gutenberg#77941) - ColorPicker : Fix inconsistent HEX input clearing behavior (WordPress/gutenberg#77912) - ExternalLink: Fix focus outline under wp-admin (WordPress/gutenberg#77935) - Experiment: Auto fill `slug` from singular label for taxonomies and post types (WordPress/gutenberg#77938) - Site editor: preserve non-global styles in pattern previews (WordPress/gutenberg#77957) - Classic Block: Unwrap experiment to hide it from inserter (WordPress/gutenberg#77911) - Migrate native tests to workspace (WordPress/gutenberg#77425) - Remove root uuid dependency (WordPress/gutenberg#77960) - Build: Update lint-staged to 16.4.0 (WordPress/gutenberg#77963) - docgen: Automatic documentation handle for TypeScript overloads (WordPress/gutenberg#77558) - Dashboard: Add experimental `WidgetDashboard` rendering engine (WordPress/gutenberg#77770) - Fix flaky Menu test (WordPress/gutenberg#77972) - Widget Types: server-side registry, decouple wp-build pages (WordPress/gutenberg#77958) - RTC: Fix divergence when two offline users reconnect (WordPress/gutenberg#77980) - Media editor: replace fine-rotation slider with RotationRuler (WordPress/gutenberg#77906) - RTC: Fix compaction unit test (WordPress/gutenberg#77986) - RTC: Attach sync observers after hydrating persisted CRDT doc (WordPress/gutenberg#77966) - Fix: Buttons block shows inserter picker when multiple allowed blocks are registered (WordPress/gutenberg#77858) - Update nvm installation script to version 0.40.4 (WordPress/gutenberg#77996) - Use theme gray for muted Text (WordPress/gutenberg#77999) - Add lint rule for non-module stylesheet imports (WordPress/gutenberg#77984) - Dashboard experiment: new icon (WordPress/gutenberg#78016) - Testing: Add `createRecord` e2e request util (WordPress/gutenberg#78017) - Widget Types: REST endpoint and core-data entity (WordPress/gutenberg#77987) - Block Editor: Remove unused reducer action types (WordPress/gutenberg#77880) - Experiment: Sync user taxonomies with post types (WordPress/gutenberg#77997) - Dashboard experiment: remove storybook examples for now (WordPress/gutenberg#78020) - Dashboard: add `WidgetDashboard.Actions` compound (WordPress/gutenberg#78019) - Experiment: add first basic user post types e2e tests and update taxonomy tests (WordPress/gutenberg#77998) - Fill in E2E tests for client-side media processing (WordPress/gutenberg#75949) - Modal: Render as a bottom sheet on mobile (WordPress/gutenberg#77956) - Grid: add warning about being under development (WordPress/gutenberg#78022) - RTC: Fix race condition on room creation which can cause a split update log (WordPress/gutenberg#77675) - Connectors: Clarify AI plugin callout copy (WordPress/gutenberg#78043) - Image editor: update sidebar aspect ratio and resize controls (WordPress/gutenberg#78046) - Fix: Only auto register settings if the plugin the connector references is installed and active. (WordPress/gutenberg#77273) - Connectors: Add is_active callback support to plugin registration (WordPress/gutenberg#77897) - Site Editor e2e tests: reimplement the wait for load (WordPress/gutenberg#77981) - Make Block Inserter search input sticky while scrolling (WordPress/gutenberg#77698) - Embed: Tighten raw URL transform isMatch (WordPress/gutenberg#78021) - Notes: Separate intent from mechanics in openTheSidebar (WordPress/gutenberg#78039) - Image editor: improve media editor crop accessibility and dialog focus (WordPress/gutenberg#78047) - Fix flaky e2e test for Pages dataview keyboard navigation (WordPress/gutenberg#78054) - RTC: Fix find_canonical_storage_post_id() always returning null (WordPress/gutenberg#78053) - Dashboard: persist layout via @wordpress/preferences (WordPress/gutenberg#78034) - Dashboard: backend default layout filter (WordPress/gutenberg#78040) - i18n: add context to scale (WordPress/gutenberg#76917) - Dashboard: lift Suspense + error boundary into widget chrome and add a default header (WordPress/gutenberg#78012) - Dashboard: add widget inserter modal (WordPress/gutenberg#78033) - Fix flaky homepage-settings e2e test (WordPress/gutenberg#78063) - Experiment: Content types single route and package (WordPress/gutenberg#78059) - Configure global fallbackFn for timezone-mock to handle Date subclasses (WordPress/gutenberg#78056) - Content types: flush rewrite rules on rewrite-impacting changes (WordPress/gutenberg#78058) - Editor: Paginate revisions slider by 100 per page (WordPress/gutenberg#77200) - Add RTC cursor-scope regression tests (WordPress/gutenberg#77662) - Dashboard: REST endpoint for the default layout (WordPress/gutenberg#78066) - Paste: preserve leading number when pasting single-line text like dates (WordPress/gutenberg#77949) - Revision: Fix failing e2e test (WordPress/gutenberg#78079) - Global Styles: Refactor client side style states to use nodes (WordPress/gutenberg#78000) - Media Editor Modal: Add focus border styles to the stencil rect when the canvas is keyboard focused (WordPress/gutenberg#78078) - Post Content focus mode: Fix flaky e2e test (WordPress/gutenberg#78084) - Update date-fns to v4.1.0 in components and editor packages (WordPress/gutenberg#78057) - Revisions: Add diagonal stripe patterns to diff markers to avoid color-only distinction (WordPress/gutenberg#77904) - Admin UI: Fix nested landmark in Page header (WordPress/gutenberg#78001) - Fix: Shortcode block does not render in Navigation Overlay (WordPress/gutenberg#77511) - Fix flaky 'publish panel' e2e test (WordPress/gutenberg#78082) - Experiment: Content types reuse some commone utils (WordPress/gutenberg#78091) - Style Runtime: Support CSS module style injection across documents (WordPress/gutenberg#77965) - Experiment: Add Classic block migration notice (WordPress/gutenberg#78090) - Content Types: Abstract and reuse label autofilling for post types (WordPress/gutenberg#78099) - i18n: add context to table header/footer label (WordPress/gutenberg#78007) - Experiment: Content types reuse `createStatusAction` (WordPress/gutenberg#78102) - Select: Support placeholder prop on Trigger (WordPress/gutenberg#78076) - feat: Enhance Connectors page on read-only file system (WordPress/gutenberg#77521) - Add missing Portal Storybook subcomponents (WordPress/gutenberg#78108) - RTC: Fix title divergence between users on page refresh after title update (WordPress/gutenberg#77666) - Docs: shortcode transforms with wrapped content + rawHandler JSDoc (WordPress/gutenberg#78003) - Connectors: Refine PHPStan type shapes (WordPress/gutenberg#78103) - Fix lockfile drift and missing dep from content-types consolidation (WordPress/gutenberg#78109) - Classic Block: Use onReplace prop for migration actions (WordPress/gutenberg#78113) - Media Editor Experiment: Add a route, based on the media editor modal, refactor the modal components (WordPress/gutenberg#77994) - i18n: add context to (site) identity (WordPress/gutenberg#78132) - Script Modules: Guard setAccessible() calls behind PHP < 8.1 check (WordPress/gutenberg#78137) - Connectors: Avoid using centered text (WordPress/gutenberg#78125) - Content Types: Introduce view items actions (WordPress/gutenberg#78104) - Fix: Guard require_once calls in generated PHP files against deployment race conditions (WordPress/gutenberg#78110) - bin/dev.mjs: warn (not exit) on stale webpack watching this checkout (WordPress/gutenberg#78098) - E2E: Reset preferences after navigable-toolbar tests (WordPress/gutenberg#78115) - Editor: Refactor 'PostPublishPanel' into function component (WordPress/gutenberg#78083) - Document how to ignore VSCode Workplace Settings. (WordPress/gutenberg#77608) - Select: Fix disabled cursor styles (WordPress/gutenberg#78112) - Revisions: Add tooltip to diff marker buttons (WordPress/gutenberg#77690) - Experiment: Make content types `_builtin` (WordPress/gutenberg#78150) - Experiment: Content types - use `form` for quick edit dialogs (WordPress/gutenberg#78149) - Experiment: Content types use `toggle` for `active` prop edit (WordPress/gutenberg#78146) - Experiment: Update view content types actions (WordPress/gutenberg#78159) - Block Editor: Add translation context for “Exit pattern” (WordPress/gutenberg#78158) - ColorPalette: Fix duplicate-key warnings and incorrect selection with identical color values (WordPress/gutenberg#78004) - Menu: Fix flaky keyboard focus test (WordPress/gutenberg#78162) - e2e tests: use editPost and createNewPost helpers everywhere (WordPress/gutenberg#78170) - Support object values in Select primitive (WordPress/gutenberg#77861) - Text: Fix render prop CSS defenses (WordPress/gutenberg#78172) - Design System: Add missing packages to Storybook introduction (WordPress/gutenberg#77504) - Add SelectControl component to @wordpress/ui (WordPress/gutenberg#77809) - Dashboard experiment: animate customize UX (WordPress/gutenberg#78065) - Add RTC y-websocket-server tests (WordPress/gutenberg#78179) - Grid: add DashboardLanes masonry surface (WordPress/gutenberg#78107) - Dashboard: staging layer for in-progress layout edits (WordPress/gutenberg#78071) - Media: Guard gutenberg_delete_heic_companion_file() against non-string $metadata['original'] (WordPress/gutenberg#78128) - Image block: Try syncing updated metadata fields (alt and caption) from the media editor (WordPress/gutenberg#78139) - Correct capitalization in help text for Breadcrumbs block (WordPress/gutenberg#78175) - Add min release age to npm config (WordPress/gutenberg#78191) - isFulfilled: don't change resolution state, call in resolveSelect (WordPress/gutenberg#78151) - Add aria-label to Revisions button in Post Summary sidebar (WordPress/gutenberg#78140) - Experiment: Content types invaidate cache for synced taxonomies-post types (WordPress/gutenberg#78143) - Shortcode: Offer block-specific transforms when text matches a registered shortcode (WordPress/gutenberg#77944) - E2E: Remove slash from bad embed request mock (WordPress/gutenberg#78200) - UI: Add component status notes to Storybook (WordPress/gutenberg#77988) - ui/Tooltip, ui/IconButton: Add positioner slot API (WordPress/gutenberg#78089) - Add motion design tokens (duration and easing) to @wordpress/theme (WordPress/gutenberg#76097) - Grid: add edit-mode overlay to DashboardGrid and DashboardLanes (WordPress/gutenberg#78199) - Grid: fix keyboard activation on draggable items (WordPress/gutenberg#78163) - ui/CollapsibleCard: support rendering Header as a heading element (WordPress/gutenberg#77962) - Revisions diff markers: enforce 24×24px minimum target size (WCAG 2.5.8) (WordPress/gutenberg#77671) - Popover: Remove close button z-index (WordPress/gutenberg#78180) - Button: Align compound component metadata (WordPress/gutenberg#78184) - Dashboard: use design animation tokens (WordPress/gutenberg#78204) - Tools: Remove save-exact from .npmrc (WordPress/gutenberg#78196) - UI: Improve docs for compound exports (WordPress/gutenberg#78212) - Bump addressable in /packages/react-native-editor/ios (WordPress/gutenberg#77128) - Bump follow-redirects from 1.15.6 to 1.16.0 (WordPress/gutenberg#77278) - Bump vite from 7.3.0 to 7.3.2 (WordPress/gutenberg#77076) - Bump flatted from 3.3.1 to 3.4.2 (WordPress/gutenberg#76708) - Bump @xmldom/xmldom from 0.8.10 to 0.8.13 (WordPress/gutenberg#77577) - Media Editor Modal: Fix empty author and attached to fields (WordPress/gutenberg#78189) - Bump fast-xml-parser from 4.5.0 to 4.5.4 (WordPress/gutenberg#76081) - Bump node-forge from 1.3.1 to 1.3.2 (WordPress/gutenberg#73601) - Experiment: Integrate `useView` in content types lists (WordPress/gutenberg#78197) - Experiment: Add term/post type count fields in content types (WordPress/gutenberg#78157) - Connectors: Increase right padding of callout for mobile layout (WordPress/gutenberg#78126) - UI: Fix subcomponent story labels (WordPress/gutenberg#78210) - Fonts: Move admin menu compat from experimental to wordpress-7.0 (WordPress/gutenberg#78227) - Experiment: Render badges for some content types' fields (WordPress/gutenberg#78194) - Testing: Consolidate CI workflows for changelog testing (WordPress/gutenberg#78169) - Edit Post: Inline meta boxes z-index values (WordPress/gutenberg#78181) - Backport package publish commits to release/23.2 (WordPress/gutenberg#78347) Props adamsilverstein, jorbin, westonruter, wildworks. Fixes #65559. git-svn-id: https://develop.svn.wordpress.org/trunk@62582 602fd350-edb4-49c9-b593-d223f7449a82
This updates the pinned commit hash of the Gutenberg repository from `585cf86bb6f408b1dc61175f75db016aa4760653 ` (version `23.1.0`) to `d5ac60e6118060529737127d44a6fdc8abf57eb9` (version `23.2.0`). A full list of changes included in this commit can be found on GitHub: https://github.com/WordPress/gutenberg/compare/v23.1.0..v23.2.0. The following commits are included: - Fix PHP multisite tests (WordPress/gutenberg#77825) - Revise README for FocalPointPicker component to use object-position (WordPress/gutenberg#77722) - Experiment: Add first e2e tests for Taxonomies (WordPress/gutenberg#77828) - Content Types: Add post type management (WordPress/gutenberg#77754) - Grid: lock document cursor during resize gesture (WordPress/gutenberg#77813) - Build: Add experimental `widgets/` folder support to @wordpress/build (WordPress/gutenberg#77347) - TabPanel: Fix tab indicator animation (WordPress/gutenberg#77812) - Disable TinyMCE: Repurpose experiment as Classic block removal (WordPress/gutenberg#77838) - Cover block: Inline z-index values (WordPress/gutenberg#77753) - Button: Align link variant underline with Link and ExternalLink (WordPress/gutenberg#77842) - ui/Drawer: Polish open/close animation, fix swipe on content padding (WordPress/gutenberg#77800) - Site Editor: Remove local z-index helper entries (WordPress/gutenberg#77808) - Inline sticky search z-index values (WordPress/gutenberg#77806) - Block Manager: Inline z-index values (WordPress/gutenberg#77759) - Update TypeScript to tsgo (try 2) (WordPress/gutenberg#77682) - Editor: Inline pattern chooser z-index values (WordPress/gutenberg#77772) - Media editor modal: disable scroll wheel zoom while a crop is active (WordPress/gutenberg#77826) - Media editor modal: disable scroll wheel zoom while a pan/drag is active (WordPress/gutenberg#77863) - Media Editor Modal: Try adding undo/redo for the image cropper (WordPress/gutenberg#77782) - Connectors: Stop e2e capability restriction from leaking across specs (WordPress/gutenberg#77857) - Media Upload Modal: Fix pagination and search (WordPress/gutenberg#77872) - `defaultRenderingMode` value not respected when changed using `block_editor_settings_all` (WordPress/gutenberg#77870) - Media editor modal: expand keyboard shortcuts and add interaction helpers (WordPress/gutenberg#77871) - Media editor modal: name landmark regions and add panel headings (WordPress/gutenberg#77875) - Media Editor Modal: Use shift modifier to adjust keyboard pan speed (WordPress/gutenberg#77878) - Disable Classic block: Always register, hide from inserter conditionally (WordPress/gutenberg#77840) - ESLint: Replace `eslint-plugin-react-compiler` with `eslint-plugin-react-hooks` (WordPress/gutenberg#69962) - Disable Classic block: Control inserter support via filter (WordPress/gutenberg#77845) - Grid: add `renderResizeHandle` render prop (WordPress/gutenberg#77811) - Grid: render resize handle as component (WordPress/gutenberg#77888) - Update uuid dependency (WordPress/gutenberg#77848) - Added Translator Context for Reply (WordPress/gutenberg#77891) - Media editor modal: add Shift+R for counter-clockwise rotation (WordPress/gutenberg#77898) - Update references to default branch. (WordPress/gutenberg#77606) - Notes: Keep tall floating threads scrollable on short content (WordPress/gutenberg#77821) - Taxonomy edit route: declare @wordpress/base-styles as dependency (WordPress/gutenberg#77901) - Post Types DataViews: Make titles clickable to open edit page (WordPress/gutenberg#77885) - Upgrade and unify @types/node version (WordPress/gutenberg#77900) - Widget Types: replace bootstrap with resolver (WordPress/gutenberg#77847) - SlotFill: add dependencies to updateFill effect (WordPress/gutenberg#77907) - Grid: prevent resize runaway near viewport edge (WordPress/gutenberg#77854) - Experiment: Add taxonomy visibility fields (WordPress/gutenberg#77835) - Content Types: Add Duplicate action to taxonomy management (WordPress/gutenberg#77853) - Site Editor: Inline layout z-index values (WordPress/gutenberg#77807) - RTC: Clarify WPBlockSelection type and link to duplicates in other packages. (WordPress/gutenberg#77862) - Editor: Improve revisions diff pairing performance (WordPress/gutenberg#77126) - Media Editor Modal: In the image cropper, pan when dragging the crop instead of constraining to the visible area (WordPress/gutenberg#77899) - Block Editor: Clarify logic for 'directInsert' inner blocks setting (WordPress/gutenberg#77873) - Block Editor: Fix target block for copying direct insert block attributes (WordPress/gutenberg#77877) - Link: Fix awkward focus outline around the new-tab icon (WordPress/gutenberg#77910) - Plugin loader: use require for build/constants.php (WordPress/gutenberg#77908) - Tests: Fix argument forwarding for test:unit workspace scripts (WordPress/gutenberg#77541) - Try responsive global block styles with states (WordPress/gutenberg#77513) - Image editor: suppress image editor undo/redo while a crop interaction is active (WordPress/gutenberg#77930) - Experimental: Content types - disable create/save button based on form validity (WordPress/gutenberg#77931) - Guidelines: Refactor accordion to use CollapsibleCard (WordPress/gutenberg#77903) - Guidelines REST: Require read access for standard route (WordPress/gutenberg#77843) - Embed: Add '[embed]' shortcode transform (WordPress/gutenberg#77937) - Edit Post: Fix suppressed errors in Layout component (WordPress/gutenberg#77940) - Experiment: User post types REST controller (WordPress/gutenberg#77915) - Content Types: Add Duplicate action to post type management (WordPress/gutenberg#77844) - Experiment: Content types fix new instance returned in `useSelect` (WordPress/gutenberg#77916) - Select: Hide user agent focus ring in popup (WordPress/gutenberg#77919) - Interactivity API: Fix popover bind hydration (WordPress/gutenberg#77797) - UI: Use string label type for form controls (WordPress/gutenberg#77860) - Widget Types: bootstrap registry into the dashboard client (WordPress/gutenberg#77917) - ui/Drawer: Forward `render` prop on `Drawer.Content` to the scroll container (WordPress/gutenberg#77941) - ColorPicker : Fix inconsistent HEX input clearing behavior (WordPress/gutenberg#77912) - ExternalLink: Fix focus outline under wp-admin (WordPress/gutenberg#77935) - Experiment: Auto fill `slug` from singular label for taxonomies and post types (WordPress/gutenberg#77938) - Site editor: preserve non-global styles in pattern previews (WordPress/gutenberg#77957) - Classic Block: Unwrap experiment to hide it from inserter (WordPress/gutenberg#77911) - Migrate native tests to workspace (WordPress/gutenberg#77425) - Remove root uuid dependency (WordPress/gutenberg#77960) - Build: Update lint-staged to 16.4.0 (WordPress/gutenberg#77963) - docgen: Automatic documentation handle for TypeScript overloads (WordPress/gutenberg#77558) - Dashboard: Add experimental `WidgetDashboard` rendering engine (WordPress/gutenberg#77770) - Fix flaky Menu test (WordPress/gutenberg#77972) - Widget Types: server-side registry, decouple wp-build pages (WordPress/gutenberg#77958) - RTC: Fix divergence when two offline users reconnect (WordPress/gutenberg#77980) - Media editor: replace fine-rotation slider with RotationRuler (WordPress/gutenberg#77906) - RTC: Fix compaction unit test (WordPress/gutenberg#77986) - RTC: Attach sync observers after hydrating persisted CRDT doc (WordPress/gutenberg#77966) - Fix: Buttons block shows inserter picker when multiple allowed blocks are registered (WordPress/gutenberg#77858) - Update nvm installation script to version 0.40.4 (WordPress/gutenberg#77996) - Use theme gray for muted Text (WordPress/gutenberg#77999) - Add lint rule for non-module stylesheet imports (WordPress/gutenberg#77984) - Dashboard experiment: new icon (WordPress/gutenberg#78016) - Testing: Add `createRecord` e2e request util (WordPress/gutenberg#78017) - Widget Types: REST endpoint and core-data entity (WordPress/gutenberg#77987) - Block Editor: Remove unused reducer action types (WordPress/gutenberg#77880) - Experiment: Sync user taxonomies with post types (WordPress/gutenberg#77997) - Dashboard experiment: remove storybook examples for now (WordPress/gutenberg#78020) - Dashboard: add `WidgetDashboard.Actions` compound (WordPress/gutenberg#78019) - Experiment: add first basic user post types e2e tests and update taxonomy tests (WordPress/gutenberg#77998) - Fill in E2E tests for client-side media processing (WordPress/gutenberg#75949) - Modal: Render as a bottom sheet on mobile (WordPress/gutenberg#77956) - Grid: add warning about being under development (WordPress/gutenberg#78022) - RTC: Fix race condition on room creation which can cause a split update log (WordPress/gutenberg#77675) - Connectors: Clarify AI plugin callout copy (WordPress/gutenberg#78043) - Image editor: update sidebar aspect ratio and resize controls (WordPress/gutenberg#78046) - Fix: Only auto register settings if the plugin the connector references is installed and active. (WordPress/gutenberg#77273) - Connectors: Add is_active callback support to plugin registration (WordPress/gutenberg#77897) - Site Editor e2e tests: reimplement the wait for load (WordPress/gutenberg#77981) - Make Block Inserter search input sticky while scrolling (WordPress/gutenberg#77698) - Embed: Tighten raw URL transform isMatch (WordPress/gutenberg#78021) - Notes: Separate intent from mechanics in openTheSidebar (WordPress/gutenberg#78039) - Image editor: improve media editor crop accessibility and dialog focus (WordPress/gutenberg#78047) - Fix flaky e2e test for Pages dataview keyboard navigation (WordPress/gutenberg#78054) - RTC: Fix find_canonical_storage_post_id() always returning null (WordPress/gutenberg#78053) - Dashboard: persist layout via @wordpress/preferences (WordPress/gutenberg#78034) - Dashboard: backend default layout filter (WordPress/gutenberg#78040) - i18n: add context to scale (WordPress/gutenberg#76917) - Dashboard: lift Suspense + error boundary into widget chrome and add a default header (WordPress/gutenberg#78012) - Dashboard: add widget inserter modal (WordPress/gutenberg#78033) - Fix flaky homepage-settings e2e test (WordPress/gutenberg#78063) - Experiment: Content types single route and package (WordPress/gutenberg#78059) - Configure global fallbackFn for timezone-mock to handle Date subclasses (WordPress/gutenberg#78056) - Content types: flush rewrite rules on rewrite-impacting changes (WordPress/gutenberg#78058) - Editor: Paginate revisions slider by 100 per page (WordPress/gutenberg#77200) - Add RTC cursor-scope regression tests (WordPress/gutenberg#77662) - Dashboard: REST endpoint for the default layout (WordPress/gutenberg#78066) - Paste: preserve leading number when pasting single-line text like dates (WordPress/gutenberg#77949) - Revision: Fix failing e2e test (WordPress/gutenberg#78079) - Global Styles: Refactor client side style states to use nodes (WordPress/gutenberg#78000) - Media Editor Modal: Add focus border styles to the stencil rect when the canvas is keyboard focused (WordPress/gutenberg#78078) - Post Content focus mode: Fix flaky e2e test (WordPress/gutenberg#78084) - Update date-fns to v4.1.0 in components and editor packages (WordPress/gutenberg#78057) - Revisions: Add diagonal stripe patterns to diff markers to avoid color-only distinction (WordPress/gutenberg#77904) - Admin UI: Fix nested landmark in Page header (WordPress/gutenberg#78001) - Fix: Shortcode block does not render in Navigation Overlay (WordPress/gutenberg#77511) - Fix flaky 'publish panel' e2e test (WordPress/gutenberg#78082) - Experiment: Content types reuse some commone utils (WordPress/gutenberg#78091) - Style Runtime: Support CSS module style injection across documents (WordPress/gutenberg#77965) - Experiment: Add Classic block migration notice (WordPress/gutenberg#78090) - Content Types: Abstract and reuse label autofilling for post types (WordPress/gutenberg#78099) - i18n: add context to table header/footer label (WordPress/gutenberg#78007) - Experiment: Content types reuse `createStatusAction` (WordPress/gutenberg#78102) - Select: Support placeholder prop on Trigger (WordPress/gutenberg#78076) - feat: Enhance Connectors page on read-only file system (WordPress/gutenberg#77521) - Add missing Portal Storybook subcomponents (WordPress/gutenberg#78108) - RTC: Fix title divergence between users on page refresh after title update (WordPress/gutenberg#77666) - Docs: shortcode transforms with wrapped content + rawHandler JSDoc (WordPress/gutenberg#78003) - Connectors: Refine PHPStan type shapes (WordPress/gutenberg#78103) - Fix lockfile drift and missing dep from content-types consolidation (WordPress/gutenberg#78109) - Classic Block: Use onReplace prop for migration actions (WordPress/gutenberg#78113) - Media Editor Experiment: Add a route, based on the media editor modal, refactor the modal components (WordPress/gutenberg#77994) - i18n: add context to (site) identity (WordPress/gutenberg#78132) - Script Modules: Guard setAccessible() calls behind PHP < 8.1 check (WordPress/gutenberg#78137) - Connectors: Avoid using centered text (WordPress/gutenberg#78125) - Content Types: Introduce view items actions (WordPress/gutenberg#78104) - Fix: Guard require_once calls in generated PHP files against deployment race conditions (WordPress/gutenberg#78110) - bin/dev.mjs: warn (not exit) on stale webpack watching this checkout (WordPress/gutenberg#78098) - E2E: Reset preferences after navigable-toolbar tests (WordPress/gutenberg#78115) - Editor: Refactor 'PostPublishPanel' into function component (WordPress/gutenberg#78083) - Document how to ignore VSCode Workplace Settings. (WordPress/gutenberg#77608) - Select: Fix disabled cursor styles (WordPress/gutenberg#78112) - Revisions: Add tooltip to diff marker buttons (WordPress/gutenberg#77690) - Experiment: Make content types `_builtin` (WordPress/gutenberg#78150) - Experiment: Content types - use `form` for quick edit dialogs (WordPress/gutenberg#78149) - Experiment: Content types use `toggle` for `active` prop edit (WordPress/gutenberg#78146) - Experiment: Update view content types actions (WordPress/gutenberg#78159) - Block Editor: Add translation context for “Exit pattern” (WordPress/gutenberg#78158) - ColorPalette: Fix duplicate-key warnings and incorrect selection with identical color values (WordPress/gutenberg#78004) - Menu: Fix flaky keyboard focus test (WordPress/gutenberg#78162) - e2e tests: use editPost and createNewPost helpers everywhere (WordPress/gutenberg#78170) - Support object values in Select primitive (WordPress/gutenberg#77861) - Text: Fix render prop CSS defenses (WordPress/gutenberg#78172) - Design System: Add missing packages to Storybook introduction (WordPress/gutenberg#77504) - Add SelectControl component to @wordpress/ui (WordPress/gutenberg#77809) - Dashboard experiment: animate customize UX (WordPress/gutenberg#78065) - Add RTC y-websocket-server tests (WordPress/gutenberg#78179) - Grid: add DashboardLanes masonry surface (WordPress/gutenberg#78107) - Dashboard: staging layer for in-progress layout edits (WordPress/gutenberg#78071) - Media: Guard gutenberg_delete_heic_companion_file() against non-string $metadata['original'] (WordPress/gutenberg#78128) - Image block: Try syncing updated metadata fields (alt and caption) from the media editor (WordPress/gutenberg#78139) - Correct capitalization in help text for Breadcrumbs block (WordPress/gutenberg#78175) - Add min release age to npm config (WordPress/gutenberg#78191) - isFulfilled: don't change resolution state, call in resolveSelect (WordPress/gutenberg#78151) - Add aria-label to Revisions button in Post Summary sidebar (WordPress/gutenberg#78140) - Experiment: Content types invaidate cache for synced taxonomies-post types (WordPress/gutenberg#78143) - Shortcode: Offer block-specific transforms when text matches a registered shortcode (WordPress/gutenberg#77944) - E2E: Remove slash from bad embed request mock (WordPress/gutenberg#78200) - UI: Add component status notes to Storybook (WordPress/gutenberg#77988) - ui/Tooltip, ui/IconButton: Add positioner slot API (WordPress/gutenberg#78089) - Add motion design tokens (duration and easing) to @wordpress/theme (WordPress/gutenberg#76097) - Grid: add edit-mode overlay to DashboardGrid and DashboardLanes (WordPress/gutenberg#78199) - Grid: fix keyboard activation on draggable items (WordPress/gutenberg#78163) - ui/CollapsibleCard: support rendering Header as a heading element (WordPress/gutenberg#77962) - Revisions diff markers: enforce 24×24px minimum target size (WCAG 2.5.8) (WordPress/gutenberg#77671) - Popover: Remove close button z-index (WordPress/gutenberg#78180) - Button: Align compound component metadata (WordPress/gutenberg#78184) - Dashboard: use design animation tokens (WordPress/gutenberg#78204) - Tools: Remove save-exact from .npmrc (WordPress/gutenberg#78196) - UI: Improve docs for compound exports (WordPress/gutenberg#78212) - Bump addressable in /packages/react-native-editor/ios (WordPress/gutenberg#77128) - Bump follow-redirects from 1.15.6 to 1.16.0 (WordPress/gutenberg#77278) - Bump vite from 7.3.0 to 7.3.2 (WordPress/gutenberg#77076) - Bump flatted from 3.3.1 to 3.4.2 (WordPress/gutenberg#76708) - Bump @xmldom/xmldom from 0.8.10 to 0.8.13 (WordPress/gutenberg#77577) - Media Editor Modal: Fix empty author and attached to fields (WordPress/gutenberg#78189) - Bump fast-xml-parser from 4.5.0 to 4.5.4 (WordPress/gutenberg#76081) - Bump node-forge from 1.3.1 to 1.3.2 (WordPress/gutenberg#73601) - Experiment: Integrate `useView` in content types lists (WordPress/gutenberg#78197) - Experiment: Add term/post type count fields in content types (WordPress/gutenberg#78157) - Connectors: Increase right padding of callout for mobile layout (WordPress/gutenberg#78126) - UI: Fix subcomponent story labels (WordPress/gutenberg#78210) - Fonts: Move admin menu compat from experimental to wordpress-7.0 (WordPress/gutenberg#78227) - Experiment: Render badges for some content types' fields (WordPress/gutenberg#78194) - Testing: Consolidate CI workflows for changelog testing (WordPress/gutenberg#78169) - Edit Post: Inline meta boxes z-index values (WordPress/gutenberg#78181) - Backport package publish commits to release/23.2 (WordPress/gutenberg#78347) Props adamsilverstein, jorbin, westonruter, wildworks. Fixes #65559. Built from https://develop.svn.wordpress.org/trunk@62582 git-svn-id: http://core.svn.wordpress.org/trunk@61862 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This updates the pinned commit hash of the Gutenberg repository from `585cf86bb6f408b1dc61175f75db016aa4760653 ` (version `23.1.0`) to `d5ac60e6118060529737127d44a6fdc8abf57eb9` (version `23.2.0`). A full list of changes included in this commit can be found on GitHub: https://github.com/WordPress/gutenberg/compare/v23.1.0..v23.2.0. The following commits are included: - Fix PHP multisite tests (WordPress/gutenberg#77825) - Revise README for FocalPointPicker component to use object-position (WordPress/gutenberg#77722) - Experiment: Add first e2e tests for Taxonomies (WordPress/gutenberg#77828) - Content Types: Add post type management (WordPress/gutenberg#77754) - Grid: lock document cursor during resize gesture (WordPress/gutenberg#77813) - Build: Add experimental `widgets/` folder support to @wordpress/build (WordPress/gutenberg#77347) - TabPanel: Fix tab indicator animation (WordPress/gutenberg#77812) - Disable TinyMCE: Repurpose experiment as Classic block removal (WordPress/gutenberg#77838) - Cover block: Inline z-index values (WordPress/gutenberg#77753) - Button: Align link variant underline with Link and ExternalLink (WordPress/gutenberg#77842) - ui/Drawer: Polish open/close animation, fix swipe on content padding (WordPress/gutenberg#77800) - Site Editor: Remove local z-index helper entries (WordPress/gutenberg#77808) - Inline sticky search z-index values (WordPress/gutenberg#77806) - Block Manager: Inline z-index values (WordPress/gutenberg#77759) - Update TypeScript to tsgo (try 2) (WordPress/gutenberg#77682) - Editor: Inline pattern chooser z-index values (WordPress/gutenberg#77772) - Media editor modal: disable scroll wheel zoom while a crop is active (WordPress/gutenberg#77826) - Media editor modal: disable scroll wheel zoom while a pan/drag is active (WordPress/gutenberg#77863) - Media Editor Modal: Try adding undo/redo for the image cropper (WordPress/gutenberg#77782) - Connectors: Stop e2e capability restriction from leaking across specs (WordPress/gutenberg#77857) - Media Upload Modal: Fix pagination and search (WordPress/gutenberg#77872) - `defaultRenderingMode` value not respected when changed using `block_editor_settings_all` (WordPress/gutenberg#77870) - Media editor modal: expand keyboard shortcuts and add interaction helpers (WordPress/gutenberg#77871) - Media editor modal: name landmark regions and add panel headings (WordPress/gutenberg#77875) - Media Editor Modal: Use shift modifier to adjust keyboard pan speed (WordPress/gutenberg#77878) - Disable Classic block: Always register, hide from inserter conditionally (WordPress/gutenberg#77840) - ESLint: Replace `eslint-plugin-react-compiler` with `eslint-plugin-react-hooks` (WordPress/gutenberg#69962) - Disable Classic block: Control inserter support via filter (WordPress/gutenberg#77845) - Grid: add `renderResizeHandle` render prop (WordPress/gutenberg#77811) - Grid: render resize handle as component (WordPress/gutenberg#77888) - Update uuid dependency (WordPress/gutenberg#77848) - Added Translator Context for Reply (WordPress/gutenberg#77891) - Media editor modal: add Shift+R for counter-clockwise rotation (WordPress/gutenberg#77898) - Update references to default branch. (WordPress/gutenberg#77606) - Notes: Keep tall floating threads scrollable on short content (WordPress/gutenberg#77821) - Taxonomy edit route: declare @wordpress/base-styles as dependency (WordPress/gutenberg#77901) - Post Types DataViews: Make titles clickable to open edit page (WordPress/gutenberg#77885) - Upgrade and unify @types/node version (WordPress/gutenberg#77900) - Widget Types: replace bootstrap with resolver (WordPress/gutenberg#77847) - SlotFill: add dependencies to updateFill effect (WordPress/gutenberg#77907) - Grid: prevent resize runaway near viewport edge (WordPress/gutenberg#77854) - Experiment: Add taxonomy visibility fields (WordPress/gutenberg#77835) - Content Types: Add Duplicate action to taxonomy management (WordPress/gutenberg#77853) - Site Editor: Inline layout z-index values (WordPress/gutenberg#77807) - RTC: Clarify WPBlockSelection type and link to duplicates in other packages. (WordPress/gutenberg#77862) - Editor: Improve revisions diff pairing performance (WordPress/gutenberg#77126) - Media Editor Modal: In the image cropper, pan when dragging the crop instead of constraining to the visible area (WordPress/gutenberg#77899) - Block Editor: Clarify logic for 'directInsert' inner blocks setting (WordPress/gutenberg#77873) - Block Editor: Fix target block for copying direct insert block attributes (WordPress/gutenberg#77877) - Link: Fix awkward focus outline around the new-tab icon (WordPress/gutenberg#77910) - Plugin loader: use require for build/constants.php (WordPress/gutenberg#77908) - Tests: Fix argument forwarding for test:unit workspace scripts (WordPress/gutenberg#77541) - Try responsive global block styles with states (WordPress/gutenberg#77513) - Image editor: suppress image editor undo/redo while a crop interaction is active (WordPress/gutenberg#77930) - Experimental: Content types - disable create/save button based on form validity (WordPress/gutenberg#77931) - Guidelines: Refactor accordion to use CollapsibleCard (WordPress/gutenberg#77903) - Guidelines REST: Require read access for standard route (WordPress/gutenberg#77843) - Embed: Add '[embed]' shortcode transform (WordPress/gutenberg#77937) - Edit Post: Fix suppressed errors in Layout component (WordPress/gutenberg#77940) - Experiment: User post types REST controller (WordPress/gutenberg#77915) - Content Types: Add Duplicate action to post type management (WordPress/gutenberg#77844) - Experiment: Content types fix new instance returned in `useSelect` (WordPress/gutenberg#77916) - Select: Hide user agent focus ring in popup (WordPress/gutenberg#77919) - Interactivity API: Fix popover bind hydration (WordPress/gutenberg#77797) - UI: Use string label type for form controls (WordPress/gutenberg#77860) - Widget Types: bootstrap registry into the dashboard client (WordPress/gutenberg#77917) - ui/Drawer: Forward `render` prop on `Drawer.Content` to the scroll container (WordPress/gutenberg#77941) - ColorPicker : Fix inconsistent HEX input clearing behavior (WordPress/gutenberg#77912) - ExternalLink: Fix focus outline under wp-admin (WordPress/gutenberg#77935) - Experiment: Auto fill `slug` from singular label for taxonomies and post types (WordPress/gutenberg#77938) - Site editor: preserve non-global styles in pattern previews (WordPress/gutenberg#77957) - Classic Block: Unwrap experiment to hide it from inserter (WordPress/gutenberg#77911) - Migrate native tests to workspace (WordPress/gutenberg#77425) - Remove root uuid dependency (WordPress/gutenberg#77960) - Build: Update lint-staged to 16.4.0 (WordPress/gutenberg#77963) - docgen: Automatic documentation handle for TypeScript overloads (WordPress/gutenberg#77558) - Dashboard: Add experimental `WidgetDashboard` rendering engine (WordPress/gutenberg#77770) - Fix flaky Menu test (WordPress/gutenberg#77972) - Widget Types: server-side registry, decouple wp-build pages (WordPress/gutenberg#77958) - RTC: Fix divergence when two offline users reconnect (WordPress/gutenberg#77980) - Media editor: replace fine-rotation slider with RotationRuler (WordPress/gutenberg#77906) - RTC: Fix compaction unit test (WordPress/gutenberg#77986) - RTC: Attach sync observers after hydrating persisted CRDT doc (WordPress/gutenberg#77966) - Fix: Buttons block shows inserter picker when multiple allowed blocks are registered (WordPress/gutenberg#77858) - Update nvm installation script to version 0.40.4 (WordPress/gutenberg#77996) - Use theme gray for muted Text (WordPress/gutenberg#77999) - Add lint rule for non-module stylesheet imports (WordPress/gutenberg#77984) - Dashboard experiment: new icon (WordPress/gutenberg#78016) - Testing: Add `createRecord` e2e request util (WordPress/gutenberg#78017) - Widget Types: REST endpoint and core-data entity (WordPress/gutenberg#77987) - Block Editor: Remove unused reducer action types (WordPress/gutenberg#77880) - Experiment: Sync user taxonomies with post types (WordPress/gutenberg#77997) - Dashboard experiment: remove storybook examples for now (WordPress/gutenberg#78020) - Dashboard: add `WidgetDashboard.Actions` compound (WordPress/gutenberg#78019) - Experiment: add first basic user post types e2e tests and update taxonomy tests (WordPress/gutenberg#77998) - Fill in E2E tests for client-side media processing (WordPress/gutenberg#75949) - Modal: Render as a bottom sheet on mobile (WordPress/gutenberg#77956) - Grid: add warning about being under development (WordPress/gutenberg#78022) - RTC: Fix race condition on room creation which can cause a split update log (WordPress/gutenberg#77675) - Connectors: Clarify AI plugin callout copy (WordPress/gutenberg#78043) - Image editor: update sidebar aspect ratio and resize controls (WordPress/gutenberg#78046) - Fix: Only auto register settings if the plugin the connector references is installed and active. (WordPress/gutenberg#77273) - Connectors: Add is_active callback support to plugin registration (WordPress/gutenberg#77897) - Site Editor e2e tests: reimplement the wait for load (WordPress/gutenberg#77981) - Make Block Inserter search input sticky while scrolling (WordPress/gutenberg#77698) - Embed: Tighten raw URL transform isMatch (WordPress/gutenberg#78021) - Notes: Separate intent from mechanics in openTheSidebar (WordPress/gutenberg#78039) - Image editor: improve media editor crop accessibility and dialog focus (WordPress/gutenberg#78047) - Fix flaky e2e test for Pages dataview keyboard navigation (WordPress/gutenberg#78054) - RTC: Fix find_canonical_storage_post_id() always returning null (WordPress/gutenberg#78053) - Dashboard: persist layout via @wordpress/preferences (WordPress/gutenberg#78034) - Dashboard: backend default layout filter (WordPress/gutenberg#78040) - i18n: add context to scale (WordPress/gutenberg#76917) - Dashboard: lift Suspense + error boundary into widget chrome and add a default header (WordPress/gutenberg#78012) - Dashboard: add widget inserter modal (WordPress/gutenberg#78033) - Fix flaky homepage-settings e2e test (WordPress/gutenberg#78063) - Experiment: Content types single route and package (WordPress/gutenberg#78059) - Configure global fallbackFn for timezone-mock to handle Date subclasses (WordPress/gutenberg#78056) - Content types: flush rewrite rules on rewrite-impacting changes (WordPress/gutenberg#78058) - Editor: Paginate revisions slider by 100 per page (WordPress/gutenberg#77200) - Add RTC cursor-scope regression tests (WordPress/gutenberg#77662) - Dashboard: REST endpoint for the default layout (WordPress/gutenberg#78066) - Paste: preserve leading number when pasting single-line text like dates (WordPress/gutenberg#77949) - Revision: Fix failing e2e test (WordPress/gutenberg#78079) - Global Styles: Refactor client side style states to use nodes (WordPress/gutenberg#78000) - Media Editor Modal: Add focus border styles to the stencil rect when the canvas is keyboard focused (WordPress/gutenberg#78078) - Post Content focus mode: Fix flaky e2e test (WordPress/gutenberg#78084) - Update date-fns to v4.1.0 in components and editor packages (WordPress/gutenberg#78057) - Revisions: Add diagonal stripe patterns to diff markers to avoid color-only distinction (WordPress/gutenberg#77904) - Admin UI: Fix nested landmark in Page header (WordPress/gutenberg#78001) - Fix: Shortcode block does not render in Navigation Overlay (WordPress/gutenberg#77511) - Fix flaky 'publish panel' e2e test (WordPress/gutenberg#78082) - Experiment: Content types reuse some commone utils (WordPress/gutenberg#78091) - Style Runtime: Support CSS module style injection across documents (WordPress/gutenberg#77965) - Experiment: Add Classic block migration notice (WordPress/gutenberg#78090) - Content Types: Abstract and reuse label autofilling for post types (WordPress/gutenberg#78099) - i18n: add context to table header/footer label (WordPress/gutenberg#78007) - Experiment: Content types reuse `createStatusAction` (WordPress/gutenberg#78102) - Select: Support placeholder prop on Trigger (WordPress/gutenberg#78076) - feat: Enhance Connectors page on read-only file system (WordPress/gutenberg#77521) - Add missing Portal Storybook subcomponents (WordPress/gutenberg#78108) - RTC: Fix title divergence between users on page refresh after title update (WordPress/gutenberg#77666) - Docs: shortcode transforms with wrapped content + rawHandler JSDoc (WordPress/gutenberg#78003) - Connectors: Refine PHPStan type shapes (WordPress/gutenberg#78103) - Fix lockfile drift and missing dep from content-types consolidation (WordPress/gutenberg#78109) - Classic Block: Use onReplace prop for migration actions (WordPress/gutenberg#78113) - Media Editor Experiment: Add a route, based on the media editor modal, refactor the modal components (WordPress/gutenberg#77994) - i18n: add context to (site) identity (WordPress/gutenberg#78132) - Script Modules: Guard setAccessible() calls behind PHP < 8.1 check (WordPress/gutenberg#78137) - Connectors: Avoid using centered text (WordPress/gutenberg#78125) - Content Types: Introduce view items actions (WordPress/gutenberg#78104) - Fix: Guard require_once calls in generated PHP files against deployment race conditions (WordPress/gutenberg#78110) - bin/dev.mjs: warn (not exit) on stale webpack watching this checkout (WordPress/gutenberg#78098) - E2E: Reset preferences after navigable-toolbar tests (WordPress/gutenberg#78115) - Editor: Refactor 'PostPublishPanel' into function component (WordPress/gutenberg#78083) - Document how to ignore VSCode Workplace Settings. (WordPress/gutenberg#77608) - Select: Fix disabled cursor styles (WordPress/gutenberg#78112) - Revisions: Add tooltip to diff marker buttons (WordPress/gutenberg#77690) - Experiment: Make content types `_builtin` (WordPress/gutenberg#78150) - Experiment: Content types - use `form` for quick edit dialogs (WordPress/gutenberg#78149) - Experiment: Content types use `toggle` for `active` prop edit (WordPress/gutenberg#78146) - Experiment: Update view content types actions (WordPress/gutenberg#78159) - Block Editor: Add translation context for “Exit pattern” (WordPress/gutenberg#78158) - ColorPalette: Fix duplicate-key warnings and incorrect selection with identical color values (WordPress/gutenberg#78004) - Menu: Fix flaky keyboard focus test (WordPress/gutenberg#78162) - e2e tests: use editPost and createNewPost helpers everywhere (WordPress/gutenberg#78170) - Support object values in Select primitive (WordPress/gutenberg#77861) - Text: Fix render prop CSS defenses (WordPress/gutenberg#78172) - Design System: Add missing packages to Storybook introduction (WordPress/gutenberg#77504) - Add SelectControl component to @wordpress/ui (WordPress/gutenberg#77809) - Dashboard experiment: animate customize UX (WordPress/gutenberg#78065) - Add RTC y-websocket-server tests (WordPress/gutenberg#78179) - Grid: add DashboardLanes masonry surface (WordPress/gutenberg#78107) - Dashboard: staging layer for in-progress layout edits (WordPress/gutenberg#78071) - Media: Guard gutenberg_delete_heic_companion_file() against non-string $metadata['original'] (WordPress/gutenberg#78128) - Image block: Try syncing updated metadata fields (alt and caption) from the media editor (WordPress/gutenberg#78139) - Correct capitalization in help text for Breadcrumbs block (WordPress/gutenberg#78175) - Add min release age to npm config (WordPress/gutenberg#78191) - isFulfilled: don't change resolution state, call in resolveSelect (WordPress/gutenberg#78151) - Add aria-label to Revisions button in Post Summary sidebar (WordPress/gutenberg#78140) - Experiment: Content types invaidate cache for synced taxonomies-post types (WordPress/gutenberg#78143) - Shortcode: Offer block-specific transforms when text matches a registered shortcode (WordPress/gutenberg#77944) - E2E: Remove slash from bad embed request mock (WordPress/gutenberg#78200) - UI: Add component status notes to Storybook (WordPress/gutenberg#77988) - ui/Tooltip, ui/IconButton: Add positioner slot API (WordPress/gutenberg#78089) - Add motion design tokens (duration and easing) to @wordpress/theme (WordPress/gutenberg#76097) - Grid: add edit-mode overlay to DashboardGrid and DashboardLanes (WordPress/gutenberg#78199) - Grid: fix keyboard activation on draggable items (WordPress/gutenberg#78163) - ui/CollapsibleCard: support rendering Header as a heading element (WordPress/gutenberg#77962) - Revisions diff markers: enforce 24×24px minimum target size (WCAG 2.5.8) (WordPress/gutenberg#77671) - Popover: Remove close button z-index (WordPress/gutenberg#78180) - Button: Align compound component metadata (WordPress/gutenberg#78184) - Dashboard: use design animation tokens (WordPress/gutenberg#78204) - Tools: Remove save-exact from .npmrc (WordPress/gutenberg#78196) - UI: Improve docs for compound exports (WordPress/gutenberg#78212) - Bump addressable in /packages/react-native-editor/ios (WordPress/gutenberg#77128) - Bump follow-redirects from 1.15.6 to 1.16.0 (WordPress/gutenberg#77278) - Bump vite from 7.3.0 to 7.3.2 (WordPress/gutenberg#77076) - Bump flatted from 3.3.1 to 3.4.2 (WordPress/gutenberg#76708) - Bump @xmldom/xmldom from 0.8.10 to 0.8.13 (WordPress/gutenberg#77577) - Media Editor Modal: Fix empty author and attached to fields (WordPress/gutenberg#78189) - Bump fast-xml-parser from 4.5.0 to 4.5.4 (WordPress/gutenberg#76081) - Bump node-forge from 1.3.1 to 1.3.2 (WordPress/gutenberg#73601) - Experiment: Integrate `useView` in content types lists (WordPress/gutenberg#78197) - Experiment: Add term/post type count fields in content types (WordPress/gutenberg#78157) - Connectors: Increase right padding of callout for mobile layout (WordPress/gutenberg#78126) - UI: Fix subcomponent story labels (WordPress/gutenberg#78210) - Fonts: Move admin menu compat from experimental to wordpress-7.0 (WordPress/gutenberg#78227) - Experiment: Render badges for some content types' fields (WordPress/gutenberg#78194) - Testing: Consolidate CI workflows for changelog testing (WordPress/gutenberg#78169) - Edit Post: Inline meta boxes z-index values (WordPress/gutenberg#78181) - Backport package publish commits to release/23.2 (WordPress/gutenberg#78347) Props adamsilverstein, jorbin, westonruter, wildworks. Fixes #65559. git-svn-id: https://develop.svn.wordpress.org/trunk@62582 602fd350-edb4-49c9-b593-d223f7449a82
This updates the pinned commit hash of the Gutenberg repository from `585cf86bb6f408b1dc61175f75db016aa4760653 ` (version `23.1.0`) to `d5ac60e6118060529737127d44a6fdc8abf57eb9` (version `23.2.0`). A full list of changes included in this commit can be found on GitHub: https://github.com/WordPress/gutenberg/compare/v23.1.0..v23.2.0. The following commits are included: - Fix PHP multisite tests (WordPress/gutenberg#77825) - Revise README for FocalPointPicker component to use object-position (WordPress/gutenberg#77722) - Experiment: Add first e2e tests for Taxonomies (WordPress/gutenberg#77828) - Content Types: Add post type management (WordPress/gutenberg#77754) - Grid: lock document cursor during resize gesture (WordPress/gutenberg#77813) - Build: Add experimental `widgets/` folder support to @wordpress/build (WordPress/gutenberg#77347) - TabPanel: Fix tab indicator animation (WordPress/gutenberg#77812) - Disable TinyMCE: Repurpose experiment as Classic block removal (WordPress/gutenberg#77838) - Cover block: Inline z-index values (WordPress/gutenberg#77753) - Button: Align link variant underline with Link and ExternalLink (WordPress/gutenberg#77842) - ui/Drawer: Polish open/close animation, fix swipe on content padding (WordPress/gutenberg#77800) - Site Editor: Remove local z-index helper entries (WordPress/gutenberg#77808) - Inline sticky search z-index values (WordPress/gutenberg#77806) - Block Manager: Inline z-index values (WordPress/gutenberg#77759) - Update TypeScript to tsgo (try 2) (WordPress/gutenberg#77682) - Editor: Inline pattern chooser z-index values (WordPress/gutenberg#77772) - Media editor modal: disable scroll wheel zoom while a crop is active (WordPress/gutenberg#77826) - Media editor modal: disable scroll wheel zoom while a pan/drag is active (WordPress/gutenberg#77863) - Media Editor Modal: Try adding undo/redo for the image cropper (WordPress/gutenberg#77782) - Connectors: Stop e2e capability restriction from leaking across specs (WordPress/gutenberg#77857) - Media Upload Modal: Fix pagination and search (WordPress/gutenberg#77872) - `defaultRenderingMode` value not respected when changed using `block_editor_settings_all` (WordPress/gutenberg#77870) - Media editor modal: expand keyboard shortcuts and add interaction helpers (WordPress/gutenberg#77871) - Media editor modal: name landmark regions and add panel headings (WordPress/gutenberg#77875) - Media Editor Modal: Use shift modifier to adjust keyboard pan speed (WordPress/gutenberg#77878) - Disable Classic block: Always register, hide from inserter conditionally (WordPress/gutenberg#77840) - ESLint: Replace `eslint-plugin-react-compiler` with `eslint-plugin-react-hooks` (WordPress/gutenberg#69962) - Disable Classic block: Control inserter support via filter (WordPress/gutenberg#77845) - Grid: add `renderResizeHandle` render prop (WordPress/gutenberg#77811) - Grid: render resize handle as component (WordPress/gutenberg#77888) - Update uuid dependency (WordPress/gutenberg#77848) - Added Translator Context for Reply (WordPress/gutenberg#77891) - Media editor modal: add Shift+R for counter-clockwise rotation (WordPress/gutenberg#77898) - Update references to default branch. (WordPress/gutenberg#77606) - Notes: Keep tall floating threads scrollable on short content (WordPress/gutenberg#77821) - Taxonomy edit route: declare @wordpress/base-styles as dependency (WordPress/gutenberg#77901) - Post Types DataViews: Make titles clickable to open edit page (WordPress/gutenberg#77885) - Upgrade and unify @types/node version (WordPress/gutenberg#77900) - Widget Types: replace bootstrap with resolver (WordPress/gutenberg#77847) - SlotFill: add dependencies to updateFill effect (WordPress/gutenberg#77907) - Grid: prevent resize runaway near viewport edge (WordPress/gutenberg#77854) - Experiment: Add taxonomy visibility fields (WordPress/gutenberg#77835) - Content Types: Add Duplicate action to taxonomy management (WordPress/gutenberg#77853) - Site Editor: Inline layout z-index values (WordPress/gutenberg#77807) - RTC: Clarify WPBlockSelection type and link to duplicates in other packages. (WordPress/gutenberg#77862) - Editor: Improve revisions diff pairing performance (WordPress/gutenberg#77126) - Media Editor Modal: In the image cropper, pan when dragging the crop instead of constraining to the visible area (WordPress/gutenberg#77899) - Block Editor: Clarify logic for 'directInsert' inner blocks setting (WordPress/gutenberg#77873) - Block Editor: Fix target block for copying direct insert block attributes (WordPress/gutenberg#77877) - Link: Fix awkward focus outline around the new-tab icon (WordPress/gutenberg#77910) - Plugin loader: use require for build/constants.php (WordPress/gutenberg#77908) - Tests: Fix argument forwarding for test:unit workspace scripts (WordPress/gutenberg#77541) - Try responsive global block styles with states (WordPress/gutenberg#77513) - Image editor: suppress image editor undo/redo while a crop interaction is active (WordPress/gutenberg#77930) - Experimental: Content types - disable create/save button based on form validity (WordPress/gutenberg#77931) - Guidelines: Refactor accordion to use CollapsibleCard (WordPress/gutenberg#77903) - Guidelines REST: Require read access for standard route (WordPress/gutenberg#77843) - Embed: Add '[embed]' shortcode transform (WordPress/gutenberg#77937) - Edit Post: Fix suppressed errors in Layout component (WordPress/gutenberg#77940) - Experiment: User post types REST controller (WordPress/gutenberg#77915) - Content Types: Add Duplicate action to post type management (WordPress/gutenberg#77844) - Experiment: Content types fix new instance returned in `useSelect` (WordPress/gutenberg#77916) - Select: Hide user agent focus ring in popup (WordPress/gutenberg#77919) - Interactivity API: Fix popover bind hydration (WordPress/gutenberg#77797) - UI: Use string label type for form controls (WordPress/gutenberg#77860) - Widget Types: bootstrap registry into the dashboard client (WordPress/gutenberg#77917) - ui/Drawer: Forward `render` prop on `Drawer.Content` to the scroll container (WordPress/gutenberg#77941) - ColorPicker : Fix inconsistent HEX input clearing behavior (WordPress/gutenberg#77912) - ExternalLink: Fix focus outline under wp-admin (WordPress/gutenberg#77935) - Experiment: Auto fill `slug` from singular label for taxonomies and post types (WordPress/gutenberg#77938) - Site editor: preserve non-global styles in pattern previews (WordPress/gutenberg#77957) - Classic Block: Unwrap experiment to hide it from inserter (WordPress/gutenberg#77911) - Migrate native tests to workspace (WordPress/gutenberg#77425) - Remove root uuid dependency (WordPress/gutenberg#77960) - Build: Update lint-staged to 16.4.0 (WordPress/gutenberg#77963) - docgen: Automatic documentation handle for TypeScript overloads (WordPress/gutenberg#77558) - Dashboard: Add experimental `WidgetDashboard` rendering engine (WordPress/gutenberg#77770) - Fix flaky Menu test (WordPress/gutenberg#77972) - Widget Types: server-side registry, decouple wp-build pages (WordPress/gutenberg#77958) - RTC: Fix divergence when two offline users reconnect (WordPress/gutenberg#77980) - Media editor: replace fine-rotation slider with RotationRuler (WordPress/gutenberg#77906) - RTC: Fix compaction unit test (WordPress/gutenberg#77986) - RTC: Attach sync observers after hydrating persisted CRDT doc (WordPress/gutenberg#77966) - Fix: Buttons block shows inserter picker when multiple allowed blocks are registered (WordPress/gutenberg#77858) - Update nvm installation script to version 0.40.4 (WordPress/gutenberg#77996) - Use theme gray for muted Text (WordPress/gutenberg#77999) - Add lint rule for non-module stylesheet imports (WordPress/gutenberg#77984) - Dashboard experiment: new icon (WordPress/gutenberg#78016) - Testing: Add `createRecord` e2e request util (WordPress/gutenberg#78017) - Widget Types: REST endpoint and core-data entity (WordPress/gutenberg#77987) - Block Editor: Remove unused reducer action types (WordPress/gutenberg#77880) - Experiment: Sync user taxonomies with post types (WordPress/gutenberg#77997) - Dashboard experiment: remove storybook examples for now (WordPress/gutenberg#78020) - Dashboard: add `WidgetDashboard.Actions` compound (WordPress/gutenberg#78019) - Experiment: add first basic user post types e2e tests and update taxonomy tests (WordPress/gutenberg#77998) - Fill in E2E tests for client-side media processing (WordPress/gutenberg#75949) - Modal: Render as a bottom sheet on mobile (WordPress/gutenberg#77956) - Grid: add warning about being under development (WordPress/gutenberg#78022) - RTC: Fix race condition on room creation which can cause a split update log (WordPress/gutenberg#77675) - Connectors: Clarify AI plugin callout copy (WordPress/gutenberg#78043) - Image editor: update sidebar aspect ratio and resize controls (WordPress/gutenberg#78046) - Fix: Only auto register settings if the plugin the connector references is installed and active. (WordPress/gutenberg#77273) - Connectors: Add is_active callback support to plugin registration (WordPress/gutenberg#77897) - Site Editor e2e tests: reimplement the wait for load (WordPress/gutenberg#77981) - Make Block Inserter search input sticky while scrolling (WordPress/gutenberg#77698) - Embed: Tighten raw URL transform isMatch (WordPress/gutenberg#78021) - Notes: Separate intent from mechanics in openTheSidebar (WordPress/gutenberg#78039) - Image editor: improve media editor crop accessibility and dialog focus (WordPress/gutenberg#78047) - Fix flaky e2e test for Pages dataview keyboard navigation (WordPress/gutenberg#78054) - RTC: Fix find_canonical_storage_post_id() always returning null (WordPress/gutenberg#78053) - Dashboard: persist layout via @wordpress/preferences (WordPress/gutenberg#78034) - Dashboard: backend default layout filter (WordPress/gutenberg#78040) - i18n: add context to scale (WordPress/gutenberg#76917) - Dashboard: lift Suspense + error boundary into widget chrome and add a default header (WordPress/gutenberg#78012) - Dashboard: add widget inserter modal (WordPress/gutenberg#78033) - Fix flaky homepage-settings e2e test (WordPress/gutenberg#78063) - Experiment: Content types single route and package (WordPress/gutenberg#78059) - Configure global fallbackFn for timezone-mock to handle Date subclasses (WordPress/gutenberg#78056) - Content types: flush rewrite rules on rewrite-impacting changes (WordPress/gutenberg#78058) - Editor: Paginate revisions slider by 100 per page (WordPress/gutenberg#77200) - Add RTC cursor-scope regression tests (WordPress/gutenberg#77662) - Dashboard: REST endpoint for the default layout (WordPress/gutenberg#78066) - Paste: preserve leading number when pasting single-line text like dates (WordPress/gutenberg#77949) - Revision: Fix failing e2e test (WordPress/gutenberg#78079) - Global Styles: Refactor client side style states to use nodes (WordPress/gutenberg#78000) - Media Editor Modal: Add focus border styles to the stencil rect when the canvas is keyboard focused (WordPress/gutenberg#78078) - Post Content focus mode: Fix flaky e2e test (WordPress/gutenberg#78084) - Update date-fns to v4.1.0 in components and editor packages (WordPress/gutenberg#78057) - Revisions: Add diagonal stripe patterns to diff markers to avoid color-only distinction (WordPress/gutenberg#77904) - Admin UI: Fix nested landmark in Page header (WordPress/gutenberg#78001) - Fix: Shortcode block does not render in Navigation Overlay (WordPress/gutenberg#77511) - Fix flaky 'publish panel' e2e test (WordPress/gutenberg#78082) - Experiment: Content types reuse some commone utils (WordPress/gutenberg#78091) - Style Runtime: Support CSS module style injection across documents (WordPress/gutenberg#77965) - Experiment: Add Classic block migration notice (WordPress/gutenberg#78090) - Content Types: Abstract and reuse label autofilling for post types (WordPress/gutenberg#78099) - i18n: add context to table header/footer label (WordPress/gutenberg#78007) - Experiment: Content types reuse `createStatusAction` (WordPress/gutenberg#78102) - Select: Support placeholder prop on Trigger (WordPress/gutenberg#78076) - feat: Enhance Connectors page on read-only file system (WordPress/gutenberg#77521) - Add missing Portal Storybook subcomponents (WordPress/gutenberg#78108) - RTC: Fix title divergence between users on page refresh after title update (WordPress/gutenberg#77666) - Docs: shortcode transforms with wrapped content + rawHandler JSDoc (WordPress/gutenberg#78003) - Connectors: Refine PHPStan type shapes (WordPress/gutenberg#78103) - Fix lockfile drift and missing dep from content-types consolidation (WordPress/gutenberg#78109) - Classic Block: Use onReplace prop for migration actions (WordPress/gutenberg#78113) - Media Editor Experiment: Add a route, based on the media editor modal, refactor the modal components (WordPress/gutenberg#77994) - i18n: add context to (site) identity (WordPress/gutenberg#78132) - Script Modules: Guard setAccessible() calls behind PHP < 8.1 check (WordPress/gutenberg#78137) - Connectors: Avoid using centered text (WordPress/gutenberg#78125) - Content Types: Introduce view items actions (WordPress/gutenberg#78104) - Fix: Guard require_once calls in generated PHP files against deployment race conditions (WordPress/gutenberg#78110) - bin/dev.mjs: warn (not exit) on stale webpack watching this checkout (WordPress/gutenberg#78098) - E2E: Reset preferences after navigable-toolbar tests (WordPress/gutenberg#78115) - Editor: Refactor 'PostPublishPanel' into function component (WordPress/gutenberg#78083) - Document how to ignore VSCode Workplace Settings. (WordPress/gutenberg#77608) - Select: Fix disabled cursor styles (WordPress/gutenberg#78112) - Revisions: Add tooltip to diff marker buttons (WordPress/gutenberg#77690) - Experiment: Make content types `_builtin` (WordPress/gutenberg#78150) - Experiment: Content types - use `form` for quick edit dialogs (WordPress/gutenberg#78149) - Experiment: Content types use `toggle` for `active` prop edit (WordPress/gutenberg#78146) - Experiment: Update view content types actions (WordPress/gutenberg#78159) - Block Editor: Add translation context for “Exit pattern” (WordPress/gutenberg#78158) - ColorPalette: Fix duplicate-key warnings and incorrect selection with identical color values (WordPress/gutenberg#78004) - Menu: Fix flaky keyboard focus test (WordPress/gutenberg#78162) - e2e tests: use editPost and createNewPost helpers everywhere (WordPress/gutenberg#78170) - Support object values in Select primitive (WordPress/gutenberg#77861) - Text: Fix render prop CSS defenses (WordPress/gutenberg#78172) - Design System: Add missing packages to Storybook introduction (WordPress/gutenberg#77504) - Add SelectControl component to @wordpress/ui (WordPress/gutenberg#77809) - Dashboard experiment: animate customize UX (WordPress/gutenberg#78065) - Add RTC y-websocket-server tests (WordPress/gutenberg#78179) - Grid: add DashboardLanes masonry surface (WordPress/gutenberg#78107) - Dashboard: staging layer for in-progress layout edits (WordPress/gutenberg#78071) - Media: Guard gutenberg_delete_heic_companion_file() against non-string $metadata['original'] (WordPress/gutenberg#78128) - Image block: Try syncing updated metadata fields (alt and caption) from the media editor (WordPress/gutenberg#78139) - Correct capitalization in help text for Breadcrumbs block (WordPress/gutenberg#78175) - Add min release age to npm config (WordPress/gutenberg#78191) - isFulfilled: don't change resolution state, call in resolveSelect (WordPress/gutenberg#78151) - Add aria-label to Revisions button in Post Summary sidebar (WordPress/gutenberg#78140) - Experiment: Content types invaidate cache for synced taxonomies-post types (WordPress/gutenberg#78143) - Shortcode: Offer block-specific transforms when text matches a registered shortcode (WordPress/gutenberg#77944) - E2E: Remove slash from bad embed request mock (WordPress/gutenberg#78200) - UI: Add component status notes to Storybook (WordPress/gutenberg#77988) - ui/Tooltip, ui/IconButton: Add positioner slot API (WordPress/gutenberg#78089) - Add motion design tokens (duration and easing) to @wordpress/theme (WordPress/gutenberg#76097) - Grid: add edit-mode overlay to DashboardGrid and DashboardLanes (WordPress/gutenberg#78199) - Grid: fix keyboard activation on draggable items (WordPress/gutenberg#78163) - ui/CollapsibleCard: support rendering Header as a heading element (WordPress/gutenberg#77962) - Revisions diff markers: enforce 24×24px minimum target size (WCAG 2.5.8) (WordPress/gutenberg#77671) - Popover: Remove close button z-index (WordPress/gutenberg#78180) - Button: Align compound component metadata (WordPress/gutenberg#78184) - Dashboard: use design animation tokens (WordPress/gutenberg#78204) - Tools: Remove save-exact from .npmrc (WordPress/gutenberg#78196) - UI: Improve docs for compound exports (WordPress/gutenberg#78212) - Bump addressable in /packages/react-native-editor/ios (WordPress/gutenberg#77128) - Bump follow-redirects from 1.15.6 to 1.16.0 (WordPress/gutenberg#77278) - Bump vite from 7.3.0 to 7.3.2 (WordPress/gutenberg#77076) - Bump flatted from 3.3.1 to 3.4.2 (WordPress/gutenberg#76708) - Bump @xmldom/xmldom from 0.8.10 to 0.8.13 (WordPress/gutenberg#77577) - Media Editor Modal: Fix empty author and attached to fields (WordPress/gutenberg#78189) - Bump fast-xml-parser from 4.5.0 to 4.5.4 (WordPress/gutenberg#76081) - Bump node-forge from 1.3.1 to 1.3.2 (WordPress/gutenberg#73601) - Experiment: Integrate `useView` in content types lists (WordPress/gutenberg#78197) - Experiment: Add term/post type count fields in content types (WordPress/gutenberg#78157) - Connectors: Increase right padding of callout for mobile layout (WordPress/gutenberg#78126) - UI: Fix subcomponent story labels (WordPress/gutenberg#78210) - Fonts: Move admin menu compat from experimental to wordpress-7.0 (WordPress/gutenberg#78227) - Experiment: Render badges for some content types' fields (WordPress/gutenberg#78194) - Testing: Consolidate CI workflows for changelog testing (WordPress/gutenberg#78169) - Edit Post: Inline meta boxes z-index values (WordPress/gutenberg#78181) - Backport package publish commits to release/23.2 (WordPress/gutenberg#78347) Props adamsilverstein, jorbin, westonruter, wildworks. Fixes #65559. git-svn-id: https://develop.svn.wordpress.org/trunk@62582 602fd350-edb4-49c9-b593-d223f7449a82
What?
Follow up to #77532, #77658
This is part of an AI fuzzing project which has uncovered a number of real bugs (#77532, and also #77631 independently of @alecgeatches finding the repro for that bug) and has not yet had a false positive (I'm sure there will be some in the future).
The fuzzer found another data corruption bug that's independent from #77532 but is also fixed by #77658. The PR for #77658 was created by a subagent narrowly looking at #77532, so it does not include regression tests for this bug. This PR has two purposes:
Why?
Here's a video of the issue:
core-file-cursor-scope-real-user-annotated.mp4
Codex's description of the bug:
BEGIN AI GENERATED TEXT
The RTC block-merge write path throws away rich-text field scope and keeps only
one bare cursor offset. If a block update changes a rich-text field that is not
the selected field, RTC can reuse the selected field's cursor while diffing the
wrong rich-text value.
The confirmed high-level repro uses the bundled
core/fileblock:Downloadbutton text.Open in new tab.Replace -> Open Media Library.The author sees the new file name correctly as
manual, but the collaboratorsees the corrupted file name
manuaa.This is a real user-visible RTC bug in a bundled core block. It is not just a
synthetic custom-block platform issue.
Root Cause
WPBlockSelectionpreserves field scope:clientIdattributeKeyFor the
core/filerepro, the selected field isdownloadButtonTextand theselection offset is
2.The RTC write path collapses that scoped selection to just a number before
block merging:
applyPostChangesToCRDTDoc()readschanges.selection?.selectionStart?.offset ?? nullmergeCrdtBlocks()receives only that bare numberWhen the later File block replacement changes
fileNamefromgammatomanual, the merge code still has the olddownloadButtonTextcursor offset.It no longer knows that the cursor belongs to
downloadButtonText, so it usesthat offset while diffing
fileName. That corrupts the collaborator'sfileNametomanuaa.The selected field in the repro is plain text, so offset
2is already a validHTML index for
downloadButtonText. The failure is not the offset-space bug.The corruption occurs because a cursor from one field is reused for another
field.
Confirmed User Repro
The confirmed bundled-core browser repro is committed here:
core/filePlaywright reproThe user-visible sequence is:
name is
gammaand whose button text isDownload.Downloadbutton text.2insideDownload.Open in new tab.Replace -> Open Media Library.manual.Expected result on both editors:
Actual result:
The Playwright test also saves the draft after the visible corruption and
checks that the collaborator remains corrupted in that same live session.
Why The Intermediate Update Matters
The one-step file replacement path did not reliably reproduce the bug by
itself. The confirmed repro needs the extra user action while the caret remains
inside
downloadButtonText.That extra action is not synthetic. It is a normal File block control:
Clicking it updates the block's
textLinkTargetwhile the editor selection isstill scoped to
downloadButtonTextat offset2. The following filereplacement changes the other rich-text field,
fileName, while that stalebare offset is still available to RTC. Because RTC has already dropped
attributeKey, it cannot tell that the cursor does not belong tofileName.Pre-Fix Production Path
The confirmed browser path is:
core/fileblock is edited in the browser.downloadButtonText.Open in new tabsends a block update while preserving thatselection.
fileName.editEntityRecord()forwardsblocksplusselection.SyncManager.update()applies the change to the live Yjs document.applyPostChangesToCRDTDoc()dropsattributeKeyand keeps onlyoffset.mergeCrdtBlocks()reuses that offset while mergingfileName.fileNamecontent.Evidence And Regression Coverage
The regression tests cover multiple levels of the production write path. On the
pre-fix implementation, these tests reproduce the corruption; with the scoped
cursor fix, they pass:
mergeCrdtBlocks()regressionapplyPostChangesToCRDTDoc()regressionSyncManager.update()regressioncore/filePlaywright regression with real browser UI interactionsThe lower-level tests use a two-rich-text block to isolate the cursor-scope
failure and include negative controls:
nullcursor hintscross-field cursor reuse
the wrong coordinate space
Those controls are also linked directly:
nullcursor controlThe browser repro then confirms the same class of bug in a bundled core block
with normal user interactions. The author and collaborator diverge only after
the RTC merge path runs.
Re-Running The Repros
Run these commands from the repo root with Node 20 active.
mergeCrdtBlocks()regressionnpm run test:unit -- --runInBand \ packages/core-data/src/utils/test/rtc-rich-text-cursor-scope.test.js \ --testNamePattern="mergeCrdtBlocks"applyPostChangesToCRDTDoc()regressionnpm run test:unit -- --runInBand \ packages/core-data/src/utils/test/rtc-rich-text-cursor-scope.test.js \ --testNamePattern="applyPostChangesToCRDTDoc"SyncManager.update()regressionnpm run test:unit -- --runInBand \ packages/core-data/src/utils/test/rtc-rich-text-cursor-scope.test.js \ --testNamePattern="SyncManager.update"custom-block browser regression with programmatic insertion
npm run wp-env-test start WP_BASE_URL=http://localhost:8889 \ npm run test:e2e -- \ test/e2e/specs/editor/collaboration/collaboration-rich-text-cursor-scope.spec.ts \ --project=chromium \ --grep="keeps collaborator rich text correct$"custom-block browser regression with the real inserter and typing interactions
npm run wp-env-test start WP_BASE_URL=http://localhost:8889 \ npm run test:e2e -- \ test/e2e/specs/editor/collaboration/collaboration-rich-text-cursor-scope.spec.ts \ --project=chromium \ --grep="real inserter and typing interactions"core/filebrowser regression with real browser UI interactionsnpm run wp-env-test start WP_BASE_URL=http://localhost:8889 \ npm run test:e2e -- \ test/e2e/specs/editor/collaboration/collaboration-rich-text-cursor-scope.spec.ts \ --project=chromium \ --grep="core/file"The full committed cursor-scope test suite is:
How The Bug Was Introduced
The current top-level-field bug was introduced on January 14, 2026 by commit
30c040ca841("Real-time collaboration: Use alternative diff in quill-delta,provide incremental text updates") from
PR #73699.
That change:
changes.selection?.selectionStart?.offset ?? nullinto
mergeCrdtBlocks()Later, on April 2, 2026, commit
09a21c64b5b("RTC: Fix core/table cell merging") from
PR #76913 generalized
the same cursor plumbing into schema-aware array and object merges. That did
not create the top-level
core/filebug shown here, but it widened the samescope-loss problem to nested rich-text structures.
Impact Bounds
What is currently proven:
saveDraft()in that same sessionWhat is not currently proven:
core/filecorruption survives a fresh reloadThat narrows severity, but it does not make the bug a false positive. The bug
causes real in-session collaborator-visible corruption.
END AI GENERATED TEXT
Note that the above was with respect to this branch in my fork, not this PR.
Use of AI Tools
As noted above, this is an AI generated PR coming out of an AI fuzzing project. We've had no false positives so far, but of course the false positive rate isn't zero and I expect false positives at some point. In this case, since this is adding regression tests, a false positive would just mean that we're adding some tests for a bug that was somehow not real. While this can happen when a fuzz test uncovers a bug with respect to a function call, this particular bug was reproduced with real user actions inside playwright and should not be a false positive.