Release Notes for XWiki 9.5-rc-1

Last modified by Manuel Smeria on 2017/07/07

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

This release features a major restructuring of the XWiki Enterprise distribution by converting it into the XWiki Standard Flavor. User features cover notifications by email, attachments list showing icons and image previews, recommended template at page creation, LiveTable date and multilist filters, and minor visual improvements. Admins can more easily customize the look and feel by the extended use of Icon Themes and the improvements done to setting the wiki logo. Finally, devs have a new API for working with wiki components, new icon theme mappings and notifications API improvements.

New and Noteworthy (since XWiki 9.4)

Full list of issues fixed and Dashboard for 9.5.

For Users

Attachment Icons use the Icon Theme


The attachment icons displayed on the attachments tab at the bottom of the page is now using the configured Icon Theme.

Notifications can now be received by emails


It is now possible to receive notifications by email. The feature is still quite new and the displayed content will be polished in future versions, but you can already use it.

All you need is to select, on your user settings, the types of notifications you are interested in. The emails are sent periodically and according to you preferences: hourly, daily or weekly.

This feature will progressively replace the Watchlist application that has been available in XWiki for several years now.

Recommended Templates when creating pages


Depending on the location, when creating a page, the page type could "promote" several Templates and the first one might be automatically selected. This promotion occurs for Templates that have a "creation restriction" matching the current location (or a parent of the current location).

Example: When going to the Blog home page or when on any Blog post, if you try to create a page, you will see that the Blog Post Template will be displayed first in the list and it will be pre-selected. The same thing will happen for applications created with App Within Minutes.

More details in the documentation.

Date filter in Livetables


You can now filter by date in the livetable.

Notification Filters


When configuring Notifications, it is now possible to control the locations you are interested in. This allows to limit the number of Notifications you receive or only receive specific ones. For example you can decide to receive Notifications when Comments are created but only on the Blog page and its children.

Image Attachment Preview


The attachments tab at the bottom of the page is now displaying a preview for image attachments.

Replace attachment with Attachment Selector


When uploading a new file from the Attachment Selector you now have the option to replace the selected attachment.

Visual separation for page tabs


The page tabs are now visually separated from the page content.

Attachment Selector can set a version summary


When using the Attachment Selector macro the user can now specify a version summary that will be recorded in the history. This is disabled by default but you can enabled it by setting the versionSummary parameter to true.

Miscellaneous

  • Restore document and translations: When deleting the final revision of a document, from the History tab, the original document and all its translations may get deleted. To avoid having to restore them one by one, they are now all grouped in the same batch so they can be restored together.

  • Multilists are filterable: We can now filter multiselect lists.

For Admins

Menus use the Icon Theme


Before all Icon themes shared the same menu icons (coming from Bootstrap's Glyphicon). Now the Icon themes affect also the icons from the content menu and drawer.

Simplified adding a logo to a Flamingo Theme


Adding a logo to a flamingo theme used to require you to first go into view mode on the theme page and attach the new logo image file before you would be able to see it in edit mode, as an option. Now, we have integrated the attachment selector so that you can upload and select a new logo image directly from edit mode, removing the extra steps. More details in the documentation.

Miscellaneous

  • Partial import of Extensions: By default only the extension file is proxied from external source. Since XWiki 9.5RC1 you can bump proxy level up and proxy also previous extension versions and their dependency information. After update of extensions this information will no longer be kept in document objects but, when requested, proxied from external source. This may be enabled by setting Proxy Level attribute of ExtensionProxy XObject to File and Previous Versions. The point of bumping up proxying level is to save space in XWiki database.

  • Disable notifications emails: You can disable the new notifications emails feature with the option notifications.emails.enabled on xwiki.properties.

  • Support selecting and uploading SVG logos when editing a skin: Added support for uploading and selecting SVG images as logos when editing a skin. Previously, the attachment selector would not accept SVG files.

  • Find where to change the logo: Filtering for "logo" or "skin" in the Administration menu will now list Look & Feel > Themes as the place to customize them.

For Developers

New API for in-page component instantiation


The Wiki Component API offers a new interface called WikiObjectComponentBuilder that allows to instantiate new components using defined XObjects. For more informations, see the Wiki Component API documentation

Notifications Email Renderer


You can override the way notifications emails are generated for each individual event type. See Notifications API.

New icons


We added new mappings for the menu, more-vertical, edit, copy, move, download, log-in, log-out, th icons. They can be used using the Icon Themes service and they have equivalent in both Silk and FontAwesome themes. 

Also with the upgrade to Font Awesome 4.7.0 we improved the mapping for the basket, bell_delete, book_addresses, cake, calendar_add, calendar_delete, cart_add, chart_curve, cursor, emoticon_smile, hourglass, newspaper, note, paintbrush, shape_group, shape_ungroup, sitemap, television, thumb_down, thumb_up, tick, user_add, user_delete, weather_snow icons.

Miscellaneous

  • Beginning and ending of job is not logged anymore if the verbose is false in the job request.

  • It's now possible to indicate flavors known to be incompatible with a distribution package. See Flavor Module for more details.

  • It's now possible to "match" an ExtensionId with another ExtensionId having a null version. For example extension group:id will match group:id/version considering the first one as "all the version of the extension with id group:id".

  • A new method refresh() has been added to XWiki.widgets.LiveTable (javascript) to dynamically refresh a livetable.

  • It is possible to create custom Notification Filters: see the documentation.

Moved Modules

Upgrades

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

Translations

The following translations have been updated: 

  • Catalan
  • French
  • Croatian
  • Portuguese (Brazil)

Tested Browsers & Databases

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

BrowserTest Result
Chrome30.pngGoogle ChromeNot Tested
Firefox30.pngMozilla Firefox 54Jira Tickets Marked as Fixed in the Release Notes
IE30.pngInternet Explorer 10Not 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.7Jira Tickets Marked as Fixed in the Release Notes
oracle.pngOracleNot Tested
postgresql.pngPostgreSQLNot Tested

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.

API Breakages

The following APIs were modified since XWiki 9.4:

  • No real breackage here. Only adds a new method
    • Violation type: java.field.serialVersionUIDUnchanged
    • Old: field org.xwiki.extension.job.InstallRequest.serialVersionUID
    • New: field org.xwiki.extension.job.InstallRequest.serialVersionUID
  • No real breackage here. Only adds a new method
    • Violation type: java.field.serialVersionUIDUnchanged
    • Old: field org.xwiki.extension.ExtensionId.serialVersionUID
    • New: field org.xwiki.extension.ExtensionId.serialVersionUID
  • NotificationDisplayer must handle a composite event instead of a raw event
    • Violation type: java.method.parameterTypeChanged
    • Old: parameter org.xwiki.rendering.block.Block org.xwiki.notifications.NotificationDisplayer::renderNotification(===org.xwiki.eventstream.Event===) throws org.xwiki.notifications.NotificationException
    • New: parameter org.xwiki.rendering.block.Block org.xwiki.notifications.NotificationDisplayer::renderNotification(===org.xwiki.notifications.CompositeEvent===) throws org.xwiki.notifications.NotificationException
  • NotificationManager must return composite events instead of a raw events now
    • Violation type: java.method.returnTypeTypeParametersChanged
    • Old: method java.util.List<org.xwiki.eventstream.Event> org.xwiki.notifications.NotificationManager::getEvents(java.lang.String, boolean, int) throws org.xwiki.notifications.NotificationException
    • New: method java.util.List<org.xwiki.notifications.CompositeEvent> org.xwiki.notifications.NotificationManager::getEvents(java.lang.String, boolean, int) throws org.xwiki.notifications.NotificationException
  • NotificationManager must return composite events instead of a raw events now
    • Violation type: java.method.returnTypeTypeParametersChanged
    • Old: method java.util.List<org.xwiki.eventstream.Event> org.xwiki.notifications.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.NotificationManager::getEvents(java.lang.String, boolean, int, java.util.Date, java.util.List<java.lang.String>) throws org.xwiki.notifications.NotificationException
  • NotificationRenderer must handle a composite event instead of a raw event
    • Violation type: java.method.parameterTypeChanged
    • Old: parameter org.xwiki.rendering.block.Block org.xwiki.notifications.NotificationRenderer::render(===org.xwiki.eventstream.Event===) throws org.xwiki.notifications.NotificationException
    • New: parameter org.xwiki.rendering.block.Block org.xwiki.notifications.NotificationRenderer::render(===org.xwiki.notifications.CompositeEvent===) throws org.xwiki.notifications.NotificationException
  • NotificationManager must return composite events instead of a raw events now
    • Violation type: java.method.returnTypeTypeParametersChanged
    • Old: method java.util.List<org.xwiki.eventstream.Event> org.xwiki.notifications.script.NotificationScriptService::getEvents(boolean, int) throws org.xwiki.notifications.NotificationException
    • New: method java.util.List<org.xwiki.notifications.CompositeEvent> org.xwiki.notifications.script.NotificationScriptService::getEvents(boolean, int) throws org.xwiki.notifications.NotificationException
  • NotificationManager must return composite events instead of a raw events now
    • Violation type: java.method.returnTypeTypeParametersChanged
    • Old: method java.util.List<org.xwiki.eventstream.Event> org.xwiki.notifications.script.NotificationScriptService::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.script.NotificationScriptService::getEvents(boolean, int, java.util.Date, java.lang.String[]) throws org.xwiki.notifications.NotificationException
  • NotificationManager must return composite events instead of a raw events now
    • Violation type: java.method.returnTypeTypeParametersChanged
    • Old: method java.util.List<org.xwiki.eventstream.Event> org.xwiki.notifications.script.NotificationScriptService::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.script.NotificationScriptService::getEvents(boolean, int, java.util.Date, java.util.List<java.lang.String>) throws org.xwiki.notifications.NotificationException
  • NotificationManager must return composite events instead of a raw events now
    • Violation type: java.method.parameterTypeChanged
    • Old: parameter org.xwiki.rendering.block.Block org.xwiki.notifications.script.NotificationScriptService::render(===org.xwiki.eventstream.Event===) throws org.xwiki.notifications.NotificationException
    • New: parameter org.xwiki.rendering.block.Block org.xwiki.notifications.script.NotificationScriptService::render(===org.xwiki.notifications.CompositeEvent===) throws org.xwiki.notifications.NotificationException
  • Align with Java API
    • Violation type: java.annotation.added
    • Old: field org.xwiki.rest.model.jaxb.JobRequest.verbose
    • New: field org.xwiki.rest.model.jaxb.JobRequest.verbose
  • Young API
    • Violation type: java.method.addedToInterface
    • Old: null
    • New: method java.util.List<org.xwiki.eventstream.RecordableEventDescriptor> org.xwiki.eventstream.RecordableEventDescriptorManager::getAllRecordableEventDescriptorsAllWikis() throws org.xwiki.eventstream.EventStreamException
  • Young API
    • Violation type: java.method.addedToInterface
    • Old: null
    • New: method java.util.List<org.xwiki.notifications.CompositeEvent> org.xwiki.notifications.NotificationManager::getEvents(java.lang.String, boolean, int, java.util.Date, java.util.Date, java.util.List<java.lang.String>) throws org.xwiki.notifications.NotificationException
  • Young API
    • Violation type: java.method.addedToInterface
    • Old: null
    • New: method boolean org.xwiki.notifications.NotificationConfiguration::areEmailsEnabled()
  • Young API
    • Violation type: java.method.addedToInterface
    • Old: null
    • New: method java.util.List<org.xwiki.notifications.CompositeEvent> org.xwiki.notifications.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
  • REVAPI bug
    • Violation type: java.method.returnTypeTypeParametersChanged
    • Old: method java.util.Enumeration<java.lang.String> javax.servlet.GenericServlet::getInitParameterNames() @ org.xwiki.resource.servlet.ResourceReferenceHandlerServlet
    • New: method java.util.Enumeration javax.servlet.GenericServlet::getInitParameterNames() @ org.xwiki.resource.servlet.ResourceReferenceHandlerServlet

Credits

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

Clément Aubin
Eduard Moraru
Ecaterina Moraru (Valica)
Guillaume Delhumeau
Krzysiek Płachno
Marius Dumitru Florea
Pierre Bondoerffer
Thomas Mortagne
Vincent Massol

Tags:
Created by Eduard Moraru on 2017/05/23
   

Get Connected