Skip to content

Releases: CalmRay-Solutions/uptime-guard

v1.0.0-beta.3 (beta)

v1.0.0-beta.3 (beta) Pre-release
Pre-release

Choose a tag to compare

@xbuddhi xbuddhi released this 25 Sep 13:01

Third beta. Monitors now speak the language of what they track, and a renewed certificate clears fast.

Expiry monitors say Valid / Expiring / Expired, not Up / Down

A certificate that expires in 9 days is not an outage, so it no longer shows as a red "Down".

  • Dashboard labels read Valid, Expiring, Expired or Check failed. A cert or domain inside its warning window is a yellow warning, on the dashboard and on the public status page
  • Telegram and Web Push alerts say what is happening: certificate expires in 9d (04 Oct 2026), certificate EXPIRED 2d ago, and on renewal certificate valid until 24 Dec 2026 (90d)

Renewals are picked up within an hour

TLS and domain monitors often run once a day, so a renewed certificate could stay flagged for up to 24 hours. While one of these monitors is flagged, it is now re-checked at least hourly, whatever its interval.

Heartbeat wording

Cron / heartbeat monitors read On time, Missed or No pings yet. Alerts say missed its check-in, still no check-in · 3h and checked in again · was silent 3h.

Also in this build

  • Browser toasts and desktop notifications use the same type-aware wording
  • The Overview banner no longer counts paused monitors as up, and no longer claims a Telegram alert was sent when Telegram is not configured
  • Service worker cache bumped, so installed clients pick up this release without a hard reload

Beta notes

Interfaces and the data model may still change between beta releases. Back up your D1 database before upgrading. If you lose your authenticator, delete the totp_secret row from the settings table to sign in with the password alone.

v1.0.0-beta.2 (beta)

v1.0.0-beta.2 (beta) Pre-release
Pre-release

Choose a tag to compare

@xbuddhi xbuddhi released this 12 Aug 17:54

Second beta. Adds a seventh monitor type for flows a single request cannot express.

Custom script monitors

Chain up to 10 requests, pass values between them, and assert on each. Log in, capture the token, then call the authenticated endpoint:

POST https://api.example.com/auth
header content-type: application/json
body {"user":"probe","pass":"..."}
expect status 200
capture token = json data.token

GET https://api.example.com/orders
header authorization: Bearer {{token}}
expect status 200
expect json orders.count > 0
expect time < 800ms

Cloudflare Workers disable eval and new Function, so this is not JavaScript - it is a declarative format the Worker parses into steps. Nothing arbitrary executes.

  • Assertions: expect status (single or range), expect time, expect body contains | not contains | matches, and expect json <path> with = != > < >= <= contains exists
  • Capture with capture <name> = json <path> | header <name> | status | body, then reuse as {{name}} in any later URL, header or body
  • A step with no expect status still has to return 2xx
  • The first failed assertion marks the monitor down and names the step: step 2 (GET api.example.com/orders): orders.count = 0, expected > 0
  • The whole run shares one timeout budget (30s default, 60s cap), so a script can never outlive its monitor. Capped at 10 steps and 8000 characters
  • Scripts are validated when you save, so a typo is an error on the form rather than a monitor that quietly fails later

Script monitors use the same cron, retry-burst flap prevention, incident tracking, SLA windows and Telegram / Web Push alerting as every other type.

Also in this build

  • Projects can be renamed and deleted from the dashboard; deleting one that still has monitors asks you to type its name
  • A fresh instance seeds a default "My Project" so the dashboard is never empty on first run
  • Settings tabs wrap instead of overflowing the screen on mobile
  • Service worker cache bumped, so installed clients pick up this release without a hard reload

Beta notes

Interfaces and the data model may still change between beta releases. Back up your D1 database before upgrading. If you lose your authenticator, delete the totp_secret row from the settings table to sign in with the password alone.

v1.0.0-beta.1 (beta)

v1.0.0-beta.1 (beta) Pre-release
Pre-release

Choose a tag to compare

@xbuddhi xbuddhi released this 04 Aug 04:09

First public beta of Uptime Guard. Self-hosted uptime, certificate and cron monitoring that runs entirely on Cloudflare's free tier - one Worker, D1, no server.

In this build

  • Monitors: HTTP, TCP, DNS, heartbeat (push-ping), TLS certificate expiry, domain expiry
  • Retry-burst flap prevention, escalating Telegram re-alerts, configurable retention
  • Incident history, real SLA windows (24h/7d/30d/90d) and MTTR from daily rollups
  • Public status pages per project, edge-cached
  • First-run setup wizard now requires both an owner password and an authenticator app
  • PWA dashboard with Web Push notifications
  • One-click Deploy to Cloudflare with automatic D1 provisioning; the deploy log ends with your dashboard URL in a banner

Beta notes
Interfaces and the data model may still change between beta releases. Back up your D1 database before upgrading. If you lose your authenticator, delete the totp_secret row from the settings table to sign in with the password alone.