DOM inspector 5/5: verify page structure + edge states, regenerate index
Session: sidechat/dom-structure
This commit is contained in:
+40
-1
@@ -1,6 +1,8 @@
|
||||
# muse.ai Edge States DOM Reference
|
||||
|
||||
> Captured live via CDP on `opm` browser (warp-opm netns, CDP 9440) on 2026-10-04.
|
||||
> Re-verified 2026-10-04 across `muse` (9410), `pip` (9420), `opm` (9440) —
|
||||
> see §10. No alerts, toasts, approval dialogs, or offline markers on any node.
|
||||
> Method: settled-state probe + `Page.reload` with timed probes at t=0.5/1.5/3/6/10s
|
||||
> to catch transient load states.
|
||||
> Baseline page: `https://muse.ai/thread/2e2c90a1-4b17-4590-b8ba-fb17d8018d36`
|
||||
@@ -128,6 +130,14 @@ auto-generated heartbeat thread title), not the literal `Chats`. The
|
||||
`Back to main chat` button exists this early — it is the S8 escape hatch even
|
||||
during partial load.
|
||||
|
||||
**Update 2026-10-04:** the thread-title switcher text is also the *settled*-state
|
||||
behavior (verified on muse/pip/opm thread pages, e.g.
|
||||
`646 pip cross-operator coordination chat | Open chat and side chats`).
|
||||
Never match the switcher by text — use the testid. Likewise, the
|
||||
`Back to main chat` aria-label button is present on **regular `/thread/<uuid>`
|
||||
pages too**, not only during partial load — S8 recovery works from any thread
|
||||
state, panel open or closed.
|
||||
|
||||
### 2.3 Detection and recovery
|
||||
|
||||
```javascript
|
||||
@@ -307,5 +317,34 @@ the earlier DOM investigation.
|
||||
|
||||
**Never use as signals:** `document.readyState` (already `complete` during S3),
|
||||
`body.innerText.includes('retry'/'loading'/'Side chats')` (false positives
|
||||
documented above), switcher `aria-expanded` (never set), shimmer
|
||||
documented above), switcher `aria-expanded` (never set), switcher **inner text**
|
||||
(it's the thread title, not `Chats`), shimmer
|
||||
`animate-pulse-light` spans (present when settled).
|
||||
|
||||
## 10. Re-verification log (2026-10-04, inspector 5/5)
|
||||
|
||||
Probed `muse`, `pip`, `opm` via CDP `Runtime.evaluate` in each netns:
|
||||
|
||||
| Check | muse | pip | opm |
|
||||
|---|---|---|---|
|
||||
| `navigator.onLine` | true | true | true |
|
||||
| `[role="alert"]` with content | 0 | 0 | 0 |
|
||||
| Toasts | 0 | 0 | 0 |
|
||||
| `Allow … to share` in body text | no | no | no |
|
||||
| Offline/rate-limit markers | none | none | none |
|
||||
| Typing indicator | absent | absent | absent |
|
||||
| Composer present | yes | yes | yes |
|
||||
|
||||
Additional observations:
|
||||
- **Title unread prefix:** pip's title was `(1) Chat — operator-pip` — the title
|
||||
gains an `(N)` prefix when unreads exist. State detectors should use
|
||||
`startsWith('Chat —')` on the *end* of the title or strip a leading
|
||||
`\(\d+\)\s*` before comparing.
|
||||
- **Shared browsers:** another agent drove pip's browser mid-probe (URL changed
|
||||
from `/thread/<uuid>` to `/` and back, panel toggled between probes).
|
||||
Fleet browsers are a shared resource — re-probe immediately before acting,
|
||||
and never treat a minutes-old snapshot as current state.
|
||||
- **Settled-state counts are ranges:** shimmer spans 1 (doc said 2),
|
||||
`role="status"` 3–4 (doc said 4–7), buttons 46–57 on settled thread pages.
|
||||
The cheat-sheet's `buttons > 30` threshold still holds; don't hard-code
|
||||
exact counts.
|
||||
|
||||
Reference in New Issue
Block a user