Skip to content

Backport RTC fixes from GB trunk to GB 22.8 for a point release#76834

Merged
ockham merged 14 commits intoWordPress:release/22.8from
dsas:release/22.8
Mar 26, 2026
Merged

Backport RTC fixes from GB trunk to GB 22.8 for a point release#76834
ockham merged 14 commits intoWordPress:release/22.8from
dsas:release/22.8

Conversation

@dsas
Copy link
Copy Markdown
Contributor

@dsas dsas commented Mar 26, 2026

What?

Cherry-pick of several RTC-related PRs from GB trunk to GB 22.8 release branch in order to make a GB 22.8.1 point release.

#76518
#76607
#76561
#76643
#76649
#76704
#76736
#76055
#76779
#76810
#76815
#76819

To make tests pass, also:
#76685
#76692

Why?

Enable wider testing of RTC without repeating old bugs.

peterwilsoncc and others added 12 commits March 26, 2026 13:24
…WordPress#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>
* 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 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>
* 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>
* Backport race condition fix

* Add backport changelog entry
WordPress#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>
* 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>
* 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>
…ss#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
…dPress#76810)

Co-authored-by: shekharnwagh <shekharnwagh@git.wordpress.org>
Co-authored-by: chriszarate <czarate@git.wordpress.org>
…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>
…Press#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>
@dsas dsas self-assigned this Mar 26, 2026
@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 26, 2026

Warning: Type of PR label mismatch

To merge this PR, it requires exactly 1 label indicating the type of PR. Other labels are optional and not being checked here.

  • Required label: Any label starting with [Type].
  • Labels found: [Package] Core data, [Package] Editor, [Package] Sync.

Read more about Type labels in Gutenberg. Don't worry if you don't have the required permissions to add labels; the PR reviewer should be able to help with the task.

@github-actions
Copy link
Copy Markdown

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 props-bot label.

If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message.

Co-authored-by: peterwilsoncc <peterwilsoncc@git.wordpress.org>
Co-authored-by: alecgeatches <alecgeatches@git.wordpress.org>
Co-authored-by: maxschmeling <maxschmeling@git.wordpress.org>
Co-authored-by: chriszarate <czarate@git.wordpress.org>
Co-authored-by: shekharnwagh <shekharnwagh@git.wordpress.org>
Co-authored-by: t-hamano <wildworks@git.wordpress.org>

To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook.

@github-actions github-actions bot added [Package] Core data /packages/core-data [Package] Editor /packages/editor [Package] Sync labels Mar 26, 2026
t-hamano and others added 2 commits March 26, 2026 13:58
* 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 rendering unit test (second try)

* Fix e2e test

* Revert unncessary change
@ockham ockham merged commit e23a02a into WordPress:release/22.8 Mar 26, 2026
39 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

8 participants