- Added a fix for an update to the AWS S3 SDK which adds headers incompatible with Servd asset platform storage providers
- Added the
--emptyDatabase
flag for theservd/local/pull-database
CLI command to fully empty the local DB before running the import
- Force image transforms to have a width and height compatible with backend transform function memory limits
- Added handling for image transform strings passed as an array
- Fixed the version of the AWS PHP SDK to v3.319.4 to avoid deprecation errors breaking asset uploads.
- Fixed a bug which caused images to be served in their original size instead of being transformed
- Switched asset platform image manipulation availability detection from Craft's native to a custom implementation to support transforms of HEIC/HEIF files even when local ImageMagick/GD isn't able to do so.
- Fixed a save bug which incorrectly set the Base URL field of Servd Asset Volumes to https://cdn2.assets-servd.host/ for projects running on the V3 Asset Platform
- Fixed a bug when purging static cache URLs with no defined path
- Added rawurlencoding to custom file pattern URLs to match non-custom handling
- Fixed an issue where parentheses in v3 asset filenames would cause the image to fail to load.
- Fixed an order of execution bug when integrating the Servd Plugin with Blitz
- Added a CLI command to convert accent modifier characters in asset filenames in the database to their equivalent absolute accented characters as is used by the S3 protocol.
- Normalise any accent modifier characters in asset filenames which upset our Asset Platform storage provider's API
- Ampersands in filenames of assets are now encoded to prevent security token hash mismatches
Important
If you are using {% dynamicInclude %}
twig tags, you will need to clear any static caches to regenerate their HTML with this update.
- Improve security of dynamic include calls
- Increased the timeout when contacting the Servd Asset Platform to obtain a token
- Removed a url encoding which would break asset urls with a rev query param
- Fixed an incompatibility between Asset Platform V3 and ImagerX integration when Imager is passed a URL as a string (like it is when retcon is transforming images)
- Fixed a reference to a const which has recently been removed which broke the ImagerX storage adapter
- A little fix to handle an unexpected code path when a Servd Volume is instantiated before Craft has bootstrapped
- Fixed a couple of bugs when syncing assets between asset platform V3 and the local filesystem
- Added additional request validation for dynamicInclude endpoint to prevent annoying exceptions being thrown by bots
- Removed all URL encoding in transform URLs, it was upsetting things
- Fixed a URL encoding issue involving
@
characters in asset file names which caused 401 security token errors to be returned.
- Support for fillmax image transform mode
- Fix a bug when pulling or pushing the database but the local DB's password is empty
- Fix for the cookie SERVD_LOGGED_IN_STATUS was not cleared as expected when using a wildcard cookie domain.
- The plugin's CSRF token and dynamic content injection JS functions can now be deferred and executed manually to avoid collisions with other ajax requests which might run on intial page load (causing csrf session issues).
- Servd's Imager-X integration will now play nicely with RetCon modified
img
tags, including srcset
- Fixed an edge case which could result in static cache purges getting stuck in a redirect loop
- You can now disable automatic image format conversion if webp isn't treating your images nicely
- Alternatively, you can now use AVIF as your auto-format of choice (check the plugin's settings for the new option)
- Set the
$handled
property on asset url events to prevent Craft undoing our good work
- Use correct action URLs when a site is using a subfolder basepath
- Detection of video files updated to work when custom filetype definitions are included in general.php
- Cleaned up some static cache busting code which was no longer needed
- Avoid purging URLs via Ledge that don't have a recognisable hosts.
- Skip purging null URLs
- Added the 'development' environment to the list of valid Servd environments for pushing/pulling databases and assets
- Added an integration with Blitz to allow it to make use Servd's static cache as a caching reverse proxy. This allows you to use the speed and throughput of the Static Caching layer, whilst keeping all of your cache configuration and functionality within Blitz. Servd + Blitz Docs
- Added a tweak to Yii's Redis session management to make it work in the way everyone expects. The PHP session's TTL is now reset whenever is is opened, which prevents the session from expiring after a specific length of time. It now expires after a specific period of user inactivity which will also shortly be configurable via the Servd dashboard.
- Fixed a bug when rendering a non-image file with the Image Optimize integration.
- Fixed a bug when manually clearing the static cache using a Commerce Product's 'tag'
- Fixed a bug when using an environment variable as the 'subfolder' on a Servd Volume
- Fallback to the defaultImageQuality config variable if no image quality is specified when defining a transformation.
- Apply stricter checks when hydrating dynamicInclude contexts
- Feed Me logs now work as originally intended, browsable in the Craft CP, even when running on a load balanced infra or in an isolated task runner
- Fixed a bug which could cause an infinite loop when clearing tagged urls from the static cache
- The local db push command now runs a MySQL optimize command to fix any indexes that were corrupted during the import
- Support for video on the Asset Platform
- Don't break filename icons for non image files in the Craft CP assets view
- Additional fixes for yii debug bar's recent changes
- Fixed an incompatibility with the latest release of yii2-debug which changed the way data is serialised, breaking our debug logs redis target.
- The option to skip the cache for logged in users now differentiates between users who have cp access and not - so front-end-only users don't have to have all static caching disabled when they log in.
- Background tasks for static cache purges now have a priority of 1025 in order to try to get them to run after more important things as they sometimes can take quite a while.
- Added an optional integration with the feed-me plugin to allow feed logs to be pushed to standard log output. This allows Servd to collect and display them using its normal log aggregation services
- Rearranged the plugin settings page so that it's a little more organised
- Removed README content and added a link to the relevant Servd docs page
- Significantly improve the performance of tag-based static cache clearing for sites with a very large number of unique URLs
- Fire an event in JS when CSRF tokens have been loaded into the DOM if using static caching
- Ensure objects passed into {% dynamicInclude %} contexts, that do not have an id set, are removed (because they can't be rehydrated later)
- Craft CMS Hosting on Servd
- 2.4.16 caused another bug when multiple blocks were loaded onto the same page. Now fixed.
- Fixed a bug which caused only a subset of
dynamicInclude
blocks to be included in thedynamicLoaded
JS event.
- Fixed a bug (recently introduced by changes to users and permissions in Servd's nginx processes) which prevented static cache purges from working as expected in some circumstances.
- Changed the download timeout when syncing assets to/from local volumes to 300 seconds instead of the previous 30 seconds.
- Image transforms alignments using the (e.g.) 'top-left' syntax were being ignored in Servd asset transform URLs. Now they are not.
- Twig extensions were only being registered for 'site' requests which caused problems when rendering templates from a CLI command. This is now fixed.
- The event which fires when the plugin has loaded in any
{% dynamicInclude %}
content now includes a list of all the blocks which have been added to the DOM, allowing you to target them in JS and do things with them (like init alpine JS objects etc).
- Allowed Servd powered ImagerX transforms to work when passed an existing ImagerX model instead of an Asset. Not sure why you'd do it, but folk do, and now they can.
- Added a timeout to the redis connection which clears Servd's static cache. There are now some legitimate situations in which these components might not exist all of the time, but PHP doesn't necesserily know about it.
- Disabled SEOMatic's automatic meta inclusion in templates generated by dynamicInclude - they aren't needed and slow things down
- Fixed an issue with dynamicInclude blocks which are placed within a loop
- Bug fix for projects which don't have commerce installed
- A variable check error introduced in 2.4.4 #28
- Added the Servd Static Cache clear button to commerce product pages
- Added a
--skipDelete
flag for preventing deletion of assets when cloning up or down from the local filesystem.
- Added a link to the Servd SMTP docs when the sendmail CP alert is shown. This provides information on why sendmail is disabled and also actionable alternative.
- You can now disable image asset transforms and optimisations with a plugin setting. This can be useful if you're using another plugin or service to perform the necessary transforms and you only require the original image's URL.
- You can now specify 'placeholder' on the 'dynamicInclude' tag, and combine with the 'endDynamicInclude' tag, in order to display placeholder content which is visible during dynamic content loading.
- Fixed a bug with dynamicIncludes which prevented the plugin from automatically detecting the availability of ESI
- Fixed a bug with dynamicIncludes which would strip certain values from context arrays if their keys matched values from Craft's global context
- When the static cache is cleared, also clear all associated metadata. This ensures any cached 301/302 redirects are purged.
- dynamicInclude blocks whose responses contain multiple top level nodes no longer break things.
- Support for super simple dynamic content in combination with static caching. Also supports zero-config ESI dynamic content if avaialble on Servd
- Updated the static cache clear button to purge all URLs associated with an entry, rather than just the one for the default site
- Altered the method used to detect whether users are logged in when deciding whether or not to skip the static cache for those users
- Fixed the 2.2.3 fix which didn't fix the thing it was supposed to fix
- Fixed a bug when using a mysql 8 client to locally to pull database dumps from Servd
- Tweaked a couple of control panel routes which were throwing access denied errors for non-admin users.
- Remove composer.json version constraint which was added to prevent an AWS SDK bug from being downloaded (which is now fixed)
- Added local development tooling
- Constrained AWS SDK version to prevent the bugged 3.175 update from being used
- If another plugin sets the URL for an image or thumbnail stored on the Servd asset platform, don't replace it with a CDN link. (Fixes an issue when using the plugin alongside https://github.com/spicywebau/craft-embedded-assets)
- Improved warnings and error messages for problems with Servd's asset platform
- Allow Servd's warning banners in the Craft control panel to be suppressed
- Purge URLs in batches of 50 to ensure the Craft queue doesn't get clogged up when large purge requests are triggered
- Only track static cache tags on URLs which are actually going to be cached
- Include the triggers for cache purges in the background task for informational purposes
- Do not track static cache tags against pages which return a non-200 response code, they won't get cached anyway
- Compatibility with optional GET param inclusion in static cache keys
- Improved cache tag garbage collection
- Further improvements to static cache tagging performance
- Fixed a bug which was causing more tags to be associated with statically cached URLs than necessary.
- Batched redis commands during url <-> tag associations
- Deduplicated static cache tags
- Pinned the AWS PHP SDK version allowed to those that do not contain a critical bug: aws/aws-sdk-php#2189
- Prevented the S3 URL structure from being mangled by any other competing configurations
- Removed use of a deprecated redis call
- Manual control panel button for clearing individual Entries from the static cache
- Protected against a potential error when an asset is deleted while another CP user is doing things
- Fixed a bug when using full purge static caching and saving a Craft Section
- Fixed an upgrade path error from V1 to V2.1
- Automatic, tag based static cache invalidation
- CLI command
clear-caches/servd-asset-storage
useclear-caches/servd-static-cache
instead
- Handling of filesystem based static cache which is no longer used
- Fixed a bug which prevented the
settings
property from being accessed on a Servd Assets Volume
- Fixed a bug which prevented the CDN cache being invalidated for non-image assets when the volume used a subfolder.
{note} This update contains a migration which attempts to maintain any existing custom domains which you have used in previous versions of the plugin. Please double check your volume settings after updating to make sure that this migration has had the intended effect.
- You can now define fully custom URL structures for source files and optimised images which make use of custom domains. You'll need to provide your own logic (in a Cloudflare worker or Lambda@edge) to proxy this request and convert the URL structure back to Servd's expected format.
- Servd asset volumes are now forced to use the correct Base URL to avoid incorrect settings for this value
- The data for the Yii2 Debug Bar will be stored in Redis instead of the filesystem, allowing it to work on ephemeral or load balanced environments.
- You can now clear the CDN cache for the Servd Assets Platform by clicking a button in the Craft CP. This will cause any image transforms to be re-applied and any caches for original files will be destroyed.
- CORS tokens were being injected into pages even when they were disabled. These overexicted tokens are now firmly back under control.
- Graceful handling of a situation in which the $SERVD_ASSETS_ENVIRONMENT is explicitly set in the plugin settings, but the env var doesn't actually exist
- Fixed display of a control panel alert which prompts user to add appropriate plugin settings
- ImageOptimize support for Servd assets platform
- ImagerX support for Servd assets platform (requires ImagerX Pro)
- Control panel warnings for Servd related misconfigurations
- Large code refactor to plan for upcoming new features
- Moved Servd Project Slug and Security Key config param to plugin settings instead of volume settings
- Some things that previously broke, but nobody noticed 🤫
- No default env var fallback for $SERVD_ASSETS_ENVIRONMENT (#11)
- Support for Servd's legacy asset platform
- Fixed a bug introduced with Craft 3.5 which prevents assets being downloaded from the control panel
- Only asynchronously load CSRF tokens if there's an element on the page which will actually use it. Reduces precious PHP executions for statically cached sites.
- Optimised assets with special characters in their filename were generating an incorrect security token because of some url encoding things. That is now longer the case and everyone can now safely include spaces, copyright symbols or aubergine emojis in their filenames.
- Ability to override the automatically detected environment for assets. This allows, for E.G., developers to use the assets stored in their production environment whilst working locally.
- Fixed a typo in the plugin settings
- Ability to disable automatic static cache clearing or restrict it to only occur when entries are saved as part of a control panel request.
- Ability to replace the domain used for optimised images. This allows the use of custom domains for assets stored within the Servd Assets Platform. Read how.
Added static cache busting on element updates (beta)
Initial release.