Release Notes for XWiki 15.1-rc-1

Last modified by Ilie Andriuta on 2023/03/20

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 another release focused mainly on bugs and security fixes, but it also includes improvements on the WYSIWYG editor's image dialog and the PDF export. The developers might be interested by the new source parameter for the content and context macros.

New and Noteworthy (since XWiki 15.0)

Full list of issues fixed and Dashboard for 15.1.

For Users

Warning when the dimensions are larger than the selected image

 
A warning message is displayed to the user when the width or height of an image are larger than the dimensions of the selected image.

Miscellaneous

  • PDF Internal Links: The PDF export is now generating internal links as much as possible. By internal links we mean links that make the PDF viewer scroll the target content into view rather than opening it in a web browser. The following types of internal links are supported:

    • links to a fragment from the same page that is included in the PDF export (e.g. #HDescription)
    • links to a fragment from another page that is included in the PDF export (e.g. /xwiki/bin/view/Other/Page#HDescription)
    • links to another page that is included in the PDF export (e.g. /xwiki/bin/view/Other/Page)

    Internal links that use fragment identifiers are updated automatically, before printing the content to PDF, to target the corresponding global fragment identifier that is generated by the shared id generator used when rendering multiple pages for PDF export. In other words, having multiple sections with the same name in the PDF export shouldn't cause any problems because the links that target them are updated properly.

    Checkout the PDF Export Application documentation for more information.

  • The tabulator order in the page creation Location breadcrumb now matches the visuals, going from left to right as expected.

  • Limit parameter in tag cloud: The tag cloud macro supports a new parameter to limit the number of tags to the n most occurring tags.

  • The location picker breadcrumb icons now have a proper text alternative displayed on hover to assist in the understanding of their use.

  • Tags are hidden when there are none: When there aren't any tags assigned to a page, the text “Tags:” is no longer displayed at the bottom of the page unless the user has edit rights.

For Admins

  • The administration right buttons now have a proper text alternative. It can be displayed on hover.

For Developers

New source support for content and context macros

 
The content and context macros now have an alternative way to indicate the content to parse, which allows executing content coming from a script value. See Content Macro for more details.

Miscellaneous

  • Refactored tips panel extension point: The tips panel extension point has been refactored to be safer and easier to use. See the "Add Tip to Tips Panel" extension point for more details on how to define a tip in 15.1+. Note that any custom tip you may have will continue to work as is, but we encourage you to move the tip definitions from the UIXP parameter to the UIXP content as the old way is now deprecated and will be removed one day (and it's also safer to use the new way).

  • Velocity macro for sanitizing URLs: A new velocity macro has been provided to allow getting sanitized URLs from request parameters to be used in HTML.

  • What's New API: New experimental API to gather external news related to XWiki.

    Example to get news items from a xwikiblog source, for a given user, filtered by a category:

    @Inject
    @Named("xwikiblog")
    private NewsSourceFactory factory;

    @Inject
    @Named("xwikiblog")
    private NewsConfiguration configuration;

    ...
    List<NewsSourceDescriptor> descriptors = this.configuration.getNewsSourceDescriptors();
    NewsSourceDescriptor descriptor = descriptors.get(0);
    List<NewsSourceItem> items = this.factory.create(descriptor.getParameters())
     .forUser(...)
     .forCategories(...)
     .build()
    NewsContent content = items.get(0).getDescription().get();
    String itemDescription = content.getContent();
    Syntax itemSyntax = content.getSyntax();
    ...

Upgrades

The following runtime dependencies have been upgraded (they have a different release cycle than XWiki Commons, XWiki Rendering and XWiki Platform):

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:

 BrowserTested on:
Firefox30.pngMozilla Firefox 110Jira Tickets Marked as Fixed in the Release Notes
Chrome30.pngGoogle Chrome 110Tests run and results
Edge30.pngMicrosoft Edge 110Not Tested
Safari30.pngSafari 16Not Tested

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

 DatabaseTested on:
hypersql.pngHyperSQL 2.7.1Not Tested
mariadb.pngMariaDB 10.6Not Tested
mysql.pngMySQL 8Tests run and results
postgresql.pngPostgreSQL 15Jira Tickets Marked as Fixed in the Release Notes
oracle.pngOracle 19cNot Tested

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

 Servlet ContainerTested on:
tomcat-icon.pngTomcat 9.0.72
jetty-icon.pngJetty 10.0.12 (XWiki Standalone packaging)
jetty-icon.pngJetty 10.0.12Not 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 15.1-rc-1

Reinitialization of Solr search index during migration

A bug with the Solr search index has been fixed as part of this release, but it needs a reindex of the documents to be properly taken into account. The migration will empty the index so that a full reindex is performed: as a consequence the search feature might take a bit of time to be entirely working after the first restart depending on the number of documents in your wiki.

Delete right now implies View right

The Delete right now implies the View right: this means that starting with this version, if a user has the Delete right on a page, they're also implicitly gaining the View right on it.

API Breakages

The following APIs were modified since XWiki 15.0:

Unstable APIs

Not real backward compatibility breakages since they were done on APIs marked @Unstable (a.k.a Young APIs). Thus it's part of the contract that they can be broken until they become stable. They're listed purely for reference in case you decided to still use them (and thus agreed to be broken).

  • Young API. Refactored into a more generic version exposed by xwiki-rendering.
    • Violation type:
      java.method.returnTypeChanged
    • Code:
      ## Old:
      method org.xwiki.rendering.macro.code.source.CodeMacroSourceReference org.xwiki.rendering.macro.code.CodeMacroParameters::getSource()

      ## New:
      method org.xwiki.rendering.macro.source.MacroContentSourceReference org.xwiki.rendering.macro.code.CodeMacroParameters::getSource()
  • Young API. Refactored into a more generic version exposed by xwiki-rendering.
    • Violation type:
      java.method.parameterTypeChanged
    • Code:
      ## Old:
      parameter void org.xwiki.rendering.macro.code.CodeMacroParameters::setSource(===org.xwiki.rendering.macro.code.source.CodeMacroSourceReference===)

      ## New:
      parameter void org.xwiki.rendering.macro.code.CodeMacroParameters::setSource(===org.xwiki.rendering.macro.source.MacroContentSourceReference===)
  • Young API. Refactored into a more generic version exposed by xwiki-rendering.
    • Violation type:
      java.method.parameterTypeChanged
    • Code:
      ## Old:
      parameter void org.xwiki.rendering.macro.code.source.CodeMacroSource::<init>(===org.xwiki.rendering.macro.code.source.CodeMacroSourceReference===, java.lang.String, java.lang.String)

      ## New:
      parameter void org.xwiki.rendering.macro.code.source.CodeMacroSource::<init>(===org.xwiki.rendering.macro.source.MacroContentSourceReference===, java.lang.String, java.lang.String)
  • Young API. Refactored into a more generic version exposed by xwiki-rendering.
    • Violation type:
      java.method.returnTypeChanged
    • Code:
      ## Old:
      method org.xwiki.rendering.macro.code.source.CodeMacroSourceReference org.xwiki.rendering.macro.code.source.CodeMacroSource::getReference()

      ## New:
      method org.xwiki.rendering.macro.source.MacroContentSourceReference org.xwiki.rendering.macro.code.source.CodeMacroSource::getReference()
  • Young API. Refactored into a more generic version exposed by xwiki-rendering.
    • Violation type:
      java.method.parameterTypeChanged
    • Code:
      ## Old:
      parameter org.xwiki.rendering.macro.code.source.CodeMacroSource org.xwiki.rendering.macro.code.source.CodeMacroSourceFactory::getContent(===org.xwiki.rendering.macro.code.source.CodeMacroSourceReference===, org.xwiki.rendering.transformation.MacroTransformationContext) throws org.xwiki.rendering.macro.MacroExecutionException

      ## New:
      parameter org.xwiki.rendering.macro.code.source.CodeMacroSource org.xwiki.rendering.macro.code.source.CodeMacroSourceFactory::getContent(===org.xwiki.rendering.macro.source.MacroContentSourceReference===, org.xwiki.rendering.transformation.MacroTransformationContext) throws org.xwiki.rendering.macro.MacroExecutionException
  • Young API. Refactored into a more generic version exposed by xwiki-rendering.
    • Violation type:
      java.class.removed
    • Code:
      ## Old:
      class org.xwiki.rendering.macro.code.source.CodeMacroSourceReference
  • Young API. Refactored into a more generic version exposed by xwiki-rendering.
    • Violation type:
      java.class.removed
    • Code:
      ## Old:
      interface org.xwiki.rendering.macro.code.source.CodeMacroSourceReferenceConverter<T>
  • Removed unused method from unstable API.
    • Violation type:
      java.method.removed
    • Code:
      ## Old:
      method void org.xwiki.export.pdf.browser.BrowserTab::setBaseURL(java.net.URL) throws java.io.IOException

Credits

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

  • Abhay Kumar Gupta
  • Alex Cotiugă
  • Clément Desableau
  • Clemens Robbenhaar
  • Clément Aubin
  • Gankov Andrey
  • Kevin222004
  • Manuel Leduc
  • Marius Dumitru Florea
  • Michael Hamann
  • Nelson Osacky
  • Nikita Petrenko
  • Oana-Lavinia Florean
  • Rajat Khanduri
  • Sachin Shukla
  • Sereza7
  • Simon Urli
  • Simpel
  • Suguru Hirahara
  • Thomas Mortagne
  • Vincent Massol
  • vivek0719

Get Connected