Skip to content

v0.2.0

Latest

Choose a tag to compare

@cryguy cryguy released this 05 Jun 08:41
v0.2.0
ca4fa53

This release makes monitor groups a first-class part of the dashboard and alerts, adds two operator conveniences (webhook test-fire, monitor duplication), and fixes a reliability problem unique to self-hosted monitors: false alerts during the monitor's own internet outage.

What's new

  • No more alert storms during your own internet outage. A failed check can't tell "the target is down" from "my uplink is down", so a home-hosted monitor losing internet would mark every target down and alert-storm. Checks now classify failures as network- vs application-class; a network failure consults an uplink canary (parallel TCP handshakes to anycast references) and, if nothing answers, freezes the monitor for that tick (no result, no counter change, no incident, no alert) instead of marking it down. Fails open: an unproven canary can never silence a real outage.
  • Duplicate a monitor. A "Duplicate" action on the monitor detail page clones a monitor's config and webhook bindings into a new, paused monitor and opens its edit page. The config is decrypted then re-encrypted so the copy owns independent ciphertext under the current key; state, history, and incidents are not copied, and the clone starts disabled so it can't double-alert before you retarget it.
  • Webhook test-fire button. A per-webhook "Test" action POSTs a clearly-labeled sample payload to the receiver and reports success/failure inline. Delivery is synchronous and bypasses the alert queue, so a failed test never spawns retries or pollutes delivery stats.
  • Monitor group in webhook payloads. The monitor's group is threaded into every webhook format (a generic field, a Slack / Google Chat context line, a Discord field), plus a {{monitor.group}} placeholder for custom templates. Ungrouped monitors emit no group label.
  • Group column on the dashboard. A dedicated Group column (after Type) renders each monitor's group as a chip by default, not only when grouping by tag.

Upgrading

Drop-in: replace the binary (or git pull + rebuild) and restart. No config changes, and schema migrations run automatically and idempotently on boot.

Prebuilt binaries

Each binary below is fully self-contained: it bundles the Bun runtime, bun:sqlite, every dependency, and all static assets (UI scripts, fonts, OpenAPI spec). No Bun, Node, or node_modules needed on the target machine.

Download Platform
uptime-darwin-arm64 macOS · Apple Silicon
uptime-darwin-x64 macOS · Intel
uptime-linux-x64 Linux · glibc (any mainstream distro, any x64 CPU)
uptime-linux-x64-musl Linux · musl (Alpine / FROM scratch containers)
uptime-windows-x64.exe Windows · x64

macOS: these binaries are unsigned, so Gatekeeper quarantines them on first run. Clear it with xattr -d com.apple.quarantine ./uptime-darwin-arm64.