DOM inspector 5/5: verify page structure + edge states, regenerate index
Session: sidechat/dom-structure
This commit is contained in:
+29
-8
@@ -13,11 +13,20 @@
|
||||
|
||||
| Doc | Covers | Last verified |
|
||||
|---|---|---|
|
||||
| [DOM-CHAT-PANEL.md](./DOM-CHAT-PANEL.md) | Chat panel switcher, compose `+` button, panel shell/tree, thread rows, open-vs-closed detection, 24-test id inventory | 2026-10-04 (CDP, opm) |
|
||||
| [DOM-MESSAGES.md](./DOM-MESSAGES.md) | Message composer, send/stop buttons, message list (`data-message-id`), chat activation button (`hatch-nav-chat`), loading/empty states | 2026-10-04 ~03:45 UTC (CDP, opm) |
|
||||
| [DOM-PAGE-STRUCTURE.md](./DOM-PAGE-STRUCTURE.md) | Page states/modes, key selectors, approval dialogs, overlays, URL patterns, 57-testid inventory, automation sequences | 2026-10-04 (CDP, opm) |
|
||||
| [DOM-CHAT-PANEL.md](./DOM-CHAT-PANEL.md) | Chat panel switcher, compose `+` button, panel shell/tree, thread rows, open-vs-closed detection, 24-testid inventory | 2026-10-04 (CDP, opm) |
|
||||
| [DOM-MESSAGES.md](./DOM-MESSAGES.md) | Message composer, send/stop buttons, message list (`data-message-id`), chat activation button (`hatch-nav-chat`), loading/empty states | 2026-10-04 ~04:30 UTC (CDP, all 3 nodes) |
|
||||
| [DOM-PAGE-STRUCTURE.md](./DOM-PAGE-STRUCTURE.md) | Page states/modes, key selectors, nav rail, approval-dialog summary, overlays, URL patterns, testid inventory, automation sequences | 2026-10-04 ~04:35 UTC (CDP, muse/pip/opm) |
|
||||
| [DOM-EDGE-STATES.md](./DOM-EDGE-STATES.md) | Loading/partial-load (S3), stripped states (S8), empty states, typing indicator, error/toast traps, offline, rate limits, iframes/shadow DOM, readiness cheat-sheet | 2026-10-04 ~04:35 UTC (CDP, muse/pip/opm) |
|
||||
| [DOM-MESSAGE-ACTIONS.md](./DOM-MESSAGE-ACTIONS.md) | Message actions & thread interactions (`.group/msg`, more-options menus, reactions, reply drafts) | 2026-10-04 ~04:30 UTC (CDP, all 3 nodes) |
|
||||
| [DOM-NOTIFICATIONS.md](./DOM-NOTIFICATIONS.md) | Notification surface: toast live region (no bell, no notification center), activity indicators | 2026-10-04 (CDP, opm) |
|
||||
| [DOM-SEARCH.md](./DOM-SEARCH.md) | Global search / command palette: trigger, input, results | 2026-10-04 (CDP, opm) |
|
||||
| [DOM-SETTINGS.md](./DOM-SETTINGS.md) | Settings, profile & dock rail structure (no credential values recorded) | 2026-10-04 (CDP, opm) |
|
||||
| [DOM-APPROVALS-SPEC.md](./DOM-APPROVALS-SPEC.md) | Approval/permission dialog detection, classification (trusted IPs), handling, exit-code contract (`2` = `APPROVAL_NEEDED`) | 2026-10-03 |
|
||||
|
||||
> Naming note: inspector 3/5's brief mentioned `DOM-APPROVALS.md`; the file on
|
||||
> disk is `DOM-APPROVALS-SPEC.md` (since 2026-10-03). This index references the
|
||||
> actual filename.
|
||||
|
||||
**Cross-reference guide:**
|
||||
- Sidechat creation mechanics → CHAT-PANEL (§4 safe toggle, §6 automation notes)
|
||||
- What to type into / how to send → MESSAGES (§1 composer, §2 send)
|
||||
@@ -35,7 +44,8 @@
|
||||
|
||||
| testid | Tag | Purpose | Docs |
|
||||
|---|---|---|---|
|
||||
| `hatch-chat-switcher-trigger` | `BUTTON` | Panel open/close **toggle**. Text: `Chats`. Never blind-click — check compose first | C, P |
|
||||
| `hatch-chat-switcher-trigger` | `BUTTON` | Panel open/close **toggle**. Inner text is the **current thread title** (not `Chats`) — never match by text. Never blind-click — check compose first | C, P |
|
||||
| `hatch-side-chats-open-drag-handle-divider-line` | `DIV` | Divider for the closed-panel drag handle; absent when panel is open (verified 2026-10-04, all nodes) | P |
|
||||
| `hatch-chat-switcher-icon-knockout` | `SPAN` | Icon wrapper inside switcher | C, P |
|
||||
| `hatch-chat-switcher-navigation-icon` | `SPAN` | Hamburger SVG inside switcher | C, P |
|
||||
| `hatch-chat-leading-controls` | `DIV` | Top-left container holding the switcher | C, P |
|
||||
@@ -63,7 +73,7 @@
|
||||
| testid | Tag | Purpose | Docs |
|
||||
|---|---|---|---|
|
||||
| `hatch-dock-rail` | `DIV` | Left dock rail container | C, M, P |
|
||||
| `hatch-dock-rail-divider` | `DIV` | Rail divider | P |
|
||||
| `hatch-dock-rail-divider` | `SPAN` | Rail divider | P |
|
||||
| `hatch-nav-chat` | `A` | **Chat section link** (`href="/"`). `aria-label` is dynamic (`Chat` / `Chat, N notifications`) — match testid, never exact aria-label. `aria-current="page"` when Chat active. **The reliable chat activator** | C, M, P |
|
||||
| `hatch-dock-chat-notification-badge` | — | Notification badge on nav-chat | P |
|
||||
| `hatch-nav-search` | `BUTTON` | Search nav | C, M, P |
|
||||
@@ -91,6 +101,7 @@
|
||||
| `hatch-status-panel-close-toolbar` | `DIV` | Toolbar | P |
|
||||
| `hatch-invite-friends-button` | `BUTTON` | Invite (`aria-label="Invite"`) | C, P |
|
||||
| `hatch-browser-task-banner-host` | `DIV` | Browser task banner (hidden) | C, P |
|
||||
| `hatch-inline-approval-card` | `DIV` | Browser-task approval card (`A task needs review` + `Review` button), no IP in text. Structure TBD — inspector 3/5, DOM-APPROVALS-SPEC.md | P |
|
||||
|
||||
---
|
||||
|
||||
@@ -103,7 +114,7 @@
|
||||
| `#hatch-chat-scroll` | Message scroll container | M |
|
||||
| `div[role="log"][aria-label="Chat messages"]` | Message list | M |
|
||||
| `[data-message-id]` | Each message. `assistant-msg-<uuid>` = assistant, bare `<uuid>` = user | M |
|
||||
| `button[aria-label="Back to main chat"]` | **Escape hatch from `/thread/new`** stripped state (empty text, match aria-label) | *(subagent report 2026-10-04 — not yet in a detail doc)* |
|
||||
| `button[aria-label="Back to main chat"]` | **Primary main-chat affordance** from any thread state (`/thread/<uuid>` and `/thread/new`), panel open or closed. Verified 2026-10-04 on all 3 nodes | P (§2.7) |
|
||||
| Exact-text `Main chat` element | Main-chat navigation target — match `(e.innerText).trim() === 'Main chat'` on `button, [role="button"]`, never substring | P (§2.7), AGENTS.md |
|
||||
|
||||
---
|
||||
@@ -201,18 +212,23 @@ Text-based (no stable testids observed). See APPROVALS-SPEC for the full contrac
|
||||
| 2 | PAGE-STRUCTURE §1.3 "Recovery: Send Ctrl+J" from `/thread/new` | **Use `button[aria-label="Back to main chat"]` click** or `hatch-nav-chat` click instead |
|
||||
| 3 | `/thread/new` title: MESSAGES §5 and PAGE-STRUCTURE §1.3 say `Muse`; a 2026-10-04 probe table said `Chat — …` | **Docs consensus: `Muse`.** Treat title as advisory only — detect via URL + switcher absence (§4b), never title alone |
|
||||
| 4 | "Sidechat create navigates to main first" (older code comment) | **Unnecessary.** The ready state for *create* is any chat-active view; `hatch-nav-chat` recovery lands on main anyway |
|
||||
| 5 | CHAT-PANEL / older notes describe switcher text as `Chats` (or `Chats\nUnread chats…`) | **Thread title.** Verified 2026-10-04 on all nodes: switcher innerText = `<current thread title>\nOpen chat and side chats`. Never match the switcher by text |
|
||||
|
||||
---
|
||||
|
||||
## 6. Gaps — Unmapped Territory
|
||||
|
||||
1. **`button[aria-label="Back to main chat"]`** — verified in live probes, referenced in §3, but has no dedicated section in any detail doc yet.
|
||||
1. **`hatch-inline-approval-card` structure** — testid + surface text documented (PAGE-STRUCTURE §6, this index §2), full structure deferred to inspector 3/5 in DOM-APPROVALS-SPEC.md.
|
||||
2. **Feed / Ideas / Goals / Library pages** — dock testids listed, page content unmapped.
|
||||
3. **Search overlay** (`hatch-nav-search` target) — unmapped.
|
||||
3. **Search overlay** (`hatch-nav-search` target) — trigger documented in DOM-SEARCH.md; result-row interactions unmapped.
|
||||
4. **OTP / account-selection states** — body-text markers known (`To log in, enter the code`, `Your email matches multiple accounts`), DOM unmapped. Automation should abort to human here.
|
||||
5. **`cmd_sidechat_main`'s exact-text `Main chat` lookup** — documented in AGENTS.md and §3/§4e here, no DOM-doc section.
|
||||
6. **Partial-load state** (title `Muse`, ~21 buttons, transient) — mentioned in MESSAGES §5, no recovery procedure beyond "navigate to `/` and re-probe".
|
||||
7. **Message read-back verification selectors** — MESSAGES §3 covers extraction; the `dm.py` tail-match verification loop is code-only.
|
||||
8. **`/tmp` script collisions between inspectors** — two inspectors overwrote each other's `/tmp/cdp_eval.py` on bl mid-task (2026-10-04). Namespace throwaway scripts per-inspector (e.g. `/tmp/cdp_eval_<area><n>.py`).
|
||||
|
||||
> Resolved 2026-10-04: `button[aria-label="Back to main chat"]` now has a
|
||||
> dedicated section in PAGE-STRUCTURE §2.7 (was gap #1 in the previous index).
|
||||
|
||||
---
|
||||
|
||||
@@ -222,3 +238,8 @@ Text-based (no stable testids observed). See APPROVALS-SPEC for the full contrac
|
||||
- Contradiction rule: **newer verified probe beats older doc text**; record the resolution in §5 with the commit or date.
|
||||
- "Last verified" in §1 is per-doc. If you re-probe a doc's selectors, bump its date.
|
||||
- Prefer adding a dated note over rewriting history — these docs are also an audit trail.
|
||||
- 2026-10-04 regeneration: document map now covers all 10 `DOM-*.md` files
|
||||
(was 4); master table carries the two new testids
|
||||
(`hatch-side-chats-open-drag-handle-divider-line`, `hatch-inline-approval-card`)
|
||||
and the switcher-text + dock-rail-divider corrections. When a new DOM doc
|
||||
lands, add its row to §1 and its testids to §2 in the same commit.
|
||||
|
||||
Reference in New Issue
Block a user