Commit Graph
5219 Commits
Author SHA1 Message Date
mikecarper e6abf3ea7d Share WiFi OTA seeding across full ESP32 builds 2026-07-29 01:51:01 -07:00
entr0p1 d7f378b489 Clean up debugs left on in platform.ini files 2026-07-29 18:27:15 +10:00
mikecarper 3a5f330727 Document WiFi builds and improve firmware UX 2026-07-29 00:44:35 -07:00
mikecarper 44faf158b2 Add path-qualified channel scope buckets 2026-07-28 23:33:42 -07:00
Che177 5a04e060a5 room_server: use standard mesh debug logging 2026-07-28 21:57:42 -07:00
mikecarper 586423d0d2 Extend repeater flood control and logging reliability 2026-07-28 16:05:52 -07:00
Adam Gessaman 971a3b1464 Merge pull request #38 from agessaman/feat/packet-filters
Enhance MQTT slot filters with named types and downgrade support
2026-07-28 09:10:46 -07:00
agessaman ecbb5005e9 feat(mqtt): implement downgrade contract for MQTT preferences
Enhance the MQTT preferences handling by establishing a downgrade
contract that ensures compatibility between different firmware versions.
This contract allows nodes to read settings from newer builds while
safeguarding against data loss during downgrades. The implementation
includes updates to the classification logic, ensuring that longer
payloads from newer versions are handled correctly without rejecting
files, thus preserving critical WiFi credentials and broker settings.
2026-07-28 09:03:19 -07:00
agessaman 52bd27190f feat(mqtt): enhance packet filter functionality with named types
Add support for named packet types in per-slot filters, allowing users
to specify packet types using descriptive names alongside numeric values.
This improves usability and clarity in configuring MQTT slot filters.
Updates include modifications to the parsing logic, WebConfig interface,
and related documentation to reflect the new naming conventions.
2026-07-27 22:29:11 -07:00
Liam Cottle 03b6ef4b0d Merge pull request #3047 from dg1tal/codex/docs-3044-group-privacy
Clarify hashtag privacy and group sender identity
2026-07-28 15:41:48 +12:00
Liam Cottle adc631f315 Merge pull request #3048 from entr0p1/fix/startota-failure-recovery
nRF52840 "start ota" Failure Recovery
2026-07-28 15:36:48 +12:00
Che177 3a9f19c14b room_server: add room.post system posts 2026-07-27 19:50:13 -07:00
agessaman e00b29b4b8 feat(mqtt): add per-slot packet filters for MQTT slots
Introduce per-slot packet filters to allow users to specify which
packet types are uploaded for each MQTT slot. This feature enhances
the flexibility of the MQTT bridge by enabling users to configure
allowlists for packet types, improving the efficiency of data
transmissions. The implementation includes updates to the WebConfig
interface, internal handling of packet filters, and necessary
modifications to the MQTT preferences structure.
2026-07-27 18:34:04 -07:00
entr0p1 4050b7d526 nRF52840 "start ota" Failure Recovery
If Bluefruit.begin fails, BLE OTA mode won't actually start and the board might require a reboot to reattempt.

Fixes:
- Bluefruit.begin returns false in NRF52Board.startOTAUpdate if OTA mode fails to start. User is notified of the fault through existing error message in CommonCLI and can reattempt "start ota" command.
2026-07-28 10:14:59 +10:00
DG1TAL 84ceabfd0d Clarify hashtag privacy and group sender identity 2026-07-27 20:07:08 +02:00
liamcottle dd778e2189 fix bluetooth toggle on ui tiny 2026-07-28 03:50:08 +12:00
liamcottle e7f2c71701 usb companion firmwares now require build flag to include usb interface 2026-07-28 03:45:02 +12:00
liamcottle 834ad722a4 remove old rak ethernet interface 2026-07-28 03:18:54 +12:00
liamcottle 203fd4e407 refactor rak13800 to new ethernet interface class 2026-07-28 03:18:54 +12:00
liamcottle e672679d6e refactored companion interfaces to allow for multiple active connection modes 2026-07-28 03:18:54 +12:00
liamcottle b4143a4402 rename class 2026-07-28 03:18:54 +12:00
liamcottle 5de857f8f8 initial ch390 ethernet support for thinknode m7 companion 2026-07-28 03:18:54 +12:00
ripplebiz c86e63d2f5 Merge pull request #2982 from meshcore-dev/config-serializer
Config serializer
2026-07-27 17:58:03 +10:00
ripplebiz 301bc10dd3 Merge pull request #3034 from meshcore-dev/ui-color-refactor
UI color refactor
2026-07-27 17:45:12 +10:00
IoTThinks 9fb94272c6 Update GitHub funding username to IoTThinks 2026-07-27 09:54:21 +07:00
Liam Cottle cee6d94894 Merge pull request #3040 from blowfishpro/docs/FixPayloadDocsFormatting
Increase header levels on "Payloads" documentation page to fix table of contents
2026-07-27 14:13:09 +12:00
agessaman 3c5b25c2cf feat(mqtt): enhance neighbor discovery JSON handling
Introduce new methods to manage neighbor discovery JSON budget and
entries in MyMesh. This includes tracking the number of queried and
published neighbors, measuring JSON sizes, and handling truncation
when the buffer limit is reached. These improvements optimize the
neighbor discovery process and ensure efficient JSON message
construction for MQTT communications.
2026-07-26 19:10:51 -07:00
Talia b62b421456 docs: increase header levels on payloads page to fix table of contents
mkdocs will only consider the first H1 (if any) and subheaders under it for the table of contents

this increases the header levels of everything below "important concepts" by 1 so that the table of contents correctly resolves them
2026-07-26 15:55:27 -07:00
agessaman aba571ed7d feat(mqtt): enhance neighbor discovery with request management
Add functionality to manage neighbor discovery requests in MyMesh.
This includes handling the status of requests, updating the state
upon transmission success or failure, and implementing a timeout
mechanism for neighbor discovery queries. The changes improve the
efficiency and reliability of neighbor discovery operations in
MQTT-enabled environments.
2026-07-26 14:03:04 -07:00
mikecarper ea030f8e9a Add standardized ESP32 FULL logging builds 2026-07-25 10:24:21 -07:00
mikecarper ae2af7ef4d Harden observer preferences and portable controls 2026-07-25 07:59:44 -07:00
Jarosław Domański a1d632d16c Stop RX duty-cycle before CAD to avoid main-loop hang.
CAD on a still-running SX126x duty-cycle sequencer can lose CAD-done IRQ when the RTC knocks the chip back to standby, leaving scanChannel() waiting forever.
2026-07-25 14:57:11 +02:00
agessaman 0c86e0dcde chore: ignore throwaway build worktrees
observer-firmware had a .build-wt-<sha> worktree committed as a gitlink, which
made every CI checkout warn "No url found for submodule path ... in .gitmodules"
and broke `git submodule` in fresh clones. This branch has no such entry; ignore
the pattern so it stays that way, and skip it in both channels' paths-ignore
since a build worktree can never change the binaries.

The production build workflow is taken from observer-firmware verbatim, keeping
the copy on this branch identical and conflict-free on promotion.
2026-07-24 20:18:20 -07:00
agessaman df070833ba chore: untrack the .build-wt-028a5dca build worktree
It was committed as a gitlink (mode 160000) with no .gitmodules entry, so every
CI checkout's cleanup step ended with "No url found for submodule path
'.build-wt-028a5dca'" and a git exit-128 warning, and `git submodule` commands
failed in fresh clones. The worktree itself is removed locally; commit 028a5dca
stays reachable from this branch, so no history is affected.

Ignore the pattern so a throwaway build worktree cannot be committed again, and
add it to paths-ignore since such a directory can never change the binaries —
that also keeps this removal from triggering a pointless full rebuild.
2026-07-24 20:17:12 -07:00
agessaman c691864397 ci: give the beta channel its own concurrency group
Concurrency groups are repo-wide, not per-branch, so the beta build sharing
`flasher-publish` with the production workflows meant an in-flight beta build
forced a production build into the pending state — where the next run queued into
that group cancelled it outright. That is what silently dropped the production
build of the eastidahomesh preset fix: the beta build held the group from
22:29:24 to 22:37:34, production's build queued at 22:31:26 and went pending, and
its docs sync evicted it a second later.

Beta now uses its own group and, since the channels are no longer serialized
against each other, its flasher push rebase-retries the same way production's
does (with --autostash, because the scoped add here leaves the checkout dirty).

Also refresh the two workflow copies this branch never received: they still
triggered on the retired mqtt-bridge-implementation-flex branch, so they were
dead on push while still sitting in the shared group. Taking production's current
versions verbatim keeps them inert here and conflict-free on promotion.
2026-07-24 20:04:55 -07:00
agessaman 7ea93a640e ci: rebase with --autostash on the flasher push retry
A plain `git rebase` refuses to run when the checkout has unstaged changes, so
the retry path could fail instead of retrying. The beta workflow stages a scoped
subset on purpose (production's files must never ride along), which leaves the
rest of the checkout dirty and hits this exactly; keep all three flasher pushes
identical so it cannot resurface here either. Unstaged content stays unstaged,
so nothing extra gets published.
2026-07-24 20:04:31 -07:00
agessaman 5313aa01b1 ci: stop the docs sync from cancelling the observer firmware build
build-observer-firmwares.yml and sync-flasher-content.yml shared the
`flasher-publish` concurrency group. A mixed code+docs commit queues both, and
GitHub cancels any run left *pending* in an occupied group — cancel-in-progress:
false only shields runs already in progress. On 8fc96f68 the build lost that
race and was cancelled in 1s with zero jobs, so nothing was published.

Give each workflow its own group, and make the flasher push tolerate the
concurrent writes the shared group was guarding against: rebase onto the
sibling's commit and retry, up to 3 attempts. Both workflows generate
byte-identical docs and changelog content, so the loser's commit normally
rebases away to nothing and the push reports up-to-date.
2026-07-24 16:33:12 -07:00
agessaman 8fc96f68f2 fix(mqtt): update eastidahomesh broker preset 2026-07-24 15:31:19 -07:00
agessaman cfff9d5cb7 fix(mqtt): update eastidahomesh broker preset 2026-07-24 15:29:17 -07:00
ripplebiz e3de413a69 Merge pull request #3036 from oltaco/add-preamble-irq-flag
Fix missing PREAMBLE_DETECTED IRQ flag for all radio wrappers
2026-07-25 01:40:19 +10:00
taco 6b83de507d SX1268: add PREAMBLE_DETECTED to reported irq flags 2026-07-25 00:46:39 +10:00
taco 0d2b988f24 STM32WLx: add PREAMBLE_DETECTED to reported irq flags 2026-07-25 00:46:39 +10:00
taco c56928347f LLCC68: add PREAMBLE_DETECTED to reported irq flags 2026-07-25 00:46:39 +10:00
taco ea5d7c8bf5 LR1110: add PREAMBLE_DETECTED to reported irq flags 2026-07-25 00:46:36 +10:00
taco fae4803158 SX1262: add PREAMBLE_DETECTED to reported irq flags 2026-07-25 00:38:44 +10:00
mikecarper c1caa5ad81 Merge observer firmware and webconfig updates
# Conflicts:
#	MQTT_INTERNALS.md
#	build.sh
#	docs/cli_commands.md
#	examples/simple_repeater/MyMesh.cpp
#	examples/simple_repeater/MyMesh.h
#	examples/simple_repeater/UITask.cpp
#	examples/simple_room_server/MyMesh.cpp
#	examples/simple_room_server/MyMesh.h
#	examples/simple_room_server/UITask.cpp
#	examples/simple_sensor/SensorMesh.cpp
#	platformio.ini
#	scripts/generate_webconfig_html.py
#	src/MeshCore.h
#	src/helpers/CommonCLI.cpp
#	src/helpers/CommonCLI.h
#	src/helpers/CommonCLI_Observer.cpp
#	src/helpers/ESP32Board.h
#	src/helpers/MQTTMessageBuilder.cpp
#	src/helpers/MQTTPresets.h
#	src/helpers/NRF52Board.cpp
#	src/helpers/NRF52Board.h
#	src/helpers/bridges/MQTTBridge.cpp
#	src/helpers/bridges/MQTTBridge.h
#	src/helpers/esp32/WebConfigServer.cpp
#	src/helpers/esp32/WebConfigServer.h
#	src/helpers/radiolib/RadioLibWrappers.cpp
#	src/helpers/radiolib/RadioLibWrappers.h
#	variants/lilygo_tbeam_SX1262/platformio.ini
#	variants/lilygo_tbeam_SX1276/platformio.ini
#	variants/lilygo_tlora_v2_1/platformio.ini
#	webui/index.html
2026-07-24 02:16:47 -07:00
Scott Powell f83ad03e5e * T114 display fix 2026-07-24 18:35:56 +10:00
mikecarper 9a4834b192 Merge PowerSaving v16 updates 2026-07-24 01:34:35 -07:00
mikecarper 566ef08f25 Merge upstream dev into keymindCascade 2026-07-24 01:23:20 -07:00
mikecarper f1caf74d33 Keep certificate bundle in full ESP32 builds 2026-07-24 01:13:57 -07:00