Release notes for Magnolia CMS 6.3.1

LTS release • Delivered on November 8, 2024 • Page updated on December 10, 2024 • Changelog: 13181

Do not upgrade to this version of Magnolia. We strongly recommend you wait for the next release.

Reason

Assets can’t be loaded or served because of the upgrade to the commons-io library to version 2.17.0, where the AutoCloseInputStream constructor changed.

...
public AutoCloseInputStream(InputStream in) {
    super(ClosedInputStream.ifNull(in));
}
...
Workaround

Downgrade the commons-io library to version 2.16.1.

Until the Jackrabbit library is released as version 2.22.1 (BUILD-1297), the workaround is implemented in the upcoming Magnolia releases (BUILD-1299).

Magnolia CMS 6.3.1 is the first maintenance release in the 6.3 branch. This update focuses on improving search experience in apps, enhancing workflow, UX, and publishing actions, as well as on fixing bug and security issues.

This minor release introduces changes that aren’t backward-compatible. See the section on search improvements below.

We keep the details of security fixes private in line with our security policy. Contact our Support team if you need more information.

Announcements

Modules

  • CLI version 5, a plugin-based version, was released on October 16, 2024.

    Whether it’s FreeMarker or headless projects, version 5 simplifies project setup, automates tasks, and speeds up your workflow. In version 5, you can also create your own CLI plugins and framework prototypes.

    For more information, see Magnolia CLI.

Extensions

  • Live Copy 4.0.1 was released on October 16, 2024.

    For more information, see the 4.x changelog.

  • SSO 4.0.1 was released on October 18, 2024.

Improvements

Search experience

The search experience improvements introduce potentially breaking changes.

We continue to improve the Magnolia search experience by propagating in-app search to all apps. The $type: “filteringWorkbench” property on the workbench configuration, introduced in 6.3.0 for the Pages and Assets apps, is deprecated in 6.3.1 and later.

In 6.3.1 and later, in-app search and filter functionality becomes the default for all browser subapps as part of the standard workbench definition.

This change has the following impact on your browser subapps:

  • The search field is enabled by default in all apps. If your custom browser subapp doesn’t support search, disable the search field by setting the searchEnabled property to false.

  • If you don’t have workbench filters configured, the system:

    • Converts combobox fields used as filters in column headers into dropdown filters.

    • Converts all text fields into the default search field. For example, in the Pages app the Name (previously Page) and Title column fields become searchable using the default search field.

      Pages app conversion of column headers to search and filters

  • If you have workbench filters defined and an existing filterComponent definition in a column definition, the column filter remains as it is. No conversion is executed. Column filter and workbench filter definitions can be defined and used at the same time for the time being even though the filterComponent is deprecated.

  • Only one view type can be displayed in a browser subapp.

    The search field and filters are applied to the first view type configured in your app. The view type switcher disappears. If you want to change the view displayed, change the order of the view types defined in your .yaml config (or remove the view types you don’t want).

  • The Name column has changed: the titleColumn column type is replaced by componentColumn (info.magnolia.ui.contentapp.configuration.column.ComponentColumnDefinition) that supports two rows in the column. Therefore content type-based apps are automatically created with the componentColumn type.

    • No default or fallback icon is provided anymore for nodes.

    • The icon configuration has changed.

      Click to see examples of configuration updates for displaying icons in columns

      Example of a custom Events app events.yaml
             contentViews:
              tree:
                columns:
                  name:
      # new in 6.3.1+:
                    nodeTypeToComponents:
                      mgnl:folder:
                        icon: icon-folder
                        showPath: true
                      event:
                        icon: icon-datepicker
                        showPath: true
      #  6.2.x and 6.3.0:
                    #nodeTypeToIcon:
                      #event: icon-datepicker
      Example of the Marketing Tags app marketing-tags/apps/marketing-tags.yaml
      # new in 6.3.1+:
                columns:
                  name:
                    nodeTypeToComponents:
                      mgnl:marketing-tag:
                        icon: icon-tag
                        showPath: true
      
      # 6.2.x and 6.3.0:
                 #columns:
                   #name:
                    #nodeTypeToIcon:
                       #mgnl:marketing-tag: icon-tag
               #list:
                 #columns:
                   #name:
                     #nodeTypeToIcon:
                       #mgnl:marketing-tag: icon-tag
  • If you have customized browser subapps, you must adapt your configuration by updating your custom data provider for search to function.

    Below is an example (migration of the Resource Files app) of how to adapt your configuration.

    1. In the info.magnolia.resources.app.data.ResourceFilteringDataProvider class, the filtering logic is unwrapped.

      Click to see the link to a GitHub diff

    2. In the resources/resources-app/apps/resources.yaml definition, shown in the tabs, the filterComponent properties under contentViews are removed and replaced by filters under workbench.

      Click to see the tabs

      • 6.3 Resource Files app definition

      • 6.2 Resource Files app definition

      ...
          workbench:
            filters:
              - name: overridden
                icon: icon-logs-settings
                $type: dropdown
                visible: true
                datasource:
                  $type: optionListDatasource
                  options:
                    true:
                      value: true
                    false:
                      value: false
              - name: origin
                icon: icon-language-app
                $type: dropdown
                filterOperator: STARTS_WITH
                textInputAllowed: true
                emptySelectionAllowed: true
                visible: true
                datasource:
                  class: info.magnolia.resources.app.data.ResourceOriginDataSourceDefinition
              - name: status
                icon: icon-spinner-full
                $type: dropdown
                filterOperator: STARTS_WITH
                textInputAllowed: true
                emptySelectionAllowed: true
                visible: true
                datasource:
                  $type: optionListDatasource
                  options:
                    - name: 0
                      label: Not activated
                      value: 0
                    - name: 1
                      label: Modified
                      value: 1
                    - name: 2
                      label: Activated
                      value: 2
            contentViews:
              - name: views
                $type: treeView
                rowStyleGenerator: info.magnolia.resources.app.row.ResourceStatusRowStyleGenerator
                multiSelect: false
                columns:
                  name:
                    class: info.magnolia.resources.app.column.ResourceNameColumnDefinition
                  overridden:
                    class: info.magnolia.resources.app.column.IsOverridingColumnDefinition
                    editor:
                      field:
                        $type: checkBoxField
                  origin:
                    class: info.magnolia.resources.app.column.ResourceOriginColumnDefinition
                  type:
                    class: info.magnolia.resources.app.column.ResourceTypeColumnDefinition
                  status:
                    class: info.magnolia.resources.app.column.ResourceStatusColumnDefinition
      ...
      ...
          workbench:
            contentViews:
              - name: views
                $type: treeView
                rowStyleGenerator: info.magnolia.resources.app.row.ResourceStatusRowStyleGenerator
                multiSelect: false
                columns:
                  name:
                    class: info.magnolia.resources.app.column.ResourceNameColumnDefinition
                    filterComponent:
                      $type: textField
                  overridden:
                    class: info.magnolia.resources.app.column.IsOverridingColumnDefinition
                    editor:
                      field:
                        $type: checkBoxField
                    filterComponent:
                      $type: checkBoxField
                  origin:
                    class: info.magnolia.resources.app.column.ResourceOriginColumnDefinition
                    filterComponent:
                      $type: comboBoxField
                      emptySelectionAllowed: true
                      textInputAllowed: true
                      filteringMode: STARTSWITH
                      datasource:
                        class: info.magnolia.resources.app.data.ResourceOriginDataSourceDefinition
                  type:
                    class: info.magnolia.resources.app.column.ResourceTypeColumnDefinition
                    filterComponent:
                      $type: textField
                  status:
                    class: info.magnolia.resources.app.column.ResourceStatusColumnDefinition
                    filterComponent:
                      $type: comboBoxField
                      emptySelectionAllowed: true
                      datasource:
                        $type: optionListDatasource
                        options:
                          - name: 0
                            label: Not activated
                            value: 0
                          - name: 1
                            label: Modified
                            value: 1
                          - name: 2
                            label: Activated
                            value: 2
      ...
    3. Don’t forget to add the i18n properties for your filters.

      Click to see an example

      ...
      # filters
      resources.browser.filters.overridden.label = Overrides
      resources.browser.filters.overridden.options.true = True
      resources.browser.filters.overridden.options.false = False
      resources.browser.filters.origin.label = Origin
      resources.browser.filters.status.label = Status
      ...
Magnolia has adapted the customized Definitions, JCR Browser, Marketing Tags, and Resource Files apps to use the default configuration. The following 5UI-based apps remain unchanged: Campaign Publisher, Content Translation, Groovy, Configuration, and Passwords apps.
  • CFGUI-196 Migrate Definitions app to use updated search and filters

  • MGNLDAM-1561 Adjust Assets app to no longer use deprecated filteringWorkbench

  • MGNLRES-418 Migrate Resource Files app to use updated search and filters

  • MGNLUI-8963 Migrate content type apps to use updated search and filters

  • MGNLUI-9034 Migrate JCR content apps to use updated search and filters

  • MGNLTAGS-126 Migrate Marketing Tags app to use updated search and filters

  • PAGES-1657 Adjust Pages app to no longer use deprecated filteringWorkbench

Better workflow

This release continues to improve and homogenize the deletion workflow as part of our ongoing efforts to improve user experience.

  • MGNLWORKFLOW-505 In the four-eye workflow, rename the Delete permanently action label to Request permanent deletion

  • MGNLWORKFLOW-512 Unify in one step and improve the narrative of the deletion workflow

  • MGNLWORKFLOW-513 In the four-eye workflow, add a success notification popup after deletion requests

Default columns

The Assets app and External DAM apps now display additional default columns. These default columns also appear in the asset chooser dialog to provide more context to users when they’re selecting items. A search box is also available in the chooser dialog.

  • MGNLDAM-1517 Add default columns in the Assets app and asset chooser dialog

Other improvements

  • EEPUBLISH-73 Enhance logs with publishing UUID for tracking purposes

  • PUBLISHING-342 Add ability to detect and counter linkerD proxy connection failures

  • PUBLISHING-345 Enhance logs with content node UUID or publish UUID for tracking purposes

Bug fixes

  • MAGNOLIA-9468 Microprofile configuration not picked up

  • MAGNOLIA-9473 Audit log doesn’t log when a page template is changed

  • MGNLCACHE-383 Cache miss when using ServeUntilRecachedCachePolicy

  • MGNLCACHE-386 Cached redirects not working with redirect template

  • MGNLCACHE-392 Concurrent requests with the same cache key can block the cache

  • MGNLUI-8961 App with two browsers pointing to the same workspace holds onto selection state

  • PAGES-1653 JcrPagesDeliveryEndpoint ignores logged user ACLs

  • PUBLISHING-350 Publishing error notifications are not meaningful when displayed to the editor

Miscellaneous

  • MGNLEE-863 Remove Report an issue feature in About app

  • MGNLPER-250 Support StartsWith criteria in search queries

  • MGNLTOMCAT-47 Update org.apache.tomcat:tomcat to 9.0.96

Third-party library updates

This release comes with a number of third-party library updates, see the Magnolia Third-party library BOM 6.3.1.

Notable updates

Updated modules

  • Admincentral 6.3.1

  • Barebones Tomcat Bundle 1.2.31

  • Cache 6.0.1

  • Community Edition 6.3.1

  • Content Editor 3.0.1

  • Content Types 2.0.1

  • DAM 4.0.1

  • DX Core 6.3.1

  • Definitions App 3.0.1

  • Demo Projects 6.3.1

  • Magnolia 6.3.1

  • Marketing Tags Manager 3.0.1

  • Pages 6.3.1

  • Periscope 2.0.1

  • Personalization 3.0.1

  • Publishing Transactional 2.0.1

  • Publishing 2.0.1

  • Resources 4.0.1

  • SiteMesh 2.0.1

  • Third-party library BOM for Extensions 6.3.1

  • Third-party library BOM 6.3.1

  • UI 6.3.1

  • Vaadin Compatibility Addons 1.3.18

  • Workflow 7.0.1

Acknowledgements

The Magnolia team would also like to thank everyone who reported issues, contributed patches or simply commented on issues for this release.

Feedback

DX Core

×

Location

This widget lets you know where you are on the docs site.

You are currently perusing through the DX Core docs.

Main doc sections

DX Core Headless PaaS Legacy Cloud Incubator modules