RTC: Fix RichTextData deserialization - #76607
Conversation
…getPostChangesFromCRDTDoc()
|
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. |
|
Size Change: +207 B (0%) Total Size: 8.76 MB
ℹ️ View Unchanged
|
| isRichTextAttribute( blockName, key ) && | ||
| typeof value === 'string' | ||
| ) { | ||
| newAttributes[ key ] = RichTextData.fromHTMLString( value ); |
There was a problem hiding this comment.
Following this call stack, we eventually land here:
Is this cheap enough (given the Document re-use) that we don't need to cache this operation?
|
|
||
| for ( const [ key, value ] of Object.entries( attributes ) ) { | ||
| if ( | ||
| isRichTextAttribute( blockName, key ) && |
There was a problem hiding this comment.
The serialize function relies on the value being an instant of RichTextData while the deserialize relies on the attribute for the value mentioning that its rich-text. Would a block author always mention that schema type, or could they skip it and then this path wouldn't be triggered? Should we account for the less than ideal path?
There was a problem hiding this comment.
Would a block author always mention that schema type
We have been assuming this contract will be upheld in general. We definitely should not go down the path of trying to predict the attribute type based on its value.
There was a problem hiding this comment.
Totally, we should follow the path of assuming that the contract will be upheld but I wanted to point it out 🙏🏾
There was a problem hiding this comment.
@ingeniumed That's a good point that there's asymmetry in the way we handle type conversion with instanceof vs attribute type, but I think this is the safest path. During serialization we want to ensure we're only using RichText methods to grab a string for a Y.Text if it's an actual RichText object, and during deserialization we have no other way of knowing. Everything is a string after serialization.
The Block Attributes docs page contains this:
The attribute definition will contain, at a minimum, either a
typeor anenum. There may be additional fields.
I think it's safe to follow convention to make sure our processing follows the defined types as closely as we can to Gutenberg's existing behavior, but we can see if this has any unexpected effects.
| for ( const [ key, value ] of Object.entries( attributes ) ) { | ||
| if ( | ||
| isRichTextAttribute( blockName, key ) && | ||
| typeof value === 'string' |
There was a problem hiding this comment.
The deserialize function, if I'm reading it right, doesn't account for arrays the way the serialize function does (tables for instance). Wouldn't the new rich-text conversion not apply if this kind of text existed in a table?
There was a problem hiding this comment.
You're right! In #76597 we added support for properly serializing those deeply nested rich-text values, but not here. I'll add a test and fix that.
|
Flaky tests detected in 7a0c78e. 🔍 Workflow run URL: https://github.com/WordPress/gutenberg/actions/runs/23269085270
|
…g block schema for deeply nested strings
|
@ingeniumed @chriszarate Thank you for your reviews above! I added a couple of changes:
|
| * @param value The HTML string to parse. | ||
| * @return The RichTextData instance. | ||
| */ | ||
| function cachedFromHTMLString( value: string ): RichTextData { |
There was a problem hiding this comment.
It'd be valuable to add a test for this as well. If it's possible, the cache being evicted would be handy as well.
There was a problem hiding this comment.
Good thinking! Added tests for the cache eviction behavior in 7a0c78e, as well as moving the related functions to their own file.
* Add failing unit test for RichTextData conversion * Fix RichText attribute type via deserializeBlockAttributes() call in getPostChangesFromCRDTDoc() * Add test for nested RichText value * Modify deserializeAttributeValue() to recurse arrays and object, using block schema for deeply nested strings * Remove deserializeBlockAttributeValues to avoid 3 different deserialization functions * Add factory wrapper for rich text cache, testing Co-authored-by: alecgeatches <alecgeatches@git.wordpress.org> Co-authored-by: chriszarate <czarate@git.wordpress.org> Co-authored-by: ingeniumed <ingeniumed@git.wordpress.org>
|
I just cherry-picked this PR to the wp/7.0 branch to get it included in the next release: 2af539b |
This updates the pinned hash from the `gutenberg` from `8c78d87453509661a9f28f978ba2c242d515563b` to `487a096a9782ba6110a7686d7b4b2d0c55ed1b06`. The following changes are included: - Disables anchor support for the Page Break block. (WordPress/gutenberg#76434) - WP Admin: Update Connectors screen footer text for consistency. (WordPress/gutenberg#76382) - E2E Tests: Add coverage for AI plugin callout banner on Connectors page (WordPress/gutenberg#76432) - Update sync docs (WordPress/gutenberg#75972) - RTC: Add preference for collaborator notifications (WordPress/gutenberg#76460) - Fix "should undo bold" flaky test (WordPress/gutenberg#76464) - TimePicker: Clamp month day to valid day for month (WordPress/gutenberg#76400) - RTC: Fix error when entity record doesn't have 'meta' property (WordPress/gutenberg#76311) - Navigation: Update close button size. (WordPress/gutenberg#76482) - TemplateContentPanel: fix useSelect warning (WordPress/gutenberg#76421) - DataViews: Add spinner in `DataViewsLayout` in initial load of data (WordPress/gutenberg#76486) (WordPress/gutenberg#76490) - RTC: Fix TypeError in areEditorStatesEqual when selection is undefined (WordPress/gutenberg#76163) - Page/Post Content Focus Mode: Fix insertion into Post Content block (WordPress/gutenberg#76477) - Revisions: use useSubRegistry={false} to fix global store selectors (WordPress/gutenberg#76152) (WordPress/gutenberg#76522) - Fix RTL styling on Connectors, Font Library, and boot-based admin pages (WordPress/gutenberg#76496) - RTC: Auto-register custom taxonomy rest_base values for CRDT sync (WordPress/gutenberg#75983) - RTC: Add a limit for the default provider (WordPress/gutenberg#76437) - Fix RTL styling on AI plugin callout banner (WordPress/gutenberg#76497) - Add command palette trigger button to admin bar (WordPress/gutenberg#75757) - Block Bindings: Remove source items constrained by enums (WordPress/gutenberg#76200) - HTML Block: Remove "unsaved changes" check (WordPress/gutenberg#76086) - CI: Don't build release notes during plugin build workflow for WP Core sync (WordPress/gutenberg#76398) (WordPress/gutenberg#76578) - CI: Simplify strategy matrix in Build Gutenberg Plugin Zip workflow (WordPress/gutenberg#76435) (WordPress/gutenberg#76538) - Media: Add hooks and extension points for client-side media processing (WordPress/gutenberg#74913) - RTC: Fix list sidebar reset during real-time collaboration (WordPress/gutenberg#76025) - RTC: Fix CRDT serialization of nested RichText attributes (WordPress/gutenberg#76597) - RTC: Remove post list lock icon and replace user-specific lock text (WordPress/gutenberg#76322) - Fix HEIC upload error handling and sub-size format (WordPress/gutenberg#76514) - RTC: Fix cursor index sync with rich text formatting (WordPress/gutenberg#76418) - RTC: Allow filtering of `SyncConnectionModal` (WordPress/gutenberg#76554) - RTC: Implement front-end peer limits (WordPress/gutenberg#76565) - Navigation overlay close button may be displayed twice (WordPress/gutenberg#76585) - Site Editor > Templates: fix author filter (WordPress/gutenberg#76625) - Revisions: Show changed block attributes in inspector sidebar (WordPress/gutenberg#76550) - Fix IS_GUTENBERG_PLUGIN env var override in build config (WordPress/gutenberg#76605) - Real Time Collaboration: Introduce filters for the polling intervals. (WordPress/gutenberg#76518) - RTC: Fix RichTextData deserialization (WordPress/gutenberg#76607) - Cross Origin Isolation: Remove `img` from the list of elements that get mutated (WordPress/gutenberg#76618) - RTC: Scroll to collaborator on click (WordPress/gutenberg#76561) - Update changelog link for pull request 11276 (WordPress/gutenberg#76638) - Fix backport changelog filename (WordPress/gutenberg#76651) - Build: Skip non-minified build for WASM-inlined workers (WordPress/gutenberg#76615) - RTC: Change RTC option name (WordPress/gutenberg#76643) - BlockListBlock: fix crash when selectedProps are null (WordPress/gutenberg#75826) - Build: Fix vips worker 404 when SCRIPT_DEBUG is true (WordPress/gutenberg#76657) - useMediaQuery: support in-iframe queries via new `WindowContext` (WordPress/gutenberg#76446) (WordPress/gutenberg#76660) - Refactor admin-ui Page component to use @wordpress/theme tokens and @wordpress/ui layout primitive (WordPress/gutenberg#75963) - Connectors: Improve accessibility (WordPress/gutenberg#76456) - Build: Remove unused JXL WASM module from vips worker (WordPress/gutenberg#76639) - Connectors: fix button size (WordPress/gutenberg#76582) - Compose: Implement useCopyToClipboard and useCopyOnClick with native clipboard API (WordPress/gutenberg#75723) (WordPress/gutenberg#76663) - Connectors: Fetch specific plugin instead of all plugins (WordPress/gutenberg#76594) - Revisions: Add Meta fields diff panel to document sidebar (WordPress/gutenberg#76341) - Loosen client-side media processing requirements (WordPress/gutenberg#76616) - Reduce the added halo for selected block. (WordPress/gutenberg#76619) - Connectors: Add unregisterConnector and upsert support (WordPress/gutenberg#76541) A full list of changes can be found on GitHub: https://github.com/WordPress/gutenberg/compare/8c78d87453509661a9f28f978ba2c242d515563b…487a096a9782ba6110a7686d7b4b2d0c55ed1b06. Log created with: git log --reverse --format="- %s" 8c78d87453509661a9f28f978ba2c242d515563b..487a096a9782ba6110a7686d7b4b2d0c55ed1b06 | sed 's|#\([0-9][0-9]*\)|https://github.com/WordPress/gutenberg/pull/\1|g; /github\.com\/WordPress\/gutenberg\/pull/!d' | pbcopy See #64595. git-svn-id: https://develop.svn.wordpress.org/trunk@62063 602fd350-edb4-49c9-b593-d223f7449a82
This updates the pinned hash from the `gutenberg` from `8c78d87453509661a9f28f978ba2c242d515563b` to `487a096a9782ba6110a7686d7b4b2d0c55ed1b06`. The following changes are included: - Disables anchor support for the Page Break block. (WordPress/gutenberg#76434) - WP Admin: Update Connectors screen footer text for consistency. (WordPress/gutenberg#76382) - E2E Tests: Add coverage for AI plugin callout banner on Connectors page (WordPress/gutenberg#76432) - Update sync docs (WordPress/gutenberg#75972) - RTC: Add preference for collaborator notifications (WordPress/gutenberg#76460) - Fix "should undo bold" flaky test (WordPress/gutenberg#76464) - TimePicker: Clamp month day to valid day for month (WordPress/gutenberg#76400) - RTC: Fix error when entity record doesn't have 'meta' property (WordPress/gutenberg#76311) - Navigation: Update close button size. (WordPress/gutenberg#76482) - TemplateContentPanel: fix useSelect warning (WordPress/gutenberg#76421) - DataViews: Add spinner in `DataViewsLayout` in initial load of data (WordPress/gutenberg#76486) (WordPress/gutenberg#76490) - RTC: Fix TypeError in areEditorStatesEqual when selection is undefined (WordPress/gutenberg#76163) - Page/Post Content Focus Mode: Fix insertion into Post Content block (WordPress/gutenberg#76477) - Revisions: use useSubRegistry={false} to fix global store selectors (WordPress/gutenberg#76152) (WordPress/gutenberg#76522) - Fix RTL styling on Connectors, Font Library, and boot-based admin pages (WordPress/gutenberg#76496) - RTC: Auto-register custom taxonomy rest_base values for CRDT sync (WordPress/gutenberg#75983) - RTC: Add a limit for the default provider (WordPress/gutenberg#76437) - Fix RTL styling on AI plugin callout banner (WordPress/gutenberg#76497) - Add command palette trigger button to admin bar (WordPress/gutenberg#75757) - Block Bindings: Remove source items constrained by enums (WordPress/gutenberg#76200) - HTML Block: Remove "unsaved changes" check (WordPress/gutenberg#76086) - CI: Don't build release notes during plugin build workflow for WP Core sync (WordPress/gutenberg#76398) (WordPress/gutenberg#76578) - CI: Simplify strategy matrix in Build Gutenberg Plugin Zip workflow (WordPress/gutenberg#76435) (WordPress/gutenberg#76538) - Media: Add hooks and extension points for client-side media processing (WordPress/gutenberg#74913) - RTC: Fix list sidebar reset during real-time collaboration (WordPress/gutenberg#76025) - RTC: Fix CRDT serialization of nested RichText attributes (WordPress/gutenberg#76597) - RTC: Remove post list lock icon and replace user-specific lock text (WordPress/gutenberg#76322) - Fix HEIC upload error handling and sub-size format (WordPress/gutenberg#76514) - RTC: Fix cursor index sync with rich text formatting (WordPress/gutenberg#76418) - RTC: Allow filtering of `SyncConnectionModal` (WordPress/gutenberg#76554) - RTC: Implement front-end peer limits (WordPress/gutenberg#76565) - Navigation overlay close button may be displayed twice (WordPress/gutenberg#76585) - Site Editor > Templates: fix author filter (WordPress/gutenberg#76625) - Revisions: Show changed block attributes in inspector sidebar (WordPress/gutenberg#76550) - Fix IS_GUTENBERG_PLUGIN env var override in build config (WordPress/gutenberg#76605) - Real Time Collaboration: Introduce filters for the polling intervals. (WordPress/gutenberg#76518) - RTC: Fix RichTextData deserialization (WordPress/gutenberg#76607) - Cross Origin Isolation: Remove `img` from the list of elements that get mutated (WordPress/gutenberg#76618) - RTC: Scroll to collaborator on click (WordPress/gutenberg#76561) - Update changelog link for pull request 11276 (WordPress/gutenberg#76638) - Fix backport changelog filename (WordPress/gutenberg#76651) - Build: Skip non-minified build for WASM-inlined workers (WordPress/gutenberg#76615) - RTC: Change RTC option name (WordPress/gutenberg#76643) - BlockListBlock: fix crash when selectedProps are null (WordPress/gutenberg#75826) - Build: Fix vips worker 404 when SCRIPT_DEBUG is true (WordPress/gutenberg#76657) - useMediaQuery: support in-iframe queries via new `WindowContext` (WordPress/gutenberg#76446) (WordPress/gutenberg#76660) - Refactor admin-ui Page component to use @wordpress/theme tokens and @wordpress/ui layout primitive (WordPress/gutenberg#75963) - Connectors: Improve accessibility (WordPress/gutenberg#76456) - Build: Remove unused JXL WASM module from vips worker (WordPress/gutenberg#76639) - Connectors: fix button size (WordPress/gutenberg#76582) - Compose: Implement useCopyToClipboard and useCopyOnClick with native clipboard API (WordPress/gutenberg#75723) (WordPress/gutenberg#76663) - Connectors: Fetch specific plugin instead of all plugins (WordPress/gutenberg#76594) - Revisions: Add Meta fields diff panel to document sidebar (WordPress/gutenberg#76341) - Loosen client-side media processing requirements (WordPress/gutenberg#76616) - Reduce the added halo for selected block. (WordPress/gutenberg#76619) - Connectors: Add unregisterConnector and upsert support (WordPress/gutenberg#76541) A full list of changes can be found on GitHub: https://github.com/WordPress/gutenberg/compare/8c78d87453509661a9f28f978ba2c242d515563b…487a096a9782ba6110a7686d7b4b2d0c55ed1b06. Log created with: git log --reverse --format="- %s" 8c78d87453509661a9f28f978ba2c242d515563b..487a096a9782ba6110a7686d7b4b2d0c55ed1b06 | sed 's|#\([0-9][0-9]*\)|https://github.com/WordPress/gutenberg/pull/\1|g; /github\.com\/WordPress\/gutenberg\/pull/!d' | pbcopy See #64595. Built from https://develop.svn.wordpress.org/trunk@62063 git-svn-id: http://core.svn.wordpress.org/trunk@61345 1a063a9b-81f0-0310-95a4-ce76da25c4cd
|
I just cherry-picked this PR to the release/22.8 branch to get it included in the next release: 1fd1b5a |
* Add failing unit test for RichTextData conversion * Fix RichText attribute type via deserializeBlockAttributes() call in getPostChangesFromCRDTDoc() * Add test for nested RichText value * Modify deserializeAttributeValue() to recurse arrays and object, using block schema for deeply nested strings * Remove deserializeBlockAttributeValues to avoid 3 different deserialization functions * Add factory wrapper for rich text cache, testing Co-authored-by: alecgeatches <alecgeatches@git.wordpress.org> Co-authored-by: chriszarate <czarate@git.wordpress.org> Co-authored-by: ingeniumed <ingeniumed@git.wordpress.org>
* Real Time Collaboration: Introduce filters for the polling intervals. (#76518) * Introduce filters for the RTC polling intervals. Introduces four filters for the polling intervals in the real time collaboration client: * `sync.pollingManager.pollingIntervalNoCollaborators` the interval in milliseconds when there are no collaborators in the room * `sync.pollingManager.pollingIntervalWithCollaborators` the interval in milliseconds when there are collaborators in the room * Remove background tab interval filter * Match filter to constant name --------- Co-authored-by: peterwilsoncc <peterwilsoncc@git.wordpress.org> Co-authored-by: chriszarate <czarate@git.wordpress.org> * RTC: Fix RichTextData deserialization (#76607) * Add failing unit test for RichTextData conversion * Fix RichText attribute type via deserializeBlockAttributes() call in getPostChangesFromCRDTDoc() * Add test for nested RichText value * Modify deserializeAttributeValue() to recurse arrays and object, using block schema for deeply nested strings * Remove deserializeBlockAttributeValues to avoid 3 different deserialization functions * Add factory wrapper for rich text cache, testing Co-authored-by: alecgeatches <alecgeatches@git.wordpress.org> Co-authored-by: chriszarate <czarate@git.wordpress.org> Co-authored-by: ingeniumed <ingeniumed@git.wordpress.org> * RTC: Scroll to collaborator on click (#76561) * Add createCursorRegistry factory and use it for scrolling to cursors * Use createCursorRegistry for scrolling * Localize spoken scroll to cursor announcement * Merge two matching conditionals * Use removeAll in cursor registry ------ Co-authored-by: maxschmeling <maxschmeling@git.wordpress.org> Co-authored-by: ingeniumed <ingeniumed@git.wordpress.org> * RTC: Change RTC option name (#76643) * Change RTC option name * Add backport changelog * Restore option migration * Cover previous option name in setCollaboration * Respect previous value in setting injection * Update migration const * Temporary bridge Co-authored-by: chriszarate <czarate@git.wordpress.org> Co-authored-by: sc0ttkclark <sc0ttkclark@git.wordpress.org> Co-authored-by: maxschmeling <maxschmeling@git.wordpress.org> Co-authored-by: ingeniumed <ingeniumed@git.wordpress.org> * RTC: Backport race condition fix (#76649) * Backport race condition fix * Add backport changelog entry * RTC: Increase polling intervals, increase polling on primary room only (#76704) * Bump polling intervals up by 4x * Reset `hasCollaborators` flag on awareness check * Use the first registered room as the primaryRoom, and only pay attention to awareness results from that entity to avoid poll increases from shared entities like categores * Simplify primaryRoom and enforceConnectionLimit * Fix the collaboration utility setup for collaboration tests --------- Co-authored-by: alecgeatches <alecgeatches@git.wordpress.org> Co-authored-by: ingeniumed <ingeniumed@git.wordpress.org> Co-authored-by: chriszarate <czarate@git.wordpress.org> Co-authored-by: t-hamano <wildworks@git.wordpress.org> * RTC: Use activation hook to enable RTC by default (#76736) * Use activation hook to enable RTC by default * Fix plugin file reference * Directly hook into the `activate_` function for enabling collaboration * Add PR backport for opt-in change --------- Co-authored-by: Alec Geatches <alec.geatches@automattic.com> * RTC: Add E2E "stress test" with complex interactions (#76055) * Add RTC E2E "stress test" with complex interactions * Refactor collab utils to work for n users instead of just 2 users * Attempting to fix the timeout, as well as the text insertion being slightly off * insert the test rather than sequentially type it * Respect the collaborators limit of 3 * Switch the type to insertText * Remove refresh as that causes editor limit exceeded * Check Gamma's movement --------- Co-authored-by: chriszarate <czarate@git.wordpress.org> Co-authored-by: ingeniumed <ingeniumed@git.wordpress.org> Co-authored-by: shekharnwagh <shekharnwagh@git.wordpress.org> * RTC: Use prepared queries instead of `*_post_meta` functions (#76779) ## What? Use prepared queries instead of `*_post_meta` functions. ## Why? Backport of WordPress/wordpress-develop#11325. Prevents post and post meta cache invalidation when RTC requests are handled. - See: https://core.trac.wordpress.org/ticket/64696 - See: https://core.trac.wordpress.org/ticket/64916 * RTC: Remove stale wp_enable_real_time_collaboration option check (#76810) Co-authored-by: shekharnwagh <shekharnwagh@git.wordpress.org> Co-authored-by: chriszarate <czarate@git.wordpress.org> * RTC: Fix editor freeze when replacing code editor content (#76815) * Add failing performance test for huge code editor changes * Use diffLines() when strings are > 10_000 characters * Handle diffLines in diffWithCursor() when cursor information is sent. We don't care about the cursor for huge performance-sensitive updates * Explicitly use "primary" instead of "meta" key * Revert "Explicitly use "primary" instead of "meta" key" This reverts commit 33e7aba. * Fix paste keys for CI, lower timeouts * Remove console.log Co-authored-by: alecgeatches <alecgeatches@git.wordpress.org> Co-authored-by: chriszarate <czarate@git.wordpress.org> * Preferences: Hide collaboration options when RTC is not enabled (#76819) * Preferences: Hide collaboration options when RTC is not enabled Only show the "Show avatar in blocks" and "Show collaboration notifications" preference controls when real-time collaboration is actually enabled for the current post. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Preferences: Consolidate editorStore select call Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: t-hamano <wildworks@git.wordpress.org> Co-authored-by: chriszarate <czarate@git.wordpress.org> * Fix navigation block rendering unit test (#76685) * Fix navigation block rendering unit test * Remove semicolon Co-authored-by: t-hamano <wildworks@git.wordpress.org> Co-authored-by: westonruter <westonruter@git.wordpress.org> * Fix navigation block unit test and e2e test (#76692) * Fix navigation block rendering unit test (second try) * Fix e2e test * Revert unncessary change --------- Co-authored-by: Peter Wilson <519727+peterwilsoncc@users.noreply.github.com> Co-authored-by: peterwilsoncc <peterwilsoncc@git.wordpress.org> Co-authored-by: chriszarate <czarate@git.wordpress.org> Co-authored-by: Alec Geatches <alec.geatches@automattic.com> Co-authored-by: alecgeatches <alecgeatches@git.wordpress.org> Co-authored-by: ingeniumed <ingeniumed@git.wordpress.org> Co-authored-by: Max Schmeling <max.schmeling@automattic.com> Co-authored-by: maxschmeling <maxschmeling@git.wordpress.org> Co-authored-by: Chris Zarate <chris.zarate@automattic.com> Co-authored-by: sc0ttkclark <sc0ttkclark@git.wordpress.org> Co-authored-by: t-hamano <wildworks@git.wordpress.org> Co-authored-by: shekharnwagh <shekharnwagh@git.wordpress.org> Co-authored-by: Shekhar Wagh <shekharnwagh@gmail.com> Co-authored-by: Aki Hamano <54422211+t-hamano@users.noreply.github.com> Co-authored-by: westonruter <westonruter@git.wordpress.org>
* Add failing unit test for RichTextData conversion * Fix RichText attribute type via deserializeBlockAttributes() call in getPostChangesFromCRDTDoc() * Add test for nested RichText value * Modify deserializeAttributeValue() to recurse arrays and object, using block schema for deeply nested strings * Remove deserializeBlockAttributeValues to avoid 3 different deserialization functions * Add factory wrapper for rich text cache, testing Co-authored-by: alecgeatches <alecgeatches@git.wordpress.org> Co-authored-by: chriszarate <czarate@git.wordpress.org> Co-authored-by: ingeniumed <ingeniumed@git.wordpress.org>
* Add failing unit test for RichTextData conversion * Fix RichText attribute type via deserializeBlockAttributes() call in getPostChangesFromCRDTDoc() * Add test for nested RichText value * Modify deserializeAttributeValue() to recurse arrays and object, using block schema for deeply nested strings * Remove deserializeBlockAttributeValues to avoid 3 different deserialization functions * Add factory wrapper for rich text cache, testing Co-authored-by: alecgeatches <alecgeatches@git.wordpress.org> Co-authored-by: chriszarate <czarate@git.wordpress.org> Co-authored-by: ingeniumed <ingeniumed@git.wordpress.org>
This updates the pinned commit hash of the Gutenberg repository from `3166ad3c587b4091f77b0e16affeed5762e193f1` (version `22.8.0`) to `5426109cdaf45828ef28ff8527d7d38e7e75fe74` (version `22.9.0`). A full list of changes included in this commit can be found on GitHub: https://github.com/WordPress/gutenberg/compare/v22.8.0..v22.9.0. The following commits are included: - Real Time Collaboration: Introduce filters for the polling intervals. (WordPress/gutenberg#76518) - UI: Update @base-ui/react from 1.2.0 to 1.3.0 (WordPress/gutenberg#76603) - Card: Use Text component for Title typography (WordPress/gutenberg#76642) - Add TypeScript parser tests for shouldSkipReference (WordPress/gutenberg#76611) - Update changelog link for pull request 11276 (WordPress/gutenberg#76638) - ThemeProvider: Add `cursor` prop (WordPress/gutenberg#76410) - RTC: Fix RichTextData deserialization (WordPress/gutenberg#76607) - Cross Origin Isolation: Remove `img` from the list of elements that get mutated (WordPress/gutenberg#76618) - RTC: Scroll to collaborator on click (WordPress/gutenberg#76561) - Fix backport changelog filename (WordPress/gutenberg#76651) - Build: Skip non-minified build for WASM-inlined workers (WordPress/gutenberg#76615) - Improvements to dataviews infinite scroll (WordPress/gutenberg#74378) - Image/Site Logo: hide crop toolbar when editMediaEntity is unavailable (WordPress/gutenberg#76626) - Bump lodash from 4.17.21 to 4.17.23 in /platform-docs (WordPress/gutenberg#74829) - RTC: Change RTC option name (WordPress/gutenberg#76643) - Change from PR WordPress/gutenberg#11276 to WordPress/gutenberg#11234 with with different approach (WordPress/gutenberg#76661) - Build: Fix vips worker 404 when SCRIPT_DEBUG is true (WordPress/gutenberg#76657) - Build: Remove unused JXL WASM module from vips worker (WordPress/gutenberg#76639) - Storybook: disabled autodocs for Icon library (WordPress/gutenberg#76620) - Connectors: fix button size (WordPress/gutenberg#76582) - Revisions: Add Meta fields diff panel to document sidebar (WordPress/gutenberg#76341) - Reduce the added halo for selected block. (WordPress/gutenberg#76619) - Site Editor > Pages: move view config to the server (WordPress/gutenberg#76573) - ui/Tabs: add runtime validation for tab/panel mismatches (WordPress/gutenberg#75170) - Fix Color Picker Angle Reset on Gradient Type Change (WordPress/gutenberg#76595) - ESLint: Add `no-unmerged-classname` rule (WordPress/gutenberg#76458) - RTC: Backport race condition fix (WordPress/gutenberg#76649) - ui/Card: Add overflow: clip to root container (WordPress/gutenberg#76678) - Storybook: Make "introduction" top level (WordPress/gutenberg#76671) - Fix navigation block rendering unit test (WordPress/gutenberg#76685) - Hide Additional CSS controls when block is inside contentOnly editing mode (WordPress/gutenberg#76512) - RTC: Increase polling intervals, increase polling on primary room only (WordPress/gutenberg#76704) - Navigation: Avoid List View changing position when navigation block saves (WordPress/gutenberg#76659) - Fix navigation block unit test and e2e test (WordPress/gutenberg#76692) - Stretchy Text: Fix focus loss (WordPress/gutenberg#75092) - Fix locked content when switching to a different template without exiting 'Edit pattern' (WordPress/gutenberg#76710) - Guidelines: Improvements to the UX (WordPress/gutenberg#76383) - Fix: Create custom template modal content width (WordPress/gutenberg#76713) - Core Data: Optimize getRawEntityRecord selector (WordPress/gutenberg#76632) - Metabox: Fix checkbox style in sidebar (WordPress/gutenberg#76718) - Stop keeping stale controlled blocks after reset (WordPress/gutenberg#76591) - Gate client-side media processing as plugin-only (WordPress/gutenberg#76700) - Storybook: Add redirect for moved introduction page (WordPress/gutenberg#76701) - InputControl: Add to @wordpress/ui (WordPress/gutenberg#76653) - UI Tooltip: Improve documentation to cover intended accessibility practices (WordPress/gutenberg#76705) - Add EmptyState component to @wordpress/ui (WordPress/gutenberg#74719) - RTC: Use activation hook to enable RTC by default (WordPress/gutenberg#76736) - Forms Block: Add hidden input field variation (WordPress/gutenberg#74131) - Guidelines: Refactor components and improve TypeScript typing (WordPress/gutenberg#76394) - Connectors: Align client-side registration API with server-side (WordPress/gutenberg#76737) - Properly resolve `getTemplateId` for hybrid themes (WordPress/gutenberg#76532) - Changelog: Add missing label-to-feature mappings (WordPress/gutenberg#76646) - Connectors: Support non-AI provider types and add JS extensibility e2e test (WordPress/gutenberg#76722) - Experimental: Add `template` panel to include the existing template actions (WordPress/gutenberg#76539) - RadioControl: Add `role="radiogroup"` to fieldset (WordPress/gutenberg#76745) - wp-build: Hash transformed CSS for `data-wp-hash` dedupe key (WordPress/gutenberg#76743) - Button: restore specificity of high-contrast mode focus ring (WordPress/gutenberg#76719) - Updating versions in WordPress ahead of 7.0 (WordPress/gutenberg#76723) - Bump the github-actions group across 2 directories with 1 update (WordPress/gutenberg#76681) - Admin UI: Add CSS files to sideEffects array (WordPress/gutenberg#76609) - RTC: Add E2E "stress test" with complex interactions (WordPress/gutenberg#76055) - Connectors: Improve AI plugin button (WordPress/gutenberg#76759) - Login/out block: Add button block class names to the submit button (WordPress/gutenberg#76746) - Commands: Add sections to command palette and introduce Recently used functionality (WordPress/gutenberg#75691) - RTC: Use prepared queries instead of `*_post_meta` functions (WordPress/gutenberg#76779) - Core Abilities: fix sideEffects flag (WordPress/gutenberg#76763) - Site Editor > Patterns: move config to the server (WordPress/gutenberg#76734) - Docs: Remove Puppeteer references and update to Playwright (WordPress/gutenberg#76766) - Site Editor > Templates: move config to the server (WordPress/gutenberg#76622) - Core Data: Remove 'isRawAttribute' internal util (WordPress/gutenberg#76806) - Reset blockEditingModes on RESET_BLOCKS (WordPress/gutenberg#76529) - Refactor: Use null coalescing operator for improved readability (WordPress/gutenberg#76777) - ui/CollapsibleCard: do not animate focus ring (WordPress/gutenberg#76682) - admin-ui / Breadcrumbs: stricter `items[].to` prop types (WordPress/gutenberg#76493) - RTC: Remove stale wp_enable_real_time_collaboration option check (WordPress/gutenberg#76810) - Storybook: Try changing to collapsed folders (WordPress/gutenberg#76361) - @wordpress/dataviews: migrate card layout to @wordpress/ui (WordPress/gutenberg#76282) - RTC: Fix editor freeze when replacing code editor content (WordPress/gutenberg#76815) - Preferences: Hide collaboration options when RTC is not enabled (WordPress/gutenberg#76819) - Cherry-pick: Set milestone on PRs after cherry-picking to release branch (WordPress/gutenberg#76652) - Site Tagline: Fix block error when migrating deprecated textAlign attribute (WordPress/gutenberg#76821) - Commands: Fix unstable `useSelect` return value for `recentlyUsedNames` (WordPress/gutenberg#76822) - `ControlWithError`: Connect validation messages to controls via `aria-describedby` (WordPress/gutenberg#76742) - Block Editor: Deprecate '__unstableSaveReusableBlock' action (WordPress/gutenberg#76807) - Editor: Fix template revisions using 'modified' date field instead of 'date' (WordPress/gutenberg#76760) - UI: Clarify public APIs and component naming, remove NoticeIntent typings (WordPress/gutenberg#76791) - fix(date): Recover WP timezone after third-party moment-timezone reload (WordPress/gutenberg#75831) - Admin UI: Update Page background color (WordPress/gutenberg#76548) - Snackbar: Use surface-width design token for max-width (WordPress/gutenberg#76592) - iAPI Docs: Add client-side navigation compatibility guide (WordPress/gutenberg#76242) - Enhance block registration by using blocks-manifest for improved performance (WordPress/gutenberg#76317) - docs(create-block-interactive-template): document available variants in README (WordPress/gutenberg#76831) - Build: detect version and generate asset.php for vendor scripts (WordPress/gutenberg#76811) - Site Editor > Patterns & Parts: generate sidebar from view config (WordPress/gutenberg#76823) - Interactivity API: mention `client-side-navigation` scaffold variant in getting-started guide (WordPress/gutenberg#76543) - Fields: Add `excerpt` field (WordPress/gutenberg#76829) - Update PHP_CodeSniffer repository link and schema URL (WordPress/gutenberg#76816) - docs: Fix markdown links and PHP code block in client-side navigation compatibility guide (WordPress/gutenberg#76856) - Experimental: Add `revisions` panel (WordPress/gutenberg#76735) - WordPress/gutenberg#76478 Boot: Fix black area below content when sidebar is taller than page c… (WordPress/gutenberg#76764) - Style Book: Fix missing styles for classic themes in stylebook route (WordPress/gutenberg#76843) - UI/Dialog: Expose initialFocus and finalFocus on Dialog.Popup (WordPress/gutenberg#76860) - compose/useDialog: add `stopPropagation()` to Escape handler (WordPress/gutenberg#76861) - RTC: Add e2e block gauntlet (WordPress/gutenberg#76849) - UI: Add AlertDialog primitive (WordPress/gutenberg#76847) - RTC: Fix stuck "Join" link in post list when lock expires (WordPress/gutenberg#76795) - Site Editor: simplify sidebar for Pages & Templates (WordPress/gutenberg#76868) - Site Editor v2: Add missing menu items to navigation leaf more menu (WordPress/gutenberg#76804) - Navigation: Add a shared helper for font sizes in Navigation Link and Navigation Submenu blocks (WordPress/gutenberg#74855) - Reduce specificity of nav link default padding so global styles are applied (WordPress/gutenberg#76876) - Icon: Fix center alignment in the editor for classic themes (WordPress/gutenberg#76878) - RTC: Fix notes not syncing between collaborative editors (WordPress/gutenberg#76873) - List Item: Disable edit as HTML support (WordPress/gutenberg#76897) - Block Library: Show fallback label in MediaControl when filename is empty (WordPress/gutenberg#76888) - Image block media placeholder: remove duotone (WordPress/gutenberg#76721) - Latest Comments: Fix v1 deprecated block missing supports (WordPress/gutenberg#76877) - VIPS: ensure single instance (WordPress/gutenberg#76780) - React vendor script: avoid warning on createRoot (WordPress/gutenberg#76825) - Connectors: Add Akismet as a default connector (WordPress/gutenberg#76828) - Core Data: remove offset param from stableKey, use pagination logic (WordPress/gutenberg#76808) - Button: hide focus outline on :active for click feedback in forced-colors mode (WordPress/gutenberg#76833) - Restore with compaction update (WordPress/gutenberg#76872) - Theme: Change default control cursor to `pointer` (WordPress/gutenberg#76762) - E2E Tests: Enable client-side media processing for site editor image test (WordPress/gutenberg#76648) - ComboboxControl: Fix accessible association of `help` text (WordPress/gutenberg#76761) - Add backport for WP_ALLOW_COLLABORATION (WordPress/gutenberg#76716) - DataForm: Add `compact` configuration option to the `datetime` control (WordPress/gutenberg#76905) - Admin UI: Fix Page Header not rendering with only actions and add stories (WordPress/gutenberg#76695) - Improve JSDoc for abilities API (WordPress/gutenberg#76824) - DOM: Document class wildcard matcher for 'cleanNodeList' (WordPress/gutenberg#76920) - e2e: Add e2e tests for template and template part revisions (WordPress/gutenberg#76923) - react-dom vendor script: remove __esModule flag (WordPress/gutenberg#76925) - Site Editor: Fix unsupported theme flash on direct URL navigation (WordPress/gutenberg#76465) - Icons: Enforce strict name validation in `register` method (WordPress/gutenberg#76079) - ToggleGroupControl: Fix accessible association of `help` text (WordPress/gutenberg#76740) - Connectors: Replace plugin.slug with plugin.file (WordPress/gutenberg#76909) - UI/Dialog: deprioritize close icon for initial focus (WordPress/gutenberg#76910) - Block visibility badge: use canvas iframe for viewport detection (WordPress/gutenberg#76889) - Fields: Add `sticky` field (WordPress/gutenberg#76922) - DOM: Prefer standard `caretPositionFromPoint` over deprecated `caretRangeFromPoint` (WordPress/gutenberg#76921) - Block Supports: Add background gradient support that can combine with background images (WordPress/gutenberg#75859) - Tab Block: Remove anchor from save function (WordPress/gutenberg#76511) - CollapsibleCard: Add HeaderDescription subcomponent (WordPress/gutenberg#76867) - element: Make createInterpolateElement TS/type smart (WordPress/gutenberg#71513) - admin-ui: Update README to clarify purpose and distinguish from ui package (WordPress/gutenberg#76943) - Site Editor > Quick Edit: add form config to endpoint (WordPress/gutenberg#76953) - Fields: Tweak `excerpt` field (WordPress/gutenberg#76903) - Fix: Flaky RichText format e2e test (WordPress/gutenberg#76958) Props adamsilverstein, jorbin, westonruter, wildworks. Fixes #65556. git-svn-id: https://develop.svn.wordpress.org/trunk@62578 602fd350-edb4-49c9-b593-d223f7449a82
This updates the pinned commit hash of the Gutenberg repository from `3166ad3c587b4091f77b0e16affeed5762e193f1` (version `22.8.0`) to `5426109cdaf45828ef28ff8527d7d38e7e75fe74` (version `22.9.0`). A full list of changes included in this commit can be found on GitHub: https://github.com/WordPress/gutenberg/compare/v22.8.0..v22.9.0. The following commits are included: - Real Time Collaboration: Introduce filters for the polling intervals. (WordPress/gutenberg#76518) - UI: Update @base-ui/react from 1.2.0 to 1.3.0 (WordPress/gutenberg#76603) - Card: Use Text component for Title typography (WordPress/gutenberg#76642) - Add TypeScript parser tests for shouldSkipReference (WordPress/gutenberg#76611) - Update changelog link for pull request 11276 (WordPress/gutenberg#76638) - ThemeProvider: Add `cursor` prop (WordPress/gutenberg#76410) - RTC: Fix RichTextData deserialization (WordPress/gutenberg#76607) - Cross Origin Isolation: Remove `img` from the list of elements that get mutated (WordPress/gutenberg#76618) - RTC: Scroll to collaborator on click (WordPress/gutenberg#76561) - Fix backport changelog filename (WordPress/gutenberg#76651) - Build: Skip non-minified build for WASM-inlined workers (WordPress/gutenberg#76615) - Improvements to dataviews infinite scroll (WordPress/gutenberg#74378) - Image/Site Logo: hide crop toolbar when editMediaEntity is unavailable (WordPress/gutenberg#76626) - Bump lodash from 4.17.21 to 4.17.23 in /platform-docs (WordPress/gutenberg#74829) - RTC: Change RTC option name (WordPress/gutenberg#76643) - Change from PR WordPress/gutenberg#11276 to WordPress/gutenberg#11234 with with different approach (WordPress/gutenberg#76661) - Build: Fix vips worker 404 when SCRIPT_DEBUG is true (WordPress/gutenberg#76657) - Build: Remove unused JXL WASM module from vips worker (WordPress/gutenberg#76639) - Storybook: disabled autodocs for Icon library (WordPress/gutenberg#76620) - Connectors: fix button size (WordPress/gutenberg#76582) - Revisions: Add Meta fields diff panel to document sidebar (WordPress/gutenberg#76341) - Reduce the added halo for selected block. (WordPress/gutenberg#76619) - Site Editor > Pages: move view config to the server (WordPress/gutenberg#76573) - ui/Tabs: add runtime validation for tab/panel mismatches (WordPress/gutenberg#75170) - Fix Color Picker Angle Reset on Gradient Type Change (WordPress/gutenberg#76595) - ESLint: Add `no-unmerged-classname` rule (WordPress/gutenberg#76458) - RTC: Backport race condition fix (WordPress/gutenberg#76649) - ui/Card: Add overflow: clip to root container (WordPress/gutenberg#76678) - Storybook: Make "introduction" top level (WordPress/gutenberg#76671) - Fix navigation block rendering unit test (WordPress/gutenberg#76685) - Hide Additional CSS controls when block is inside contentOnly editing mode (WordPress/gutenberg#76512) - RTC: Increase polling intervals, increase polling on primary room only (WordPress/gutenberg#76704) - Navigation: Avoid List View changing position when navigation block saves (WordPress/gutenberg#76659) - Fix navigation block unit test and e2e test (WordPress/gutenberg#76692) - Stretchy Text: Fix focus loss (WordPress/gutenberg#75092) - Fix locked content when switching to a different template without exiting 'Edit pattern' (WordPress/gutenberg#76710) - Guidelines: Improvements to the UX (WordPress/gutenberg#76383) - Fix: Create custom template modal content width (WordPress/gutenberg#76713) - Core Data: Optimize getRawEntityRecord selector (WordPress/gutenberg#76632) - Metabox: Fix checkbox style in sidebar (WordPress/gutenberg#76718) - Stop keeping stale controlled blocks after reset (WordPress/gutenberg#76591) - Gate client-side media processing as plugin-only (WordPress/gutenberg#76700) - Storybook: Add redirect for moved introduction page (WordPress/gutenberg#76701) - InputControl: Add to @wordpress/ui (WordPress/gutenberg#76653) - UI Tooltip: Improve documentation to cover intended accessibility practices (WordPress/gutenberg#76705) - Add EmptyState component to @wordpress/ui (WordPress/gutenberg#74719) - RTC: Use activation hook to enable RTC by default (WordPress/gutenberg#76736) - Forms Block: Add hidden input field variation (WordPress/gutenberg#74131) - Guidelines: Refactor components and improve TypeScript typing (WordPress/gutenberg#76394) - Connectors: Align client-side registration API with server-side (WordPress/gutenberg#76737) - Properly resolve `getTemplateId` for hybrid themes (WordPress/gutenberg#76532) - Changelog: Add missing label-to-feature mappings (WordPress/gutenberg#76646) - Connectors: Support non-AI provider types and add JS extensibility e2e test (WordPress/gutenberg#76722) - Experimental: Add `template` panel to include the existing template actions (WordPress/gutenberg#76539) - RadioControl: Add `role="radiogroup"` to fieldset (WordPress/gutenberg#76745) - wp-build: Hash transformed CSS for `data-wp-hash` dedupe key (WordPress/gutenberg#76743) - Button: restore specificity of high-contrast mode focus ring (WordPress/gutenberg#76719) - Updating versions in WordPress ahead of 7.0 (WordPress/gutenberg#76723) - Bump the github-actions group across 2 directories with 1 update (WordPress/gutenberg#76681) - Admin UI: Add CSS files to sideEffects array (WordPress/gutenberg#76609) - RTC: Add E2E "stress test" with complex interactions (WordPress/gutenberg#76055) - Connectors: Improve AI plugin button (WordPress/gutenberg#76759) - Login/out block: Add button block class names to the submit button (WordPress/gutenberg#76746) - Commands: Add sections to command palette and introduce Recently used functionality (WordPress/gutenberg#75691) - RTC: Use prepared queries instead of `*_post_meta` functions (WordPress/gutenberg#76779) - Core Abilities: fix sideEffects flag (WordPress/gutenberg#76763) - Site Editor > Patterns: move config to the server (WordPress/gutenberg#76734) - Docs: Remove Puppeteer references and update to Playwright (WordPress/gutenberg#76766) - Site Editor > Templates: move config to the server (WordPress/gutenberg#76622) - Core Data: Remove 'isRawAttribute' internal util (WordPress/gutenberg#76806) - Reset blockEditingModes on RESET_BLOCKS (WordPress/gutenberg#76529) - Refactor: Use null coalescing operator for improved readability (WordPress/gutenberg#76777) - ui/CollapsibleCard: do not animate focus ring (WordPress/gutenberg#76682) - admin-ui / Breadcrumbs: stricter `items[].to` prop types (WordPress/gutenberg#76493) - RTC: Remove stale wp_enable_real_time_collaboration option check (WordPress/gutenberg#76810) - Storybook: Try changing to collapsed folders (WordPress/gutenberg#76361) - @wordpress/dataviews: migrate card layout to @wordpress/ui (WordPress/gutenberg#76282) - RTC: Fix editor freeze when replacing code editor content (WordPress/gutenberg#76815) - Preferences: Hide collaboration options when RTC is not enabled (WordPress/gutenberg#76819) - Cherry-pick: Set milestone on PRs after cherry-picking to release branch (WordPress/gutenberg#76652) - Site Tagline: Fix block error when migrating deprecated textAlign attribute (WordPress/gutenberg#76821) - Commands: Fix unstable `useSelect` return value for `recentlyUsedNames` (WordPress/gutenberg#76822) - `ControlWithError`: Connect validation messages to controls via `aria-describedby` (WordPress/gutenberg#76742) - Block Editor: Deprecate '__unstableSaveReusableBlock' action (WordPress/gutenberg#76807) - Editor: Fix template revisions using 'modified' date field instead of 'date' (WordPress/gutenberg#76760) - UI: Clarify public APIs and component naming, remove NoticeIntent typings (WordPress/gutenberg#76791) - fix(date): Recover WP timezone after third-party moment-timezone reload (WordPress/gutenberg#75831) - Admin UI: Update Page background color (WordPress/gutenberg#76548) - Snackbar: Use surface-width design token for max-width (WordPress/gutenberg#76592) - iAPI Docs: Add client-side navigation compatibility guide (WordPress/gutenberg#76242) - Enhance block registration by using blocks-manifest for improved performance (WordPress/gutenberg#76317) - docs(create-block-interactive-template): document available variants in README (WordPress/gutenberg#76831) - Build: detect version and generate asset.php for vendor scripts (WordPress/gutenberg#76811) - Site Editor > Patterns & Parts: generate sidebar from view config (WordPress/gutenberg#76823) - Interactivity API: mention `client-side-navigation` scaffold variant in getting-started guide (WordPress/gutenberg#76543) - Fields: Add `excerpt` field (WordPress/gutenberg#76829) - Update PHP_CodeSniffer repository link and schema URL (WordPress/gutenberg#76816) - docs: Fix markdown links and PHP code block in client-side navigation compatibility guide (WordPress/gutenberg#76856) - Experimental: Add `revisions` panel (WordPress/gutenberg#76735) - WordPress/gutenberg#76478 Boot: Fix black area below content when sidebar is taller than page c… (WordPress/gutenberg#76764) - Style Book: Fix missing styles for classic themes in stylebook route (WordPress/gutenberg#76843) - UI/Dialog: Expose initialFocus and finalFocus on Dialog.Popup (WordPress/gutenberg#76860) - compose/useDialog: add `stopPropagation()` to Escape handler (WordPress/gutenberg#76861) - RTC: Add e2e block gauntlet (WordPress/gutenberg#76849) - UI: Add AlertDialog primitive (WordPress/gutenberg#76847) - RTC: Fix stuck "Join" link in post list when lock expires (WordPress/gutenberg#76795) - Site Editor: simplify sidebar for Pages & Templates (WordPress/gutenberg#76868) - Site Editor v2: Add missing menu items to navigation leaf more menu (WordPress/gutenberg#76804) - Navigation: Add a shared helper for font sizes in Navigation Link and Navigation Submenu blocks (WordPress/gutenberg#74855) - Reduce specificity of nav link default padding so global styles are applied (WordPress/gutenberg#76876) - Icon: Fix center alignment in the editor for classic themes (WordPress/gutenberg#76878) - RTC: Fix notes not syncing between collaborative editors (WordPress/gutenberg#76873) - List Item: Disable edit as HTML support (WordPress/gutenberg#76897) - Block Library: Show fallback label in MediaControl when filename is empty (WordPress/gutenberg#76888) - Image block media placeholder: remove duotone (WordPress/gutenberg#76721) - Latest Comments: Fix v1 deprecated block missing supports (WordPress/gutenberg#76877) - VIPS: ensure single instance (WordPress/gutenberg#76780) - React vendor script: avoid warning on createRoot (WordPress/gutenberg#76825) - Connectors: Add Akismet as a default connector (WordPress/gutenberg#76828) - Core Data: remove offset param from stableKey, use pagination logic (WordPress/gutenberg#76808) - Button: hide focus outline on :active for click feedback in forced-colors mode (WordPress/gutenberg#76833) - Restore with compaction update (WordPress/gutenberg#76872) - Theme: Change default control cursor to `pointer` (WordPress/gutenberg#76762) - E2E Tests: Enable client-side media processing for site editor image test (WordPress/gutenberg#76648) - ComboboxControl: Fix accessible association of `help` text (WordPress/gutenberg#76761) - Add backport for WP_ALLOW_COLLABORATION (WordPress/gutenberg#76716) - DataForm: Add `compact` configuration option to the `datetime` control (WordPress/gutenberg#76905) - Admin UI: Fix Page Header not rendering with only actions and add stories (WordPress/gutenberg#76695) - Improve JSDoc for abilities API (WordPress/gutenberg#76824) - DOM: Document class wildcard matcher for 'cleanNodeList' (WordPress/gutenberg#76920) - e2e: Add e2e tests for template and template part revisions (WordPress/gutenberg#76923) - react-dom vendor script: remove __esModule flag (WordPress/gutenberg#76925) - Site Editor: Fix unsupported theme flash on direct URL navigation (WordPress/gutenberg#76465) - Icons: Enforce strict name validation in `register` method (WordPress/gutenberg#76079) - ToggleGroupControl: Fix accessible association of `help` text (WordPress/gutenberg#76740) - Connectors: Replace plugin.slug with plugin.file (WordPress/gutenberg#76909) - UI/Dialog: deprioritize close icon for initial focus (WordPress/gutenberg#76910) - Block visibility badge: use canvas iframe for viewport detection (WordPress/gutenberg#76889) - Fields: Add `sticky` field (WordPress/gutenberg#76922) - DOM: Prefer standard `caretPositionFromPoint` over deprecated `caretRangeFromPoint` (WordPress/gutenberg#76921) - Block Supports: Add background gradient support that can combine with background images (WordPress/gutenberg#75859) - Tab Block: Remove anchor from save function (WordPress/gutenberg#76511) - CollapsibleCard: Add HeaderDescription subcomponent (WordPress/gutenberg#76867) - element: Make createInterpolateElement TS/type smart (WordPress/gutenberg#71513) - admin-ui: Update README to clarify purpose and distinguish from ui package (WordPress/gutenberg#76943) - Site Editor > Quick Edit: add form config to endpoint (WordPress/gutenberg#76953) - Fields: Tweak `excerpt` field (WordPress/gutenberg#76903) - Fix: Flaky RichText format e2e test (WordPress/gutenberg#76958) Props adamsilverstein, jorbin, westonruter, wildworks. Fixes #65556. Built from https://develop.svn.wordpress.org/trunk@62578 git-svn-id: http://core.svn.wordpress.org/trunk@61858 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This updates the pinned commit hash of the Gutenberg repository from `3166ad3c587b4091f77b0e16affeed5762e193f1` (version `22.8.0`) to `5426109cdaf45828ef28ff8527d7d38e7e75fe74` (version `22.9.0`). A full list of changes included in this commit can be found on GitHub: https://github.com/WordPress/gutenberg/compare/v22.8.0..v22.9.0. The following commits are included: - Real Time Collaboration: Introduce filters for the polling intervals. (WordPress/gutenberg#76518) - UI: Update @base-ui/react from 1.2.0 to 1.3.0 (WordPress/gutenberg#76603) - Card: Use Text component for Title typography (WordPress/gutenberg#76642) - Add TypeScript parser tests for shouldSkipReference (WordPress/gutenberg#76611) - Update changelog link for pull request 11276 (WordPress/gutenberg#76638) - ThemeProvider: Add `cursor` prop (WordPress/gutenberg#76410) - RTC: Fix RichTextData deserialization (WordPress/gutenberg#76607) - Cross Origin Isolation: Remove `img` from the list of elements that get mutated (WordPress/gutenberg#76618) - RTC: Scroll to collaborator on click (WordPress/gutenberg#76561) - Fix backport changelog filename (WordPress/gutenberg#76651) - Build: Skip non-minified build for WASM-inlined workers (WordPress/gutenberg#76615) - Improvements to dataviews infinite scroll (WordPress/gutenberg#74378) - Image/Site Logo: hide crop toolbar when editMediaEntity is unavailable (WordPress/gutenberg#76626) - Bump lodash from 4.17.21 to 4.17.23 in /platform-docs (WordPress/gutenberg#74829) - RTC: Change RTC option name (WordPress/gutenberg#76643) - Change from PR WordPress/gutenberg#11276 to WordPress/gutenberg#11234 with with different approach (WordPress/gutenberg#76661) - Build: Fix vips worker 404 when SCRIPT_DEBUG is true (WordPress/gutenberg#76657) - Build: Remove unused JXL WASM module from vips worker (WordPress/gutenberg#76639) - Storybook: disabled autodocs for Icon library (WordPress/gutenberg#76620) - Connectors: fix button size (WordPress/gutenberg#76582) - Revisions: Add Meta fields diff panel to document sidebar (WordPress/gutenberg#76341) - Reduce the added halo for selected block. (WordPress/gutenberg#76619) - Site Editor > Pages: move view config to the server (WordPress/gutenberg#76573) - ui/Tabs: add runtime validation for tab/panel mismatches (WordPress/gutenberg#75170) - Fix Color Picker Angle Reset on Gradient Type Change (WordPress/gutenberg#76595) - ESLint: Add `no-unmerged-classname` rule (WordPress/gutenberg#76458) - RTC: Backport race condition fix (WordPress/gutenberg#76649) - ui/Card: Add overflow: clip to root container (WordPress/gutenberg#76678) - Storybook: Make "introduction" top level (WordPress/gutenberg#76671) - Fix navigation block rendering unit test (WordPress/gutenberg#76685) - Hide Additional CSS controls when block is inside contentOnly editing mode (WordPress/gutenberg#76512) - RTC: Increase polling intervals, increase polling on primary room only (WordPress/gutenberg#76704) - Navigation: Avoid List View changing position when navigation block saves (WordPress/gutenberg#76659) - Fix navigation block unit test and e2e test (WordPress/gutenberg#76692) - Stretchy Text: Fix focus loss (WordPress/gutenberg#75092) - Fix locked content when switching to a different template without exiting 'Edit pattern' (WordPress/gutenberg#76710) - Guidelines: Improvements to the UX (WordPress/gutenberg#76383) - Fix: Create custom template modal content width (WordPress/gutenberg#76713) - Core Data: Optimize getRawEntityRecord selector (WordPress/gutenberg#76632) - Metabox: Fix checkbox style in sidebar (WordPress/gutenberg#76718) - Stop keeping stale controlled blocks after reset (WordPress/gutenberg#76591) - Gate client-side media processing as plugin-only (WordPress/gutenberg#76700) - Storybook: Add redirect for moved introduction page (WordPress/gutenberg#76701) - InputControl: Add to @wordpress/ui (WordPress/gutenberg#76653) - UI Tooltip: Improve documentation to cover intended accessibility practices (WordPress/gutenberg#76705) - Add EmptyState component to @wordpress/ui (WordPress/gutenberg#74719) - RTC: Use activation hook to enable RTC by default (WordPress/gutenberg#76736) - Forms Block: Add hidden input field variation (WordPress/gutenberg#74131) - Guidelines: Refactor components and improve TypeScript typing (WordPress/gutenberg#76394) - Connectors: Align client-side registration API with server-side (WordPress/gutenberg#76737) - Properly resolve `getTemplateId` for hybrid themes (WordPress/gutenberg#76532) - Changelog: Add missing label-to-feature mappings (WordPress/gutenberg#76646) - Connectors: Support non-AI provider types and add JS extensibility e2e test (WordPress/gutenberg#76722) - Experimental: Add `template` panel to include the existing template actions (WordPress/gutenberg#76539) - RadioControl: Add `role="radiogroup"` to fieldset (WordPress/gutenberg#76745) - wp-build: Hash transformed CSS for `data-wp-hash` dedupe key (WordPress/gutenberg#76743) - Button: restore specificity of high-contrast mode focus ring (WordPress/gutenberg#76719) - Updating versions in WordPress ahead of 7.0 (WordPress/gutenberg#76723) - Bump the github-actions group across 2 directories with 1 update (WordPress/gutenberg#76681) - Admin UI: Add CSS files to sideEffects array (WordPress/gutenberg#76609) - RTC: Add E2E "stress test" with complex interactions (WordPress/gutenberg#76055) - Connectors: Improve AI plugin button (WordPress/gutenberg#76759) - Login/out block: Add button block class names to the submit button (WordPress/gutenberg#76746) - Commands: Add sections to command palette and introduce Recently used functionality (WordPress/gutenberg#75691) - RTC: Use prepared queries instead of `*_post_meta` functions (WordPress/gutenberg#76779) - Core Abilities: fix sideEffects flag (WordPress/gutenberg#76763) - Site Editor > Patterns: move config to the server (WordPress/gutenberg#76734) - Docs: Remove Puppeteer references and update to Playwright (WordPress/gutenberg#76766) - Site Editor > Templates: move config to the server (WordPress/gutenberg#76622) - Core Data: Remove 'isRawAttribute' internal util (WordPress/gutenberg#76806) - Reset blockEditingModes on RESET_BLOCKS (WordPress/gutenberg#76529) - Refactor: Use null coalescing operator for improved readability (WordPress/gutenberg#76777) - ui/CollapsibleCard: do not animate focus ring (WordPress/gutenberg#76682) - admin-ui / Breadcrumbs: stricter `items[].to` prop types (WordPress/gutenberg#76493) - RTC: Remove stale wp_enable_real_time_collaboration option check (WordPress/gutenberg#76810) - Storybook: Try changing to collapsed folders (WordPress/gutenberg#76361) - @wordpress/dataviews: migrate card layout to @wordpress/ui (WordPress/gutenberg#76282) - RTC: Fix editor freeze when replacing code editor content (WordPress/gutenberg#76815) - Preferences: Hide collaboration options when RTC is not enabled (WordPress/gutenberg#76819) - Cherry-pick: Set milestone on PRs after cherry-picking to release branch (WordPress/gutenberg#76652) - Site Tagline: Fix block error when migrating deprecated textAlign attribute (WordPress/gutenberg#76821) - Commands: Fix unstable `useSelect` return value for `recentlyUsedNames` (WordPress/gutenberg#76822) - `ControlWithError`: Connect validation messages to controls via `aria-describedby` (WordPress/gutenberg#76742) - Block Editor: Deprecate '__unstableSaveReusableBlock' action (WordPress/gutenberg#76807) - Editor: Fix template revisions using 'modified' date field instead of 'date' (WordPress/gutenberg#76760) - UI: Clarify public APIs and component naming, remove NoticeIntent typings (WordPress/gutenberg#76791) - fix(date): Recover WP timezone after third-party moment-timezone reload (WordPress/gutenberg#75831) - Admin UI: Update Page background color (WordPress/gutenberg#76548) - Snackbar: Use surface-width design token for max-width (WordPress/gutenberg#76592) - iAPI Docs: Add client-side navigation compatibility guide (WordPress/gutenberg#76242) - Enhance block registration by using blocks-manifest for improved performance (WordPress/gutenberg#76317) - docs(create-block-interactive-template): document available variants in README (WordPress/gutenberg#76831) - Build: detect version and generate asset.php for vendor scripts (WordPress/gutenberg#76811) - Site Editor > Patterns & Parts: generate sidebar from view config (WordPress/gutenberg#76823) - Interactivity API: mention `client-side-navigation` scaffold variant in getting-started guide (WordPress/gutenberg#76543) - Fields: Add `excerpt` field (WordPress/gutenberg#76829) - Update PHP_CodeSniffer repository link and schema URL (WordPress/gutenberg#76816) - docs: Fix markdown links and PHP code block in client-side navigation compatibility guide (WordPress/gutenberg#76856) - Experimental: Add `revisions` panel (WordPress/gutenberg#76735) - WordPress/gutenberg#76478 Boot: Fix black area below content when sidebar is taller than page c… (WordPress/gutenberg#76764) - Style Book: Fix missing styles for classic themes in stylebook route (WordPress/gutenberg#76843) - UI/Dialog: Expose initialFocus and finalFocus on Dialog.Popup (WordPress/gutenberg#76860) - compose/useDialog: add `stopPropagation()` to Escape handler (WordPress/gutenberg#76861) - RTC: Add e2e block gauntlet (WordPress/gutenberg#76849) - UI: Add AlertDialog primitive (WordPress/gutenberg#76847) - RTC: Fix stuck "Join" link in post list when lock expires (WordPress/gutenberg#76795) - Site Editor: simplify sidebar for Pages & Templates (WordPress/gutenberg#76868) - Site Editor v2: Add missing menu items to navigation leaf more menu (WordPress/gutenberg#76804) - Navigation: Add a shared helper for font sizes in Navigation Link and Navigation Submenu blocks (WordPress/gutenberg#74855) - Reduce specificity of nav link default padding so global styles are applied (WordPress/gutenberg#76876) - Icon: Fix center alignment in the editor for classic themes (WordPress/gutenberg#76878) - RTC: Fix notes not syncing between collaborative editors (WordPress/gutenberg#76873) - List Item: Disable edit as HTML support (WordPress/gutenberg#76897) - Block Library: Show fallback label in MediaControl when filename is empty (WordPress/gutenberg#76888) - Image block media placeholder: remove duotone (WordPress/gutenberg#76721) - Latest Comments: Fix v1 deprecated block missing supports (WordPress/gutenberg#76877) - VIPS: ensure single instance (WordPress/gutenberg#76780) - React vendor script: avoid warning on createRoot (WordPress/gutenberg#76825) - Connectors: Add Akismet as a default connector (WordPress/gutenberg#76828) - Core Data: remove offset param from stableKey, use pagination logic (WordPress/gutenberg#76808) - Button: hide focus outline on :active for click feedback in forced-colors mode (WordPress/gutenberg#76833) - Restore with compaction update (WordPress/gutenberg#76872) - Theme: Change default control cursor to `pointer` (WordPress/gutenberg#76762) - E2E Tests: Enable client-side media processing for site editor image test (WordPress/gutenberg#76648) - ComboboxControl: Fix accessible association of `help` text (WordPress/gutenberg#76761) - Add backport for WP_ALLOW_COLLABORATION (WordPress/gutenberg#76716) - DataForm: Add `compact` configuration option to the `datetime` control (WordPress/gutenberg#76905) - Admin UI: Fix Page Header not rendering with only actions and add stories (WordPress/gutenberg#76695) - Improve JSDoc for abilities API (WordPress/gutenberg#76824) - DOM: Document class wildcard matcher for 'cleanNodeList' (WordPress/gutenberg#76920) - e2e: Add e2e tests for template and template part revisions (WordPress/gutenberg#76923) - react-dom vendor script: remove __esModule flag (WordPress/gutenberg#76925) - Site Editor: Fix unsupported theme flash on direct URL navigation (WordPress/gutenberg#76465) - Icons: Enforce strict name validation in `register` method (WordPress/gutenberg#76079) - ToggleGroupControl: Fix accessible association of `help` text (WordPress/gutenberg#76740) - Connectors: Replace plugin.slug with plugin.file (WordPress/gutenberg#76909) - UI/Dialog: deprioritize close icon for initial focus (WordPress/gutenberg#76910) - Block visibility badge: use canvas iframe for viewport detection (WordPress/gutenberg#76889) - Fields: Add `sticky` field (WordPress/gutenberg#76922) - DOM: Prefer standard `caretPositionFromPoint` over deprecated `caretRangeFromPoint` (WordPress/gutenberg#76921) - Block Supports: Add background gradient support that can combine with background images (WordPress/gutenberg#75859) - Tab Block: Remove anchor from save function (WordPress/gutenberg#76511) - CollapsibleCard: Add HeaderDescription subcomponent (WordPress/gutenberg#76867) - element: Make createInterpolateElement TS/type smart (WordPress/gutenberg#71513) - admin-ui: Update README to clarify purpose and distinguish from ui package (WordPress/gutenberg#76943) - Site Editor > Quick Edit: add form config to endpoint (WordPress/gutenberg#76953) - Fields: Tweak `excerpt` field (WordPress/gutenberg#76903) - Fix: Flaky RichText format e2e test (WordPress/gutenberg#76958) Props adamsilverstein, jorbin, westonruter, wildworks. Fixes #65556. git-svn-id: https://develop.svn.wordpress.org/trunk@62578 602fd350-edb4-49c9-b593-d223f7449a82
This updates the pinned commit hash of the Gutenberg repository from `3166ad3c587b4091f77b0e16affeed5762e193f1` (version `22.8.0`) to `5426109cdaf45828ef28ff8527d7d38e7e75fe74` (version `22.9.0`). A full list of changes included in this commit can be found on GitHub: https://github.com/WordPress/gutenberg/compare/v22.8.0..v22.9.0. The following commits are included: - Real Time Collaboration: Introduce filters for the polling intervals. (WordPress/gutenberg#76518) - UI: Update @base-ui/react from 1.2.0 to 1.3.0 (WordPress/gutenberg#76603) - Card: Use Text component for Title typography (WordPress/gutenberg#76642) - Add TypeScript parser tests for shouldSkipReference (WordPress/gutenberg#76611) - Update changelog link for pull request 11276 (WordPress/gutenberg#76638) - ThemeProvider: Add `cursor` prop (WordPress/gutenberg#76410) - RTC: Fix RichTextData deserialization (WordPress/gutenberg#76607) - Cross Origin Isolation: Remove `img` from the list of elements that get mutated (WordPress/gutenberg#76618) - RTC: Scroll to collaborator on click (WordPress/gutenberg#76561) - Fix backport changelog filename (WordPress/gutenberg#76651) - Build: Skip non-minified build for WASM-inlined workers (WordPress/gutenberg#76615) - Improvements to dataviews infinite scroll (WordPress/gutenberg#74378) - Image/Site Logo: hide crop toolbar when editMediaEntity is unavailable (WordPress/gutenberg#76626) - Bump lodash from 4.17.21 to 4.17.23 in /platform-docs (WordPress/gutenberg#74829) - RTC: Change RTC option name (WordPress/gutenberg#76643) - Change from PR WordPress/gutenberg#11276 to WordPress/gutenberg#11234 with with different approach (WordPress/gutenberg#76661) - Build: Fix vips worker 404 when SCRIPT_DEBUG is true (WordPress/gutenberg#76657) - Build: Remove unused JXL WASM module from vips worker (WordPress/gutenberg#76639) - Storybook: disabled autodocs for Icon library (WordPress/gutenberg#76620) - Connectors: fix button size (WordPress/gutenberg#76582) - Revisions: Add Meta fields diff panel to document sidebar (WordPress/gutenberg#76341) - Reduce the added halo for selected block. (WordPress/gutenberg#76619) - Site Editor > Pages: move view config to the server (WordPress/gutenberg#76573) - ui/Tabs: add runtime validation for tab/panel mismatches (WordPress/gutenberg#75170) - Fix Color Picker Angle Reset on Gradient Type Change (WordPress/gutenberg#76595) - ESLint: Add `no-unmerged-classname` rule (WordPress/gutenberg#76458) - RTC: Backport race condition fix (WordPress/gutenberg#76649) - ui/Card: Add overflow: clip to root container (WordPress/gutenberg#76678) - Storybook: Make "introduction" top level (WordPress/gutenberg#76671) - Fix navigation block rendering unit test (WordPress/gutenberg#76685) - Hide Additional CSS controls when block is inside contentOnly editing mode (WordPress/gutenberg#76512) - RTC: Increase polling intervals, increase polling on primary room only (WordPress/gutenberg#76704) - Navigation: Avoid List View changing position when navigation block saves (WordPress/gutenberg#76659) - Fix navigation block unit test and e2e test (WordPress/gutenberg#76692) - Stretchy Text: Fix focus loss (WordPress/gutenberg#75092) - Fix locked content when switching to a different template without exiting 'Edit pattern' (WordPress/gutenberg#76710) - Guidelines: Improvements to the UX (WordPress/gutenberg#76383) - Fix: Create custom template modal content width (WordPress/gutenberg#76713) - Core Data: Optimize getRawEntityRecord selector (WordPress/gutenberg#76632) - Metabox: Fix checkbox style in sidebar (WordPress/gutenberg#76718) - Stop keeping stale controlled blocks after reset (WordPress/gutenberg#76591) - Gate client-side media processing as plugin-only (WordPress/gutenberg#76700) - Storybook: Add redirect for moved introduction page (WordPress/gutenberg#76701) - InputControl: Add to @wordpress/ui (WordPress/gutenberg#76653) - UI Tooltip: Improve documentation to cover intended accessibility practices (WordPress/gutenberg#76705) - Add EmptyState component to @wordpress/ui (WordPress/gutenberg#74719) - RTC: Use activation hook to enable RTC by default (WordPress/gutenberg#76736) - Forms Block: Add hidden input field variation (WordPress/gutenberg#74131) - Guidelines: Refactor components and improve TypeScript typing (WordPress/gutenberg#76394) - Connectors: Align client-side registration API with server-side (WordPress/gutenberg#76737) - Properly resolve `getTemplateId` for hybrid themes (WordPress/gutenberg#76532) - Changelog: Add missing label-to-feature mappings (WordPress/gutenberg#76646) - Connectors: Support non-AI provider types and add JS extensibility e2e test (WordPress/gutenberg#76722) - Experimental: Add `template` panel to include the existing template actions (WordPress/gutenberg#76539) - RadioControl: Add `role="radiogroup"` to fieldset (WordPress/gutenberg#76745) - wp-build: Hash transformed CSS for `data-wp-hash` dedupe key (WordPress/gutenberg#76743) - Button: restore specificity of high-contrast mode focus ring (WordPress/gutenberg#76719) - Updating versions in WordPress ahead of 7.0 (WordPress/gutenberg#76723) - Bump the github-actions group across 2 directories with 1 update (WordPress/gutenberg#76681) - Admin UI: Add CSS files to sideEffects array (WordPress/gutenberg#76609) - RTC: Add E2E "stress test" with complex interactions (WordPress/gutenberg#76055) - Connectors: Improve AI plugin button (WordPress/gutenberg#76759) - Login/out block: Add button block class names to the submit button (WordPress/gutenberg#76746) - Commands: Add sections to command palette and introduce Recently used functionality (WordPress/gutenberg#75691) - RTC: Use prepared queries instead of `*_post_meta` functions (WordPress/gutenberg#76779) - Core Abilities: fix sideEffects flag (WordPress/gutenberg#76763) - Site Editor > Patterns: move config to the server (WordPress/gutenberg#76734) - Docs: Remove Puppeteer references and update to Playwright (WordPress/gutenberg#76766) - Site Editor > Templates: move config to the server (WordPress/gutenberg#76622) - Core Data: Remove 'isRawAttribute' internal util (WordPress/gutenberg#76806) - Reset blockEditingModes on RESET_BLOCKS (WordPress/gutenberg#76529) - Refactor: Use null coalescing operator for improved readability (WordPress/gutenberg#76777) - ui/CollapsibleCard: do not animate focus ring (WordPress/gutenberg#76682) - admin-ui / Breadcrumbs: stricter `items[].to` prop types (WordPress/gutenberg#76493) - RTC: Remove stale wp_enable_real_time_collaboration option check (WordPress/gutenberg#76810) - Storybook: Try changing to collapsed folders (WordPress/gutenberg#76361) - @wordpress/dataviews: migrate card layout to @wordpress/ui (WordPress/gutenberg#76282) - RTC: Fix editor freeze when replacing code editor content (WordPress/gutenberg#76815) - Preferences: Hide collaboration options when RTC is not enabled (WordPress/gutenberg#76819) - Cherry-pick: Set milestone on PRs after cherry-picking to release branch (WordPress/gutenberg#76652) - Site Tagline: Fix block error when migrating deprecated textAlign attribute (WordPress/gutenberg#76821) - Commands: Fix unstable `useSelect` return value for `recentlyUsedNames` (WordPress/gutenberg#76822) - `ControlWithError`: Connect validation messages to controls via `aria-describedby` (WordPress/gutenberg#76742) - Block Editor: Deprecate '__unstableSaveReusableBlock' action (WordPress/gutenberg#76807) - Editor: Fix template revisions using 'modified' date field instead of 'date' (WordPress/gutenberg#76760) - UI: Clarify public APIs and component naming, remove NoticeIntent typings (WordPress/gutenberg#76791) - fix(date): Recover WP timezone after third-party moment-timezone reload (WordPress/gutenberg#75831) - Admin UI: Update Page background color (WordPress/gutenberg#76548) - Snackbar: Use surface-width design token for max-width (WordPress/gutenberg#76592) - iAPI Docs: Add client-side navigation compatibility guide (WordPress/gutenberg#76242) - Enhance block registration by using blocks-manifest for improved performance (WordPress/gutenberg#76317) - docs(create-block-interactive-template): document available variants in README (WordPress/gutenberg#76831) - Build: detect version and generate asset.php for vendor scripts (WordPress/gutenberg#76811) - Site Editor > Patterns & Parts: generate sidebar from view config (WordPress/gutenberg#76823) - Interactivity API: mention `client-side-navigation` scaffold variant in getting-started guide (WordPress/gutenberg#76543) - Fields: Add `excerpt` field (WordPress/gutenberg#76829) - Update PHP_CodeSniffer repository link and schema URL (WordPress/gutenberg#76816) - docs: Fix markdown links and PHP code block in client-side navigation compatibility guide (WordPress/gutenberg#76856) - Experimental: Add `revisions` panel (WordPress/gutenberg#76735) - WordPress/gutenberg#76478 Boot: Fix black area below content when sidebar is taller than page c… (WordPress/gutenberg#76764) - Style Book: Fix missing styles for classic themes in stylebook route (WordPress/gutenberg#76843) - UI/Dialog: Expose initialFocus and finalFocus on Dialog.Popup (WordPress/gutenberg#76860) - compose/useDialog: add `stopPropagation()` to Escape handler (WordPress/gutenberg#76861) - RTC: Add e2e block gauntlet (WordPress/gutenberg#76849) - UI: Add AlertDialog primitive (WordPress/gutenberg#76847) - RTC: Fix stuck "Join" link in post list when lock expires (WordPress/gutenberg#76795) - Site Editor: simplify sidebar for Pages & Templates (WordPress/gutenberg#76868) - Site Editor v2: Add missing menu items to navigation leaf more menu (WordPress/gutenberg#76804) - Navigation: Add a shared helper for font sizes in Navigation Link and Navigation Submenu blocks (WordPress/gutenberg#74855) - Reduce specificity of nav link default padding so global styles are applied (WordPress/gutenberg#76876) - Icon: Fix center alignment in the editor for classic themes (WordPress/gutenberg#76878) - RTC: Fix notes not syncing between collaborative editors (WordPress/gutenberg#76873) - List Item: Disable edit as HTML support (WordPress/gutenberg#76897) - Block Library: Show fallback label in MediaControl when filename is empty (WordPress/gutenberg#76888) - Image block media placeholder: remove duotone (WordPress/gutenberg#76721) - Latest Comments: Fix v1 deprecated block missing supports (WordPress/gutenberg#76877) - VIPS: ensure single instance (WordPress/gutenberg#76780) - React vendor script: avoid warning on createRoot (WordPress/gutenberg#76825) - Connectors: Add Akismet as a default connector (WordPress/gutenberg#76828) - Core Data: remove offset param from stableKey, use pagination logic (WordPress/gutenberg#76808) - Button: hide focus outline on :active for click feedback in forced-colors mode (WordPress/gutenberg#76833) - Restore with compaction update (WordPress/gutenberg#76872) - Theme: Change default control cursor to `pointer` (WordPress/gutenberg#76762) - E2E Tests: Enable client-side media processing for site editor image test (WordPress/gutenberg#76648) - ComboboxControl: Fix accessible association of `help` text (WordPress/gutenberg#76761) - Add backport for WP_ALLOW_COLLABORATION (WordPress/gutenberg#76716) - DataForm: Add `compact` configuration option to the `datetime` control (WordPress/gutenberg#76905) - Admin UI: Fix Page Header not rendering with only actions and add stories (WordPress/gutenberg#76695) - Improve JSDoc for abilities API (WordPress/gutenberg#76824) - DOM: Document class wildcard matcher for 'cleanNodeList' (WordPress/gutenberg#76920) - e2e: Add e2e tests for template and template part revisions (WordPress/gutenberg#76923) - react-dom vendor script: remove __esModule flag (WordPress/gutenberg#76925) - Site Editor: Fix unsupported theme flash on direct URL navigation (WordPress/gutenberg#76465) - Icons: Enforce strict name validation in `register` method (WordPress/gutenberg#76079) - ToggleGroupControl: Fix accessible association of `help` text (WordPress/gutenberg#76740) - Connectors: Replace plugin.slug with plugin.file (WordPress/gutenberg#76909) - UI/Dialog: deprioritize close icon for initial focus (WordPress/gutenberg#76910) - Block visibility badge: use canvas iframe for viewport detection (WordPress/gutenberg#76889) - Fields: Add `sticky` field (WordPress/gutenberg#76922) - DOM: Prefer standard `caretPositionFromPoint` over deprecated `caretRangeFromPoint` (WordPress/gutenberg#76921) - Block Supports: Add background gradient support that can combine with background images (WordPress/gutenberg#75859) - Tab Block: Remove anchor from save function (WordPress/gutenberg#76511) - CollapsibleCard: Add HeaderDescription subcomponent (WordPress/gutenberg#76867) - element: Make createInterpolateElement TS/type smart (WordPress/gutenberg#71513) - admin-ui: Update README to clarify purpose and distinguish from ui package (WordPress/gutenberg#76943) - Site Editor > Quick Edit: add form config to endpoint (WordPress/gutenberg#76953) - Fields: Tweak `excerpt` field (WordPress/gutenberg#76903) - Fix: Flaky RichText format e2e test (WordPress/gutenberg#76958) Props adamsilverstein, jorbin, westonruter, wildworks. Fixes #65556. git-svn-id: https://develop.svn.wordpress.org/trunk@62578 602fd350-edb4-49c9-b593-d223f7449a82
What?
Fixes an issue we've observed with the
jetpack-mu-wpcomcode block override that causes code content to be cleared out when another user loads the editor:code-block-reproduction.mov
This in particular resulted from the custom code block accessing a
RichTextattribute value viaattributes.content?.text. Intrunk, our CRDT code caused theattributes.contentvalue to be astringinstead ofRichTextDataso the.textproperty failed to exist.Why?
The Jetpack enhanced code block (and any block whose edit component accesses
content.textand expects a rich text object) breaks when a second user joins a collaborative session. The CRDT serialization path correctly convertsRichTextDatato strings when writing to the Y.Doc (serializeAttributeValue), but the deserialization path has no corresponding conversion back.This meant blocks received from CRDT had
contentas a raw string, socontent.text(aRichTextDatagetter) wasundefined. The edit component then initialized with empty content and wrote that back, wiping the block's content entirely.How?
Added
deserializeBlockAttributesas the inverse of the existing serialization path. WhengetPostChangesFromCRDTDocextracts blocks from the CRDT document, it now converts any rich-text string attributes back toRichTextDataviaRichTextData.fromHTMLString(). This ensures block edit components receive the same attribute types regardless of whether blocks were created locally or arrived via CRDT sync.Testing Instructions
Unit test
You can see the test failing before the fix here: https://github.com/WordPress/gutenberg/actions/runs/23220557291/job/67491959921?pr=76607.
Manual testing
Manual testing with
jetpack-mu-wpcom-specific blocks is difficult locally, so I've included test files that can be used locally to reproduce the same issue. Here's what the reproduction looks like using the "RTC Test Code Block":local-block-reproduction.mov
Test code block with fix disabled to show local reproduction
Here's how to run this locally to reproduce the bug against
trunk:Enable RTC via Settings -> Writing -> "Enable real-time collaboration" checkbox.
Create a
rtc-test-code-block/folder at the root of yourgutenbergrepository. Add these two files:rtc-test-code-block.phprtc-test-code-block.jsThese implement a block that reads from content via
attributes.content?.textand writes it back to the block attributes, replicating the same bug.Add the "plugin" to your
.wp-env.json:{ "$schema": "./schemas/json/wp-env.json", "testsEnvironment": false, "core": "WordPress/WordPress", - "plugins": [ "." ], + "plugins": [ ".", "./rtc-test-code-block" ], /* ... */ }Activate the plugin and open a draft post. Insert a "RTC Test Code Block", a heading block, and another "RTC Test Code Block", each with content.
Open the same post in a second browser.
After the collaborator list appears, the second user should see the code block contents cleared out.
Try again on this branch (
fix/rich-text-deserialization) and the content should stay.Use of AI Tools
AI assistance: Yes
Tool(s): Claude Code
Used for: Diagnosing the CRDT serialization problem and implementing the fix.