Implement story 1.3: WiFi hotspot and captive portal form

Implement wifi.py (start_ap/stop_ap/kill_wifi with subprocess and ProvisioningError),
portal.py (Flask captive portal with Android/iOS/Windows probe redirects and 404 catch-all),
updated provision.py provisioning loop, and full test suite (38 passing).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Matt Edholm
2026-04-22 22:41:05 -04:00
parent 76c2d66ed1
commit 563b0d4665
7 changed files with 253 additions and 39 deletions
@@ -46,7 +46,7 @@ development_status:
epic-1: in-progress
1-1-project-scaffold-and-verified-entry-points: done
1-2-configuration-read-write-wipe: done
1-3-wifi-hotspot-and-captive-portal-form: ready-for-dev
1-3-wifi-hotspot-and-captive-portal-form: review
1-4-location-resolution-icao-and-address: backlog
1-5-provisioning-execution-tile-download-cache-validation-and-wifi-kill: backlog
epic-1-retrospective: optional