Commit Graph
2444 Commits
Author SHA1 Message Date
mikecarper 80023f79e0 Fix ESP32-C6 GPIO hold capability and add cross-platform smoke builds 2026-10-17 21:41:47 -07:00
nullrouten0andClaude Opus 5.5 ef1e4a70cb Lock WebConfig logins per client address with a shared failure cap
/api/login locked every client for 30 s after five failures from anyone.
Anyone who could reach the login page could keep the owner locked out by
failing on purpose. If no login succeeded after a lockout, the lock also
returned from 2^31 to 2^32 ms (about 24.9 to 49.7 days) later, because the
deadline was never cleared and was compared as a signed difference.

Count failures per remote address instead. Five failures lock that address
for 30 s, as before. A shared budget caps failures from all addresses
together, so changing address does not add guesses: it holds six failures
and refills one every 6 s, the old global rate, so one failing address can
never empty it on its own. While it is empty every client waits, as before.
Lock times are measured as elapsed time.

The policy is a pure header, WebConfigLoginThrottle.h.
test_webconfig_login_throttle.py runs it directly (isolation, boundaries,
one-hour rate bounds, millis() half-wrap, saturation, eviction) and runs the
real handleLogin with ArduinoJson under ASan/UBSan. Putting every client on
one key, as the old code did, fails the handler test.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 03:57:09 +00:00
mikecarperandnullrouten0 3db4582bbb Integrate upstream GPS PRs 3624, 3625 and 3626
Port the guarded NMEA buffer, validated RMC clock samples and coordinate bounds from meshcore-dev/MeshCore#3624, #3625 and #3626. Adapt clock admission to retain this branch's signed date limits, bounded loop work, tracker acquisitions, sample consumption, diagnostics and periodic settings.

Upstream-PR: https://github.com/meshcore-dev/MeshCore/pull/3624
Upstream-Commit: 1ac389bbef0084623a3115c526156ae8f414d3ea
Upstream-PR: https://github.com/meshcore-dev/MeshCore/pull/3625
Upstream-Commit: 72ed4dcf08869c6900ef579e7af1b28471a86895
Upstream-PR: https://github.com/meshcore-dev/MeshCore/pull/3626
Upstream-Commit: 499727a71c564a7b5d451b8f480d940e185fe742

Co-authored-by: nullrouten0 <201262769+nullrouten0@users.noreply.github.com>
2026-10-17 19:53:08 -07:00
mikecarper 55f67f9062 Fit Mini Repeater with approved optional service cuts 2026-10-17 19:35:05 -07:00
mikecarper b2a8245199 Bound SH1106 retry allocations and verify ESP32 Full RAM 2026-10-17 17:59:33 -07:00
mikecarper 55960cebdc Recover nRF OTA RAM without reducing catalog or staging capacity 2026-10-17 15:50:17 -07:00
mikecarper 5ee9ceeb20 Protect nRF SD OTA authorization RAM from source-only stores 2026-10-17 15:35:34 -07:00
mikecarper 9c3df94f99 Honor periodic OTA cadence after the four-beacon startup burst 2026-10-17 15:12:59 -07:00
mikecarper 97be2b9b21 Delay displayed radio preamble advice for two minutes 2026-10-17 14:45:33 -07:00
mikecarper 64a928d18f Reduce Indicator radio expander traffic with guarded IQ reuse 2026-10-17 14:19:42 -07:00
mikecarper 8874cf62ca Fix W12 TX prearming without standby PA drain 2026-10-17 13:36:38 -07:00
mikecarper f1d281a766 Allow safe nRF52 MCU idle between radio2 scan deadlines 2026-10-17 13:21:05 -07:00
mikecarper 53835c0793 Avoid flash load image for the empty contact-path cache 2026-10-17 11:57:05 -07:00
mikecarper 80f7b17d89 Merge remote-tracking branch 'origin/keymindCascade' into keymindCascade 2026-10-17 11:22:33 -07:00
mikecarper 4805b5cdbb Fix T096 Companion runtime RAM with RGB332 framebuffer 2026-10-17 11:22:15 -07:00
mikecarper 2fb4d2e793 Preserve millisecond power-saving deadlines across roles 2026-10-17 11:21:48 -07:00
mikecarper eb4f837969 Retain valid noise floors during adaptive AGC maintenance 2026-10-17 11:06:10 -07:00
mikecarper 5bdc6de0ed Sleep ST7735 controllers before releasing display power 2026-10-17 11:02:29 -07:00
mikecarper dd7a10f9aa Sleep between noise-floor samples and reduce idle refreshes 2026-10-17 10:18:14 -07:00
mikecarper 50428f0fb7 Enable contact caching for high-capacity nRF52 companions 2026-10-17 10:14:17 -07:00
mikecarper 629557fcfe Fix nRF52 idle sleep event and CryptoCell handling 2026-10-17 02:22:26 -07:00
mikecarper 756d887bad Add on-demand power-saving diagnostics 2026-10-17 01:15:54 -07:00
mikecarper 135d361368 Require fresh complete GPS observations before clock synchronization 2026-10-16 19:48:34 -07:00
mikecarper 31a53b1f4a Preserve stalled USB recovery after a cancelled watchdog reboot
Restart the retry interval without treating queue cleanup as completed USB transmission. Cover cancellation journals, fresh recovery deadlines, real progress and rollover, with historical policy and runtime negative controls.
2026-10-16 19:25:15 -07:00
mikecarper 0dcba50d88 Reject unsupported RXPS before changing suspended scan policy
Keep rejected power-saving requests from changing radio2's saved RX policy or timings. Exercise actual CLI, scan restoration and calibration sleep guards with semantic negative controls.
2026-10-16 19:17:22 -07:00
mikecarper 57ca55f98f Keep expired beacon RF-start guards retired across uptime rollover 2026-10-16 18:09:12 -07:00
mikecarper 6dfecb8879 Reuse outbound block storage for host-compressed OTA data 2026-10-16 17:33:13 -07:00
mikecarper 866f9d682f Preserve armed OTA handoffs when debug resume is requested 2026-10-16 15:43:32 -07:00
mikecarper 4865162fb4 Reserve configured NOR pins from user GPIO control 2026-10-16 15:09:46 -07:00
mikecarper 9e4891989f Preserve armed OTA handoffs by rejecting apply reentry 2026-10-16 15:00:23 -07:00
mikecarper de0e18e8cc Report unverified USB watchdog saves without promising rollback 2026-10-16 13:57:14 -07:00
mikecarper 5fc0943f59 Report uncertain preference saves without promising rollback 2026-10-16 13:45:48 -07:00
mikecarper f6c00be3e0 Bound region name exports for small destinations 2026-10-16 12:54:36 -07:00
mikecarper df0e7c3f89 Preserve durable region policy on failed replacement saves 2026-10-16 11:56:00 -07:00
mikecarper 22c31c0246 Confirm beacon file moves before acknowledging publication 2026-10-16 10:32:27 -07:00
mikecarper e69c89e8d3 Fail closed after uncertain shared data route publication 2026-10-16 10:27:05 -07:00
mikecarper 54a5137032 Recover unreadable contacts without stranding Companions
Verify fallback namespace moves before accepting publication or rollback. Reload readable contact images at a safe host boundary, discard only unreadable contact data after bounded retries, and permit volatile operation when storage cannot recover. Preserve unrelated stores and fail explicit durability requests truthfully.

Keep existing flash, RAM, OTA and capability limits by streaming nRF52 preferences through the validated wire table and sharing identical contact deadline resets. Add fault-injection, sanitizer, legacy-image parity and CLI lifecycle regressions.
2026-10-16 08:28:45 -07:00
mikecarper 4b1908a029 Verify fallback file stages with independent CRC32C 2026-10-16 07:03:45 -07:00
mikecarper c7d377a7cb Hold fleet authority after uncertain settings publication 2026-10-16 06:53:19 -07:00
mikecarper 7b808eae47 Reconcile uncertain LittleFS writes and preserve storage authority
Verify public images after every rename attempt, expose publication outcomes, and use an independent CRC32C fingerprint so valid IEEE-CRC-tailed images cannot mask a stale target. Preserve persistent formats and reject directories for empty images.

Reconcile uncertain migration journals before choosing filesystem authority. Preserve retained contact snapshots when page publication is unconfirmed without clearing dirty state or acknowledging the new page generation.

Add readback, rename, CRC-tail, migration reboot/quarantine, and snapshot eviction regressions. Keep complete RAK Full Companion within the unchanged OTA ceiling through equivalent code compaction, with no feature or validation cuts.
2026-10-16 06:37:59 -07:00
mikecarper 9df586df7e Preserve radio2 ACK ownership without extending expired leases
Keep tracked reply generations stable in feature-off builds as well as optional transport builds. After ACK copies drain, let expired temporary profiles restore saved settings while failed permanent commits stay staged and retry.

Cover packet generations, rollover, persistent commit faults, cancellation and eventual commit across feature-off, Meshtext and Ethernet configurations. Document ACK ownership and post-reply storage retry behavior.
2026-10-16 06:02:01 -07:00
mikecarper b1197c5352 Retain required Pico BLE replies through notification backpressure 2026-10-16 05:30:17 -07:00
mikecarper f65a8269f3 Estimate Companion trace timeouts from planned radio transmissions 2026-10-16 05:20:39 -07:00
mikecarper c2fd934e1f Use received radio profile for clock transit estimates 2026-10-16 05:04:06 -07:00
mikecarper babb069237 Prevent pipelined clients from starving Companion transports 2026-10-16 05:03:34 -07:00
mikecarper dcfa31bb50 Report radio recovery refusal after receive ownership changes 2026-10-16 04:38:35 -07:00
mikecarper 21bb3e8a66 Bound plain-message ACK attempts to decrypted data 2026-10-16 04:27:59 -07:00
mikecarper 07afacf379 Reject malformed cached adverts before sharing contacts 2026-10-16 04:13:21 -07:00
mikecarper 92b9a1cc64 Separate tracker RF leases from timed maintenance wakes 2026-10-16 04:03:34 -07:00
mikecarper 9bb63527ce Reuse beacon retirement timestamp to retain OTA flash budget 2026-10-16 03:48:07 -07:00