Release Notes for XWiki 9.7
- New and Noteworthy (since XWiki 9.6)
- For Users
- Improved Attachment Index
- Improved Code Viewer with Blame View
- Include and exclude Notification filters
- Gadget Wizard Update
- New default notification filters
- Notifications Preferences
- Improvements when viewing a document version
- Display extension id
- Clickable versions in the changes view
- Deprecated and Internal Macros Hidden by Default
- Miscellaneous
- For Admins
- For Developers
- For Users
- Translations
- Tested Browsers & Databases
- Known issues
- Backward Compatibility and Migration Notes
- Credits
This is the release notes for XWiki Commons, XWiki Rendering, XWiki Platform and XWiki Enterprise. They share the same release notes as they are released together and have the same version.
This release brings small improvements to currently established features. The code viewer now provides a blame view by default and the notification center now allows the user to enable or disable notifications globally on an application, as well as toggling default notification filters provided by the platform.
New and Noteworthy (since XWiki 9.6)
Full list of issues fixed and Dashboard for 9.7.
For Users
Improved Attachment Index
The Attachments tab from the Page Index has been improved:
- the Space and Page columns have been replaced with the Location column
- the Type column is now the first column and you can sort and filter attachments by file type
- the Type column uses the Icon Theme and shows a thumbnail preview for image attachments
- there's a new column that displays the attachment file size, with support for sorting and filtering the attachments by their file size
- attachments can be filtered by date using the new date range picker
We also fixed two important bugs:
- the sort was not working correctly
- attachments from hidden pages were displayed even if hidden pages were not visible
Improved Code Viewer with Blame View
The code viewer (More Actions > View Source) has been improved to look nicer and have proper line numbers that support highlighting and linking.
A new Blame View was also added to the code viewer. In this mode, each line of the document's content is annotated with the last author that modified it and the revision in which this modification was introduced. The blame view also works when viewing the source of a document revision (other than the latest one) so it can be accessed at any point in the history of a document. See the documentation for more details.
Include and exclude Notification filters
A user can now define notification filters that are either inclusive or exclusive.
Notifications that come from a document that matches an exclusive filter will then be discarded.
Gadget Wizard Update
The Gadget Wizard used to insert and edit the gadgets from the Dashboard has been updated to use the new Macro Wizard from the CKEditor.
New default notification filters
Default notification filters can now be created.
When a default notification filter is created, it appears as activated on every profile of every user. Each user can then choose to disable it (or re-enable it) by clicking on the "Advanced filtering options" link in its notification center.
In this version, only one default filter is provided (called "System Filter") and allows each user to hide (or not) notifications coming from the system user of XWiki.
Notifications Preferences
It is now possible to enable or disable all the notifications sent by an application.
Improvements when viewing a document version
When viewing a document revision (other than the last one), we're now showing the version information in the "last modified" section. Also, the "More actions" options are now displayed and the "view source" option will work on the currently displayed revision (instead of working on the latest version). Read more about document versioning in the documentation.
Display extension id
The extension id is now also displayed in the Dependencies section of the Repository Application.
Clickable versions in the changes view
When viewing the changes introduced between 2 document versions (diff), the compared versions are now clickable so that the document can be viewed at those specific revisions.
Deprecated and Internal Macros Hidden by Default
When inserting a macro, the WYSIWYG Editor (CKEditor) is now hiding the deprecated and internal macros from the "All Macros" category that is selected by default. In order to insert a deprecated or internal macro you need to explicitly select the corresponding category from the list. The following macros have been moved to the Deprecated category: Spaces, SpacesIndex and Workspaces.
Miscellaneous
The old WYSIWYG editor based on Google WebToolkit has been removed: In XWiki 8.2RC1 we made CKEditor the default WYSIWYG editor but the users could still use the old Google WebToolkit (GWT) editor by enabling it in the wiki administration. Starting with this version the old WYSIWYG editor is no longer available. CKEditor remains the only WYSIWYG editor option available in XWiki by default.
CKEditor Upgrade: The CKEditor has been upgraded from version 4.6.2 to 4.7.2. This brings a lot of bug fixes and some improvements:
- select and manipulate arbitrary rectangular table fragments (a few cells, a row or a column)
- paste from Microsoft Excel
- improved paste from Word
- new color picker
See the CKEditor release notes for more information.
Macro List in Syntax Help: The Syntax Help page now displays the list of all the macros available in your wiki. This was previously covered by the XWiki.WikiMacros page which has now been removed.
Layout Macro Category: A new Layout Macro category was added and the following macros were moved to it: Dashboard, Container and Gallery.
For Admins
Extension Manager improvements: Extensions installed as dependencies but which don't have any backward dependencies anymore are now taken into account by the upgrade job.
Active Installs now sends java specification version: The Active Installs now sends the java specification version in its pings to extension.xwiki.org.
See the documentation of the active installs for more informations.
For Developers
Syntax highlighting by default in the wiki editor
The Syntax Highlighting Application is now bundled and enabled by default.
Jobs REST API improvements
Fail job started with async=false now return an error code 500. A serialized error message with complete stack trace is also provided in the Job status.
Miscellaneous
Refactored notifications module: For this release, we refactored the xwiki-platform-notifications modules by splitting it into multiple submodules. Some young APIs have been moved to sub packages.
See XWIKI-14575.
Script Service API to get Macro descriptors: Example of usage: #set ($macroDescriptors = $services.rendering.getMacroDescriptors('xwiki/2.1'). Returns a List<MacroDescriptor>. More information in the Rendering Script Service documentation.
Moved Modules
- The Google WebToolkit (GWT) modules have been retired to the xwiki-contrib GitHub repository and they are no longer bundled in XWiki.
- The old Google WebToolkit based WYSIWYG content editor has been retired to the xwiki-contrib GitHub repository and it is no longer bundled with XWiki.
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.31
- JavaMail 1.6.0
- Apache PDFBox 2.0.7
- Jackson 2.9.0
- Plexus Utils 3.1.0
- JGroups 4.0.5
- Jetty 9.4.6.v20170531
- CKEditor Integration 1.16
- Help Center Application 1.2
Translations
The following translations have been updated:
- French
- Catalan
- Czech
- Danish
- German
- Galician
- Italian
- Latvian
- Dutch
- Polish
- Portuguese
- Romanian
- Russian
- Slovak
- Swedish
- Turkish
- Vietnamese
- Simplified Chinese
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 61 | Jira Tickets Marked as Fixed in the Release Notes + New and Noteworthy Features | |
Mozilla Firefox 55 | Not Tested | |
Internet Explorer 10 | 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 | Jira Tickets Marked as Fixed in the Release Notes + New and Noteworthy Features | |
PostgreSQL | Not 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.
Issues specific to XWiki 9.7
- The Attachment Index doesn't obey the $blacklistedSpaces Velocity variable any more. It uses the hidden page query filter instead, so it follows the "Show hidden pages" settings from the user profile.
API Breakages
The following APIs were modified since XWiki 9.6:
- Not a breackage in the context of REST
- Violation type:java.annotation.attributeValueChanged
- Code:## Old:
class org.xwiki.extension.repository.xwiki.model.jaxb.ExtensionDependency
## New:
class org.xwiki.extension.repository.xwiki.model.jaxb.ExtensionDependency
- Violation type:
- Young API. Anything important for the job request should be Serializable
- Violation type:java.field.serialVersionUIDUnchanged
- Code:## Old:
field org.xwiki.extension.job.AbstractExtensionRequest.serialVersionUID
## New:
field org.xwiki.extension.job.AbstractExtensionRequest.serialVersionUID
- Violation type:
- Young API
- Violation type:java.method.removed
- Code:## Old:
method java.util.List<org.xwiki.eventstream.RecordableEventDescriptor> org.xwiki.eventstream.RecordableEventDescriptorManager::getAllRecordableEventDescriptors() throws org.xwiki.eventstream.EventStreamException
- Violation type:
- Young API
- Violation type:java.method.removed
- Code:## Old:
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.eventstream.RecordableEventDescriptor> org.xwiki.eventstream.RecordableEventDescriptorManager::getRecordableEventDescriptors(boolean) throws org.xwiki.eventstream.EventStreamException
- Violation type:
- Young API
- Violation type:java.method.removed
- Code:## Old:
method java.util.List<org.xwiki.eventstream.RecordableEventDescriptor> org.xwiki.eventstream.script.EventStreamScriptService::getAllRecordableEventDescriptors() throws org.xwiki.eventstream.EventStreamException
- Violation type:
- Young API
- Violation type:java.method.addedToInterface
- Code:## Old:
null
## New:
method int org.xwiki.notifications.NotificationConfiguration::liveNotificationsGraceTime()
- Violation type:
- Young API
- Violation type:java.method.parameterTypeChanged
- Code:## Old:
parameter void org.xwiki.notifications.NotificationPreference::<init>(java.lang.String, ===java.lang.String===, boolean)
## New:
parameter void org.xwiki.notifications.NotificationPreference::<init>(java.lang.String, ===boolean===, org.xwiki.notifications.NotificationFormat)
- Violation type:
- Young API
- Violation type:java.method.parameterTypeChanged
- Code:## Old:
parameter void org.xwiki.notifications.NotificationPreference::<init>(java.lang.String, java.lang.String, ===boolean===)
## New:
parameter void org.xwiki.notifications.NotificationPreference::<init>(java.lang.String, boolean, ===org.xwiki.notifications.NotificationFormat===)
- Violation type:
- Young API
- Violation type:java.method.parameterTypeChanged
- Code:## Old:
parameter void org.xwiki.notifications.NotificationPreference::<init>(java.lang.String, ===java.lang.String===, boolean, org.xwiki.notifications.NotificationFormat)
## New:
parameter void org.xwiki.notifications.NotificationPreference::<init>(java.lang.String, ===boolean===, org.xwiki.notifications.NotificationFormat, java.util.Date)
- Violation type:
- Young API
- Violation type:java.method.parameterTypeChanged
- Code:## Old:
parameter void org.xwiki.notifications.NotificationPreference::<init>(java.lang.String, java.lang.String, ===boolean===, org.xwiki.notifications.NotificationFormat)
## New:
parameter void org.xwiki.notifications.NotificationPreference::<init>(java.lang.String, boolean, ===org.xwiki.notifications.NotificationFormat===, java.util.Date)
- Violation type:
- Young API
- Violation type:java.method.parameterTypeChanged
- Code:## Old:
parameter void org.xwiki.notifications.NotificationPreference::<init>(java.lang.String, java.lang.String, boolean, ===org.xwiki.notifications.NotificationFormat===)
## New:
parameter void org.xwiki.notifications.NotificationPreference::<init>(java.lang.String, boolean, org.xwiki.notifications.NotificationFormat, ===java.util.Date===)
- Violation type:
- Young API
- Violation type:java.method.removed
- Code:## Old:
method java.lang.String org.xwiki.notifications.NotificationPreference::getApplicationId()
- Violation type:
- Young API
- Violation type:java.method.numberOfParametersChanged
- Code:## Old:
method java.util.Map<java.lang.String, java.lang.Object> org.xwiki.notifications.NotificationFilter::queryFilterParams(org.xwiki.model.reference.DocumentReference, org.xwiki.notifications.NotificationFormat)
## New:
method java.util.Map<java.lang.String, java.lang.Object> org.xwiki.notifications.NotificationFilter::queryFilterParams(org.xwiki.model.reference.DocumentReference, org.xwiki.notifications.NotificationFormat, java.util.List<java.lang.String>)
- Violation type:
- Young API, moved to org.xwiki.notifications.notifiers.NotificationDisplayer
- Violation type:java.class.removed
- Code:## Old:
interface org.xwiki.notifications.NotificationDisplayer
- Violation type:
- Young API, moved to org.xwiki.notifications.filters.NotificationFilter
- Violation type:java.class.removed
- Code:## Old:
interface org.xwiki.notifications.NotificationFilter
- Violation type:
- Young API, moved to org.xwiki.notifications.sources.NotificationManager
- Violation type:java.class.removed
- Code:## Old:
interface org.xwiki.notifications.NotificationManager
- Violation type:
- Young API, moved to org.xwiki.notifications.preferences.NotificationPreference
- Violation type:java.class.removed
- Code:## Old:
class org.xwiki.notifications.NotificationPreference
- Violation type:
- Young API, moved to org.xwiki.notifications.notifiers.NotificationRenderer
- Violation type:java.class.removed
- Code:## Old:
interface org.xwiki.notifications.NotificationRenderer
- Violation type:
- Young API, moved to org.xwiki.notifications.notifiers.email.NotificationEmailInterval
- Violation type:java.class.removed
- Code:## Old:
enum org.xwiki.notifications.email.NotificationEmailInterval
- Violation type:
- Young API, moved to org.xwiki.notifications.notifiers.email.NotificationEmailRenderer
- Violation type:java.class.removed
- Code:## Old:
interface org.xwiki.notifications.email.NotificationEmailRenderer
- Violation type:
- Young API, moved to org.xwiki.notifications.notifiers.rss.NotificationRSSRenderer
- Violation type:java.class.removed
- Code:## Old:
interface org.xwiki.notifications.rss.NotificationRSSRenderer
- Violation type:
- Young API, moved to org.xwiki.notifications.notifiers.rss.NotificationRSSManager
- Violation type:java.class.removed
- Code:## Old:
interface org.xwiki.notifications.rss.NotificationRSSManager
- Violation type:
- Young API, moved to org.xwiki.notifications.script.NotificationScriptService
- Violation type:java.class.removed
- Code:## Old:
class org.xwiki.notifications.script.NotificationScriptService
- Violation type:
- Caused by the move to JavaMail 1.6.0 which introduced generics in APIs
- Violation type:java.method.returnTypeTypeParametersChanged
- Code:## Old:
method java.util.Enumeration javax.mail.internet.MimeMessage::getAllHeaderLines() throws javax.mail.MessagingException @ org.xwiki.mail.ExtendedMimeMessage
## New:
method java.util.Enumeration<java.lang.String> javax.mail.internet.MimeMessage::getAllHeaderLines() throws javax.mail.MessagingException @ org.xwiki.mail.ExtendedMimeMessage
- Violation type:
- Caused by the move to JavaMail 1.6.0 which introduced generics in APIs
- Violation type:java.method.returnTypeTypeParametersChanged
- Code:## Old:
method java.util.Enumeration javax.mail.internet.MimeMessage::getAllHeaders() throws javax.mail.MessagingException @ org.xwiki.mail.ExtendedMimeMessage
## New:
method java.util.Enumeration<javax.mail.Header> javax.mail.internet.MimeMessage::getAllHeaders() throws javax.mail.MessagingException @ org.xwiki.mail.ExtendedMimeMessage
- Violation type:
- Caused by the move to JavaMail 1.6.0 which introduced generics in APIs
- Violation type:java.method.returnTypeTypeParametersChanged
- Code:## Old:
method java.util.Enumeration javax.mail.internet.MimeMessage::getMatchingHeaderLines(java.lang.String[]) throws javax.mail.MessagingException @ org.xwiki.mail.ExtendedMimeMessage
## New:
method java.util.Enumeration<java.lang.String> javax.mail.internet.MimeMessage::getMatchingHeaderLines(java.lang.String[]) throws javax.mail.MessagingException @ org.xwiki.mail.ExtendedMimeMessage
- Violation type:
- Caused by the move to JavaMail 1.6.0 which introduced generics in APIs
- Violation type:java.method.returnTypeTypeParametersChanged
- Code:## Old:
method java.util.Enumeration javax.mail.internet.MimeMessage::getMatchingHeaders(java.lang.String[]) throws javax.mail.MessagingException @ org.xwiki.mail.ExtendedMimeMessage
## New:
method java.util.Enumeration<javax.mail.Header> javax.mail.internet.MimeMessage::getMatchingHeaders(java.lang.String[]) throws javax.mail.MessagingException @ org.xwiki.mail.ExtendedMimeMessage
- Violation type:
- Caused by the move to JavaMail 1.6.0 which introduced generics in APIs
- Violation type:java.method.returnTypeTypeParametersChanged
- Code:## Old:
method java.util.Enumeration javax.mail.internet.MimeMessage::getNonMatchingHeaderLines(java.lang.String[]) throws javax.mail.MessagingException @ org.xwiki.mail.ExtendedMimeMessage
## New:
method java.util.Enumeration<java.lang.String> javax.mail.internet.MimeMessage::getNonMatchingHeaderLines(java.lang.String[]) throws javax.mail.MessagingException @ org.xwiki.mail.ExtendedMimeMessage
- Violation type:
- Caused by the move to JavaMail 1.6.0 which introduced generics in APIs
- Violation type:java.method.returnTypeTypeParametersChanged
- Code:## Old:
method java.util.Enumeration javax.mail.internet.MimeMessage::getNonMatchingHeaders(java.lang.String[]) throws javax.mail.MessagingException @ org.xwiki.mail.ExtendedMimeMessage
## New:
method java.util.Enumeration<javax.mail.Header> javax.mail.internet.MimeMessage::getNonMatchingHeaders(java.lang.String[]) throws javax.mail.MessagingException @ org.xwiki.mail.ExtendedMimeMessage
- Violation type:
- Not a breakage
- Violation type:java.annotation.attributeValueChanged
- Code:## Old:
class org.xwiki.rest.model.jaxb.JobStatus
## New:
class org.xwiki.rest.model.jaxb.JobStatus
- Violation type:
Credits
The following people have contributed code to this release (sorted alphabetically):
- Alexandra Ifrim
- Clément Aubin
- Ecaterina Moraru (Valica)
- Eduard Moraru
- Guillaume Delhumeau
- Marius Dumitru Florea
- Pierre Bondoerffer
- Sergiu Dumitriu
- Subbu Dantu
- Thomas Mortagne
- Vincent Massol