Skip to content

feat: add global in-app notification system - #280

Open
JamesDAdams wants to merge 1 commit into
co-l:developfrom
JamesDAdams:feat/add-notif
Open

feat: add global in-app notification system#280
JamesDAdams wants to merge 1 commit into
co-l:developfrom
JamesDAdams:feat/add-notif

Conversation

@JamesDAdams

Copy link
Copy Markdown
Contributor

Summary

Adds a global in-app notification system to OpenFox:

  • Header bell + unread badge — a notification button sits just left of the split-view button, with a green unread-count badge (capped at 99+) styled like the tasks badge.
  • Notification center — a modal showing the full history (newest → oldest) with source, title, body, and date. Supports per-item delete (confirmed) and a "Clear all" action (confirmed).
  • Toast notifications — a stacked toast appears top-right on receipt and auto-dismisses after 5 seconds. Multiple notifications stack.
  • Notification settings — two master toggles in Settings → Notifications: "Popup notifications" (shows/hides the toast) and "Sound notifications" (plays a sound on receipt). Both persist.
  • Plugin API — plugins can emit notifications via registry.notify({ title, body }), surfaced through the existing ProviderPluginRegistry.
  • Persistence — notifications are stored in a new SQLite notifications table, so history survives page reloads and server restarts.
  • Real-time sync — new/deleted/read/cleared notification events broadcast over WebSocket with fetch/reload parity (streamed and fetched data render identically).

AI-Enhanced Development

Tell what models helped shape this PR:

  • AI Models: DeepSeek V4 Flash

No AI used? Enter 'none'

Cache Impact

Does this PR affect anything cached — system prompts, tool definitions, skills, or other context?

  • No

Add a persisted notification center with an unread badge, header bell,
5-second top-right toasts, and configurable popup/sound toggles. Plugins
can emit notifications via registry.notify(). Notifications persist in a
new SQLite table and broadcast over WebSocket with fetch/reload parity.

- Header bell + unread badge (left of split-view button)
- Notification center (list, per-item delete, clear-all)
- Toast stacked top-right, auto-dismiss after 5s
- Notification settings (popup + sound master toggles)
- Plugin notify API (ProviderPluginRegistry.notify)
- SQLite notifications table + REST routes
- WebSocket events: notifications.new/.deleted/.read/.cleared
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