Skip to content

Release history

Checkmate releases

Checkmate is an open-source, self-hosted tool designed to track and monitor server hardware, uptime, response times, and incidents in real-time with beautiful visualizations. Don't be shy, join here: https://discord.com/invite/NAb6H3UTjK :)

All releases

6 shown

v3.7.1 New feature
Notable features
  • Full UI/UX redesign with unified design system and completely rebuilt auth experience
  • Public status page with four selectable themes and persistent theme configuration
  • Incidents now created on first failed check instead of after state transitions
Full changelog

What's New

  • A sweeping UI/UX overhaul has landed across the app. This release ships a full design-system pass together with a redesigned auth experience — login, registration, password reset, and the initial setup flow have all been rebuilt for clarity and consistency. Typography, spacing, dialogs, and inputs now follow a unified visual language across every page.
  • The public status page now supports four selectable themes, giving teams meaningful control over how their status page looks to the outside world. The themes are persisted via new theme and themeMode fields on the backend, so your selection sticks across sessions and deployments.
  • Incidents are now created on the very first failed check. Previously, monitors that were initializing or already in a "down" state could miss the first incident; that gap has been closed and the incident lifecycle is now correctly anchored from the initial failure.
  • Internationalization gaps have been closed across all 16 supported locales. Missing keys, untranslated fragments, and stale strings have been audited and filled in, so non-English users see a consistently translated UI throughout the app.
  • Modals and dialogs have been standardized on a shared layout. A new NoticeBanner design element, softer Cancel buttons, and a unified modal structure make confirmation flows feel calmer and more predictable.
  • Inputs and form controls have been refined. TextInput now forwards sx props for fine-grained styling, FieldLabel is fully theme-driven, and button hover states have been softened across the board for a more polished feel.
  • The Add Member modal now lays name and password fields side by side, cutting vertical space and making the invite flow feel less form-like.
  • The Incidents page has been visually reworked end-to-end for consistent typography, icons, and layout — the page now reads as a single cohesive view instead of a stack of mismatched sections.
  • Infrastructure network charts now show a clear notice when there's zero traffic, replacing empty graphs that previously looked like a rendering bug with an explicit, informative empty state.
  • The Remove monitors confirmation modal now includes explanatory body text, making the consequences of bulk removal obvious before the user commits.
  • Game server monitors now ship with inline guidance. The create-monitor flow explains how to set up the server-side query required for game monitors, so users aren't left guessing what to configure on their game host.
  • The "Open site" action is now hidden when a monitor's URL is not browser-openable (e.g. ping or port monitors), removing a confusing shortcut that previously led nowhere.
  • Vite's allowed hosts list is now configurable, making it easier to run the client behind custom domains, reverse proxies, and non-standard development hostnames without patching the config.
  • The app version is now sourced directly from package.json instead of being hardcoded, so version strings shown in the UI always match the build.
  • A noisy mongoose reserved-key warning on Check.errors has been suppressed at the model level, cleaning up server logs without changing behavior.
  • The OpenAPI spec for /monitors/team/with-checks now documents all supported query parameters, so SDK and client generators have a complete contract to work from.
  • Frontend conventions are now documented and enforced via ESLint. Five mandatory rules — covering MUI prop usage, theme paths, layout/typography constants, useTheme() access, and runtime/type pairing — are codified in docs/frontend-conventions.md and checked automatically in CI.
  • CONTRIBUTING.md and CLAUDE.md have been aligned with the current toolchain, including up-to-date Node, package manager, and tooling references so new contributors aren't following stale instructions.
  • A small but meaningful round of cleanup: a notification-template typo has been fixed, a broken documentation link has been replaced with the working one across the app, and a regression where status-page checks rendered in reverse order has been corrected.

Thank you to our new contributor @ayshaL for their first contribution in this release!

What's Changed

  • fix(client): hide Open site action when URL is not browser-openable by @gorkem-bwl in https://github.com/bluewave-labs/Checkmate/pull/3574
  • fix(client): allow configurable Vite allowed hosts by @gorkem-bwl in https://github.com/bluewave-labs/Checkmate/pull/3570
  • fix(client): source app version from package.json by @gorkem-bwl in https://github.com/bluewave-labs/Checkmate/pull/3572
  • fix(server): suppress mongoose reserved-key warning on Check.errors by @gorkem-bwl in https://github.com/bluewave-labs/Checkmate/pull/3571
  • docs(openapi): document all query params on /monitors/team/with-checks by @gorkem-bwl in https://github.com/bluewave-labs/Checkmate/pull/3573
  • Fixed typo in notification by @ayshaL in https://github.com/bluewave-labs/Checkmate/pull/3575
  • fix:replaced the broken link with the working one everywhere by @ZeinebMegaadi in https://github.com/bluewave-labs/Checkmate/pull/3578
  • chore(i18n): close translation gaps across all 16 locales by @gorkem-bwl in https://github.com/bluewave-labs/Checkmate/pull/3585
  • UI/UX overhaul: design system pass + auth redesign by @gorkem-bwl in https://github.com/bluewave-labs/Checkmate/pull/3581
  • docs: align CONTRIBUTING.md and CLAUDE.md with current toolchain by @gorkem-bwl in https://github.com/bluewave-labs/Checkmate/pull/3588
  • feat: incident on initializing && down by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3589
  • feat(create-monitor): explain server-side query setup for game monitors by @gorkem-bwl in https://github.com/bluewave-labs/Checkmate/pull/3590
  • refactor(dialog): standard modal layout, NoticeBanner design-element, softer Cancel by @gorkem-bwl in https://github.com/bluewave-labs/Checkmate/pull/3591
  • refactor(inputs): softer button hover, sx-forwarding TextInput, themed FieldLabel by @gorkem-bwl in https://github.com/bluewave-labs/Checkmate/pull/3592
  • feat(account): side-by-side name and password fields in Add Member modal by @gorkem-bwl in https://github.com/bluewave-labs/Checkmate/pull/3593
  • feat(incidents): consistent typography, icons, and layout across the page by @gorkem-bwl in https://github.com/bluewave-labs/Checkmate/pull/3594
  • feat(infrastructure): show notice when network charts have zero traffic by @gorkem-bwl in https://github.com/bluewave-labs/Checkmate/pull/3595
  • feat(settings): explanatory body in Remove monitors confirmation modal by @gorkem-bwl in https://github.com/bluewave-labs/Checkmate/pull/3596
  • docs(client): document frontend conventions and enforce via ESLint by @gorkem-bwl in https://github.com/bluewave-labs/Checkmate/pull/3599
  • feat(status-page): four selectable themes for the public status page by @gorkem-bwl in https://github.com/bluewave-labs/Checkmate/pull/3569
  • feat(status-page): add theme and themeMode fields (backend) by @gorkem-bwl in https://github.com/bluewave-labs/Checkmate/pull/3568
  • bump version by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3603
  • develop -> master by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3604
  • Fix/reveresed status page checks by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3605
  • develop -> master by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3606

New Contributors

  • @ayshaL made their first contribution in https://github.com/bluewave-labs/Checkmate/pull/3575

Full Changelog: https://github.com/bluewave-labs/Checkmate/compare/v3.6.1...v3.7.1

v3.6.1 New feature
Notable features
  • Teams as first-class citizens with monitor grouping and ownership
  • Configurable data retention policy
  • Three new notification channels: Telegram, Twilio SMS, Pushover
Full changelog

What's New

  • The checkmate.so website has been fully renewed, with a refreshed design and updated messaging across the board.
  • The documentation at checkmate.so/docs has been overhauled to reflect v3.6.1, covering the new features, updated setup instructions, and corrected references throughout.
  • Teams are now first-class citizens in Checkmate. You can group monitors by team, assign ownership, and scope notifications and access accordingly — making multi-team deployments and larger organizations much easier to manage.
  • Data retention is now configurable. Older checks and related records can be pruned automatically based on your retention policy, keeping the database lean and predictable over long-running deployments.
  • Two new notification channels have landed: Telegram and Twilio SMS. You can now deliver incident alerts via Telegram bots or send SMS messages through Twilio, alongside the existing email, Slack, Discord, webhook, Matrix, and Pushover channels.
  • Pushover is also now supported as a notification channel, giving mobile-first teams another reliable way to receive alerts.
  • The monitor status engine has been refactored end-to-end for atomicity and correctness. State transitions (up → down, down → up) are now evaluated more reliably, with tightened streak and heartbeat handling, fixes to "down" notifications that were not being dispatched, and a proper initial state so the first check after creation behaves predictably.
  • Status pages now include an infrastructure section. Public status pages can surface CPU, memory, and disk health from infrastructure monitors alongside uptime, with the status page API refresh interval tightened to 10 seconds for near real-time updates.
  • Status bar messages on public status pages have been rewritten to be clearer and more informative, and down monitors now correctly display a "down" state instead of a misleading "active for…" label.
  • Bulk edit for monitor notifications is now available via a dedicated endpoint, so you can attach or detach notification channels across many monitors in a single call instead of editing them one at a time.
  • Internationalization has been overhauled. All locale files have been restructured and translated, remaining zh-TW strings have been filled in, and the legacy PoEditor workflow has been disabled in favor of the new structure. Translation contribution guidance has also been refreshed.
  • The Matrix notification channel has been fixed and is working again for teams that rely on it.
  • DNS lookups now respect a configured cache TTL, preventing stale DNS results from silently breaking monitoring when upstream IPs change.
  • The "breached" infrastructure status has been renamed to "threshold exceeded" across the UI for clarity.
  • The login page no longer shows the register tip when registration isn't applicable, and users landing on a fresh instance with no super admin are now redirected to the setup flow automatically.
  • The production Docker Compose setup and nginx configuration have been updated and unified, making deployments more consistent across environments. A Windows batch script (build_images.bat) has also been added for building Docker images on Windows.
  • Test coverage has grown substantially: new service tests, integration tests, monitor status tests, heartbeat tests, initialization tests, and a dedicated check-tests workflow have all been added to catch regressions earlier.
  • Across the backend, controllers, services, middleware, validation, and migrations have been retyped and linted into a clean state — auth, diagnostic, incident, invite, log, maintenance window, monitor, notification, queue, settings, and snapshot controllers have all received typing and validation fixes, and the remaining ESLint errors have been resolved.
  • Other fixes worth calling out: email templates are now copied to dist during build (fixing empty notification emails), MJML templates are no longer ignored by TSC, the geocheck update logic has been corrected, the scheduler has been bumped and now consumes scheduler events, monitor stats are no longer mutated in memory, role types are enforced correctly, notification timeouts have been tightened, and the demo monitor import and demo user flows have been fixed.
  • Documentation has seen a round of polish: the README now includes a monitor lifecycle explanation and a Prerequisites section, CLAUDE.md has been expanded with the backend architecture flow and repository pattern, broken docs links have been fixed, the Node.js version requirement has been updated to >=20, and several typos and outdated references (including the old bluewave-uptime repo name) have been corrected.

Thank you to our new contributors @tb102122, @ashu130698, @LeC-D, @mayssagl, @ad2ien, @SkyKingPX, @egeoztass, @ZeinebMegaadi, and @Smolcup for their first contributions in this release!

What's Changed

  • fix: demo monitor import by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3395
  • add teams by @tb102122 in https://github.com/bluewave-labs/Checkmate/pull/3375
  • feat: retention by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3398
  • fix: type authController correctly, update services accordingly by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3399
  • fix: set DNS cache TTL to prevent stale lookups by @gorkem-bwl in https://github.com/bluewave-labs/Checkmate/pull/3400
  • fix: controller utils types by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3404
  • fix: properly type diagnosticController by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3405
  • fix: Incident Controller/Service typing by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3406
  • fix: empty email body due to TSC ignoring .mjml templates by @akashmannil in https://github.com/bluewave-labs/Checkmate/pull/3403
  • fix: inviteController typing by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3407
  • fix: log controller by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3408
  • fix: type MWController by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3409
  • fix: validation in monitor controller by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3410
  • fix: rename "breached" status to "threshold exceeded" by @gorkem-bwl in https://github.com/bluewave-labs/Checkmate/pull/3401
  • fix: implement NotificationController missing validation by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3411
  • fix: QueueController Types by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3412
  • fix: SettingsController correct types by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3414
  • fix: unset with explicit null by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3415
  • fix: properly type snapshot by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3417
  • fix: middleware typing by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3418
  • fix: modify heatmap response time conditional text by @akashmannil in https://github.com/bluewave-labs/Checkmate/pull/3416
  • feat: status-page infrastructure section BE by @akashmannil in https://github.com/bluewave-labs/Checkmate/pull/3424
  • feat: status-page infra section FE by @akashmannil in https://github.com/bluewave-labs/Checkmate/pull/3425
  • fix: updating swagger - /PUT to /PATCH monitor/{monitorId} by @akashmannil in https://github.com/bluewave-labs/Checkmate/pull/3426
  • fix: updating swagger for createMonitor and /monitor/teams by @akashmannil in https://github.com/bluewave-labs/Checkmate/pull/3427
  • fix: modifying refreshInterval=10s for statusPage api by @akashmannil in https://github.com/bluewave-labs/Checkmate/pull/3428
  • fix/monitor service lint by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3429
  • fix/services by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3430
  • fix: infra services by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3431
  • fix/controllers by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3433
  • fix: migration lint errors by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3435
  • fix: resolve remaining ESlint errors by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3436
  • feat: add bulk edit monitor notifications endpoint by @ashu130698 in https://github.com/bluewave-labs/Checkmate/pull/3376
  • fix: add upper limit to notificationValidation by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3437
  • feat: timescaledb by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3441
  • feat(notifications): add Telegram notification channel (#2753) by @LeC-D in https://github.com/bluewave-labs/Checkmate/pull/3439
  • Feat(DLQ): Add DLQ data layer -> types, model, and repository by @Br0wnHammer in https://github.com/bluewave-labs/Checkmate/pull/3447
  • Fix outdated links and add Prerequisites section by @mayssagl in https://github.com/bluewave-labs/Checkmate/pull/3455
  • fix geocheck update logic by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3456
  • feat: bump scheduler, consume scheduler events by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3458
  • fix: restructure and translate all i18n locale files by @gorkem-bwl in https://github.com/bluewave-labs/Checkmate/pull/3461
  • feat: add remaining zh-tw strings by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3471
  • fix: disable poeditor workflow by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3473
  • fix: align server test suite with current source implementations by @gorkem-bwl in https://github.com/bluewave-labs/Checkmate/pull/3460
  • Fix matrix notifications by @ad2ien in https://github.com/bluewave-labs/Checkmate/pull/3479
  • feat/service tests by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3492
  • feat: integration tests by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3494
  • fix: initialize timeOfLastFailure by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3498
  • fix: remove in memory modification of monitor stats by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3499
  • fix: enforce correct role types by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3500
  • fix: notification timeouts by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3501
  • feat: add check-tests workflow by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3502
  • fix: add test for monitor status by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3507
  • fix: additional status service tests by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3508
  • fix: notification down not sent by @akashmannil in https://github.com/bluewave-labs/Checkmate/pull/3505
  • feat/monitor status refactor by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3510
  • feat: add additional heartbeat tests by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3522
  • fix: monitor init by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3523
  • fix: tighten streak time coniditional by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3524
  • feat: initializaiton tests by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3525
  • fix: remove notifications from monitors before deleting notifications by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3526
  • fix: demo user by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3527
  • Add windows batch script for creating docker images automatically by @SkyKingPX in https://github.com/bluewave-labs/Checkmate/pull/3529
  • docs: improve CLAUDE.md with architecture flow and repository pattern… by @mayssagl in https://github.com/bluewave-labs/Checkmate/pull/3531
  • fix: copy email templates to dist during build by @mayssagl in https://github.com/bluewave-labs/Checkmate/pull/3532
  • Improve status bar messages on public status pages by @SkyKingPX in https://github.com/bluewave-labs/Checkmate/pull/3512
  • fix: monitor status atomicity by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3533
  • feat: add Pushover notification channel by @egeoztass in https://github.com/bluewave-labs/Checkmate/pull/3530
  • Fix: added "down" display on down monitors instead of "Active for:..." by @ZeinebMegaadi in https://github.com/bluewave-labs/Checkmate/pull/3518
  • fix: update production docker compose/nginx conf by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3542
  • docs: fix typo 'big' to 'bug' in PULLREQUESTS.md by @Smolcup in https://github.com/bluewave-labs/Checkmate/pull/3541
  • docs: fix discussions link in Spanish README by @Smolcup in https://github.com/bluewave-labs/Checkmate/pull/3535
  • fix/unified docker compose by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3544
  • fix: correct docs link URL (404 issue) by @ZeinebMegaadi in https://github.com/bluewave-labs/Checkmate/pull/3555
  • docs: update i18n contribution guide by @Smolcup in https://github.com/bluewave-labs/Checkmate/pull/3553
  • docs: update repo name bluewave-uptime to checkmate in CODE_OF_CONDUCT by @Smolcup in https://github.com/bluewave-labs/Checkmate/pull/3552
  • Add build_images.bat for Docker image builds by @SkyKingPX in https://github.com/bluewave-labs/Checkmate/pull/3549
  • docs: update Node.js version requirement to >=20 in contributing guide by @ZeinebMegaadi in https://github.com/bluewave-labs/Checkmate/pull/3545
  • feat: add Twilio SMS notification channel by @egeoztass in https://github.com/bluewave-labs/Checkmate/pull/3534
  • chore: remove timescale db by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3558
  • fix: hide register tip on login and redirect to setup when no super admin by @gorkem-bwl in https://github.com/bluewave-labs/Checkmate/pull/3557
  • normalize line endings by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3561
  • docs: added monitor lifecycle explanation to README by @ZeinebMegaadi in https://github.com/bluewave-labs/Checkmate/pull/3520
  • develop -> master by @ajhollid in https://github.com/bluewave-labs/Checkmate/pull/3563

New Contributors

  • @tb102122 made their first contribution in https://github.com/bluewave-labs/Checkmate/pull/3375
  • @ashu130698 made their first contribution in https://github.com/bluewave-labs/Checkmate/pull/3376
  • @LeC-D made their first contribution in https://github.com/bluewave-labs/Checkmate/pull/3439
  • @mayssagl made their first contribution in https://github.com/bluewave-labs/Checkmate/pull/3455
  • @ad2ien made their first contribution in https://github.com/bluewave-labs/Checkmate/pull/3479
  • @SkyKingPX made their first contribution in https://github.com/bluewave-labs/Checkmate/pull/3529
  • @egeoztass made their first contribution in https://github.com/bluewave-labs/Checkmate/pull/3530
  • @ZeinebMegaadi made their first contribution in https://github.com/bluewave-labs/Checkmate/pull/3518
  • @Smolcup made their first contribution in https://github.com/bluewave-labs/Checkmate/pull/3541

Full Changelog: https://github.com/bluewave-labs/Checkmate/compare/v3.5.1...v3.6.0

v3.5.1 New feature
Notable features
  • WebSocket monitoring
  • GlobalPing for ping
  • Dark mode improvements
v3.4.0 New feature
Notable features
  • Infrastructure thresholds
  • Background cleanup
  • Settings redesign
v3.3 Breaking risk
Breaking changes
  • V2 architecture migration
  • New API routes and controllers
  • Redesigned data models
Notable features
  • V2 architecture
  • Complete TypeScript migration
  • Docker/Kubernetes improvements

Beta — feedback welcome: [email protected]