Branch: refs/heads/master Home: https://github.com/xwiki/xwiki-platform Commit: 9c9d9703eed49cad7ad44782ad09a677ce0c7fbc https://github.com/xwiki/xwiki-platform/commit/9c9d9703eed49cad7ad44782ad09a... Author: Marius Dumitru Florea <[email protected]> Date: 2026-09-04 (Fri, 04 Sep 2026) Changed paths: M xwiki-platform-core/xwiki-platform-realtime/xwiki-platform-realtime-ui/src/main/resources/XWiki/Realtime/Configuration.xml M xwiki-platform-core/xwiki-platform-realtime/xwiki-platform-realtime-webjar/src/main/webjar/document.js M xwiki-platform-core/xwiki-platform-realtime/xwiki-platform-realtime-webjar/src/main/webjar/loader.js M xwiki-platform-core/xwiki-platform-realtime/xwiki-platform-realtime-webjar/src/main/webjar/toolbar.js M xwiki-platform-core/xwiki-platform-realtime/xwiki-platform-realtime-wysiwyg/xwiki-platform-realtime-wysiwyg-webjar/src/main/webjar/wysiwygEditor.js Log Message: ----------- XWIKI-24372: Implement auto-save for BlockNote realtime collaboration sessions * Separate the generic XWiki document API from the real-time specific one, by splitting the XWikiDocument class in two: XWikiDocument, which holds the generic API, and RealtimeXWikiDocument, which adds the Netflux channels API on top of it. Both stay in the same module for now. * Decouple XWikiDocument from the current document, so that it can target any document: the constructor became a copy constructor, update() merges only the data it is given, and the current document is now obtained through the static currentDocument() factory. The page state side effect (the meta version and the hidden fields of the edit form) moved to syncCurrentDocumentState(). * Limit the jQuery usage to event handling, which is the only place where it is required, since XWiki triggers its events with jQuery: $.extend became Object.assign, $.param became URLSearchParams, $.getJSON and $.post became fetch, and $('#id').val() became plain DOM access. Note that fetch keeps the form token and the custom XWiki response headers working because xwiki.js wraps it for that purpose. * Remove XWikiDocument#save(), which never had a caller since it was introduced. * Request the REST API of the edited document translation rather than the one of the original translation, which is exposed through a different URL. The Netflux channels are still requested from the page, because they are not exposed per translation: the translations are separated by the channel path instead. * Stop overwriting the language field received from the REST API. The raw locale is kept in 'language' while the real locale is exposed by the new realLocale accessor, computed from the raw locale and the default locale. * Align the XWikiDocument implementation with the one from XWiki.InplaceEditing, in order to ease a future de-duplication: reuse its getOldAPI() and removeNullProperties() helpers, its real locale computation and its translation aware REST URL. The fallback on document.documentElement.lang is deliberately left out, because two users having different UI locales would then compute different real locales for a technical document (the one having the root locale as default locale), and thus end up using different Netflux channels. Verified with RealtimeWYSIWYGEditorIT (28 tests) after each step. Two cases are not covered by the automated tests and were checked by reading the code only: * a technical document, having the root locale as default locale, edited by two users having different UI locales; * the toolbar version entries, whose author and date come from the document translation history. Both deserve a follow-up, together with these two findings: * Saver#_notifyInitialVersion() swallows every error with a console.debug(), which is why the REST URL targeting the wrong document translation produced no signal at all. * The in-place editor and lock.js compute the real locale of a technical document from the UI locale, so two users having different UI locales use different lock keys for the same document translation. Co-Authored-By: Claude Opus 5 <[email protected]> Commit: aca42c593d0f35d24f99a74b43385278b343b067 https://github.com/xwiki/xwiki-platform/commit/aca42c593d0f35d24f99a74b43385... Author: Marius Dumitru Florea <[email protected]> Date: 2026-09-04 (Fri, 04 Sep 2026) Changed paths: M xwiki-platform-distribution/xwiki-platform-distribution-flavor/xwiki-platform-distribution-flavor-common/pom.xml M xwiki-platform-distribution/xwiki-platform-distribution-flavor/xwiki-platform-distribution-flavor-test/xwiki-platform-distribution-flavor-test-docker/src/test/it/org/xwiki/test/ui/docker/AllIT.java A xwiki-platform-distribution/xwiki-platform-distribution-flavor/xwiki-platform-distribution-flavor-test/xwiki-platform-distribution-flavor-test-docker/src/test/it/org/xwiki/test/ui/docker/SyntaxHighlightingIT.java Log Message: ----------- XWIKI-24803: Upgrade to Syntax highlighting 4.11.2 XWIKI-24802: Syntax highlighting doesn't work anymore * Upgrade to Syntax Highlighting 4.11.2, which depends on the repackaged CodeMirror WebJar (org.webjars.npm:codemirror:5.65.21-xwiki-2) * Add a functional test checking that the wiki editor content is highlighted, that the highlighted editor is editable and that its content is saved back Co-Authored-By: Claude Opus 5 (1M context) <[email protected]> Compare: https://github.com/xwiki/xwiki-platform/compare/879250a6ff53...aca42c593d0f To unsubscribe from these emails, change your notification settings at https://github.com/xwiki/xwiki-platform/settings/notifications