feat: toast dedupe alignment, per-type cooldown, and reconnect suppression

- Align local mutation dedupe keys with live event keys so the same
  action doesn't produce two toasts (local success + live event)
- Add per-type cooldown gate (max 3 toasts per category in 10s) to
  suppress rapid-fire events from chatty sources
- Suppress all live-event toasts for 2s after WebSocket reconnect to
  avoid burst floods from cached server events
- TTL tuning by severity already applied externally (info=4s,
  success=3.5s, warn=8s, error=10s)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
ForgottenandClaude Opus 4.6 committed 2026-02-20 13:56:34 -06:00
1 parent 5b06118ec8
commit 1b6db764b8
3 files changed
+53 -8

No files matched your search

+1 -1
View File
@@ -126,7 +126,7 @@ export function NewIssueDialog() {
reset();
closeNewIssue();
pushToast({
dedupeKey: `issue-created-${issue.id}`,
dedupeKey: `activity:issue.created:${issue.id}`,
title: `${issue.identifier ?? "Issue"} created`,
body: issue.title,
tone: "success",