9.0.4 (2025-06-13)

Overview of merged pull requests

BUGFIX: Reimplement missing node route handler options from previous Neos versions

Re-adds support for the nodeType and onlyMatchSiteNodes options for the default FrontendNodeRoutePartHandlerInterface implementation

  • Packages: Neos

BUGFIX: Prevent sharing splitString between node routings

This change makes sure that each route has its own handler instance and prevents accidental sharing of instance properties. An optimal solution wouldn’t need the splitString as instance variable anymore, but this would require a change in Flow.

  • Resolves: #5571

  • Packages: Workspace.Ui Neos

BUGFIX: Disable nodes after processing all node variants for export

A node can be disabled one dimensionspacepoint, but not in a variant node.

By chance the EventNodeProcessor will create the disabled events before the variation of the (enabled) node. With the result, this node become disabled too. If the nodes would get handled in reverse order, everything would work as expects.

So I moved the export of the disable node events (SubtreeWasTagged) at the end, after all nodes incl. their variants have been processed.

We already did similar with node references.

  • Packages: ContentRepository.LegacyNodeMigration

BUGFIX: Fix checking workspaces when move nodes

Upgrade instructions

While fixing the move of nodes in #5561 <https://github.com/neos/neos-development-collection/issues/5561>``_I also noticed, that the workspace itself has not been checked correctly, as the workspaceName was checked against the Workspace (class) in the ``beginning of the move()-Method <https://github.com/neos/neos-development-collection/blob/`65cbf7b7e0aeedcaea68eae4332d15b719a694c9/Neos.ContentRepository/Classes/Domain/Model/NodeData.php#L886>``_. This PR fixes this and correctly compares the workspaces at the beginning of the ``NodaData::move()` method.

BUGFIX: MediaBrowser’s upload action shows empty flash message if file is too big

expected (like in the standalone media browser)

<img width=”1118” alt=”image” src=”https://github.com/user-attachments/assets/bcb151bf-c240-409e-803e-36693f604fe8” />

actual (media browser insider neos ui):

<img width=”873” alt=”image” src=”https://github.com/user-attachments/assets/bbc5de87-0133-47f3-b932-c6718b693d3b” />

interestingly the error works in the neos ui when one uses the media browsers drag and drop

<img width=”747” alt=”image” src=”https://github.com/user-attachments/assets/312b2cc8-79b6-4fb0-bb5b-4fd1a4f125a1” />


The existence of this bug was uncovered via https://github.com/neos/neos-development-collection/pull/5528 because previously no validation error was shown and on upload the server just died:

<img width=”670” alt=”image” src=”https://github.com/user-attachments/assets/95b5a2ec-0c5c-4c12-8d66-2d9bcf874b0a” />

> Could not convert target type “Neos\Media\Domain\Model\Asset”: Missing constructor argument “resource” for object of type “Neos\Media\Domain\Model\Asset”.

Upgrade instructions

Review instructions

This bug was uncovered because translate() simply returns undefined, if not initialised. No error no fallback, nuthing. Also while I18n.init() _IS_ called, it doesnt actually initialise anything. For that

https://github.com/neos/neos-development-collection/blob/847e4647d761249b5c48ade07fe08ad7d1db58c5/Neos.Neos/Resources/Public/JavaScript/index.js#L23-L27

has to be invoked and that is done by adding the link.


Notice also that ist not particularly keen of us to initialise I18n once in the host (neos.ui) and then in the iframe too. This is just extra work for the browser, and we dump the iframe after selecting the image. Now my pr doenst improve that but there are ideas outlined here https://github.com/neos/neos-ui/issues/3119 and the first step for a global translate api was already introduced via https://github.com/neos/neos-ui/pull/3804. Nothing for a bugfix to build up on though.

  • Packages: Media.Browser

BUGFIX: Adjust fusion-form dependency

The fusion form in version below 2.1 is incompatible with Neos 9.0. Therefore, we have to modify the constraint and disable versions prior to 2.1. Additionally, we should include 3.0 as it supports Symfony Mailer.

Review instructions

Just check dependencies in the setup.

BUGFIX: Convert Nodes object into array to return references in the same way as in Neos 8.x

  • Packages: Workspace.Ui ContentRepository.NodeAccess

BUGFIX: Adjust help text label for private workspaces

The private workspaces are not accessible by admins since Neos 9.0.

  • Fixes: #5564

  • Packages: Workspace.Ui

BUGFIX: Convert selectbox group labels i18n values

Review instructions

This change converts i18n values of group labels to shorthand strings like Neos.Demo:NodeTypes.Content.Headline:properties.tagName.selectBoxEditor.groups.h1. This works together with https://github.com/neos/neos-ui/pull/3955 to make it possible to localise group labels for select box values like in the following example:

```yaml
tagName:

type: string defaultValue: ‘h2’ ui:

label: i18n reloadIfChanged: true inspector:

group: settings position: 10 editor: Neos.Neos/Inspector/Editors/SelectBoxEditor editorOptions:

values:
h1:

label: h1 group: i18n

h2:

label: h2 group: i18n

h3:

label: h3 group: ‘Neos.Demo:Main:group.label’

h4:

label: h4 group: Just some text

h5:

label: h5 group: ‘Neos.Demo:Main:group.label’

```

  • Packages: Neos

BUGFIX: Update browser history in workspace ui

Before this change pressing back in the browser would lead to the previous Neos module instead of the previous view in the workspace ui itself, even though the url was correctly updated in the navigation bar.

  • Packages: Neos Workspace.Ui

TASK: Reduce size of login wallpapers

Review instructions

Just take a look at the login screen of the backend and decide if the quality is good enogh :)

followup on https://github.com/neos/neos-development-collection/pull/5500

  • Packages: Neos

Detailed log