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