Changes Report

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

Active Installs 2

New anonymous information is now sent by Active Installs (number of pages and number of users in both the main wiki and the subwikis).

Temporary Resource Script Service

A new script service is available to check if a temporary resource exists and to get its URL:

{{velocity}}
#set ($tempResourceReference = ...)
#if ($services.resource.temporary.exists($tempResourceReference))
  [[Download>>path:$services.resource.temporary.getURL($tempResourceReference)]]
#end
{{/velocity}}

Global Job Runner JavaScript Module

The xwiki-job-runner JavaScript module has been published in the global RequireJS configuration which means it can now be used directly without specifying its path:

require(['xwiki-job-runner'], function(JobRunner) {
  ...
}

See the Job Module documentation for more information.

Figure Type Identification

A data-xwiki-rendering-figure-type property is added to the rendered figures macro. Its value is table if the figure contains a single table, and figure otherwise.

Macro Categories listed in the available macros page

The list of all the categories of the macros are now listed in the available macros page.

Provide a way to list the categories of a macro

The MacroCategoryManager from Rendering Macro Transformation provides a getMacroCategories operation that takes a MacroId object and return the set of categories of the macro. The default implementation takes into account the macro categories overriding that can be done in xwiki.properties.

Script service to access the macro categories

Calling $services.rendering.getMacroCategories($macroId) returns a Set of the categories of the macro. See XWiki Platform - Rendering - XWiki-specific Implementation.

New HTML Sanitizer

A new HTML Sanitizer component has been added that allows checking if a certain HTML element, attribute and attribute value are considered safe according to the current configuration. This can be used when validating user input. The sanitizer also supports SVG and MathML with the features available when they are embedded in HTML documents.

Improved Less SSX Caching

When writing a SSX using LESS, the SSX request parameters are now taken into account for caching the results of the LESS compilation output.

Improved Macro picker for "not installed" macros

The WYSIWYG editor allows selecting not yet installed macros in the macros picker, but it was missing some usability information. You now see which recommended extensions a macro belong to, and you get a more explicit warning about what will happen when you select such macros.

Notification handling memory improvement

The dispatching of notifications to the user has been rewritten to reduce a lot the memory required for it and improve reliability.

PDF Export Application Improvements

The PDF Export Application (which is still experimental and not bundled in XWiki Standard) has a couple of improvements:

  • The user's own web browser is now used by default to generate the PDF, but the application can still be configured to use a remote Chrome instance or one that runs inside a Docker container. Check out the migration section below for more information.
  • When a remote (or Docker based) Chrome instance is used for PDF printing the application now checks if connection is working before showing the PDF export options. An error message is shown in case the Chrome browser can't be accessed.
  • In case of PDF export failure, the last error message from the PDF export job log is now displayed.
  • The underlying JavaScript library used for paginating the content before printing to PDF (PagedJS) has been upgraded to its latest version.

Replace the Livetable from the attachments tab with a LiveData

The attachments Livetable was updated to use the new LiveData.

New event when livedata entries are displayed

A new javascript event xwiki:livedata:entriesUpdated is now triggered for LiveData when the entries are displayed: this event can be listened to when an extension need to augment the data.

DocumentVersionReference is part of the model API

The DocumentVersionReference is now part of the model API: this reference API allows to manipulate a DocumentReference with a specific version attribute, allowing to specifically target a version of the document.

Provide Raw content filtering mechanism for macros

A new rendering transformation component is now provided for macros to allow perform filtering of RawBlocks. A new API is provided, RawBlockFilter, with a first implementation for HTML raw blocks, used in html macro.

Indexing User

A new section to define a dedicated indexing user has been added in the "Search" category in the wiki administration.

The search index usually runs without a dedicated user. In some cases this creates minor issues when indexing the title of pages, e.g. in case of a closed wiki, where one cannot access as guest user the sheet that computes the user profile pages title as "Profile of «firstname» «lastname»". This is not possible unless the indexer is associated with a user that has access to the corresponding sheet. A new section in the "Search"  category of the wiki administration allows to set an "indexing user", which is used to access the sheets which might be used to compute page titles.

If this setting is left empty, the stored plain title of the page name is shown as title of the search result for affected pages.

Please read the description and especially about the security implications before setting an indexing user.

Configurable hidden macros categories

The list of categories hidden by default, previously hard-coded to Internal and Deprecated, can now be configured using the rendering.transformation.macro.hiddenCategories property in xwiki.properties.

#-# [Since 14.8RC1]
#-# Override the default hidden macro categories.
#-# Note: the categories are case sensitive.
#-#
#-# The default value is:
# rendering.transformation.macro.hiddenCategories = Internal,Deprecated
#-#
#-# For instance, to make the "Development" category hidden by default, in addition to the "Internal" and
#-# "Deprecated" categories, you'd use:
# rendering.transformation.macro.hiddenCategories = Development,Internal,Deprecated

Hidden macro categories API

The MacroCategoryManager role gives access to the list of hidden macro categories.

@Role
public interface MacroCategoryManager
{
    // [...]

    /**
     * @return the set of hidden categories (e.g., "Deprecated, Internal")
     * @since 14.8RC1
     */
    @Unstable
    default Set<String> getHiddenCategories()
    {
        return Set.of();
    }
}

PDF File Name

The file name suggested by the web browser when downloading a PDF generated by the PDF Export Application is now, by default, the title of the wiki page from where the export was triggered (instead of the Java UUID used for the temporary resource name). Checkout the documentation for more information.

Get Connected