What's Changed
- Ship reset and system-upgrade.sh as executable by @d4rken in #6
- test(self-update): cover the helper end-to-end + close adjacent gaps by @d4rken in #8
- feat(webconfig): stamp per-field metadata on local config writes by @d4rken in #9
- Bump artifact actions to Node 24 runtime by @d4rken in #14
- Flag stale extra NOPASSWD grants in sudoers parity check by @d4rken in #15
- Check fs-op exit codes in self-update backup and rollback paths by @d4rken in #16
- Add privacy & remote control toggles to webconfig form by @d4rken in #13
- fix: persist upgrade state across self-update helper runs by @d4rken in #18
- fix: harden upgrade-state machine against stale .prev and silent restore failures by @d4rken in #20
- fix: move upgrade flock from update.sh into the self-update helper by @d4rken in #21
- feat(devserver): run the webconfig UI on a developer machine by @d4rken in #22
- feat(webconfig): save settings per group on the dashboard by @d4rken in #23
- fix(webconfig): suffix dev version with commit SHA so the SPA poller detects restart by @d4rken in #24
- fix(webconfig): show running version in dashboard hero meta line by @d4rken in #25
- refactor(webconfig): show msg/s in dashboard hero, version in header by @d4rken in #26
- Log one structured line per state-changing webconfig request by @d4rken in #27
- Reorganise dashboard tiles, location card, management card and action buttons by @d4rken in #28
- Export and import feeder identity from the Identity tile by @d4rken in #29
- feat(webconfig): show claim status above the activity log by @d4rken in #31
- Align Identity, Updates and Power card buttons in a symmetric grid by @d4rken in #30
- fix(config): mirror feed bare-metres altitude contract by @d4rken in #32
- feat(webconfig): system menu, Pi metrics subpage, edit-gated text inputs by @d4rken in #33
- refactor(diagnostics): split pi_health into pi_throttle + system by @d4rken in #34
- feat(webconfig): trim location help text and require 4-decimal lat/lon by @d4rken in #35
- feat(webconfig): client-side validation for MLAT, gain, and 978 UAT inputs by @d4rken in #36
- feat(webconfig): identity import as a dedicated page with file upload by @d4rken in #37
- test: pin client validator parity against bash twins via node by @d4rken in #38
- feat(webconfig): pre-disable save on Wi-Fi and Identity forms by @d4rken in #39
- feat(webconfig): surface per-key server errors on config save by @d4rken in #40
- feat(webconfig): show timestamps in journal log views by @d4rken in #41
- Recognise airplanes-update-orchestrator as a maintenance unit by @d4rken in #42
- Unified Update System endpoints and SPA button by @d4rken in #43
- Grant the webconfig service the video group for vcgencmd by @d4rken in #44
- Remove the on-device webconfig self-update path by @d4rken in #45
- Remove standalone feed-update action by @d4rken in #46
- Collapse the update UI to a single system-update path by @d4rken in #47
Full Changelog: v0.1.0...v0.1.3