- Don't try to apply filters to assets that are seemingly corrupt, and have a
0
width or0
height (#383) - Fixed
srcset
width filtering ()
- Allow for empty
alt
tags for screen readers as per WCAG (411)
- Don't add image variants if no variant creator for them exists (#410)
- Fix a visual issue with the sizing arrows for Optimized Image fields
- Don't apply background placeholder CSS to images that may be transparent like SVGs or GIFs (#410)
- Fixed an issue where
srcsetMaxWidth()
could return incorrect results (#407) - Fixed an issue where the data-uri for inline SVG styles were incorrect in some browsers because the spaces were not URL-encoded (#408)
- Fixed an issue where the
.imgTag()
and.pictureTag()
would output and invalidstyle
attribute for lazy loaded images (#400)
- Added the ability to pass in a config array to
.imgTag()
,.pictureTag()
and.linkPreloadTag()
- Changed
.loading()
→.loadingStrategy()
,.artDirection()
→addSourceFrom()
- Added a
--queue
option to theimage-optimize/optimize/create
console command if you want to defer the image generation to be run via queue job, rather than immediately via the console command - Add
phpstan
andecs
code linting - Add
code-analysis.yaml
GitHub action - Add
.imgTag()
to theOptimizedImage
model, which generates a complete<img>
tag from theOptimizedImage
- Add
.pictureTag()
to theOptimizedImage
model, which generates a complete<picture>
tag from theOptimizedImage
- Add
.linkPreloadTag()
to theOptimizedImage
model, which generates a complete<link rel="preload">
tag from theOptimizedImage
- Add
craft.imageOptimize.renderLazySizesJs()
to render the LazySizes JavaScript for lazy loading images - Add
craft.imageOptimize.renderLazySizesFallbackJs()
to render the LazySizes JavaScript with a support script that uses LazySizes as a fallback for browsers that don't support theloading
property
- Added PDF to the Ignore Files field settings (#364)
- Updated docs to use node 20 & a new sitemap plugin
- Switch over to Vite
^5.0.0
& Node^20.0.0
for the buildchain - PHPstan code cleanup
- ECS code cleanup
- Automate release generation via GitHub action
- Add versioning to the docs
- Side-step an issue which caused Craft 4.4.x to do unwanted image transform work even when using an external service to do the transforms (#373) (#13018)
- Remove the old Craft generated transform that's still sitting in the temp directory (#380)
- Use dynamic docker container name & port for the
buildchain
- Update the
buildchain
to use Vite^4.0.0
- Updated docs to use VitePress
^1.0.0-alpha.29
- Refactored the docs buildchain to use a dynamic docker container setup
- Fixed HMR in local dev with explicit alias that resolves to the actual directory
- Fixed an issue where the
craft image-optimize/optimize/create
CLI command did not properly optimize all images (#350) - Fixed an issue which caused the Imgix
auto
to no longer work for auto format (#357) - Fixed a JavaScript console error in field settings due to Garnish shuffling around how things work for menus
- Fixed an issue where
srcsetWidth()
wouldn't return the proper variant, due to strict comparison operator (#327) - Fixed an issue where using a transform method other than Craft along with
asset.getUrl()
in your templates could throw an exception (#363)
- Add
allow-plugins
tocomposer.json
to allow CI tests to work
- Fixed an issue where transforms don't get deleted on remote volumes if the format was set to
auto
(#341) - Normalize for lowercase file extensions and normalize
jpeg
->jpg
everywhere
- If there's no transform requested, return
null
so other plugins have a crack at it (#349)
- Fixed an issue where calling
generateUrl()
would throw an exception for the Imgix transform method (#342)
- If there's no transform requested, and we're not using some external service for image transforms, return
null
so other plugins have a crack at it
- Set the variant format to the current asset format if it is left empty, otherwise Craft recursively calls
getTransformUrl()
and hangs the queue (#329) (#343) - Fixed an issue where variants would not resave under certain circumstance due to a typing issue (#335)
- Make the properties in the
OptimizedImage
nullable to avoid null property values throwing an exception (#345) - Fixed an issue that caused sub-folders to not appear in the OptimizedImages field settings (#333)
- Fixed an issue that could cause JavaScript errors for newly created OptimizedImages fields, and in slideouts (#344)
- Fix
ImageTransform::getAssetUri()
to properly handle S3 and other volume sub-directories
- Fixed an issue with properties not being initialized before being accessed, which would cause image uploads to fail (#323)
- Initial Craft CMS 4 compatibility