From a1d144d290266c985781cfe0f5c9753b607ca4bb Mon Sep 17 00:00:00 2001 From: junes <673638712@qq.com> Date: Sun, 31 May 2026 19:35:43 +0800 Subject: [PATCH] fix(web): handle legacy session summaries (#751) --- web/src/lib/sessionAttention.test.ts | 12 ++++++++++++ web/src/lib/sessionAttention.ts | 10 +++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/web/src/lib/sessionAttention.test.ts b/web/src/lib/sessionAttention.test.ts index 919d6c63..bc6c7d6e 100644 --- a/web/src/lib/sessionAttention.test.ts +++ b/web/src/lib/sessionAttention.test.ts @@ -42,6 +42,18 @@ describe('classifySessionAttention', () => { expect(attention).toEqual({ kind: 'permission' }) }) + it('handles summaries from older APIs without pendingRequestKinds', () => { + const legacySummary = makeSummary({ id: 'legacy', updatedAt: 5000 }) as unknown as SessionSummary + delete (legacySummary as Partial).pendingRequestKinds + + const attention = classifySessionAttention( + legacySummary, + { selected: false, lastSeenAt: 1000 } + ) + + expect(attention).toEqual({ kind: 'unread' }) + }) + it('shows unread activity when the session has updated since last seen', () => { const attention = classifySessionAttention( makeSummary({ id: 'a', updatedAt: 5000 }), diff --git a/web/src/lib/sessionAttention.ts b/web/src/lib/sessionAttention.ts index f28ca932..1467d1f8 100644 --- a/web/src/lib/sessionAttention.ts +++ b/web/src/lib/sessionAttention.ts @@ -14,15 +14,19 @@ export function classifySessionAttention( return null } - if (summary.pendingRequestKinds.includes('permission')) { + const pendingRequestKinds = Array.isArray(summary.pendingRequestKinds) + ? summary.pendingRequestKinds + : [] + + if (pendingRequestKinds.includes('permission')) { return { kind: 'permission' } } - if (summary.pendingRequestKinds.includes('input')) { + if (pendingRequestKinds.includes('input')) { return { kind: 'input' } } - if (summary.active && summary.backgroundTaskCount > 0) { + if (summary.active && (summary.backgroundTaskCount ?? 0) > 0) { return { kind: 'background' } }