Skip to content

v0.3.1: optional uplink + UI polish - #3

Merged
danielbrownjr merged 32 commits into
mainfrom
feat/v0.3-uplink
Oct 5, 2026
Merged

danielbrownjr merged 32 commits into
mainfrom
feat/v0.3-uplink

Conversation

@danielbrownjr

@danielbrownjr danielbrownjr commented Oct 5, 2026 •

Copy link
Copy Markdown
Owner

v0.3.0 release-candidate slice

Adds an optional infrastructure Wi-Fi uplink for remote read-only monitoring while BandiC5 continues normal dual-band scouting.

Uplink

  • one saved SSID/password in NVS
  • normal operation remains STA + RF scanning
  • first connect attempt happens after the initial RF scan
  • reconnect attempts are throttled between scans
  • active scans explicitly use ESP-IDF's home-channel dwell between scan channels
  • DHCP hostname: bandic5
  • mDNS: http://bandic5.local/ when supported
  • numeric DHCP IP is shown directly on the BandiC5 dashboard while connected
  • green NET badge indicates active uplink
  • loss of uplink is non-fatal to RF scanning and TF logging

Read-only monitoring

  • live browser dashboard refreshed every 2 seconds
  • /status.json machine-readable endpoint
  • version, uplink/IP, band counts, strongest AP, RSSI/channel, open/hidden/total, scan generation, TF state, uptime

Configuration

The existing physical BOOT gesture remains the maintenance path:

  • join BandiC5-Update
  • updater page now includes an Uplink Wi-Fi form
  • SSID/password persist in NVS
  • blank SSID clears uplink configuration
  • save reboots into scout mode
  • credentials are not written to TF logs or source control

Maintenance boundary

BandiC5 does not run the maintenance SoftAP and infrastructure STA simultaneously. Entering update mode stops the normal uplink/status server before repurposing Wi-Fi.

Network caveat

Some phone hotspots isolate tethered clients from the hotspot host or from one another. A normal LAN/travel router without client isolation is the most predictable monitoring setup.

Physical validation target

  1. OTA this exact build onto the physically validated v0.2.5 device.
  2. Confirm scout + TF behavior with no uplink configured.
  3. Enter maintenance mode and save hotspot/router credentials.
  4. Reboot and confirm green NET.
  5. Confirm the dashboard subtitle shows the assigned IP.
  6. Open that IP from another client on the same LAN.
  7. Verify the live page updates through repeated scans.
  8. Verify bandic5.local where mDNS is supported.
  9. Turn the uplink AP off and confirm scouting continues.
  10. Restore the AP and confirm automatic reconnection.
  11. Re-enter update mode and confirm OTA still works.

CI budget

Use the exact current head through physical validation unless a defect is found.

UI polish after first physical uplink test

Physical browser validation confirmed uplink + mDNS + live status were working. Two presentation issues were observed and fixed before promotion:

  • replace the wide NET text badge with a compact drawn globe indicator
    • green = connected
    • gray = configured/disconnected
    • hidden = uplink disabled
  • explicitly declare UTF-8 in the status and maintenance pages and emit middle dots via JavaScript \u00b7 escapes so mobile browsers do not render ·

Visible build identity: v0.3.1 UPLINK UI

Physical validation complete

  • OTA to v0.3.1 succeeded
  • saved uplink credentials persist in NVS
  • STA joined the configured Wi-Fi and acquired an IP
  • bandic5.local resolved over mDNS
  • live browser status updated while dual-band RF scans continued
  • UTF-8 rendering is correct
  • compact globe indicator resolved the LCD header overlap
  • TF logging remained active
  • loss of uplink Wi-Fi did not stop scouting
  • restoring the AP caused BandiC5 to reconnect automatically without reboot

@danielbrownjr danielbrownjr changed the title v0.3.0: optional STA uplink + live status page v0.3.1: optional uplink + UI polish Oct 5, 2026
@danielbrownjr danielbrownjr reopened this Oct 5, 2026
@danielbrownjr
danielbrownjr marked this pull request as ready for review October 5, 2026 15:01
@danielbrownjr
danielbrownjr merged commit 2e9f017 into main Oct 5, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant