Commit Graph
5497 Commits
Author SHA1 Message Date
mikecarper 466eb008c7 Target signed fleet commands by region and GPS radius 2026-10-09 01:32:12 -07:00
mikecarper fdad79eaf7 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 d74a0f8b44 Default fleet commands to compact whole-fleet targets 2026-10-08 23:57:50 -07:00
mikecarper 89f26fe1c9 Support signed fleet radio schedules and clock updates 2026-10-08 23:27:38 -07:00
mikecarper b0c02b1e47 Support public-key prefixes and lists in signed fleet commands 2026-10-08 17:32:05 -07:00
mikecarper d83fa7cf8e 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 a14bbdc58f 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 7a463937ca 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 df88a6ef95 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 57036b1d66 fix(picker): prefer RAK4631 UART2 for new installations 2026-10-08 12:46:08 -07:00
mikecarper 396474bf9c fix(picker): preserve GPS-free RAK UART1 firmware 2026-10-08 01:54:17 -07:00
mikecarper c07d16e398 fix(picker): recommend unified RAK repeater profiles 2026-10-08 01:34:07 -07:00
mikecarper 4bbd613417 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 d2b6244ae0 Document 1.17.1.9 profiles and WiFi upgrade limits 2026-10-07 07:37:32 -07:00
mikecarper 88c8510800 Preserve enabled RX gain from compact 1.14.1 preferences lora-ota-2-v1.17.1.9-halo-keymind-cascade-dev-88c85108 v1.17.1.9-halo-keymind-cascade-dev-88c85108 full-profiles-v1.17.1.9-halo-keymind-cascade-dev-88c85108 lora-ota-v1.17.1.9-halo-keymind-cascade-dev-88c85108 utility-v1.17.1.9-halo-keymind-cascade-dev-88c85108 2026-10-07 05:22:54 -07:00
mikecarper 8c4e09275e 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 bd4cbf281f 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 4c5f58f4b5 Keep WiFi test recovery retrying until the original network returns 2026-10-06 21:11:38 -07:00
mikecarper 3ab690b508 Test MQTT power saving through canonical credential snapshots 2026-10-06 20:22:18 -07:00
mikecarper af56405d5e Prepare Linux native Web Serial tests after pyserial 2026-10-06 20:20:31 -07:00
mikecarper 80dba6298d Test shared WiFi reader silence on fresh ESP32 NVS 2026-10-06 19:55:17 -07:00
mikecarper 69869ef398 Consolidate branch feature summaries 2026-10-06 19:43:01 -07:00
mikecarper 1e421ff4fc Fix MQTT startup after ESP32 WebConfig provisioning 2026-10-06 19:28:10 -07:00
mikecarper 745aeb1758 Combine Full profiles into one linked overview 2026-10-06 19:04:59 -07:00
mikecarper aebab7d46b Clarify WiFi setup before configuring Full MQTT brokers 2026-10-06 19:02:59 -07:00
mikecarper 87d51d3d64 Explain Full firmware profiles in one guide 2026-10-06 18:57:34 -07:00
mikecarper c9ca39b5dd Link Cascade features and document Full profiles and LiFePO4 protection 2026-10-06 18:44:42 -07:00
mikecarper c5fe8a0edd Commit WiFi OTA only after the complete upload request 2026-10-06 17:14:48 -07:00
mikecarper 70bf4bdfeb 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 be2ab346b0 Terminate DNS diagnostics after partial address conversion 2026-10-06 13:18:38 -07:00
mikecarper 3ede9b2155 Regenerate WebConfig assets for DNS diagnostics 2026-10-06 13:12:08 -07:00
mikecarper 5d5941fc4d Run DNS restoration and diagnostics regressions in CI 2026-10-06 13:11:15 -07:00
mikecarper 52c70994d8 Preserve valid DNS leases and cover bounded diagnostics 2026-10-06 13:11:15 -07:00
mikecarper 0724e2efa3 Test repeater hidden discovery and observer compatibility 2026-10-06 13:02:20 -07:00
mikecarper 7d0984cc90 Merge observer DNS diagnostics and complete resolver restoration 2026-10-06 12:58:28 -07:00
mikecarper 771e86741c 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 3bb7c7bdd8 Merge upstream dev while preserving local GPS and USB recovery 2026-10-06 12:56:19 -07:00
mikecarper 825eb592f7 test: extract USB sleep helper for official web console 2026-10-06 12:26:36 -07:00
mikecarper 1ecceeb686 test: verify canonical Full matrix grouping 2026-10-06 12:07:53 -07:00
mikecarper 6978b354cc Merge remote-tracking branch 'origin/keymindCascade' into keymindCascade 2026-10-06 11:59:54 -07:00
mikecarper 20a75af1fa Record ESP32 power and AP regression qualification 2026-10-06 11:59:32 -07:00
mikecarper 9c54621b63 Merge remote-tracking branch 'origin/keymindCascade' into keymindCascade 2026-10-06 11:58:31 -07:00
mikecarper 99ec3a9bbf test: qualify Full fixtures for local release staging 2026-10-06 11:57:21 -07:00
mikecarper f8e04f090b test: resolve inherited C6L USB console flags 2026-10-06 11:51:39 -07:00
mikecarper 219e936ef8 Preserve requested ESP-NOW across manual setup and master restore 2026-10-06 11:46:10 -07:00
mikecarper 97f16dedd0 Fix ESP32 Full idle radio teardown and compact AP startup 2026-10-06 11:46:10 -07:00
mikecarper 5a7c07a6ce Use real Mesh Solar hardware in resume regression fixture 2026-10-06 11:30:49 -07:00
mikecarper d6ec787ba7 Honor explicit resume for ordinary firmware builds 2026-10-06 11:29:52 -07:00
mikecarper 77f0842830 Keep T-Beam 1W outside programmable charger support 2026-10-06 11:23:03 -07:00
mikecarper 1adf0c6d01 Scope charger controls to T-Beam and Mesh Solar flash budgets 2026-10-06 11:22:03 -07:00