v0.94.0: serialize per-disk SMART into the /disks payload

Additive, backward-compatible (MinAgent floor unchanged). The SMART is already
computed on the request path (storage.Observe -> enrich); this copies the target's
Smart into localapi.DiskInfo (pointer, omitempty) only when Health != "", so an
unread/absent summary stays omitted and the controller renders "Nincs adat".
No new smartctl load, endpoint, or sudoers change.

Test TestDisks_SmartSerialized + red-proof (drop the copy -> fails).
This commit is contained in:
2026-07-24 21:11:13 +02:00
parent c230258542
commit 21fee69154
4 changed files with 101 additions and 0 deletions
+17
View File
@@ -1,3 +1,20 @@
## v0.94.0 — serialize per-disk SMART into the /disks payload (2026-07-24)
Additive, backward-compatible; **MinAgent floor unchanged** (the controller feature-detects by payload
presence). No new smartctl load, no new endpoint, no sudoers change — the SMART is already computed on
the request path (`storage.Observe``enrich` runs `smartctl -a -j` for dir-backed targets); this
release simply copies the target's already-populated `Smart` into `localapi.DiskInfo`.
- `DiskInfo` gains `Smart *hub.SmartSummary \`json:"smart,omitempty"\``. In `handleDisks` the summary is
copied **only when `t.Smart.Health != ""`** — a zero-value summary (SMART never read: no smartctl
device, USB bridge, or a failed read) stays omitted, so the controller sees *absent* and renders
"Nincs adat" rather than a misleading UNKNOWN. The union-in drives (driveTargets.Known path, no
enrichment) carry no SMART and are omitted by the same guard.
- The controller (v0.169.0) consumes this to render a "Lemezek állapota" card + a 6-hourly
degradation notification. Old controllers ignore the extra field.
- Test `TestDisks_SmartSerialized` (payload includes SATA counters + temperature for a fixture target;
absent-SMART target omits the field); red-proof: drop the copy → the serialized-Smart assertion fails.
## v0.93.0 — a recovery code can no longer contain a hyphenated word (2026-07-21)
> **SHIPPED 2026-07-22:** built + published (sha256 `a68b2ff73200622e…`), Day-0-manifest-vouched,