diff --git a/CHANGELOG.md b/CHANGELOG.md index d7ff672..9346935 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,26 @@ ## Changelog +### docs — the workflow moved to DooPlex-local execution (2026-07-19) + +**Docs only, no version bump, no code change.** Claude Code now runs on DooPlex +(192.168.0.180, Debian 13, `kisfenyo`) instead of the Windows workstation, working directly in +`/mnt/5_hdd/felhom.eu/git/felhom-controller`. Builds are local commands; felhom-pve is one SSH hop. + +- `CLAUDE.md` — environment/access table rewritten (local DooPlex + `ssh felhom-pve`, no `$SSH` + variable), build/deploy commands de-SSH'd, workspace-root pointer now + `/mnt/5_hdd/felhom.eu/git/CLAUDE.md`. +- **New clean-tree gate** in the build section: `git status --porcelain` empty AND `HEAD` == + `origin/main` before any build — because the CC working tree IS the tree `build.sh` builds from. + An unpushed change does not exist. +- `claude-in-chrome` is **not available** on DooPlex — endpoint-level validation ("invoke the exact + endpoint the UI invokes") is now the stated standard method; strict UI coverage is a manual pass. +- Windows knowledge is preserved, not deleted: a "Legacy: Windows workstation" note in `CLAUDE.md` + and `RUNBOOK-e2e-live-drive.md`, and `docs/vscode-ssh-fix.md` carries a LEGACY banner. + +Historical Windows references in past CHANGELOG/REPORT entries are left untouched — history is +history. Platform-genuine mentions (the `_other.go` dev stubs, `\\FELHOM` shares in Windows +Explorer, the Windows-grep multibyte rationale in the gate scripts) are unchanged. + ### v0.147.3 — 4c follow-up 3: the run does not end with the last app (2026-07-19) Third real run, third thing only a live run could show. The per-app legs finished in ~15 seconds; diff --git a/CLAUDE.md b/CLAUDE.md index 87c4b81..a9f12ef 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -2,7 +2,7 @@ > Read automatically at session start. Stable orientation only — **current state lives in > `CONTEXT.md` and the top of `CHANGELOG.md`**, never here. Cross-repo orientation: workspace-root -> `e:\git\CLAUDE.md`. +> `/mnt/5_hdd/felhom.eu/git/CLAUDE.md`. !!! IMPORTANT !!! - Always update CHANGELOG.md whenever you modified the code, and pushed to git!! @@ -106,23 +106,27 @@ Per-package helpers/seams/traps: **`REUSE.md`** (maintained same-commit as helpe Exercise the SERVER-SIDE PIPELINE a real user triggers, end-to-end (connect → enroll → deploy). The forbidden shortcut is BYPASSING that pipeline (the F9 episode: raw agent guest-attach + hand-set -state). Invoking the exact endpoint the UI invokes is an acceptable proxy when a browser tool isn't -available — no server logic is skipped, only rendering; say which method was used. For strict -end-to-end UI coverage use claude-in-chrome (attaches only to sessions started AFTER the bridge -connected) or a manual click-through. +state). **`claude-in-chrome` is NOT available in the DooPlex environment** — the standard method is +endpoint-level: invoke the exact endpoint the UI invokes (no server logic is skipped, only +rendering) and say which method was used. Strict end-to-end UI coverage is a manual click-through. ## Environment & access -Claude Code runs on Windows 11; repos in `E:\git\` (`/e/git/` in Git Bash). All repos hosted at -`gitea.dooplex.hu/admin/`. **SSH binary MUST be** `SSH=/c/Windows/System32/OpenSSH/ssh.exe` -(Git Bash's ssh lacks the Windows agent — fails silently). +Claude Code runs **on DooPlex (192.168.0.180, Debian 13, user `kisfenyo`)**; repos in +`/mnt/5_hdd/felhom.eu/git/`, build dirs in `/mnt/5_hdd/felhom.eu/build/`. All repos hosted at +`gitea.dooplex.hu/admin/`. Builds are local commands; felhom-pve is one SSH hop. | Host | Access | Role | |------|--------|------| -| Build server (k3s) | `$SSH kisfenyo@192.168.0.180` | build + push images (`/mnt/5_hdd/felhom.eu/build/felhom-controller` — all felhom dirs moved off the SSD to `/mnt/5_hdd/felhom.eu/` 2026-07-18) | -| Demo Proxmox host `demo-felhom` | `$SSH felhom-pve` (root@192.168.0.162) | `pct` into guests; live validation | -| Demo guest 9201 | `pct exec 9201 -- ...` on felhom-pve | the live demo controller (golden/bootstrap-managed) | -| felhotest (legacy) | `$SSH -p 33022 kisfenyo@router.abonet.hu` | OLD /opt/docker compose mechanism | +| **DooPlex (this host)** | local — `/mnt/5_hdd/felhom.eu/{git,build}/` | build + push images, `sudo kubectl` | +| Demo Proxmox host `demo-felhom` | `ssh felhom-pve` (root@192.168.0.162) | `pct` into guests; live validation | +| Demo guest 9201 | `ssh felhom-pve "pct exec 9201 -- ..."` | the live demo controller (golden/bootstrap-managed) | +| felhotest (legacy) | `ssh -p 33022 kisfenyo@router.abonet.hu` | OLD /opt/docker compose mechanism | + +> **Legacy: Windows workstation.** Until 2026-07-19 CC ran on Windows 11 with repos in `E:\git\`, +> and every remote command needed `SSH=/c/Windows/System32/OpenSSH/ssh.exe` (Git Bash's ssh lacks +> the Windows agent and fails silently — see `docs/vscode-ssh-fix.md`), plus `MSYS_NO_PATHCONV=1` +> for `pct exec`. Retained in case that environment is revived. External access via Cloudflare Tunnel → Traefik; Pi-hole forwards `*.demo-felhom.eu` → .162 locally. @@ -131,12 +135,18 @@ External access via Cloudflare Tunnel → Traefik; Pi-hole forwards `*.demo-felh **Full runbook: use the `felhom-build-deploy` skill.** Summary (guest 9201 is bootstrap-managed — **no compose file**; `felhom-controller-bootstrap.service` runs the tag in `/etc/felhom-controller-image`): +> **Clean-tree gate before any build:** `git status --porcelain` must be empty and +> `git rev-parse HEAD` must equal `git rev-parse origin/main` in the repo being built. An unpushed +> change does not exist — never build a dirty or unpushed tree. The `git pull` in the build step +> stays (it is a no-op when you work in this tree, and load-bearing if anything was pushed from +> elsewhere). + | Step | Command | |------|---------| -| 1. Commit + push | `git add -A && git commit -m "..." && git push` | -| 2. Build + push image | `$SSH kisfenyo@192.168.0.180 "cd /mnt/5_hdd/felhom.eu/build/felhom-controller && git -C /mnt/5_hdd/felhom.eu/git/felhom-controller pull && ./build.sh --push"` (build.sh does NOT pull — the explicit pull is load-bearing) | -| 3. Deploy (9201) | `$SSH felhom-pve "pct exec 9201 -- bash -c 'docker pull gitea.dooplex.hu/admin/felhom-controller: && echo gitea.dooplex.hu/admin/felhom-controller: > /etc/felhom-controller-image && systemctl restart felhom-controller-bootstrap.service'"` | -| 4. Verify | `$SSH felhom-pve "pct exec 9201 -- docker ps --filter name=felhom-controller --format '{{.Image}} {{.Status}}'"` + container logs | +| 1. Commit + push | `git add && git commit -m "..." && git push` | +| 2. Build + push image | `cd /mnt/5_hdd/felhom.eu/build/felhom-controller && git -C /mnt/5_hdd/felhom.eu/git/felhom-controller pull && ./build.sh --push` (build.sh does NOT pull — the explicit pull is load-bearing) | +| 3. Deploy (9201) | `ssh felhom-pve "pct exec 9201 -- bash -c 'docker pull gitea.dooplex.hu/admin/felhom-controller: && echo gitea.dooplex.hu/admin/felhom-controller: > /etc/felhom-controller-image && systemctl restart felhom-controller-bootstrap.service'"` | +| 4. Verify | `ssh felhom-pve "pct exec 9201 -- docker ps --filter name=felhom-controller --format '{{.Image}} {{.Status}}'"` + container logs | Hub build/deploy lives in `felhom.eu` (GitOps) — see that repo's CLAUDE.md / the skill. Catalog changes (`app-catalog-felhom.eu`): commit+push; controller sync picks them up ≤15 min or via the diff --git a/RUNBOOK-e2e-live-drive.md b/RUNBOOK-e2e-live-drive.md index 07fa647..d187744 100644 --- a/RUNBOOK-e2e-live-drive.md +++ b/RUNBOOK-e2e-live-drive.md @@ -14,7 +14,9 @@ destructive section (7) is last and gated. bootstrap-managed. Public dashboard/API: **https://felhom.demo-felhom.eu** (no dashboard password → the API is open; drive it via the PUBLIC URL, not the container IP). - **Versions at writing:** controller **v0.60.0**, agent **v0.30.0**, hub v0.11.0. -- `SSH=/c/Windows/System32/OpenSSH/ssh.exe`; host root via SSH alias `felhom-pve`; `export MSYS_NO_PATHCONV=1` for `pct exec`. +- Run from DooPlex (192.168.0.180); host root via SSH alias `felhom-pve` — plain `ssh felhom-pve`. + (Legacy Windows workstation: needed `SSH=/c/Windows/System32/OpenSSH/ssh.exe` and + `export MSYS_NO_PATHCONV=1` for `pct exec`.) - **Findings log:** record every observation (✓/✗ + notes on UX friction, latency, confusing labels, error handling) in a new `REPORT-e2e-live-drive-.md`. Each step says what "good" looks like and what to watch for. diff --git a/docs/vscode-ssh-fix.md b/docs/vscode-ssh-fix.md index 74d901e..36fd812 100644 --- a/docs/vscode-ssh-fix.md +++ b/docs/vscode-ssh-fix.md @@ -1,5 +1,9 @@ # VSCode / Claude Code SSH Fix Guide +> **LEGACY — Windows workstation only.** As of 2026-07-19 Claude Code runs natively on DooPlex +> (192.168.0.180, Debian 13), where `ssh` is the system binary and none of this applies. This +> document is retained so the Windows environment can be revived if ever needed. + ## The Problem Claude Code runs inside VSCode's integrated terminal, which uses Git Bash on Windows.