mikecarper
63f4642252
Merge observer OTA channel switching into keymindCascade
2026-10-04 00:26:46 -07:00
mikecarper
72eb37c229
Merge latest PowerSaving-v17 BOOT button support
2026-10-03 23:56:38 -07:00
mikecarper
30de48d27e
Document Companion Bluetooth pairing PIN CLI
2026-10-03 23:44:23 -07:00
mikecarper
c3d3c4e294
Retain and isolate delayed Companion results under backpressure
2026-10-03 23:22:34 -07:00
mikecarper
46df653dbc
Share bounded STM32 Companion preference wire metadata
2026-10-03 23:16:37 -07:00
mikecarper
38563a9828
Update preference snapshot CI contract for bounded value copies
2026-10-03 22:44:03 -07:00
mikecarper
54e5b0b996
Bound STM32 Companion preference image writes
2026-10-03 22:41:45 -07:00
mikecarper
59e761262d
Copy only persisted Companion preference values during loading
2026-10-03 22:16:31 -07:00
mikecarper
2817e180ec
Separate GPS UART ownership and collapse shared Companion ports
2026-10-03 21:42:54 -07:00
mikecarper
9693c87002
Ignore inactive discovery tags without clearing other requests
2026-10-03 21:28:40 -07:00
mikecarper
161600b4b7
Inspect received ACK route before clearing its header
2026-10-03 21:28:24 -07:00
mikecarper
399464ea37
Use bounded frame transmission for Companion hardware UART
2026-10-03 21:23:14 -07:00
mikecarper
ea938e8e84
Preserve ACK ownership across contact relocation and retirement
2026-10-03 21:10:49 -07:00
mikecarper
d29cba046b
Align OTA profile prefix regression with frozen source identity
2026-10-03 20:51:14 -07:00
mikecarper
e368b52f7d
Bind resumed firmware packages to their effective build recipe
2026-10-03 20:48:49 -07:00
mikecarper
eab6676316
Use resolved PlatformIO directories for migration packaging
2026-10-03 20:35:27 -07:00
mikecarper
7945d5bf5a
Retain Companion ACK notifications during host backpressure
2026-10-03 20:23:50 -07:00
mikecarper
326f8cdf78
Default optional debug flags safely in strict shells
2026-10-03 19:55:57 -07:00
mikecarper
eee4fa9e98
Treat public identity as a read-only CLI preference
2026-10-03 19:52:37 -07:00
mikecarper
72898f7dd5
Update USB startup fixture for retained mOTA responses
2026-10-03 19:45:06 -07:00
mikecarper
4fca38363d
Update CLI identity regression for captured reply routing
2026-10-03 19:39:58 -07:00
mikecarper
a02554dd69
Protect build cleanup from unsafe output paths
2026-10-03 19:31:10 -07:00
mikecarper
f0828e025a
Share lossless voice prefixes across companion announcements
2026-10-03 19:11:15 -07:00
mikecarper
d4f88680e7
Run USB and persistence regression suites in CI
2026-10-03 19:01:37 -07:00
mikecarper
4837265648
Preserve USB mOTA ownership across deadlines and logging handoffs
2026-10-03 19:01:22 -07:00
mikecarper
ecdaacdd58
Reject oversized USB frames and bound serial receive work
2026-10-03 18:55:23 -07:00
mikecarper
d9088f9e86
Preserve telemetry preferences and routes across storage failures
2026-10-03 18:34:12 -07:00
mikecarper
1d05ef9e86
Reduce radio preamble validation overhead with equivalent math
2026-10-03 18:31:46 -07:00
mikecarper
81676be25c
Validate management CLI captures and authenticated ACL snapshots
2026-10-03 18:29:12 -07:00
mikecarper
071ea533b0
Fix management browser authentication and stale decode results
2026-10-03 18:27:49 -07:00
mikecarper
581339efe7
Harden management report persistence and CLI input handling
2026-10-03 18:26:26 -07:00
mikecarper
06fc2d58d1
Fix radio profile reconfiguration transaction results
2026-10-03 18:25:22 -07:00
mikecarper
18f7edcf82
Keep USB watchdog snapshots coherent and fail-safe
2026-10-03 18:22:32 -07:00
Adam Gessaman
a928498c46
Merge pull request #63 from agessaman/merge/ota-branch-into-observer-firmware-dev
...
feat(ota): ota branch channel switch (dev)
2026-10-03 16:41:52 -07:00
mikecarper
5ee6059564
Finalize USB watchdog management format as MGR2
2026-10-03 16:34:37 -07:00
mikecarper
eeb25a8b5f
Merge USB session safety and preserve GPS preference compatibility
2026-10-03 16:12:32 -07:00
agessaman
45d8f15098
Merge branch 'feat/ota-branch-switch' into merge/ota-branch-into-observer-firmware-dev
2026-10-03 15:52:39 -07:00
agessaman
8ec31dda71
fix(ota): skip the bare compat search literal when scanning an image
...
Every image also holds "ota-compat:" with no value (the search string);
finding it first made every channel switch look untagged.
2026-10-03 15:52:21 -07:00
mikecarper
7803d4fb07
Add saved repeater trace exception while repeating is disabled
2026-10-03 15:48:44 -07:00
agessaman
a0856bed72
feat(ota): dev stores /mqtt.json, so its state generation is 2
...
Builds that only read /mqtt_prefs (gen 1) are refused as channel-switch
targets until they can read /mqtt.json.
2026-10-03 15:47:01 -07:00
agessaman
baf01a5c16
Merge branch 'feat/ota-branch-switch' into merge/ota-branch-into-observer-firmware-dev
...
# Conflicts:
# examples/simple_repeater/MyMesh.cpp
2026-10-03 15:47:01 -07:00
agessaman
ed8af1b7ca
fix(ota): refuse a channel switch to a build that cannot carry this node
...
A switch can land on an older build: e.g. prod cannot read dev's /mqtt.json,
and prod's M7 image has no Ethernet. Each image carries an ota-compat tag
(state generation + transports). A switch is flashed without rebooting, the
new image's tag is read (bounded by its length), and boot is pointed back at
the running image unless the target keeps this node's state and transports.
CI now requires the tag in every published binary.
2026-10-03 15:46:46 -07:00
mikecarper
65512661c3
Fix USB logging session safety and add hourly GPS sync interval
2026-10-03 15:43:35 -07:00
mikecarper
9b82c74275
Merge origin/keymindCascade USB reconnect fixes
2026-10-03 15:37:49 -07:00
agessaman
f652e7d185
fix(ota): flash the channel ota update checked, not a later ota branch
...
The deferred flash re-read the channel preference ~2.5 s after ota update
acknowledged its target; capture it when the update is scheduled.
2026-10-03 15:37:49 -07:00
agessaman
a1943a8eac
fix(ota): always offer another channel's image, even from the same commit
...
Prod and beta are often built from one commit (e.g. after a dev->prod merge),
so a hash match does not mean the images are the same: the native base differs.
After the flash the target channel is native, so this cannot loop.
2026-10-03 15:37:49 -07:00
mikecarper
3add4695cc
Harden USB logging and persist watchdog events in management reports
2026-10-03 15:29:19 -07:00
agessaman
ee88192acb
Merge branch 'feat/ota-branch-switch' into merge/ota-branch-into-observer-firmware-dev
...
# Conflicts:
# .github/workflows/build-observer-firmwares.yml
# examples/simple_repeater/MyMesh.cpp
# examples/simple_room_server/MyMesh.cpp
# src/helpers/ESP32Board.cpp
# src/helpers/ESP32Board.h
# test/test_config_serializer/test_config_serializer.cpp
2026-10-03 15:24:33 -07:00
agessaman
65d80bc908
ci(ota): verify each published binary's native channel by tag
...
Every observer build now carries both channel URLs, so checking for a URL's
presence or absence can no longer tell prod from beta (and the old checks would
reject every build). Read the ota-base-* tags from every .bin in out/ instead
of a single ELF, with URLs shared by build.sh and both workflows.
2026-10-03 15:24:11 -07:00
agessaman
9c65e198f1
feat(ota): prod/beta channel names for ota branch, with stable/dev aliases
...
Report the selected channel and the build's own channel, tag each baked-in
base for CI, and list ota branch in the CLI docs and portal autocomplete.
2026-10-03 15:19:06 -07:00