[Feature] Notification settings and preferences surface #247

Closed
opened 2026-07-13 01:57:22 +02:00 by zemion · 1 comment
Owner

Add a settings surface for notification behavior now that the top-bar notification center is available.

Acceptance Criteria

  • Expose notification preferences from the settings UI without hard-coding module internals into the core shell.
  • Let users control at least in-app unread behavior and future channel preferences per tenant/user where the data model supports it.
  • Handle the notifications module being disabled without broken links or empty settings panels.
  • Document the ownership boundary between core settings UI extension points and the notifications module.

Notes

  • Current top bar falls back to /settings?section=notifications when the notifications route is unavailable; this should become a real, deliberate settings path or be removed.
  • Prefer a module-owned settings panel registered through core extension metadata over notification-specific imports in core.
Add a settings surface for notification behavior now that the top-bar notification center is available. ## Acceptance Criteria - [ ] Expose notification preferences from the settings UI without hard-coding module internals into the core shell. - [ ] Let users control at least in-app unread behavior and future channel preferences per tenant/user where the data model supports it. - [ ] Handle the notifications module being disabled without broken links or empty settings panels. - [ ] Document the ownership boundary between core settings UI extension points and the notifications module. ## Notes - Current top bar falls back to /settings?section=notifications when the notifications route is unavailable; this should become a real, deliberate settings path or be removed. - Prefer a module-owned settings panel registered through core extension metadata over notification-specific imports in core. <!-- codex-source:notification-followups-2026-07-13 -->
Author
Owner

Codex State: done

Summary

  • Implemented module-provided settings sections in core and moved notifications from a hard-coded placeholder to a notifications-owned preferences panel.
  • Added persisted per-user notification preferences with badge, email, digest, and muted source-module fields plus API endpoints.
  • Top bar now honors the unread badge preference and only renders the bell when the notifications route is available.

Changed Files

  • webui/src/types.ts
  • webui/src/features/settings/SettingsPage.tsx
  • webui/src/layout/Titlebar.tsx
  • ../govoplan-notifications/src/govoplan_notifications/backend/db/models.py
  • ../govoplan-notifications/src/govoplan_notifications/backend/router.py
  • ../govoplan-notifications/webui/src/features/notifications/NotificationSettingsPanel.tsx

Verification

  • python -m unittest govoplan-notifications/tests/test_notifications.py: OK
  • npm run build in govoplan-core/webui: OK

Next / Blocked

  • Email delivery itself remains tracked in govoplan-notifications#2.
## Codex State: done ### Summary - Implemented module-provided settings sections in core and moved notifications from a hard-coded placeholder to a notifications-owned preferences panel. - Added persisted per-user notification preferences with badge, email, digest, and muted source-module fields plus API endpoints. - Top bar now honors the unread badge preference and only renders the bell when the notifications route is available. ### Changed Files - `webui/src/types.ts` - `webui/src/features/settings/SettingsPage.tsx` - `webui/src/layout/Titlebar.tsx` - `../govoplan-notifications/src/govoplan_notifications/backend/db/models.py` - `../govoplan-notifications/src/govoplan_notifications/backend/router.py` - `../govoplan-notifications/webui/src/features/notifications/NotificationSettingsPanel.tsx` ### Verification - `python -m unittest govoplan-notifications/tests/test_notifications.py: OK` - `npm run build in govoplan-core/webui: OK` ### Next / Blocked - Email delivery itself remains tracked in govoplan-notifications#2.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: add-ideas/govoplan-core#247
No description provided.