docs: CHANGELOG + README for v0.70.0 (config-apply self-restart, restart button, geo report push, always-report geo, autocomplete fix)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-16 13:03:08 +02:00
parent 09d75c1e2e
commit c514c0042b
2 changed files with 41 additions and 1 deletions
+28
View File
@@ -1,5 +1,33 @@
## Changelog
### v0.70.0 — config-apply self-restart + geo-restriction UX fixes (2026-06-16)
Fixes found during live geo testing (rotating the Cloudflare API token).
- **Config-apply now self-restarts (core fix).** `POST /api/config/apply` previously wrote the new
`controller.yaml` but logged "restart needed" and left stale in-process singletons — the Cloudflare
client is built once at startup, so a rotated CF token kept 403'ing until a manual LXC restart. Now:
if the pushed config is byte-identical to the current one, do nothing (no flap on idempotent
re-push); otherwise write, respond 200 (flushed), then **gracefully self-restart** (`os.Exit(0)` after
~500ms; the container is `restart: unless-stopped`, so it comes back with fresh config). The exit is
behind an injectable `Restarter` seam (`Router.restart`/`SetRestarter`) for unit testing. Removed the
stale "restart needed" wording and the dead `OnConfigApplied` hook (Phase-1-retired infra-backup push).
- **Manual "Vezérlő újraindítása" button** on the settings page → `POST /api/selfrestart` (auth + CSRF
via the `/api/` mount) using the same helper. Confirm dialog → POST → polls `GET /` every 2s until the
controller answers → reloads. Self-serve restart without rebooting the whole guest.
- **Immediate hub report push on geo change.** A successful geo settings save and a successful manual
geo sync now fire an out-of-band, non-blocking report push (`Router.reportPushNow`), so the hub
reflects the new geo state / clears a stale `last_sync_error` within seconds instead of after the
next ~15-min cycle. (Pattern can extend to other settings later; scoped to geo handlers for now.)
- **Always report `geo_restriction`.** `BuildReport` now always populates the field (Enabled=false,
empty countries when never configured) instead of omitting it when nil — so the hub always renders
the geo section ("Inaktív" when off) rather than hiding it.
- **Country autocomplete fixed.** Root cause (diagnosed live): `filterCountries` populated the list
correctly but revealed it with `style.display = ''`; the `.geo-country-list` CSS default is
`display:none`, so clearing the inline style kept the populated dropdown hidden — no console error,
just an invisible list. Latent since the geo feature's first commit (not the hypothesised JS throw).
Fix: reveal with `display = 'block'`.
### v0.69.0 — remove dead infra-backup stubs + the unused restic-password report field (2026-06-16)
Controller half of the Phase-1 Infra Backup retirement (hub v0.12.0; see