Verify + extend DOM-SETTINGS/SEARCH/NOTIFICATIONS (2026-10-04, 3 nodes)
Session: sidechat/dom-settings
This commit is contained in:
+63
-13
@@ -1,23 +1,30 @@
|
||||
# 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`,
|
||||
2026-10-04. Re-verified 2026-10-04 across all three fleet nodes
|
||||
(muse 9410, pip 9420, opm 9440).
|
||||
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:
|
||||
notification surface is four 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.
|
||||
becomes `"Chat, N notification(s)"` when chats are unread (observed live on
|
||||
pip: `"Chat, 1 notification"`, later cleared to `"Chat"`).
|
||||
4. **Unread dot badges** — transient blue-dot `SPAN`s (see §5). **Correction
|
||||
2026-10-04:** these DO exist; the earlier "no badge elements" claim was
|
||||
wrong — the first sweep ran on opm while it was clean, and the badges only
|
||||
render while there is unread activity.
|
||||
|
||||
There are no badge/dot/pill unread elements in the DOM, and no element with
|
||||
`notif` in its `data-testid`.
|
||||
There is no bell icon. The one `data-testid` containing `notif` is
|
||||
`hatch-dock-chat-notification-badge` (see §5).
|
||||
|
||||
---
|
||||
|
||||
@@ -191,20 +198,55 @@ Do not match the element itself by aria-label — the count suffix changes.
|
||||
|
||||
## 5. What does NOT exist
|
||||
|
||||
Verified absent (three DOM sweeps, 2026-10-04):
|
||||
Verified absent (sweeps on all three nodes, 2026-10-04):
|
||||
|
||||
- No bell icon element.
|
||||
- No `data-testid` containing `notif` (full inventory checked).
|
||||
- No badge / dot / pill / count / unread elements anywhere in the DOM
|
||||
(regex sweep over testids, class names, and aria-labels — zero hits).
|
||||
- No bell icon element (zero `aria-label` matches for /bell/i on every node).
|
||||
- No notification dropdown, menu, or dialog container.
|
||||
- No `[data-radix-portal]` / portal roots hosting hidden dropdowns.
|
||||
- Clicking the Activity tab revealed no additional notification list UI
|
||||
(the status panel was already open on the Activity feed).
|
||||
|
||||
Unread state is therefore conveyed **only** through:
|
||||
1. the `hatch-nav-chat` aria-label suffix, and
|
||||
2. (presumably) unread styling on individual `[data-testid="hatch-thread-row"]`
|
||||
## 5a. Unread dot badges — CORRECTION 2026-10-04
|
||||
|
||||
The earlier claim ("no badge / dot / pill elements anywhere") is **wrong**.
|
||||
Three badge testids exist; they render only while there is unread activity and
|
||||
are absent when clean (which is why the first sweep on opm missed them):
|
||||
|
||||
| `data-testid` | Observed on | Markup |
|
||||
|---|---|---|
|
||||
| `hatch-dock-chat-notification-badge` | pip (while `"Chat, 1 notification"`) | blue dot |
|
||||
| `hatch-chat-switcher-unread-indicator` | muse | `<span class="bg-fill-blue absolute -end-0.5 size-2 rounded-full">` — 8×8 blue dot, no text, no `aria-label` |
|
||||
| `hatch-invite-activity-badge` | muse, pip | `<span class="bg-fill-blue absolute -end-0.5 -top-0.5 size-2 rounded-full">` — 8×8 blue dot |
|
||||
|
||||
All are empty `SPAN`s (`innerText === ""`, no `aria-label`, no `role`) —
|
||||
pure CSS dots (`bg-fill-blue`, `rounded-full`, `size-2`). **They are transient**:
|
||||
pip's `hatch-dock-chat-notification-badge` was present during one sweep and gone
|
||||
minutes later after the unread cleared. Never match on class names (Tailwind);
|
||||
match on `data-testid` presence:
|
||||
|
||||
```js
|
||||
// Any unread-dot badges currently rendered?
|
||||
const unreadDots = [
|
||||
'hatch-dock-chat-notification-badge',
|
||||
'hatch-chat-switcher-unread-indicator',
|
||||
'hatch-invite-activity-badge',
|
||||
].filter(tid => document.querySelector(`[data-testid="${tid}"]`));
|
||||
```
|
||||
|
||||
Notes:
|
||||
|
||||
- `hatch-invite-activity-badge` was present on muse and pip even when the chat
|
||||
nav label was clean (`"Chat"`), so it likely signals invites/activity rather
|
||||
than chat unread — treat it as its own signal, not as "unread chats".
|
||||
- `hatch-chat-switcher-unread-indicator` sits on the chat switcher (rect ≈
|
||||
(110,20), 8×8 on muse) — useful when the panel is open and the nav label
|
||||
is out of view.
|
||||
|
||||
Unread state is therefore conveyed through:
|
||||
|
||||
1. the `hatch-nav-chat` aria-label suffix (`"Chat, N notification(s)"`),
|
||||
2. the transient dot badges above (`data-testid` presence),
|
||||
3. (presumably) unread styling on individual `[data-testid="hatch-thread-row"]`
|
||||
rows in the chat panel — see `DOM-CHAT-PANEL.md`. The panel was closed
|
||||
during this inspection so row-level unread markers were not sampled;
|
||||
re-probe with the panel open if row-level detection is needed.
|
||||
@@ -222,6 +264,12 @@ document.querySelector('section[aria-label="Notifications alt+T"]')
|
||||
/notification/.test(
|
||||
document.querySelector('[data-testid="hatch-nav-chat"]').getAttribute('aria-label'));
|
||||
|
||||
// Any unread dots currently rendered? (transient — absent when clean)
|
||||
['hatch-dock-chat-notification-badge',
|
||||
'hatch-chat-switcher-unread-indicator',
|
||||
'hatch-invite-activity-badge'
|
||||
].filter(tid => document.querySelector(`[data-testid="${tid}"]`));
|
||||
|
||||
// Open the Activity feed (select tab):
|
||||
document.querySelector('button[aria-label="Activity"]').click();
|
||||
// Which status tab is selected?
|
||||
@@ -240,3 +288,5 @@ document.querySelector('button[data-testid="hatch-status-panel-close"]').click()
|
||||
- Whether tab buttons ever carry counts/badges when items are pending
|
||||
(Approvals tab is the likely candidate — re-probe with a pending approval).
|
||||
- Row-level unread markers inside `hatch-thread-row` (needs panel-open probe).
|
||||
- What clears `hatch-dock-chat-notification-badge` vs the aria-label suffix
|
||||
(observed independently transient on pip/muse — may be separate signals).
|
||||
|
||||
Reference in New Issue
Block a user