From 19c26291973cd976e7b922b3a38757478264ccda Mon Sep 17 00:00:00 2001 From: Mike Swanson Date: Thu, 4 Jun 2026 06:22:13 -0700 Subject: [PATCH] sync: auto-sync from GURU-5070 at 2026-06-04 06:22:09 Author: Mike Swanson Machine: GURU-5070 Timestamp: 2026-06-04 06:22:09 --- session-logs/2026-06-04-session.md | 67 ++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 session-logs/2026-06-04-session.md diff --git a/session-logs/2026-06-04-session.md b/session-logs/2026-06-04-session.md new file mode 100644 index 0000000..12d4d13 --- /dev/null +++ b/session-logs/2026-06-04-session.md @@ -0,0 +1,67 @@ +## User +- **User:** Mike Swanson (mike) +- **Machine:** GURU-5070 +- **Role:** admin + +## Session Summary + +Ran a `/human-flow` (mouse + keyboard ergonomics) scan on the GuruRMM dashboard and shipped two waves of fixes to the beta channel. The scan (delegated to a Sonnet subagent using the human-flow skill's scanner + heuristics) scored the dashboard 6.5/10 and flagged three compounding issues: tiny universal action targets (`size="sm"`, 32px, used everywhere), a 12-tab AgentDetail strip with no keyboard arrow navigation, and modal/drawer surfaces missing Escape. It produced a prioritized report (P0/P1/P2) separating mouse, keyboard, and combined friction, with file:line citations. + +Implemented the top 5 fixes first (Coding Agent), all localized: a labeled Terminal button + wider action column in the Agents table; a two-step inline Delete confirm for WatchdogAlerts across all 3 surfaces (was irreversible one-click); ARIA roving tabindex + Arrow/Home/End navigation on the Tabs component; auto-focus of the CommandTerminal input on mount; and Escape-to-close + a larger close button on the UserManagerTab slide-over. Code Review Agent approved (no CRITICAL/HIGH; 3 LOW optional notes). Gitea Agent committed (gururmm `9671c4b`, ClaudeTools `8fb45e4`), the push fired the webhook, and the dashboard auto-built to beta as v0.2.37. + +Then executed the systemic P1 — the `size="sm"` sweep (human-flow Issue 5) — as a judgment pass, not a blind find/replace. The Coding Agent examined 99 instances and promoted 31 list-header/primary action buttons to `size="default"` (36px), converted 4 icon-only buttons to `size="icon"` (h-9 w-9, removing a cramped `h-7 w-7 p-0` override), and intentionally left dense table-row groups, two-step Confirm/Cancel pairs, inline form controls, and compact/error-state buttons at `sm`. Code Review confirmed zero mismatched-height siblings — the promotions actually fixed pre-existing mismatches with adjacent `h-9` selects — and proved scope discipline mechanically (only the `size` prop changed). Committed (gururmm `d2d10e3`, ClaudeTools `13f992c`), auto-built to beta as v0.2.38. + +Both passes are now on beta (`rmm-beta.azcomputerguru.com`); production is untouched and a single `promote-dashboard.sh --confirm` ships both. This was the first real exercise of the beta-first dashboard channel built the prior day, and it held end-to-end: scan -> Coding Agent -> Code Review -> Gitea push -> webhook auto-build to beta -> verified live, twice. The Gitea Agent cleanly rebased over the pipeline's `[ci-version-bump]` commit on the second push. + +## Key Decisions + +- Treated the `size="sm"` sweep as a per-instance judgment call rather than a blanket replace: promote header/primary actions, convert icon-only-with-overrides to `size="icon"`, and leave dense/inline/secondary contexts — to avoid breaking layouts. +- Delegated the human-flow scan and both implementation passes to subagents (Sonnet scan; Coding Agent implement; Code Review Agent review; Gitea Agent commit) to preserve the long session's main context. +- Used the safer "label + spacing" version of the Agents table fix rather than a dropdown-menu refactor, to minimize regression risk on a first beta pass. +- Shipped to beta only; deferred promotion to Mike. The cosmetic P2 items (gauge-card click affordance, focus-ring/aria-label touch-ups) were left for a future pass. + +## Problems Encountered + +- Local `npx tsc -b` reported two `date-fns` module-not-found errors (BackupDetailTab.tsx, BackupStatusCard.tsx). Root cause: `date-fns@^4.2.1` is in package.json but not installed in the local working tree. Not introduced by the changes and not in any modified file; the server build's `npm install` resolves it, so the beta build succeeded. Left local node_modules untouched (out of scope). +- Second push (size sweep) hit a non-fast-forward: the pipeline's server-side `[ci-version-bump]` (`fa901e2`) had advanced origin/main. Gitea Agent resolved with fetch + rebase (no force-push) and re-pushed. + +## Configuration Changes + +GuruRMM dashboard (`projects/msp-tools/guru-rmm/dashboard/src`): +- Top-5 (commit `9671c4b`, 7 files, +153/-36): `pages/Agents.tsx`, `pages/AgentDetail.tsx`, `pages/Alerts.tsx`, `pages/WatchdogAlerts.tsx`, `components/Tabs.tsx`, `components/CommandTerminal.tsx`, `components/UserManagerTab.tsx`. +- Size sweep (commit `d2d10e3`, 18 files): pages `{AgentDetail, Agents, ClientDetail, Clients, Logs, MSPBackups, Organizations, SiteDetail, Sites, Updates, Users, WatchdogAlerts}.tsx`; components `{ChecksPanel, CredentialList, DiscoveryTab, InventoryTab, LogAnalysis, UserManagerTab}.tsx`. + +ClaudeTools submodule pointer bumps: `8fb45e4` (-> 9671c4b), `13f992c` (-> d2d10e3). + +No server/infra config changed this session; the dashboard build pipeline (build-dashboard.sh) auto-built both pushes to `/var/www/gururmm/dashboard-beta/`. + +## Credentials & Secrets + +None discovered or created this session. (Prior-day note still stands: the MSP360 API password is leaked in plaintext across several committed logs and should be rotated — vault `msp-tools/msp360-api.sops.yaml`.) + +## Infrastructure & Servers + +- Beta dashboard: https://rmm-beta.azcomputerguru.com (nginx vhost `gururmm-beta` on 172.16.3.30, web root `/var/www/gururmm/dashboard-beta/`). Built v0.2.37 then v0.2.38 this session. +- Prod dashboard: https://rmm.azcomputerguru.com — untouched (no promote run). +- Build pipeline: webhook (172.16.3.30:9000) -> build-shared.sh (auto version bump) -> build-dashboard.sh (npm install + vite build + rsync to dashboard-beta). Log `/var/log/gururmm-build-dashboard.log`. + +## Commands & Outputs + +- Beta build (top-5): `Dashboard beta build complete: v0.2.37 (fa901e28...) -- live at https://rmm-beta.azcomputerguru.com`. +- Beta build (size sweep): `Dashboard beta build complete: v0.2.38 (fc76b7fb...)`, built in 12.00s, deployed 13:20:03. +- Live checks: `rmm-beta` HTTP 200 with BETA banner; `rmm` (prod) HTTP 200, unchanged. +- Promote (when ready): `sudo /opt/gururmm/promote-dashboard.sh --confirm` (dry-run without `--confirm`; `--rollback` to undo). + +## Pending / Incomplete Tasks + +- Promote beta -> prod when Mike is satisfied with the human-flow changes (single promote ships both v0.2.37 + v0.2.38). +- Optional human-flow P2 polish (future beta pass): gauge-card click affordance (`AgentDetail.tsx` GaugeCard), maintenance-toggle focus ring, `Select.tsx` aria-label, text-only toggle link hit-padding, sidebar-collapse keyboard shortcut, command-palette agent results. +- 3 LOW code-review notes from the top-5 pass (non-blocking): shared `isMutating` disabling Confirm on a newly-opened row; `onClose` re-subscribe churn; Confirm-disabled predicate inconsistency vs Agents.tsx. +- Carried over from 2026-06-03 (unchanged): MSP360/B2 cleanup follow-ups (coord todos `2e50f388` audit-first, `dc3a6233` post-purge verify, `0fed5eb2` decisions), Glaztech SBS portal removal (`db03f8fe`), rotate the leaked MSP360 API key. + +## Reference Information + +- Beta: https://rmm-beta.azcomputerguru.com | Prod: https://rmm.azcomputerguru.com +- Commits: gururmm `9671c4b` (top-5), `d2d10e3` (size sweep); ClaudeTools `8fb45e4`, `13f992c`; build SHAs `fa901e28` (v0.2.37), `fc76b7fb` (v0.2.38). +- Human-flow skill: `.claude/skills/human-flow/` (scanner `scripts/scan.mjs`, heuristics `references/mouse-keyboard-heuristics.md`). +- Prior-day session log: `session-logs/2026-06-03-session.md` (beta channel + Grok post-mortem + MSP360/B2 cleanup).