From 2d129bfede5e08e96a227d507fb68b4108e3daa2 Mon Sep 17 00:00:00 2001 From: Allen Huang Date: Thu, 2 Apr 2026 18:21:55 +0800 Subject: [PATCH] fix(ui): inbox badge should only count unread mine issues The sidebar inbox badge was counting all "mine" issues (issues created by or assigned to the user) instead of only unread ones. This caused the badge to show a count (e.g. 14) even when the Unread tab was empty. Co-Authored-By: Claude Opus 4.6 --- ui/src/lib/inbox.test.ts | 15 +++++++++++++++ ui/src/lib/inbox.ts | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/ui/src/lib/inbox.test.ts b/ui/src/lib/inbox.test.ts index 784e38cb..bbdf5cba 100644 --- a/ui/src/lib/inbox.test.ts +++ b/ui/src/lib/inbox.test.ts @@ -319,6 +319,21 @@ describe("inbox helpers", () => { }); }); + it("excludes read mine issues from the inbox badge count", () => { + const result = computeInboxBadgeData({ + approvals: [], + joinRequests: [], + dashboard, + heartbeatRuns: [], + mineIssues: [makeIssue("1", false), makeIssue("2", false), makeIssue("3", true)], + dismissed: new Set(), + }); + + expect(result.mineIssues).toBe(1); + // inbox = mineIssues(1) + agent-error alert(1) + budget alert(1) + expect(result.inbox).toBe(3); + }); + it("keeps read issues in the touched list but excludes them from unread counts", () => { const issues = [makeIssue("1", true), makeIssue("2", false)]; diff --git a/ui/src/lib/inbox.ts b/ui/src/lib/inbox.ts index 9f26e998..03698cfc 100644 --- a/ui/src/lib/inbox.ts +++ b/ui/src/lib/inbox.ts @@ -362,7 +362,7 @@ export function computeInboxBadgeData({ const visibleJoinRequests = joinRequests.filter( (jr) => !dismissed.has(`join:${jr.id}`), ).length; - const visibleMineIssues = mineIssues.length; + const visibleMineIssues = mineIssues.filter((issue) => issue.isUnreadForMe).length; const agentErrorCount = dashboard?.agents.error ?? 0; const monthBudgetCents = dashboard?.costs.monthBudgetCents ?? 0; const monthUtilizationPercent = dashboard?.costs.monthUtilizationPercent ?? 0;