You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Bench-tested end-to-end on a fresh-NVS ESP32-C3: connect to AP, save
home Wi-Fi creds, success modal shows IP + mDNS, AP drops within 8 s,
device reachable on home network. All three reported issues fixed.
Firmware (netmgr.c):
- Replace vTaskDelay() inside Wi-Fi event handler with esp_timer-based
STA retry. Calling vTaskDelay() inside the IDF event loop blocks
every subsequent Wi-Fi event for the duration; under reconnect storms
the stack falls behind and you see ghost states. Retry now runs on
the esp_timer task.
- Switch STA scan_method from WIFI_FAST_SCAN to WIFI_ALL_CHANNEL_SCAN
with WIFI_CONNECT_AP_BY_SIGNAL. FAST_SCAN relies on a cached
BSSID/channel that doesn't exist on first connect, so first-attempt
joins were silently failing and only succeeding on the second try.
ALL_CHANNEL takes ~3 s extra but works reliably first time.
- Add 8 s AP teardown grace timer. After STA gets IP, AP stays up
long enough for a captive-portal browser to poll /api/wifi and read
the new STA IP / hostname before the AP disappears underneath it.
- Drop AP max_connection from 6 to 4 (single-device — 6 was sized for
the v6.0 mesh that's now gone).
- Clean stale "peer-mesh devices need a stable channel" comments.
Web UI (screens.tsx + styles.css):
- New JoinModal component with three phases: connecting (spinner),
success (both URLs + Copy buttons + auto-redirect instructions),
failed (error + try-again).
- Frontend polls /api/wifi every 1.5 s for up to 25 s after save;
flips to success state as soon as sta_connected + IP are present;
stops polling at success so AP teardown doesn't surface as errors.
- Auto-scroll join card into view + auto-focus password field on tap.
Enter key submits.
- copyToClipboard helper with Clipboard API + execCommand fallback —
modern browsers refuse navigator.clipboard on non-secure origins
(we serve HTTP from a LAN IP), so the legacy textarea-execCommand
path is required.
- Reset Wi-Fi shows toast optimistically before firing the request,
since the request always fails from the browser's side as STA drops.
- Mobile layout: drop the 2-column hw-grid that overlapped on phones,
full-width Hostname card.
- Remove user-facing AP-mode picker. Behaviour is automatic (AP up
while STA offline, off while STA connected). Keeps the firmware
netmgr_ap_mode_t enum for future use without exposing it.
- @Keyframes spinner added to styles.css.
Build:
- ambisense.bin 0x11c6a0 (~1.13 MB), 19% partition free
- UI bundle 90.3 KB raw, 26.8 KB gzipped
0 commit comments