Skip to content

Add a notification bell, panel and desktop notifications to the V2 UI #1554

Open

Description

@paullizer

Summary

Part of #1543 (Track N1). V2 has no notification bell. Add one to the V2 sidebar with an unread count and a panel, and make the existing Desktop notifications preference work in V2.

User Value

In V2, users miss workflow alerts, Microsoft 365 approval requests, "AI responded" notices, document processing updates and share requests unless they switch to the classic UI. Phase 6b also relies on the bell for results that can't be delivered to a chat. The Desktop notifications toggle in V2 preferences does nothing today.

Proposed Behavior

  • The bell goes in the sidebar, the only V2 navigation surface (components/layout/Sidebar.tsx), with a dot on the icon when the rail is collapsed.
  • An unread count from /api/notifications/count, refreshed on focus and visibility and with backoff while visible.
  • A panel over /api/notifications with read, dismiss, mark all read and deep links. It reuses the link formats conversationUrl.ts:46 already handles, plus the run deep link from Phase 6b.
  • Desktop notifications (PreferencesTab.tsx:299-306):
    • raise an OS notification when a reply finishes while the tab is hidden or unfocused, or when the tracker sees a delivered result
    • honor the admin setting and the user preference as classic does (static/js/chat/chat-desktop-notifications.js)
    • ask for permission on a user gesture, and dedupe by message ID

Acceptance Criteria

  • V2 shows the unread count and the panel, and links open the right chat or run.
  • Read, dismiss and mark all read work and stay in sync with the classic UI.
  • A desktop notification fires once per reply, and only when the admin setting and the user preference allow it.
  • Works with the rail expanded, collapsed and on mobile, with Playwright coverage.
  • Guide update, release notes and config.py version.

Notes

Metadata

Metadata

Labels

P1Priority 1: urgent, address before P2 workenhancementNew feature or request

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions