Skip to content

feat(inbox): add notification preferences settings#1904

Open
forrestchang wants to merge 1 commit intomainfrom
agent/lambda/620940ab
Open

feat(inbox): add notification preferences settings#1904
forrestchang wants to merge 1 commit intomainfrom
agent/lambda/620940ab

Conversation

@forrestchang
Copy link
Copy Markdown
Collaborator

Summary

  • Adds per-type notification preference controls to Inbox, allowing users to toggle which notification types they receive
  • Core motivation: agent-generated status_changed noise flooding user inboxes (now defaults to OFF)
  • Settings accessible via gear icon in Inbox page header

Changes

Backend:

  • New notification_preference table (migration 064) with per-user, per-workspace, per-type toggle
  • GET /api/inbox/preferences and PUT /api/inbox/preferences endpoints
  • notification_listeners.go checks preferences before creating inbox items (preloaded batch query for efficiency)
  • status_changed defaults to OFF; all other types default to ON

Frontend:

  • NotificationPreference type + API client methods
  • TanStack Query options + optimistic mutation hook
  • InboxNotificationSettings dialog with 9 grouped categories (Status changes, Comments, Assignments, Mentions, Priority, Due dates, Reactions, Agent events, Quick create)
  • Each category: icon, label, description, Switch toggle

Test plan

  • TypeScript typecheck passes (verified locally)
  • Frontend tests pass (232/232)
  • Go build + vet clean
  • Toggle notification settings in Inbox → preferences persist across page reload
  • Disable "Status changes" → verify no status_changed notifications created for that user
  • Re-enable → notifications resume
  • New users get sensible defaults (status_changed OFF, everything else ON)

Closes MUL-1603

Add per-type notification preference controls to the Inbox, allowing
users to toggle which notification types they receive. This addresses
the core pain point of agent-generated status change noise flooding
user inboxes.

Backend:
- New `notification_preference` table (migration 064) with per-user,
  per-workspace, per-type enabled/disabled toggle
- GET/PUT /api/inbox/preferences endpoints for CRUD
- notification_listeners.go checks user preferences before creating
  inbox items, using preloaded per-type batch queries for efficiency
- status_changed notifications default to OFF; all others default ON

Frontend:
- NotificationPreference type and API client methods
- TanStack Query options + optimistic mutation hook
- Settings dialog accessible via gear icon in Inbox header
- Grouped by category: Status, Comments, Assignments, Mentions,
  Priority, Due dates, Reactions, Agent events, Quick create
- Each category shows icon, label, description, and Switch toggle
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant