Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
114 commits
Select commit Hold shift + click to select a range
db27339
Bump plugin version to 21.5.0-rc.1
gutenbergplugin Aug 20, 2025
f2c4cc0
Update changelog files
gutenbergplugin Aug 20, 2025
edf0eb0
chore(release): publish
gutenbergplugin Aug 20, 2025
f0e5391
Update Changelog for 21.5.0-rc.1
gutenbergplugin Aug 20, 2025
0660896
Bump plugin version to 21.5.0
gutenbergplugin Aug 27, 2025
ab1a16b
Add `core.getSyncProvider` filter
chriszarate Jul 24, 2025
b87c344
Promote @wordpress/sync to public package
chriszarate Jul 24, 2025
6747160
Separate experimental flags for feature and transport
chriszarate Jul 24, 2025
b364074
Restore `register` property, for now.
chriszarate Jul 25, 2025
a154694
Fix unit test
chriszarate Jul 25, 2025
6ae2dbb
Remove conditional loading of @wordpress/sync
chriszarate Jul 28, 2025
d7c97fe
Remove @wordpress/hooks dependency
chriszarate Jul 28, 2025
3233321
Remove new experimental flag
chriszarate Jul 28, 2025
e2a5d25
Correctly fall back to no-op sync provider
chriszarate Jul 28, 2025
91d608b
Remove dependency from base package-lock
chriszarate Jul 28, 2025
e46ea59
Add Yjs-aware entity config
chriszarate Jul 29, 2025
b6c1894
Remove awareness implementation
chriszarate Jul 29, 2025
5b6c44a
Convert SyncProvider to class
chriszarate Jul 30, 2025
d3a4e3e
Update the package-lock.json and bump the y- packages
ingeniumed Aug 1, 2025
1eb3ad5
Add awareness as optional property on ConnectDocResult
chriszarate Aug 5, 2025
6bfebd0
Update SyncProvider for better extensibility
chriszarate Aug 5, 2025
cc1f457
Add the Yjs undo manager in the provider.ts
ingeniumed Aug 6, 2025
1fa7191
Make a separate exported clas for the undo manager coming from the pr…
ingeniumed Aug 6, 2025
d568b54
Cleanup and separation of concerns
chriszarate Aug 6, 2025
6f831a2
Rely on a single instance of UndoManager
chriszarate Aug 6, 2025
e80bb3d
Remove launch.json
chriszarate Aug 6, 2025
9644e7c
Remove feature flag check
chriszarate Aug 6, 2025
c5f78e3
Add supportsAwareness: true to post entities
chriszarate Aug 6, 2025
44df188
Minor change in the return for undo and undo manger return type
ingeniumed Aug 7, 2025
b4eeb98
Fix the missing path in tsconfig for hooks
ingeniumed Aug 7, 2025
e6b3784
Remove sync configs for non-synced entities
chriszarate Aug 14, 2025
fd4a59b
Allow custom sync provider to override initial CRDT doc
chriszarate Aug 14, 2025
6da12d1
Rename method for clarity
chriszarate Aug 15, 2025
b67b8ef
Filter synced properties
chriszarate Aug 18, 2025
db5d135
Reform object
chriszarate Aug 18, 2025
2c06dcb
Remove content and excerpt from synced property list
chriszarate Aug 18, 2025
38d0cf3
Move merge functions to separate utils file
chriszarate Aug 19, 2025
44b96cf
Rename Foo type and add comment
chriszarate Aug 19, 2025
aab2976
Sync post title
chriszarate Aug 21, 2025
414c61f
Improve block support
ingeniumed Aug 21, 2025
a7193cf
Move applyChangesToDoc core code to utils/crdt
chriszarate Aug 21, 2025
375e35b
Add post type support for collaborative editing
chriszarate Aug 21, 2025
059e107
Add editor support check
chriszarate Aug 21, 2025
04cb185
Tweak the flow with comments
ingeniumed Aug 25, 2025
bfe801e
Drop the filter
ingeniumed Aug 25, 2025
5571de6
Change 'mergeBlocks()' to 'mergeCrdtBlocks()' to make it distinct
alecgeatches Aug 27, 2025
d3ffe0b
Change mergeCrdtBlocks() to use direct Y types for yblocks. First ste…
alecgeatches Aug 27, 2025
f985f4a
Provide bindings for CRDT persistence
chriszarate Aug 27, 2025
b856db3
Control and validate CRDT doc version internally
chriszarate Aug 28, 2025
7674491
Fix CRDT merge object equality check against yBlockAsJson
alecgeatches Aug 28, 2025
a1d1d63
Add createNewYBlock for recursive insert
chriszarate Aug 28, 2025
ac4db99
Ensure we always recursively merge innerBlocks
chriszarate Aug 28, 2025
5ad8407
In areBlocksEqual(), ensure YBlock type instead of JSON value for com…
alecgeatches Aug 28, 2025
fe57ec5
Use Y.Map type for attributes in yblocks
alecgeatches Aug 28, 2025
cd9aec3
Bugfix: Don't allow non-array values for innerBlocks
chriszarate Aug 28, 2025
daf64b5
Cast rich-text types into Y.Text in the ydoc
alecgeatches Aug 28, 2025
038c74e
Improve type safety, DRY up, and slightly more efficient
chriszarate Aug 28, 2025
530fcee
Ensure attributes are deleted when removed
chriszarate Aug 28, 2025
a251865
Bugfix: Make sure new attributes are set.
chriszarate Aug 28, 2025
1379c8e
Disable autosave warnings when collaborative editing is enabled
chriszarate Aug 29, 2025
533f848
Merge pull request #19 from Automattic/improve/disable-autosave-warnings
chriszarate Aug 29, 2025
13047e9
Only use current record if persisted doc does not exist (or was inval…
chriszarate Aug 29, 2025
261222b
Improve SyncConfig function docblocks
chriszarate Aug 29, 2025
f42a405
Add comparison logic to sync only known changes
chriszarate Aug 30, 2025
8cd0256
Add a state map and sync last persisted date
chriszarate Sep 3, 2025
3b92193
Improve comments and types. Simplication of interfaces
chriszarate Sep 4, 2025
85a8342
Merge pull request #21 from Automattic/try/sync-persisted-entity
chriszarate Sep 4, 2025
6649558
Update CODE.md
chriszarate Sep 4, 2025
2e7b61d
Remove redundant exports
chriszarate Sep 4, 2025
140dbb8
Remove unused sync dependency
chriszarate Sep 4, 2025
59d7e35
Add `syncedProperties` to `syncConfig`
chriszarate Sep 10, 2025
252b464
Add `syncedProperties` to `SyncConfig` type
chriszarate Sep 10, 2025
1497116
Merge pull request #22 from Automattic/improve/expose-synced-properties
chriszarate Sep 10, 2025
af5f15e
Allow meta properties to be synced via an opt-in filter
chriszarate Sep 11, 2025
caab5b7
Remove confusing get inside setValue function
chriszarate Sep 11, 2025
90642d4
Add filter comment
chriszarate Sep 11, 2025
ffce7ef
Add footnotes to default set of synced meta properties
chriszarate Sep 11, 2025
6dcd1ed
Add crdtPersistence support (tangentially related)
chriszarate Sep 11, 2025
21f5b0a
Merge pull request #23 from Automattic/improve/sync-post-meta
chriszarate Sep 11, 2025
72c79b8
Switch meta to opt-out, filter each unique sync decision
chriszarate Sep 12, 2025
ff02470
Merge pull request #25 from Automattic/add/opt-out-filter
chriszarate Sep 15, 2025
b6ef1c4
Return original blocks when controlledBlocks represent post content i…
alecgeatches Sep 15, 2025
447b351
Expand comment about cloneBlock() workaround in useBlockSync()
alecgeatches Sep 16, 2025
99a08bd
Merge pull request #26 from Automattic/fix/post-content-uuids-with-sh…
alecgeatches Sep 16, 2025
9ee8279
Pass merged record to createEntityMeta
chriszarate Sep 17, 2025
9f843a6
Organize sync constants and move CRDT version to state map
chriszarate Sep 17, 2025
85da341
Update naming of record to rawRecord for clarity
chriszarate Sep 18, 2025
822c927
Create dedicated getInitialPostObjectData alongside similar functions
chriszarate Sep 17, 2025
e7b62cf
Update treatment of initial CRDT doc using invalidated meta
chriszarate Sep 18, 2025
e578120
Merge pull request #30 from Automattic/improve/dedicated-get-initial-…
ingeniumed Sep 18, 2025
490de26
Merge pull request #29 from Automattic/improve/raw-record-naming
ingeniumed Sep 18, 2025
65323fe
Merge pull request #28 from Automattic/improve/sync-constants
ingeniumed Sep 18, 2025
0354490
Merge pull request #27 from Automattic/fix/merged-record-for-entity-c…
ingeniumed Sep 18, 2025
c6e9d31
Merge pull request #31 from Automattic/improve/revision-restoration
ingeniumed Sep 18, 2025
6be5b15
Allow post lock dialog to return and retain functionality
pkevan Sep 19, 2025
f91192c
Supply Awareness instance to connection and observe changes
chriszarate Sep 19, 2025
a7ae761
Move from Y.transact to ydoc.transact
chriszarate Sep 22, 2025
ee07ba8
Don't dispatch edits if they are empty
chriszarate Sep 22, 2025
d8dd989
Use map key constant
chriszarate Sep 22, 2025
d2fff34
Allow edits from local Y.UndoManager
chriszarate Sep 22, 2025
59239e3
Merge pull request #33 from Automattic/add/awareness-notifications
chriszarate Sep 22, 2025
4b5536e
Only mark document as restored if there is an initial document
chriszarate Sep 23, 2025
adbfa3f
add todo
pkevan Sep 23, 2025
448d259
Merge pull request #32 from Automattic/fix/post-lock-dialog
pkevan Sep 23, 2025
c4da4d7
Add YTextAdapter with diff logging
alecgeatches Sep 24, 2025
33fce4b
Merge branch 'release/vip-rtc-0.1.0' into add/rich-text-attributes
alecgeatches Sep 26, 2025
7488ed4
Manage text diffs in mergeCrdtBlocks(), remove YTextAdapter
alecgeatches Sep 29, 2025
6993d5f
Remove YTextAdapter file and no longer relevant comments in useRichText
alecgeatches Sep 29, 2025
ddee708
Remove additional unused rich-text component changes
alecgeatches Sep 29, 2025
65842cd
Pass last selection as hint to mergeRichTextUpdate(), use local doc f…
alecgeatches Oct 2, 2025
7dfca21
Merge branch 'vip-rtc' into add/rich-text-attributes
alecgeatches Oct 3, 2025
bcb5105
Use internal WPBlockSelection type declaration to avoid interpackage …
alecgeatches Oct 7, 2025
3b6dbef
Improve types
chriszarate Oct 7, 2025
dc8fc4a
Simplify local ydoc code
chriszarate Oct 7, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Separate experimental flags for feature and transport
  • Loading branch information
chriszarate committed Aug 29, 2025
commit 67471601af9bd139f226d511a4370a9aa45dc3ee
5 changes: 4 additions & 1 deletion lib/client-assets.php
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,10 @@ function gutenberg_register_packages_scripts( $scripts ) {
break;

case 'wp-core-data':
if ( gutenberg_is_experiment_enabled( 'gutenberg-sync-collaboration' ) ) {
if (
gutenberg_is_experiment_enabled( 'gutenberg-sync-collaboration' ) &&
gutenberg_is_experiment_enabled( 'gutenberg-sync-collaboration-webrtc-provider' )
) {
array_push( $dependencies, 'wp-sync' );
}
break;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ class Gutenberg_HTTP_Signaling_Server {
*/
public static function init() {
$gutenberg_experiments = get_option( 'gutenberg-experiments' );
if ( ! $gutenberg_experiments || ! array_key_exists( 'gutenberg-sync-collaboration', $gutenberg_experiments ) ) {
if ( ! $gutenberg_experiments || ! array_key_exists( 'gutenberg-sync-collaboration-webrtc-provider', $gutenberg_experiments ) ) {
return;
}
add_action( 'wp_ajax_gutenberg_signaling_server', array( __CLASS__, 'do_wp_ajax_action' ) );
Expand Down
16 changes: 14 additions & 2 deletions lib/experiments-page.php
Original file line number Diff line number Diff line change
Expand Up @@ -129,16 +129,28 @@ function gutenberg_initialize_experiments_settings() {

add_settings_field(
'gutenberg-sync-collaboration',
__( 'Collaboration: add real time editing', 'gutenberg' ),
__( 'Collaboration: enable real-time collaboration', 'gutenberg' ),
'gutenberg_display_experiment_field',
'gutenberg-experiments',
'gutenberg_experiments_section',
array(
'label' => __( 'Enables live collaboration and offline persistence between peers.', 'gutenberg' ),
'label' => __( 'Enables real-time collaboration between peers (requires provider).', 'gutenberg' ),
'id' => 'gutenberg-sync-collaboration',
)
);

add_settings_field(
'gutenberg-sync-collaboration-webrtc-provider',
__( 'Collaboration: WebRTC provider', 'gutenberg' ),
'gutenberg_display_experiment_field',
'gutenberg-experiments',
'gutenberg_experiments_section',
array(
'label' => __( 'Enables the WebRTC provider for real-time collaboration.', 'gutenberg' ),
'id' => 'gutenberg-sync-collaboration-webrtc-provider',
)
);

add_settings_field(
'gutenberg-color-randomizer',
__( 'Color randomizer', 'gutenberg' ),
Expand Down