sync: auto-sync from HOWARD-HOME at 2026-05-29 23:33:53

Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-05-29 23:33:53
This commit is contained in:
2026-05-29 23:34:02 -07:00
parent 8fa07d434d
commit 151e974a9b

View File

@@ -558,3 +558,85 @@ Howard then asked why the knowledge cutoff exists and whether a Claude update wa
- Claude Code version: 2.1.158 (latest)
- Active model after switch: Opus 4.8 (1M context), id `claude-opus-4-8`
---
## Update: 23:33 PT — GuruRMM roadmap quick-wins (PR #29)
## User
- **User:** Howard Enos (howard)
- **Machine:** Howard-Home
- **Role:** tech
## Session Summary
Reviewed the GuruRMM feature roadmap (`projects/msp-tools/guru-rmm/docs/FEATURE_ROADMAP.md`, ~1955 lines) and identified the safest, most self-contained quick-wins that could be shipped without disturbing roadmap-fragile areas. Worked the safest tier through the full coordinator pipeline and shipped them as a single PR.
Followed the coordination protocol throughout: checked unread coord messages (none) and gururmm locks (none) at start, claimed a per-batch lock on the dashboard resources, released each lock when its batch finished. Each batch ran Coding Agent (explore+implement) -> Code Review Agent (final-authority APPROVE) -> Gitea Agent (commit). Commit messages were drafted via local Ollama (`qwen3:14b`, Tier 0). All work was frontend-only with no backend/API/DB/migration changes, deliberately avoiding the fragile areas (migration 046 sqlx-checksum hazard, the dead-code admin tunnel skeleton, blocked Windows thermal collection).
Batch 1 (SiteDetail.tsx): BUG-014/SPEC-010 Item B (P1) extended the Site Detail agent-list search to also match os_name and logged-in user; the search was found already partially implemented (hostname + os_type). SPEC-010 Item F (P3) added an inline SiteNotesCard to edit/add site notes without the full edit modal, saving via the existing sitesApi.update. A forward-compat optional `logged_in_user?` field was added to the Agent TS interface (frontend-only; server-side population is SPEC-010 Item D). Committed as a7a4260.
Batch 2 (5 files): SPEC-012 (P2) added client-side sortable table column headers via a new shared `useSortState` hook + `SortableHeader` component, wired into Clients/Sites/Agents list pages (asc/desc toggle, aria-sort, keyboard-operable button). BUG-012(a) fixed a stale `localhost:3001` API endpoint fallback in Settings.tsx by importing the canonical `API_BASE_URL` from the api client. BUG-012(b) added aria-expanded/aria-controls/aria-label to the LogAnalysis FindingCard expand toggle. Committed as d5aaea6.
Both Code Review Agent passes returned APPROVE with no required changes. After the safest tier was complete, the user chose to push and open a PR (rather than continue to the next tier). The Gitea Agent pushed the branch and created PR #29 against `main`. The next-tier items were recorded as a coord to-do for later pickup.
## Key Decisions
- Scoped the work to frontend-only, self-contained items with established patterns; explicitly avoided migration 046 (editing an applied migration breaks its sqlx checksum, reproducing the BUG-003 outage class), the admin tunnel (server-side dead-code skeleton), and Windows thermal collection (blocked pending driver replacement).
- Batched the work by shared context/file rather than one-item-per-branch, to keep each Code Review pass coherent while minimizing agent round-trips.
- Kept the forward-compat `logged_in_user?` TS field (Code Review confirmed it is spec-sanctioned by SPEC-010 Item D and well-documented) rather than removing it.
- Committed locally and held the push until the user explicitly chose "push & open PR" — push is outward-facing to the shared gururmm repo.
- Did NOT merge PR #29 — left for independent review/merge per the user's choice.
## Problems Encountered
- `bash .claude/scripts/whoami-block.sh` initially failed (exit 127) because the shell working directory had persisted inside the `projects/msp-tools/guru-rmm` submodule from earlier `cd` calls. Resolved by using absolute paths (`/c/claudetools/...`).
- Coord todo POST initially failed: the endpoint requires `text`, `created_by_user`, `created_by_machine` (not `title`/`description`), and the raw heredoc JSON hit a body-parse error. Resolved by building the payload with `jq` and the correct schema.
- Public Gitea host (git.azcomputerguru.com) is Cloudflare-fronted and blocks non-browser API calls; the Gitea Agent created the PR via the internal endpoint `http://172.16.3.20:3000` with basic auth from the SOPS vault.
## Configuration Changes
GuruRMM submodule (`projects/msp-tools/guru-rmm`, branch `fix/quickwins-sitedetail-ux`, pushed to origin, PR #29 — NOT merged):
- `dashboard/src/pages/SiteDetail.tsx` — search filter extension + SiteNotesCard (commit a7a4260)
- `dashboard/src/api/client.ts` — added optional `logged_in_user?: string | null` to Agent interface (a7a4260)
- `dashboard/src/hooks/useSortState.ts` — NEW shared sort hook (d5aaea6)
- `dashboard/src/components/SortableHeader.tsx` — NEW shared sortable header component (d5aaea6)
- `dashboard/src/pages/Clients.tsx`, `Sites.tsx`, `Agents.tsx` — wired sortable headers (d5aaea6)
- `dashboard/src/pages/Settings.tsx` — canonical API_BASE_URL fallback (d5aaea6)
- `dashboard/src/components/LogAnalysis.tsx` — FindingCard aria attributes (d5aaea6)
ClaudeTools repo:
- `session-logs/2026-05-29-session.md` — this update section appended
## Credentials & Secrets
- No new secrets. Gitea PR creation used basic auth from SOPS vault `services/gitea-howard.sops.yaml` (read by the Gitea Agent into an env var, not printed/hardcoded).
## Infrastructure & Servers
- Coord API: `http://172.16.3.30:8001/api/coord` (messages, locks, todos)
- Gitea internal endpoint (PR creation): `http://172.16.3.20:3000` (public host git.azcomputerguru.com is Cloudflare-fronted, blocks API calls)
- Ollama: `http://localhost:11434`, model `qwen3:14b` (commit-message drafting)
## Commands & Outputs
- Lock claim/release: `POST`/`DELETE http://172.16.3.30:8001/api/coord/locks` — lock IDs 43a83074 (SiteDetail), 99115ed0 (batch 2), both released
- Coord todo created: id `15a5440f-53c0-448d-8d3e-a364dfc05e39` (next-tier quick-wins, assigned howard, project gururmm)
- Dashboard verification (per batch): `npx tsc -b` exit 0, `npm run build` (tsc -b && vite build) exit 0, eslint clean on touched files (~20 repo-wide lint errors are pre-existing in untouched files)
- `git push -u origin fix/quickwins-sitedetail-ux` — new branch pushed
- PR created via Gitea API (HTTP 201) — PR #29
## Pending / Incomplete Tasks
- PR #29 awaiting review/merge (NOT merged this session).
- Next-tier quick-wins (coord todo 15a5440f, do after #29 merges): BUG-009/010 isError sweep (Logs.tsx + 8 pages); BUG-011 replace 14 `: any`; BUG-008 metrics.rs -> internal_err(); BUG-015/SPEC-011 agent in Windows Programs & Features (WiX-only).
- Non-blocking review follow-up: always-render LogAnalysis FindingCard details with `hidden` so aria-controls resolves when collapsed.
## Reference Information
- PR #29: https://git.azcomputerguru.com/azcomputerguru/gururmm/pulls/29
- Branch: `fix/quickwins-sitedetail-ux` (base `main`)
- Commits: a7a4260 (Site Detail search + notes), d5aaea6 (sortable headers + Settings URL + a11y)
- Roadmap: `projects/msp-tools/guru-rmm/docs/FEATURE_ROADMAP.md`
- Specs: `docs/specs/SPEC-010-agent-ux-improvements.md`, `docs/specs/SPEC-012-sortable-table-headers.md`, `docs/specs/SPEC-011-arp-programs-features-registration.md`
- Coord todo: 15a5440f-53c0-448d-8d3e-a364dfc05e39