Background
Follow-up to #943. Today, silencing an actively-firing alert requires opening Settings → Manage Mute Rules → Add and filling in metric + server + expiration. That's a lot of friction during an active incident, and the mute rules feature isn't very discoverable from the alert surfaces themselves.
The underlying mute-rule plumbing already exists (added in #938) and correctly gates both email and webhook delivery in Lite/Services/EmailAlertService.cs (lines 64 and 116). This is purely a UX/discoverability gap.
Proposed enhancement
Add one-click ""snooze"" affordances that create a temporary mute rule scoped to ServerName + MetricName with a short expiration. Candidate surfaces:
- Alert tray balloon / popup — right-click or button: ""Snooze for 15m / 1h / 4h""
- Alerts History tab — context menu on an active alert row: ""Snooze this alert""
- Email body — a line like ""To silence this alert for 1 hour, open Lite → Settings → Manage Mute Rules"" (no clickable action, but improves discoverability)
- Teams/Slack webhook payload — same discoverability text in the card footer
Default snooze duration should match the rolling-window length of the underlying alert when possible (e.g. 1 hour for ""deadlocks in last hour"") so the alert naturally goes quiet once the resolved events roll out of the window. Expiration of the rule is handled by the existing MuteRuleService.PurgeExpiredRulesAsync path.
Out of scope
- Acknowledging an alert without muting it (different feature)
- Per-recipient snooze (rules are global to the Lite instance today, and that's fine)
- Dashboard parity — Dashboard has the same mute-rule plumbing; same enhancement applies but track separately if needed
Background
Follow-up to #943. Today, silencing an actively-firing alert requires opening Settings → Manage Mute Rules → Add and filling in metric + server + expiration. That's a lot of friction during an active incident, and the mute rules feature isn't very discoverable from the alert surfaces themselves.
The underlying mute-rule plumbing already exists (added in #938) and correctly gates both email and webhook delivery in
Lite/Services/EmailAlertService.cs(lines 64 and 116). This is purely a UX/discoverability gap.Proposed enhancement
Add one-click ""snooze"" affordances that create a temporary mute rule scoped to
ServerName + MetricNamewith a short expiration. Candidate surfaces:Default snooze duration should match the rolling-window length of the underlying alert when possible (e.g. 1 hour for ""deadlocks in last hour"") so the alert naturally goes quiet once the resolved events roll out of the window. Expiration of the rule is handled by the existing
MuteRuleService.PurgeExpiredRulesAsyncpath.Out of scope