Skip to content

Developer Guide

Architecture at a glance

Part Class
Frontend plugin Controller\SupportTimesController
Data + caching Service\ReleaseService
Dashboard widget Dashboard\Widgets\SupportTimesWidget
Backend warning Backend\EventListener\UpdateNotificationListener

All services are wired through Configuration/Services.yaml with autowiring; there are no XCLASS overrides.

Data source and caching

ReleaseService is the single place that talks to TYPO3's servers. It reads two official endpoints:

  • https://get.typo3.org/json — the release list.
  • https://get.typo3.org/api/v1/major/ — the per-major metadata (support dates, phases).

The processed result is stored in the dedicated cache nt_supporttimes_cache under an identifier that includes the selected versions, so a filtered roadmap and the full widget do not evict each other. The lifetime is the extension setting cacheLifetime (default 86400 s). A cache hit returns immediately without any HTTP call.

Backend warning

UpdateNotificationListener listens to the core SystemInformationToolbarCollectorEvent (#[AsEventListener], PSR-14). It compares the running version against the latest patch of its major branch and adds a toolbar item linking to get.typo3.org/release/…. Any failure to reach the API is swallowed, so the backend never breaks because the warning could not be computed.

Conventions

  • Modern TYPO3 APIs only — Extbase, Fluid, PSR-14 events, dependency injection.
  • No deprecated core API, no XCLASS.
  • Supported: TYPO3 12.4 / 13.4 / 14, PHP 8.2+.

Release

Releasing is automated. Push a tag v*.*.*:

git tag -a v1.3.1 -m "Release 1.3.1"
git push origin v1.3.1

The Publish to TER workflow then reads the matching ## [VERSION] section from CHANGELOG.md, publishes to the TER with typo3/tailor and uses that section (collapsed to one line) as the upload comment. Keep CHANGELOG.md and the version in ext_emconf.php in step with the tag. Changelog entries are written in English so the TER shows them unchanged.

Pushing to main with changes under docs/ (or CHANGELOG.md) triggers the Docs workflow, which builds this site with mkdocs build --strict and deploys it to https://docs.netthinks.com/nt-supporttimes/.