All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- TYPO3 v14.0 support - full compatibility with TYPO3 14.0+ while maintaining TYPO3 13.4 support (#495)
- PHP 8.5 support - extends PHP compatibility to include the latest stable PHP version (#495)
- DDEV environment for TYPO3 v14 local testing (
ddev install-v14) - E2E tests for image style/alignment functionality (#505)
- CI test matrix expanded to 8 combinations (TYPO3 13.4/14.0 x PHP 8.2/8.3/8.4/8.5)
- Updated branch alias to 13.x-dev
- Clarified documentation for two image styling approaches (built-in balloon toolbar vs native Style dropdown) (#506)
- Image
altandtitleattributes rendering as literal"true"instead of empty string whendata-alt-override="true"ordata-title-override="true"was set (#502, #503)
13.1.5 - 2025-12-20
Note: Versions 13.1.0-13.1.4 were blocked by GitHub's immutable releases feature during release troubleshooting. This is the first published release of the 13.1.x series.
- Modern service-based architecture using TYPO3 v13 ViewFactoryInterface and Fluid templates (#399)
- New DTOs: ImageRenderingDto and LinkDto for type-safe data contracts
- Three-Service Architecture: ImageAttributeParser (HTML parsing), ImageResolverService (business logic + security), ImageRenderingService (Fluid rendering)
- 6 Fluid Templates: Standalone, WithCaption, Link, LinkWithCaption, Popup, PopupWithCaption
- Template Override Support: Integrators can now override templates instead of PHP classes
- DOMDocument Parsing: Replaced regex-based parsing with robust DOMDocument for better HTML5 support
- Performance: Minimal overhead (+0.05-0.15ms per image) with ViewFactory singleton and template caching
- Comprehensive test suite for new architecture (#399)
- Unit Tests: 50+ test methods covering DTOs, services, and business logic (964 lines)
- Integration Tests: 25+ test methods validating full pipeline and security (389 lines)
- Test Coverage: >90% for new architecture components
- Complete documentation for modernization (#399)
- RFC: Architecture proposal with expert validation (751 lines)
- Migration Guide: Step-by-step upgrade path for service architecture (300+ lines)
- Security Checklist: Pre-release validation requirements
- Performance Benchmarking: Guide with benchmarking scripts and acceptance criteria
- SVG dimension support and quality-based image processing (#331, #388)
- SVG dimension extraction from viewBox and width/height attributes
- Quality multiplier support (No Scaling, Standard 1.0x, Retina 2.0x, Ultra 3.0x, Print 6.0x)
- Quality selector dropdown in image dialog with visual feedback and persistence
- TSConfig maxWidth/maxHeight support for quality-based processing
- noScale support to skip image processing and use original files (#77)
- Auto-optimization when dimensions match original
- SVG auto-detection for vector graphics
- File size threshold control
- CKEditor 5 Widget UI with block toolbar for images (#393)
- Automatic RTE softref enforcement via global PSR-14 event listener (#371)
- Translation support for all hardcoded strings in image dialog (#391)
- TypoScript bridge for lazyLoading configuration (#373)
- Zero-configuration installation via TYPO3 v13 site sets (#429)
- Automatic TypoScript loading
- Default RTE configuration with insertimage button enabled
- Global Page TSConfig loading
- DDEV development environment with TYPO3 v13 (#394)
- E2E tests with Playwright for click-to-enlarge functionality (#455)
- Mutation testing with Infection for code quality validation (#452)
- Fuzz testing for HTML parsing security (#451)
- 18+ language translations via Crowdin integration (#405)
- BREAKING (Internal Only): Legacy controllers removed and replaced with ImageRenderingAdapter (#471)
- Removed:
ImageRenderingController,ImageLinkRenderingController,AbstractImageRenderingController - New:
ImageRenderingAdapterbridges TypoScript to modern service architecture - TypoScript interface remains 100% compatible - no user-facing changes
- ~1,300 lines of legacy controller code removed
- See
Documentation/Architecture/Migration-Guide-v14.mdfor architecture details
- Removed:
- Migrated from deprecated @typo3/ckeditor5-bundle.js to direct CKEditor imports (#380)
- Replaced non-inclusive terminology with inclusive language (#371)
- Updated company name to Netresearch DTT GmbH (#442)
- TER publishing compatibility: ext_emconf.php no longer includes strict_types declaration (#489)
- CI workflow now validates ext_emconf.php for TER compatibility (#489)
- Prevent parseFunc whitespace artifacts in image rendering (#482)
- Folder navigation and file permission check (#480, #290)
- Resolve attribute order mismatch in linked image replacement (#477)
- Remove dead code referencing undefined $checkboxNoResize (#470)
- Remove TCA
richtextConfigurationoverride that blocked TSconfig preset overrides (#464, #467) - Prevent empty link wrappers and ensure Bootstrap Package compatibility (#392)
- Preserve link attributes on TYPO3 images (#385, #387)
- Namespace DoubleClickObserver to prevent conflicts with other plugins (#383)
- Add link toolbar configuration to prevent linkProperties error (#382)
- Add missing DefaultUploadFolderResolver to SelectImageController DI (#381)
- Replace invalid env syntax with ExtensionConfiguration service injection (#371)
- Apply Rector FunctionFirstClassCallableRector modernization (#371)
- Use translated label for Insert Image button (#391)
- Add file: protocol blocking to prevent local file access (#478)
- Remove allowSvgImages option (security risk without proper sanitization) (#478)
- Graceful frontend context handling to prevent information disclosure (#479)
- Fix GitHub Actions workflow permissions (Scorecard alert) (#484)
- Preserved Security Measures: All existing security protections maintained in new architecture
- File visibility validation (prevents privilege escalation)
- XSS prevention via htmlspecialchars (ENT_QUOTES | ENT_HTML5)
- ReDoS protection (DOMDocument eliminates catastrophic backtracking)
- Type safety via readonly DTO properties
- Architecture Benefits:
- Separation of Concerns: Parser → Resolver → Renderer pipeline
- TYPO3 v13 Best Practices: Official ViewFactoryInterface standard
- Maintainability: 876 lines of controller logic replaced by clean service architecture
- Extensibility: Template overrides >> PHP overrides for integrators
- Breaking Changes: Internal only - legacy controllers removed without deprecation period (no XCLASS usage found in ecosystem)
- Risk Assessment: LOW - Zero evidence of XCLASS usage found in ecosystem
- Code Statistics: +2,596 lines (implementation + tests + docs), 23 new files
13.0.1 - 2025-11-26
- Change extension icon to Netresearch logo (#419)
- TER compatibility and branding updates (#427)
- Updated descriptions in
composer.jsonandext_emconf.phpto mention Netresearch
- Updated descriptions in
13.0.0 - 2025-01-08
- TYPO3 v13.4 LTS support
- BREAKING: Requires TYPO3 v13.4+ and PHP 8.2+
- Upgraded dependencies and APIs for TYPO3 v13 compatibility
- Removed MagicImageService (replaced by TYPO3 core functionality)
- Updated GitHub Actions for Node.js compatibility
- Inline image with link sometimes causes incorrect ordering (#186)
- RteImagePreviewRenderer throws warning with invalid HTML (#244)
- Call to a member function count() on null (#242)
- Add missing property transformationKey to RteImagesDbHook
- Fix onclick event for select image modal
- Loading RTE throws PHP Runtime Deprecation Notice
- Regenerate images in backend view
- Fix missing TSFE method for v13 compatibility
- Fix missing TextPreviewRenderer for v13 compatibility
- Support for TYPO3 13.4
12.0.4 - 2024-11-21
- Fix creation of processed files for frontend pages (#285)
- Update README.md for v12 (#289)
- Revert the change "fix package name for cms_rte_ckeditor in ext_emconf.php" (#280)
- Upgrade/fix test suite (#294)
12.0.2 - 2023-11-22
- Allow inline images
- Make tests compatible with TYPO3 > v12
- Exclude TYPO3 v13 + PHP 8.1 from test matrix
- Update GitHub Actions to fix Node.js 16 deprecation
- Migrate composeUpdate step for TYPO3 v12 as default and v13 support
12.0.1 - 2023-09-18
- Apply class to
<img>element - Update typo3/testing-framework requirement from ^7.0.2 to ^8.0.7
- Update runtests.sh script
- Update branch aliases for v12
12.0.0 - 2023-08-25
- TYPO3 v12 LTS support
- BREAKING: Requires TYPO3 v12+ and PHP 8.1+
- Update ext_emconf.php for TYPO3 v12
- Add TYPO3 badges to README
- Fix PHP Fatal error: Type of testExtensionsToLoad must be array
- Remove superfluous null checks and code style improvements
11.0.14 - 2023-07-15
- Add timestamp to force javascript change (#186)
- Inline image with link sometimes causes incorrect ordering (#186)
- Regenerate images in backend view
- Fix regex to find images (#112)
- Remove unnecessary check for "data-*-override" attributes (#247)
- Rework ImageLinkRenderingController to match ImageRenderingController
11.0.13 - 2023-06-20
- Sanitize HTML to prevent warnings (#244)
11.0.12 - 2023-06-15
- RteImagePreviewRenderer throws warning with invalid HTML (#244)
- Call to a member function count() on null (#242)
- Add missing property transformationKey to RteImagesDbHook
- Fix onclick event for select image modal
- Loading RTE throws PHP Runtime Deprecation Notice
- Fix incorrect parse indexes leading to dynamic image URL not being resolved
- Update typo3/testing-framework requirement from ^6.16.7 to ^7.0.2
11.0.11 - 2023-04-10
- TYPO3 v11 LTS support
- Configuration option for SVG images
- Generate publicUrl from originalImageFile storage
- Fix fileadmin doesn't start with slash in 11LTS
- Fix misuse of 11LTS BE processing middleware URLs
- Catch exception when fetching external image
- Make fetching of external image configurable
- Fix broken images in RTEs inside flexform elements
- Fix multiple PHP 8.0 warnings
- Wrong link in image (#126)
- Wrong backwards compatibility (#142)
- Remove wrapping p-tag from images (#112)
- Fix jquery requirement to not crash the ckeditor (#122)
- Fix override detection for title/alt attributes; allow empty values
- Rework preview in backend (#56)
- PHP Warning: Undefined array key "plainImageMode" when inserting SVG image (#205)
- Extend from AbstractSoftReferenceIndexParser
- Implement interface instead of deprecated extension of SoftReferenceIndexParser
11.0.5 - 2022-12-05
- Update dependencies
- Add dependabot configuration
11.0.4 - 2022-11-28
- Fix package replacement
11.0.3 - 2022-11-15
- Disabled button issue in CKEditor toolbar (#145)
- Make extension error-free on PHPStan levels 0-8
- Require PHP 7.4 or newer
10.1.0 - 2021-05-20
- TYPO3 10 LTS support
- Linked image renderer (#42)
- Remove empty image attributes (#35)
- Regenerate missing processed images (#78)
- TYPO3 fluid_styled_content lazyload support (#82)
- Respect max width and height configuration for images when saving element (#61)
- Consider override checkbox for title and alt attributes (#69)
- Allow single quotes in image attributes (#74)
- Use original files width and height for ratio and max (#70)
- Add IE11 support by removing arrow functions (#66)
- Regenerate missing magic image on rendering images within links (#57, #25)
- Avoid losing existing attributes when editing image (#54)
- Image properties not working inside table cell (#41)
- Fix DOM element count
- Fix TER package replacement
- Support legacy
clickenlargeattribute for image zoom