github 0xfurai/peekaping 0.1.0

2 hours ago

Added

Changed

  • chore: the Helm chart's bundled PostgreSQL and Redis (off by default) move to the Bitnami subcharts postgresql 18.12.16 and redis 28.3.10, with the latest PostgreSQL 18.6.0 and Redis 8.10.3 images
  • chore: 0.1.0 takes the place of 0.0.49. It is the last release that also publishes the single-mode image under its old name, peekaping-bundle-sqlite, as 0.0.48 promised for 0.0.49
    • Upgrade note: switch peekaping-bundle-sqlite to peekaping in your compose file or docker run line. The old name gets no tags after 0.1.0. See Upgrading to single mode
  • fix: a failing monitor is checked again after its retry interval while it has retries left, and after its interval once they are used up. Before, the retry interval setting did nothing and every check waited the full interval. Max retries 0 or a retry interval of 0 keeps the interval (#582)
  • fix: a new monitor's first failed check counts toward max retries like any other, so it is Pending while retries are left and Down after them. Before, the first failed check was Down at once and notified, even with retries left (#580)
  • fix: a monitor's first heartbeat notifies only when it is Up or Down. A new monitor that starts Pending, or in a maintenance window, no longer sends a notification (#579)
  • fix: the check timeout can be at most 0.8 × the check interval. The API answers 400 to a longer timeout on create, update and PATCH, and the monitor form shows an error under the timeout field. Before, the rule compared the wrong way round and PATCH didn't check it at all, so a timeout above the interval made the scheduler skip every second check (#584, #590)
    • Upgrade note: a monitor already stored with a longer timeout keeps being checked. Saving it again asks for a shorter timeout, or a longer interval.
  • fix: notification channel URLs that hold credentials come back from the API masked, such as https://user:********@host/x?token=********. This covers the webhook URL, the ntfy, Gotify, WhatsApp and Telegram server URL, the Matrix homeserver URL, the PagerDuty integration URL and the Signal URL. Saving or testing a channel with the URL as shown keeps the stored one. To change a masked URL, type its credentials again: the form asks for them (#594, #595)

Fixed

  • fix: creating a push monitor through the API without a push token works. The server generates a token and returns it in push_token and in config.pushToken, where before it answered 400 (PushConfig.PushToken ... required). A token sent only as push_token is copied into config.pushToken, and a token you send is kept (#273, #574) (thanks @ausebiblibre)
  • fix: a public status page shows a monitor that hasn't been checked yet, or is retrying, as Pending, not Down, and doesn't count it as an outage (#585)
  • fix: the monitor page keeps getting live heartbeats. A room join sent right after the socket connected could be lost, and the page sent a leave and a join each time its data refetched, which could leave it out of the room (#592, #593)
  • fix: TCP monitors work with a bracketed IPv6 host such as [::1] again (#118, #461) (thanks @miniwestxyz, @SynapShift)
  • fix: PagerTree alerts for a monitor carry one stable id, so an Up resolves the alert its Down opened. The payload uses the lowercase keys PagerTree reads (#578)
  • fix: each monitor's Grafana OnCall alerts go to an alert group of their own (alert_uid Peekaping/<monitor id>). Before, all monitors shared one group, and any monitor's Up resolved it while others were still Down (#576)
  • fix: the ntfy topic is no longer logged, and email notifications are no longer printed to stdout with their recipient, subject and body (#577)
  • fix: after a logout, the web app stops sending the previous user's access token. Before, it kept sending it until the page was reloaded (#583)
  • fix: a wrong code when turning on two-factor authentication gets a 400 and an error, and two-factor stays off. Before, the API answered 200 and the web said two-factor was on when it wasn't (#586)

Raw Commit List

  • docs: complete the changelog for 0.1.0 (#619) (Thanks @0xfurai) 22267aa
  • chore: remove Turborepo, run the dev processes with concurrently (#598) (Thanks @0xfurai) 8ebb5a4
  • PP-254 [2/2] fix(web): ask again for the credentials of an edited channel URL (#595) (Thanks @0xfurai) 6eaa5fb
  • PP-254 [1/2] fix(server): mask credentials in notification channel URLs (#594) (Thanks @0xfurai) 9d85c1e
  • PP-365 fix(server): check the interval and timeout rules on a monitor PATCH (#590) (Thanks @0xfurai) 9ebf8c6
  • PP-252 ci: run the PostgreSQL repository tests in Test and Lint (#589) (Thanks @0xfurai) 48d3a2c
  • chore(server): gofmt the scheduler test helpers (PP-98) (#597) (Thanks @0xfurai) 07482b3
  • PP-366 [2/2] fix(web): keep a page in its socket room when its effect runs again (#593) (Thanks @0xfurai) 88a40a2
  • PP-366 [1/2] fix(server): register the socket room handlers before CONNECT (#592) (Thanks @0xfurai) 528c4fc
  • PP-377 fix(server): preserve bracketed IPv6 TCP hosts (#461) (Thanks @SynapShift) 60562af
  • feat(telemetry): add bun run dashboard, the usage ping report as an HTML page (#591) (Thanks @0xfurai) 12eb924
  • PP-98 ci: run go vet, golangci-lint and a race-detector job (#588) (Thanks @0xfurai) 9f3c50c
  • PP-279 test(server): wait for the state time-bound tests check, and join again until a join takes effect (#587) (Thanks @0xfurai) 0e97482
  • PP-108 fix: reject a monitor timeout above 0.8 x its interval (#584) (Thanks @0xfurai) dcda754
  • PP-135 [2/2] fix(server): use max retries on a monitor's first check (#580) (Thanks @0xfurai) 40e3792
  • fix(server): notify on a monitor's first heartbeat only when it is Up or Down (PP-134) (#579) (Thanks @0xfurai) c1d3fd3
  • PP-65 fix(server): check a failing monitor at its retry interval while it has retries left (#582) (Thanks @0xfurai) 5950752
  • PP-212 fix(web): drop the Authorization header from the API client on logout (#583) (Thanks @0xfurai) 2b5d137
  • PP-361 fix: show a Pending monitor as Pending, not Down, on a status page (#585) (Thanks @0xfurai) b8d1df7
  • PP-137 fix(server): give a monitor's PagerTree alerts one stable Id (#578) (Thanks @0xfurai) 50b9acb
  • PP-251 fix(server): keep the ntfy topic and email bodies out of stdout and logs (#577) (Thanks @0xfurai) cf38617
  • fix(server): give each monitor's Grafana OnCall alerts their own alert group (PP-284) (#576) (Thanks @0xfurai) 3e4fef3
  • PP-202 fix: answer 400 to a wrong 2FA setup code (#586) (Thanks @0xfurai) 7a741f2
  • ci: name go.sum as the setup-go cache dependency path (PP-313) (#575) (Thanks @0xfurai) ce59fa4
  • PP-362 fix(server): generate a push token when a push monitor is created without one (#574) (Thanks @0xfurai) 50ca091
  • chore(chart): update the bundled PostgreSQL and Redis (#572) (Thanks @0xfurai) a09adea
  • chore(server): regenerate the OpenAPI docs for 0.0.48 (#571) (Thanks @0xfurai) 781de5c

Release Statistics

  • 27 commits since 0.0.48
  • 2 contributors

Contributors
Thanks to: @0xfurai @SynapShift

Docker Images

GitHub Container Registry (GHCR)

  • UI: ghcr.io/0xfurai/peekaping-web:0.1.0 / ghcr.io/0xfurai/peekaping-web:latest
  • API: ghcr.io/0xfurai/peekaping-api:0.1.0 / ghcr.io/0xfurai/peekaping-api:latest
  • Probe: ghcr.io/0xfurai/peekaping-probe:0.1.0 / ghcr.io/0xfurai/peekaping-probe:latest
  • Probe (slim): ghcr.io/0xfurai/peekaping-probe:0.1.0-slim / ghcr.io/0xfurai/peekaping-probe:slim
  • Migrate: ghcr.io/0xfurai/peekaping-migrate:0.1.0 / ghcr.io/0xfurai/peekaping-migrate:latest

Single mode (GHCR)

  • SQLite, or PostgreSQL in its own container: ghcr.io/0xfurai/peekaping:0.1.0 / ghcr.io/0xfurai/peekaping:latest
  • The old name, ghcr.io/0xfurai/peekaping-bundle-sqlite, gets the same tags through 0.1.0 and none after it. Switch to ghcr.io/0xfurai/peekaping.

Docker Hub

  • UI: 0xfurai/peekaping-web:0.1.0 / 0xfurai/peekaping-web:latest
  • API: 0xfurai/peekaping-api:0.1.0 / 0xfurai/peekaping-api:latest
  • Probe: 0xfurai/peekaping-probe:0.1.0 / 0xfurai/peekaping-probe:latest
  • Probe (slim): 0xfurai/peekaping-probe:0.1.0-slim / 0xfurai/peekaping-probe:slim
  • Migrate: 0xfurai/peekaping-migrate:0.1.0 / 0xfurai/peekaping-migrate:latest

Single mode (Docker Hub)

  • SQLite, or PostgreSQL in its own container: 0xfurai/peekaping:0.1.0 / 0xfurai/peekaping:latest
  • The old name, 0xfurai/peekaping-bundle-sqlite, gets the same tags through 0.1.0 and none after it. Switch to 0xfurai/peekaping.

Don't miss a new peekaping release

NewReleases is sending notifications on new releases.