-
released this
2026-07-18 22:16:14 +00:00 | 140 commits to main since this releaseHardens the notification path end-to-end and adds new channels/UX. 12 issues across three phases. No breaking changes; several features are opt-in.
Delivery reliability
- Delivery outbox (#50) — NWS-warning delivery is now at-least-once: a
notification_deliveriestable + a retry job with bounded exponential backoff, and notifiers that raise classifiedTransient/Permanenterrors so real transient failures are actually retried (never re-sending a delivered alert). The milestone's keystone. - Pipeline lifecycle hardening (#53) — clear-path row locks (no double all-clears), tracked/drained background tasks, and a single shared SSE
LISTENbroker instead of one Postgres connection per client. - NWS CAP fallback (#78) — fall back to the CAP ATOM feed when the primary alerts API fails.
- Warning acknowledgement + escalation (#81, opt-in) — re-notify active, unacknowledged warnings on an interval until acknowledged (bounded), reusing the outbox.
Channels & UX
- Email / SMTP channel (#80).
- Temporary location snooze / mute (#82).
- End-to-end pipeline drill (#86) — admin endpoint that injects a synthetic alert through the real pipeline.
Formatting & links
- Shared formatter migration (#14, #15) — the six richer channels now use per-channel budgets + one compact "Details" link.
- Segment-aware SMS budgeting (F-32) — non-GSM-7 characters no longer cause silent extra segments.
- Redirect-token short links (#13, opt-in) — open-redirect-safe
{base}/r/{token}viaSHORT_LINK_REDIRECT_MODE. - Per-type channel-config validation (#55) — malformed config is rejected at create/update (422) instead of crashing a send.
- Non-blocking Twilio + TimezoneFinder singleton (#56).
Testing
Full suite green on the dev server: 635 passed (incl. a Postgres integration tier). Migrations
0019–0023apply cleanly to head on real Postgres. The outbox retry acceptance is covered end-to-end (transient failure → later successful delivery; permanent → dead; no duplicates).New config (all optional, safe defaults)
SMTP_*/EMAIL_ENABLED,NWS_CAP_FALLBACK_ENABLED,DELIVERY_*,SSE_CLIENT_QUEUE_MAXSIZE,ESCALATION_*(off by default),SHORT_LINK_REDIRECT_MODE,SHORT_LINK_EXTERNAL_ALLOWLIST. See.env.example.Full changelog:
CHANGELOG.md. PRs #99–#103.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Delivery outbox (#50) — NWS-warning delivery is now at-least-once: a