v3.8.0
What's New
- Configurable schedulers and a new worker model power a major reliability and throughput upgrade. Checkmate now ships a less-simple queue alongside the existing in-memory option, with selectable queue type, worker fleet, and concurrency settings — so larger fleets of monitors can be scheduled and executed without saturating a single process. New worker stats and a queue/jobs table expose what's running, what's pending, and what failed, making the scheduler observable instead of a black box.
- DNS monitors are now a first-class monitor type. Both the backend provider and the frontend create/edit experience have landed, so DNS records can be monitored end-to-end without external tooling.
- Maintenance windows now support groups and recurring schedules. Operators can group monitors under a single maintenance window and run recurring schedules cleanly, with the recurring-edit validation gap fixed so editing an active window no longer corrupts its schedule. Past-dated one-time windows are now rejected at creation, eliminating a class of "silently inactive" maintenance entries.
- Monitor tags ship across backend, frontend, and monitor summaries. Tags can be assigned to monitors and surface consistently in summaries and lists, with a centered Tag-label layout that fits the existing design system.
- Bulk pause/resume and a partial-failure warning land for fleet operators. Multiple monitors can now be paused or resumed in one action, and when an operation only partially succeeds the UI surfaces a partial failure warning with the failed count instead of silently swallowing it.
- Uptime progress indicators have been added across monitors, infrastructure, pagespeed, and status pages, giving an at-a-glance read on availability without drilling into each row.
- Mobile and desktop pagespeed strategies are now selectable per monitor, so a single pagespeed monitor can target either form factor instead of being locked to one.
- ntfy is now a supported notification channel, joining email, Discord, Slack, and webhooks for alert delivery.
- A new Catalan (
ca) translation has been added, and 16 existing locales received a gap-closing translation pass so newly added strings are no longer rendered in English. README translations have also been added for all supported languages. - The status page now uses the operator-configured timezone on public pages, so visitors and operators see the same timestamps regardless of browser locale.
- Status code
5000is now rendered as "Down" with a subtype tooltip, replacing a confusing raw code with a human-readable status plus the underlying reason on hover. - SMTP configuration now accepts an optional sender display name, so outgoing alert emails arrive with a meaningful "From" name instead of just an address.
- Capture endpoint and authorization-secret fields on the infrastructure monitor form now have inline guidance, removing a frequent setup-time stumbling block.
- API docs are now generated directly from the Zod validation schemas, so the published OpenAPI spec stays in sync with what the server actually accepts.
- Mongo diagnostics, raised recent-check limits, connection reuse, and a bumped concurrency default round out a wider performance and observability pass on the server side.
- A blank-screen crash when clearing the timezone search field has been fixed, alongside fixes for status-page save mutation, pause/resume of geo jobs, histogram response-time rendering, monitor-summary tag rendering, page-index reset, jobs pagination, and a husky pre-commit guard that no longer fires during merges or rebases.
- Mono and ARM container images can now run as a non-root user (UID 1000), aligning with hardened-runtime and Kubernetes security policies.
- Dependencies have been refreshed across the stack — axios, multer, vite, lodash, and a sweep of transitive bumps (picomatch, flatted, follow-redirects, postcss, yaml, protocol-buffers-schema, fast-xml-parser) — closing known advisories and keeping the build current.
Thank you to our new contributors @harsh-aghara, @adosaiguas, @Iriome-Santana, and @jhcpeixoto for their first contributions in this release!
What's Changed
- Fix: prevent blank screen crash when clearing timezone search field by @ayshaL in #3583
- feat(smtp): add optional sender display name to SMTP configuration by @gorkem-bwl in #3607
- chore(deps): bump axios to 1.15.2 by @gorkem-bwl in #3611
- chore(deps): bump multer to 1.4.5-lts.2 by @gorkem-bwl in #3612
- chore(deps): bump lodash to 4.18.1 (transitive) by @gorkem-bwl in #3613
- chore(deps): bump picomatch (transitive) by @gorkem-bwl in #3614
- chore(deps): bump flatted (transitive) by @gorkem-bwl in #3615
- chore(deps): bump vite to ^6.4.2 by @gorkem-bwl in #3616
- chore(deps): bump follow-redirects (transitive) by @gorkem-bwl in #3617
- chore(deps): bump postcss (transitive) by @gorkem-bwl in #3618
- chore(deps): bump postcss (transitive) by @gorkem-bwl in #3619
- chore(deps): bump yaml (transitive) by @gorkem-bwl in #3620
- chore(deps): bump protocol-buffers-schema (transitive) by @gorkem-bwl in #3621
- chore(deps): bump fast-xml-parser (transitive) by @gorkem-bwl in #3622
- fix: mutate status page on save by @ajhollid in #3624
- feat: raise max recent checks by @ajhollid in #3623
- fix: extract duplicate code, add slot components by @ajhollid in #3625
- feat: Generate API docs from zod schema by @ajhollid in #3627
- fix(status-page): use operator-configured timezone on public pages by @gorkem-bwl in #3630
- feat(infrastructure): clarify capture endpoint and authorization secret on monitor form by @gorkem-bwl in #3629
- fix: pause resume geo jobs by @ajhollid in #3632
- fix: queue table by @ajhollid in #3633
- feat/bulk pause resume by @harsh-aghara in #3626
- docs: rename frontend-conventions to coding-conventions, add backend rules by @gorkem-bwl in #3637
- feat(checks): render status code 5000 as "Down" with subtype tooltip by @gorkem-bwl in #3638
- fix(maintenance): reject past-dated one-time windows at creation by @gorkem-bwl in #3640
- feat: dns provider by @ajhollid in #3642
- i18n: add Catalan language by @adosaiguas in #3643
- feat: fe/dns monitors by @ajhollid in #3644
- fix: allow mono and arm containers to run as non-root user (UID 1000) by @Iriome-Santana in #3584
- feat: adding mobile/desktop pagespeed strategy by @akashmannil in #3470
- fix: husky guard pre-commit against merge/rebase state by @ajhollid in #3645
- fix: histogram-response-times by @ajhollid in #3648
- feat: maintenance window groups by @ajhollid in #3649
- Feat/fe/maintenance window groups by @ajhollid in #3650
- fix: update query by @ajhollid in #3652
- Fix/maintenance recurring edit validation by @ZeinebMegaadi in #3547
- fix(i18n): close translation gaps across 16 locales by @gorkem-bwl in #3653
- add password and newPassword to editUserValidation by @ajhollid in #3654
- fix: width for stats size, noWrap for stats by @ajhollid in #3655
- feat: monitor tags by @ajhollid in #3661
- fix: monitor summary with tags by @ajhollid in #3664
- Feat/fe tags by @ajhollid in #3663
- fix: update monitors on maintenance window change by @ajhollid in #3668
- Expose failedCount and surface partial failure warning in UI by @harsh-aghara in #3670
- Add indeterminate icon to Checkbox component for consistency by @harsh-aghara in #3669
- fix: add tests for mw and monitor services by @ajhollid in #3671
- fix: add centering box for Tag labels by @ajhollid in #3672
- chore: bump dependencies by @ajhollid in #3674
- Feat/mongo diagnostics by @ajhollid in #3675
- reset page index by @ajhollid in #3676
- feat: bump concurrency by @ajhollid in #3677
- Feat: Uptime Progress Indicator by @Br0wnHammer in #3673
- docs: add README translations for all supported locales by @gorkem-bwl in #3687
- feat: Configurable Schedulers by @ajhollid in #3688
- fix: move listener registration to constructor by @ajhollid in #3689
- feat: workers by @ajhollid in #3691
- Feat: Progress indicator status page by @Br0wnHammer in #3692
- feat: worker stats by @ajhollid in #3693
- fix: less simple queue tweaks by @ajhollid in #3695
- fix: connection reuse by @ajhollid in #3696
- fix: jobs pagination by @ajhollid in #3697
- Feat: Progress indicator infra & pagespeed by @Br0wnHammer in #3694
- feat: add ntfy notification support by @jhcpeixoto in #3684
- bump version by @ajhollid in #3700
New Contributors
- @harsh-aghara made their first contribution in #3626
- @adosaiguas made their first contribution in #3643
- @Iriome-Santana made their first contribution in #3584
- @jhcpeixoto made their first contribution in #3684
Full Changelog: v3.7.1...v3.8.0