From c50667b6265f8051ebba4a72ac3d7568820dee2c Mon Sep 17 00:00:00 2001 From: dom-inspector-2 Date: Sun, 4 Oct 2026 04:28:21 +0000 Subject: [PATCH] DOM message surface re-verified 2026-10-04 (3 nodes): .group/msg nesting fix, ownership-split menus, More reactions dialog, dividers, virtualization, DM text formats Session: sidechat/dom-messages --- docs/DOM-MESSAGE-ACTIONS.md | 129 ++++++++++++++++++++++++++++++------ docs/DOM-MESSAGES.md | 102 ++++++++++++++++++++++++++-- 2 files changed, 204 insertions(+), 27 deletions(-) diff --git a/docs/DOM-MESSAGE-ACTIONS.md b/docs/DOM-MESSAGE-ACTIONS.md index bca9cc1..7d74a37 100644 --- a/docs/DOM-MESSAGE-ACTIONS.md +++ b/docs/DOM-MESSAGE-ACTIONS.md @@ -5,6 +5,11 @@ Covers main chat (`https://muse.ai/`) and sidechat threads (`/thread/`). Read-mostly probes; the only state-changing probes were opening/closing the "More options" menu and one Reply-draft open/cancel cycle (composer verified clean after). +**Re-verified 2026-10-04 ~04:30 UTC** on all three fleet nodes (muse/9410, +pip/9420, opm/9440) against live main chats. Menu contents re-probed on muse +(own + other's menus, "More reactions" dialog opened and Escape-closed, no +residue). Corrections inline; no per-node structural differences. + Related: `DOM-CHAT-PANEL.md` (panel/sidechat create), `DOM-MESSAGES.md`, `DOM-PAGE-STRUCTURE.md`. --- @@ -25,6 +30,27 @@ Selector: document.querySelectorAll('.group\\/msg') // note: escaped slash in class name ``` +**Structural correction (verified 2026-10-04):** `.group/msg` is *inside* +`div[data-message-id]`, not the top-level message element. Full chain: + +``` +div[data-message-id] ← class "flex flex-col gap-2", the message identity hook +└── div.group/msg ← interactive wrapper (this section's hook) + ├── div (action rail, absolute inset-y-0 end-full) + │ └── button[aria-label="More options"] + └── div.hatch-chat-groupable-bubble + ├── span.sr-only "You:" (own messages only) + └── p / div (visible body) +``` + +`div[data-message-id]` additionally carries a direct-child +`span.sr-only` with the full accessible label (`"User message: "` / +`"Assistant message: "`) — see `DOM-MESSAGES.md` §3. + +Every rendered message has exactly one `.group/msg`, and every `.group/msg` +has exactly one `More options` rail button (verified rails == groups on +muse, pip, opm — including agent messages). + Parent chain (own message, bottom-up): ``` @@ -153,7 +179,41 @@ b.dispatchEvent(new MouseEvent('click', opts)); - `data-side` / `data-align` describe popper placement (`bottom`/`end` observed). - `id` is Radix-generated (`radix-_r_nd_`) — unstable, don't match on it. -### Menu contents (in order) +### Menu contents — DIFFERS BY OWNERSHIP (corrected 2026-10-04) + +Verified on muse (CDP 9410): opening the menu on an **own** message vs an +**other's** (agent) message yields different menus. The earlier doc described +one menu; there are two. + +**Own message** — children: header DIV, Reply, Copy, separator, Delete. +*No quick-reactions group at all.* + +```javascript +[...menu.querySelectorAll('[role="menuitem"]')].map(mi => mi.innerText.trim()) +// own message: ["Reply", "Copy", "Delete"] +``` + +**Other's message** — children: header DIV, `[role="group"][aria-label="Quick reactions"]`, +separator, Reply, Copy. *No Delete item.* + +```javascript +// other's message: ["Reply", "Copy"] (+ 7 reaction buttons in the group) +``` + +| | Own message menu | Other's message menu | +|---|---|---| +| Timestamp header | yes | yes | +| Quick reactions | **absent** | present (7 buttons) | +| Reply / Copy | yes | yes | +| Delete | yes (2/2 opens) | **absent** | + +- **Delete** was present on own messages in both opens this session; still + absent on other's. The earlier "seen once, absent once" observation is + superseded for the ownership axis, but keep a conditional mindset — + render conditions beyond ownership are untested, and clicking Delete was + not tested (destructive). +- **No Edit item exists** on either menu. Message editing UI was not found + anywhere (unchanged). **a) Timestamp header** @@ -161,16 +221,19 @@ b.dispatchEvent(new MouseEvent('click', opts));
Today at 3:48 AM
``` -Relative format ("Today at …"). No `