Changes Report
Typed custom event properties
![]()
Stream events support custom parameters since the new store implementation, but it was only strings. The old "parameter" related APIs have been renamed to "custom" APIs to support any Object as value. The standard store implementation natively support String, all Numbers, Boolean, Date, byte[] and any Iterable or array of the other types (anything else is converted to String). See Event Stream Module for more details about stream events.
Attachments backlinks indexation
![]()
An indexation of the attachments is now done on the wikis. This means that if PageA includes an attachment (or an image) from PageB, PageA will be listed in the backlinks of PageB.
Detect Page Ready
![]()
It's now possible to detect and execute JavaScript code after the page is fully ready, i.e. after all resources have been loaded and there are no pending HTTP requests or promises:
require(['xwiki-page-ready'], function(pageReady) {
pageReady.afterPageReady(() => {
console.log('Page is ready!');
});
});This is currently used by the client-side PDF export to know when the page is ready for print and by the automated functional tests to know when to start interacting with the page (simulating user actions). See the Page Ready module documentation for more information.
Temporary Attachments
![]()
Starting with this release the files uploaded through the WYSIWYG editor (e.g. when inserting an image or when dropping a file on the editing area) are not saved right away as page attachments. Instead, they become temporary attachments that are saved (linked to the edited page) only when the content of the WYSIWYG editor is saved by the user. This means for instance that when creating a new page, uploading a file doesn't create the page anymore. The user needs to click on the Save button to create the page. Of course, the Cancel button is now behaving as expected: any file uploaded since the last save is discarded along with all the unsaved content changes.
The RSA Crypto script service issues SHA256 certificates by default
![]()
The RSA Crypto script service (accessible from services.crypto.rsa) now issues certificates signed with SHA256+RSA instead of SHA1+RSA. See XWIKI-19676 to learn more.
CKeditor Image Gallery Picker

The new Attachment Gallery Picker Macro is integrated in the new CKEditor Image Dialog. That way, images can be searched by keyword and can be previewed before selection.
Ability to redirect deleted page link to a new page

When deleting a page, users can now select, using a page picker, a new target to be used for updating links that where pointing to the deleted page.
To fix eventual broken external links (e.g. bookmarks, links from emails), they can also create an automatic redirect from the old location to the new target.
In addition, to support restoring a deleted page with an automatic redirect created (i.e. a page with the same name, but with a XWiki.RedirectClass added), a Replace action was added for the deleted pages. See Index Application Documentation.
New CKEditor Image Dialog Improvements
![]()



The new CKEditor Image Dialog comes with two new tabs to select images. Users can now use the id of an icon, or use external URLs.
In addition, the image dimensions are now locked by default, and the ratio between the width and height of an images is preserved when one of them is changed.
New tags right check strategy configuration
![]()
It is now possible to configure the algorithm used when checking view rights on tags (returned by the Tags API) by editing xwiki.properties.
#-# [Since 14.4.8, 14.10.4, 15.0RC1]
#-# Configure the tag selection algorithm to use.
#-# The default algorithm is "exhaustive", which check all elements (documents and tags) for view right before returning
#-# them. This exhaustive check can lead to tag clouds and tag lists being slow to compute on instances with very large
#-# amounts of tags or tagged documents (more than 5000 of elements).
#-# Note that it is advised to keep using the default implementation as much as possible, and to switch to the "unsafe"
#-# option only when all performance improvements options have been exhausted
#-# (see https://www.xwiki.org/xwiki/bin/view/Documentation/AdminGuide/Performances/)
#-# The "unsafe" algorithm does not perform any right checks. It is approximately 10 times faster than "exhaustive"
#-# but does not provide any guarantee that the current user won't be able to view a tag he/she is not allowed to.
#-# Therefore, we cannot recommend to use it unless tags performance is critical AND tags and document references are
#-# not considered as critical information.
# tag.rightCheckStrategy.hint=exhaustive
# tag.rightCheckStrategy.hint=unsafeNew CKEditor Image Dialog Improvements
![]()



The new CKEditor Image Dialog comes with two new tabs to select images. Users can now use the id of an icon, or use external URLs.
In addition, the image dimensions are now locked by default, and the ratio between the width and height of an images is preserved when one of them is changed.
Ability to redirect deleted page link to a new page



When deleting a page, users can now select, using a page picker, a new target to be used for updating links that where pointing to the deleted page.
To fix eventual broken external links (e.g. bookmarks, links from emails), they can also create an automatic redirect from the old location to the new target.
In addition, to support restoring a deleted page with a redirect created (i.e. a page with the same name, but with a XWiki.RedirectClass added), a Replace action was added for the deleted pages. See Index Application Documentation.
New Options for Allowed HTML Elements and Attributes
![]()
New options for HTML cleaning were added that allow precise control which attributes and elements are allowed in XWiki syntax but also in the HTML macro in restricted contexts. The default settings should be fine but in case you notice any breakage due to attributes no longer working or want to restrict certain features like inline-styling, consult the documentation on these options. Do not hesitate to contact us on the forum or the chat in case you notice unexpected breakages or other issues with this change.
Ckeditor Macro Dialog filters by categories

The CKEditor Macros dialog now allows to filter by several categories. In addition, all the listed macros are now displaying their categories.
In addition, macros with an hidden category are not displayed to users who have Display hidden pages set to False in their preferences. Hidden macros categories are Deprecated and Internal by default, and can be configured by Admins since 14.8+.
Java macros can have several categories
![]()
The java macros can have several categories. The deprecated setDefaultCategory is replaced by setDefaultCategories. For instance:
/**
* Create and initialize the descriptor of the macro.
*/
public ExampleMacro()
{
super("Example", DESCRIPTION, ExampleMacroParameters.class);
setDefaultCategories(java.util.Collections.singleton("Tutorial"));
}Wiki macros can have several categories

The wiki macros can have several categories. The deprecated Default category is replaced by Default categories.
Add pagination for Attachments

The attachments tab is now displayed using a Livetable, with only 5 rows displayed at a time to avoid a crowded section. This way, on pages with multiple attached files users can use the navigation and filtering options to search for specific attachments.
Force client-side PDF generation
![]()
The PDF Export application has a new global setting to control whether the PDF is generated server-side (e.g. using a headless Chrome web browser running inside a Docker container) or client-side, using the user's web browser:
# [Since 14.6RC1]
# Whether the PDF export should be performed server-side, e.g. using a headless Chrome web browser running inside a
# Docker container, or client-side, using the user's web browser instead; defaults to server-side PDF generation
export.pdf.serverSide=trueNote that client-side generation has the downside that different users may get a different PDF result for the same wiki page (same content).
Moved the old event store to legacy
![]()
The old events store is still bundled with XWiki for now. However, it has now been moved to legacy in order to make sure it is not actively used in the product, to discourage others from directly using it (by mistake) and as a first step before actually stopping to bundle it.
Cancel PDF Export
You can now cancel a running multi-page PDF export job, either because you triggered it by mistake (for a large subtree of pages) or because it takes too long, or any other reason. See the PDF Export Application documentation for more information.
Escaping of XWiki macro syntax in XML
![]()
The character { is now escaped in org.xwiki.xml.XMLUtils#escapeElementText and Document#display APIs.