From d7483a522f5d51d7f5f30029b60a3820af9907ab Mon Sep 17 00:00:00 2001 From: kisfenyo Date: Mon, 16 Feb 2026 17:29:11 +0100 Subject: [PATCH] Update CONTEXT.md and CLAUDE.md for v0.7.0 Co-Authored-By: Claude Opus 4.6 --- CLAUDE.md | 1 + CONTEXT.md | 36 ++++++++++++++++++++++++++++++++---- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 444efe1..c4c9fba 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -34,6 +34,7 @@ E:\git\deploy-felhom-compose\ (or /e/git/deploy-felhom-compose/ in Git Bash) │ ├── cmd/controller/ # Entry point (main.go) │ ├── internal/ │ │ ├── config/ # YAML config loading +│ │ ├── settings/ # settings.json persistence (password hash, DB cache) │ │ ├── stacks/ # Docker Compose operations, deploy flow │ │ ├── sync/ # Git sync — periodic pull of app catalog repo │ │ ├── api/ # REST API endpoints diff --git a/CONTEXT.md b/CONTEXT.md index 5f5eeeb..4c867b7 100644 --- a/CONTEXT.md +++ b/CONTEXT.md @@ -7,7 +7,7 @@ > > Ask Claude Code: "Please update CONTEXT.md with what we did today" -Last updated: 2026-02-16 (session 21) +Last updated: 2026-02-16 (session 22) --- @@ -22,16 +22,44 @@ Last updated: 2026-02-16 (session 21) ## Current project state ### felhom-controller (this repo) -- **Version:** v0.6.3 +- **Version:** v0.7.0 - **Phase 1:** ✅ COMPLETE — Stack Manager + Deploy Flow - **Phase 2:** ✅ COMPLETE — Monitoring & Health (scheduler, CPU/temp, healthchecks.io pings) - **Phase 3:** ✅ COMPLETE — Backups (DB dumps, restic integration, manual trigger, **dedicated backup page**) - **Phase 4:** ✅ COMPLETE — Monitoring Page with Metrics Store (SQLite, Chart.js, system + container metrics) +- **Phase 5:** ✅ COMPLETE — Authentication, Persistence & Settings Page (settings.json, password change, session management) - **First app deployed:** Paperless-ngx on demo-felhom.eu (2026-02-13) - **Running on:** demo-felhom (N100 mini PC) at 192.168.0.162:8080 -- **All Phase 1-4 features working:** deploy, start/stop/restart/update, logs, health-aware states, auth, monitoring, backups, backup detail page, system monitoring page +- **All Phase 1-5 features working:** deploy, start/stop/restart/update, logs, health-aware states, auth, monitoring, backups, backup detail page, system monitoring page, settings page -### What was just completed (2026-02-16 session 21) +### What was just completed (2026-02-16 session 22) +- **v0.7.0 — Phase 1: Authentication, Persistence & Settings Page:** + - **New `internal/settings/settings.go`:** Shared persistence layer via `settings.json` in the data directory. Atomic writes (tmp + rename), thread-safe with `sync.RWMutex`. Stores password hash overrides and DB validation cache. Graceful handling if file doesn't exist. + - **Auth improvements:** + - Password resolution priority: `settings.json` → `controller.yaml` → none (open dashboard) + - Startup logs which source is active: `Auth: using password from settings.json/controller.yaml/no password configured` + - Session duration extended to 7 days (was 24h) + - `?next=` redirect after session expiry — returns user to the page they were on + - Flash messages on login page (green info box, used after password change) + - Conditional logout link — hidden when auth is disabled (no password configured) + - `invalidateAllSessions()` method for password change flow + - **New Settings page (`/settings`):** + - "Rendszer konfiguráció" section: read-only display of controller.yaml values (customer ID/name/domain, git repo/sync interval, backup enabled/schedule, monitoring, healthchecks URL, hub status, controller version) + - "Jelszó módosítás" section: form with current password, new password, confirm — validates min 8 chars, match check, bcrypt comparison + - Password saved to `settings.json`, all sessions invalidated, redirect to login with flash message + - Only shown if auth is enabled; otherwise shows info message to contact operator + - **Sidebar update:** + - "Beállítások" menu item with ⚙ icon pinned to bottom (above version/logout) + - Version and logout link separated from nav links + - Logout link conditionally shown only when auth is enabled + - **DB validation persistence:** + - After each successful dump, validation results saved to `settings.json` (`db_validations` map keyed by filename) + - Cached data survives container restarts + - `DBValidationCache` struct with `validated_at`, `table_count`, `has_header`, `error` + - **10 files changed** (3 new: settings.go, settings.html; 7 modified: main.go, backup.go, auth.go, handlers.go, server.go, layout.html, login.html, style.css) + - **Deployed:** Controller v0.7.0 to demo-felhom.eu, verified healthy + +### What was previously completed (2026-02-16 session 21) - **v0.6.3 — Bug fixes from v0.6.2 code scan (4 minor fixes):** - **Bug 1:** `--hdd-path` in `docker-setup.sh` now uses `require_arg` validation like all other flags. Previously, `--hdd-path` as the last argument without a value would crash with a cryptic bash error under `set -u` instead of a friendly message. - **Bug 2:** `stackAction()` in `layout.html` now receives `event` as an explicit parameter instead of relying on the deprecated implicit `window.event`. All 10 onclick call sites in `dashboard.html` and `stacks.html` updated to pass `event` as first argument.