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

Lots of usability improvements: improved Livetable filtering (Date filters, Multilist filters, DBList filters), Page Templates can now be auto-selected based on the current location, simplified way of adding a logo to a Color Theme and a lot more. In addition, the new Notifications feature has been worked on too: grouping of related notifications, ability to send emails, configuration of locations and sending diffs in emails. Last but not least: XWiki Enterprise is dead! We now have a new XWiki distribution that asks you at startup what Flavor you'd like to use for your wiki, and we're providing a default Flavor called the Standard Flavor (the closest to the previous XWiki Enterprise distribution). In the future there should be more Flavors offered.

After this version was released, we noticed a blocker bug: if you use one distribution that doesn't bundle the Standard Flavor, when you execute XWiki the first time, the Distribution Wizard step that lets you choose the Flavor to use comes up empty, instead of proposing the Standard Flavor. We're working on fixing this and we'll release an XWiki 9.5.1 version very quickly. Sorry about that.

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.

Notifications sent by emails now contains a diff for each event


Previously only a link was displayed.

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

XWiki Enterprise is dead, long live XWiki Standard!


The XWiki Enterprise distribution of XWiki has been abandoned and replaced in 9.5 by a new XWiki Standard flavor.

Here are the main changes in 9.5 related to distribution packages and flavors:

  • XWiki Enterprise does not exist anymore
  • A new XWiki Standard flavor has been introduced (actually two: one for the main wiki and one for sub wikis like XWiki Enterprise had)
  • Administrators now install XWiki and get to choose which flavor they want (at the time of 9.5 release only XWiki Standard is available but there will be many more as contributors add new ones on http://extensions.xwiki.org) to install on top of it
  • A XIP package is provided to help with offline install use case
  • Graphical installers have been abandoned, too hard to maintain (and not working very well anyway) and not providing much value for something that was unusable in production

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.

  • A property converter was added for org.xwiki.component.namespace.Namespace. This means among other things that it can be used as Macro parameter and it's now supported by automatic method parameters conversion in Velocity.

  • 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):

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 FirefoxNot Tested
IE30.pngInternet Explorer 10Not Tested
IE30.pngInternet Explorer 11Jira Tickets Marked as Fixed in the Release Notes

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

DatabaseTest Result
hypersql.pngHyperSQLNot Tested
mysql.pngMySQLNot Tested
oracle.pngOracleNot Tested
postgresql.pngPostgreSQL 9.6Jira Tickets Marked as Fixed in the Release Notes

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 9.5

None!

API Breakages

The following APIs were modified since XWiki 9.4:

  • 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

Credits

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

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

Tags:
Created by Guillaume Delhumeau on 2017/06/22
   

Get Connected