Release Notes for XWiki 7.3

Last modified by Thomas Mortagne on 2023/10/13

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 is a stabilisation release focusing on the Nested Pages feature which was introduced in XWiki 7.2.
Lots of polishing has been done for the Nested Pages feature integration, targeting the consequences on the UI redesign and the changes at applications level. The release includes a couple of bug fixes, a few dependency upgrades and new UI extension points available for extension developers.

The following blocking issues were found after this version was released. You should verify if you're using the affected features and if so, you can click on them to see in which version they are fixed:

In addition, after XWiki 7.3 was released, we've noticed that when using the EXE distribution on Windows, XWiki fails to start when it's installed in the Program Files directory (or any read-only directory). This is now fixed in future XWiki versions but if you don't want to upgrade you can follow this workaround. Also note that some invalid characters appear at the beginning of start_xwiki.bat but they don't prevent the script from executing properly.

New and Noteworthy (since XWiki 7.2)

Full list of issues fixed and Dashboard for 7.3.

Flamingo

Navigation bar

The user's avatar is now displayed between the search icon and the drawer icon:

avatar.png

Also, the search bar at the top of the screen has been improved a bit. When the user clicks on the search button, the search bar is opened and gets the focus. Then, when the users clicks in some other place, the search bar is closed, slowly.

  • Closed:

      search-closed.png

  • Open:

      search.png

Menus

The "More Options" menu has been split and a new "Page Administration" menu has been introduced:

Delete

  • The delele UI now uses the 'title' and 'location' columns to list the children that may be affected by the delete action:

      deleteUI.png

Drawer

  • In the Drawer (top right menu), the pages for which the user doesn't have permissions to access are not displayed anymore.

Breadcrumb

When the hierarchy of a Nested Pages is long, we do not display it entirely any more. Instead, we display a limited version, that the user can expand by clicking on the "ellipsis" character ('...'):

  • limited:

      breadcrumb-limited.png

  • full:

      breadcrumb-full.png

Note that this behavior have also been added to all hierarchy breadcrumbs, including location of search results, etc...

  breadcrumb-search-results.png

The breadcrumb has now support for tree navigation. Each breadcrumb element has a drop down tree that shows the siblings and the children, helping you navigate easily around the wiki.

breadcrumbsTreeNavigation.png

The breadcrumb tree navigation doesn't show the document translations any more when multilingual is disabled, because navigating to a document translation when multilingual is off doesn't have any effect: the default translation is displayed instead. You can still see the translations in the Page Index Tree though.

Flamingo Theme Editor

The Flamingo Theme Application now handles the @lessCode field. It means that you can add any code, written with LESS, to your theme and see the result live!

LESSCode.png

Breaking Change

Since this version, if you set a variable both in the @lessCode field and in the standard fields, the final value will be taken from the standard field, and not from the @lessCode anymore.

Page Index

Since we have introduced the concept of Nested Spaces we needed to replace the Space column in the LiveTable with a more generic solution. Thus, the Index Application has now merged the previous Page + Space columns into a single Location column and we've introduced a new Title column but which now displays the title of pages, as can be seen on the following screenshot:

livetable-location.png

The same strategy is implemented for the children and the siblings viewers.

Note that you can filter at several path levels in the Location column. For example:

location-filter.png

XWiki currently doesn't support filtering on Page titles which is why the new Title column doesn't allow filtering. However since the Location column includes the full path, users can still search on Page names.

At a technical level the displaying of page titles was needed because all non-terminal pages names are called WebHome and displaying that would not be user-friendly.

New Panels

  • A Children Panel has been added to display the list of Children pages of the current Page.

    children.png

  • A Siblings Panel has been added to display the list of Sibling pages of the current Page.

    siblings.png

  • The SpaceDocs Panel has been deprecated and the Children Panel or Siblings Panel should be used instead. A warning message has been added (visible only to Admins) to explain this:

    spacedocs-warning.png

App Within Minutes

Up until this version, the applications created with App Within Minutes were always located in a top level space. For instance, if you wanted to create a "Meeting" application, the application data space was "Meeting". Starting with this version you can also create an application in a nested space. In the first step of the wizard you can select the location where you want the application to be created. In the following image I have create an application with path "Marius / Apps / Meeting".

appLocationPicker.png

The App Within Minutes wizard is now generating all the application pages in a single location, as nested pages. The code pages are grouped under the Code page and are marked as hidden (so your users don't see them by default). The application entries are created under the Data page. Backward compatibility is preserved so you should still be able to edit existing applications that don't have the new page organization.

appStructure.png

The application wizard has also been modified to support any characters in the application name. The only remaining requirement for the application name is to not be empty.

Office Importer

The Office Importer Application has been redesigned visually and now supports importing into Nested Spaces:

OfficeImporter

Template Providers Administration

The template provider UI has been adapted to Nested Pages and it now supports:

  • Creating template providers deeper than the first level (as it was restricted before), reusing the location picker widget
  • Setting allowed locations (i.e. spaces) using the tree widget

For more details, see the XWIKI-12275 issue and the documentation.

  • Template providers can now specify if they create terminal or non-terminal documents. See the documentation for more information.
  • The Template Type option ("type" class property) of a template provider was removed since it was not used from the start and any existing values have been migrated to use the new "terminal" property. See the documentation for more information on the "terminal" property.

XClass Application

The XClass Application has been modified to support classes defined in nested documents. The default class sheet has been improved to use the new location picker when creating a new class entry, and the list of existing entries is now displayed using a live table. The 'Data types' page has been improved to use the new location picker when creating a new class, and the list of existing classes (data types) is now displayed using a live table.

Miscellaneous

  • The Extension Diff view has been improved to display the page (translation) language both in the summary and the detail sections. The page name (heading) from the detail section is now a link to the local version of the page.

    extensionDiff.png

  • Added the Actions column for the FAQ Application:

    faqActions.png

  • Pages with Slovak and Brazilian Portuguese language are now indexed by Solr and thus they are included in the search results. See the Migration Notes below in case you are performing an upgrade and you want support for these languages.
  • Clicking on the Logo (top-left of the screen) will now take you to the page that you have configured as wiki homepage by using the "Wiki Administration > Wikis > Descriptor" section. See the related documentation section.
  • The template providers edition has been rewritten to be more consistent with other edit forms:

      template-provider-edit.png

  • Removed the 'Edit' button when editing a template provider document. See XWIKI-12675
  • The Invitation Application now has an entry point in the App Bar (only visible to Admins).
  • The Active Installs Client module had a bug leading to the sinceDays field not being set correctly (was almost always set to 0).
  • New xpage parameter: outputTitle. If true then also display the title in addition to the content. Defaults to false if not specified.
  • The XWiki Syntax help now no longer shows help for syntaxes that are not available in the wiki.
  • Added support for list properties in LDAP user synchronization

See the full list of JIRA issues fixed in this release.

For Developers

Extension Manager

Custom repositories

Extensions and dependencies can now provide custom repositories. For now only dependencies repositories are directly used when resolving it before trying registered repositories.

In practice it means that Maven custom repositories are now supported properly (at least to resolve artifacts dependencies). On Extension Manager side it means you get the same custom repositories duplicated in the Extension and in each ExtensionDependency.

Support also been added to Extension Repository API. It's also imported in XWiki based Extension Repository implementation but not yet exposed as REST resource.

Resolve dependencies in extension repository first

The extension repository is checked first when searching for extension dependencies.

Extensions Repository

  • New Extensions are now created in their own space by default (as the space home page). It will make it easier to organize documentation for large Extensions.
  • Custom Extension repositories are now sent by the Extension Repository REST service
  • Issue management information are now imported, displayed and exposed by the Extension Repository REST service

REST API

It's now possible to get a page with everything but attachment content. For this you can enable various part of the document using the following URL parameters:

  • objects: enable returning document objects
  • class: enable returning document class properties
  • attachments: enable returning document attachments

They are all disabled by default.

Page objects support has also been added to the Page PUT API.

REST supports hidden

You can now set and/or get information from the status hidden of a page with REST service.  For example, you may create a hidden page using the following file and the following request.

<page xmlns="http://www.xwiki.org">
 <title>Test of hidden</title>
 <hidden>true</hidden>
 <content/>
</page>
curl \
  --verbose \
  --user Admin:admin \
  --request PUT \
  --header "Content-type: application/xml" \
  --data-binary "@page.xml" \
  "http://localhost:8080/xwiki/rest/wikis/xwiki/spaces/SomeSpace/pages/SomePage"

And then check the status of this hidden status with a GET HTTP request

curl \
  --verbose \
  --user Admin:admin \
  --request GET \
  --header "Accept: application/xml" \
  "http://localhost:8080/xwiki/rest/wikis/xwiki/spaces/SomeSpace/pages/SomePage"

You may also use the application/x-www-form-urlencoded to set this hidden field.

curl \
  --verbose \
  --user Admin:admin \
  --request PUT \
  --header "Content-type: application/x-www-form-urlencoded" \
  --data "title=Test of hidden&hidden=true&content=" \
  "http://localhost:8080/xwiki/rest/wikis/xwiki/spaces/SomeSpace/pages/SomePage"

See The XWiki RESTful API for more details.

Flamingo

The Drawer menu, the content menus and the top menus are now implemented with UI extensions. The new Extension Points are:

 org.xwiki.plaftorm.drawerorg.xwiki.plaftorm.drawer.header org.xwiki.plaftorm.editactionsorg.xwiki.plaftorm.adminactionsorg.xwiki.plaftorm.moreoptions

drawer-with-languages.png

drawer-header.png

editactions.png

adminactions.png

moreoptions.png

 org.xwiki.platform.topmenu.leftorg.xwiki.platform.topmenu.right

TopMenuLeft.png

TopMenuRight.png

The extension point DrawerItem has now a parameter separator to add a line separator before the drawer item.

Miscellaneous

  • New getReference() API public scripting Element (Object, Class, etc.) to get the EntityReference of the element
  • New functional tests for the Office Importer Application have been added to xwiki-platform. To enable them, you need to enable the new profile office-tests.
  • For testing purpose, an environment variable XWIKI_OFFICE_HOME can bet set to configure where the Office server is installed on the system.
  • New Time Zone XProperty type to represent Time Zones.
  • The XAR plugin now verifies that Technical Pages are set as hidden and the Format Mojo sets them as hidden.
  • A new XAR Integration testing framework has been introduced. It can be used to write integration tests for wiki pages.
  • A displayTitle option has been added to the hierarchy macros. By default, it is set to true. When disabled, the names of the references are displayed in the breadcrumb, instead of the document titles.
  • The documentTree macro has been moved to its own module, under the Index application, so that it can be used as a dependency in other modules without pulling the entire Index application.
  • XAR plugin's Verify Mojo can now verify that defined pages have matching titles and now verifies titles of WebPreferences pages.
  • log4j 1.2.17 and commons-logging 1.2 are now identified as core extension by the Extension Manager (which prevents them being installed as dependencies)

Deprecated and Retired projects

Upgrades

The following dependencies have been upgraded:

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:

BrowserTest Result
Chrome30.pngGoogle Chrome 46Not Tested
Firefox30.pngMozilla Firefox 42Not 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.pngHyperSQL 2.3.3Not Tested
mysql.pngMySQL 5.7.8Jira Tickets Marked as Fixed in the Release Notes
oracle.pngOracle 11.2Not Tested
postgresql.pngPostgreSQL 9.3.10Not Tested

Performances tests compared to 6.4.6

Like in 7.2 there hasn't really been much performance work on this version which was dedicated to improvement on nested spaces support that was added in 7.2 so we get mostly the same results than in 7.2.

Summary

"similar": difference is lower than 10%
"slightly": difference is lower than 20%

Note that most of the speed related values are an average of very moving results, a lot of things is happening during a HTTP request and it's far from stable duration (that's why 10% may sounds a lot for something called "similar" but the variable can go up and down around 5% sometimes so 10% average is really not that much of a clear win). Dumbbench based tests are executed several times and the lowest result is selected. 

Speed

ActionsDifference
Jetty startupsimilar
First accessnot existing page without UIsimilar
not existing page with UIsimilar
Reloadnot existing page without UIsimilar
not existing page with UIsimilar
Main.WebHome with UI25% faster
Main.WebHome without UI45% faster
SOLRFull SOLR reindexslightly slower
SOLR sync when index is emptysimilar
SOLR sync when there is nothing to dosimilar
Result of search finding lots of results30% faster
Result of search finding one result20% faster
RenderingPage with 1000 macros without UI/25
Page with 1000 html macros without UI/5

Memory

ActionsDifference
Heap Memory after jetty startupsimilar
Heap Memory after full SOLR index+50MB

More details on performance comparison on single wiki between 7.3 and 6.4.6.

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 7.3

  • If you had modified the custom displayer for Time Zones in either XWiki.XWikiUsers or XWiki.XWikiPreferences then when upgrading to 7.3M1 your change will be removed. This is because we've introduced a Time Zone XProperty type which is replacing the String type used before for storing the Time Zones. If you wish to put back your change you can define a custom displayer on the new Time Zone XProperty in XWiki.XWikiUsers or XWiki.XWikiPreferences.
  • In order to add support for Slovak and Brazilian Portuguese languages to the Solr search we had to modify the Solr schema and unfortunately we don't have support for automatic Solr search index migration at this point. If you want to support these languages you have to delete the 'solr' folder from the configured permanent directory of your XWiki instance. The Solr index will be recreated automatically and the entire wiki/farm (including the pages in the Slovak and Brazilian Portuguese language) will be re-indexed after a server restart.
  • Old query plugin is not provided by default anymore. See https://github.com/xwiki-contrib/xwiki-platform-queryplugin.
  • The values of the removed template "type" property of TemplateProviderClass have been migrated to the new "terminal" property.

API Breakages

The following APIs were modified since XWiki 7.2:

  • Add support for custom repositories in extensions:
    org.xwiki.extension.Extension: Method 'public java.util.Collection getRepositories()' has been added to an interface
    org.xwiki.extension.ExtensionDependency: Method 'public java.util.Collection getRepositories()' has been added to an interface
  • New URL parameters:
    org.xwiki.rest.resources.pages.PageResource: In method 'public org.xwiki.rest.model.jaxb.Page getPage(java.lang.String, java.lang.String, java.lang.String, java.lang.Boolean)' the number of arguments has changed

Get Connected