Skip to content

[FEATURE] Add support for TYPO3 v14.2 and drop support for TYPO3 v14.0#450

Draft
eliashaeussler wants to merge 1 commit intomainfrom
feature/typo3-14.1
Draft

[FEATURE] Add support for TYPO3 v14.2 and drop support for TYPO3 v14.0#450
eliashaeussler wants to merge 1 commit intomainfrom
feature/typo3-14.1

Conversation

@eliashaeussler
Copy link
Owner

@eliashaeussler eliashaeussler commented Jan 20, 2026

ToDo

  •  Drop minimum-stability and prefer-stable from composer.json

Summary by CodeRabbit

  • New Features

    • Added compatibility with TYPO3 14.1 while retaining 13.4 LTS support.
  • Documentation

    • Updated installation docs, introduction, README and compatibility matrix to reflect TYPO3 14.1 support and version mapping.
  • Chores

    • Updated CI/testing matrix and package constraints to validate against TYPO3 14.1; package stability settings adjusted.
  • Tests

    • Adjusted tests and baseline rules to accommodate TYPO3 14.1 compatibility differences.

@eliashaeussler eliashaeussler added the enhancement New feature or request label Jan 20, 2026
@eliashaeussler eliashaeussler self-assigned this Jan 20, 2026
@coderabbitai
Copy link

coderabbitai bot commented Jan 20, 2026

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Walkthrough

This PR updates TYPO3 compatibility from 14.0 to 14.1 across CI, composer constraints, docs, and test baselines, and adds TYPO3-version-aware form-loading logic in InvokeFinishersListener with an accompanying test adjustment.

Changes

Cohort / File(s) Summary
Version Constraints & Dependencies
composer.json, ext_emconf.php
Bumped TYPO3 package constraints from ~14.0 → ~14.1 and extended extension dependency upper bound to include 14.1.x. Added minimum-stability/prefer-stable entries in composer.json.
CI & Workflow Configuration
.github/settings.yml, .github/workflows/ci.yaml
CI/test matrix updated to use TYPO3 14.1 instead of 14.0 for highest/lowest scenarios across PHP versions (8.2–8.5).
Documentation Updates
README.md, Documentation/Introduction/Index.rst, Documentation/Installation/Index.rst
Updated compatibility statements and version matrix to reflect support for TYPO3 13.4 LTS — 14.1; added a historical row for 4.0.0 in the matrix.
Runtime Logic (TYPO3 compatibility)
Classes/Event/Listener/InvokeFinishersListener.php
Added private typo3Version property; constructor sets it; areFinisherVariantsConfigured now branches by TYPO3 major version and calls FormPersistenceManager::load with version-specific argument patterns (v14+ single-arg vs older two-arg legacy path).
Tests & Static Analysis
Tests/Functional/Domain/Finishers/ConsentFinisherTest.php, Tests/CGL/phpstan-baseline.neon
Test adjusted to call load with 1 or 2 args depending on TYPO3 version; added PHPStan baseline ignore entries for the differing method-signature warning.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  participant Listener as InvokeFinishersListener
  participant FPM as FormPersistenceManager
  participant Config as YAML/FormSettings
  participant Logic as VariantDetection

  Listener->>Listener: determine TYPO3 major version
  alt TYPO3 >= 14
    Listener->>FPM: load(formPersistenceIdentifier)
    FPM-->>Listener: formConfiguration
  else TYPO3 < 14
    Listener->>Config: getYamlConfiguration(formPersistenceIdentifier)
    Config-->>Listener: formSettings
    Listener->>FPM: load(formPersistenceIdentifier, formSettings)
    FPM-->>Listener: formConfiguration
  end
  Listener->>Logic: inspect formConfiguration for finisher variants
  Logic-->>Listener: hasVariants? true/false
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Poem

🐰 A hop for code, a gentle tweak,
From 14.0 up to 14.1 we peek,
Tests adjusted, docs aligned,
Listeners branch where versions bind,
I nibble carrots, then commit — so sleek! 🌿

🚥 Pre-merge checks | ✅ 1 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ⚠️ Warning The PR title mentions TYPO3 v14.2, but all changes throughout the PR only reference TYPO3 v14.1, not v14.2. The title is misleading and contradicts the actual changeset. Update the PR title to '[FEATURE] Add support for TYPO3 v14.1 and drop support for TYPO3 v14.0' to accurately reflect the changes in the pull request.
✅ Passed checks (1 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coveralls
Copy link
Collaborator

coveralls commented Jan 20, 2026

Pull Request Test Coverage Report for Build 21284685832

Details

  • 8 of 9 (88.89%) changed or added relevant lines in 1 file are covered.
  • No unchanged relevant lines lost coverage.
  • Overall coverage decreased (-0.1%) to 94.601%

Changes Missing Coverage Covered Lines Changed/Added Lines %
Classes/Event/Listener/InvokeFinishersListener.php 8 9 88.89%
Totals Coverage Status
Change from base Build 21284620413: -0.1%
Covered Lines: 771
Relevant Lines: 815

💛 - Coveralls

@eliashaeussler eliashaeussler marked this pull request as draft January 20, 2026 15:56
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@composer.json`:
- Around line 25-31: Update the TYPO3 package version constraints in
composer.json so they are satisfiable by replacing the unsupported `~14.1.0`
alternative with `~14.0.2` for the packages that don't have 14.1.0 releases;
specifically update the dependency entries for "typo3/cms-core",
"typo3/cms-extbase", "typo3/cms-form", "typo3/cms-frontend",
"typo3/cms-install", and any other TYPO3 packages currently listed as `~13.4.0
|| ~14.1.0` to `~13.4.0 || ~14.0.2` so composer can resolve them (leave packages
that already have 14.1.0 unchanged).

@eliashaeussler eliashaeussler changed the title [FEATURE] Add support for TYPO3 v14.1 and drop support for TYPO3 v14.0 [FEATURE] Add support for TYPO3 v14.2 and drop support for TYPO3 v14.0 Jan 23, 2026
@eliashaeussler eliashaeussler changed the title [FEATURE] Add support for TYPO3 v14.2 and drop support for TYPO3 v14.0 [FEATURE] Add support for TYPO3 v14.1 and drop support for TYPO3 v14.0 Feb 19, 2026
@eliashaeussler eliashaeussler marked this pull request as ready for review February 19, 2026 19:57
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
Classes/Event/Listener/InvokeFinishersListener.php (1)

46-56: Consider injecting Typo3Version via DI instead of constructing it directly

Instantiating Core\Information\Typo3Version directly in the constructor body couples the version check to the real runtime value and makes isolated unit-testing of the branching logic harder. TYPO3's DI container already registers Typo3Version as a service.

♻️ Suggested refactor
 public function __construct(
     private Extbase\Configuration\ConfigurationManagerInterface $extbaseConfigurationManager,
     private Form\Mvc\Configuration\ConfigurationManagerInterface $formConfigurationManager,
     private Form\Mvc\Persistence\FormPersistenceManagerInterface $formPersistenceManager,
     private Compatibility\Migration\HmacHashMigration $hmacHashMigration,
     private Core\Domain\Repository\PageRepository $pageRepository,
-) {
-    $this->typo3Version = new Core\Information\Typo3Version();
-}
+    private Core\Information\Typo3Version $typo3Version = new Core\Information\Typo3Version(),
+) {}

Or as a plain injected constructor parameter (PHP 8.1+ default-value-free):

 public function __construct(
     ...
     private Core\Domain\Repository\PageRepository $pageRepository,
+    private Core\Information\Typo3Version $typo3Version,
 ) {}

Remove the class-level private Core\Information\Typo3Version $typo3Version; declaration in either case.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Classes/Event/Listener/InvokeFinishersListener.php` around lines 46 - 56, The
constructor currently constructs Core\Information\Typo3Version directly which
couples behavior and hinders testing; change it to accept a Typo3Version via DI
by adding a constructor parameter (or use constructor property promotion) for
Core\Information\Typo3Version and remove the manual new call in
InvokeFinishersListener::__construct and the separate class-level instantiation
of $typo3Version so the listener uses the injected $typo3Version property
instead.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@composer.json`:
- Around line 70-71: The composer.json currently sets "minimum-stability": "dev"
and "prefer-stable": true as a temporary workaround for resolving "~14.1.1";
remove those two fields and update the dependency constraint from "~14.1.1" to
the stable target "~14.1.0" (or the intended stable constraint) so the package
no longer allows unstable dependencies; ensure composer.lock is regenerated
after the change to verify downstream consumers won't pick up dev packages.
- Around line 25-31: Update the TYPO3 14.1.x Composer constraints by replacing
"~14.1.1" with "~14.1.0" for all listed packages so the constraint includes the
v14.1.0 release; specifically change the entries in require for
typo3/cms-backend, typo3/cms-core, typo3/cms-extbase, typo3/cms-fluid,
typo3/cms-form, typo3/cms-frontend, typo3/cms-install, and mirror the same
replacement in require-dev for typo3/cms-dashboard, typo3/cms-filelist,
typo3/cms-fluid-styled-content, typo3/cms-lowlevel, typo3/cms-scheduler,
typo3/cms-tstemplate, and in suggest for typo3/cms-dashboard and
typo3/cms-scheduler.

---

Nitpick comments:
In `@Classes/Event/Listener/InvokeFinishersListener.php`:
- Around line 46-56: The constructor currently constructs
Core\Information\Typo3Version directly which couples behavior and hinders
testing; change it to accept a Typo3Version via DI by adding a constructor
parameter (or use constructor property promotion) for
Core\Information\Typo3Version and remove the manual new call in
InvokeFinishersListener::__construct and the separate class-level instantiation
of $typo3Version so the listener uses the injected $typo3Version property
instead.

Comment on lines +70 to +71
"minimum-stability": "dev",
"prefer-stable": true,
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

minimum-stability: dev + prefer-stable: true — pending TODO in PR description

The PR description explicitly flags these as needing removal before merge. They were added as a temporary workaround for resolving ~14.1.1 when only dev branches are available, and must be dropped before tagging the 4.1.0 release to avoid inadvertently pulling unstable packages for downstream consumers of this project's lockfile.

Would you like me to open a tracking issue for removing these fields once the constraint is updated to ~14.1.0?

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@composer.json` around lines 70 - 71, The composer.json currently sets
"minimum-stability": "dev" and "prefer-stable": true as a temporary workaround
for resolving "~14.1.1"; remove those two fields and update the dependency
constraint from "~14.1.1" to the stable target "~14.1.0" (or the intended stable
constraint) so the package no longer allows unstable dependencies; ensure
composer.lock is regenerated after the change to verify downstream consumers
won't pick up dev packages.

@eliashaeussler eliashaeussler changed the title [FEATURE] Add support for TYPO3 v14.1 and drop support for TYPO3 v14.0 [FEATURE] Add support for TYPO3 v14.2 and drop support for TYPO3 v14.0 Feb 19, 2026
@eliashaeussler eliashaeussler marked this pull request as draft February 19, 2026 20:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants