Commit Graph
958 Commits
Author SHA1 Message Date
mikecarper 8268befbdc Keep original Tracker Full neighbor table within its RAM budget 2026-10-18 19:01:35 -07:00
mikecarper 27a5e0d452 Detect manufacturer-supported optional screens on RC32, Tracker V1 and V4 R8 2026-10-18 18:55:38 -07:00
mikecarper 66ba186842 Publish qualified T114 screen-detection picker defaults 2026-10-18 18:19:38 -07:00
mikecarper 794f5f7b8c Account for ST7789 framebuffer and scanline heap in firmware gates 2026-10-18 16:32:49 -07:00
mikecarper dcdce7b656 Make T114 screen detection the default firmware and picker choice 2026-10-18 16:20:27 -07:00
mikecarper 07edca4cb8 Fix G3 gain transitions, slot commands and radio restore 2026-10-18 14:29:19 -07:00
mikecarper eb00b5370e Restore G3 startup tolerance and G2-compatible flash mode 2026-10-18 13:58:02 -07:00
mikecarper 1147c28b27 Preserve admin password input and clarify reconnect guidance 2026-10-18 13:45:13 -07:00
mikecarper 22f4c5f5a1 Share the saved admin password across ESP32 management services
Use the committed node credential for setup WiFi, WebConfig and browser OTA. Add persistent ESP32 WiFi Companion management credentials without changing preferences layouts, revoke stale browser sessions on rotation, retain scoped save receipts, and coordinate credential changes with flash uploads. Keep external-service credentials and trusted TCP protocol compatibility independent. Update live join QR codes, failure handling and documentation.

Validated 51 native cases, 158 related host and browser methods, and serial Full V4 Companion, Station G3 Repeater, ESP32-C6 Room Server and V4 Sensor firmware builds.
2026-10-18 13:09:48 -07:00
mikecarper 205724600b Keep fractional timezones within constrained flash budgets
Deduplicate validation and preserve the published preference bytes and transactional saves. Correct Ikoka Handheld Companion flash bounds and document QSPI Room migration. Qualify STM32 and RAK4631 at the full 1.18.0.1 release version length.
2026-10-18 08:46:20 -07:00
mikecarper b92198807b Merge upstream dev through 428a95c64
Integrate fractional Companion timezones and conditional Bluetooth pages while preserving the existing preference byte layout, transactional saves, and Full transport selector. Add migration, rollback, invalid-value, and UI profile regressions.
2026-10-18 08:30:50 -07:00
mikecarper b7d6863916 Record verified V4 USB return and complete original-data restoration 2026-10-18 08:18:58 -07:00
mikecarper 7b41d28932 Record V4 Bluetooth recovery and pending physical USB reconnection 2026-10-18 02:50:06 -07:00
mikecarper 76220d5d7e Record Mercerwood candidate hardware results and open release gates 2026-10-18 02:27:11 -07:00
mikecarper ec9ebc0914 Expose broker acknowledgment diagnostics on Full Companion 2026-10-17 23:54:15 -07:00
mikecarper 652289ee82 Expand post-merge regressions and document qualification gaps 2026-10-17 21:41:47 -07:00
mikecarper 0a24279a3c Document transient guest login and post replay limits 2026-10-17 21:19:04 -07:00
nullrouten0andClaude Opus 5.5 fef470de6c Use the node's admin password for the migration bridge AP
The Wi-Fi, LoRa first-stage and Partition Expander bridges serve an
unauthenticated /update behind an AP whose password was fixed and published,
so anyone in range during a migration could upload firmware while the private
key is staged. Use the old node's saved admin password as the WPA2
passphrase, read from /com_prefs or /node_prefs at offset 56 as the firmware
loads it. The operator already used that password to start the old updater.

Fall back to the published password, with a serial warning, when the saved
admin password is missing, unreadable, shorter than 8 characters or not
printable ASCII, so no node becomes unreachable. The legacy filesystem is
mounted without formatting and the password is never printed. Migration
admission, flash sequencing, /update gating and the USB bridge are unchanged.
Update both guides and the package README.

Add a sanitizer-backed host test that compiles the bridge's actual Wi-Fi
block against fake SPIFFS and WiFi: both boots, file precedence, WPA2 length
and terminator bounds, printable characters, stock 1.10/1.11 file sizes,
truncated fields, and mount, seek and partial-read failures. It fails 8 of 8
on the previous code and catches 27 of 27 code mutations. Verified 13 related
host test files and the esp32_s3_4mb_partition_migrator build.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 03:57:09 +00:00
mikecarper fd1d80ef6d Fit Mini Repeater with approved optional service cuts 2026-10-17 19:35:05 -07:00
mikecarper 488a8f9ef7 Record Mini Repeater approved feature-cut experiments 2026-10-17 19:23:26 -07:00
mikecarper 9b616f4d11 Record Mini Repeater GCC 15 size and emulation results 2026-10-17 18:42:08 -07:00
mikecarper 6035f66310 Record 1.18.0.1 risk matrix passes and remaining Mini limit 2026-10-17 18:07:13 -07:00
mikecarper 060119af8e Sleep unused onboard SX1262 in RAK13302 builds
Adapt the optional onboard-radio probe for RAK3401 and RAK4631 cores using the external RAK13302 image. Preserve SPI1 radio ownership, external FEM startup, and ordinary RAK4631 primary-radio operation.

Probe before boot voltage protection, bound missing-chip waits, release temporary pads, and confirm cold sleep without waking the chip. Add sanitizer-backed host regression tests and CI coverage.
2026-10-17 17:02:54 -07:00
mikecarper aa2cfaba62 Retain USB packet logging in canonical nRF sensor OTA pairs 2026-10-17 15:50:19 -07:00
mikecarper 29f6ffa2be Delay displayed radio preamble advice for two minutes 2026-10-17 14:45:33 -07:00
mikecarper bd6f721a6b Fix hosted links for new power-saving documentation 2026-10-17 13:44:40 -07:00
mikecarper d845c6545e Fix W12 TX prearming without standby PA drain 2026-10-17 13:36:38 -07:00
mikecarper 5d525b88f2 Allow safe nRF52 MCU idle between radio2 scan deadlines 2026-10-17 13:21:05 -07:00
mikecarper 6921e0d364 Avoid flash load image for the empty contact-path cache 2026-10-17 11:57:05 -07:00
mikecarper c0672b9010 Initialize DC/DC on nine circuit-verified nRF52 boards 2026-10-17 11:42:21 -07:00
mikecarper 811f568838 Merge remote-tracking branch 'origin/keymindCascade' into keymindCascade 2026-10-17 11:37:01 -07:00
mikecarper 39b9f9b440 Enable RAK4631 Companion DC/DC in all transports 2026-10-17 11:35:50 -07:00
mikecarper ecbeb91617 Merge remote-tracking branch 'origin/keymindCascade' into keymindCascade 2026-10-17 11:22:33 -07:00
mikecarper e0096c5bb5 Fix T096 Companion runtime RAM with RGB332 framebuffer 2026-10-17 11:22:15 -07:00
mikecarper eb74c74e39 Preserve millisecond power-saving deadlines across roles 2026-10-17 11:21:48 -07:00
mikecarper 189a6de830 Retain valid noise floors during adaptive AGC maintenance 2026-10-17 11:06:10 -07:00
mikecarper bd09019ada Sleep between noise-floor samples and reduce idle refreshes 2026-10-17 10:18:14 -07:00
mikecarper 190941e7b8 Enable contact caching for high-capacity nRF52 companions 2026-10-17 10:14:17 -07:00
mikecarper 5996b2e294 Reuse active Sensor tracker wake deadlines 2026-10-17 02:25:37 -07:00
mikecarper 9c50eb15e1 Fix nRF52 idle sleep event and CryptoCell handling 2026-10-17 02:22:26 -07:00
mikecarper e1a72ac147 Add on-demand power-saving diagnostics 2026-10-17 01:15:54 -07:00
mikecarper f9e145216f Preserve current Room downloads during QSPI rollout 2026-10-16 23:46:21 -07:00
mikecarper 71210f0a39 Consolidate onboard QSPI infrastructure build profiles 2026-10-16 23:42:10 -07:00
mikecarper bf07999e12 Retire internal-only SolarXiao Room release variants 2026-10-16 23:24:36 -07:00
mikecarper 9963d798e2 Preserve armed OTA handoffs when debug resume is requested 2026-10-16 15:43:32 -07:00
mikecarper ebf6454cca Restart contact streams after storage recovery
Release cached path snapshots before resetting contacts while retaining the requesting transport and table revision for a complete stream restart. Keep explicit session cancellation unchanged and avoid copying uncached contact buffers.

Cover cached and uncached recovery, transport isolation, empty reloads, backpressure, and the former cancellation as a negative control.
2026-10-16 09:11:19 -07:00
mikecarper 7b2daaed9f Preserve accepted contacts after transient path read errors
Recheck cached immutable paths before resetting the live table after raw I/O failure. Keep accepted RAM mutations, current jobs and save deadlines when reads recover; stronger source or publication uncertainty still forces full recovery. Use the existing recovery byte and a fixed scratch buffer, with no cache allocation or eviction.

Cover full-cache transient recovery, persistent I/O and checksum failures, nRF unread-scope restoration, active ESP jobs, real uncertain publication and unchanged lazy deadlines with sanitizer tests and restored-reset negative controls.
2026-10-16 08:54:12 -07:00
mikecarper fbd5c84ec4 Preserve contacts when source discovery is unknown
Do not classify legacy or page-name stat errors as unread payloads. Keep candidate contact files unchanged, retry source selection, and use bounded volatile operation if authority remains unknown. Cover legacy absence, downgrade leftovers, cleanup-time metadata recovery and persistent faults with actual-source sanitizer tests and restored-bug negative controls.
2026-10-16 08:38:26 -07:00
mikecarper 2311160a97 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 880733c209 Hold fleet authority after uncertain settings publication 2026-10-16 06:53:19 -07:00