2 KiB
| kind | slug | title | plan_slug | epic_slug | status | priority | tenant_id | owner | cursor_todo_id | updated_at |
|---|---|---|---|---|---|---|---|---|---|---|
| task | notification-producers-and-preferences | Connect notification producers, preferences, inbox, and badges | workspace-communications | unified-notifications | ready | P1 | global | unassigned | null | 2026-10-22 |
Task summary
Build the inbox UI and map chat and operational events into preference-aware notifications and badges.
Description
Add notification preferences by category and channel, then produce notifications for chat mentions/replies/direct messages, task assignments, human gates, and agent outcomes. Present one global inbox while retaining a chat-specific badge in the left rail. Existing gate inbox state remains authoritative and is projected into notifications.
Subtasks
- Add
notification_preferencesschema, defaults, and update procedures. - Add outbox consumers that map domain events to recipient notifications.
- Build
/[workspaceSlug]/inboxwith filters, grouping, deep links, and bulk read/archive. - Add global and Chat rail badges backed by durable unread counts.
Owner or assignee
unassigned
Status
ready
Estimation
L
Acceptance criteria
-
Recipient production, inbox previews, deep links and unread counts apply current workspace AND context AND channel permissions; membership/ACL revocation hides inaccessible content and stops delivery without leaking private-context titles.
-
Mention, reply, assignment, gate, and agent-result events create correct recipient notifications.
-
Preference changes affect future delivery without deleting inbox history.
-
Rail badges converge to server truth after reconnect and multi-device reads.
-
Existing convoy/gate workflows remain functional and are not duplicated as domain records.
-
pnpm lint && pnpm type-check && pnpm testpass.
Links to related Epic / Plan
- Epic:
./Epic-unified-notifications.md - Plan:
../Plan-workspace-communications.md