Release Notes for XWiki 10.1-rc-1
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.
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.
Note: you can rollback this change by disabling the Notifications Application and enabling the Watchlist again.
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.
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.
Miscellaneous
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.
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.
For Admins
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
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):
- CSS4J 0.39
- Restlet 2.3.12
- JGroups 4.0.10
- Tika 1.17
- commons-compress 1.16
- Ivy 2.4.0
- JNR POSIX 3.0.44
- cssparser 0.9.25
- Jackson 2.9.4
- httpclient 4.5.5
- Groovy 2.4.13
- Bean Validation 2.0
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:
Browser | Test Result | |
---|---|---|
Google Chrome 64 | Not Tested | |
Mozilla Firefox 58 | Jira Tickets Marked as Fixed in the Release Notes + New and Noteworthy Features | |
Microsoft Edge 16 | Not Tested | |
Internet Explorer 11 | Not Tested |
Here is the list of databases we support and how they have been tested for this release:
Database | Test Result | |
---|---|---|
HyperSQL | Not Tested | |
MySQL 5.7 | Not Tested | |
Oracle 11.2 | Not Tested | |
PostgreSQL 10 | Jira 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
- Violation type:
- 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
- Violation type:
- 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
- Violation type:
- 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
- Violation type:
- 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
- Violation type:
- 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
- Violation type:
- 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
- Violation type:
- 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
- Violation type:
- 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
- Violation type:
- 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
- Violation type:
- 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
- Violation type:
- 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
- Violation type:
- 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
- Violation type:
- 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
- Violation type:
- 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
- Violation type:
- 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
- Violation type:
- 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
- Violation type:
- 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
- Violation type:
- 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
- Violation type:
- 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
- Violation type:
- 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
- Violation type:
- 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
- Violation type:
- 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
- Violation type:
- 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
- Violation type:
- 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
- Violation type:
- 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
- Violation type:
- 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
- Violation type:
- 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
- Violation type:
- 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
- Violation type:
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