Branch: refs/heads/master Home: https://github.com/xwiki/xwiki-platform Commit: 9a1d810db8d589ec9b61512d408c054a288b09a4 https://github.com/xwiki/xwiki-platform/commit/9a1d810db8d589ec9b61512d408c0... Author: Marius Dumitru Florea <[email protected]> Date: 2026-05-05 (Tue, 05 May 2026) Changed paths: M pnpm-lock.yaml M pnpm-workspace.yaml M xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-api/pom.xml A xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-api/src/main/java/org/xwiki/blocknote/internal/BlockNoteConfigUIExtension.java M xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-api/src/main/resources/META-INF/components.txt A xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-api/src/main/resources/templates/blocknote/config.wiki M xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/pom.xml M xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/it/org/xwiki/blocknote/test/ui/AbstractBlockNoteIT.java M xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/it/org/xwiki/blocknote/test/ui/AllIT.java M xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/it/org/xwiki/blocknote/test/ui/BlockNoteIT.java A xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/it/org/xwiki/blocknote/test/ui/CollaborationIT.java M xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/it/org/xwiki/blocknote/test/ui/ImageIT.java M xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/it/org/xwiki/blocknote/test/ui/MacroIT.java M xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/it/org/xwiki/blocknote/test/ui/RoundTripIT.java M xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-pageobjects/src/main/java/org/xwiki/blocknote/test/po/BlockNoteRichTextArea.java M xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-webjar/pom.xml M xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-webjar/src/main/node/package.json M xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-webjar/src/main/node/src/components/XWikiBlockNote.vue M xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-webjar/src/main/node/src/services/Logic.ts M xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-webjar/src/main/node/src/services/authentication/XWikiAuthenticationManager.ts M xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-webjar/src/main/node/src/services/container.ts A xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-webjar/src/main/node/src/services/cristal/MinimalApp.ts M xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-webjar/src/main/node/src/services/inplace.js M xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-webjar/src/main/node/src/services/model/reference/XWikiEntityReference.ts M xwiki-platform-core/xwiki-platform-node/src/main/node/core/authentication/authentication-api/src/userDetails.ts M xwiki-platform-core/xwiki-platform-node/src/main/node/core/collaboration/collaboration-api/etc/platform-collaboration-api.api.md M xwiki-platform-core/xwiki-platform-node/src/main/node/core/collaboration/collaboration-api/package.json A xwiki-platform-core/xwiki-platform-node/src/main/node/core/collaboration/collaboration-api/src/abstractCollaborationManager.ts A xwiki-platform-core/xwiki-platform-node/src/main/node/core/collaboration/collaboration-api/src/collaboration.ts R xwiki-platform-core/xwiki-platform-node/src/main/node/core/collaboration/collaboration-api/src/collaborationInitializer.ts M xwiki-platform-core/xwiki-platform-node/src/main/node/core/collaboration/collaboration-api/src/collaborationManager.ts R xwiki-platform-core/xwiki-platform-node/src/main/node/core/collaboration/collaboration-api/src/collaborationManagerName.ts M xwiki-platform-core/xwiki-platform-node/src/main/node/core/collaboration/collaboration-api/src/collaborationManagerProvider.ts R xwiki-platform-core/xwiki-platform-node/src/main/node/core/collaboration/collaboration-api/src/collaborationManagerProviderName.ts A xwiki-platform-core/xwiki-platform-node/src/main/node/core/collaboration/collaboration-api/src/collaborator.ts M xwiki-platform-core/xwiki-platform-node/src/main/node/core/collaboration/collaboration-api/src/componentInit.ts A xwiki-platform-core/xwiki-platform-node/src/main/node/core/collaboration/collaboration-api/src/connectionStatus.ts M xwiki-platform-core/xwiki-platform-node/src/main/node/core/collaboration/collaboration-api/src/defaultCollaborationManagerProvider.ts M xwiki-platform-core/xwiki-platform-node/src/main/node/core/collaboration/collaboration-api/src/index.ts R xwiki-platform-core/xwiki-platform-node/src/main/node/core/collaboration/collaboration-api/src/status.ts R xwiki-platform-core/xwiki-platform-node/src/main/node/core/collaboration/collaboration-api/src/user.ts A xwiki-platform-core/xwiki-platform-node/src/main/node/core/collaboration/collaboration-xwiki/api-extractor.json A xwiki-platform-core/xwiki-platform-node/src/main/node/core/collaboration/collaboration-xwiki/etc/platform-collaboration-xwiki.api.md A xwiki-platform-core/xwiki-platform-node/src/main/node/core/collaboration/collaboration-xwiki/package.json A xwiki-platform-core/xwiki-platform-node/src/main/node/core/collaboration/collaboration-xwiki/src/XWikiCollaborationManager.ts A xwiki-platform-core/xwiki-platform-node/src/main/node/core/collaboration/collaboration-xwiki/src/componentInit.ts A xwiki-platform-core/xwiki-platform-node/src/main/node/core/collaboration/collaboration-xwiki/src/index.ts A xwiki-platform-core/xwiki-platform-node/src/main/node/core/collaboration/collaboration-xwiki/src/xwikiProviderWebSocket.ts A xwiki-platform-core/xwiki-platform-node/src/main/node/core/collaboration/collaboration-xwiki/tsconfig.json A xwiki-platform-core/xwiki-platform-node/src/main/node/core/collaboration/collaboration-xwiki/tsdoc.json A xwiki-platform-core/xwiki-platform-node/src/main/node/core/collaboration/collaboration-xwiki/vite.config.ts A xwiki-platform-core/xwiki-platform-node/src/main/node/core/collaboration/collaboration-xwiki/vitest.config.ts M xwiki-platform-core/xwiki-platform-node/src/main/node/editors/blocknote-headless/etc/platform-editors-blocknote-headless.api.md M xwiki-platform-core/xwiki-platform-node/src/main/node/editors/blocknote-headless/package.json R xwiki-platform-core/xwiki-platform-node/src/main/node/editors/blocknote-headless/src/components/currentUser.ts R xwiki-platform-core/xwiki-platform-node/src/main/node/editors/blocknote-headless/src/utils.ts M xwiki-platform-core/xwiki-platform-node/src/main/node/editors/blocknote-headless/src/vue/c-blocknote-view.vue M xwiki-platform-core/xwiki-platform-node/src/main/node/editors/blocknote-react/etc/platform-editors-blocknote-react.api.md M xwiki-platform-core/xwiki-platform-node/src/main/node/editors/blocknote-react/src/__tests__/BlockNote.spec.tsx M xwiki-platform-core/xwiki-platform-node/src/main/node/editors/blocknote-react/src/components/BlockNoteViewWrapper.tsx M xwiki-platform-core/xwiki-platform-node/src/main/node/editors/blocknote-react/src/langs/translation-en.json M xwiki-platform-core/xwiki-platform-yjs/xwiki-platform-yjs-websocket/pom.xml A xwiki-platform-core/xwiki-platform-yjs/xwiki-platform-yjs-websocket/src/main/java/org/xwiki/yjs/websocket/internal/AbstractRoom.java A xwiki-platform-core/xwiki-platform-yjs/xwiki-platform-yjs-websocket/src/main/java/org/xwiki/yjs/websocket/internal/Client.java A xwiki-platform-core/xwiki-platform-yjs/xwiki-platform-yjs-websocket/src/main/java/org/xwiki/yjs/websocket/internal/DefaultPingPongManager.java A xwiki-platform-core/xwiki-platform-yjs/xwiki-platform-yjs-websocket/src/main/java/org/xwiki/yjs/websocket/internal/DefaultRoom.java A xwiki-platform-core/xwiki-platform-yjs/xwiki-platform-yjs-websocket/src/main/java/org/xwiki/yjs/websocket/internal/DefaultRoomManager.java A xwiki-platform-core/xwiki-platform-yjs/xwiki-platform-yjs-websocket/src/main/java/org/xwiki/yjs/websocket/internal/DefaultYjsEndpointConfiguration.java A xwiki-platform-core/xwiki-platform-yjs/xwiki-platform-yjs-websocket/src/main/java/org/xwiki/yjs/websocket/internal/Message.java A xwiki-platform-core/xwiki-platform-yjs/xwiki-platform-yjs-websocket/src/main/java/org/xwiki/yjs/websocket/internal/MessageType.java A xwiki-platform-core/xwiki-platform-yjs/xwiki-platform-yjs-websocket/src/main/java/org/xwiki/yjs/websocket/internal/PingPongManager.java M xwiki-platform-core/xwiki-platform-yjs/xwiki-platform-yjs-websocket/src/main/java/org/xwiki/yjs/websocket/internal/Room.java A xwiki-platform-core/xwiki-platform-yjs/xwiki-platform-yjs-websocket/src/main/java/org/xwiki/yjs/websocket/internal/RoomManager.java A xwiki-platform-core/xwiki-platform-yjs/xwiki-platform-yjs-websocket/src/main/java/org/xwiki/yjs/websocket/internal/WebSocketClient.java A xwiki-platform-core/xwiki-platform-yjs/xwiki-platform-yjs-websocket/src/main/java/org/xwiki/yjs/websocket/internal/YjsEndpoint.java A xwiki-platform-core/xwiki-platform-yjs/xwiki-platform-yjs-websocket/src/main/java/org/xwiki/yjs/websocket/internal/YjsEndpointConfiguration.java R xwiki-platform-core/xwiki-platform-yjs/xwiki-platform-yjs-websocket/src/main/java/org/xwiki/yjs/websocket/internal/YjsRealtimeEndpoint.java A xwiki-platform-core/xwiki-platform-yjs/xwiki-platform-yjs-websocket/src/main/java/org/xwiki/yjs/websocket/internal/event/RoomMessageEvent.java A xwiki-platform-core/xwiki-platform-yjs/xwiki-platform-yjs-websocket/src/main/java/org/xwiki/yjs/websocket/internal/event/RoomMessageListener.java M xwiki-platform-core/xwiki-platform-yjs/xwiki-platform-yjs-websocket/src/main/resources/META-INF/components.txt A xwiki-platform-core/xwiki-platform-yjs/xwiki-platform-yjs-websocket/src/test/java/org/xwiki/yjs/websocket/internal/DefaultPingPongManagerTest.java A xwiki-platform-core/xwiki-platform-yjs/xwiki-platform-yjs-websocket/src/test/java/org/xwiki/yjs/websocket/internal/DefaultRoomManagerTest.java R xwiki-platform-core/xwiki-platform-yjs/xwiki-platform-yjs-websocket/src/test/java/org/xwiki/yjs/websocket/internal/RoomTest.java A xwiki-platform-core/xwiki-platform-yjs/xwiki-platform-yjs-websocket/src/test/java/org/xwiki/yjs/websocket/internal/YjsEndpointTest.java R xwiki-platform-core/xwiki-platform-yjs/xwiki-platform-yjs-websocket/src/test/java/org/xwiki/yjs/websocket/internal/YjsRealtimeEndpointTest.java Log Message: ----------- XWIKI-24158: Enable realtime editing for BlockNote editor * Refactor Yjs WebSocket code to: ** use ping-pong messages to keep the connection alive ** add synchronization for multi-threading ** use the partial binary message handler with a limit on the message size ** record all the sync update Yjs messages to be able to replay them when sync is requested by a client ** implement the Yjs initial sync protocol (sync step1 and sync step2 messages) ** use events to synchronize the Yjs rooms and their state (e.g. connected clients, recorded updates etc.) on other cluster nodes ** record the user associated with a connected Yjs client in order to be able to compute the effective author for a collaboration session (on save) ** add configuration options ** add unit tests * Refactor @xwiki/platform-collaboration-api ** provide an AbstractCollaborationManager to reduce code duplication between implementations (e.g. XWiki/Yjs and Cristal/Hocuspocus) ** update blocknote-headless and blocknote-react to use the refactored collaboration API * Move @cristal/cristal-collaboration-xwiki to @xwiki/platform-collaboration-xwiki and update to use the new collaboration API ** Wait for the initial Yjs Doc sync before allowing the user to make any changes * Update BlockNote integration code to use the collaboration API ** Add configuration for the collaboration WebSocket URL ** Add integration test for realtime editing To unsubscribe from these emails, change your notification settings at https://github.com/xwiki/xwiki-platform/settings/notifications