v0.57.0: stable host-storage list + per-app Tier-2 config panel

Part A of the UI-fixes/storage-spike spec.

A1: enrichHostStorageTargets sorts /api/host-metrics storage_targets
server-side and attaches friendly Hungarian labels + purpose, fixing the
#host-storage-bars reorder-on-poll bug. Display labels only — PVE storage
ids are never renamed.

A2: new GET/POST /stacks/{name}/backup Tier-2 config panel; the "2. mentés"
Beállítás button is repointed there from the dead-end deploy page. Customer
can pin a target drive or disable Tier 2; preference is preserved across the
runner's status writes. Always visible (single-SSD + non-HDD apps included).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-13 14:23:34 +02:00
parent cae2bfbe5b
commit 13c6a0929a
13 changed files with 651 additions and 16 deletions
+34
View File
@@ -1,5 +1,39 @@
## Changelog
### v0.57.0 — UI fixes: stable host-storage list + per-app Tier-2 config panel (2026-06-13)
Part A of the UI-fixes/storage-spike spec (Part B is a build-nothing findings report).
- **A1 — host storage list no longer reorders (item 2):** the monitoring page's `#host-storage-bars`
list (the client-side one filled from the agent's PVE-storage list — `local`, `local-lvm`,
`felhom-pbs`, `felhom-usb` with thin-pool % + temperature) reordered on every 8 s poll because the
agent enumerates `pvesm` in a non-deterministic order and the list never passed through a Go sort.
Now `enrichHostStorageTargets` (`agent_host_metrics_handler.go`) sorts the `/api/host-metrics`
response server-side (user-data → system+apps → backup → other; alphabetical by id within a tier)
and attaches a **friendly Hungarian label + one-line purpose** per entry (e.g. `local-lvm`
"Belső SSD rendszer és alkalmazások"). The raw PVE id is kept and shown muted — **display labels
only; PVE storage ids are never renamed** (vzdump/PBS configs reference them by name). The
monitoring JS renders the friendly label + the purpose sub-line. (Note: this is the JS-driven list,
NOT the server-rendered user-data `buildStorageBars` list that v0.56.0's 4C already sorted.)
- **A2 — per-app Tier-2 config panel (item 4):** the "2. mentés" row's **Beállítás** button used to
link to the app's deploy page, which has no backup-location setting (a dead end). New route
`GET/POST /stacks/{name}/backup` (`tier2_config_handler.go` + `tier2_config.html`) is the real
surface: it shows the current/effective off-drive target, whether it's the size-limited internal
SSD, the last-run status, and lets the customer **pin a different registered drive** or **turn
Tier 2 off**. The control is **always visible** — even when only the internal SSD qualifies (shows
"automatikus: belső SSD — csak DB/konfiguráció" + the rootfs-headroom note) and for non-HDD apps
(shows honest "already in the PBS whole-guest snapshot; the off-drive copy is supplementary"
context). The button is repointed on every "2. mentés" branch (incl. the unconfigured + disabled
states).
- Persistence: two preference fields on `settings.CrossDriveBackup``UserDisabled` and
`PreferredTarget` — set via `SetTier2Preference` and **preserved across the runner's status
writes** (`withTier2Prefs`). `selectTier2Target` now honors a valid pinned target (off-disk,
registered) before the auto-pick; an invalid pin silently falls back to auto. `RunTier2` skips a
customer-disabled app. Saving with Tier 2 on for an HDD app triggers an immediate run so the
result shows on return.
- Tests: `enrichHostStorageTargets` order/labels/determinism; `selectTier2Target` honors/falls-back
on a pin; status writes preserve the preference.
### v0.56.0 — Phase 4: FileBrowser scoping + deploy DB-on-SSD note + monitoring storage descriptions (2026-06-13)
Polish layer closing the slice.