diff --git a/.claude/memory/MEMORY.md b/.claude/memory/MEMORY.md index ab0dba3..c279d9c 100644 --- a/.claude/memory/MEMORY.md +++ b/.claude/memory/MEMORY.md @@ -21,6 +21,7 @@ - [GuruRMM user_session command context](reference_gururmm_user_session_context.md) — command API `context=user_session` runs as the logged-on user (WTS); does interactive-only cmds that fail as SYSTEM. Needs an active (admin) user. - [Pluto Build Server](reference_pluto_build_server.md) — Windows build VM: hostname PLUTO = Unraid VM "Claude-Builder" = 172.16.3.36 (all the same box). MSVC + WiX. No `pluto` vault entry. Drive via /rmm (agent enrolls as PLUTO) when SSH key isn't authorized. - [Coord /messages API shape](reference_coord_messages_api_shape.md) — GET /api/coord/messages returns {total,skip,limit,messages[]} NOT a bare array; parse .messages[], strip control chars, read flag may be null. +- [Gitea API credential](reference_gitea_api_credential.md) — Gitea API (PRs/merges) as howard uses services/gitea-howard.sops.yaml password on internal http://172.16.3.20:3000; NOT the gururmm-server SSH password. ## Users - [Howard Enos](user_howard.md) — Mike's brother, technician, full access. Machines: ACG-TECH03L, Howard-Home (authoritative in users.json). diff --git a/.claude/memory/reference_gitea_api_credential.md b/.claude/memory/reference_gitea_api_credential.md new file mode 100644 index 0000000..83648d4 --- /dev/null +++ b/.claude/memory/reference_gitea_api_credential.md @@ -0,0 +1,12 @@ +--- +name: reference_gitea_api_credential +description: Gitea API auth (PRs, merges) uses services/gitea-howard.sops.yaml, NOT the gururmm server SSH password +metadata: + type: reference +--- + +For Gitea API operations as Howard (create/merge PRs, delete branches, etc.), authenticate against the **internal** endpoint `http://172.16.3.20:3000/api/v1` (the public `git.azcomputerguru.com` is Cloudflare-fronted and blocks non-browser API calls) with basic auth `howard:` where the password comes from **`services/gitea-howard.sops.yaml` field `credentials.password`** (Howard's site-admin Gitea account). + +Do NOT use `infrastructure/gururmm-server.sops.yaml credentials.password` for Gitea — that is the `guru` server SSH/sudo password for 172.16.3.30. It was rejected by the Gitea API for a write (PR merge) on 2026-05-31; the gitea-howard credential is the correct one. The two are separate accounts; don't assume they're interchangeable. + +Related: [[reference_gururmm_server]] (the guru SSH/server password), [[reference_coord_messages_api_shape]]. diff --git a/session-logs/2026-05-31-session.md b/session-logs/2026-05-31-session.md index d0afbba..60c1ccd 100644 --- a/session-logs/2026-05-31-session.md +++ b/session-logs/2026-05-31-session.md @@ -196,3 +196,41 @@ Recon via the agent showed the server repo clone (/home/guru/gururmm) was alread - Coord: component gururmm/dashboard -> deployed v0.2.34; lock 7ec5ac68 released; todo 929ce451 (deploy) done; messages to GURU-5070/claude-main. - #dev-alerts: dispatch + completion alerts posted (cmd c49adad8). - Procedure ref: wiki/systems/gururmm-build.md:122-127 (server + dashboard deploy steps). + +--- + +## Update: 20:10 MST — Fixed + deployed clearable Site notes (PR #33) + +### User +- **User:** Howard Enos (howard) +- **Machine:** Howard-Home +- **Role:** tech + +### Session Summary +Fixed and shipped the notes-clear follow-up (todo ab091bae). Root cause: SiteDetail.tsx sent `notes: notes || undefined`, coercing an emptied notes box to undefined, which JSON-omitted the field; the server's `UPDATE sites SET notes = COALESCE($3, notes)` then kept the old value. Coding Agent verified the server already binds `Some("")` correctly (server/src/api/sites.rs:234 passes req.notes verbatim, no empty->None coercion), so the fix is client-only: send "" instead of dropping it. Two call sites changed (inline notes editor ~933 -> `{ notes }`; Edit Site modal ~1215 -> `notes: data.notes ?? ""`); other fields keep `|| undefined` partial-update semantics. Confirmed the third caller (Sites.tsx:387) is unaffected. + +Code Review: APPROVE. Gitea Agent branched fix/clear-site-notes, committed 048306f, opened PR #33, merged (873e9ca), deleted branch; CI bumped to 342d3a1; root submodule pointer bumped (fa57fab) and pushed. Deployed via the gururmm RMM agent on .30 (synced repo to origin/main, npm build + rsync), exit 0, live bundle index-CiQNGkLY.js, dashboard v0.2.35. + +### Key Decisions +- Client-only fix (no Rust change): server COALESCE already clears on Some(""); '' is the correct sentinel since the UI treats empty notes as "no notes." +- Deploy command syncs the repo clone explicitly (git reset --hard origin/main) rather than relying on the push-to-main webhook timing, and was prepared to re-run on "interrupted" since that webhook restarts the same agent used for RMM exec (it completed clean). + +### Configuration Changes +- gururmm: dashboard/src/pages/SiteDetail.tsx (2 call sites). PR #33 merged to main. +- Production deploy on .30: rebuilt dashboard + rsync --delete to /var/www/gururmm/dashboard/. Live index-CiQNGkLY.js. v0.2.35. +- Root repo: submodule pointer bump fa57fab. +- Memory added: reference_gitea_api_credential.md (+ MEMORY.md index line). + +### Credentials & Secrets +- Gitea API auth correction (now in memory): use `services/gitea-howard.sops.yaml` credentials.password as howard on internal http://172.16.3.20:3000 — NOT the gururmm-server SSH password (which the Gitea API rejected for the PR #33 merge). + +### Commands & Outputs +- Deploy cmd f501d83f (exit 0): HEAD synced to 342d3a1, BUILD_OK, built_asset=index-CiQNGkLY.js, DASHBOARD_DEPLOYED_OK. + +### Pending / Incomplete Tasks +- Unblocked next tier (todo 15a5440f): BUG-009/010 isError, BUG-011 remove `any`, BUG-008 metrics internal_err, BUG-015 agent in Programs & Features. (Not started.) + +### Reference Information +- PR #33: merge 873e9ca; main tip 342d3a1; submodule branch commit 048306f. +- Root pointer-bump commit: fa57fab. +- Coord: component gururmm/dashboard -> deployed v0.2.35; lock 427369c8 released; todo ab091bae done.