Skip to content

Bring Dashboard alert toasts to parity with Lite#995

Merged
erikdarlingdata merged 1 commit into
devfrom
feature/994-dashboard-snoozeballoon-parity
May 26, 2026
Merged

Bring Dashboard alert toasts to parity with Lite#995
erikdarlingdata merged 1 commit into
devfrom
feature/994-dashboard-snoozeballoon-parity

Conversation

@erikdarlingdata
Copy link
Copy Markdown
Owner

Closes #994

Summary

  • Replaces Dashboard's native ShowBalloonTip toasts with the dark-themed, snoozable custom popup ported from Lite.
  • Adds Snooze 15m / 1h / 4h + Dismiss to the 7 actionable alerts. Snooze creates a temporary MuteRule via the existing MuteRuleService — the rule shows up in Settings → Manage Mute Rules alongside any user-created rules.
  • Carries the close-callback fix from Fix Lite SnoozeBalloon dismiss/snooze buttons being no-ops #993 so the new popup actually dies on Dismiss (no infinite-click bug like Lite had).
  • Removes 7 dead-after-port typed wrapper methods on NotificationService; per-metric prefs.NotifyOnXxx guards already live at the alert sites.
  • Connection-state notifications (Server Online / Offline / Restored / Connection Restored) deliberately stay as native ShowBalloonTip — those route to Windows Action Center, which is the right home for transient connectivity events.

Test plan

  • Build clean
  • Verified live with HammerDB on sql2025: snoozable popup fires for Blocking / Deadlock / Poison Wait
  • Verify Snooze 15m creates a rule visible in ManageMuteRulesWindow, suppresses further alerts for that server+metric for 15 min, leaves other metrics on the same server firing
  • Verify Server Restored / Server Offline still use the native Windows toast (Action Center entry)
  • Verify theme switching: snoozable popup picks up Light / Dark / CoolBreeze brushes (XAML uses DynamicResource)

🤖 Generated with Claude Code

Replace Dashboard's native ShowBalloonTip popups with the snoozable
custom WPF popup from Lite. Adds Snooze 15m / 1h / 4h and Dismiss
buttons that create temporary mute rules via the existing
MuteRuleService — no new persistence; the rule management UI in
Settings already shows them.

- Port SnoozeBalloon control (XAML + code-behind) to Dashboard/Controls,
  preserving the close-callback fix from #993 so user-initiated dismiss
  actually tears the popup down
- Add NotificationService.ShowSnoozableNotification, mirrored after
  Lite's SystemTrayService.ShowSnoozableNotification
- Switch the 7 actionable alert sites in MainWindow (Blocking, Deadlock,
  HighCpu, PoisonWait, LongRunningQuery, TempDbSpace, LongRunningJob) to
  the snoozable popup, passing each metric's existing AlertMuteContext
  name so popup-created snoozes match alert-site mute lookups
- Remove the 7 typed ShowXxxNotification wrappers — their per-metric
  prefs.NotifyOnXxx guards are already enforced at the alert sites
- Connection-state notifications (Server Online / Offline / Restored)
  stay as native ShowBalloonTip — Action Center is the right home for
  those

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@erikdarlingdata erikdarlingdata merged commit 784bb12 into dev May 26, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant