## 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