Skip to content

14.2.0

Choose a tag to compare

@wazum wazum released this 16 May 04:39
· 55 commits to master since this release

WebP generation now works on non-Local FAL drivers (S3, Azure, custom). A per-storage opt-in field controls which storages produce .webp siblings; the publish and lifecycle paths were rewritten on top of FAL public APIs so any conformant driver works out of the box.

New features

  • Per-storage opt-in for non-Local FAL drivers. A new Generate WebP variants field on each sys_file_storage record (tx_webp_mode) selects Auto (on for Local drivers, off for everything else), Enabled, or Disabled. Set it to Enabled on a non-Local storage to opt in. Closes #108.
  • README and reST documentation for remote storages and the CDN-edge serving recipe (CloudFront Function / Cloudflare Worker rewriting Accept: image/webp to the sibling URL).

Changes

  • WebP publish routed through FAL public APIs. ResourceStorage::updateProcessedFile() for processing-folder targets, Folder::addFile(..., DuplicationBehavior::REPLACE) for source-folder targets. Replaces the previous direct filesystem writes. The driver overwrites atomically on REPLACE, so a transient upload failure no longer leaves the user without a previously-valid sibling.
  • WebP sibling lifecycle (move/rename/replace/delete/recycler) uses FAL public APIs (ResourceStorage::moveFile, renameFile, getFile, deleteFile). Works driver-agnostically; remote-driver storages no longer accumulate orphan .webp on cross-storage moves.
  • Sibling now follows the original on rename. Previously only inter-folder moves were tracked, so a BE "rename" left the .webp stranded at the old filename.

Bug fixes

  • TYPO3 v12 compatibility for the new FAL publish path. v12 ships SYS/mediafile_ext without webp, so the publish step tripped ResourceConsistencyService::isFileExtensionAllowed. ext_localconf.php now appends webp to that list when absent.

Upgrade notes

  • Run the database analyzer after upgrade so the new tx_webp_mode column is added to sys_file_storage.
  • For non-Local storages (S3, Azure, custom), edit the storage record and set Generate WebP variants to Enabled. Strongly recommended to also enable async = 1 — synchronous mode adds the driver's upload latency to every page render that processes an image (~100–500 ms per S3 PUT).
  • CDN serving (Accept-header rewrite) is the edge's job. See the new Remote storages README section for CloudFront Function / Cloudflare Worker recipes.