Commit Graph
5496 Commits
Author SHA1 Message Date
mikecarper 8b3655d76a Support atomic two-packet signed fleet commands
Automatically split longer signed envelopes into two bounded group-data packets, reserve both before queueing, and roll back exact packet copies and retries on admission failure. Collect fragments in either order with a fixed deadline and verify the complete command before durable replay reservation and dispatch.

Raise whole-fleet protocol capacity to 230 bytes, preserve target-specific budgets and radio acknowledgement barriers, and reject rule-token and USB rescue-line truncation. Document existing app input limits and add real-signature, sanitizer, queue failure, timeout, replay, and compact-board regressions.
2026-10-09 00:46:50 -07:00
mikecarper 90783fbd50 Default fleet commands to compact whole-fleet targets 2026-10-08 23:57:50 -07:00
mikecarper 5979280156 Support signed fleet radio schedules and clock updates 2026-10-08 23:27:38 -07:00
mikecarper a91ec9407a Support public-key prefixes and lists in signed fleet commands 2026-10-08 17:32:05 -07:00
mikecarper 39394a255a Add signed private fleet controls for filtering and secondary radio
Enroll a private channel and publisher public key on repeaters and room servers. Local Companion fleet sends sign targeted or whole-fleet commands, with expiry, durable replay protection, and a restricted command allowlist. Preserve exact transmitted-reply barriers for secondary-radio changes, bound validation and replies, and qualify crypto, persistence, transport scope, role permissions, and compact-profile exclusions with regression tests.
2026-10-08 16:45:19 -07:00
mikecarper d0cffc46eb Fix conditional C++ extraction in web console tests
Preserve mutually exclusive preprocessor branches when extracting production C++ for the browser and HWCDC fixtures. Ignore braces in comments, literals and macro definitions, reject mismatched branch joins, and cover the actual repeater command pump with regression tests. Firmware behavior is unchanged.

Validated 93 extractor, official web console, setup GUI and HWCDC checks plus downstream workflow and real PlatformIO metadata checks.
2026-10-08 15:10:51 -07:00
mikecarper 4b3e419eb0 Reduce shared RAM usage without lowering firmware capacities
Specialize repeater ACL session state, compact recent and flood records, stream Merkle proofs, and release cold OTA buffers safely. Preserve saved formats, stack sizes, table capacities, and OTA source limits. Account for lazy buffers when active and add compatibility, ARM alignment, allocation failure, and queued-response tests.

Validated six representative board/role builds, 1736 native test cases, sanitizer fixtures, and strict documentation. Document the preexisting Wio-E5 Mini flash overflow separately.
2026-10-08 14:41:16 -07:00
mikecarper 76ddc06e56 Add opt-in combined RAK4631 Ethernet test image
Keep Full sensors, UART2, adaptive OTA storage and the 8 KiB loop stack. Arbitrate shared SPI and OTA workspace ownership, move network waits into a worker, and use bounded queued TCP operations. Add reproducible test configs, RAM checks and regression coverage. Validated the Full build, UF2 layout and 29 sanitizer runtime scenarios.
2026-10-08 13:53:31 -07:00
mikecarper 910223a3b2 fix(picker): prefer RAK4631 UART2 for new installations 2026-10-08 12:46:08 -07:00
mikecarper d4458973b9 fix(picker): preserve GPS-free RAK UART1 firmware 2026-10-08 01:54:17 -07:00
mikecarper c6b2e302ee fix(picker): recommend unified RAK repeater profiles 2026-10-08 01:34:07 -07:00
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