Commit Graph
1224 Commits
Author SHA1 Message Date
mikecarper 2936598e63 Consolidate Cardputer, Wio L1 and headless KISS builds 2026-10-31 13:32:37 -07:00
mikecarper cb5f6bd7bc Detect Muzi Base radios and consolidate Companion variants 2026-10-31 11:10:40 -07:00
mikecarper 4932942180 Detect SX1268 and consolidate shared radio builds 2026-10-31 03:44:06 -07:00
mikecarper 7f9a70c5e4 Merge remote-tracking branch 'origin/keymindCascade' into keymindCascade 2026-10-31 03:24:27 -07:00
mikecarper 0c16ca659a Restore the companion CLI hosted documentation link 2026-10-31 03:23:14 -07:00
mikecarper f0fd4a1cf3 Bind partition migration packages to exact published firmware 2026-10-31 03:17:52 -07:00
mikecarper 9af1054fe4 Bind partition migration packages to exact published firmware 2026-10-31 03:17:41 -07:00
mikecarper dc842c27e9 Qualify universal radios and preserve constrained-board resources 2026-10-31 02:05:27 -07:00
mikecarper 98deff5de3 Verify universal radio dispatch and preserve all role interfaces 2026-10-31 01:32:47 -07:00
mikecarper 1ad5423d7a Merge radio presets and Cardputer improvements from PR #28 2026-10-31 00:01:28 -07:00
mikecarper 49d70fe0c6 Merge upstream dev fixes
Keep our radio transactions, notification defaults, display settings and pinned RadioLib release. Integrate contact and sensor safety fixes, saturated statistics and compatible board/display updates.
2026-10-30 17:43:40 -07:00
mjgodatandClaude Opus 5.5 d3ed59d485 Merge upstream keymindCascade (OTA relay/ACL updates) into radio presets
Only test/fixtures/cli_reply_text.json conflicted; messages and profiles
were identical, source token hashes regenerated for the merged sources.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 10:28:30 -07:00
mikecarper 9ad7b318fc Omit default values from filter policy definitions 2026-10-30 01:27:50 -07:00
mjgodatandClaude Opus 5.5 bdac192add fix(presets): never overwrite an unreadable /presets in lazy mode
Lazy mode treated any failed read of /presets as an empty store, so the
next countdown, revert or commit save replaced the user's slots with a
fresh table. It now remembers whether /presets holds this node's table
(loaded at boot or saved since). Once stored, a failed read is
"unreadable": get/add/del/load preset reply "Error: presets unreadable",
the pending revert or commit still runs from the RAM mirror, and save()
refuses until a read succeeds, leaving the stored bytes untouched.

Seeding now follows resident exactly: begin() seeds an empty table; at
run time the default is only added while /presets was never written, so
a table emptied by "del preset" stays empty until reboot in both modes.

Lazy members are reordered and the flags packed so the object is 32 B on
32-bit targets (static_assert tightened to <= 32).

Tests (both modes): del-all stays empty until reboot. Lazy only: corrupt
store with a pending timeout, short store with a commit, store vanishing
with a pending load, and a never-stored missing store.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 00:59:08 -07:00
mikecarper dedc42d408 Record LoRa relay OTA hardware tests 2026-10-30 00:58:22 -07:00
mikecarper b0848e69ea Add LoRa relay setup and recovery to the OTA menu 2026-10-30 00:33:44 -07:00
mjgodatandClaude Opus 5.5 d4f40fa781 build(rak4631): bring radio presets back on the RAK4631 Repeater
RAK_4631_repeater (both sensor + LoRa OTA qualification images) now
builds presets in lazy mode (MESH_RADIO_PRESETS_RESIDENT=0) instead of
dropping them. Full sensors runtime RAM: 83,164 available / 83,136
required (PASS; upstream 83,204). RAK_4631_companion_radio_full keeps
presets off (flash). Docs describe the storage switch.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 00:10:00 -07:00
mikecarper 3ae62d690f Add ACL and radio2 options to the OTA updater 2026-10-29 21:38:03 -07:00
mikecarper ba0321a8cd Send direct CLI commands using an existing ACL grant 2026-10-29 19:56:56 -07:00
mikecarper 233b61cc2d Use existing ACL grants for direct USB OTA commands 2026-10-29 18:46:41 -07:00
mikecarper 017efb1f77 Allow USB OTA administration over radio2 2026-10-29 17:49:15 -07:00
mjgodatandClaude Opus 5.5 748f727123 build(rak4631): omit radio presets where the size gates leave no room
RAK_4631_companion_radio_full has no flash for presets (~3.9 KB over its
linker region even after shrinking), and the RAK_4631_repeater Full
sensors + LoRa OTA image has 68 bytes of runtime-RAM headroom against a
~220-byte resident preset table. Both set MESH_ENABLE_RADIO_PRESETS=0;
gates and reserves are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 17:38:01 -07:00
mikecarper 3ed49f39ae Allow longer waits for USB OTA admin replies 2026-10-29 16:31:29 -07:00
mjgodatandClaude Opus 5.5 7ec2f184c3 docs: keep internal design/plan notes out of the hosted docs tree
They lacked the hosted-doc banner (CI hosted-doc-links) and are working
notes, not user documentation.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 16:06:14 -07:00
mjgodatandClaude Opus 5.5 1f76b79fa4 feat(presets): MESH_ENABLE_RADIO_PRESETS build switch (off on STM32 and ESP-NOW-only)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 15:47:59 -07:00
mikecarper f959af2677 Allow direct OTA administration by known repeater key 2026-10-29 14:20:12 -07:00
mjgodatandClaude Opus 5.5 437a4dd5f3 Merge upstream keymindCascade into radio presets
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 14:14:34 -07:00
mjgodatandClaude Opus 5.5 a417ae6ef7 feat(presets): companion preset commands
Companions (T114, Cardputer) handle get/add/load/del preset from local
operators only: USB/TCP terminal, framed command 0x42, browser CLI and the
UI. An authorized LoRa CLI command (nonzero sender timestamp) is not
consumed, since companions have no revert path. Loads go through
applyAndSaveRadioParams with the same replies as "set radio". Exposes
loadRadioPreset/activeRadioPreset/radioPresetTable for the Cardputer UI.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 11:41:13 -07:00
mjgodatandClaude Opus 5.5 6e4aea8c32 feat(presets): slot 1 defaults to the US/Canada standard
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 11:37:44 -07:00
mjgodatandClaude Opus 5.5 d0db89bbcd fix(presets): unguard preset file include, commit on room/sensor admin login, avoid NAME_MAX
- CommonCLI.cpp included RadioPresetFile.h only on nRF52/STM32; ESP32 and
  RP2040 builds could not see the file helpers. Include it unconditionally.
- Room server and sensor now commit a pending remote preset load on a
  successful strict-admin login, like the repeater; drop the doc caveat.
- Rename RadioPresetTable::NAME_MAX to MAX_NAME_LEN: newlib/ESP-IDF
  <limits.h> defines NAME_MAX as a macro. Host harnesses now predefine
  NAME_MAX so such collisions fail on host too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 11:33:51 -07:00
mjgodatandClaude Opus 5.5 20b2400199 docs(presets): slot 1 defaults to the US/Canada standard
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 11:28:16 -07:00
mjgodatandClaude Opus 5.5 6dea450861 feat(presets): repeater preset commands with login-confirmed switch
CommonCLI owns a RadioPresetCLI wired through static hook trampolines
(current/accepts/apply via the existing primary-radio save+apply path,
/presets storage via RadioPresetFile.h). begin() runs at the end of
loadPrefs, loop() next to the radio profiles, and dispatch precedes
radio profiles with remote = sender_timestamp != 0. A fresh strict-admin
repeater login (LoRa or ESP-NOW bridge) commits a pending remote load.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 11:26:41 -07:00
mjgodatandClaude Opus 5.5 773fce1428 docs: radio presets and Cardputer chat focus design and plan
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 11:06:18 -07:00
Florent 5d7100ae7d ui: add some parameters to the cli (mostly regarding eink behaviour) 2026-10-29 08:34:41 -04:00
mikecarper 38a187b04a Merge remote-tracking branch 'origin/keymindCascade' into keymindCascade 2026-10-29 00:55:43 -07:00
mikecarper 92626fe239 Keep dedicated ESP-NOW awake across delayed WiFi startup 2026-10-29 00:41:23 -07:00
mikecarper f380839433 Support opt-in case-insensitive flood text patterns 2026-10-28 23:45:15 -07:00
mikecarper 3bcd5ae685 Add acknowledged ESP-NOW peer delivery and physical split-radio checks 2026-10-28 22:34:12 -07:00
mikecarper c95d227c83 Keep displays awake for two minutes on first installation 2026-10-28 18:31:01 -07:00
mikecarper d270cd611a Add split RX and TX repeater modes with source-based bridge routing 2026-10-28 15:34:42 -07:00
mikecarper 2fa1b63e14 Allow bridge ingress to target radio2 without primary fallback 2026-10-28 15:10:17 -07:00
mikecarper 67009e0d1e Add ESP32 app slot selection to the CLI 2026-10-28 14:03:31 -07:00
mikecarper 1d09ea4bde Expose board-aware setting capabilities and saved primary preamble 2026-10-28 12:52:48 -07:00
mikecarper 4518f3db81 Add daylight and daily operating hours to power scheduling 2026-10-28 12:09:40 -07:00
mikecarper 37b294dfd1 Record 1.18.0.2 Mercerwood radio checks 2026-10-28 10:23:45 -07:00
mikecarper c9acec474b Record final emergency power and constrained-profile build checks 2026-10-28 05:07:58 -07:00
mikecarper e86710eda2 Document emergency power controls and record three-board wake tests 2026-10-28 03:40:25 -07:00
mikecarper dfef59331c Merge remote-tracking branch 'origin/keymindCascade' into keymindCascade 2026-10-28 02:33:24 -07:00
mikecarper b18ba8288a Report the running firmware USB mode without disturbing logging 2026-10-28 02:14:11 -07:00
mikecarper f4f9453248 Suspend the RAK3401 amplifier during emergency sleep 2026-10-28 02:12:04 -07:00