sync: auto-sync from GURU-5070 at 2026-06-06 20:29:16
Author: Mike Swanson Machine: GURU-5070 Timestamp: 2026-06-06 20:29:16
This commit is contained in:
@@ -109,3 +109,57 @@ Machine state (not in repo):
|
||||
- Tailscale docs: subnet routers `tailscale.com/docs/features/subnet-routers`; kernel-vs-netstack `/docs/reference/kernel-vs-userspace-routers`; Windows MSI `/docs/install/windows/msi`; run unattended `/docs/how-to/run-unattended`; auth keys `/kb/1085/auth-keys`; firewall ports `/kb/1082/firewall-ports`; Taildrive `/docs/features/taildrive`.
|
||||
- Tailscale MSI silent props: `TS_UNATTENDEDMODE=always`, `TS_NOLAUNCH`, `TS_LOGINURL`, `INSTALLDIR` (no auth-key property — use `tailscale up --authkey`).
|
||||
- Wiki: `wiki/patterns/tailscale-client-management.md`, `wiki/patterns/tailscale-client-enroll.ps1`, `wiki/clients/robert-wolkin.md`.
|
||||
|
||||
---
|
||||
|
||||
## Update: 20:26 PDT — GuruRMM beta dashboard (spine hitbox + pin feature, 3-way reviewed) + Antigravity/agy dead-end
|
||||
|
||||
### Summary
|
||||
|
||||
Picked up the "RMM Beta Dashboard" project. Recovered context across the 2026-06-05 and 2026-06-06 GuruRMM logs: the dashboard redesign (Phases 1-5 — Shell&Spine, Omnibox, Triage, AgentDetail, design-system — plus ClientDetail reprioritization A/B/C and SPEC-016/025/026/027) is essentially complete and live on **beta v0.2.52**. The only pending dashboard action is promoting beta -> prod, which Mike deferred ("still polishing"). Confirmed no coord locks/messages on gururmm. Fast-forwarded the submodule from the pinned `226ba9f` (39 behind) to `origin/main` `ae025aa` to work on current code.
|
||||
|
||||
Mike flagged a polish issue: infra spine row hitboxes too small, dead zones "between" items. Diagnosed in `dashboard/src/components/ContextTree.tsx`: the nav `<Link>` only wrapped the label (row padding/gaps not clickable) and `mb-0.5`/`mt-0.5` left literal gaps. Fixed (Fitts's Law) by stretching the link to fill the row (`absolute inset-0 z-0`), making label/icon/status `pointer-events-none`, removing gaps, `py-1.5->py-2`. Committed `980152e`.
|
||||
|
||||
Mike then requested pinning spine items so they stay visible when a client is collapsed. Chose **Option B (inline-retain)** via an AskUserQuestion mockup: a collapsed client hoists its pinned descendants (pinned sites + agents) flat one indent under it; a collapsed site shows its pinned agents. Built via a Coding Agent: new `usePinnedSpineItems` localStorage hook (`gururmm.spine.pins`) + ContextTree render logic. Committed `5bd8589`.
|
||||
|
||||
Detoured on the Gemini-CLI deprecation banner (June 18). Installed the Antigravity CLI (`agy.exe` v1.0.6, official `antigravity.google/cli/install.ps1`, verified Google-domain + Cloud Run source before running). **Re-confirmed the 2026-06-05 finding**: `agy.exe` is the IDE embedded agent, NOT a headless CLI — produces zero stdout and hangs when invoked non-interactively (writes to a SQLite conversation store). The `agy` SKILL already routes to `@google/gemini-cli` (the real headless tool), which works. Mike has a **paid Gemini account**, so the plan is to stay on gemini-cli (defer any API-key hardening). Saved memory `reference_antigravity_agy_not_headless.md`. Verified both second-models authed: grok (`OK`) and gemini (`OK`).
|
||||
|
||||
Ran the **3-way Multi-AI review** (Gemini via `agy` + Grok + Claude Code Review Agent) on branch `polish/infra-tree-hitbox`. All three approved; core (mouse hitbox layering, hoist logic, hook re-render) confirmed correct. Applied the 5 agreed fixes (committed `679b919`, `tsc --noEmit` clean). Branch has 3 local commits, NOT merged/pushed — awaiting Mike's go to merge to main (which auto-builds beta). Finished by checking the `ff.py` Firefox driver to view Mike's tab — daemon not running, and clarified ff.py drives its own Playwright Firefox (can't attach to his regular Firefox window).
|
||||
|
||||
### Key Decisions
|
||||
|
||||
- **Append to this session's existing log** (same continuous session) rather than a new file, per /save rules.
|
||||
- **Stay on gemini-cli; abandon Antigravity.** Paid Gemini account avoids the June 18 free-tier sunset; agy.exe is a confirmed non-headless dead-end. API-key hardening deferred ("cross that bridge later").
|
||||
- **Pin layout = Option B (inline-retain on collapse)**, Mike's choice over a top "Pinned" tray.
|
||||
- **Did the hitbox fix directly** (surgical, 1 file) but **delegated the pin feature build to a Coding Agent** and ran the **full 3-way review before any merge**, matching the dashboard's review culture.
|
||||
- **Type-prefixed React keys in the hoist branch** (Grok was right: two `.map`s in one parent share a key namespace; Gemini/Claude were wrong that arrays auto-namespace).
|
||||
- **Hook persistence moved to a `useEffect`** (pure updater) + cross-tab `storage` listener.
|
||||
|
||||
### Problems Encountered
|
||||
|
||||
- **agy.exe no stdout / hangs** when run from the Bash/PowerShell tools (exit 0, 0 bytes, or foreground hang). Root cause was already documented in the 2026-06-05 platform-day log (line 35) — the reinstall erased the machine-state knowledge so I re-walked it. Resolved: use `@google/gemini-cli`; recorded a memory to prevent the next rediscovery. Killed the hung agy.exe processes.
|
||||
- **Submodule working tree 39 commits behind** origin/main (pinned). Fast-forwarded via `git checkout main && git pull --ff-only`.
|
||||
- **Web docs for Antigravity were JS-rendered** (WebFetch returned nothing) and search results were polluted with spam npm packages. Resolved by verifying the install vector directly: `.google` gTLD domain + inspecting the install.ps1 (pulls from Google Cloud Run) before executing.
|
||||
|
||||
### Configuration Changes (this segment)
|
||||
|
||||
- New memory: `.claude/memory/reference_antigravity_agy_not_headless.md` + `MEMORY.md` index line.
|
||||
- Installed `agy.exe` to `C:\Users\guru\AppData\Local\agy\bin` and the installer added that dir to the **User PATH** (dead-end binary; offered to remove, awaiting Mike).
|
||||
- **Submodule `projects/msp-tools/guru-rmm` (separate repo `azcomputerguru/gururmm`, NOT the claudetools repo):** branch `polish/infra-tree-hitbox` with commits `980152e`, `5bd8589`, `679b919`. Files: `dashboard/src/components/ContextTree.tsx` (+~190/-36), new `dashboard/src/hooks/usePinnedSpineItems.ts`. **Local only — not pushed, not merged.** The claudetools sync does NOT touch this (different repo); the branch lives in the submodule working tree until Mike merges it.
|
||||
|
||||
### Pending / Incomplete Tasks (this segment)
|
||||
|
||||
- **Merge `polish/infra-tree-hitbox` -> gururmm `main`** when Mike approves -> webhook auto-builds beta. Then optionally promote beta -> prod (whole redesign still beta-only).
|
||||
- **Remove the dead `agy.exe`** install + its User PATH entry (offered).
|
||||
- **API-key hardening for gemini-cli** (paid account) deferred — the robust path past June 18 is `GEMINI_API_KEY`, not Antigravity. Not urgent.
|
||||
- **ff.py**: to view a page, launch the daemon + nav (it can't see Mike's own Firefox window).
|
||||
- Carried from earlier: promote dashboard beta->prod, Mike/Howard re-login for dev_admin reveal, confirm Robert Wolkin printer type (USB vs network), vault GuruRMM Postgres DATABASE_URL, SPEC-018 errors, rotate MSP360 key.
|
||||
|
||||
### Reference Information (this segment)
|
||||
|
||||
- Submodule branch `polish/infra-tree-hitbox` @ `679b919` (base `origin/main` `ae025aa`), repo `azcomputerguru/gururmm`, dir `projects/msp-tools/guru-rmm`.
|
||||
- Dashboard beta v0.2.52; prod promote: `sudo /opt/gururmm/promote-dashboard.sh --confirm` on 172.16.3.30.
|
||||
- `agy.exe`: `C:\Users\guru\AppData\Local\agy\bin\agy.exe` v1.0.6 (Antigravity CLI; NOT headless). Installer: `https://antigravity.google/cli/install.ps1`.
|
||||
- Real second-model backends: `@google/gemini-cli` (`gemini` npm, v0.45.2, Google OAuth) via `ask-gemini.sh`; grok 0.2.22 via `ask-grok.sh`. Both verified `OK`.
|
||||
- Memory added: `reference_antigravity_agy_not_headless.md`.
|
||||
- ff.py: `.claude/scripts/ff.py`, daemon `localhost:9333`, profile `~/.claude/ff-profile`.
|
||||
|
||||
Reference in New Issue
Block a user