docs: CHANGELOG v0.96.0 + REPORT (TASK-D0) + CONTEXT + README design-system section

This commit is contained in:
2026-07-02 15:04:10 +02:00
parent 4906524c11
commit 52e97b15ca
4 changed files with 194 additions and 49 deletions
+44
View File
@@ -1,5 +1,49 @@
## Changelog
### v0.96.0 — TASK-D0: design system v2 re-skin (appearance only) (2026-07-02)
Full customer-UI re-skin to the approved Felhom design system v2 — navy token palette, exception-based
status color, vendored fonts/icons, flat metadata. **Appearance only:** no route/handler/IA changes;
every page keeps its URL, sections, forms and behavior. Canonical reference:
`felhom.eu/documentation/design/design-system.md`. Four commits (b073cc4, 5dc277f, f100cef, 7df061c)
+ a bug-fix (4906524).
- **Vendored assets (`internal/web/static/fonts/`, `templates/icons.html`, `embed.go`, `server.go`):**
Plus Jakarta Sans + JetBrains Mono as variable woff2 (latin + latin-ext — ő/ű), embedded and served
from `/static/fonts/` (font/woff2, immutable cache); Google Fonts `@import` removed (CDN silently
broke offline nodes). Vendored 30-icon Lucide sprite included at top of `<body>`; all emoji replaced
by sprite icons or plain text (templates AND JS-built strings).
- **Setup CSS fix (`internal/setup/handlers.go`):** `handleCSS` served a dataDir-derived filesystem
path that never exists in the container — production setup mode silently fell back to `minimalCSS`.
Now serves the embedded `web.StyleCSS()` (new accessor); minimalCSS only if the embedded read errors
(logged). `minimalCSS` retokened to v2.
- **`templates/style.css` (rewritten in place):** v2 `:root` tokens; single 2px radius; every
`box-shadow` + the bg grid overlay deleted; new components — `.meter` (3px hairline track, blue
nominal fill, neutral 70/85 ticks, warn/crit `.meter-flag` „Fogyóban a hely" / „Kritikusan kevés
hely"), `.tag` (square state chip + dot, pulse on progress, reduced-motion respected), `.metarow`,
`.panel`/`.list`/`.section-h`, boxless `.stats`, buttons (danger = crit outline until confirm),
`:focus-visible` outlines.
- **funcmap (`internal/web/funcmap.go`):** `stateColor``run/progress/warn/neutral/off`
(**stopped/exited is neutral, NOT red** — operator-approved exception-color change; restarting =
warn); `usageColor`/`tempColor``nominal/warn/crit` (thresholds unchanged); `stateLabel`
Hungarian copy untouched (byte-identity guarded by test). New `timeAgoStr` (see fix below).
- **All 19 web templates + setup templates:** bars → meters (template + JS-generated markup),
badges/pills → tags, informational pills → metarows with icons, legacy `var(--*)` names in inline
styles/JS renamed to v2 tokens, monitoring Chart.js palette (cpu `#2EA8F5`, memory `#8E7CE8`, temp
`#E0A93E`, load `#5EC4B6`; v2 tooltip/grid/tick literals), deploy 3-step progress → sprite icons,
catchall page (standalone) fully retokened with inline SVGs, login two-tone H1.
- **fix(backups) 4906524:** `OffboxTarget.LastRun` is an RFC3339 *string*; backups.html passed it to
`timeAgo` (expects `time.Time`) → GET /backups 500'd on any node where an off-box backup had ever
run. Pre-existing since v0.93.0, exposed by the D0 click-through; fixed with `timeAgoStr`.
- **Tests (+7):** §8 truth tables for stateColor/usageColor/tempColor + stateLabel guard (red-proven
vs the old funcmap), font route + `StyleCSS()` accessor, setup embedded-CSS (Scenario E, red-proven
vs the old handler). Grep gate: 34 banned patterns (old hexes, 999px, box-shadow, CDN import,
legacy class names, emoji) at **zero** in `internal/{web,setup}` (baseline: 143 hits).
- Live-validated on guest 9201 via claude-in-chrome: full click-through, no Google Fonts requests,
`document.fonts.check` true, ő/ű render in PJS latin-ext, dashboard Scenario-A assertions
(0 green fills, 0 shadows, 0 radii >2px) DOM-verified. NOT live-validated: setup wizard rendering
(unit-tested only), warn/crit meter states on real hardware (demo node healthy; unit-tested).
### v0.95.0 — enrollment wizards use the raw-device scan `/disks/candidates` (Impl-2b) (2026-07-01)
Final drive-enrollment piece: both enrollment wizards now source candidates from the agent's Impl-2a