8.3.13 (2025-01-15)

Overview of merged pull requests

BUGFIX: Fix race-condition when initializing I18n Service

We noticed in our error logs that we had quite a few errors being thrown from here <https://github.com/neos/flow-development-collection/blob/``b82054f980913d63aecd917692b4213bf034854a <https://github.com/neos/flow-development-collection/commit/b82054f980913d63aecd917692b4213bf034854a>`_/Neos.Flow/Classes/I18n/Service.php#L256-L257>`_: ` Call to a member function findBestMatchingLocale() on bool ```

My best guess is that this is due to a race-condition when the service is called for the first time on a host by multiple requests simultaneously.

In general, the pattern of first checking if some value is in the cache, and then reading the value out afterwards without checking it is never safe, as a different process/thread could have removed it.

The safe way is to read the value out once, and verify that it is set correctly (e.g. it should not === false).

I think there’s a few other places that follow the same unsafe pattern, but I suggest that they are addresses separately from this PR.

I haven’t added any tests for this case, but please let me know if you have any ideas of how to test this.

  • Packages: Flow

BUGFIX: Add missing validation labels

When you use Neos.Form and the Neos.Form.FusionRenderer with the File Upload, there’s a chance that the file extension isn’t valid. In that case, the validation error should be displayed, but the labels are in Flow, and the label for the case is missing.

This change adds the missing label for the validation error message.

  • Fixes: #3430

  • Packages: Flow FluidAdaptor

BUGFIX: Adjust to PHP 8.3 get_parent_class() deprecation

Somehow, https://github.com/neos/flow-development-collection/pull/3351/files only targeted Flow 9.0, but per the docs, Flow 8.3 also supports PHP 8.3. This is just a backport of these changes.

  • Packages: Flow

BUGFIX: Fix method param type expansion for partial annotation coverage

Adjusts the behavior of ReflectionService::getMethodParameters() such that @param annotations are mapped to the corresponding method argument based in their _name_ instead of the _index_.

  • Fixes: #3423

  • Packages: Flow

BUGFIX: Don’t load the same files twice in the static resource collection

The second pattern included a 99% subset of the first pattern except the files in the public folders themselves. Therefore all files in subfolders were loaded twice in the \\Neos\\Flow\\ResourceManagement\\Collection::getObjects method and afterwards also published twice.

In a medium sized project the first pattern loaded 1165 files and the second pattern 1155 which were all duplicates.

An additional change is required to deduplicate paths loaded in the Collection class to prevent further configuration regressions for cases like this.

Review instructions

  • Delete the Web/_Resources/Static folder in a demo distribution

  • Run ./flow resource:publish --collection static

  • Reload the Neos backend and all the static resources like JS and CSS should still be there.

  • Packages: Flow

TASK: Correctly mark nullable method parameters as nullable

Replaces #3427

This PR will correctly mark implicit nullable types as nullable, which will remove deprecation warnings in PHP 8.4.

I’ve used rector to migrate all occurrences. https://getrector.com/rule-detail/explicit-nullable-param-type-rector

See also for Neos: https://github.com/neos/neos-development-collection/pull/5433

Note: We should run the rector migration again on 9.0 after upmerging this PR

Thanks to @Benjamin-K for bringing this up and providing the first PR (#3427).

  • Packages: Cache Eel Error.Messages Flow.Log Flow FluidAdaptor Http.Factories Utility.Files Utility.MediaTypes Utility.ObjectHandling Utility.OpcodeCache Utility.Unicode

TASK: Uniquify exception codes in Abstract(Template)View

Exception codes are supposed to be unique, so this makes sure those places get a code of their own.

Upgrade instructions

If you rely on that exception code (1359625876) for whatever reason, consider taking the new codes into account, too:

  • 1359625877

  • 1359625878

  • 1359625879

  • 1359625880

  • 1359625881

  • 1359625882

  • 1359625883

Review instructions

You could check if any of the new codes is in use already, in turn… 😬

  • Packages: Flow

TASK: Use Symfony ConsoleLogger instead of Doctrine

Resolves: https://github.com/neos/flow-development-collection/issues/3404

In next minor release (3.9) doctrine/migration will remove the ConsoleLogger See: https://github.com/doctrine/migrations/pull/1449

To prevent any issues after release of this we replace the ConsoleLogger of doctrine with ConsoleLogger of Symfony.

  • Packages: Flow

Detailed log