Commit Graph
5520 Commits
Author SHA1 Message Date
mikecarper 8031e60b55 Add Companion lost-status replies and repair room mailbox test adapters
Save an opt-in off/no/yes answer to private Am I lost questions from known
chat contacts. Keep reply traffic and ACK state bounded, preserve pending
user delivery, and expose the setting through local CLI and ESP32 WebConfig.

Retain compact STM32 application/filesystem boundaries, qualify the Tag BLE
queue allowance, and exercise saved-image compatibility and browser controls.
Fix stale room mailbox protocol dependencies in the ACL/route test fixtures.

Validation: ten Companion builds, sanitized production-path regressions,
preference fault/compatibility tests, browser tests, and 86 capacity/build
recipe checks passed. No live radio was flashed for this feature.
2026-10-10 19:24:42 -07:00
mikecarper 2c1c2c8e99 Add owner-controlled personal room mailboxes and WiFi management 2026-10-10 18:26:13 -07:00
mikecarper 5165b6f490 Correct LoRa room board index completion documentation 2026-10-10 17:56:01 -07:00
mikecarper 9922e60ce4 Clarify MQTT restoration evidence 2026-10-10 15:52:36 -07:00
mikecarper 52f4f94d6e Record shared ESP32 MQTT regression and hardware validation 2026-10-10 15:52:04 -07:00
mikecarper eec6ab0a9f Count runtime WiFi memory in every ESP32 MQTT profile 2026-10-10 15:46:53 -07:00
mikecarper 110b26c737 Fix MQTT recovery admission and retained client buffer sizing 2026-10-10 15:29:50 -07:00
mikecarper beb5b69a80 Reserve SDK client startup memory before MQTT TLS admission 2026-10-10 15:09:19 -07:00
mikecarper 94cc96f234 Expose broker publish acknowledgments for MQTT validation 2026-10-10 15:01:14 -07:00
mikecarper 70052c5e5b Preserve MQTT TLS connection time and internal DMA headroom 2026-10-10 14:43:57 -07:00
mikecarper b705824cf3 Keep room ACL test harnesses aligned with reply routing 2026-10-10 11:59:59 -07:00
mikecarper c678ab6553 Add room catch-up and Wi-Fi administration 2026-10-10 11:51:00 -07:00
mikecarper 4b8dee0146 Let room users manage their own return routes 2026-10-10 11:27:39 -07:00
mikecarper 36a9a46c05 Update Tower OTA fixture for manifest admission callback 2026-10-10 10:39:40 -07:00
mikecarper 1eb8c19a1b Reduce neighbor discovery RAM without changing published results 2026-10-10 01:30:09 -07:00
mikecarper 5fa06ea49b Harden recovery authentication and signed OTA admission 2026-10-10 01:25:08 -07:00
mikecarper 74bc91bf69 Improve room retention, moderation and local browser access
Add opt-in bounded chat history, persist explicit room ACL roles, enforce full-key bans and per-user quotas, and provide versioned information-board reads plus an ESP32 local room page. Preserve stored evidence on faults and withhold room delivery acknowledgments when a Companion cannot retain the message.

Exercise production handlers and filesystem fault recovery, pinned official-app JavaScript, real Chromium interactions, and representative ESP32, nRF52, RP2040 and STM32 builds. Add regression suites and bounded browser-workspace RAM reservations to CI.
2026-10-09 23:44:00 -07:00
mikecarper b6b6b4eaaa ci: run room app checks after Node and cache setup 2026-10-09 22:32:42 -07:00
mikecarper 73dacb7f6a fix(room): preserve ACL roles and persist room topics
Allow unknown blank-password guests only when read-only access is enabled,
disable empty configured credentials, and preserve explicit ACL roles on
reconnect unless a valid admin password selects Admin.

Save room topics through verified, recoverable filesystem transactions. Deliver
topics after older unread posts with independent ACK state and bounded retries,
including clock correction and long-uptime timer handling.

Exercise production handlers and pinned unmodified app JavaScript in CI.
Document topic commands and login policy. Native tests (1829), fault-injection
and compatibility suites, Pico W, V4 Full, G2 Full, and RAK4631 Full/Reduced
build qualification passed. Hardware behavior remains untested for this change.
2026-10-09 22:31:35 -07:00
mikecarper 1339c8546e test: verify inherited nRF52 optimizer before firmware suites 2026-10-09 20:50:13 -07:00
mikecarper 4b074e12c1 test: update bridge lifecycle stand-ins for recovery state 2026-10-09 20:07:06 -07:00
mikecarper 617aacba42 Fix packet, delivery, clock and radio stability regressions
Reject truncated anonymous reply paths and advert metadata before copying,
while preserving timestamp-only empty-password logins. Limit room posting to
read-write/admin ACL roles, retain inbox frames until the requesting transport
accepts them, and lock raw LittleFS traversal against concurrent writes.

Separate ISR event generations from main-loop radio state. Confirm RX/TX IRQs,
detach concrete wrapper callbacks safely, and discard inconsistent LR2021 FIFO
snapshots before rearming. Preserve bridge RX frames through packet-pool
exhaustion and bound ESP-NOW retries and missing-callback recovery. Screen RTC
register layouts without losing DS1307 startup, and ignore poisoned future
contact timestamps during clock bootstrap.

Keep the nRF52 loop stack at 8 KiB while reducing the OTA listing call chain
from 7,832 to 6,056 static bytes. Retain all target names through lossless Full
Companion compression and the canonical size optimizer. Preserve constrained
STM32 filesystems and bind corrected ESP32 UART/OLED budgets to source size
assertions. Document the separately measured preexisting W12 package limits.

Adapted for this branch from meshcore-dev/MeshCore PRs #3521, #3340, #3362,
#2062, #3503, #3038, #3534, #3544 and #3512.

Validation: 1,829 native tests; sanitized parser, inbox, LittleFS, ACL, clock,
RTC, IRQ/FIFO and bridge fault tests; 332 additional Companion cases; real
RAK4631 Full and both repeater profiles, G2 Full/standard, V3 Full and both
constrained STM32 release recipes. Radio-family compile coverage continues
separately; W12 full/portable package guards remain enforced.
2026-10-09 19:56:08 -07:00
mikecarper 61a15ddcf1 Cap fleet reply jitter at ten seconds 2026-10-09 02:02:27 -07:00
mikecarper 4d446c2cd0 Target signed fleet commands by region and GPS radius 2026-10-09 01:32:12 -07:00
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