- .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>
3.1 KiB
3.1 KiB
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)
- "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