Release Notes for XWiki 10.1-rc-1

Last modified by Ilie Andriuta on 2018/02/27

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.

Starting with this release the Watchlist Application has been disabled and fully replaced by the Notifications Application. We continue to add new improvements to Notifications (filters, preferences, etc.) so make sure to check them out.

The following regressions couldn't be fixed in this release and should be fixed in the next one:

  • XWIKI-15024: Annotations box remains stuck after adding an annotation

New and Noteworthy (since XWiki 10.0)

Full list of issues fixed and Dashboard for 10.1.

For Users

Notifications fully replace the Watchlist


It's finally done! In this version, we have decided to disable the Watchlist in XWiki, by default. Instead, the Notifications Application is now the central feature in XWiki for notifications. 

Don't forget to warn your users about the need to enable email in their notification settings!

Note: you can rollback this change by disabling the Notifications Application and enabling the Watchlist again.

Hiding notifications that are read


Since the introduction of the Notifications Application in XWiki, it was possible to mark some notifications as "read". They were displayed differently, and not counted in the red circle above the bell, but they were still there.

Now, it is possible to decide not to show them anymore thanks to an option in the user's notification settings.

All filters preferences are displayed in the same livetable


The "advanced filtering options" window has disappeared, and all filters are displayed in the same place.

Miscellaneous

  • Notification Filter Preferences that concern hidden pages are not listed anymore: Filters that concern hidden pages are not shown in the table, unless you enabled the option to see hidden pages. More informations: Hidden (technical) pages.

  • Improved Multi-Term Search Relevancy: This is commonly referred to as sloppy phrase matching and allows for more "Googleish" query strings. The implementation allows for partial multi-term matching so that searching for long phrases won’t “hide” documents with a subset of shorter multi-term matches.

    For those interested in the more technical aspects:

    • The query string is split into groups of multi-term contiguous sequences (word shingles), ignoring stopwords where appropriate.
    • The higher the number of terms in close proximity the more relevant the document will appear.
    • While the order of the terms in the query string is important for forming word shingles, the order in which the terms appear in the document doesn’t affect the score.
    • Stemming is still used so that all forms of each word are considered matches even in multi-term relevancy calculations.
    • Exact matches are still returned when terms are encased in quotes.

For Admins

No changes!

Miscellaneous

  • Filesystem store improvements has changed format: Support for case insensitive filesystems has been added in the filesystem store. Among other things it means that most of the existing paths need to be modified (upper case characters are now escaped). There is an automatic migration for it but be careful if you are using some custom tool manipulating directly the store files (since the format has changed).

For Developers

No changes!

Miscellaneous

  • Notifications settings are now available as macros: New macros have been created, so you can include your notification settings in many pages (such as the dashboard). These macros are:

    • {{notificationsEmailPreferences /}}
    • {{notificationsApplicationsPreferences /}}
    • {{notificationsFiltersPreferences /}}

Upgrades

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

Translations

The following translations have been updated: 

  • Croatian
  • French

Tested Browsers & Databases

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

BrowserTest Result
Chrome30.pngGoogle Chrome 64Not Tested
Firefox30.pngMozilla Firefox 58Jira Tickets Marked as Fixed in the Release Notes + New and Noteworthy Features
Edge30.pngMicrosoft Edge 16Not Tested
IE30.pngInternet Explorer 11Not Tested

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

DatabaseTest Result
hypersql.pngHyperSQLNot Tested
mysql.pngMySQL 5.7Not Tested
oracle.pngOracle 11.2Not Tested
postgresql.pngPostgreSQL 10Jira Tickets Marked as Fixed in the Release Notes + New and Noteworthy Features

Known issues

Backward Compatibility and Migration Notes

General Notes

When upgrading make sure you compare your xwiki.cfg, xwiki.properties and web.xml files with the newest version since some configuration parameters may have been modified or added. Note that you should add xwiki.store.migration=1 so that XWiki will attempt to automatically migrate your current database to the new schema. Make sure you backup your Database before doing anything.

Issues specific to XWiki 10.1RC1

  • The path of most filesystem store files has been modified (any upper case character is now escaped). This should not be a problem most of the time since there is an automatic migration of those paths but be careful if you are using a tool which directly manipulate filesystem store without going trough XWiki API.

API Breakages

The following APIs were modified since XWiki 10.0:

  • Not a breakage in this context
    • Violation type:
      java.field.serialVersionUIDUnchanged
    • Code:
      ## Old:
      field org.xwiki.job.AbstractRequest.serialVersionUID

      ## New:
      field org.xwiki.job.AbstractRequest.serialVersionUID
  • Not a breakage in this context
    • Violation type:
      java.field.serialVersionUIDUnchanged
    • Code:
      ## Old:
      field org.xwiki.job.DefaultRequest.serialVersionUID

      ## New:
      field org.xwiki.job.DefaultRequest.serialVersionUID
  • Not a breakage in this context
    • Violation type:
      java.field.serialVersionUIDUnchanged
    • Code:
      ## Old:
      field org.xwiki.extension.job.AbstractExtensionRequest.serialVersionUID

      ## New:
      field org.xwiki.extension.job.AbstractExtensionRequest.serialVersionUID
  • Not a breakage in this context
    • Violation type:
      java.field.serialVersionUIDUnchanged
    • Code:
      ## Old:
      field org.xwiki.extension.job.InstallRequest.serialVersionUID

      ## New:
      field org.xwiki.extension.job.InstallRequest.serialVersionUID
  • Not a breakage in this context
    • Violation type:
      java.field.serialVersionUIDUnchanged
    • Code:
      ## Old:
      field org.xwiki.extension.job.UninstallRequest.serialVersionUID

      ## New:
      field org.xwiki.extension.job.UninstallRequest.serialVersionUID
  • Not a breakage in this context
    • Violation type:
      java.field.serialVersionUIDUnchanged
    • Code:
      ## Old:
      field org.xwiki.extension.job.history.ReplayRequest.serialVersionUID

      ## New:
      field org.xwiki.extension.job.history.ReplayRequest.serialVersionUID
  • Not a breakage in this context
    • Violation type:
      java.field.serialVersionUIDUnchanged
    • Code:
      ## Old:
      field org.xwiki.filter.job.FilterStreamConverterJobRequest.serialVersionUID

      ## New:
      field org.xwiki.filter.job.FilterStreamConverterJobRequest.serialVersionUID
  • No breakage. Just moved commons stuff in an abtract class.
    • Violation type:
      java.class.nonFinalClassInheritsFromNewClass
    • Code:
      ## Old:
      class org.xwiki.rendering.block.MacroBlock

      ## New:
      class org.xwiki.rendering.block.MacroBlock
  • No breakage. Just moved commons stuff in an abtract class.
    • Violation type:
      java.class.nonFinalClassInheritsFromNewClass
    • Code:
      ## Old:
      class org.xwiki.rendering.block.MacroMarkerBlock

      ## New:
      class org.xwiki.rendering.block.MacroMarkerBlock
  • No breakage. Just moved commons stuff in an abtract class.
    • Violation type:
      java.class.nonFinalClassInheritsFromNewClass
    • Code:
      ## Old:
      class org.xwiki.rendering.block.ExpandedMacroBlock

      ## New:
      class org.xwiki.rendering.block.ExpandedMacroBlock
  • Not a breakage in this context
    • Violation type:
      java.field.serialVersionUIDUnchanged
    • Code:
      ## Old:
      field org.xwiki.refactoring.job.CreateRequest.serialVersionUID

      ## New:
      field org.xwiki.refactoring.job.CreateRequest.serialVersionUID
  • Not a breakage in this context
    • Violation type:
      java.field.serialVersionUIDUnchanged
    • Code:
      ## Old:
      field org.xwiki.refactoring.job.EntityRequest.serialVersionUID

      ## New:
      field org.xwiki.refactoring.job.EntityRequest.serialVersionUID
  • Not a breakage in this context
    • Violation type:
      java.field.serialVersionUIDUnchanged
    • Code:
      ## Old:
      field org.xwiki.refactoring.job.MoveRequest.serialVersionUID

      ## New:
      field org.xwiki.refactoring.job.MoveRequest.serialVersionUID
  • Not a breakage in this context
    • Violation type:
      java.field.serialVersionUIDUnchanged
    • Code:
      ## Old:
      field org.xwiki.refactoring.job.RestoreRequest.serialVersionUID

      ## New:
      field org.xwiki.refactoring.job.RestoreRequest.serialVersionUID
  • Not a breakage in this context
    • Violation type:
      java.field.serialVersionUIDUnchanged
    • Code:
      ## Old:
      field org.xwiki.platform.wiki.creationjob.WikiCreationRequest.serialVersionUID

      ## New:
      field org.xwiki.platform.wiki.creationjob.WikiCreationRequest.serialVersionUID
  • Not a breakage in this context
    • Violation type:
      java.annotation.attributeValueChanged
    • Code:
      ## Old:
      class org.xwiki.rest.model.jaxb.JobRequest

      ## New:
      class org.xwiki.rest.model.jaxb.JobRequest
  • Not a breakage in this context
    • Violation type:
      java.annotation.attributeValueChanged
    • Code:
      ## Old:
      class org.xwiki.rest.model.jaxb.JobStatus

      ## New:
      class org.xwiki.rest.model.jaxb.JobStatus
  • Young API
    • Violation type:
      java.method.numberOfParametersChanged
    • Code:
      ## Old:
      method java.util.List<org.xwiki.notifications.CompositeEvent> org.xwiki.notifications.sources.NotificationManager::getEvents(java.lang.String, boolean, int) throws org.xwiki.notifications.NotificationException

      ## New:
      method java.util.List<org.xwiki.notifications.CompositeEvent> org.xwiki.notifications.sources.NotificationManager::getEvents(java.lang.String, int) throws org.xwiki.notifications.NotificationException
  • Young API
    • Violation type:
      java.method.parameterTypeChanged
    • Code:
      ## Old:
      parameter java.util.List<org.xwiki.notifications.CompositeEvent> org.xwiki.notifications.sources.NotificationManager::getEvents(java.lang.String, ===boolean===, int, java.util.Date, java.util.Date, java.util.List<java.lang.String>) throws org.xwiki.notifications.NotificationException

      ## New:
      parameter java.util.List<org.xwiki.notifications.CompositeEvent> org.xwiki.notifications.sources.NotificationManager::getEvents(java.lang.String, ===org.xwiki.notifications.NotificationFormat===, int, java.util.Date, java.util.Date, java.util.List<java.lang.String>) throws org.xwiki.notifications.NotificationException
  • Young API
    • Violation type:
      java.method.numberOfParametersChanged
    • Code:
      ## Old:
      method java.util.List<org.xwiki.notifications.CompositeEvent> org.xwiki.notifications.sources.NotificationManager::getEvents(java.lang.String, boolean, int, java.util.Date, java.util.List<java.lang.String>) throws org.xwiki.notifications.NotificationException

      ## New:
      method java.util.List<org.xwiki.notifications.CompositeEvent> org.xwiki.notifications.sources.NotificationManager::getEvents(java.lang.String, int, java.util.Date, java.util.List<java.lang.String>) throws org.xwiki.notifications.NotificationException
  • Young API
    • Violation type:
      java.method.numberOfParametersChanged
    • Code:
      ## Old:
      method java.util.List<org.xwiki.notifications.CompositeEvent> org.xwiki.notifications.sources.NotificationManager::getEvents(java.lang.String, org.xwiki.notifications.NotificationFormat, boolean, int, java.util.Date, java.util.Date, java.util.List<java.lang.String>) throws org.xwiki.notifications.NotificationException

      ## New:
      method java.util.List<org.xwiki.notifications.CompositeEvent> org.xwiki.notifications.sources.NotificationManager::getEvents(java.lang.String, int, java.util.Date, java.util.Date, java.util.List<java.lang.String>) throws org.xwiki.notifications.NotificationException
  • Young API
    • Violation type:
      java.method.numberOfParametersChanged
    • Code:
      ## Old:
      method long org.xwiki.notifications.sources.NotificationManager::getEventsCount(java.lang.String, boolean, int) throws org.xwiki.notifications.NotificationException

      ## New:
      method long org.xwiki.notifications.sources.NotificationManager::getEventsCount(java.lang.String, int) throws org.xwiki.notifications.NotificationException
  • Young API
    • Violation type:
      java.method.numberOfParametersChanged
    • Code:
      ## Old:
      method java.util.List<org.xwiki.notifications.CompositeEvent> org.xwiki.notifications.sources.script.NotificationSourcesScriptService::getEvents(boolean, int) throws org.xwiki.notifications.NotificationException

      ## New:
      method java.util.List<org.xwiki.notifications.CompositeEvent> org.xwiki.notifications.sources.script.NotificationSourcesScriptService::getEvents(int) throws org.xwiki.notifications.NotificationException
  • Young API
    • Violation type:
      java.method.numberOfParametersChanged
    • Code:
      ## Old:
      method java.util.List<org.xwiki.notifications.CompositeEvent> org.xwiki.notifications.sources.script.NotificationSourcesScriptService::getEvents(boolean, int, java.util.Date, java.lang.String[]) throws org.xwiki.notifications.NotificationException

      ## New:
      method java.util.List<org.xwiki.notifications.CompositeEvent> org.xwiki.notifications.sources.script.NotificationSourcesScriptService::getEvents(int, java.util.Date, java.lang.String[]) throws org.xwiki.notifications.NotificationException
  • Young API
    • Violation type:
      java.method.numberOfParametersChanged
    • Code:
      ## Old:
      method java.util.List<org.xwiki.notifications.CompositeEvent> org.xwiki.notifications.sources.script.NotificationSourcesScriptService::getEvents(boolean, int, java.util.Date, java.util.List<java.lang.String>) throws org.xwiki.notifications.NotificationException

      ## New:
      method java.util.List<org.xwiki.notifications.CompositeEvent> org.xwiki.notifications.sources.script.NotificationSourcesScriptService::getEvents(int, java.util.Date, java.util.List<java.lang.String>) throws org.xwiki.notifications.NotificationException
  • Young API
    • Violation type:
      java.method.numberOfParametersChanged
    • Code:
      ## Old:
      method long org.xwiki.notifications.sources.script.NotificationSourcesScriptService::getEventsCount(boolean, int) throws org.xwiki.notifications.NotificationException

      ## New:
      method long org.xwiki.notifications.sources.script.NotificationSourcesScriptService::getEventsCount(int) throws org.xwiki.notifications.NotificationException
  • Young API
    • Violation type:
      java.method.parameterTypeChanged
    • Code:
      ## Old:
      parameter java.lang.String org.xwiki.notifications.notifiers.script.NotificationNotifiersScriptService::getFeed(===int===, boolean) throws org.xwiki.notifications.NotificationException

      ## New:
      parameter java.lang.String org.xwiki.notifications.notifiers.script.NotificationNotifiersScriptService::getFeed(===java.lang.String===, int) throws org.xwiki.notifications.NotificationException
  • Young API
    • Violation type:
      java.method.parameterTypeChanged
    • Code:
      ## Old:
      parameter java.lang.String org.xwiki.notifications.notifiers.script.NotificationNotifiersScriptService::getFeed(int, ===boolean===) throws org.xwiki.notifications.NotificationException

      ## New:
      parameter java.lang.String org.xwiki.notifications.notifiers.script.NotificationNotifiersScriptService::getFeed(java.lang.String, ===int===) throws org.xwiki.notifications.NotificationException
  • Young API
    • Violation type:
      java.method.numberOfParametersChanged
    • Code:
      ## Old:
      method java.lang.String org.xwiki.notifications.notifiers.script.NotificationNotifiersScriptService::getFeed(java.lang.String, int, boolean) throws org.xwiki.notifications.NotificationException

      ## New:
      method java.lang.String org.xwiki.notifications.notifiers.script.NotificationNotifiersScriptService::getFeed(int) throws org.xwiki.notifications.NotificationException

Credits

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

Akshit Dewan
Alexander Bilovol
Anca Luca
Arun Pattni
Ben Megson
Ecaterina Moraru (Valica)
Eduard Moraru
Guillaume Delhumeau
Marius Dumitru Florea
Thomas Mortagne
Vincent Massol

Tags:
Created by Marius Dumitru Florea on 2018/02/01
   

Get Connected