Commit Graph
5485 Commits
Author SHA1 Message Date
mikecarper e3c7f5efa3 Publish 1.17.1.9 USA Cascade picker and Mesh America catalogs
Point both stable providers and runtime controls to the validated v1.17.1.9-halo-keymind-cascade-dev-88c85108 family. Record completed package validation while retaining hardware coverage limitations. Give all documentation source pages their exact hosted links and mount the telemetry form only in the browser. Verify current combined Full and nRF52 Full/Reduced catalog fixtures.
2026-10-07 13:56:17 -07:00
mikecarper d682e7422c Document 1.17.1.9 profiles and WiFi upgrade limits 2026-10-07 07:37:32 -07:00
mikecarper 9444c949c5 Preserve enabled RX gain from compact 1.14.1 preferences 2026-10-07 05:22:54 -07:00
mikecarper df4cbb75eb fix(esp32): defer station maintenance while an AP owns WiFi
Starting or restarting MQTT during browser OTA could remove the active AP by forcing STA mode. Defer shared MQTT startup and recovery, and Companion WiFi startup, pending credential reloads and saved-SSID retries, until the live SDK AP releases the driver. Preserve the setup owner's deliberate credential handoff and cooperative stop acknowledgement.

Validated 91 source host tests, including 20 new AP ownership cases and nine reverted controls under ASan/UBSan. Hardware and firmware build qualification remain separate; the Arduino mode snapshot is not atomic.
2026-10-07 02:44:18 -07:00
mikecarper 8c7d7d8839 Keep ESP32 access points compatible with LR transports
Protect standard access points from the shared ESP-IDF LR flag, defer incompatible raw ESP-NOW starts, and select RAM storage before LR writes. Track successful LR owners so setup and OTA access points reject a conflicting running transport before changing WiFi.

Run actual production policies, transport lifecycle methods, and WebConfig teardown branches against a shared-LR SDK model with runtime negative controls; include the regression in unit CI.
2026-10-07 02:07:06 -07:00
mikecarper 526af2a82b Keep WiFi test recovery retrying until the original network returns 2026-10-06 21:11:38 -07:00
mikecarper ba0245832e Test MQTT power saving through canonical credential snapshots 2026-10-06 20:22:18 -07:00
mikecarper dad32f099f Prepare Linux native Web Serial tests after pyserial 2026-10-06 20:20:31 -07:00
mikecarper d68a3c3448 Test shared WiFi reader silence on fresh ESP32 NVS 2026-10-06 19:55:17 -07:00
mikecarper 8bf9719102 Consolidate branch feature summaries 2026-10-06 19:43:01 -07:00
mikecarper d4b7217a4b Fix MQTT startup after ESP32 WebConfig provisioning 2026-10-06 19:28:10 -07:00
mikecarper 86d74c4a13 Combine Full profiles into one linked overview 2026-10-06 19:04:59 -07:00
mikecarper 767e5c1683 Clarify WiFi setup before configuring Full MQTT brokers 2026-10-06 19:02:59 -07:00
mikecarper 59a1dda6c2 Explain Full firmware profiles in one guide 2026-10-06 18:57:34 -07:00
mikecarper faf8da505b Link Cascade features and document Full profiles and LiFePO4 protection 2026-10-06 18:44:42 -07:00
mikecarper 1f9ebbbd80 Commit WiFi OTA only after the complete upload request 2026-10-06 17:14:48 -07:00
mikecarper 2aef03aa8f Preserve multipart OTA MD5 after Update initialization
Arduino-ESP32 2.0.17 UpdateClass::begin() clears _target_md5 before
initializing the digest builder (Updater.cpp:123-126). The installed pinned
framework package is 3.20017.241212+sha.dcc1105b. Setting the multipart
digest before begin therefore skipped the final comparison in end(),
which only compares a nonempty _target_md5 (Updater.cpp:303-308).

Set the supplied MD5 after Update.begin succeeds. If the digest is rejected,
abort the begun update, release upload admission, and return HTTP 400 before
assigning an owner or extending its receive timeout.

Model the pinned begin-clears-digest behavior in the host fixture using
independent digest vectors. Verify malformed and mismatched digests, actual
byte corruption, disconnect cleanup, and later valid admission. Negative
controls restore the original ordering and remove abort/busy cleanup.

Validation: python3 -B test/test_async_web_lifecycle.py -v passed 4/4,
including C++ ASan/UBSan execution and negative controls. No PlatformIO or
hardware validation was run in this worktree.
2026-10-06 14:42:20 -07:00
mikecarper 9db118db4b Terminate DNS diagnostics after partial address conversion 2026-10-06 13:18:38 -07:00
mikecarper 2b3b50761b Regenerate WebConfig assets for DNS diagnostics 2026-10-06 13:12:08 -07:00
mikecarper e4c3ab1ca5 Run DNS restoration and diagnostics regressions in CI 2026-10-06 13:11:15 -07:00
mikecarper 44640c5a56 Preserve valid DNS leases and cover bounded diagnostics 2026-10-06 13:11:15 -07:00
mikecarper 8da6b8518d Test repeater hidden discovery and observer compatibility 2026-10-06 13:02:20 -07:00
mikecarper b84539718e Merge observer DNS diagnostics and complete resolver restoration 2026-10-06 12:58:28 -07:00
mikecarper d0335c1346 Merge IoT power updates while retaining configured role defaults
Keep the current runtime RXPS preference layout, configurable role defaults, board FEM policy, and persisted radio overrides. Power saving and Companion Balanced RXPS already match the incoming policy; the retired fixed Companion helper has been replaced by runtime controls.
2026-10-06 12:57:30 -07:00
mikecarper c01d6ce581 Merge upstream dev while preserving local GPS and USB recovery 2026-10-06 12:56:19 -07:00
mikecarper dcaa5b514a test: extract USB sleep helper for official web console 2026-10-06 12:26:36 -07:00
mikecarper eacd608041 test: verify canonical Full matrix grouping 2026-10-06 12:07:53 -07:00
mikecarper e4b336de23 Merge remote-tracking branch 'origin/keymindCascade' into keymindCascade 2026-10-06 11:59:54 -07:00
mikecarper a4d991cd59 Record ESP32 power and AP regression qualification 2026-10-06 11:59:32 -07:00
mikecarper fcde9d013c Merge remote-tracking branch 'origin/keymindCascade' into keymindCascade 2026-10-06 11:58:31 -07:00
mikecarper cd2107d761 test: qualify Full fixtures for local release staging 2026-10-06 11:57:21 -07:00
mikecarper 381c1ebb47 test: resolve inherited C6L USB console flags 2026-10-06 11:51:39 -07:00
mikecarper c06ddb76ae Preserve requested ESP-NOW across manual setup and master restore 2026-10-06 11:46:10 -07:00
mikecarper d0859f925d Fix ESP32 Full idle radio teardown and compact AP startup 2026-10-06 11:46:10 -07:00
mikecarper f1ffe53e8a Use real Mesh Solar hardware in resume regression fixture 2026-10-06 11:30:49 -07:00
mikecarper 0f0c92f4e2 Honor explicit resume for ordinary firmware builds 2026-10-06 11:29:52 -07:00
mikecarper d5d3e389e7 Keep T-Beam 1W outside programmable charger support 2026-10-06 11:23:03 -07:00
mikecarper bac70385da Scope charger controls to T-Beam and Mesh Solar flash budgets 2026-10-06 11:22:03 -07:00
mikecarper 86dc9ed3da Update GPS request fixture for bounded LPP replies 2026-10-06 11:21:56 -07:00
mikecarper 19cc68f0bc Clarify charger battery ratings and keep host checks portable 2026-10-06 11:05:05 -07:00
mikecarper 7df554364f Cover every T-Beam charger boot read failure 2026-10-06 10:57:33 -07:00
mikecarper 89c1feadeb Merge branch 'codex/charge-voltage-controls' into keymindCascade 2026-10-06 10:56:32 -07:00
mikecarper 613d9d7c43 Add persistent T-Beam charge voltage controls and report Mesh Solar limits 2026-10-06 10:56:32 -07:00
mikecarper c1d0311f95 Simplify firmware selection and canonical build menus 2026-10-06 10:46:11 -07:00
mikecarper 3177ccfafa Merge branch 'keymindCascade' of github.com:mikecarper/MeshCore into keymindCascade 2026-10-06 10:23:28 -07:00
mikecarper f442a10c56 Use C6L native USB and recover diagnostics-only Companion sessions 2026-10-06 10:14:59 -07:00
mikecarper 237ae30ee3 Publish Full-only ESP32 node releases and separate migration tools 2026-10-06 10:14:54 -07:00
mikecarper 8d9062664e Keep telemetry permission fixtures aligned with production prefs 2026-10-06 10:11:41 -07:00
mikecarper 8b1e846b09 Cover WiFi scan fixes across every ESP32 recipe 2026-10-06 09:58:40 -07:00
mikecarper 58f5d7f794 Bound telemetry replies and preserve Sensor send retries 2026-10-06 09:56:00 -07:00