Changes Report

Last modified by Vincent Massol on 2026/09/02 19:04

Bypass log grabbing

It's now possible to force a log to end up in the main log even when during a job that is supposed to grab it.

Main wiki descriptor used in path based mode

The main wiki descriptor is now also used to find out the the protocol, the domain and the port to use when generating an URL in path based mode in a background thread (typically the mails).

Export Target XWiki Version

The Export administration section has a new option named "Target XWiki version" that is useful if you need to generate a XAR that is compatible with an older version of XWiki. For instance, if you need to import the generated XAR in an XWiki version older than 12.0 then you should set "Target XWiki version" to "Below 12.0".

Rendered Changes Using Image Data

A change in the source URL, or reference, of an image displayed on a wiki page, where the image itself is not modified, doesn't appear in the rendered diff anymore when comparing the revisions of that page.

Select the Wiki Home Page with the new Page Picker

The wiki descriptor administration section is now using the new page picker for the home page field.

Velocity Object Tool

Provides various methods to manipulate objects from Velocity. For example to check for null:

#set ($result = ...)
#if ($objecttool.isNull($result))
  ...
#else
  ...
#end

Mail Resender Scheduler Job

It's now possible to run a Scheduler Job to resend automatically emails that were prepared successfully but that were not sent (for example if the XWiki JVM crashed before they could be sent).

Forms styling handle HTML5 inputs

HTML5 inputs (color, date, datetime-local, email, number, search, tel and time) are now consistent with older input types (text and password) in the Flamingo Skin. They are all compatible with the Vertical Forms Guidelines.

Improved Jump to Page

The Jump to Page modal (Ctrl+G) has been updated to use the new page picker which fixes the keyboard navigation and improves the display of page suggestions (page title and location are now shown).

Synchronous mail resending

There's now an API to resend emails synchronously (we only had an asynchronous API before). This is useful when resending large amounts of emails which would require a lot of memory since all emails would be loaded from disk and put in the resending memory queue. 

Syntax Variants

A Rendering Syntax Type can now have "variants" which represent variations of the base syntax. For example markdown+github is the GitHub-Flavored Markdown Syntax, markdown+commonmark is the CommonMark Markdown Syntax, etc. It used to be a best practice to use the + character to separate variants. It's now official and part of the API with some constructors and getters. For example:

SyntaxType syntaxType = new SyntaxType("id", Arrays.asList("variant1", "variant2"), "name");
assertThat(syntaxType.getVariants(), contains("variant1", "variant2"));

Notifications Redesign

The start of a Notifications re-architecture has been started in order to improve performances. The current implementation is computing changes for a given user on the fly, when asked. This has the advantage of being very light to save new events but the computation is cost when displaying notifications (even though there's a cache). It doesn't scale well when there are a lot of events and users. Thus we've started a redesign where we compute and store the notifications for each user, when a new event is triggered.

To enable the new feature, edit your xwiki.properties file and set the notifications.eventPreFilteringEnabled property to true.

This feature is currently EXPERIMENTAL and should not be tried in production.

#-# [Since 12.1] [Experimental]
#-# Enabling this option will make user notifications be filtered and stored when the event is generated
#-# instead of filtered each time they are displayed.
#-#
#-# The default is :
# notifications.eventPreFilteringEnabled = false

More consistent menu icons

Updated class and object edit menu icons to make them more consistent with other places like the document tree viewer. The missing Annotations menu icon was also added.

SuperAdmin sees hidden pages

The Super Admin user now sees hidden pages.

Remove User's default_language xproperty

Remove the default_language xproperty that could be set in XWikiUsers xobjects since it was not working (since a very long time ago, possibly 1.1M3) and it was not a very useful and used xproperty.

Allow to inject Javascript/CSS in Notification displayers

It is now possible to use the Skin Extension Plugin in the custom Notification displayers: this might allow to use custom javascript for the notifications.

Allow to unregister components in Extension Mojo

If you use some XWiki Maven Build Tools such as the Extension Plugin or the Packager Plugin, we introduced a new parameter disabledComponents in those mojos to allow to unregister some components during their execution.

A typical usage of such parameter can be to prevent the execution of a MandatoryDocumentInitializer, for example:

<configuration>
  <disabledComponents>
    <disabledComponent>
      <type>com.xpn.xwiki.doc.MandatoryDocumentInitializer</type>
      <role>XWiki.XWikiServerXwiki</role>
    </disabledComponent>
  </disabledComponents>
</configuration>

Solr multi-core

It's now possible to "reserve" a dedicated Solr core for the specific storage needs of an extension. See Solr Search Application for more details.

SuperAdmin and Guest configuration

The configuration properties for the Guest and SuperaAdmin virtual users can now be overridden. This is achieved by modifying the xwiki.properties file.

For example:

user.preferences.superadmin.editor = Wysiwyg
user.preferences.guest.editor = Text
user.preferences.guest.displayHiddenDocuments = 1

On MySQL, the character set utf8mb4 is now set on the main database for new instances installed via our debian packages.

Get Connected