docs: v0.62.0 CHANGELOG (M18 perf + M19 correctness) + README AppBackup note

This commit is contained in:
2026-06-14 14:18:48 +02:00
parent f8afe5c055
commit 246213bd11
2 changed files with 26 additions and 1 deletions
+25
View File
@@ -1,5 +1,30 @@
## Changelog
### v0.62.0 — M18 + M19 backlog fixes (2026-06-14)
Two verified-LIVE backlog bugs (preserved fix-plans in `felhom.eu/documentation/backlog/`), implemented
trunk-based on `main`, each with a regression test that fails on the pre-fix code. Built, deployed to demo
guest 9201, and both verified live.
- **M19 — `deriveStackName` DB-container misattribution (correctness)** — commit `6bab68b`.
`deriveStackName` pure-suffix-stripped on `-` (postgres/db/mariadb/mysql/database/redis/cache), so a
stack whose slug *ends* in a role token (e.g. `my-cache`) was misattributed (stripped to `my`), filing
its DB dump under the wrong/nonexistent stack. Now threads the set of deployed stack names
(`m.knownStackNames()``ListDeployedStacks`) into `DiscoverDatabases` and cross-references: use the
suffix-strip candidate if it's a known stack, else the container name if it IS a known stack (don't
strip), else the longest known stack that is a `-`/`_`-bounded prefix (handles `<stack>_postgres`,
`<stack>-1`), else the legacy strip. `nil`/empty known = legacy behaviour (appexport passes nil).
**Live:** romm-db → `romm-mariadb.sql` (correct). Table test incl. the `my-cache` case (fails pre-fix).
- **M18 — DB-dump validation re-run every cycle (performance)** — commit `f8afe5c`.
`ListDumpFiles` ran `ValidateDump` (line-by-line scan) for every dump on every ~5-min `RefreshCache`
cycle — wasted I/O+CPU on large customer dumps. `ListDumpFiles` now takes an optional
`cached(name,size,mod)` lookup; on a size+modtime match it reuses the prior result and skips
`ValidateDump`. `settings.DBValidationCache` gains `Size`+`ModTime`; `listAllDumpFiles` builds the
lookup from the persisted cache and writes back only fresh validations (cache miss) — so an unchanged
dump triggers neither a re-validation nor a `settings.json` write each cycle. `nil` cached = legacy
validate-always (back-compat). **Live:** the cache now persists `size`+`mod_time`. Tests: cache-hit
skips validate (sentinel), cache-miss validates, nil validates.
### v0.61.0 — live-drive Batch 1 (+F17) fixes (2026-06-14)
Controller-side fixes triaged in `LIVE-DRIVE-FIXSPEC-2026-06-14.md` from the 2026-06-14 live-drive