5 min read

Cachet Update — January 2025

Last year certainly was a busy year for Cachet and we've been working hard to continue building 3.x. We're still working towards the 3.x release and I'm incredibly proud of the progress that has been made so far.

Last year certainly was a busy year for Cachet and we've been working hard to continue building 3.x. We're still working towards the 3.x release and I'm incredibly proud of the progress that has been made so far.

January saw the introduction of several new features and multiple improvements and bug fixes across the status page, dashboard and API.

Updated Translations

Dan Johnson kicked things off in January by contributing a refactor of Cachet's translations. Previously, we used Laravel's JSON translations, but this has several short-comings for larger applications.

chore: Implement short translation keys by danjohnson95 · Pull Request #162 · cachethq/core
This PR adds translation keys for every string in the application, and does so in a consistent short-keys format. All strings live inside the cachet namespace, and so are accessed like __('cach…

Spurred on by this PR, we also decided to merge a lot of outstanding PRs surrounding localization. As such, Cachet 3.x is already shipping with translations for:

  • Deutsch (DE)
  • Deutsch (AT)
  • Deutsch (CH)
  • English
  • English (UK)
  • Nederlands
  • Português (BR)
  • 简体中文
  • 繁體中文
  • Filipino

Status Page Updates

Cachet has received several updates to the status page notably the re-introduction of "Recent Incidents Only" setting from Okojie Davis George. This setting instructs Cachet to only show the last n days of incidents.

Adds “Recent Incidents Only” functionality by binarygeotech · Pull Request #157 · cachethq/core
Close #144 Adds settings to show only recent incidents by adding new fields to the settings page. Show Recent Incidents Only (toggle button) Number of Days to Show Recent Incidents (number input)…

Webhooks

Dan Johnson also introduced the new Webhooks feature. Webhooks can be used to notify external services when various things happen within your status page. For example, maybe you want to be notified when a component changes status, with this feature, Cachet makes that possible.

feat: Webhooks by danjohnson95 · Pull Request #165 · cachethq/core
👋 Sorry for the giant PR here, got a bit carried away. This PR introduces the webhooks functionality ✨ (Resolves #106) It's using Spatie's library under the hood to handle sending and retr…

Webhooks were a commonly requested feature in Cachet 2.x and I'm glad that we've been able to bring them to 3.x.

Testing Against Databases

We're now testing the cachethq/core repository against MySQL, SQLite and Postgres with both PHP 8.3 and 8.2 (also 8.4, but that's a Feb update).

Testing against more scenarios ensures that Cachet is available to more companies and projects that use different database stacks.

User Management

We've finally brought back the ability to add new users to your Cachet 3.x dashboard, allowing them to manage the status page alongside the admin.

For now, we've made users and permissions work the same as Cachet 2.x, a basic permission system with admin / user levels. Users can create incidents, but cannot create other users.

Future work will include granular permissions / roles.

User Management by jbrooksuk · Pull Request #153 · cachethq/core
Closes #76 Configurable User model Admin / user levels (to match v2.x) Mail configuration API key management (with scopes!)

Speaking of users, they may now select their preferred locale which applies to the database. Thanks again, Dan!

feat: Add ability to pick preferred locale for a user by danjohnson95 · Pull Request #187 · cachethq/core
This PR allows selecting the preferred locale for a user. It also adds a middleware that sets the application locale to the user's preferred locale, or the system default (as specified by the b…

Render Hooks

While we've been busy working on the core feature set and reliability of Cachet, we also know that plugins will play a notable part in the success of the platform. As such, we also merged in the Render Hooks feature.

Render Hooks can be used by plugins to inject additional HTML into various part of the status page.

I'm excited to see what plugins come to Cachet in the future.

Render Hooks by jbrooksuk · Pull Request #151 · cachethq/core
Closes #122 🍹 This code is very much copy and pasted (with some adjustments to scope the feature down) from Filament. Big thanks to them for this concept. Render hooks will allow for Cachet plugi…

API Specification Generation

Cachet 3.x ships with a powerful JSON API that can be used to automate a large section of the status page. A good API is only as good as its documentation and I'm really happy to share that Dedoc became a sponsor of Cachet and kindly provided us with a Scramble Pro license. Roman from Dedoc very graciously implemented API documentation and also provided a workflow so that the API reference is automatically updated - very cool!

API specification generation by romalytvynenko · Pull Request #178 · cachethq/core
Hey 🙌 This PR introduces automatic API specification generation using Scramble. How it works dedoc/scramble is required as development dependency. For spec generation testbench is used: ./vendor/bi…

Of course, we've continued working on Cachet throughout February and we'll have an update soon.

We're getting closer to an alpha release of 3.x!