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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user