7th July

  • Added the ability to add multiple Team Domains to a project, allowing for the testing of multisites and also attaching custom domains to multiple environments.

3rd July

  • Added a fix to show SQL errors in task logs during failed database imports. This had been lost due to a change in the mysql stderr output in recent versions.
  • Added nag banners to our dashboard to upgrade to the latest asset platform and ingress platform.

25th June

  • Added the Metrics > Traffic page to the dashboard for Ingress Platform upgraded projects which shows a 30 days history of Requests, Page Views and Visits with optional Host segmentation. Lots more stuff to come for this page (including making the styling actually work) so keep an eye on it.

18th June

  • Improved validation for the primary domain subdomain field in the Domains page.

30th May

  • In a project's SMTP settings page, you can now see how many emails are left for the month. The value updates every hour.

11th April

  • Full support for 'min' 'max' and 'fillmax' fit modes on our asset platform and accompanying Servd Plugin updates to use them depending on transform upscale settings.
  • domain now has full DNSSEC enabled, so any projects using CNAME DNS records can also have full DNSSEC

8th April

19th March

  • Bundles can now be created with PHP 8.3!
  • Basic auth challenges can now be restricted to specific paths by adding regex patterns in the dashboard basic auth settings. This allows you to say, put another layer of auth on your control panel, or keep specific front-end pages private.
  • A few miscellaneous bug fixes for team domains, spike protection validation and logging.

14th March

  • Update to logging to allow the last 15 mins of logs to display initially when visiting the Logs page in the dashboard. Useful to check for errors related to a recent event without needing to download a bunch of Logs to look through
  • Started rollout for updated handling of image upscaling on the asset platform. Newly introduced 'min', 'max' and 'fillmax' fit modes make it easy to disable upscaling. Accompanying Servd Plugin updates to be released shortly.

3rd March

  • New logging platform! Logs are now stored for at least 30 days. We've also switched to using Craft's default log format for collecting log metadata like stack traces. We'll be rolling out support for collecting on-filesystem log files shortly.

21st February

  • Released new nginx base image containing logic to explicitly block the X-Redirect-Url request header.

8th February

  • Updated all our Composer 2 base bundle images to include Composer v2.7.0.

22nd January

  • Added the ability to include or exclude specific query params from static cache keys. Allowing analytics params to be ignored, or a specific list to be allowed, increasing cache hit rates when configured.

21st January

  • Added support for transforming HEIC images to the Asset Platform V3

16th January

  • Rolled out an upgrade process to the new Ingress Platform for existing projects

2nd January

  • Released our new DDoS protection, WAF and routing platform for newly created projects.
  • Bumped default database version for new projects to MariaDB 11.1.3 to fix an index corruption bug
  • Added a static caching exclusion for any zero byte, empty responses to try to resolve a very elusive static caching race condition

πŸŽ‰ 2024 πŸŽ‰

13th December

  • All webhooks that match the pushed branch will now trigger, instead of just the first.

3rd December

  • Asked PHP not to advertise its version number when using non Craft PHP scripts
  • Added pagination to the Path Redirects page in the dashboard

3rd November

  • Added more copy buttons to the database and asset platform credential fields in the dashboard.
  • Restructured the HTML of the various credential fields to avoid trailing whitespace from being accidentally copy and pasted.
  • Condensed the database credentials section so it's a bit more scannable.
  • Added a new "Full URL" field to the database credentials to allow the details to be quickly import into database clients, such as TablePlus.

2nd November

1st November

  • Added the ability to view metrics up to 48 hours into the past.
  • Added a new "Response Codes" graph to the metrics page.
  • Reduced the time it takes to pull commits for manual repository connections.

27th October

  • Added a Servd override for the resourceBasePath Craft general config setting. It will always be set to web/cpresources now.
  • When your dashboard session expires, but you attempt to access a specific URL, you'll now be redirected to that URL when you successfully log in.
  • "Override Active" is now displayed next to each asset CDN stat on a project's plan page for which we have manually set up an override for.
  • Asset CDN access is now refreshed when a project is reactivated, upgraded or downgraded.

19th October

  • Added a new "Relaxed" rate limiting option which permits 10 req/s with a 20 req burst.

6th October

  • Jump bar added to the servd dashboard
  • Made page headers somewhat more consistent between different sections of the dashboard

4th October

  • Started rolling out an update to how internal DNS is handled within our clusters. This should fix the occasional DNS lookup error we've seen when PHP attempts to connect to Redis or MySQL and make everything slightly faster as an added bonus.

3rd October

  • Updated all PHP base images with a patch for the libwebp RCE exploit. We don't believe it was directly exploitable within Craft projects, but better safe than sorry!

28th September

  • Updated PHP 8.1 and 8.2 base images to include avif encoding binaries and enabled avif encoding in GD

26th September

11th September

  • Updated the way the PHP and Redis handle connection pooling. This should allow for faster connections between Craft and Redis and also reduce associated CPU and network latency overhead with these connections. Requires a new bundle to be built.
  • Updated the way PHP connects to the database to reduce the amount of internal DNS quries it needs to make, which will lead to faster database connections and a reduction in edge case errors related to internal DNS resolution. Applied on your next Sync.

25th August

11th August

  • The atomic database imports setting is now enabled by default for new projects.

9th August

25th July

  • Released an update to the mutex config included in Craft 4 projects to help prevent some deadlock errors when working on Entries with Neo/Supertable/Matrix fields. Included in bundles built after today.

21st July

29th June

  • It's now possible to create a new teams via the "Create a Team" button in the Team fly-out sidebar menu.
  • You can now find out the asset platform version your project is running on in your project's Assets page.
  • Project overview pages now integrate with our Status page to report any active incidents relevant to the project.

22nd May

  • Update to the Servd Plugin to fix some issues with asset syncs between the Asset Platform and Local Volumes
  • Fix applied for an issue with Asset Platform V3 which was incorrectly tracking asset storage levels when a project changed between plans

18th May

  • Added PHP 8.2 support

17th May

  • Adjusted nginx config to ensure that PURGE requests for clearing the static cache ignore any defined path redirects
  • Automatically exclude any Craft preview URLs (live preview or those with preview tokens) from the static cache

8th May

  • Relaxed the restriction on the task-runner that prevented multiple tasks of the same kind (e.g. syncing, creating a bundle) from being enqueued at the same time. This means that webhooks which are fired in quick succession will no longer get rejected if a sync or bundle creation is already in progress. They'll just get queued up and run sequentially instead.

25th April

12th April

  • Tweaked the way static cache exceptions work in order to remove an edge case bug when working with stand alone php files

11th April

  • Added some behind-the-scenes config to control whether the optimize step runs during clones, dump uploads and backup restores.

17th March

  • Added support for 'letterbox' image cropping to the Servd plugin

15th March

  • Added Node v18 to our list of available Node Build Step versions.

14th March

  • When checking a domain's DNS record via the dashboard domains page, we now look out for AAAA records that you may want to remove once you point you point your DNS towards Servd.
  • Renewal failure emails now contain info on project deactivation.
  • We now send emails to project members who have the project activity preference ticked when a project is deactivated due to non-payment.

9th March

  • Added the option to enable basic auth just for a project's vanity domain. Can be useful if you want to prevent access to your site via that domain.

27th February

  • Fixed a race condition when cloning a database and bundle atomically that could lead to a small window where the previous bundle and new database are connected. Normally not a problem, but we've observed Craft 4 upgrades that would corrupt the plugin table data when this happens.

24th February

  • Fixed a bug that could occur if you started setting 2FA up, started doing something else, and then came back to finish setting it up.

22nd February

  • Added a fix for a crash that would occur when using an empty repo during the create project flow.

15th February

  • Reorganised the database connection details section of the "Access Control" page. It now includes the database name, which can now change when atomic imports are enabled.

13th February

  • Cloudflare DNS integration has been restored to the dashboard after a brief hiatus.

12th February

  • Fixed a crash that would happen when selecting node versions 16 and 17 in the create project flow.

7th February

  • Fixed a task runner crash when adding a load balancer addon.
  • Tweaked payment confirmation buttons so they disable after being clicked.

3rd February

  • Fixes for some atomic import edge cases.

1st February

  • Adjustments to networking permissions to further restrict unnecessary inter-cluster comms
  • Some more database connection changes ahead of atomic clones being released

30th January

  • Rolled out some back-end changes to support upcoming atomic database clones.
  • Tweaked some log collection configuration to prevent occasional crashes when dealing with massive log lines
  • Neatened up some billing code and added tweaks to cover a few more Enterprise-y use cases πŸ•΄

27th January

  • New cluster, eu-west-4. Now broadcasting from a new data centre in Frankfurt πŸ‡©πŸ‡ͺ
  • Bug fix for displaying line items on invoices when a payment is < $1
  • Bug fix for failed audit log creation which doesn't fit in our database

πŸŽ‰ 2023 πŸŽ‰

21st December

  • Fixed a bootstrap crash caused when a project's log component was defined as function instead of an array.

9th December

  • Fixed "Invalid Date" issue when displaying the SMTP credit top up date.
  • Plan page now displays all the unit prices of all the addons.

8th December

  • Added the ability for teams to get access to custom regions when creating new projects.

5th December

  • Updated the Servd plugin to allow the default image optimisation strategy to be changed. Before JPGs and PNGs were automatically served as WEBP if the browser supported it. Now this can be turned off, or changed to use AVIF by default, with a fallback to WEBP.

16th November

  • Trailing slash removal / addition redirects are now ignored for all POST requests and actions urls
  • Database connections are forced to use utf8mb4 to ensure Welsh flags 🏴󠁧󠁒󠁷󠁬󠁳󠁿 can make it into the database

9th November

  • Added gzip content encoding for JSON URLs.

8th November

  • Renamed "Background Task Isolation" to "Dedicated Queue Runner" across and
  • Updated the dashboard's static caching and CORS sections to collapse when not enabled. This avoids confusion when the "Save" button is submitted in each of these sections, but the toggle is still turned off.
  • Reduced the number of dashboard sections that change height after their initial data is loaded. Should make navigating around pages less disorientating.
  • Added a few more section heading tooltips, that link out to the Servd docs.

7th November

  • Added a card to the overview Heads Up section that warns you if your payment card is expired.
  • Improved the Heads Up card links. They now generally take you to more useful places now,

4th November

3rd November

  • Updates to PHP base software to allow modular bundle builds. This allows us to create a collection of common modifications for bundles (like installing extra software) and then opt project in/out as required.
  • Updated nginx to treat BunnyCDN as a 'trusted' proxy service
  • PHP version updates to latest stable

1st November

  • Improved warnings, messaging and documentation around the dashboard Dev Mode setting.

31st October

  • Fixed bug that was preventing renewal failure emails from being sent.

29th October

  • Fixed the URL destination of the overview page "Renew Now" button that's shown in the Heads Up section when a renewal fails.

26th October

  • Fixed a bug that would clear a user's project permissions if they weren't a team manager.

19th October

  • Released Cross-Domain Redirects feature. You can now restrict path redirects to only kick in for requests to specific domains. E.g. if you have a multi-site with many domains, you might only want a redirect to activate for one specific domain.

17th October

  • Task logs can now be viewed in almost real time. So you can see what your bundle builds are up to.
  • Bundle build tasks can now be cancelled at any time from the Task Logs view.
  • Fix for a bug with static cache purging.
  • Fix for a bug which would reset video cdn settings upon project subscription renewal.

4th October

  • Added a new billing team permission. Team managers can now restrict access to billing information and billing email notification on a per-team-member basis.

3rd October

  • Released the new Overview and Metrics pages. πŸ₯³ The overview page now displays a lot of high-level information about what's going on with your project.

26th September

  • The environment variables sections has been moved to its' own dedicated section, along with a few improvements to its' loading states.

21st September

  • A few tweaks to make Craft 4's fluent db config files work without making everything explode

18th September

  • Node build steps can now have environment variables set which are applied during both npm install and your build command execution

16th September

  • Added notification emails for projects which exceed their video streaming or asset storage allowances

5th September

  • Added an update to how Craft's mutex's are handled which should help to prevent some instances of database locks and unexpected behaviour when multiple users are editing related content

15th August

  • Improved handling of database storage resizing when running in cluster mode

9th August

  • Added a fix to the Servd Plugin for some missing session handler functionality in yii2-redis which should prevent a few session related bugs that we've seen appear in a few projects.
  • Fixed a bug which would cause problems with Craft 4 projects that had no composer.lock file checked into the git repo

29th July

  • Added some fixes to support Craft 4.2's new config files

7th July

1st July

  • Added a change to the import and clones tasks to only optimize the database that is being targeted.

30th June

  • Added the internal ability for server-level headers to be added on a per-project-environment level. Let us know if you're interested in this for your project.

20th June

  • Fix for logger bug with Craft 4 projects.

14th June

  • Added the ability to configure static file cache header values so you can set your CSS to cache for 1 year and save a few bytes travelling over the interpipes.
  • Added the ability to disable blocking of common vulnerability scan URLs (such as /wp-admin and /xmlrpc.php). It was a little draconian of us to assume you didn't want your Craft SP to use the /wp-admin prefix (you heathens...)

13th June

  • Rolled out database updates to all custom plan projects
  • Refactored billing code (about time). It will now batch multiple renewals for a team on the same day into a single payment and invoice. Less paperwork πŸ™Œ
  • Upgraded ingress load balancers in all clusters to latest stable
  • Fixed a couple of SSL cert bugs which were impacting one cluster. This should ensure that all vanity URLs now have a valid SSL cert in use.
  • Lots of necessary behind-the-scenes changes to get everything lined up for the next big cluster software upgrade

2nd June

  • Updated the Domains page to allow free text, whole-domain redirects. You can now redirect to a path or an external domain

26th May

  • Plugin updates to prevent accidental rehydrations of objects in dynamicInclude contexts
  • New base images for PHP

23rd May

  • Rolled out some database updates for new projects to reduce the risk of OOM errors

20th May

  • Added the ability to force all outbound traffic to use a static IP address, allowing projects to be whitelisted for access to 3rd party APIs.

18th May

  • GitLab invalidated all of their access tokens. Hilarity ensued.

16th May

  • Began rolling out some changes to project databases, including general updates, memory management and pre-OOM monitoring to ensure clean shutdowns. Updates will be rolling out gradually to all projects.

13th May

  • A few fixes here and there for background stuff
  • Fixes to the Servd Plugin for Craft 4
  • A few changes to make Advanced Log Output work well with Craft 4

12th May

  • Added 'deferred payments' which includes the option for projects to pay via invoiced bank transfer. This is available on request for projects on annual plans.
  • Changed the 'Asset Platform Storage' addon to 'Asset Platform Boost' and included additional file downloads and video streaming bandwidth within the same cost.
  • Fixed a bug which was randomly giving project renewals a 10% discount (!!!) Don't worry, we won't try to collect the difference πŸ˜†
  • We changed accountants and had to rewrite some of our Invoice automations. This will make no difference to you, but it makes me happy.
  • This website has been updated to Craft 4!

5th May

  • Fix for hanging database imports, caused when an SQL error occurs for large database dumps.

4th May

  • Gave the environment redirects section a spring clean. Redirects are now editable, contain a bit better validation to avoid nginx crashes and have better loadings states.
  • Fix for bug that occurred when deploys move from one server to another.

28th April

  • Two factor auth code input now autofocuses.

27th April

  • Task runner updates to reduce information sharing between different components

26th April

  • Added anchors to documentation headings to make it a bit easier to link to specific bits of content on longer pages.
  • Added the ability to clone assets from local using the clone environment dashboard tool.

24th April

  • Added a "Repair Database" button to the dashboard "Build & Deploy" settings section. Occasionally we see project database CPU usage max out after the db schema is updated. Running the database repair task performs mysqlcheck -o under the hood, which resolves the high CPU usage.
  • Fixed a bug with the bundle deploy activity items which resulted in the wrong bundle name being rendered.

20th April

  • Fixed an error that occurred when a 3DSecure card auth challenge is triggered during a plan addon purchase.
  • Servd plugin v2.5.4 release.

19th April

18th April

  • Added an email confirmation step during sign-up. New users will have to confirm they own their address before they can create projects.
  • Blocked disposable email addresses from being used for new users.

13th April

  • Video is now supported on the Asset Platform, it's just a plugin update away
  • Fixed a regex bug when Servd is set to 'add' trailing slashes which was causing an additional, unnecessary redirect to be returned.

9th April

  • Some initial changes to how images are stored on the Asset Platform which should allow us to vastly increase the cache miss image TTFB in the US. Further updates for this coming over the next few days which will actually start making an impact on user-facing requests.
  • Improved handling of the situation in which a user has access to a team, but not any projects within that team.
  • Added a null state to the project overview page 🀷

4th April

  • Started grabbing screenshots of projects to display on the project dashboard pages.

31st March

23rd March

  • Added several "helper" dashboard URLs that will redirect users to the URLs of their last used team and project. E.g will redirect to the logs page of your last used project.

22nd March

  • Added the "Activity" navigation button to the dashboard sidebar.

21st March

  • When setting up webhooks, you can now specify how your branch name gets matched. The default is "it should match exactly" but there's also options to match against the start/middle/end of the branch name should you want to auto-deploy on a specific branch prefix or suffix.
  • We've now begun tracking important project events for the new upcoming "Activity" page. This'll help your team understand what's been going on with your project recently, and should help us provide better support when you need it. 🀝

17th March

  • Advanced Log Output is now available to be enabled in the Servd Dashboard. This allows us to parse your Craft logs so that we can display them nicely in the Servd Logs viewer and it'll let us do some other fun stuff later down the line.

16th March

  • Released manual backups. Now you can create full backups whenever you like. No more need for emergency trousers when performing a large Project Config update! πŸ‘–

7th March

  • Now only users who have access to projects will receive billing emails (e.g. renewal success/failed emails) about them. Previously, everyone in the team which owned the project would receive them, even if they didn't have access to the project. πŸ™ˆ
  • Introduced "Project Billing" contact preferences in the User Settings section. This allows you to specify if you want to receive billing emails for specific projects.
  • Added a fix for an nginx config bug which would occasionally break static files for CP logged in users when static caching was enabled.

4th March

  • Launched the eu-west-3 cluster.
  • Made a change to our task runner that will prompt it to fall-over to another mirrored, off-gitlab repository should ever be down in the future. Fortunately, this means the task runner won't be impacted by future outages.

1st March

  • A tiny tweak to subscription renewal logic to allow us to process more renewals in fewer batches

28th February

  • Further experimentation with timeouts on the Servd Task Runner
  • Fixed a bug related to the recent multiple queue runners update which spawned more queue runners than expected

26th February

  • Log filter dropdown is now sorted alphabetically.
  • When changing the log filter dropdown, it updates the URL with a query parameter. This can be shared to allow others to immediately see a filtered view of the log data.

24th February

  • Made the number of queue runners configurable.

21st February

  • Rolled out a new database build with MariaDB 10.6 for new projects. Existing projects will be updated in batches during maintenance windows as it'll cause a few seconds of downtime.

18th February

  • Added a fix for listing BitBucket repos during the Create Project flow. Their API doesn't paginate properly (just returns the same results on every page) so we were ending up in an infinite loop of API requests. We now just do a single call for the 1,000 most recently updated repos in your account.
  • Enabled registrations from South Africa.

17th February

16th February

  • Added a 2 hour timeout for all tasks that are run by the task runner, tasks that reach run past this limit will automatically exit.

15th Feb

  • Added Asset Platform usage tracking to the Plan page in the dashboard. We'll be revealing more about this soon.
  • Added a robot to our live chat during out of hours periods. He's currently a bit simple, but we're all hopeful he'll eventually develop into a successful member of the team.
  • Reinstated this ChangeLog page (so meta)
  • Launched new 'Solutions' pages so you can hopefully be convinced that Servd is good
  • Made some changes related to BlackFire and NewRelic integrations. These still need a little bit of testing, but they're gonna be πŸ”₯

6th August - 15th February 2022

We got busy and neglected the changelog, so here are some highlights:

  • New cluster, us-east-3
  • There's a new Feature Suggestion page in the dashboard where you can, suggest, features...
  • We've added the ability to manage you contact preferences on the User Settings page, so you can choose which teams and projects you get updates for.
  • 2 factor auth has arrived! Always best to be protected. You can set it up on the User Setting page.
  • We've added an SMTP service to our offering. Get 200 free email sends per month. If you've connected your Servd project to CloudFlare, we'll even set up all your DNS records for you so you don't end up in the dreaded SPAM bin.
  • When creating a new project, you can now specify your own project slug! But we still provide a suggestion based on the classic approach - we're still waiting for long-cat (is long) to appear.
  • Volume discounts for teams with 10+ projects
  • A new Plan Addon to get yourself a Development Environment. This works in exactly the same way as your staging and production environments, but is optional.
  • Bundles are now tagged with the Craft version that they contain. We also make a sneaky note of your other composer package versions for a yet-to-be-announced feature 🀫
  • We've updated our base software a bunch of times to get all the latest PHP fixes available for you.
  • The Servd Plugin has had some work done, and now looks younger. It can force FeedMe to log to the main Log Output instead of insisting on writing to the filesystem. It has a much improved system for purging the static cache. Loads of improvements for {% dynamicInclude %} tags.
  • The Logs viewer has been completely rebuilt and is now actually quite good. More updates for this coming soon...

6th August

  • Fixed a bug which allowed subscribed projects to be transferred to teams with no billing info set.
  • Improved handling of 3rd party git repo connections when removing users from teams.

2nd August

  • Replaced the mechanism used to perform asset clones when using the Clone Environment functionality. This should now be much (much) faster to complete in the majority of circumstances.

30th July

  • Volume discounts for Teams with 10+ subscribed projects
  • Fixed a bug which would reset a project's name when the repo or connection type was updated
  • Deployed an update to the Servd Asset Platform to allow images to be streamed through the CDN layer, rather than buffered. This should increase performance of image loading for larger images.

23rd June

  • Bitbucket API connectivity to speed up listing of commits when building a new bundle

22nd June

  • The behaviour of trailing slashes on URLs is now configurable

11th June

  • Fixed a couple of bug in the Servd Plugin and released 2.3.1

8th June

  • Removed a few nginx rules which were preventing legitimate traffic for working as expected
  • Fixed a bug which could prevent deployments from succeeding if no bundles at all had been selected for deployment

7th June

  • Cleaned up log output from Run a Command in the dashboard
  • Added a new cluster: eu-west-2

25th May

  • Fixed another bug related to addons carrying over during subscription renewals

24th May

  • Fix for maintaining plan addon status during renewals
  • Pagination for invoices on billing page
  • Changed the project deletion warning email to dispatch 4 days in advance instead of 2 in case emails are delivered on a weekend
  • Lots of database optimisations for upcoming migration from MariaDB to Percona Cluster

20th May

  • Updates to dashboard styling to help prompt for project Sync changes and added some sticky breadcrumbs to help with general navigation

19th May

  • Release of private IP and load balancer addon + a few namespacing fixes for it too

16th May

  • Fixes for header handling when using ESI sub requests

3rd May

  • Released direct integration with CloudFlare allowing projects to manage their DNS records directly within the Servd dashboard and get (almost) zero-config DNS hosting and DDoS protection.

28th April

  • Set the default version of Composer to 2 for all new projects. This should help to avoid errors during the first bundle build.
  • Released 'Addons'. The ability to add additional features to your base plan. Starting with additional asset platform storage.

26th April

  • Updated the Servd plugin to purge the static cache for all URLs related to an Entry, not just the one for the default site.

25th April

  • Updated Composer to the newest version to remain compatible with GitHub's new oAuth token format
  • Added Cross-Origin-Resource-Policy headers to images coming from the Asset Platform's optimiser which allows these images to be accessed within JS code.

25th March

  • Reorganised storage for backups and temporary file uploads. This is step 1 towards improving the compatibility of the asset platform with additional S3 tools (like Transmit)
  • Added reminder emails for projects which are about to renew on an annual subscription
  • Fixed a bug in the Servd Plugin which prevented non-admin users from performing manual Cache Purges

23rd March

  • Allow spike protection in 6 and 12 hour periods for projects which only require a short bump in resources
  • Fixed logging output on Spike Protection servers

21st March

19th March

  • Fixed a bug with rate limit calculations which was limiting some users unnecessarily

10th March

5th March

  • Released Spike Protection feature which allows scaling any project up to a large server for a 24h period to handle expected traffic spikes

20th February

  • Reorganised the main nav bar in the dashboard and made team switching a bit more obvious
  • Added the ability to add avatars to teams so it's super clear which team you are currently using
  • Moved the 'Invite a Client' functionality to its own page because it was confusing when nested within a specific Team's settings page
  • Fixed a few bugs related to team and project selection states
  • Added docs link to nav bar

19th February

  • Updates to allow projects to be moved between teams so you can transfer existing projects over to client accounts

18th February

  • Static site backups (you don't know about these yet) can now exclude domain names from file keys
  • Projects with database read replicas now restrict the use of those replicas to only the main PHP containers. Queues, crons and post-deploy tasks now use the master DB exclusively because they sometimes do things in parallel that are impacted by replication lag
  • Final tweaks to allow projects to run additional environments if they're included in their custom plan
  • Fix an issue when reading git commit history from repos using a manual repo connection when it contained a tag with the same name as a branch
  • Improved database export speed when performing environment clones
  • Ensured post-deploy tasks only execute when an environment's bundle has actually been changed

12th February

  • Fixed a bug which prevented the webhook settings from displaying properly for newly created projects

10th February

  • Many more updates to the Servd Plugin to help with more efficient static caching and purging
  • PHP 8 base images made available. Currently in beta but are working fine on several projects
  • Fixed a bug which would cause the Sync required button to not change after saving path redirects
  • Altered the post-deploy tasks logic so that they only run for a specific environment if the bundle deployed to that environment changes. This prevents caches being cleared unnecessarily

5th February

  • Fixed an issue which could cause session data to be cleared during deployments under certain conditions
  • Updated ProxySQL which is used as the router for external database connections in order to fix an issue with MySQL 8 charsets

3rd February

  • Many changes to the Servd plugin to improve the performance of static cache tagging against URLs

2nd February

  • Fixed a bug in the Servd Plugin which was causing errors due to use of a deprecated function
  • Improved memory management for static caching components
  • Finished setup for new cluster us-east-2 which will operate alongside but independently from us-east-1
  • Fixed a bug related to GB VAT numbers (AKA, the Brexit bug)

29th January

  • Prevented duplicate cache exceptions which would cause nginx to panic and continually restart.
  • Allowed cache exceptions to have a trailing slash which can be used to match subpaths of a particular segment value but not the segment value itself.
  • Added support for Composer 2 during the bundling process. Composer selection box can be found on the Project Settings > Build & Deploy page.

28th January

  • Updated the build process for PHP base images. It now uses a fancy matrix build in GitLab CI in order to generate different PHP versions mixed with different Composer versions πŸ•΄
  • Improved the method by which the bundling process decides whether to try to install the yiisoft/yii2-redis package.
  • Improved log output for composer operations during bundling.
  • Dashboard update to allow configure static cache skip for logged in users.
  • Added manual static cache purge buttons to Entry page in the Craft CP when the Servd plugin is installed.

27th January

  • Added logic to make the static cache skip for logged in users optional. Pending dashboard update to add a switch for this.
  • Fixed a bug with database import error output.
  • Added some cleanup for imported SQL dumps which contain properties which require SUPER privileges.

26th January

  • Released an update bundle build process which should make builds faster moving forward.
  • Added the preliminary work for streaming task log output.
  • Removed the annoying 'TTY' error from the 'Run a Command' output.
  • Preparatory work for upcoming cluster upgrades.

21st January

  • Fixed a bug which allowed arrays to be passed from the dashboard as enumerated objects by some browsers. No idea which browser or why, but now it can't.
  • Released Servd plugin v2.1 which contains support for tag-based cache invalidation. URLs are tagged with the ids of the Craft elements which are used to populate them and when any of these elements is updated the cache for the URL is purged.

18th January

  • Improve response format from endpoints which the Servd plugin communicates with

13th January

  • Allow CORS headers to be added and restricted to specific origin domains or request paths.

12th January

  • Added some default headers to nginx to improve XSS security.

11th January

  • Added a fix for projects which include a craft cli script file in their repo with windows line endings. These are now converted to unix during the bundling process to prevent it causing problems when deployed to the platform.

10th January

  • Allow projects to have 2 webhook targets to allow automated deployments from 2 different branches. We advise you only use this if you also use fast-forward branch merges to ensure exactly the same commit (and therefore Servd bundle) is used by both branches.
  • Added webhook support for Azure DevOps.

7th January

  • Fixed a bug introduced with Nginx R13 which changed the way user who are logged into the Craft CP are treated by the static caching layer.

6th January

  • A hash representing the bundle version which is currently deployed is now included as the environment variable SERVD_BUNDLE_HASH. You can make use of this to perform cache busting of any compiled assets which are baked into the bundle.
  • Released Nginx (R13) which is a complete rewrite of the nginx configuration. This will allow additional functionality as described on the Base Software Versions page
  • Fixed a couple of buttons in the dashboard which were supposed to open the live chat but didn't. Now they do.

5th January

  • The Servd plugin now allows URLs for files and images stored in the Servd Assets Platform to be fully customised using placeholders for specific URL segments.
  • A project's .git folder is now included in any build tasks which allows node modules to grab commit info and use that however it likes.

πŸŽ‰ 2021 πŸŽ‰

14th December

  • Assets within the Servd Assets Platform can now have their cache busted from within the Craft Control Panel - just look for the big red button. (Servd Plugin v2.0.3)

24th November

  • Increased the connection timeout for mysql which could be hit by exceptionally long running background tasks
  • Tweaked some settings which determined where and how database backup tasks would execute

20th November

  • Static cache default TTL is now configurable

18th November

  • Launched new support tickets system with enhanced on-call alerting system for Enterprise projects:
  • Switched out old live chat for a new one (both this and the new ticket platform are from Freshdesk)
  • Launched new status page:
  • Fixed a UI bug when showing/hiding passwords in the dashboard

12th November

  • Released Servd plugin v2. A complete rewrite which also adds support for using ImagerX and Image Optimise with the Servd assets platform

11th November

  • Fixed a bug which could prevent cron jobs from executing to completion

4th November

  • Improved error messaging related to use of a single github/gitlab account and multiple Servd accounts
  • Allow users to detach github/gitlab accounts from their Servd user

2nd November

  • Fixed a dashboard bug which truncated imported environment variables by a single character
  • Improved loading state indicators during bundle creation

27th October

  • Improved cleaning of env vars added via the dashboard

22nd October

  • Rolling out improvements to the deployment process which ensures updates which do not contain any Craft migrations are truly zero-downtime. Previously they could cause a few seconds of 502 errors
  • Updated the build process to cache node_modules by default and do a few other things to speed up the build process in general
  • Added the ability to include environment variables within the node build step (UI pending, drop us a message if you need to use this in the mean time)
  • Improvements to the base nginx config which allows for a higher overall connection throughput
  • Moved all docker images (of which there are many) away from Servd's custom docker registry and onto Docker Hub, reducing the number of platform components we need to keep updated and maintained

11th October

  • Improved handling of Craft config files. Things no longer break if you have a multi-environment app.web.php file 🐳

8th October

  • Allowed users in Switzerland to register for an account.
  • Moved all project bundle storage away from a custom docker registry and onto docker hub which should prove to be more reliable and more cost effective.

30th September

  • Fixed a bug which could occur during database import if the SQL contained either a CREATE DATABASE or USE statement, or tried to use an unsupported collation from MySQL 8.

28th September

  • Increased the default read_timeout for Servd's ingress proxies. This prevents the connection being dropped prematurely when a PHP process outputs absolutely nothing for a long time. Sometimes they're just shy and we should all be a little more patient
  • Fixed a bug related to showing error messages when Stripe returns generic errors during billing actions
  • Fixed a bug related to drag + dropped .env files which had particularly interestingly formatted contents

23rd September

  • You can now drag and drop .env files into the dashboard in order to fill out environment variable during initial project creation or afterwards, because your day rate is to high to justify spending time copy + pasting

22nd September

  • Changed the method used to validate DNS records which should help to decrease the propagation time required during existing site transfers
  • Removed domains limitations from plans. You can now have all the domains you want
  • Added a hint to the plans and pricing page to make it clear that a plan applies to a single craft installation

18th September

  • Added ROOT_PATH and WEB_ROOT_PATH default environment variables to all projects because they're often needed and they're constant.
  • Updated the dashboard and create project flow to include these fixed env vars along with improved error messaging related to reserved env var names

10th September

  • Began moving projects over to a new database organisation which will allow for horizontal database scaling
  • Updated the image optimisation proxy code to allow for webp images
  • Fixed a bug with external database connections which would break when projects were re-deployed after initial enabling
  • Improved deployments so that if no changes have been made to a specific environment, it won't cycle its containers
  • Added better support for db.php files which contain multi-environment array keys
  • Fixed a bug which would impact projects that had a custom maximum assets storage value
  • Improved handling of assets during backup restorations. Previously this could return an error if a large number of files were being restored, even though it had actually completed successfully

28th August

  • The Servd dashboard now remembers the last team and project you were working with and defaults to that when you log in ensuring it doesn't default to an arbitrary team and project.

25th August

  • Added the ability to disable automated static-cache clears by the Servd plugin when entries are saved.

12th August

  • When building bundles the task runner will now check to see if yiisoft/yii2-redis is already included in composer.lock, if so it won't try to install it. This allows project owners to add the redis package to their project during local dev and speed up bundle builds by at least 30s. It also avoids occasional out of memory errors which composer might experience whilst trying to install redis from scratch.

6th August

  • Added the ability to replace the image optimisation domain in the assets plugin. Now you can proxy requests through a cloudflare worker in order to use your own domain.

5th August

  • Fixed a bug with image resizing which resulted in cropping when requested images were wider than 3000px (width was constrained but height was not adjusted to compensate).
  • Trying to optimise or resize animated gifs usually breaks, so now the Servd assets plugin will respect Craft's transformGifs settings. Setting it to false will use the original image in all circumstances, even if a transform is provided.

3rd August

  • Additional tweaks to ImageMagick configurations to prevent it from using both too much memory (causing 502's) and too little memory (causing weird image artefacts). Hopefully we've found a good middle ground now.

2nd August

  • Updated ImageMagick libraries and fixed a bug which could result in a 502 error when large images were uploaded
  • Released accompanying PHP base images (R7)

29th July

  • Released new Nginx base image (R10)

28th July

  • Release new PHP base images (R6)
  • Updated task bar styling in the dashboard so that task errors in particular are more obvious

27th July

  • Fixed a few bugs in the affiliate system

25th July

  • Set a new affiliates system live. Let us know if you'd like to be a tester for that.
  • Updated this site to Craft 3.5

24th July

  • Released v1.3.3 of the Servd Assets and Helpers Plugin which fixes a bug when creating new empty subfolders in a volume

21st July

20th July

  • Added a generic page builder to the site to allow creation of some service comparison pages. The first of which is Servd vs Laravel Forge

18th July

  • Added some CPU usage and inbound request graphs to the dashboard πŸ“ˆ
  • Also consolidated the info pages from each environment into a project overview page. It's similar to something we had previously, but a bit different, and with graphs. Getting the dashboard UX right is hard, ok?

17th July

  • Released Assets and Helpers plugin v1.3.2 which fixes a bug preventing asset's filenames from being updated

12th July

  • When a project is deleted its custom domains are now cleaned up properly to allow them to be associated with future projects

11th July

  • Improved error handling and retries for Task Runner tasks which fail to schedule for some reason. This should prevent tasks getting stuck in a 'working' state forever

10th July

  • Added a VAT reverse charge notification to relevant invoices. Software isn't all glamour.
  • Switched global load balancing from round-robin to ewma
  • Released Nginx (R9) which ensures the proper protocols are used in redirects for trailing and duplicate slashes

8th July

  • Fixed a bug which prevented clean deployments when both a cron job and a custom license file were defined on a project

5th July

  • Projects can now be attached to new repos or their connection method changed via the dashboard. This is useful if you change the name of a repo or stop using the API token which was used during initial project creation

28th June

  • Some updates to to make things look nicer and improve the plans and pricing information
  • Fixed some race condition issues with assets when performing environment clones
  • Fixed a bug with asset clones on the new Assets Platform introduced by a change to a dependent service

15th June

  • New assets platform goes live! πŸ–ΌοΈ This is no longer hosted on AWS, has a better caching strategy for transformed images, has cleaner URLs, is protected from abuse using security tokens and supports auto-detection of webp (which will be used for all images expect gifs).

12th June

  • Tweaked the way in which one-off and scheduled commands are executed to ensure there are no permissions issues with files or folders that they create
  • Implemented a behind the scenes mechanism which allows individual plan features to be tweaked on a per project basis

5th June

  • Added page titles to the dashboard! Now your browser's back menu might actually be useful

4th June

  • Tweaked a regex in the CI upload script which was excluding anything with vendor in its name, instead of just the vendor folder
  • Started inviting users to use Servd's built-in CI functionality, allowing projects to compile their static assets as part of bundle builds, because CI shouldn't be hard

26th May

  • Fixed a bug which could cause files with specific prefixes to not be included in new bundles
  • Database imports, backup restores and environment clones now show a confirmation dialog before proceeding. Safety first

25th May

  • Fixed a bug which could prevent asset files with multibyte characters in the filenames from being cloned between environments

22nd May

Has it been that long since the last update?! Things must be reassuringly stable...

  • Our log aggregation framework has been completely replaced, you can no longer free text search in recent log entries but...
  • You can now download your recent logs in a handy zip file
  • You can plug your logs into Papertrail or Datadog to get them pushed out to those platforms in real time
  • A new nginx revision is available (R8) which changes the logs to a more standard format. This should help with parsing by external services. It also prevents requests for favicon.ico being passed to PHP and wasting CPU
  • We began rolling out a new bundle build process which (for anyone interested) uses the fancy, new buildkit platform rather than img which we were previously using. This is in preparation for an exciting new feature which has been in the works for a couple of months. It's also significantly faster
  • Fixed some email copy which was outputting template tags instead of replacing them with real values. Only a real {{ $profanity }} would let that kind of error reach production πŸ™„
  • You can now trigger the build and deploy webhook manually. Not only that, but you can also supply a tar archive of a craft application to use instead of pulling files directly from your git repo. This allows you to compile CSS and JS (or do whatever you want in any CI pipeline) and then push the results to Servd.
  • Fixed a bug in which not all repository branches were displaying during the create project flow

1st May

  • All new bundles are now auto-upgraded to the latest PHP and Nginx base software to make sure everyone can use all of Servd's new features and get security patches and important things like that.
  • PHP version selection (7.3 vs 7.4) has been moved into Project Settings so you don't have to click past it every time you build a new bundle - it hardly ever changes
  • The option to change the path for Craft within your git repo has been moved to Project Settings for the same reason - it never changes
  • Bundles are now built to include all of the contents of the Craft path within your git repo. This means you can include arbitrary files and folders in the same directory that houses your composer.json and they'll all end up in your bundle.
  • Many dashboard updates to support all of this new functionality, especially New Project setup which is now even friendlier! πŸ’–

27th April

  • Released a new feature to allow both scheduled task execution and one-off execution of Craft CLI commands. Now you can garbage collect via the dashboard.
  • Many behind the scenes updates related to scheduling and resource allocation. Shouldn't be anything that you need to worry about though πŸ˜‰

11th April

  • Allowed a /migrations folder to be included in bundles to allow custom migration scripts to be automatically executed during deployments
  • Domain names can now be associated with any environment so you can use '' for your staging environment 🍾

8th April

  • Fixed a bug which showed 404 pages for projects which had exited a trial instead of redirecting to the 'Plan' page in order to prompt the user to extend or upgrade
  • Show the selected team and project in the sidebar on 404 pages if they are set in the URL structure

7th April

  • Began rolling out new CPU scheduling logic. Projects are able to use any available CPU time in the cluster to process user requests. CPU contention dials a project back down to its guaranteed resource limits.

2nd April

  • Big Dashboard reorganisation + cosmetic updates
  • Dashboard updates for IP white/blacklisting
  • Added controls for request rate limiting
  • Allowed static cache exceptions to be defined per-environment

28th March

  • New (much better) project deployment mechanism which incorporates updates for:
    • IP blacklisting
    • IP whitelisting
    • Scheduled tasks
    • Domains for staging environments
    • Dynamically provisioned additional environments
  • (Dashboard updates pending)
  • Significantly improved dashboard responsiveness
  • Allow users who are invited to a team to bypass GeoBlocking
  • Vastly improved log output for bundle creation tasks

16th March

  • Activated drip emails for new users
  • Cleaned up some unfortunate words in the project name generator
  • Fixed a bug which wouldn't keep external database access consistent when environments were enabled or disabled

13th March

  • Revamped transactional emails
  • Changed transactional email provider to AWS SES (previously Mailgun)
  • Created basis for a new drip email tutorial series for newly subscribed users

8th March

  • Initial support for arbitrary scheduled tasks (aka cron jobs)

19th February

  • Update project nginx containers to openresty to allow more advanced traffic routing logic
  • Improved static caching in preparation for fine grained static cache busting
  • Initial work on storage for manual database backups

12th February

  • All domains associated with a project now generate their own self-signed SSL certificates, no DNS needed. This allow Full encryption mode on CloudFlare without having to validate domain names in advance (very useful for existing site migrations)

10th February

  • Domains can be linked to projects before DNS records are created (so you can test using /etc/hosts entries) but SSL will not be enabled
  • Once DNS records have been validated SSL will be enabled and auto-https redirect will be enabled
  • You can now redirect from one domain to another (Requires Nginx 1.15 v1.0.24)
  • Fixed a randomly occurring issue with the Task Runner in which some tasks would fail, especially project syncs

6th February

  • Updated timeouts for detection of stalled instances to prevent VERY busy projects being killed unnecessarily. This was only causing problems during intense static site builds, but now it won't cause a problem anywhere.

19th January

  • Added free text search to repo list during project creation
  • Lots of docs + some demo videos πŸ‘Œ

18th January

  • Better dashboard response for environments which become disabled once a subscription ends β›”
  • Improved task runner task isolation and cleanup routines

16th January

  • Added management for Composer authentication tokens

11th January

  • Added backup and restore functionality for postgres

10th January

  • Added V1 postgres support for enterprise clients
  • Reconfigured background queue runners for Enhanced and Pro plans

7th January

  • Added yearly billing plans πŸ“…

5th January

  • Made a few tweaks to costs and features of plans
  • Added a new Plans and Pricing page to the marketing site
  • Updated styling for plan selection boxes throughout
  • A few task runner tweaks to improve task pickup speed

3rd January

  • Added a new demo video to the homepage

πŸŽ‰ 2020 πŸŽ‰

31st December

  • Attach invoices to payment notification emails πŸ’Œ
  • Allow billing notifications to be sent to additional email addresses (so your billing department can get a copy of invoices)

30th December

  • Allow users to update their name, email and password
  • Finally added a logout button

16th December

  • Deployed new, super-scalable, task runner infrastructure
  • Fixed a bug when creating a new project from a repo which has no 'master' branch

12th December

  • Added git to base images to allow composer to pull repo dependencies
  • Fixed a bug which caused webhook builds to use old base images

10th December

  • Release updated image optimisation service. This no longer gets upset about large result images
  • Warn users about projects which are approaching their deletion threshold (28 days inactive)
  • Automatically delete projects' data and assets when they reach their deletion threshold

4th December

  • Refactored network segregation

2nd December 2019

  • Added location selection to project creation flow to allow use of new US cluster in New York πŸ—½
  • Released PHP 7.4 base image

27th November 2019

  • Added permissive CORS headers to the Assets Platform CDN
  • Updated the Assets and Helpers Plugin to support image focal points and better match the crop/resize behaviour of Craft transforms πŸ–Ό

25th November 2019

  • Webhooks V1 released with support for GitHub and GitLab. Allows bundles to be created in response to push events on a specific branch and optional auto-deployment to a selected environment πŸ“¦
  • More assets documentation

22nd November 2019

  • Released client invites! This allows developers to invite their clients to Servd via a simplified onboarding flow which helps them to register, create a team, set up billing and invite you as a member of their team. No need to chase clients for hosting costs any more πŸŽ‰
  • Lots of Assets documentation

20th November 2019

  • Tweaked CPU throttling and PHP settings to better support bursts of traffic from static site generators

19th November 2019

  • Fixed a bug which occurred when bundles were built from a commit with an extra long commit message

18th November 2019

  • Made basic auth a configurable, per-environment setting because it doesn't play well with GraphQL which requires a Bearer token in the Auth header

17th November 2019

  • Fixed a bug when recording project hits and unique ip addresses. This should start showing something sensible now

16th November 2019

  • Updated all platform software
  • Improved resiliency of database storage

15th November 2019

  • Tracked down a 3rd party bug which was causing databases to be restarted during large SQL imports. Added temporary workaround until an upstream fix is available
  • Increased default database storage space to 5GB

14th November 2019

  • Fixed a bug which could appear with certain combinations of linebreaks in commit messages
  • Increased maximum DB upload filesize
  • Added a progress indicator to database uploads
  • Create some troubleshooting documentation for Git Submodules

13th November 2019

  • Released multi-member team support. You can send invites to new members via the Team Settings page. All team members will have access to all of the projects owned by the team
  • Teams can now be renamed so you can express yourself more readily

12th November 2019

10th November 2019

  • Significant updates to cluster scaling and headroom allocation decision making

9th November 2019

  • Released multi-currency support. You can now pay using πŸ‡¬πŸ‡§ GBP, πŸ‡ΊπŸ‡Έ USD or πŸ‡ͺπŸ‡Ί EUR. A default is selected based on your location during registration
  • Fixed a few SFTP bugs for assets
  • A few style tweaks
  • Use newest logo in email headers and on invoices

5th November 2019

  • A few cosmetic changes to the project overview page
  • Updated styling and functionality for the environment bundle selector

4th November 2019

  • Changed the way environments are managed in the back end which will allow for dynamic environment provisioning in a future update

2nd November 2019

  • Released backup restore functionality. Allows rollback of database, assets, application commit and software versions as a single operation. (This feature is awesome)
  • Applied updated sliding-panel styling to domains list

31st October 2019

  • Released improved backups system and interface

30th October 2019

  • Fix for invalid backup scheduling parameters
  • Tweaks to default database memory allocations
  • Prevent import operations before a project has been successfully deployed for the first time (database needs to be initialised before we can import into it!)
  • Added .gzip to list of allowed file types for database imports
  • Improved database import error messaging
  • Create default assets directories within assets platform on project initialisation

29th October 2019

  • Fix for trial ending notification emails not being dispatched

28th October 2019

  • Released PHP base image v1.1.0 which includes a fix for CVE-2019-11043
  • More private beta emails sent out
  • Default deploy SSH key length changed to 2048 to appease BitBucket overlords
  • Fix scheduling for projects with a weekly backup schedule
  • Require explicit confirmation of intent to delete projects

26th October 2019

25th October 2019

  • Craft's 'modules' folder is now optional in directory mappings
  • Improved email template header
  • Removed a default setting of 'craft_' from the DB_TABLE_PREFIX environment variable
  • Improved log rotation on some supporting servers
  • Improvements to domain instructions and error messages
  • Created SSL documentation

23rd October 2019

  • First Private Beta emails sent out