Checkmate v3.9.1
Features
- Uptime percentage for monitors — new MongoDB aggregation stage exposes uptime % on individual monitor views and on status pages.
- Custom "up" status codes for HTTP monitors — treat additional HTTP status codes (e.g.
401,403,418) as "up" instead of failure. Wired end-to-end: backend model + validation against real HTTP status codes, frontendcustomUpCodestype, UI in the create-monitor form, and the advanced matcher still runs on custom-up responses so body/JSON-path checks aren't silently bypassed. - Custom domain support for published status pages — publish a status page on your own domain, with CSP scoped to public status-page routes, per-request CORS (with cached and negative-cached origin lookups), a partial DB index on
customDomainso unpublished pages don't collide, and the URL protocol derived from the configured client host. - HEAD request support for HTTP monitors — select
HEADas the request method on any HTTP monitor, with backend/frontend sync and asuperRefineguard that rejectsHEADcombined with body or JSON-path matchers. Default remainsGET; imported monitors backfill toGET. - Minimal theme for status pages — a fifth selectable theme (joining Refined, Modern, Bold, and Editorial) for operators who want a stripped-down look.
- Custom CSS for status pages — full end-to-end support: DB field, length cap, server-side validation mirrored on the client, and a CSS-syntax tokenizer that rejects references to external resources (
@import,url(...), etc.) so operator-supplied CSS can't reach out. A tighter CSP is applied to the public status-page document, and the admin preview renders inside a same-origin iframe so operators can safely experiment before publishing. - Worker health monitoring — the new worker exposes a
getHealthmethod, a dedicated health server with readiness and liveness endpoints, worker stats surfaced on the frontend, and observability hooks in the DB queue worker. Long-running jobs now renew their locks so extended checks don't lose their lock mid-run. - Additional MongoDB diagnostic stats — Mongo read/write per second counters, plus a resilient
totalSizederivation for Atlas shared tier (wheredbStatsomits the field). Diagnostic stats reporting itself was fixed alongside.
Fixes
- Correct check evaluation order
- Re-arm jobs on maintenance-window pause and delete
- Change monitor status on exit from a maintenance window
- Fix excess polling
- Fix diagnostic stats reporting
- Derive Mongo
totalSizewhendbStatsomits it on Atlas shared tier - Fix status page styling
- Migration fixes
Internal & Infra
- Decouple the worker from the main process
- DB-backed queue
- Worker reorganization and clean split
- Project and code organization
- Update Helm charts
- Add tests covering maintenance-window monitor edits
New Contributors
Full Changelog: v3.8.1...v3.9.1