Version 1.2.0
July 21, 2026
Added
imagekit_img()Twig function: renders a complete responsive<img>tag (src, srcset, sizes, intrinsic width/height, alt, lazy loading, async decoding) with an automatic fallback to the plain asset URL when the plugin is unconfigured or the devMode fallback is active.imagekit_configured()Twig function.- The full ImageKit option vocabulary:
flip,opacity,zoom,xc/yc,border,trim,progressive,lossless,metadata,colorProfile,defaultImage,namedtransforms,original, and thesharpen/usm/contrast/grayscale/shadow/gradienteffects, with boolean flag handling (grayscale: true->e-grayscale,trim: true->t-true). - AI transformation conveniences (metered ImageKit add-ons):
removeBackground,removeBackgroundPro,dropShadow,upscale,retouch,changeBackgroundandgenerativeFill. chainoption: extra chained transformation steps as an array of option maps.proxyoption for asset sources: use the full asset URL (ImageKit web proxy) instead of an endpoint-relative path.overlayoption: one or more image/text overlay layers from a friendly definition.- Native transformer: focal-point-aware centered crops (an explicit non-center
positionstill wins) andinterlacemapped to progressive JPEG output. - New settings:
defaultSrcsetWidths,useNativeInDevMode,uploadAllowedExtensions,uploadMaxFileSize;signedExpireis now editable in the control panel. - A PHPUnit test suite for the transformation mapping and a GitHub Actions CI workflow.
Changed
imagekit_srcset()widths are now optional and fall back to thedefaultSrcsetWidthssetting.- The entire codebase (comments, exceptions, log messages) is now English.
- Settings are validated (
defaultQuality1-100,defaultFormatwhitelist, non-negativesignedExpire).
Security
- The upload endpoint now requires the
utility:imagekitpermission instead of accepting any logged-in control panel user. - Uploads are validated server-side: extension allowlist, finfo-based MIME sniff and a size cap; source URLs must be http(s) URLs or Media Library paths.
- Unexpected errors no longer leak raw exception messages to the client; they are logged and answered with a generic message.
- The plugin no longer emits placeholder-endpoint URLs when unconfigured: asset sources fall back to native Craft URLs, absolute URLs are returned untouched, and a warning is logged.
- Requesting a signed URL without a configured private key now logs an error and returns an unsigned URL instead of a silently invalid signature.
Version 1.1.2
July 21, 2026
Changed
- Re-release of 1.1.1 to work around a Plugin Store packaging hiccup (1.1.1 was picked up by the plugin API but never packaged into the Composer repository). No code changes from 1.1.1.
Version 1.1.1
July 21, 2026
Fixed
- Asset sources no longer throw a
TypeErrorwhen the URL endpoint is not configured: an undefinedIMAGEKIT_URL_ENDPOINT(whereApp::parseEnv()returnsnull, not'') now correctly triggers the native Craft transform fallback instead ofrtrim(null).
Version 1.1.0
July 21, 2026
Added
- The
imagekit()Twig helper (function + filter) andimagekit_srcset()now accept a CraftAssetas the source, in addition to a string path/URL. - Focal-point-aware cropping for asset sources: a convenience
modeoption (crop/fit) pluswidth/height. Incropmode a non-centeredasset.focalPointproduces a chainedc-force->cm-extracttransform around the focal point; otherwise a centered crop. - Asset sources return
''for anullasset and fall back to a native Craft transform URL when the URL endpoint is not configured. xandytransformation options (for manual extract crops).
Version 1.0.0
July 21, 2026
Added
- Initial release.
- Native Craft image transformer: registers ImageKit as a transformer via
craft\services\ImageTransforms::EVENT_REGISTER_IMAGE_TRANSFORMERS, so Craft's built-in transform API (asset.url({ width: 400 })) can return ImageKit URLs. - Twig helpers
imagekit()(function + filter) andimagekit_srcset()for real-time transformation URLs on a Media Library path or an existing (external) URL (web proxy). - Optional signed URLs with a configurable expiry.
- Control panel utility to upload a local file or URL to the ImageKit Media Library and get the transformed URL plus the Media Library path back.
- Settings via env vars (
IMAGEKIT_PUBLIC_KEY,IMAGEKIT_PRIVATE_KEY,IMAGEKIT_URL_ENDPOINT) orconfig/imagekit.php.