8.1.8 (2023-10-21)

Overview of merged pull requests

BUGFIX: Only discard nodes in same workspace

  • Resolves: #4577

  • Packages: ContentRepository

BUGFIX: Load all thumbnails for an asset to skip further requests

For the usecase of images with responsive variants this change prevents additional database requests for each additional variant of an image.

This can greatly reduce the number of queries on pages with many source tags or sources attributes for pictures and images.

Review instructions

As soon as an image is rendered in several sizes on a page the patch should skip additional db requests in the thumbnails repository. Persistent resources and image entities are still queried as via the node property getter and to resolve the thumbnail.

  • Packages: Neos Media

BUGFIX: Allow unsetting thumbnail presets

  • Resolves: #3544

  • Packages: Neos Media

BUGFIX: Don’t query for abstract nodetypes in nodedata repository

As abstract nodetypes don’t (shouldn’t) appear in the database it makes no sense to query them.

This is a regression that was introduced a long time ago, when the default parameter to include abstract nodetypes was added to the getSubNodeTypes method in the NodeTypeManager without adjusting the call in the NodeDataRepository->getNodeTypeFilterConstraintsForDql which relied on the previous behaviour.

The call in the method getNodeTypeFilterConstraints was fixed some years ago, but that method seems unused.

  • Packages: ContentRepository

BUGFIX: Consistently initialize asset sources via `createFromConfiguration <https://github.com/neos/neos-development-collection/pull/4008>`_

fixes: #3965

The Problem

The case at hand was an asset source that uses a value object to validate the incoming asset source options. I expected to be able to define a promoted constructor property with said value object as its declared type:

```php final class MyAssetSource implements AssetSourceInterface {

public function __construct(

private readonly string $assetSourceIdentifier, private readonly Options $options

) { }

/* … */

}

…and initialize the value object in the createFromConfiguration static factory method defined by the AssetSourceInterface:

```php final class MyAssetSource implements AssetSourceInterface {

/* … */

public static function createFromConfiguration(string $assetSourceIdentifier, array $assetSourceOptions): AssetSourceInterface {

return new static(

$assetSourceIdentifier, Options::fromArray($assetSourceOptions)

);

}

}

This failed with a Type Error, because the AssetSourceService, which is responsible for initializing asset sources, at one point does not utilize createFromConfiguration to perform initialization, but calls the asset source constructor directly:

https://github.com/neos/neos-development-collection/blob/a4791b623161259b31d2d11b343310bd7ef76507/Neos.Media/Classes/Domain/Service/AssetSourceService.php#L178

The Solution

I adjusted the aforementioned routine of the AssetSourceService to use the AssetSourceInterface-defined createFromConfiguration static factory method instead of the asset source’s constructor.

Even though the pattern I described above only makes sense in a PHP >8.0 environment, I decided to target Neos 7.3 with this PR, because it should constitute a non-breaking bugfix.

  • Packages: Neos Media

BUGFIX: Guard that Fusion path cannot be empty

Previously in php 7.4 this Neos\\Fusion\\Exception\\MissingFusionObjectException was thrown

> No Fusion object found in path “”

but with php 8 this ValueError is thrown which is unexpected

> strrpos(): Argument `#3 <https://github.com/neos/neos-development-collection/issues/3>``_($offset) must be contained in argument ``#1 <https://github.com/neos/neos-development-collection/issues/1>`_($haystack)

This change takes care of throwing an explicit Neos\\Fusion\\Exception instead:

> Fusion path cannot be empty.


This error was noticed in the out of band rendering, when there is no content element wrapping: https://discuss.neos.io/t/argument-3-offset-must-be-contained-in-argument-1-haystack/6416/4

<img width=”593” alt=”image” src=”https://github.com/neos/neos-development-collection/assets/85400359/0ac8d025-3ab4-44e8-9034-eb883f0b1894”>

Upgrade instructions

  • Packages: Neos Fusion

BUGFIX: Fix `NodeType getTypeOfAutoCreatedChildNode and getPropertyType <https://github.com/neos/neos-development-collection/pull/4482>`_

resolves partially #4333 resolves partially #4344

Upgrade instructions

  • Packages: Neos ContentRepository

TASK: Fix documentation builds

… by pinning updated dependencies.

Review instructions

Best is to see if the builds succeed on RTD again with this merged…

  • Packages: Neos Media

TASK: Fix paths for Neos.Media RTD rendering setup

The paths need to be from the repo root, not relative to the .readthedocs.yaml file (it seems).

  • Packages: Neos Media

TASK: Add configuration files for RTD

This add .readthedocs.yaml files for the collection (handling Neos.Neos) and for neos.Media, to solve failing documentation rendering.

Review instructions

This can be compared to the configuration we have in place for Neos.Flow in the Flow development collection.

  • Packages: Media

Detailed log