Release Notes for XWiki 12.10

Last modified by Vincent Massol on 2021/02/24

This is the release notes for XWiki Commons, XWiki Rendering and XWiki Platform. They share the same release notes as they are released together and have the same version.

This release improves the Jump to Page modal and introduces a new Solr-based local extension index that should speedup the Extension Manager search and improve the results by suggesting only compatible extensions.

The following regressions were introduced in this release (and found after it was released). Please check them out and if they impact you we recommend waiting to upgrade to a version where they are fixed.

New and Noteworthy (since XWiki 12.9)

Full list of issues fixed and Dashboard for 12.10.

For Users

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).

For Admins

New local extensions index

 
A new Solr based index of all the extensions available on the configured searchable repositories has been introduced. It's updated regularly (every hours in that version) and it also recommends compatible versions to install so that the default list you get in the Extension Manager UI only contains extensions which are not already installed and for which the install/upgrade should work in your instance.

Miscellaneous

  • Allow to force-download attachments based on their mimetype: It is now possible to decide which attachments should be always downloaded based on their mimetypes: until now two properties (attachments.download.whitelist and attachments.download.blacklist) were allowing to control the display of some attachments for security reasons, but those properties are not able to control the behaviour of attachments added by a user with programming rights.

    A new property has been added to allow force-download any attachment, whoever added it:

    #-# [Since 12.10]
    #-# Define the kind of attachment that you always want to be downloaded and never displayed inline.
    #-# By default this list is empty, but you can specify a list of mime-types (coma separated list of values) which
    #-# should be always downloaded no matter who attached them or what is the whitelist/blacklist configuration.
    #-#
    #-# The distinction with the blacklist configuration above is that the blacklist won't affect file attached by a user
    #-# with programming rights, while this configuration affect any attachment.
    # attachment.download.forceDownload=
  • 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).

For Developers

Solr dedicated core improvements

 

  • The base schema now provide a type "text_general" and associated helpers which follow the Solr standard "text_general" type, "a general text field that has reasonable, generic cross-language defaults: it tokenizes with StandardTokenizer, removes stop words from case-insensitive 'stopwords.txt' (empty by default), and down cases. At query time only, it also applies synonyms". This is the easiest way to insert full text search friendly fields in your schema.
  • A Solr core initializer can now decide if the data should be stored as cached data or not

Async Rendering improvements

 

  • Saving/restoring the context action is now supported.
  • When saving the context document but not the wiki, the context wiki should be restored from the document.

User Mentions API upgraded

 
The User Mentions API has been upgraded to support new use-cases, such as sending notification to different kind of actors. This new API is a first step toward the mention of users from remote wikis, or to the mention of groups. A new event has also been introduced, making it easier to listen and react to mentions from new modules.

Miscellaneous

  • 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. 

  • 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.

Upgrades

The following runtime dependencies have been upgraded (they have a different release cycle than XWiki Commons, XWiki Rendering and XWiki Platform):

Downgrades

Translations

The following translations have been updated:

Tested Browsers & Databases

Here is the list of browsers we support and how they have been tested for this release:

 BrowserTested on:
Chrome30.pngGoogle Chrome 87Jira Tickets Marked as Fixed in the Release Notes
Firefox30.pngMozilla Firefox 83Not Tested
Edge30.pngMicrosoft Edge 87Not Tested
IE30.pngInternet Explorer 11Not Tested
Safari30.pngSafari 14Not Tested

Here is the list of databases we support and how they have been tested for this release:

 DatabaseTested on:
hypersql.pngHyperSQL 2.5.1Not Tested
mysql.pngMySQL 8Not Tested
oracle.pngOracle 19cNot Tested
postgresql.pngPostgreSQL 13Jira Tickets Marked as Fixed in the Release Notes
mariadb.pngMariaDB 10.5Not Tested

Here is the list of Servlet Containers we support and how they have been tested for this release:

 Servlet ContainerTested on:
tomcat-icon.pngTomcat 9.0.40Jira Tickets Marked as Fixed in the Release Notes
jetty-icon.pngJetty 9.4.29 (XWiki Standalone packaging)Not Tested 
jetty-icon.pngJetty 9.4.29Not Tested

Known issues

Backward Compatibility and Migration Notes

General Notes

  • When upgrading make sure you compare and merge the following XWiki configuration files since some parameters may have been modified, removed or added:
    • xwiki.cfg
    • xwiki.properties
    • web.xml
    • hibernate.cfg.xml
  • Add xwiki.store.migration=1 in xwiki.cfg so that XWiki will attempt to automatically migrate your current database to any new schema. Make sure you backup your Database before doing anything.

Issues specific to XWiki 12.10

Changes in Infinispan configuration

With the upgrade to Infinispan 11.0.5 the format of the configuration changed in WEB-INF/cache/infinispan/config.xml:

  • If you haven't cuztomized this file, you don't have anything to do.
  • If you have customized it, then you should check the new format. For example, XWiki's default config.xml uses <local-cache> (to override the configuration of an XWiki cache) and this must be changed to <local-cache-configuration> (this tag existed before but Infinispan has changed the way they interpret it).

API Breakages

The following APIs were modified since XWiki 12.9:

  • Unstable API.
    • Violation type:
      java.method.numberOfParametersChanged
    • Code:
      ## Old:
      method java.lang.String org.xwiki.security.authentication.api.AuthenticationFailureManager::getForm(java.lang.String)

      ## New:
      method java.lang.String org.xwiki.security.authentication.api.AuthenticationFailureManager::getForm(java.lang.String, javax.servlet.http.HttpServletRequest)
  • Unstable API.
    • Violation type:
      java.method.numberOfParametersChanged
    • Code:
      ## Old:
      method boolean org.xwiki.security.authentication.api.AuthenticationFailureManager::recordAuthenticationFailure(java.lang.String)

      ## New:
      method boolean org.xwiki.security.authentication.api.AuthenticationFailureManager::recordAuthenticationFailure(java.lang.String, javax.servlet.http.HttpServletRequest)
  • Unstable API.
    • Violation type:
      java.method.parameterTypeChanged
    • Code:
      ## Old:
      parameter boolean org.xwiki.security.authentication.api.AuthenticationFailureManager::validateForm(java.lang.String, ===org.securityfilter.filter.SecurityRequestWrapper===)

      ## New:
      parameter boolean org.xwiki.security.authentication.api.AuthenticationFailureManager::validateForm(java.lang.String, ===javax.servlet.http.HttpServletRequest===)
  • Unstable API.
    • Violation type:
      java.method.parameterTypeChanged
    • Code:
      ## Old:
      parameter boolean org.xwiki.security.authentication.api.AuthenticationFailureStrategy::validateForm(java.lang.String, ===org.securityfilter.filter.SecurityRequestWrapper===)

      ## New:
      parameter boolean org.xwiki.security.authentication.api.AuthenticationFailureStrategy::validateForm(java.lang.String, ===javax.servlet.http.HttpServletRequest===)
  • Young API. Redesign of the mention notifications mechanism.
    • Violation type:
      java.class.removed
    • Code:
      ## Old:
      interface org.xwiki.mentions.MentionNotificationService
  • Young API. Redesign of the mention notifications mechanism.
    • Violation type:
      java.method.numberOfParametersChanged
    • Code:
      ## Old:
      method void org.xwiki.mentions.notifications.MentionNotificationParameters::<init>(org.xwiki.model.reference.DocumentReference, org.xwiki.model.reference.DocumentReference, org.xwiki.model.reference.DocumentReference, org.xwiki.mentions.MentionLocation, java.lang.String, org.xwiki.rendering.block.XDOM)

      ## New:
      method void org.xwiki.mentions.notifications.MentionNotificationParameters::<init>(java.lang.String, org.xwiki.model.reference.EntityReference, org.xwiki.mentions.MentionLocation, java.lang.String)
  • Young API. Redesign of the mention notifications mechanism.
    • Violation type:
      java.method.removed
    • Code:
      ## Old:
      method java.lang.String org.xwiki.mentions.notifications.MentionNotificationParameters::getAnchorId()
  • Young API. Redesign of the mention notifications mechanism.
    • Violation type:
      java.method.returnTypeChanged
    • Code:
      ## Old:
      method org.xwiki.model.reference.DocumentReference org.xwiki.mentions.notifications.MentionNotificationParameters::getAuthorReference()

      ## New:
      method java.lang.String org.xwiki.mentions.notifications.MentionNotificationParameters::getAuthorReference()
  • Young API. Redesign of the mention notifications mechanism.
    • Violation type:
      java.method.removed
    • Code:
      ## Old:
      method org.xwiki.model.reference.DocumentReference org.xwiki.mentions.notifications.MentionNotificationParameters::getDocumentReference()
  • Young API. Redesign of the mention notifications mechanism.
    • Violation type:
      java.method.removed
    • Code:
      ## Old:
      method org.xwiki.model.reference.DocumentReference org.xwiki.mentions.notifications.MentionNotificationParameters::getMentionedIdentity()
  • Young API. Redesign of the mention notifications mechanism.
    • Violation type:
      java.method.removed
    • Code:
      ## Old:
      method org.xwiki.rendering.block.XDOM org.xwiki.mentions.notifications.MentionNotificationParameters::getXdom()
  • Young API. Redesign of the mention notifications mechanism.
    • Violation type:
      java.method.numberOfParametersChanged
    • Code:
      ## Old:
      method java.lang.String org.xwiki.mentions.script.MentionsScriptService::format(java.lang.String, org.xwiki.mentions.DisplayStyle)

      ## New:
      method java.lang.String org.xwiki.mentions.script.MentionsScriptService::format(java.lang.String, org.xwiki.mentions.DisplayStyle, java.lang.String)
  • Not a breackage
    • Violation type:
      java.field.constantValueChanged
    • Code:
      ## Old:
      field org.xwiki.search.solr.AbstractSolrCoreInitializer.SCHEMA_BASE_VERSION

      ## New:
      field org.xwiki.search.solr.AbstractSolrCoreInitializer.SCHEMA_BASE_VERSION
  • Young API.
    • Violation type:
      java.method.addedToInterface
    • Code:
      ## Old:


      ## New:
      method long org.xwiki.ratings.RatingsManager::moveRatings(org.xwiki.model.reference.EntityReference, org.xwiki.model.reference.EntityReference) throws org.xwiki.ratings.RatingsException
  • Young API: fix typo.
    • Violation type:
      java.method.removed
    • Code:
      ## Old:
      method void org.xwiki.ratings.RatingsManager::setIdentifer(java.lang.String)
  • Young API: fix typo.
    • Violation type:
      java.method.addedToInterface
    • Code:
      ## Old:


      ## New:
      method void org.xwiki.ratings.RatingsManager::setIdentifier(java.lang.String)

Credits

The following people have contributed code and translations to this release (sorted alphabetically):

  • Abhishek Kumar
  • Carlos Amengual
  • Clemens Robbenhaar
  • Clément Desableau
  • DenisF
  • Eduard Moraru
  • Eunike Leti Kajiwara
  • Francisco García Moreno
  • Guillaume Delhumeau
  • Jarle Sandmo
  • Joan
  • Leif Erik Andersen
  • Manuel Leduc
  • Marius Dumitru Florea
  • Simon Urli
  • Thomas Mortagne
  • Vincent Massol
  • Wing Pang
  • xrichard
Tags:
   

Get Connected