Neos 8.2 released

This Minor Release of Neos and Flow 8.2 comes with a selection of features and improvements that should improve usability all around. 

– Written by

Neos 8.2 Release Highlights

Native loading of Fusion files from the NodeTypes folder

To allow for building components in one place, putting NodeType (YAML) declaration and Fusion prototype side by side, a stream wrapper similar to the one for resources was added that can load fusion from the NodeTypes folder that was introduced before as a place for all your NodeType YAML files.

Configurable login logo

The logo image for the Neos backend login can now also be changed via settings, together with the already configurable stylesheets and background giving you access to everything needed to build an individual login experience for your customers.

Menu items with URLs

Menu items generated with the MenuItems Fusion object now also provide the URLs to the nodes associated with the item, making it easier to use them in presentational components without further need of Neos internals.

Updates to basic Fusion prototypes

The basic prototypes of the Neos.Fusion namespace are now separated out into their own files, making it easier to reference ever single one, additionally they also list all their properties with default values, which was partly internal before.

Cleanups in Fusion Runtime

The Fusion Parser was rewritten for the 8.0 major release, this time the Fusion Runtime is subject to various code improvements and refactoring all around.

All Flow 8.2 Highlights

Cache multi backend improvements

A new IteratableMultiBackend now allows multiple iterable backends to be used in a fallback scenario, which previously was only possible for non-iterable backends. Additionally, logging was improved and unavailable backends in the chain are skipped for any further calls directly.

Static functions in compiled EEL

As a performance optimization, all compiled EEL code is now generated as a static function.

All Neos UI 8.2 Highlights

Pixel snapping support during crop

With this new setting for the image editor, image cropping that is handled in the UI will snap to pixels ranges. For example, it will no longer be possible to select a 170px x 96px crop area when the ratio is set to 16:9 as 16 is not a divider of 170.

Improvements for the Node Creation Dialog

The node creation dialog has been adjusted to feature a more prominent search box, auto-selects the first matching nodetype and allows keyboard navigation.

The improved node creation dialog in Neos 8
The improved node creation dialog in Neos 8

Resizable document and content trees

We converted the Neos backend layout from fixed positioned panels into a native CSS grid. This allowed us in the first step to make the left sidebar with the document and content trees resizable. This was a much asked for feature and is in it's the first version. The state of the sidebars is not persisted yet, but this will be probably resolved in a future version.

This change is just the beginning of a bigger layout overhaul, and using the grid resolved some minor issues already. The previously used animations when toggling sidebars got lost during these adjustments, as they cannot be easily reintegrated with the current state of CSS grids.

Mark links as download with the LinkEditor

The LinkEditor when editing text now allows you to mark a link as "download" which will directly start the download of a linked file instead of opening it.

The new download option in the linkeditor dialog
The new download option in the linkeditor

A new build stack

Since 2016 the build stack of the Neos UI package has been more or less the same with Webpack, Lerna, Babel and other helpers which were state-of-the-art back then. Sadly, build times and maintainability got much harder over the years.

Now we upgraded & replaced many parts and now use Yarn 3, the latest TypeScript and ESBuild versions.
This results in almost instant install and build times during development, and also improved performance for our backend users:

  • in the Neos Demo page ~3 MB fewer data (JS, CSS, Fonts) is loaded for the backend
  • time to initialize the backend, improved by ~100ms on an already fast machine