You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Introduce a notification-channel seam in the alert engine and add an optional SMTP email adapter, configured entirely via env — absent env = disabled = zero behavior change.
Why
Alert delivery is currently webhook-only, hardwired in alert.rs (reqwest POST). Email is the standard second channel (GlitchTip ships it out of the box) and the fleet already runs Stalwart SMTP.
Owner requirement: email must be opt-in via env so default deployments stay zero-config.
Design (seams)
New seam in the alert engine: trait NotificationChannel { async fn deliver(&self, signal: &AlertSignal) -> Result<()> }.
Existing webhook logic becomes the first adapter; SMTP (via lettre, rustls TLS) the second. Two adapters = the seam is real, not hypothetical.
Activity