Changes Report
Object editor does not save automatically on object creation/deletion anymore
![]()
The behaviour of the Object editor changed to be more consistent: the changes performed like object addition or deletion are now only saved when clicking on the save button.
Note that for developers we introduced new saving parameters to allow adding and deleting objects on a single save.
Default object sheet supports in-place editing
![]()
If you create a new application on top of XWiki following the manual FAQ tutorial you'll notice that starting with this version the application entries are editable in-place, from view mode. You can achieve the same thing for an existing application by copying and adjusting the code of the XWiki.ObjectSheet page over your existing sheet. Just make sure you update the name of the class used in the copied code.
Allow to define the pool size of a GroupedJob
![]()
It is now possible to configure the pool of threads to be used for grouped jobs. To provide that configuration you need to declare a new component that implements org.xwiki.job.GroupedJobInitializer and whose method getId matches the JobGroupPath of the GroupedJob. You will be able to define the size of the pool of threads to be used for those jobs and the default priority of the threads.
Note that the hierarchy of the JobGroupPath can be used to define the same configuration for a whole hierarchy of GroupedJobs.
New global configurations have been also added in xwiki.properties related to this feature:
#-# [Since 12.5RC1]
#-# The maximum number of entries to put in cache for the GroupedJobInitializer components.
#-# The default is 100.
# job.groupedJobInitializerCacheSize=100
#-# [Since 12.5RC1]
#-# The thread keep-alive time in milliseconds for the single job executor.
#-# This value defines how long a thread can be idle before being terminated by the executor.
#-# The default value is 60000 for 60 000ms.
# job.singleJobThreadKeepAliveTime=60000
#-# [Since 12.5RC1]
#-# The thread keep-alive time in milliseconds for the grouped job executors.
#-# This value defines how long a thread can be idle before being terminated by an executor.
#-# The default value is 60000 for 60 000ms.
# job.groupedJobThreadKeepAliveTime=60000Reliable page renames
![]()
A new low-level API have been introduced in the XWikiStoreInterface that allows performing an atomic rename of documents: this should improve efficiency of refactoring operations and allows better rollback in case of problems. However since it's a new unstable API concerning a sensitive feature we provided a switch-off configuration for it in xwiki.properties in case of trouble:
#-# [Since 12.5RC1]
#-# Indicate to use the old implementation based on copy and delete, or the new implementation
#-# using an atomic operation on database (which allows efficient rollback).
#-# This property aims at being removed in the future once the atomic rename has been validated
#-# to work 100% fine. Only use it if you are facing an issue with the move/rename features.
#-#
#-# The default value is:
# refactoring.rename.useAtomicRename = trueAllow IndexerJob to be triggered wiki per wiki on farms
![]()
Until now when the configuration solr.synchronizeAtStartup was set to true, the indexer job was trigger for the whole farm of wiki, which could have been resource consuming for the machine. We added a new configuration for the Solr Search API that allows to trigger the index job only when sub-wikis are starting (default behaviour now) or for the whole farm as it was done before. You can find the following configuration in xwiki.properties.
#-# [Since 12.5RC1]
#-# Indicates which wiki synchronization to perform when the "solr.synchronizeAtStartup" property is set to true.
#-# Two modes are available:
#-# - WIKI: indicate that the synchronization is performed when each wiki is accessed for the first time.
#-# - FARM: indicate that the synchronization is performed once for the full farm when XWiki is started.
#-# For large farms and in order to spread the machine's indexing load, the WIKI value is recommended, especially if
#-# some wikis are not used.
#-# The default is:
# solr.synchronizeAtStartupMode=FARMSwitch to source while editing in-place
You can now switch to source while editing in-place the content of a page.
UIXP for Content Footer

A new UI Extension Point has been introduced to allow to inject content in the footer of a page content. This UIXP is already used to display tags and authors at the bottom of the page, but any extension can now use it for other kind of contents.
Replace Jobs with threads to handle mentions asynchronously
![]()
The user mention analysis, to detect new mentions and send notifications to target users, is now done by a pool of threads.
Configuration
A configuration option to define the size of the thread pool is available in xwiki.properties.
#-# [Since 12.6]
#-# The detection and notification for the user mentions in created or edited content is done asynchronously
#-# by a pool of consumers.
#-# This properties controls the size of this pool.
#-#
#-# The default is :
# mentions.poolSize = 1JMX Monitoring
An object named org.xwiki:name=mentions is provided and provides two attributes and one operation:
- QueueSize: Displays the number of elements (created or updated pages) to be analysed.
- ThreadNumber: The number the threads in the thread pool.
- clearQueue(): Removes all the elements in the queue. Warning: By doing so some pages will not be analysed and some mentions will be missed. To be used carefully.
Mention summary on the notification


A summary of the text surrounding a mention can now be displayed in the notification UI for mentions.
The generation and display of the mention summary can be disabled in the mentions section of the administration.
MariaDB Debian package
![]()
A new MariaDB-oriented Debian package has been introduced.
Prefixed Remote Solr core name
![]()
Solr cores are now prefixed by default with xwiki_ (except for the main core that is used for search, which is named xwiki).
Allow to define a default XAR entry type when building XARs
![]()
Added the option <defaultEntryType>myEntryType</defaultEntryType> in the configuration of the XAR plugin when building XAR artifacts.
When defined, the default enty type will be applied to every entry not being overridden through the <entries>...</entries> list in the plugin configuration.
See the Maven XAR Plugin documentation for more information about this feature.
Option to skip the recycle bin


There's now an administration option to allow advanced users to choose whether deleted pages are sent to the recycle bin or not.
To do so, search for the "Delete" section in the Administration and set "can skip the recycle bin" to Yes. The default value is No to avoid unwanted loss of data.
Increased timeout for Office
![]()
The default timeout to import office documents has been increased for 30 seconds to 1 minute, in order to avoid errors when importing large documents taking more than 30 seconds.
Targetable Events disregard Inclusive filters
![]()
We changed slightly the behaviour of Notification Filters for Targetable Events. These type of events are not concerned anymore by inclusive filters. It means that these events will be received by users even if the location where the event has been sent to is not watched by the user. This is useful for example for Mentions to allow receiving Mentions notifications from any location without needing to watch it.
Note that the exclusive filters are still honored by targetable events: this allows users to keep not receiving notifications on the chosen locations.
Provide a new API for Ratings
![]()
The Ratings API has been rewritten in order to support new use-cases, such as performing rates on different kinds of elements (not only pages) but also using different scales for ratings. This works leads to breaking the existing Ratings API: the Rating Application is automatically supported (you just have to update the extension) but if you used directly the Ratings API for some custom extensions you might be interested about this small guide for migrating it.
Async Rendering improvements
![]()
When the context document is selected in an asynchronous rendering execution it's also added to "used" entities. That means that if that document is modified the cache result will be invalidated automatically.
Liked pages are displayed in a LiveTable

Liked pages are now displayed in a live table in the user profile.
Like information are displayed in a live table

People liking a page are now displayed in a live table.
Maven extension repositories can be configured with custom HTTP headers
![]()
It is now possible to define extra HTTP headers to be used when connecting to a maven extension repository. See the maven extension repository connector documentation to learn more.