rmm dashboard redesign (Gemini live review) + CDP Chrome driver

- .claude/scripts/cdp.py: drive Chrome via DevTools Protocol; screenshots to disk
  (so Gemini/Grok can see the live site). Fixes invisible-window + no-disk-screenshot.
- reference_cdp_chrome_driver.md (+ MEMORY index)
- gururmm submodule pointer -> dashboard redesign docs (local 3cef6ba)
- session log

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-05 13:10:19 -07:00
parent c4ec2ed4b0
commit 47b71b7b3a
7 changed files with 408 additions and 103 deletions

View File

@@ -0,0 +1,51 @@
## User
- **User:** Mike Swanson (mike)
- **Machine:** GURU-5070
- **Role:** admin
# GuruRMM dashboard redesign (Gemini live review) + CDP Chrome driver
## Session Summary
Ran an interactive, Gemini-driven redesign review of the LIVE GuruRMM dashboard (Claude as eyes/hands
over 5 rounds), producing a final proposal + a round-by-round session log in the gururmm submodule
docs/. Then solved the underlying "can't drive/see Chrome" problem by building a CDP (Chrome DevTools
Protocol) driver, so screenshots now hit disk and can be fed to Gemini/Grok image tools.
## Key Decisions
- Gemini drove the redesign (design brain w/ full docs incl. 2302-line roadmap + source); Claude
transcribed live views + ran non-destructive interaction tests. No app code changed; no live-site
changes. Proposal: context-spine IA, unified omnibox, triage inbox, AgentDetail vertical sub-nav,
reuse existing primitives (tri-state inheritance, vertical sub-nav, RBAC banners, dark terminal).
- CDP over the MCP extension: launch visible Chrome with --remote-debugging-port on a DEDICATED
profile; drive via .claude/scripts/cdp.py (websocket-client + urllib). Fixes invisible-window +
screenshots-not-on-disk. Use localhost (not 127.0.0.1) for the debug endpoint.
- Password rule unchanged: Claude does NOT type passwords into fields even with CDP / even when asked.
## Problems Encountered
- MCP browser windows opened on a Chrome instance Mike couldn't see; save_to_disk screenshots never
landed on a findable path -> blocked feeding images to Gemini. Solved with CDP (captureScreenshot
returns bytes -> real PNG file -> Gemini image-analyze verified reading it).
- CDP /json 404 on 127.0.0.1 (DNS-rebinding guard) -> switched to localhost.
## Live UX bugs found during testing (candidates for UI_GAPS.md)
1. "Search everything" bar dead on Dashboard (per-route local filter bound to nothing). 2. Ctrl+K
palette collides with Chrome's native shortcut + no on-screen trigger. 3. Alerts: no grouping/dedup,
no bulk actions, no remediation link from an alert. 4. AgentDetail Overview leads with Maintenance
Mode, burying live metrics. 5. App defaults to light despite "dark is native" (theme is per-profile
localStorage).
## Configuration Changes
- NEW .claude/scripts/cdp.py (CDP driver). NEW .claude/memory/reference_cdp_chrome_driver.md (+ index).
- gururmm submodule (local commit 3cef6ba): docs/dashboard-redesign-{brief,proposal-gemini,session}.md
- pip: websocket-client 1.9.0 installed (py 3.14).
## Pending / Next
- Decide: push gururmm submodule docs to the gururmm repo (may hit build webhook) — held local for now.
- Optional: re-run the redesign loop feeding Gemini REAL CDP screenshots (now possible); file bugs 1-5
into UI_GAPS.md; triangulate with Grok; start Phase 1.
- Decide whether to grant Gemini/Grok direct cdp.py driving (security caveat: drives authed sessions).
## Reference
- CDP driver: .claude/scripts/cdp.py (launch/status/nav/shot/click/type/key/eval). Port 9222, profile
~/.claude/cdp-chrome-profile. Screenshots: .claude/tmp/cdp/.
- Redesign docs: projects/msp-tools/guru-rmm/docs/dashboard-redesign-*.md