Version 5.1.0
October 4, 2026
Waterfall 5.1 requires Craft CMS 5.9 or later. Update Craft first. Watermark text now renders in Craft's Twig sandbox, so text that used anything beyond the asset's own fields,
nowandsiteNamewill print as literal text. Non-admins can no longer change watermark profiles, and people who apply watermarks now need Replace files on the volumes involved.
Security
- Profile text is Twig, run against every image the profile marks, and it was rendered with
renderObjectTemplate(), which is not a sandbox. It now renders in Craft's Twig sandbox: the asset's fields,nowandsiteNamestill work;craft.appand the objects behind it don't. Hence the Craft 5.9 requirement. - Profile text was also writable by non-admins: the Manage watermark profiles permission was enough to write it, or to run it at once through the preview. Saving and deleting profiles now takes an admin, on an environment that allows admin changes, as Craft's own project config does. The preview is admin-only, and the permission, now View watermark profiles, opens the screens read-only.
- Applying and restoring rewrite the file, but the Apply and restore watermarks permission did it for any image in any volume. It now also needs what Craft's Replace file needs: the right to save the asset and to replace files in its volume. This applies to the bulk run, the dry run, the asset index actions and the asset panel. Console runs are unchanged.
Fixed
- Restoring an original from the control panel didn't stick when Apply on upload was on. The restore replaced the file; the upload hook took that for a new upload and watermarked it again as the request finished. Waterfall's own writes are no longer treated as uploads.
Version 5.0.0
August 23, 2026
Initial release.
- Watermark profiles stored in project config: image or text marks, nine positions plus tiling and custom offsets, scaling relative to the base image, opacity, rotation and blend modes.
- Three application modes per profile — into generated transforms, permanently into the original file with a restorable backup, or on demand from Twig, an element action or the console.
- GD and Imagick compositing through one placement engine, with GD's
imagecopymerge()alpha trap routed around. - ImageOptimize integration: Waterfall's transform handler is prepended, so optimized files and
.webp/.avifvariants carry the watermark. - Imager-X integration: a registered
waterfalleffect, automatic application throughEVENT_BEFORE_TRANSFORM_IMAGE, and nativewatermarkparameter output. - Delivery-time providers: imgix, Cloudinary, ImageKit and a URL template driver.
- Bulk apply and restore with a dry run, from the CP or the console, queued for large runs.
- Per-asset control through a Waterfall field, and a status panel on the asset edit screen.