Changes Report
Integration tests use SILO instead of MinIO
![]()
Browser-based integration tests support using S3 as blob store to ensure compatibility with it. Until now, we were using MinIO as S3-compatible object storage implementation in our test setup but as that open-source software has been archived and the Docker image was unpublished recently, we've switched to SILO, an actively maintained fork, instead. This shouldn't change anything unless you were passing explicit versions when running tests.
Insert links from the BlockNote slash menu

The BlockNote editor's slash menu now has a "Link" entry: type /link, select it, and the link modal opens so you can enter the display text and target of a new link without selecting text first. See Insert a Link with the BlockNote Editor.
Number fields reject invalid values before saving

A Number property is now edited with an HTML5 number input, so the browser rejects letters and, for the integer and long types, decimal values before the form is submitted. A value outside the integer range is refused the same way, and a value outside the long range is now reported with a readable message on save instead of a server error.
The "Size" property metadata no longer applies to a Number field: the attribute it used to set is ignored on a number input, so it is no longer emitted.
Hashed superadmin password
![]()
Enabling the superadmin rescue account no longer means leaving its password in clear text in xwiki.cfg: as described in Enable the Superadmin Account, the xwiki.superadminpassword property now also accepts a hashed value, written as {algorithm}hash with one of the algorithms supported by password properties. A plain text value keeps working, so existing configurations are unaffected.
Quick search icons follow the icon theme
![]()
The icons displayed next to each group of results in the quick search, and next to each source in the search suggest administration section, now use the icon theme of the wiki instead of the Silk images, so they match the other icons of the interface.
Search suggest sources whose icon is not an icon name prefixed with icon: keep displaying the image they point to.
Join a BlockNote realtime session without the lock confirmation
![]()
When a Page was already being edited with the BlockNote editor, the next user opening that Page for editing was asked to confirm that they want to take over the edit lock, even though both users were about to edit the Page together.
Now, as long as a BlockNote collaboration session is in progress on the Page, opening that Page with BlockNote joins the session directly, in both the in-place and the standalone edit modes, the same way realtime editing with CKEditor already did. The confirmation is still shown when there is no session to join, and when the Page is opened with another editor.
New extension point to skip the edit lock confirmation
![]()
An editor that supports realtime collaboration can waive the confirmation that XWiki asks for before taking over the edit lock of a Page, because the users are going to edit that Page together. Until now the only way to do this was to extend the documentLock edit confirmation checker and register the subclass under the same component hint, so only one extension at a time could waive the confirmation.
The decision is now taken by org.xwiki.doc.lock.UnlockRule components: each one is asked whether the lock can be taken over silently for the document and the edit mode described by the LockContext it receives, and the confirmation is skipped as soon as one of them accepts. XWiki provides two rules, one for the Netflux based realtime editing (wiki syntax and CKEditor) and one for BlockNote; the override that the realtime module used to register has been removed.
See Document Edit Lock Confirmation for the details. The new API belongs to xwiki-platform-oldcore and is unstable, so it may still change in a backward incompatible way.
Redesigned annotation bubble

The annotation bubble has a new layout: a smaller avatar, the author and the date on the same line, and an "x" button to close it.
Annotations stored as comments now show the same "Reply", "Share", "Edit" and "Delete" buttons as the Comments tab, plus a "View thread" button showing the number of replies when there are some. "Share" opens a dialog with the permalink of the annotation, and that dialog now has a button to copy the link to the clipboard. See the Annotation Application for how to view, edit and delete annotations.
Macro name shown when hovering a macro in the WYSIWYG editor

Hovering a macro in the WYSIWYG editor now displays the macro identifier next to its move handle. This makes nested macros, and macros without a visible output, easier to identify.
XWiki Syntax 1.0 Removed
![]()
The XWiki Syntax 1.0 is no longer bundled by default. Its configuration has been removed from xwiki.cfg.
Template Icons
![]()
When creating a new page, the Template Providers for specific applications can now add an icon and a description. We added new icons and descriptions for the Blog and Dashboard default templates.
Edit Section Styling Improvement

Improved the edit section styling to be in consistency with the Flamingo Skin style.
Ratings Stars Improvement

Improved the way ratings stars are displayed by removing the white background from picture.
Execute Macros in context of another page
The Context Macro now supports executing macros in the context of the referenced document by using the new transformationContext parameter.
For example the following content generates the screenshot:
{{context document="Sandbox.WebHome" transformationContext="document"}}
{{toc/}}
{{/context}}![]()
When importing an office document with embedded images, those images are now saved as attachments to the target wiki page. This used to be the default behavior until recent versions of LibreOffice / OpenOffice have started to embed the images in the generated HTML using the Data URI scheme, which ended up in the wiki syntax. We have now restored the initial behavior.
All Blog posts link

The Blog Category Panel now has an entry for All blog posts with a RSS feed for all.
User Profile Preference Hints

We have added documentation hints for User Profile Preferences so that it's more obvious to understand what each option means.
Filter Stream annotations
![]()
Thanks to Java 8 now supporting getting method parameter names through reflection, it's not required anymore to use @Name annotation in the definition of a filter. See Filter Module for more details.
It's also possible to override the name of the event (which is by default extracted from the method name) using the @Name annotation.
Filter manager make sure to calculate the event descriptor based on the top most overridden method (usually coming from an interface). Various things were not always properly inherited (like event name or reflection based parameters names).
![]()
It's now possible to customize a Maven repository in xwiki.properties with any Aether property. See XWiki Commons - Extension - Repository - Maven.
![]()
It's now possible to change the socket and connection timeouts of a XWiki Repository in xwiki.properties. See XWiki Commons - Extension - Repository - XWiki.