Changes Report

Last modified by Vincent Massol on 2026/09/10 13:54

Notification Messages HTML support

The notifications now only support HTML in their text message when it is explicitly allowed. To do so, an optional textHtml boolean parameters (default value: false) is available.

Example:

new XWiki.widgets.Notification('This is <strong>bold</strong>','done', { textHtml: true});
Warning

When enabling HTML, there is a risk on introducing XSS, use at your own risk.

Change to ModelReferenceHandler's API

Two new methods have been added to ModelReferenceHandler's API: getParentDocumentReference and getParentSpaceReference. These provide backend-specific utilities to obtain parent references from an existing Cristal reference.

start_xwiki.bat refresh

The Windows version of the start scripts used in the XWiki Jetty package have been updated to benefit from the same features as the .sh ones, including ##-h## which give the new documentation.

Docker External Solr

The XWiki docker images now support correctly setting up an external Solr instance.

Repository improvements

  • the concept of project was added to the Repository application, see Repository Application for more details
  • the update of extension with a lot of versions is now much faster (only missing version are added, it assumes existing one are correct)

Macros can be inserted/edited through the formatting toolbar

When selecting a range of text in the BlockNote editor, the formatting toolbar will now show a macro icon which opens the macro editor.

When selecting an existing macro block, the formatting toolbar will now show an edition icon. Clicking on it will open the macro editor.

UI elements for editors can be disabled based on the document's syntax

Features can now be enabled/disabled automatically based on the syntax: When editing a document within the BlockNote editor (or any future editor), all unsupported syntax elements will be automatically disabled in the UI.

Relevant types are defined in the @xwiki/platform-syntaxes-config package.

UI improvements of the attachment uploader

Updated the design of the attachment uploader to fit better in today's XS interface. The new UI looks simpler for regular users, while keeping all the info of the former one for advanced users. Learn more about the attachment feature.

BlockNote Syntax

A new JSON-based rendering syntax, called BlockNote, is available. It provides both a parser and a renderer, and it is currently used only by the BlockNote WYSIWYG editor.

New link insertion/edition UI for BlockNote

In BlockNote, links insertion and edition now use the new UI, which adapts automatically to the design system. This new UI also exposes new options, such as creating links to email addresses.

Reproducible builds

XWiki's Maven build is now configured to produce reproducible artifacts by setting project.build.outputTimestamp to the time of the release. This means that for most release artifacts, it should be possible now to obtain byte-identical versions by rebuilding the sources. This also affects all extensions with a parent version of at least 18.7.0. Extensions can explicitly set their own timestamp to override the fixed timestamp of the parent when desired, or set it to a value like "X" to explicitly disable reproducible builds if it should cause any issues. We have also fixed several modules that were not reproducible before. We're aware that some class files in many legacy modules (those are included in the released WAR) still contain absolute paths of the build environment, and the WAR, XIP and Debian packaging as well as the pre-installed demo distribution are also not reproducible for additional reasons. You can track XWIKI-24698 for the progress towards a fully reproducible build.

LiveTable New Row Naming Strategy

When creating a new row for a Live Data using a livetable source, the XWiki instance needs to create a new document. Naming this new document automatically requires a naming strategy, which can be customized by implementing a new LiveTableNewRowNamingStrategy.

Design System CSS Variables

The Flamingo Design System now declares the CSS variables of the Abstract Design System, deriving them from the style variables of the skin. Code styled with them follows the Color Theme, and stays portable to the other implementations of the Design System.

Improvements to panel titles and navigation items

News styles for panel titles

Panel titles now have a more compact view by default

Navigation items ease of access

Pages featured in the navigation panel now span 100% of the width of the panel. This should make easier to navigate to pages with short names using the navigation panel

BlockNote realtime sessions save automatically

Content edited with the BlockNote editor in a realtime collaboration session is now saved automatically, about once a minute while there are unsaved changes. This closes the "there is no auto-save" limitation announced when BlockNote realtime collaboration was introduced.

Only one of the collaborators' browsers performs each save, so the session adds a single version per save instead of one version per participant. That version records the summary "Auto-saved during real-time collaboration", the same summary a CKEditor realtime session uses. Saving by hand keeps working and takes precedence over the automatic save.

The save status ("Unsaved", "Saving", "Saved") that the realtime toolbar displays is not shown in the BlockNote action bar yet, so there is currently no on-screen indication of when the automatic save happens. We plan to add it in the next version.

CSRF tokens shared by all cluster nodes

The CSRF token of a user is now derived from the authentication validation key instead of being kept in memory: it survives a restart, and all the nodes of a cluster accept the same token as long as they share the same xwiki.authentication.validationKey (see Clustering). Tokens now rotate every 24 hours by default (a token stays valid 24 to 48 hours), which can be changed with the new csrf.tokenLifetime property of xwiki.properties.

Pickers for one or more locations

The new spacePicker Velocity macro displays a suggest input to pick one or more locations as you type. The new compactLocationPicker Velocity macro adds a button next to it, which opens a page tree in a drop down to browse for the locations as an alternative. A wiki macro parameter of type java.util.List<org.xwiki.model.reference.SpaceReference> is now edited with the compact location picker. Learn how to use them.

Following a link to an export, such as a bookmarked /bin/export/ URL, now opens the "Confirm the Export" page instead of exporting right away. The page lists the requested export parameters, and a click on "Export" resubmits the export: see Confirm an Export Started From a Link. Exports started from the Export modal are not affected, and a script exports directly by sending the export URL as a POST request.

Export format handlers

An extension can now add an export format to the export action, or replace a native one, by providing an org.xwiki.export.ExportFormatHandler component whose hint is the value of the format request parameter: see Export Format Handler API. 

Live Data UX improvements

Edit mode is now turned on and off with an "Edit mode" button, showing a pencil icon next to the Live Data menu (instead of the previous checkbox inside that menu). The button stays pressed while edit mode is on.

Any Live Data can also be maximized from its menu, to cover the whole window and focus on its entries. "Minimize" in the same menu, or the "Escape" key, brings it back to its normal state.

Get Connected