Give an application a group in Settings under General, and the applications overview lists every application in that group together. Put the production and staging version of one project in the same group and they sit side by side.
Before: Applications were listed by creation date, so related applications ended up spread across pages. After: Applications in the same group are listed together, with ungrouped applications at the end.
Tags that name an environment now get a fixed colour on the applications overview, the costs page and in the application header, so a production application is easy to tell apart from a staging one. You can also choose how many applications the overview shows per page.
The Commands tab has a new Transfer files card. Download a file such as a log from the instance you selected, or upload a file to a path of your choice.
Before: The dashboard had no way to move a file in or out of a running instance. After: Enter a path to download a file, or pick a file and a path to upload one.
Germany (Frankfurt) joins Amsterdam, London and Chicago as a region for your applications. The API accepts fra1 as a region and now rejects region names that don't exist, where it used to accept any value.
Telegram is now available as a notification channel. Deployment results, uptime checks and storage warnings arrive in the chat or group you pick, and there is no bot to create or token to paste.
Add ClamAV from the Custom services card and scan uploads for malware before you store or serve them. Your application streams the file contents to the scanner over port 3310, and the new ClamAV guide includes a PHP helper that does exactly that.
PostgreSQL 17 and 18 are available when you add a database service. Extensions such as pgvector used to be limited to PostgreSQL 16 and now work on 16, 17 and 18.
When you create an API key you can now pick the teams it may access. A key bound to teams can do everything you can inside those teams and nothing outside them.
Before: Every API key could reach every team you belong to. After: Choose one or more teams per key, or select none to keep access to all of them.
Under Settings, Appearance you can choose whether dates put the day or the month first, and whether times use a 24-hour or 12-hour clock. A preview shows the result, and the choice applies throughout the dashboard, from deployments and logs to billing and monitoring charts.
Your YAML configuration can now create managed databases and object storage, together with an application or on their own. You can also export every managed database and object storage in a team as one YAML document.
Quick deploy, which deploys your application whenever you push to its default branch, can now be turned on and off through the API and by AI assistants connected to Ploi Cloud. Application responses include whether it is on. If the webhook can't be removed at your Git provider, the response says so, because that webhook can still trigger deployments until you remove it yourself.
Applications that deploy from an uploaded archive instead of a Git repository have a new Source code section in Settings. It shows when the archive was uploaded and has a button to download it.
The Commands tab now marks a command as failed only when it exits with an error. Warnings and other output written to standard error appear in a separate section instead of turning a successful run red, and the command history shows the exit code of a failed run.
Deleting a service that stores data now warns that its storage goes with it, shows how big that storage is, and asks you to type the service name first. The storage is also removed along with the service now, where it used to stay behind. Services without storage keep a simple confirmation.
The controls on the application overview now sit in a toolbar along the bottom, where the support chat can't cover them. You can zoom out far enough to see every card at once. Add service in the toolbar opens the same dialog as the service cards, with pricing plans and settings, and a card you hid comes back when you add a service to it.
Statamic sites now commit content changes on the instance that serves the site, and a background process pushes new commits to your repository within 30 seconds. When Git automation is on, your environment settings explain why STATAMIC_GIT_QUEUE_CONNECTION has to stay on a connection that runs there. A new guide lists what every combination of settings does.
A Reverb worker now shows the environment variables it generated for your application, with the same values your application receives.
Fields where you choose a new password tell Safari and 1Password what our password rules are, so a generated password is never rejected. Password managers also recognise the login, password setup and password confirmation forms correctly, and offer your one-time code on the two-factor screen.
The website and dashboard have new colours and typography built around the Ploi Cloud violet. The dashboard is no longer plain grey, and cards stand out from the page behind them.
Retrying an open invoice with direct debit used to report a failure while the payment was still on its way. It now tells you the payment has started and can take a few business days. The retry button also shows on every open invoice, unless a payment for it is already being processed.
When a payment fails, the email now states the date and time your applications will be paused if it keeps failing, 7 days after the first failure. Paying the invoice ends that period right away.
Removing your last payment method now settles everything you still owe first, including open invoices and usage that hasn't been invoiced yet. Deleting a team or your account is blocked while a balance is outstanding, and the message tells you the amount.
The blog and changelog have RSS feeds at /blog.rss and /changelog.rss that carry full posts. Add .md to the address of a blog post or changelog entry to get it as markdown, and each changelog entry has buttons to copy it for an AI assistant or open it in ChatGPT, Claude, Perplexity or Mistral.
A new free tools page covers PDF conversion and screenshots through an API with 1,000 free credits every month. The comparisons with Heroku and Laravel Cloud are now collected on one page at /alternative.
WordPress builds now install pending system security updates while your image is built.
Chrome Headless, ClamAV, ClickHouse, Gotenberg, Inertia SSR, Meilisearch, Nightwatch and Typesense each have their own article now. The Reverb guide covers REVERB_ALLOWED_ORIGINS, the Headscale section explains how to put the tag on your key, and the managed database IP filtering guide now correctly says that new databases start with public access turned off.
Bitbucket hands out a new refresh token every time one is used, and that new token was thrown away. A connection worked for a couple of hours and then failed until you reconnected. The new token is now stored, so connections stay alive. Accounts with more than 100 repositories or workspaces also no longer hang while loading them.
Registering a passkey could fail with a token mismatch error. It now works on the first attempt.
Wildcard certificates were always requested in Amsterdam, whatever region the application ran in, so wildcard domains on applications in London or Chicago never got a working certificate. Adding and removing a wildcard domain now happens in the application's own region.
On newer applications, adding a Reverb worker set REVERB_HOST to an address that didn't connect. Deleting a Reverb worker also left its websocket endpoint behind. Both are fixed, and the API now accepts reverb as well as laravel_reverb as the worker type.
Changing a service's memory or settings through infrastructure as code saved the new values without applying them. They now take effect. A volume size written in Mi was also read as Gi, so 512Mi became 512GB. Sizes convert correctly now, and memory values are checked against each service's minimum.
Updating a service through the API replaced all of its settings with the ones you sent, so anything you left out was reset. The settings you send are now merged into the existing ones.
Valkey databases showed user and database tabs that don't apply to them, and the connection details for your application were missing the REDIS_ variables. Both now match what a Valkey database supports.
Instances that had already stopped were still counted when working out an application's health, so a healthy application could stay marked as unhealthy indefinitely. Only instances that are still running count now.
When an application was paused, its database and other services could keep showing as active in the dashboard for hours. Their status now updates together with the application.
Debian bullseye, which PHP 7.4 images are built on, reached end of life and its package sources moved, so PHP 7.4 applications stopped building. They build again and still receive the last security updates published for bullseye.
Tailscale is free, but it appeared in an application's cost breakdown and usage summaries. It no longer does.
Headscale refuses a node that asks for its own tag, and our Tailscale service always asked for one, so connecting through Headscale failed. The tag request is left out for self-hosted control servers now, and the guide shows how to create a key with the tag already on it.
Removing a volume could apply its cleanup to a different volume in the same application, while the volume you removed stayed behind. Removal now targets the volume you picked.
A deployment of a squash-merged branch could fill the whole Recent activity card with its commit message and push every other entry out of view. The card now shows the first line only, with the full text on hover.
A ticked checkbox looked empty in dark mode, and the tag filters on the applications overview and the costs page could not be ticked at all.
The team switcher labelled every team as Team, including your personal team. Personal teams are labelled Personal again and listed first.
Adding a payment method now ends a grace period right away, even if setting up the subscription fails afterwards.
The sidebar highlights Dashboard when you are on it. Long IP addresses no longer overlap their note in database access control. Documentation links and table lines are readable in dark mode, and so is the warning shown when you delete a team.