7.2.1 (2021-11-22)

Overview of merged pull requests

BUGFIX: Render labels of authentication providers

What I did Extended the array that is used in the view. So that we have the provider identifier and the label. So we use a structure like



identifier: ‘Neos.Neos:Backend’ label: ‘Neos Backend label’

}, {

identifier: ‘Neos.Neos:FooName’ label: ‘Neos Backend Foo’



How to verify it

  1. Configure a second authentication provider

  2. go to the user management in the backend

  3. create a new user

  4. check the drop down

!`Screenshot 2021-11-03 at 10 27 50 <https://user-images.githubusercontent.com/1014126/140036446-fedcdc33-d80d-4ea4-95b0-41fa385d9d53.png>`_

  • Fixes: #3488

  • Packages: Media.Browser Neos

BUGFIX: apply editor defaults in creation dialog elements

Adjusts the DefaultPropertyEditorPostprocessor such that it respects the configured property editor defaults not only for node _properties_ but for _creationDialog elements_ too.

This also fixes the default behavior for properties slightly by making sure that editor defaults from Neos.Neos.userInterface.inspector.editors are applied even if no corresponding Neos.Neos.userInterface.inspector.dataTypes exists

  • Fixes: #3471

  • Packages: Media.Browser Neos

BUGFIX: NodeTypesLoader respect package overrides

What I did

The NodeTypesLoader introduced in FLOW 7.2 does not allow to override NodeTypes in the newly introduced NodeTypes directory. This is because, the Configuration directory is loaded in a separate loop after the NodeTypes directory.

For example, the NodeType Neos.Neos:ContentCollection cannot be overriden in the NodeTypes directory, because it is loaded in Neos.Neos/Configuration. This means, everything defined in the NodeTypes directory of a custom package is overriden by the Neos.Neos/Configuration NodeType.

How I did it

This PR uses a single $packages loop to first load from the NodeTypes directory, directly followed by the Configuration for a given $package.

How to verify it

Try to modify Neos.Neos:ContentCollection like this ``` ‘Neos.Neos:ContentCollection’:


‘*’: false

` in a ``NodeTypes directory.

  • Packages: Neos ContentRepository

BUGFIX: Improve message for node property conversion errors

This wraps the property mapper exceptions within Node::getProperty() in order to throw a more useful exception.

  • Fixes: #3420

  • Packages: Media.Browser Neos

BUGFIX: Prevent exception when deleting an electronic address

When you delete an electronic address we throw a flash message that the address has been delete for the given user. We had the issue that the PersonName object could not be transformed to a string that is needed for the flash message.

What I did

Use the full name of the PersonName object instead of the direct PersonName object for the flash message.

How to verify it

  1. Open the user module

  2. Edit a user

  3. Optionally create a electronic address

  4. Delete a electronic address

  5. check the flash message

  • Fixes: #3435

  • Packages: Media.Browser Neos

BUGFIX: Include Memo fusion

The Neos.Fusion:Memo object was introduced with Neos 7.2 but the include somehow slipped through. This change adds the missing include to the Root.fusion

  • Resolves: #3510

  • Packages: Media.Browser Neos Fusion

BUGFIX: Fix wrong translation strings

These were reversed somehow…

  • Packages: Media.Browser Neos

BUGFIX: Fix two errors in Modules.xlf

Fixes a duplicate id and the use of literal HTML tags in XLIFF.

  • Packages: Media Neos

BUGFIX: Only use accounts that have Neos users attached

Since Neos 5.2.0 the use of frontend logins is broken. When logging in, an exception is thrown. The exact exception varies, but can be traced to Unexpected user type "". An account with the identifier "…" exists, but the corresponding party is not a Neos User. eventually.

This change fixes that by not using getUser() directly, but doing more checks and eventually just returning null if no Neos user can be found for the authenticated tokens.

  • Related: #2577

  • Fixes: #3088

  • Packages: Media Neos

BUGFIX: Flush content cache of pages with internal links when target changes

This extends \\Neos\\Neos\\Fusion\\Cache\\ContentCacheFlusher::registerChangeOnNodeIdentifier() such that it flushes dynamic node tags, too.


The Neos.Neos:ConvertUris processor invokes \\Neos\\Fusion\\Core\\Runtime::addCacheTag() for every converted node and asset link leading to a cache tag of <type>DynamicTag_<id> (e.g. NodeDynamicTag_12345) to be added to the current RuntimeContentCache.

This fix makes sure that those dynamic node tags are also flushed whenever a node is changed.

  • Fixes: #3482

  • Packages: Neos

BUGFIX: Media Browser - Make font visible on tag hover

What I did To make the tag name visible when hovering an active tag /collection/asset source I changed the background color to blue.

How I did it On hover the background color of a button changes to blue while the font color changes to white

How to verify it In the media browser, if you have a lot of tags(more than 25 Tags), the collections and tags are displayed as ‘buttons’. On hovering an active button, the text is white on blue.

  • Resolves: #3461

  • Packages: Media.Browser

BUGFIX: Collapse afx whitespace connected to newlines to spaces inside of text literals

The removal of all whitespaces connected to newlines yields unexpected results in text literals. This change adjusts the behavior and converts newlines and connected whitespaces inside of text literals to a single space. Whitespaces and connected newlines at the beginning and end of text literals are still removed.

So the following afx code: ``` <h1>

This is a string literal with multiple lines that shall collapse to spaces.

</h1> ` will be transpiled as: ` Neos.Fusion:Tag {

tagName = ‘h1’ content = ‘This is a string literal with multiple lines that shall collapse to spaces.’

instead of: ``` Neos.Fusion:Tag {

tagName = ‘h1’ content = ‘This is a string literalwith multiple linesthat shall collapseto spaces.’

  • Relates: #3331

  • Packages: .github Fusion.Afx

BUGFIX: Enable translations for overridden selectbox options

What I did / How I did it

I altered the NodeTypeConfigurationEnrichmentAspect so that it takes the node type inheritance chain into account when translating select box option labels in the respective inspector editor configuration.

This addresses an issue originally reported in the UI repo: https://github.com/neos/neos-ui/issues/2005

How to verify it

You’ll need a mixin NodeType that provides a select box property with internationalized option labels like this:


type: string defaultValue: ‘primary’ ui:

label: i18n reloadIfChanged: true inspector:

group: style position: 10 editor: ‘Neos.Neos/Inspector/Editors/SelectBoxEditor’ editorOptions:


label: i18n


label: i18n


label: i18n


label: i18n


label: i18n


label: i18n

` (let's call this one ``Vendor.Site:Mixin.BrandColor)

Then you’ll need a second node type that inherits from Vendor.Site:Mixin.BrandColor and adds an new internationalized option to the property brandColor:


defaultValue: ‘none’ ui:


label: ‘i18n’


Before the fix the new option will show up as a plain string "i18n". After the fix the new option will show up as an XLIFF-translation address (bound to the node type that added the option).

Additional remarks

Imho, the entire NodeTypeConfigurationEnrichmentAspect should actually be moved out of the Neos.Neos package and into the UI package (All of these translations are an exclusive UI concern). Doing that would be out-of-scope for a bugfix though.

  • To be precise: There are no tests for this aspect to begin with and would be extremely difficult to add them. I’d suggest to move this concern over to the UI and handle it in a more testable manner.

  • Packages: Neos

BUGFIX: Prevent error when setting collection prop in ContentCollectionRenderer

When using the ContentCollectionRenderer directly and setting the backwards compatible collection prop (to still support Neos 4.3) to a valid array of nodes the following error appears due to the missing object definition:

` No Fusion object found in path ".../collectionA<Neos.Neos:ContentCollectionRenderer>/items/__meta/process/collectionLegacy `

What I did

Define the backwards compatible process as simple expression instead of an object without implementation

How to verify it

Try the following code somewhere in the demo site:

``` myCollection = Neos.Neos:ContentCollectionRenderer {

collection = ${q(site).find(‘[instanceof Neos.Demo:Content.Text]’).get()}

  • Packages: Neos

BUGFIX: Allow searching by tag after searching by searchterm in the MediaBrowser

What I did 1. Go to the Neos Media Browser and enter a search term 2. Remove the search term so that there is an empty string as search 3. Search again 4. Use any tag on the left side to search by tag

After clicking on the Tag I would expect to see results by tag since the search field is empty. The search still tries search by the empty string and does not call the method findByTag.

How I did it In the controller where the search happens do not only check if the searchterm is null but also check if the searchterm is empty

How to verify it After searching by searchterm, then searching by an empty string you can then search by Tag.

  • Fixes: #3455

  • Packages: Media.Browser

TASK: Simplify rules, handle markdown files in .editorconfig

Aligns the file with the one in the Flow development collection.

TASK: Use 4 spaces for composer.json in editorconfig

4 spaces is what Composer uses itself…

Detailed log