Release Notes for XWiki 14.0-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.
This is the first release of 14.x cycle which introduces the drop of Java 8: XWiki now requires Java 11 to work. As part of this cycle we're also dropping support of Internet Explorer 11. This release includes new work to allow refactoring of attachments, a few new UI extension points for developpers and better explanatory messages when macro are missing, among other improvments.
New and Noteworthy (since XWiki 13.10.2)
Full list of issues fixed and Dashboard for XWiki 14.0.
For Users
Attachment Move
A new button is now available in the attachments pane, allowing to move or rename an attachment. It is possible to change the name or the location of the attachments. Optionally, a redirection action is proposed, allowing to automatically redirect requests to the old location of an attachment to the new one.
For Admins
Suggestions for missing macros
When a macro does not exist, you get an error in the page where it's used. If that macro exists in an available extension and you're an Admin user, you will get a link to this extension to install it using the Extension Manager, right in the error message description.
Miscellaneous
Less strict code verification in the reset password system: We allow to relax a bit the reset password email link security mechanism to avoid it being revoked at first access, in order to avoid issues with software that checks email links. This mechanism can be used by changing a property in xwiki.properties:
#-# [Since 13.10.1]
#-# [Since 14.0RC1]
#-# Define the lifetime of the token used for resetting passwords in minutes. Note that this value is only used after
#-# first access.
#-# Default value is 0 meaning that the token is immediately revoked when first accessed.
#-# Use a different value if the reset password email link might be accessed several times (e.g. in case of using an
#-# email link verification system): in such case the user will have the defined lifetime to use again the email link.
#-#
#-# The default is:
# security.authentication.resetPasswordTokenLifetime = 0
For Developers
Rendering error reporting improvements
All rendering error (missing macro, etc.) used to be hardcoded. It's now translatable and customization thanks to various extension points. See Rendering Error Reporting for more details about this new system.
UI Extension improvements
- New uiextension and uiextensions macros have been introduced to ease the creation of extension points and display of insertion UI extensions in general in a wiki content.
- UI extensions now support inline execution. UI extension API used to only allow standalone content, but it's now possible to tell them that they should produce content to insert inline.
- The default UIExtensionManager component now also check if a specific UIExtensionManager exist for the given extension point identifier.
See UIExtension Module for more about UI extensions.
Extension points for document information
New extension points in the document information panel and the information docextra allow to add extra settings or information that is directly related to a document's content and should thus be easily accessible together with the document in view or edit mode.
Miscellaneous
HTML cleaner supports HTML5: The HTML cleaner in the XML Module now supports cleaning HTML 5 into XHTML 5 when setting the HTML version parameter.
In-place editing supports creating objects: The in-place editor for object properties now also supports creating objects by specifying data-object-policy="updateOrCreate" in the <dt>-tag. The also-introduced velocity macro #createObjectAndPropertyIfMissing allows to (temporarily) add an object and a property to the current document using a reference to the property like "Some.UsefulClass[5].status" which is useful for displaying the default value of the property when the object doesn't exist in the document. This can be used to introduce new properties in a docextra tab, see this example.
Add original metadata author to XWikiDocument: A new concept of author has been introduced and the way authors are managed in XWikiDocument have been refactored to rely on a unique interface DocumentAuthors.
We now distinguish 4 different kind of authors information:
- the creator: there's no ambiguity it's the user who created the document
- the content author: it's the author who performed a change in the content of the document, by opposition with changing a metadata of the document such as an xobject, or an attachment. We distinguish it for security reason since the content of the document might contain scripts that are executed when viewing the document
- the effective metadata author: it's the author which has been used to save any change in the document, content or not. So changing the content of the document will update both this author, and the content author. However, updating an attachment of a document will only update this author, not the content author.
- the original metadata author: it's finally the author you see displayed in the interface, it's most of the time the same as the effective metadata author but in some usecases it might be different. For example when a script wants to allow a user to perform a save without changing the effective author for security reasons, but wants to display the author who actually triggers the save.
Only the original metadata author has been introduced in this release, but all authors have been renamed and now relies on UserReference.
Inline template execution: It's now possible to execute a template inline. There was nothing previously in the TemplateManager to indicate that the template was meant to be inserted in an inline content, and it was not really working properly for the template macro. See Template Module for more details on how to use the TemplateManager.
It is now possible to provide new redirection strategies: The RedirectionFilter role allows developers to define domain specific redirection logic.
Upgrades
The following runtime dependencies have been upgraded (they have a different release cycle than XWiki Commons, XWiki Rendering and XWiki Platform):
- jasmine-maven-plugin 3.0-beta-02 (xwiki-platform-livedata-webjar only)
- frontend-maven-plugin 1.12.0
- less 4.1.2 (xwiki-platform-livedata-webjar only)
- eslint-plugin-vue 7.20.0
- @vue/test-utils 1.3.0
- @vue/cli-plugin-unit-jest 4.5.15
- @vue/cli-plugin-eslint 4.5.15
- @vue/cli-plugin-babel 4.5.15
- @testing-library/jest-dom 5.16.1
- @babel/eslint-parser 7.16.5
- vue-tippy 4.13.0
- log4j API 2.17.0
- log4j API 2.17.1
- Logback 1.2.10
- CKEditor Integration 1.58
- CKEditor 4.17.1
- H2 MVStore 2.1.210
- Maven 3.8.4
- JNR POSIX 3.1.12
- Snakeyaml 1.30
- Infinispan 13.0.5.Final
- Apache PDFBox 2.0.25
- Jackson 2.13.1
- httpasyncclient 4.1.5
- Liquibase 4.6.2
- Doxia 1.11.1
- Checker Qual 3.20.0
- HTTP Core 4.4.15
- Bouncy Castle 1.70
- Plexus Containers 2.1.1
- Hibernate Validator 6.2.1.Final
- Tika 2.2.1
- Rome 1.18.0
- JavaCC 7.0.10
- Closure Compiler v20220104
- Checker Qual 3.21.1
- JNR POSIX 3.1.15
- JNR FFI 2.2.11
- JFFI 1.3.9
- JBoss Logging 3.4.3
- Protobuf Java 3.19.3
- Liquibase 4.7.0
- SLF4J 1.7.33
- Byte Buddy 1.12.7
- Woodstox 6.2.8
- Netty 4.1.73.Final
- jdom 2.0.6.1
- MySQL connector 8.0.28
- Hibernate 5.6.4
- Java Diff Utils (migrated from com.googlecode.java-diff-utils:diffutils:1.3.0 to io.github.java-diff-utils:java-diff-utils:4.11)
- Bootstrap Date Time Picker 4.17.49
- Bootstrap Switch 3.3.4
- Bootstrap Date Range Picker 3.1
- Bootstrap Select 1.13.18
- Drawer 3.2.2
- iscroll 5.2.0
- selectize.js 0.13.3
- momentjs 2.29.1
- jstree 3.3.12
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 | Tested on: | |
---|---|---|
Google Chrome 97 | Not Tested | |
Mozilla Firefox 96 | ||
Microsoft Edge 97 | Jira Tickets Marked as Fixed in the Release Notes | |
Safari 15 | Not Tested |
Here is the list of databases we support and how they have been tested for this release:
Database | Tested on: | |
---|---|---|
HyperSQL 2.5.2 | Not Tested | |
MariaDB 10.6 | Not Tested | |
PostgreSQL 14 | Not Tested | |
MySQL 8 | Jira Tickets Marked as Fixed in the Release Notes | |
Oracle 19c | Not Tested |
Here is the list of Servlet Containers we support and how they have been tested for this release:
Servlet Container | Tested on: | |
---|---|---|
Tomcat 9.0.58 | Jira Tickets Marked as Fixed in the Release Notes | |
Jetty 10.0.7 (XWiki Standalone packaging) | Not Tested | |
Jetty 10.0.7 | Not Tested |
Known issues
Backward Compatibility and Migration Notes
General Notes
- When upgrading make sure you compare and merge the following XWiki configuration files since some parameters may have been modified, removed or added:
- xwiki.cfg
- xwiki.properties
- web.xml
- hibernate.cfg.xml
- Add xwiki.store.migration=1 in xwiki.cfg so that XWiki will attempt to automatically migrate your current database to any new schema. Make sure you backup your Database before doing anything.
Issues specific to XWiki 14.0-rc-1
Drop support of Java 8
XWiki now requires Java 11 to run.
Drop support of Internet Explorer 11
Internet Explorer 11 support has been dropped: we removed most of the hacks that were required by IE11 which makes this new version of XWiki unusable with this old web browser. Check the Browser Support Strategy documentation to see the list of supported web browsers.
Mentions
A local database is stored in the permanent directories and stores the updated document that needs to be analyzed for new mentions. This database is based on H2 MVStore. When upgrading to 14.0RC1+ the file format of H2 MVStore changes and the old one becomes unsupported. The old database file is moved to a backup file, and a new one is created.
API Breakages
The following APIs were modified since XWiki 13.10:
Unknown Criticality
These violationq are missing a criticality and need to be fixed.
- Migration not needed anymore.
- Violation type:java.class.removed
- Code:## Old:
class com.xpn.xwiki.store.migration.hibernate.R130200001XWIKI18429DataMigration
- Violation type:
- Migration not needed anymore.
- Violation type:java.class.noLongerInheritsFromClass
- Code:## Old:
class com.xpn.xwiki.store.migration.hibernate.R130407000XWIKI19207DataMigration
## New:
class com.xpn.xwiki.store.migration.hibernate.R130407000XWIKI19207DataMigration
- Violation type:
- Migration not needed anymore.
- Violation type:java.class.nonFinalClassInheritsFromNewClass
- Code:## Old:
class com.xpn.xwiki.store.migration.hibernate.R130407000XWIKI19207DataMigration
## New:
class com.xpn.xwiki.store.migration.hibernate.R130407000XWIKI19207DataMigration
- Violation type:
- Not a breaking change, but moved to legacy.
- Violation type:java.field.removed
- Code:## Old:
field com.xpn.xwiki.web.XWikiAction.handleRedirectObject @ com.xpn.xwiki.web.JsxAction
- Violation type:
- Not a breaking change, but moved to legacy.
- Violation type:java.method.removed
- Code:## Old:
method boolean com.xpn.xwiki.web.XWikiAction::handleRedirectObject(com.xpn.xwiki.XWikiContext) throws com.xpn.xwiki.XWikiException @ com.xpn.xwiki.web.JsxAction
- Violation type:
- Not a breaking change, but moved to legacy.
- Violation type:java.field.removed
- Code:## Old:
field com.xpn.xwiki.web.XWikiAction.handleRedirectObject @ com.xpn.xwiki.web.SsxAction
- Violation type:
- Not a breaking change, but moved to legacy.
- Violation type:java.method.removed
- Code:## Old:
method boolean com.xpn.xwiki.web.XWikiAction::handleRedirectObject(com.xpn.xwiki.XWikiContext) throws com.xpn.xwiki.XWikiException @ com.xpn.xwiki.web.SsxAction
- Violation type:
- Not a breaking change, but moved to legacy.
- Violation type:java.field.removed
- Code:## Old:
field com.xpn.xwiki.web.XWikiAction.handleRedirectObject @ com.xpn.xwiki.web.sx.AbstractSxAction
- Violation type:
- Not a breaking change, but moved to legacy.
- Violation type:java.method.removed
- Code:## Old:
method boolean com.xpn.xwiki.web.XWikiAction::handleRedirectObject(com.xpn.xwiki.XWikiContext) throws com.xpn.xwiki.XWikiException @ com.xpn.xwiki.web.sx.AbstractSxAction
- Violation type:
- Not a breaking change, but moved to legacy.
- Violation type:java.field.removed
- Code:## Old:
field com.xpn.xwiki.web.XWikiAction.handleRedirectObject @ com.xpn.xwiki.plugin.charts.actions.ChartingAction
- Violation type:
- Not a breaking change, but moved to legacy.
- Violation type:java.method.removed
- Code:## Old:
method boolean com.xpn.xwiki.web.XWikiAction::handleRedirectObject(com.xpn.xwiki.XWikiContext) throws com.xpn.xwiki.XWikiException @ com.xpn.xwiki.plugin.charts.actions.ChartingAction
- Violation type:
- Not a breaking change, but moved to legacy.
- Violation type:java.field.removed
- Code:## Old:
field com.xpn.xwiki.web.XWikiAction.handleRedirectObject @ com.xpn.xwiki.web.DotAction
- Violation type:
- Not a breaking change, but moved to legacy.
- Violation type:java.method.removed
- Code:## Old:
method boolean com.xpn.xwiki.web.XWikiAction::handleRedirectObject(com.xpn.xwiki.XWikiContext) throws com.xpn.xwiki.XWikiException @ com.xpn.xwiki.web.DotAction
- Violation type:
Credits
The following people have contributed code and translations to this release (sorted alphabetically):
Alex Cotiugă
Anca Luca
Andreea Chirica
Clemens Klein-Robbenhaar
Clemens Robbenhaar
Ecaterina Moraru (Valica)
Eduard Moraru
Guillaume Delhumeau
Jascha Kirchhoff
Jerome Prinet
Manuel Leduc
Marius Dumitru Florea
Michael Hamann
Simon Urli
Simpel
Thomas Mortagne
Vincent Massol
Vyom Yadav
xrichard