Notification Inbox

A live inbox consolidates system, chat, and automation events with read state, muting, toasts, and OS delivery.

Overview

Description

Notification Inbox collects attention-worthy events from Chat, Automations, and system processes into a persistent shell surface. It maintains unread state, supports mark-read and archive workflows, presents in-app toasts for new arrivals, announces updates accessibly, and can offer operating-system notifications when the runtime permits. The inbox remains reachable from the global shell while its settings determine which categories and sources may interrupt the user.

Delivery begins with typed event intents rather than arbitrary UI strings. The events package validates producer payloads, computes severity, lifetime, source identity, coalescing keys, titles, and summaries, then hands the intent to an injected sink. The web shell consumes persisted items and a server-sent event stream, reconciling the unread badge, list, toast stack, and announcements from one event flow.

Selling Points

  • Centralizes cross-module attention signals so important automation or system outcomes do not disappear inside their source feature.
  • Combines durable inbox history with immediate toast and optional OS delivery, serving both active and background work.
  • Lets users mute categories or individual sources, reducing notification fatigue without disabling the whole system.
  • Uses typed, validated event definitions so buyers receive consistent titles, severity, expiration, and grouping.
  • Coalesces repetitive events, keeping high-volume workflows informative rather than noisy.

User Story

A workspace owner leaves an automation running and continues editing a Dotabase. A warning toast appears when the run reaches a cost threshold, the inbox badge increments, and the full item remains available after the toast clears. They mute a noisy source while leaving system warnings and direct Chat events enabled.

Extension Surface

The user-facing inbox is configurable. apps/web/src/modules/shell/notifications/CustomizeInboxPanel.tsx exposes category and source mute controls, and apps/web/src/modules/shell/notifications/useNotificationPrefsApi.ts persists those choices. Although packages/events/src/define-event-type.ts is an in-repo producer seam, it is not an external plugin registration contract, so this UI capability is rated by its supported user configuration.

Capabilities & Limits

  • Lists persisted notifications with unread, read, archive, source, category, and severity state.
  • Streams new items into badges, accessible announcements, in-app toasts, and optional OS notifications.
  • Supports category and source muting plus coalescing of repeated events.
  • Limit: producers must register typed events with concrete renderers; the inbox is not a general arbitrary-message broadcast channel.

Implementation Map

  • apps/web/src/modules/shell/notifications/NotificationsListPanel.tsx
  • apps/web/src/modules/shell/notifications/CustomizeInboxPanel.tsx
  • apps/web/src/modules/shell/notifications/useNotificationSseBridge.ts
  • packages/events/src/emit.ts
  • packages/events/src/types.ts

Properties

Property
Value
product
dots-platform
extensibility
configurable
module
Notifications, App Shell
packages
apps-web, events, ui
status
shipped
surface
ui
summary
A live inbox consolidates system, chat, and automation events with read state, muting, toasts, and OS delivery.

Connections

Notification Inbox · Explore connections

  • complementstoChat Automations
  • requirestoApp Shell Navigation
  • implemented bytoapps/web/src/modules/shell/notifications/useNotificationSseBridge.ts
  • implemented bytopackages/events/src/types.ts
  • implemented bytopackages/events/src/emit.ts
  • implemented bytoapps/web/src/modules/shell/notifications/NotificationsListPanel.tsx
  • implemented bytoapps/web/src/modules/shell/notifications/CustomizeInboxPanel.tsx
  • complementsfromChat Automations

Connected Records8

Complements
Implemented by
apps/web/src/modules/shell/notifications/CustomizeInboxPanel.tsx
apps/web/src/modules/shell/notifications/NotificationsListPanel.tsx
apps/web/src/modules/shell/notifications/useNotificationSseBridge.ts
packages/events/src/emit.ts
packages/events/src/types.ts
Requires
8 connections.