Skip to content

Neos 9 support - #1

Merged
nilsjung merged 5 commits into
mainfrom
neos-9-support
Oct 13, 2026
Merged

nilsjung merged 5 commits into
mainfrom
neos-9-support

Conversation

@nilsjung

@nilsjung nilsjung commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

Neos 9 support

Allows installing the package on Neos 9 (^8.3 || ^9.0 for neos/neos, neos/media-browser, neos/fusion).

The package code itself needs no changes. The copied Media Browser edit template (Resources/Private/Templates/Asset/Edit.html) is identical to the Neos 8.4 and 9.2 templates apart from the added AiClassification partial, so one template serves both versions.

Test changes

Two unit tests did not run with the Neos 9 dependency set:

  • AssetAiClassificationMigrationTest::assetIdentifierEncodings() is now static. PHPUnit 10+ requires static data providers.
  • AssetAiClassificationRepositoryTest builds its Doctrine\ORM\Configuration by hand. Doctrine\ORM\Tools\Setup::createConfiguration() needs doctrine/cache 1.11 or symfony/cache, which a Neos 9 installation does not include.

require-dev now allows phpunit/phpunit ~9.1 || ~11.5 and neos/buildessentials ~8.3.0 || ~9.0.

CI

  • Matrix: Neos 8.4 (PHP 8.2, 8.3) with PHPUnit 9.6, Neos 9.2 (PHP 8.4) with PHPUnit 11.5.
  • Neos 9 jobs additionally require neos/contentgraph-doctrinedbaladapter. Neos 9 is only installable with a package that provides neos/contentrepositoryregistry-storageclient.
  • New step: diffs Edit.html, minus the f:render line, against the installed Media Browser template, so a template change in a future Neos version fails the build. The README section "Supporting a new Neos version" describes this.

Verification

  • Both CI variants reproduced locally with the workflow's composer commands on PHP 8.4: Neos 8.4.8 / PHPUnit 9.6 and Neos 9.2.0 / PHPUnit 11.5, 41 tests green, template check passes. The other PHP versions of the matrix run here for the first time.
  • Smoke test in a Neos 9.2.0-beta3 project (PHP 8.4, MySQL 8):
    • The aspect advice is woven into AssetController and ImageController.
    • doctrine:migrate creates the table with the unique key and the foreign key.
    • Setting, changing and resetting the classification works in the media module and in the standalone Media Browser, for an image and a video.
    • AssetAiClassification.getClassification() returns the saved value in Fusion.
    • Cached pages pick up a changed classification without a manual cache flush.

Notes:
- verified green on Neos 8.4 with PHPUnit 9.6 and on Neos 9.2
  with PHPUnit 11.5
Why:
- copied Media Browser edit template is unchanged in Neos 9.2 apart
  from the added partial, so no template variant per Neos version

Notes:
- smoke-tested on Neos 9.2 with MySQL 8: migration, saving in media
  module and standalone media browser, Eel helper, cache flush
- CI still only covers Neos 8; a Neos 9 job is follow-up work
Why:
- without a lock file composer resolves the newest dev tools, so
  Neos 8 jobs pin PHPUnit 9 to keep testing what Neos 8 projects use

Notes:
- both jobs reproduced locally on PHP 8.4 with the same composer
  commands; the other matrix PHP versions only run on GitHub Actions

Issue: neos-9
@nilsjung
nilsjung merged commit 500d21a into main Oct 13, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant