# DOM reference: notifications & activity (muse.ai) Inspected live via CDP on the opm browser (warp-opm netns, port 9440), 2026-10-04. Companion docs: `DOM-CHAT-PANEL.md`, `DOM-MESSAGES.md`, `DOM-PAGE-STRUCTURE.md`. ## TL;DR muse.ai has **no bell icon and no notification center/dropdown**. The notification surface is three separate things: 1. **Toast live region** — `section[aria-label="Notifications alt+T"]` (transient toasts, aria-live). 2. **Activity tab** — `button[aria-label="Activity"]` in the status-panel toolbar (activity feed; tabs: Activity / Approvals / Upcoming / Identity). 3. **Chat nav unread** — `a[data-testid="hatch-nav-chat"]` whose `aria-label` becomes `"Chat, N notification(s)"` when chats are unread. There are no badge/dot/pill unread elements in the DOM, and no element with `notif` in its `data-testid`. --- ## 1. Toast live region The only element carrying the word "notification" in an aria-label. ```js document.querySelector('section[aria-label="Notifications alt+T"]') ``` | Property | Value | |---|---| | Tag | `
` | | `aria-label` | `Notifications alt+T` (stable — safe to match on) | | `tabindex` | `-1` | | `aria-live` | `polite` | | `aria-relevant` | `additions text` | | `aria-atomic` | `false` | | `data-testid` | none | | Parent chain | direct child of `` (no intermediate wrappers) | | Content when idle | empty — `childCount: 0`, `innerHTML === ""` | Semantics: an aria-live toast container. Toasts are injected as children and announced politely. `Alt+T` presumably moves focus to it (unverified — shortcut named in the label). **Visibility condition:** always in the DOM (even when empty). Presence of children = a toast is/was showing. **Automation note:** to detect a toast, poll `document.querySelector('section[aria-label="Notifications alt+T"]').childElementCount > 0` or read `innerText`. --- ## 2. Activity tab button ```js document.querySelector('button[aria-label="Activity"]') ``` | Property | Value | |---|---| | Tag | `