Neos 4.1 and Flow 5.1 released

We are happy to announce: Neos 4.1 and Flow 5.1 are here! The first minor release since the major versions in April brings a large array of improvements to the React-JS based UI and introduces the incremental transition to complete PSR-7 compatibility.


Changes to the UI

A lot of things have happened in the Neos user interface wonderland since the Neos 4.0 release. This list is a condensed summary of all the new features implemented in order to enrich the user experience in the Neos backend.

  • First of all, we have integrated CKEditor 5 into Neos. It is not just some upgrade to CKEditor 4, but a completely new editor written from scratch, providing an amazing architecture for rich text editing in Neos. Additionally, it's a bliss to extend with custom plugins! Rest assured, it is still possible to bring CKEditor 4 back with a configuration setting, but we highly recommend switching to CKEditor 5 as soon as possible, as CKEditor 4 is now considered deprecated and will be removed in future releases.
  • Together with CKEditor 5 comes a completely reworked link editing experience. It allows inserting any kind of links, supports editing link's anchor, title, adding nofollow and open in new window attributes.
  • Another big feature are the long-awaited node tree presets. It is now possible to define different nodetype filters and switch between them in the tree.
  • The Image editor now has a new forceCrop option. It prompts the editor to do the image cropping right after upload.
  • We now have configurable keyboard shortcuts support, enabling you to toggle parts of the user interface in and out of view, reload the content canvas and many more actions to make sure the backend always behaves and looks exactly as the editors need it!
  • There are a number of JavaScript events that were ported from the old Ember user interface.
  • The help messages for nodetypes dialog and node properties were also re-implemented.
  • It is now possible to configure the accepted filetypes for Image and Asset editors.
  • It is also possible to configure custom background colours for each preview mode.
  • Last but not least, there are huge performance optimizations regarding loading of policy information, which deserve to be considered a feature.

There were countless bugfixes merged and the user interface should now feel a lot more stable. If you have been waiting this long to make the switch, now is the time.

IMPORTANT: The legacy version of the Neos user interface (Ember) is considered deprecated as of version 4.1 and will be removed with Neos 5.0.

Neos logo now in Font Awesome

With the new release we updated to the latest version of Font Awesome. While this might seem not much of a change, it allows us to celebrate the inclusion of the Neos logo there! Thanks to everyone who voted on the inclusion!

It can be seen in all its glory and is as easy to use as all other icons.

New cache configuration can boost performance

Neos 4.1 brings a new performance improvement for heavily edited pages by making CacheEntries workspace aware. In order for this to take effect, you need to adapt your Fusion configuration. The Neos.Caching Eel-Helper must be used in the entryTags configuration. For further details on the cache configuration, see the documentation. If nothing is changed in the configuration, the cache handling behavior remains unchanged.

Previously, it has been an issue that Neos didn't consider the workspace when emptying caches, after changes were saved. If an editor published changes within a workspace, the content node flusher would flush all the cache entries belonging to the changed nodes, regardless of the workspace. Essentially, this meant that in a worst case scenario, as long as someone was editing a page in the backend, it might act as if it were uncached, thus causing substantial load times for users. 

Flow PSR-7 Transition

When it comes to the HTTP message interfaces standard PSR-7 we hope to quickly follow with support for PSR-15 (HTTP Server Request Handlers) support and the resulting interoperability with the wider PHP ecosystem. This makes it much easier to embed a Flow or Neos instance with other PHP applications for example.

PSR-7 compatibility is such an extensive subject that in order to do it justice, Christian Müller wrote a dedicated post in an attempt to make the progress to PSR-7 compatibility transparent to the community. Read the short and sweet but comprehensive blog post dedicated to this topic here.


Changes in Neos

Friendlier setup page / missing homepage

In order to make the initial introduction of a newly set up Neos project more welcoming, the templates for "database error" and "missing homepage" were changed to a friendly welcome message. This replaces the big "database error" new users were greeted with up to now.

Screenshot of new database error message

New setup message

Add progress and time to workspace:publish command

A timestamp and progress indicator was added to the publish command of the workspace CLI command. If you publish changes on the command-line, this will take some guesswork out of that task.

PDFs in the Media Browser

Thanks to the integration of pdf.js, it is now possible to preview PDF files in the media browser, independent of any client-side plugins and their configuration.

Neos.Fusion:Debug API changed

Fusion's handy Debug object now has a new API. It should be used as a processor now instead of as a wrapping Fusion object, reducing the amount of typing needed to add it. Refer to the documentation for details.


Changes in Flow

Validation groups for Collection and Entity Validators

This makes it possible to explicitly specify a Collection or GenericObject type validator on according properties in order to override the options, like validation groups. This is useful for example when you want to prevent a collection of entities or a whole model to be validated in some validation groups. Previously, you would have had to exclude all the properties of the related entities via according validate annotations with specified validation groups.

See the documentation on partial validation for details.

Support for arrow function expressions in Eel

This new feature adds support to parse and evaluate arrow function expressions in Eel. This is only implemented for the CompilingEelEvaluator, since expression evaluation needs to be deferred in functions. Arrow function arguments can be specified with or without parentheses. The body must be an expression and not a block. See this example: map(items, (x) => x * x)

New logger backend to write the log in JSON format

This logger writes the log message in JSON format which is easily parsable for log processing but also human-readable.

base64 en-/decoding via Fusion

An Eel-Helper was added which uses PHP functions to encode and decode a data-string as documented in the reference.


Documentation and Support

Upgrading

The detailed upgrading process for Neos 4.1 is explained in the upgrade instructions.

Changelogs

See the Neos 4.1 changelogs and Flow 5.1 changelogs for all changes and details.

Support for Neos 4.1 and Flow 5.1

As shown in our release roadmap, Neos 4.1 and Flow 5.1 will get bugfixes until December 2019 and security fixes until December 2020.