Release Notes for XWiki 9.5-rc-1
- New and Noteworthy (since XWiki 9.4)
- For Users
- Recommended Templates when creating pages
- Notifications can now be received by emails
- Date filter in Livetables
- Notification Filters
- Attachment Icons use the Icon Theme
- Image Attachment Preview
- Attachment Selector can set a version summary
- Visual separation for page tabs
- Replace attachment with Attachment Selector
- Miscellaneous
- For Admins
- For Developers
- For Users
- Translations
- Known issues
- Backward Compatibility and Migration Notes
- Credits
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
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.
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.
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.
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.
Image Attachment Preview
The attachments tab at the bottom of the page is now displaying a preview for image attachments.
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.
Visual separation for page tabs
The page tabs are now visually separated from the page content.
Replace attachment with Attachment Selector
When uploading a new file from the Attachment Selector you now have the option to replace the selected attachment.
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
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.
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.
Miscellaneous
Disable notifications emails: You can disable the new notifications emails feature with the option notifications.emails.enabled on xwiki.properties.
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.
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
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.
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
Miscellaneous
It's now possible to indicate flavors known to be incompatible with a distribution package. See Flavor Module for more details.
It is possible to create custom Notification Filters: see the documentation.
Beginning and ending of job is not logged anymore if the verbose is false in the job request.
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.
Moved Modules
- WebDAV module has been moved to XWiki Contrib and is now unsupported by XWiki Dev Team.
Upgrades
The following runtime dependencies have been upgraded (they have a different release cycle than XWiki Commons, XWiki Rendering, XWiki Platform and XWiki Enterprise):
- CSS4J 0.29
- Font Awesome 4.7.0
- Commons Lang 3.6
- Commons Text 1.1 (new dependency management)
- XStream 1.4.10
- JGroups 4.0.3
- Gson 2.8.1
- Bouncy Castle 1.57
- Apache PDFBox 2.0.6
- commons-compress 1.14
- JSON-Java 20170516
Translations
The following translations have been updated:
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
- Code:## Old:
field org.xwiki.extension.job.InstallRequest.serialVersionUID
## New:
field org.xwiki.extension.job.InstallRequest.serialVersionUID
- Violation type:
- No real breackage here. Only adds a new method
- Violation type:java.field.serialVersionUIDUnchanged
- Code:## Old:
field org.xwiki.extension.ExtensionId.serialVersionUID
## New:
field org.xwiki.extension.ExtensionId.serialVersionUID
- Violation type:
- NotificationDisplayer must handle a composite event instead of a raw event
- Violation type:java.method.parameterTypeChanged
- Code:## 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
- Violation type:
- NotificationManager must return composite events instead of a raw events now
- Violation type:java.method.returnTypeTypeParametersChanged
- Code:## 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
- Violation type:
- NotificationManager must return composite events instead of a raw events now
- Violation type:java.method.returnTypeTypeParametersChanged
- Code:## 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
- Violation type:
- NotificationRenderer must handle a composite event instead of a raw event
- Violation type:java.method.parameterTypeChanged
- Code:## 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
- Violation type:
- NotificationManager must return composite events instead of a raw events now
- Violation type:java.method.returnTypeTypeParametersChanged
- Code:## 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
- Violation type:
- NotificationManager must return composite events instead of a raw events now
- Violation type:java.method.returnTypeTypeParametersChanged
- Code:## 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
- Violation type:
- NotificationManager must return composite events instead of a raw events now
- Violation type:java.method.returnTypeTypeParametersChanged
- Code:## 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
- Violation type:
- NotificationManager must return composite events instead of a raw events now
- Violation type:java.method.parameterTypeChanged
- Code:## 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
- Violation type:
- Align with Java API
- Violation type:java.annotation.added
- Code:## Old:
field org.xwiki.rest.model.jaxb.JobRequest.verbose
## New:
field org.xwiki.rest.model.jaxb.JobRequest.verbose
- Violation type:
- Young API
- Violation type:java.method.addedToInterface
- Code:## Old:
null
## New:
method java.util.List<org.xwiki.eventstream.RecordableEventDescriptor> org.xwiki.eventstream.RecordableEventDescriptorManager::getAllRecordableEventDescriptorsAllWikis() throws org.xwiki.eventstream.EventStreamException
- Violation type:
- Young API
- Violation type:java.method.addedToInterface
- Code:## 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
- Violation type:
- Young API
- Violation type:java.method.addedToInterface
- Code:## Old:
null
## New:
method boolean org.xwiki.notifications.NotificationConfiguration::areEmailsEnabled()
- Violation type:
- Young API
- Violation type:java.method.addedToInterface
- Code:## 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
- Violation type:
- REVAPI bug
- Violation type:java.method.returnTypeTypeParametersChanged
- Code:## 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
- Violation type:
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