Changes Report
New BlockNote WYSIWYG editor


A new experimental BlockNote based editor has been introduced. You can try it by installing the BlockNote Integration (Experimental) extension, which will add two new editors (if you are "Advanced" in your user profile preferences).
Container script service
![]()
The new container script service, introduced in 17.0.0, was actually not registered so it could not actually be used from scripts. This is now fixed (also in 17.4.5) and it's recommended to use it instead of the deprecated, javax oriented, $request, $response and $sesison bindings.
Solr search index improvements
![]()
Various improvements have been added to the Solr search index core:
- the id field value for DOCUMENT moved from <document reference>_<real locale> to <document reference>_<locale> (meaning that it always ends with "_" for the default version of the document)
- a new docid field, containing the long value which can also be found in XWikiDocument#getId() has been added to the index, it's also been used to greatly speed up the synchronization check between the database and the Solr index (usually executed at startup)
- the fullname field is now set for all entities, not just DOCUMENT
- a dynamic *_string_lowercase and a corresponding copy field have been added to automatically provide a lower case version of all exact string properties, generally used for object and class properties (those ending with _string)
For once, you won't need to reset your index to apply all that because the search index now also have some migration capabilities. In practice, it means that the new fields will automatically be added (even in the case of a standalone Solr setup) and the documents are automatically re-indexed in the background, without emptying the index first so it should be mostly transparent for users.
Search Exclusions

The Search Application has a new configuration option that allows wiki administrators to specify a list of wiki pages that should be excluded from the search. When a nested page is selected, all its child pages and their descendants are excluded as well. This configuration option is currently taken into account only by the Solr Search Application, which provides a query filter that can be added to Solr search queries. This filter is added by default to the Solr queries executed by the main search page and the search suggest.
List of supported extensions in Repository Application

Extension support plans now show the list of supported extensions in the extension repository application.
Revamping of document tree macro configuration




The document tree macro configuration UI have been revamped introducing group of parameters displayed in tabs to simplify finding the various options.
Unsaved Changes Kept in Session Storage
If you have unsaved changes, e.g. because autosave hasn't been triggered yet, and you leave the realtime collaboration, e.g. by navigating to a different web page or by closing the browser tab, then the editor will keep those changes in the browser's session storage, to be restored when you get back. Given that the page you were editing can be further modified by other users, the editor will try to integrate your unsaved changes next time you edit again, using a 3-way merge, but this can fail due to conflicts, in which case your unsaved changes will be lost. You can rely on this feature to restore unsaved changes in case you leave editing by mistake, but in general it's best to use the Done button to leave the collaboration. See the Realtime WYSIWYG Editor documentation for more information.
Remote Observation Admin

It's now possible to access various information about the cluster in the dedicated administration page.
Remote channels and members
![]()
New public APIs (both Java and script) have been introduced to manipulate remote observation (clustering) channels and members. Each channel also exposes a leader among the active members. See Observation Module Remote for more details.
Extension version page in Repository Application


In the Repository Application, the metadata of each version of an extension is now stored in its own page. This also led to display the versions and their release notes in the main page as a filtering/sortable livedata.
Upgrade to Font Awesome 7.0.1

The base icons used in XWiki Standard have been upgraded from version 4.7.0 to 7.0.1. This comes with an update in visual style in almost all icons used throughout the interface. Macros that used these icons are updated as well.
Support for Properties from Other Classes in Live Data

In Live Data it is now possible to display properties from other classes. This allows more advanced use cases where data from different objects on the same page shall be displayed. Further, this allows displaying a property from an XObject without filtering out pages without that object. For example, it is now possible to display all pages and their tags without filtering out pages without tags.
Image insertion popover override
![]()
The default image insertion UI from BlockNote editor can now be overridden by providing a new overrides.imageEdition parameter to blocknote-headless. For more infos see the complete props API
Removed flashing sync messages
![]()
The flashing “syncing changes” message doesn't appear any more when starting to edit a page with the new (experimental) BlockNote WYSIWYG editor. It will only appear if the synchronization is taking too long.
Javascript Importmap declaration
![]()
Developers of JavaScript applications relying on JavaScript modules can now easily declare importmap entries by adding a new xwiki.extension.javascript.modules.importmap property in the pom.
NPM packages are now published during the release
![]()
All the JavaScript packages required to build Blocknote are now bundled in XWiki and published on https://www.npmjs.com/ for each release of XWiki Standard.
You can find them under the @xwiki npm group with the @xwiki/platform-* package names.
Changes to abstract design system API
![]()
The abstract design system API has been slightly altered:
- The components XNavigationTree and XNavigationTreeSelect have been deprecated and removed,
- The XTree component now supports generic props, and can define two new methods (lazyLoadChildren and nodeClickAction) to become an alternative to the removed components.
Shared eslint configuration
![]()
A shared eslint configuration is now available, allowing for a consistent linting for all npm packages across xwiki-platform and contrib projects.
Page REST endpoint supports checking user rights
![]()
A new checkRight query parameter has been added to the REST API endpoint for pages. When fetching a page through the REST API, you can now check if you also have other rights on it, e.g., comment and edit by appending the checkRight=comment&checkRight=edit query string parameter.
Kebab-case Page Naming

The "Preformatted Name Strategy" has been renamed to "Kebab-case Name Strategy" since it's easier to understand what it's about.
Several new optional features have been added:
- Convert letters to lowercase
- Allow dots when used between digits (to represent versions or numbers)
- Remove configured forbidden words (e.g. stop words)