football2801 7c7e4745cf fix(provisioning): captive portal opens reliably on iOS lock-screen scans
The previous handler answered Apple/Android/Windows CNA probes with
HTTP 302 redirects to "/". That works in a desktop browser, but iOS —
particularly when joining via the lock-screen camera quick-scan path —
sometimes treats the redirect as "internet works" and never raises the
captive banner. The user has to remember the manual fallback URL on the
e-ink footer to recover.

Switch every probe URL to serve the portal HTML directly with 200 OK.
A 200 response whose body is not Apple's magic Success page is the
canonical "this is a captive network" signal; banner-fire becomes
deterministic on the first probe.

While here:
- Register HTTP handlers BEFORE softAP comes up so the very first probe
  from a fast-joining device lands on a ready server, not connection-
  refused.
- Drop the unconditional 500 ms post-softAP delay; softAPIP is valid
  immediately and the gap was just a window for races.
- Add /library/test/success.html (iOS legacy) and /connecttest.txt
  (Windows 10+) to the explicit handler list.
- Delete handle_captive (was the 302 redirect path).

Locked-phone caveat: iOS by design will not auto-open the captive
portal UI while the phone is locked — the best we can do is make the
banner notification fire reliably so it's waiting on unlock. This
change accomplishes that.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 10:40:01 -04:00
2026-05-06 13:30:08 -04:00
S
Description
pictureFrame ESP32 firmware — PlatformIO / Arduino
6.1 MiB
2026-05-15 17:57:19 +00:00
Languages
C++ 61.1%
Python 31.4%
C 7.5%