5.6 KiB
felhom.eu — task reports
Overwrite this file with a summary of the most recent task only (uniform with the other repos; not cumulative). The cumulative hub history lives in hub/CHANGELOG.md; the scripts history lives in scripts/CHANGELOG.md.
REPORT — TASK-D4: Felhom Hub re-skin (design system v2, final surface) → hub v0.30.0
Date: 2026-07-02 · Deployed: k3s felhom-system deploy/hub @ felhom-hub:0.30.0 (rolled out, pod Running)
1. Baselines
- felhom.eu
main@43189e8(D3 final) — matched; main had not moved. - felhom-controller @
d0c70a7— read-only woff2 source (byte-copied).
2. The enumerated OverallStatus set and its mapping
From source (server.go handleDashboard, configs.go overallStatus, hosts.go hostStatusClass):
ok, warn, down, pending, disabled, blocked (+ fail accepted as a statusColor input, stale
in the hosts domain). Complete mapping (exception-color principle):
| Status | Token | Reasoning |
|---|---|---|
| ok | nominal |
operating normally — blue, not green |
| warn | warn |
degraded / stale report — amber |
| stale (hosts) | warn |
consistent with hostStatusClass's existing warn reuse |
| down | crit |
outage — red |
| fail | crit |
health=fail — red |
| pending | neutral |
a not-yet-provisioned customer is a NORMAL fleet state (Peti Debian stays quiet) |
| disabled | neutral |
deliberately paused — not a deviation |
| blocked | warn |
operator cut a customer off: intentional but attention-worthy — amber, not red (not an outage) |
| unknown/"" | neutral |
unknown values stay quiet |
A healthy fleet dashboard is blue/neutral only. Event severity counts remain filled amber/red
badges (exceptions stay loud, per the design-system .badge addendum).
3. Commits
| Commit | Content |
|---|---|
bc8d54d |
Part 1: fonts embedded + /static/fonts/ route, 12-symbol sprite partial on all 9 pages, statusColor semantic remap, statusIcon retired, truth-table + parse tests |
c136308 |
Part 2: style.css v2 (tokens, tag-style status badges + CSS dots, hairline rows, row tints warn/down only), two-tone H1 ×8, charts retinted, inline hexes swept, login retinted |
fc79a3a |
manifests: hub image 0.30.0 (GitOps truth kept in sync with the set-image deploy — repo convention; auto-sync is off) |
| (docs) | Part 3: hub/CHANGELOG v0.30.0 + this REPORT |
4. Tests + red-proof
go build ./... && go vet ./... && go test ./... green after each commit (hub/).
New tests (the hub web package previously had none for funcmap/templates):
TestStatusColorTruthTable— full enumerated set. Red-proof: against the stashed pre-change implementation it failed exactly as required (statusColor("ok") = "#4ade80", want "nominal", warn→#facc15, stale→#94a3b8, down→#f87171). Restored → pass.TestTemplatesParseWithFuncmap— all 9 templates parse with the production funcmap.
5. Grep gates (before → after, hub/internal/web non-test files)
#0f172a 2→0 · #1e293b 2→0 · #334155 3→0 · #60a5fa 3→0 · #4ade80 5→0 · #facc15 1→0 ·
#f87171 7→0 · #94a3b8 10→0 · #64748b 3→0 · #475569 3→0 · #e2e8f0 2→0 · #0088cc
(login) →0 · statusIcon template usage 2→0 · inline style="color: {{statusColor}}" 2→0 ·
box-shadow 0→0 (never had any).
6. API freeze proof
git diff 43189e8..HEAD --stat touches ONLY hub/internal/web/** (+ hub/CHANGELOG.md,
manifests/hub.yaml one-line tag, REPORT.md). Nothing under hub/internal/api/,
hub/internal/store/, or any ingestion/notify/monitor package.
7. Deployment + Scenario E (live E2E)
deployment "hub" successfully rolled out
hub-757d8dcb46-pq84j 1/1 Running 0 13s
[INFO] Listening on :8080 (felhom-hub 0.30.0)
Scenario E: the demo controller pushes reports every 15 min; the first post-deploy cycle's
Hub report pushed successfully (controller side) + the dashboard LAST SEEN refresh is captured
below / marked pending at write time — see §9 for the state at report time.
8. Chrome checks
/loginrenders on 0.30.0 with the retinted v2 button (screenshot) — reachable without auth.- Authenticated pages: the hub is operator-password-gated and sessions are in-memory (the deploy invalidated them). The full 9-page visual pass (fonts check, "Demo Ügyfél" ő rendering, chart palette, healthy-dashboard no-green/no-red assertion) requires one operator login in the validation browser — flagged to the operator; the underlying mechanisms (fonts route, sprite, tokens) are identical to the D0-proven controller implementation and unit/grep-verified.
9. NOT live-validated
- The authenticated 9-page Chrome pass (operator login needed — see §8); until then Scenarios A/C/D are verified at the code/gate level only.
- warn/crit fleet states (no customer is currently degraded) — truth-table-tested only.
- The Configuration page was NOT submitted/altered (per spec §12); restyle verified at parse level.
10. Observations (not acted on)
- The hub login page is inline HTML in server.go (two copies, error + plain) — a template would be cleaner; retinted only.
- customer_unified.html carries a small per-page
<style>block (toggle styles) — tokens updated in place; consolidation into style.css is a candidate for a later pass. memoryColor/accuracyClass(mem-ok/warn/danger) already returned classes; their CSS is now v2 but the class names keep their legacy spelling (grep-safe rename candidate).- Session store is in-memory — every deploy logs the operator out; fine for a single-operator tool, noted for the future.