Change log
Version 13.3.0
- [FEATURE] Warn before deleting a model object that has connected relations — a confirmation dialog now lists affected relations and lets the user cancel or proceed.
- [FEATURE] Warn before discarding unsaved changes when switching extensions — a confirmation dialog prevents accidental data loss.
- [FEATURE] Introduce Storybook for isolated Lit component development.
- [FEATURE] Replace unmaintained
Sho_Inflectwithdoctrine/inflectorfor pluralization and singularization. - [BUGFIX]
composer.jsonis now updated on each save and includes author email and company fields. - [DOCS] Extend Roundtrip mode chapter with YAML config, split token, and operational guides.
- [DOCS] Replace
Settings.cfgwithguides.xmlin generated documentation. - [TASK] Improve GitHub workflows, issue templates and CI config.
- [TASK] Add commit message validation hook and tighten CI checks.
- [TASK] Add scheduled cleanup of old workflow runs.
- [TASK] Add regression test for newline after case label.
Version 13.2.0
- [FEATURE] TCA
selectproperties can now have custom items configured directly in the domain modeling editor — each item has a label and a value. - [TASK]
locallang_csh_*.xlffiles are no longer generated. CSH (Context Sensitive Help) was removed in TYPO3 v12; field descriptions are now written exclusively tolocallang_db.xlfand referenced via the TCAdescriptionkey. When a domain object is removed via RoundTrip, any leftoverlocallang_csh_*.xmlandlocallang_csh_*.xlffiles are cleaned up automatically. Existing generated extensions may have orphaned CSH files that can be deleted manually. - [BUGFIX] Renaming a domain object no longer corrupts the controller constructor and action parameter names.
- [BUGFIX] Property settings panel now correctly shows and hides fields based on the selected property type.
- [BUGFIX] Boolean properties no longer always appear as checked after loading an existing extension.
- [BUGFIX] Saving an extension no longer fails after a relation has been deleted.
- [BUGFIX] Opening old
ExtensionBuilder.jsonfiles that are missing therenderTypekey no longer causes an error — the field is silently ignored. - [BUGFIX] Indentation of nested method calls is preserved correctly during RoundTrip.
- [BUGFIX] Field descriptions are now preserved with their original casing in generated XLF files.
- [BUGFIX]
SelectPropertytype is now stored as a string instead of an integer, fixing issues when loading extensions that use select fields. - [BUGFIX] Fixed undefined array key
excludeFieldwarning inObjectSchemaBuilder.
Version 13.1.0
- [BUGFIX]
ext_tables.sqlnow includes aCREATE TABLEstatement for models that have no own properties but are the target of aZeroToMany inlinerelation — previously the FK column was silently dropped, leaving the database table uncreated. - [BUGFIX] A validation warning is now shown when a domain object has no properties, informing the user that no
CREATE TABLEstatement will be generated inext_tables.sql. - [BUGFIX] Generated controller actions now declare
ResponseInterfaceas their return type, matching the TYPO3 v13 standard. - [BUGFIX]
f:imageViewHelper calls in generated templates now use theimageattribute instead ofsrc, fixing rendering of filenames with Umlauts or special characters. - [FEATURE] XLF files are no longer rewritten when only the
date=attribute changed — avoids VCS noise on every regeneration. ThestaticDateInXliffFilessetting is removed as it is no longer needed. - [FEATURE] Generated backend module extensions now include a
user.tsconfigfile that makes the backend module accessible without manual TSconfig setup. - [FEATURE]
extbaseis now automatically added as a dependency to generated extensions that use Extbase controllers or domain objects.
Version 13.0.0
Breaking changes and migrations (v12 → v13):
- [TASK] Update dependencies to TYPO3 ^13.4, PHP ^8.3.
- [TASK] Frontend plugins are now registered as
CTypecontent elements usingPLUGIN_TYPE_CONTENT_ELEMENT— the deprecatedlist_typeapproach is no longer used.page.tsconfigwizard entries are no longer generated becauseregisterPlugin()withCTypeautomatically adds the plugin to the content element wizard. Existing generated extensions usinglist_typemust be regenerated to adopt the new registration. - [TASK] TypoScript is no longer loaded via
ext_typoscript_setup.typoscript(which was dropped in TYPO3 v13) — the extension now registers its TypoScript paths viaaddTypoScriptSetup()inext_localconf.php. - [FEATURE] Extensions with frontend plugins can now optionally generate a Site Set (
Configuration/Sets/). When the Generate Site Set option is enabled in the editor, the generator createsconfig.yaml,setup.typoscript, andconstants.typoscriptinstead of the classicaddStaticFileapproach. The classic behavior is unchanged when the option is not enabled. - [BUGFIX] Constructor property promotion flags (
readonly, visibility modifiers) are now preserved correctly during RoundTrip code generation. - [TASK] Generated TypoScript setup templates no longer include a
storagePidsetting — the line is commented out so integrators can enable it deliberately.
Version 12.0.0
Breaking changes and migrations (v11 → v12):
- [TASK] Update dependencies to TYPO3 ^12.4, PHP ^8.3, PHPUnit ^10, testing-framework ^7, add Rector
- [TASK] Migrate backend module registration from
ext_tables.phptoConfiguration/Backend/Modules.php - [TASK] Rename TypoScript setup file extension from
.txtto.typoscript - [TASK] Replace
GeneralUtility::makeInstance()with Dependency Injection throughout - [TASK] Migrate setter injection to constructor injection in all controller and service classes
- [TASK] Replace YUI/WireIt/InputEx with Lit Web Components and TYPO3 v12 CSS variables
- [TASK] Replace yarn/SCSS build pipeline with Vite and ESM module bundling (npm)
- [TASK] Add Playwright E2E test infrastructure
- [TASK] Migrate TCA:
type=number(wastype=input/eval=int),type=link(wasrenderType=inputLink) - [TASK] Migrate TCA items arrays to associative format (
label/valuekeys)
Version 11.0.13
- [DOCS] Adds information about a possible missing storage path when using composer mode
- Bugfixes
Version 11.0.12
- [TASK] Switch documentation rendering to PHP (thanks to Sandra Erbel)
- [BUGFIX] fix issue with default value for nodefactory
- [BUGFIX] Enables scroll view of extension save dialog confirmations (thanks to warki)
Version 11.0.11
- [TASK] Use current standard for web-dir (thanks to Sybille Peters)
- [BUGFIX] - Undefined array key $parentClass
Version 11.0.10
- [BUGFIX] Allow null for native date and time
- [TASK] one controller action pair per line
- [FEATURE] add tca field description
- [BUGFIX] resolve nullable types correctly
Version 11.0.9
- [BUGFIX] Generate correct TCA for images and files
- [TASK] Corrected CSS-Default-Styles
- [DOCS] Small changes in Documentation
Version 11.0.8
- [BUGFIX] fixes links in extension module
- [TASK] Set the description field of backend module to textarea
- [BUGFIX] Fix issue in JS - "Relations"
Version 11.0.4
- [BUGFIX] Fix warning if setDefaultValuesForClassProperties does not exist
- [DOCS] Add sponsoring page
- [BUGFIX] fixes title for advanced option button
- [BUGFIX] Generate correct .xlf files
- [BUGFIX] Language file not merged
- [BUGFIX] issue 599 missing property settings
Version 11.0.3
- [TASK] Add support for typo3/cms-composer-installers v4
Version 11.0.2
- [DOCS] Checkbox was renamed to "Generate documentation"
- [DOCS] Fix controller action names in blog example
- [DOCS] Small fixes derived from backport of documentation
- [DOCS] Small fixes derived from backport of documentation v11
- [TASK] Make Extension Builder compatible with PHP 8.0
- [TASK] Add allowed composer plugins
- [TASK] Update return type hint for model getters
- [BUGFIX] Strip trailing spaces after comma
- [DOCS] Rename slack channel to #extension-builder
- [TASK] Align with new TYPO3 documentation standards
- [TASK] Align with new TYPO3 documentation standards (follow-up)
- [BUGFIX] Fix PHP8 warning because overwriteSettings not found in empty settings