Commit Graph
11779 Commits
Author SHA1 Message Date
renovate[bot]andGitHub 84112d1af9 Update meshtastic/web to v2.7.1 2026-06-24 01:42:24 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
e3145f9007 Update actions/cache action to v6 (#10771)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-23 20:41:42 -05:00
54e0d8d0ab fix(phone-api): skip manifest scan for node-info-only config requests (#10754)
* fix(fs): bound getFiles() result size and harden traversal

The recursive filesystem traversal in getFiles() could grow its result
vector without limit, contributing to heap pressure on memory-constrained
devices during client config starts. The implementation also relied on
unbounded strcpy and per-entry String() allocations for dot-suffix
filtering, and leaked the directory handle when the opened path was not
a directory.

Rework the traversal to address all of those at once:

- Add optional maxCount (default 64) and wasLimited out-param. The walk
  stops once maxCount entries have been collected and wasLimited is set,
  so callers can distinguish a complete listing from a truncated one.
  Default arguments preserve backward compatibility for existing callers.

- Extract the recursive walk into a collectFiles() helper in an
  anonymous namespace, accumulating into a single caller-owned vector
  instead of building and inserting temporary vectors at every recursion
  level.

- Replace strcpy with strlcpy so file_name writes are bounded by the
  destination buffer.

- Replace String(name).endsWith(".") with a stack-based
  pathEndsWithDot() helper to avoid a heap allocation per entry.

- Close the directory handle when the opened path is not a directory,
  and close the file in both branches of recursion instead of only the
  leaf branch (the previous code leaked the handle when depth was
  exhausted).

- Compile-gate the std::bad_alloc reserve probe-down behind
  __cpp_exceptions / __EXCEPTIONS so the fallback only compiles where
  bad_alloc is actually catchable. No-exception targets (nRF52, RP2040,
  STM32, ESP32-C6) skip the probe and rely on the bounded maxCount
  alone, which is safe because the default cap is small enough to fit
  comfortably in available RAM on every supported platform.

* fix(phone-api): skip manifest scan for node-info-only config requests

A client can request a node-info-only config response by sending
want_config_id with the SPECIAL_NONCE_ONLY_NODES nonce. The manifest
walk in handleStartConfig() ran unconditionally even though
STATE_SEND_FILEMANIFEST short-circuits past the manifest on that path,
so the SPI lock and recursive filesystem traversal were wasted work.
On memory-constrained devices this extra heap pressure was enough to
trigger allocation aborts and spontaneous reboots before the node-info
response could complete.

Gate the manifest call behind config_nonce != SPECIAL_NONCE_ONLY_NODES
so the node-info-only path no longer touches the filesystem at all, and
release any stale manifest storage left over from a previous run.

For normal full-config requests, also tighten the scan limits from
depth 10 / unbounded to depth 3 / max 64 entries via the new getFiles()
parameters. A 10-level recursive listing was never useful for a client
file picker and amplified heap pressure for no benefit. Log a warning
when the listing was truncated so operators can distinguish a bounded
result from a genuinely empty filesystem.

A few small cleanups fall out of the above:

- Replace raw spiLock->lock()/unlock() with a LockGuard so the lock is
  released even if getFiles() throws on exception-enabled targets.

- Use a releaseFilesManifest() helper (swap-with-empty idiom) in
  close() and the STATE_SEND_FILEMANIFEST drain path instead of the
  previous clear()+shrink_to_fit() pair. Equivalent behavior, but the
  swap idiom is the canonical vector-freeing pattern and centralizing
  it avoids divergence between call sites.

- Use %zu for the size_t log arguments.

* fix(fs): harden bounded directory traversal

Close each child directory entry before recursive descent so bounded manifest scans do not stack file handles on constrained filesystems.

Treat null or overlong paths as truncated listings, handle reserve length failures like allocation failures, and keep manifest constants aligned with repository naming.

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
v2.7.26.54e0d8d
2026-06-23 11:26:52 -05:00
640002dc93 Upgrade trunk (#10763)
Co-authored-by: vidplace7 <1779290+vidplace7@users.noreply.github.com>
2026-06-23 06:32:17 -05:00
CopilotGitHubcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>Ben Meadors
e4c1374b99 fix(FSCommon): add nRF52 LittleFS empty-name guard to getFiles() (#10757)
* Initial plan

* fix(FSCommon): add file.name()[0] guard in getFiles() for nRF52 LittleFS bug workaround

* style(FSCommon): run clang-format (trunk fmt)

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
2026-06-23 06:23:53 -05:00
Ben Meadors 22d08b4303 Fix build on picomputer 2026-06-23 06:03:37 -05:00
560515f014 Upgrade trunk (#10760)
Co-authored-by: vidplace7 <1779290+vidplace7@users.noreply.github.com>
2026-06-22 06:22:04 -05:00
ManuelGitHubcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
4044f4af6c tdeck touch driver fix (#10740)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-06-20 13:15:11 -05:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
3b20601697 Update meshtastic/device-ui digest to 1c45ebc (#10749)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-19 19:56:04 -05:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
a9a88e7ac7 Update platform-native digest to 61067ac (#10750)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-19 19:55:49 -05:00
Jonathan BennettandGitHub 20c9e154dd enable Adafruit SHTC3 library on native (#10747) 2026-06-19 12:52:10 -05:00
e08b67aa8c Upgrade trunk (#10738)
Co-authored-by: vidplace7 <1779290+vidplace7@users.noreply.github.com>
2026-06-19 06:18:41 -05:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
df3d5bb344 Update actions/checkout action to v7 (#10744)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-19 06:18:09 -05:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
804ec0fb1b Update meshtastic/device-ui digest to 6cadf54 (#10743)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-19 06:17:41 -05:00
8975181bd0 fix(esp32): skip RTC timer wake on user shutdown; TAP V2 OCV and partition (#10739)
* fix(esp32): skip RTC timer wake on user shutdown

Do not arm esp_sleep_enable_timer_wakeup when msecToWake is portMAX_DELAY (UI shutdown), matching nRF52 system_off semantics.

fix(rak_wismesh_tap_v2): Tag OCV curve and 16MB partition

Add OCV_ARRAY matching WisMesh Tag for accurate SOC. Use 16MB flash partition scheme for TAP V2 hardware.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Trunkt

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
2026-06-18 16:30:41 -05:00
Jonathan BennettandGitHub 1003d154b2 Update OCV_ARRAY values in Thinknode m5 variant.h 2026-06-17 22:16:09 -05:00
Jonathan BennettandGitHub 8ba9d0d15f Set the time from GPS every 30 minutes (#10737) 2026-06-17 18:46:58 -05:00
ca1304e6da Upgrade trunk (#10720)
Co-authored-by: vidplace7 <1779290+vidplace7@users.noreply.github.com>
2026-06-17 05:54:26 -05:00
Jonathan BennettandGitHub 40adf3a0d0 Beta fixes (#10728)
* Wipe message Store on factory reset

* Check for destination 0 in a new message, and convert to broadcast

* Make sure CHARGE_LED_state gets turned off, to avoid stuck LEDs

* Take the spiLock in MessageStore when clearing messages

* Trunk

* Add thinknode M5 voltage curve

* Fix the oops
2026-06-16 22:37:14 -05:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
ac25b85f5b Update meshtastic/device-ui digest to 4ec010c (#10732)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-16 20:21:11 -05:00
a49729eb89 Additional *RAK* missing values for 6421 / 13300 13302 modules + Zebra/Nebra Hat Configs (#10644)
* rebased to master

* Update bin/config.d/lora-ZebraHat_2W.yaml

Co-authored-by: Austin <vidplace7@gmail.com>

* Update bin/config.d/lora-ZebraHat_1W.yaml

Co-authored-by: Austin <vidplace7@gmail.com>

* Update bin/config.d/lora-NebraHat_2W.yaml

Co-authored-by: Austin <vidplace7@gmail.com>

* Update bin/config.d/lora-NebraHat_1W.yaml

Co-authored-by: Austin <vidplace7@gmail.com>

* Remove TX_GAIN_LORA configuration line

* Remove TX_GAIN_LORA configuration line

* Comment out TX_GAIN_LORA configuration

* Comment out TX_GAIN_LORA configuration

* Update lora-ok3506-RAK6421-13300-slot1.yaml

* Update lora-ok3506-RAK6421-13300-slot2.yaml

* Update lora-RAK6421-13300-slot1.yaml

* Update lora-RAK6421-13300-slot2.yaml

---------

Co-authored-by: Austin <vidplace7@gmail.com>
2026-06-16 11:22:45 -05:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
6e02b9aed9 Update Sensirion I2C SCD30 to v1.1.1 (#10294)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-14 07:08:28 -05:00
9972feb5bb Lora led rx (#10674)
* add optional LED_LORA to indicate LoRa TX

* Briefly flash LED_LORA on packet RX

---------

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
2026-06-13 12:06:06 -05:00
c9398cccaa Use standard GPS enable pin, for smarter power control on M3 (#10671)
* Use standard GPS enable pin, for smarter power control on M3

* Enable GPS pin in variant.cpp initialization

---------

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
2026-06-13 12:04:41 -05:00
88137c60e6 Upgrade trunk (#10701)
Co-authored-by: vidplace7 <1779290+vidplace7@users.noreply.github.com>
2026-06-12 05:57:51 -05:00
4e7181c798 Upgrade trunk (#10621)
Co-authored-by: vidplace7 <1779290+vidplace7@users.noreply.github.com>
2026-06-11 08:26:34 -05:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
06db0f1b51 Update actions/github-script action to v9 (#10691)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-11 06:53:44 -05:00
Ben Meadors fcff9af16c Add placeholder comment for web flasher during PR builds 2026-06-10 17:27:58 -05:00
Ben Meadors dfae28895a fix(workflows): update artifact selection to exclude expired firmware size artifacts 2026-06-10 13:23:58 -05:00
Ben Meadors 6b3b2630f8 Flasher link fix 2026-06-10 13:00:54 -05:00
bfc206a47b meshtasticd: Add configs for B&Q Station G3 (#10673)
configs for raspberry pi and luckfox lyra zero

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
2026-06-10 12:59:55 -05:00
Ben Meadors f29f32bfba Restrict web flasher link comments to organization members only 2026-06-10 06:35:18 -05:00
Ben Meadors 9eff900f8e Add GitHub Action to post web flasher link comments on successful PR workflows 2026-06-10 06:35:05 -05:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
3471c0e6fe Update alpine Docker tag to v3.24 (#10668)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-09 20:40:48 -05:00
49c5ad3875 Automated version bumps (#10667)
Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>
2026-06-09 20:07:45 -05:00
104df5f9e5 Update protobufs (#10654)
Co-authored-by: vidplace7 <1779290+vidplace7@users.noreply.github.com>
v2.7.25.104df5f
2026-06-08 16:20:05 -05:00
Jonathan BennettandBen Meadors 7440cd54bb Update nanopb download URL in workflow 2026-06-08 14:59:01 -05:00
AustinandGitHub 5c769023af Actions: Update protobufs using the triggering branch (#10612) 2026-06-08 14:53:12 -05:00
c7f17a80b2 Enhance RTC handling with unit test support for system time fallback (#10642)
* Enhance RTC handling with unit test support for system time fallback

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-06-06 14:15:49 -05:00
Jonathan BennettandGitHub 41a558cc5e Update Thinknode m7 pins (#10635) 2026-06-05 19:32:06 -05:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
be42d00728 Update meshtastic/device-ui digest to 502ba30 (#10629)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-05 13:26:21 -05:00
LittleatonandBen Meadors 6cd9a3a42b missing module config (#10496)
13302 and 13300 had missing module config for slot 2, also the rf switch and voltage info was missing.

Without that the auto setting in the config.yaml will try to use the default  lora-hat-rak-6421-pi-hat.yaml and things do not work correctly.
2026-06-05 08:37:24 -05:00
pdxlocationsandBen Meadors f56536417b feat: Add Module configuration for RAK13300 and RAK13302 in Slot 2 (#10632) 2026-06-05 06:11:46 -05:00
AustinandGitHub 266c143359 Debian: Correctly build without signing (for forks) (#10605) 2026-06-02 18:12:27 -04:00
cd56674429 Upgrade trunk (#10608)
Co-authored-by: vidplace7 <1779290+vidplace7@users.noreply.github.com>
2026-06-02 16:44:29 -04:00
AustinandGitHub 9e672db74c Actions: Update trunk-io/trunk-action to v1.3.1 (#10607)
Trunk isn't properly updating the `v1` tag in-place. Switch to specific tags and let renovate handle the rest.
Maybe
2026-06-02 16:39:34 -04:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
367cb9208a Update SparkFun MMC5983MA Magnetometer to v1.1.5 (#10599)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-02 06:24:01 -04:00
fe08803321 Upgrade trunk (#10600)
Co-authored-by: vidplace7 <1779290+vidplace7@users.noreply.github.com>
2026-06-02 05:45:30 -04:00
CopilotBen Meadorscopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
51f56ccb4e Fix mini-epaper-s3 build: resolve SensorLib isBitSet macro conflict with SparkFun MMC5983MA (#10584)
* Initial plan

* Fix SensorLib isBitSet macro conflict with SparkFun MMC5983MA library

SensorLib 0.3.4 defines isBitSet as a C preprocessor macro in SensorLib.h,
which conflicts with SparkFun_MMC5983MA_IO.h's class method of the same name.
When both libraries are included in the same translation unit (e.g., via
configuration.h → SensorRtcHelper.hpp → SensorLib chain, alongside the
SparkFun MMC5983MA library in lib_deps), the macro expansion causes compile
errors like 'expected unqualified-id before const'.

Fix: undefine the isBitSet macro right after including SensorRtcHelper.hpp
in configuration.h, so it doesn't interfere with SparkFun's class method.

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-05-30 08:59:55 -05:00
7ddecd1dd7 Compass improvements/refactoring (#10166)
* Infinite calibration loop fix

* Save calibration

* Screen refresh

* reduce repeated code

* reduce repeated code to reduce flash

* fix Waypoint compass size and no fix no heading labels

* Don't show compass unless we have a heading and location

* If no calculated heading from moving, we should have no heading

* Slow walking calculated heading and auto stale heading when not moving

* Triming flash space

* cleanup

* show "?" when no location or heading for distance and heading screen

* cleanup

* Stale heading logic

* final trim

* Compass Calibration screen redesign

* Trunk Fix

* Compile fix

* patch

* Update src/motion/MotionSensor.cpp

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update WaypointModule.cpp

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-05-30 07:05:55 -05:00