š Enhancements
- Move PMSA003I to separate class and update AQ telemetry by @oscgonfer in #7190
- Multi message storage by @HarukiToreda in #8182
- Add support for setting API port from the config file by @tedwardd in #8435
- PIN_PWR_DELAY_MS --> PERIPHERAL_WARMUP_MS by @fifieldt in #8467
- CLIENT_BASE: Act like ROUTER_LATE for fav'd nodes, instead of like ROUTER by @korbinianbauer in #8567
- Rak3112 support by @ford-jones in #8591
- Add systemd wrapper by @tedwardd in #8676
- Adding support for InkHUD joystick navigation for the Seeed Wio Tracker L1 E-ink by @zeropt in #8678
- Gr language specific font by @apo-mak in #8808
- Detect if NTP is active on native by @jp-bennett in #8962
- Add Rebooting to DFU mode notification as a simple pop-up by @Xaositek in #8970
- PIO: Fix ESP32 sub-variant inheritance by @vidplace7 in #8983
- Prep work for better Store and Forward by @jp-bennett in #8999
- Additional Emoji by @Ixitxachitl in #9020
- Add Russell, an STM32WL balloon-optimized node by @ndoo in #9079
- Add menus for Smart Position, Broadcast Interval and Position Interval by @Xaositek in #9080
- Improve sanitizeString function for Node Names by @Xaositek in #9086
- Add Temporary Mute to Home frame and unbury Notification Options by @Xaositek in #9097
- Add a welcome message for new contributors by @fifieldt in #9119
- Calculate hops correctly even when hop_start==0 by @esev in #9120
- Add STORE_FORWARD_PLUSPLUS_APP to core portnum checks by @jp-bennett in #9127
- Faster rotary encoder events by @brad112358 in #9146
- Add support for LilyGo T-Echo Plus by @thebentern in #9149
- Refactored some of the system menus to the new DRY method (Redux) by @Xaositek in #9152
- Add a .clang-format file by @Jorropo in #9154
- Add custom coding rate configuration for LoRa by @jp-bennett in #9155
- Add list of text message packet IDs, and check for dupes by @jp-bennett in #9180
- Add option to Mute/Unmute Channel to BaseUI by @Xaositek in #9194
- Mute: Nodes by @ford-jones in #9209
- Screenless Devices want to mute too! by @Xaositek in #9210
- Migrate all of the Meshtastic API attributes into the ini as a source of truth by @thebentern in #9214
- Pioarduino preparation by @MartinEmrich in #9223
- Meshtastic unified OTA by @thebentern in #9231
- Fix TFT_MESH settings across setting and recalling by @Xaositek in #9234
- Add release notes generation and publishing workflow by @thebentern in #9255
- Unified ESP32 OTA firmware by @vidplace7 in #9258
- Add support for uMesh Modules by @linser233 in #9259
- Extra pins by @jp-bennett in #9260
- BaseUI: Autosave Messages by @HarukiToreda in #9269
- Node Actions Menu Overhaul by @Xaositek in #9287
- Added I2C scanner a check for the QMC6310N. by @lewisxhe in #9305
- Allow ICM20948 IMU to sleep by @HarukiToreda in #9324
- Meshtastic OTA (moar) by @thebentern in #9327
- Add sqlite depdendency (Cherry-picks from sfpp) by @fifieldt in #9328
- Add interrupt for external charge detection by @jp-bennett in #9332
- Improve BaseUI Preset Change Flow by @Xaositek in #9343
- Implement graduated scaling for NodeInfo send timeout based on active mesh size by @thebentern in #9364
š Bug fixes and maintenance
- RTC: PCF85063 support, port to SensorLib 0.3.1 by @WillyJL in #8061
- Added tcxo definition to mesh-tab by @valzzu in #8604
- Preliminary Thinknode M4 Support by @caveman99 in #8754
- Actions: Compact manifest job output summary by @vidplace7 in #8957
- PlatformIO: Restructure networking_base for re-use by @vidplace7 in #8964
- Add LilyGO T-Beam 1W support by @santosvivos in #8967
- PIO: Remove useless inheritence (references extends env) by @vidplace7 in #8987
- Macro guard heap_caps_malloc_extmem_enable from SENSECAP_INDICATOR by @Xaositek in #9007
- Add Rak 6421 autoconf by @jp-bennett in #9010
- Implement basic github action comment reporting target diffs by @Jorropo in #9022
- In protobuf update, allow develop branch to auto-update by @jp-bennett in #9027
- š§ Fix LNA/PA power control for Heltec v4, wireless tracker v2 by @weebl2000 in #9029
- Shame do not complain about missing targets by @Jorropo in #9032
- Action: skip trying to comment binary size change results if it is not a PR by @Jorropo in #9033
- Fix gps pin defs for various NRF variants. by @NomDeTom in #9034
- Fix Rotary enc long press by @brad112358 in #9039
- Add needed support bits for the Meshstick by @jp-bennett in #9042
- In statusLEDModule, also detect isCharging by @jp-bennett in #9050
- PlatformIO: Re-Org ESP32 family shared props by @vidplace7 in #9060
- Cleanup: Remove icarus custom framework-arduinoespressif32 by @vidplace7 in #9064
- M6 shutdown and LEDs work by @jp-bennett in #9065
- Implement HAS_PHYSICAL_KEYBOARD for devices with physical keyboards by @Xaositek in #9071
- KZ_863 is not wide lora by @fifieldt in #9075
- In autoconf, don't probe Wire unless i2c device is set by @jp-bennett in #9081
- Correctly set type for event_mode max() position threshold by @vidplace7 in #9083
- Fix PR#8061 SensorLib nRF ThinkNode M-series by @vidplace7 in #9084
- Pioarduino .gitignore by @vidplace7 in #9085
- Pass GH_TOKEN to shame's gh run download step by @Jorropo in #9087
- GPS Menu Validation Fix - Missed in Reviews by @Xaositek in #9093
- Noop "download" portion of #shame by @vidplace7 in #9114
- Syntax fix for first timer welcome bot. by @fifieldt in #9144
- Fix link formatting in welcome message by @fifieldt in #9163
- Fixed shouldFilterReceived function to check prev relay according to the function definition by @strngr in #9168
- Add EByte EoRa-Hub by @vidplace7 in #9169
- Fix zero in sp02 and Heart Rate on screen by @sergeygalkin in #9174
- RadioInterface::getRetransmissionMsec now handles encrypted packets c⦠by @rbreesems in #9184
- Added support for the new SSD1306 control panel. by @lewisxhe in #9192
- Fix Function + M in code by @Xaositek in #9200
- Fix TSL2591 detection by adding command bit to register read by @heathdutton in #9215
- Fix screen not sleeping due to power status updates by @heathdutton in #9216
- Fix rotary regression and tighten up playBeep by @thebentern in #9221
- Use correct name for ALT_BUTTON_PIN by @jp-bennett in #9225
- CH341 MAC address derivation from serial and product string by @jp-bennett in #9226
- T-Watch S3 Plus GPS support by @mverch67 in #9235
- Update diy_promicro platformio.ini by @mrekin in #9245
- Recover
long_name,short_namefrom our own NodeDB entry if device.proto is unreadable by @compumike in #9248 - Remove a strlcpy reference by @jp-bennett in #9249
- Add unified OTA to manifest by @thebentern in #9261
- Tiny - include mt-ota in firmware zips by @vidplace7 in #9275
- EXCLUDE_AUDIO on (original) ESP32 by @vidplace7 in #9276
- Partition name in manifest script by @thebentern in #9294
- SafeFile: use atomic rename-with-overwrite, rather than non-atomic delete-then-rename by @compumike in #9296
- Fix OTA partition name matching by @thebentern in #9302
- T-Deck Pro: speed up eink force refresh by @vicliu624 in #9303
- Small fix in register size for SHT4X by @oscgonfer in #9309
- Fix GPS for T-Watch S3 plus by @mverch67 in #9312
- Adds Custom battery curve for thinknode m6 by @jp-bennett in #9313
- /api/v1/fromradio OPTIONS handler: fix sending proper HTTP response. by @cpatulea in #9322
- Heltec V4 TFT metadata by @thebentern in #9325
- Filter BLE updates that don't change pairing status by @jp-bennett in #9333
- Don't Mute DMs just because we mute a channel by @Xaositek in #9348
āļø Dependencies
- Rp2xx0: Update to arduino-pico 5.4.4 by @vidplace7 in #8979
- Replace PIO fuzzy version matches (reproducible builds) by @vidplace7 in #8984
- PIO: Renovate all the things by @vidplace7 in #8994
- Update lewisxhe/SensorLib to 0.3.3 by @vidplace7 in #9061
- Update meshtastic-esp8266-oled-ssd1306 digest to b34c681 by @app/renovate in #9062
- Update meshtastic/device-ui digest to 272defc by @app/renovate in #9166
- Update dorny/test-reporter action to v2.5.0 by @app/renovate in #9167
- Update INA226 to v0.6.6 by @app/renovate in #9247
- Update meshtastic/device-ui digest to 12f8cdd by @app/renovate in #9263
- Update meshtastic-gxepd2 digest to a05c11c by @app/renovate in #9264
- Update ArduinoJson to v6.21.5 by @app/renovate in #9265
- Update GxEPD2 to v1.6.5 by @app/renovate in #9266
- Update ESP8266SAM to v1.1.0 by @app/renovate in #9271
- Update pschatzmann_arduino-audio-driver to v0.2.0 by @app/renovate in #9272
- Renovate: Ignore lovyangfx for elecrow-panel by @vidplace7 in #9279
- Update RadioLib to v7.5.0 by @vidplace7 in #9281
- Update meshtastic/device-ui digest to 5a870c6 by @app/renovate in #9301
- Update Adafruit BMP280 to v3 by @app/renovate in #9307
- Update meshtastic/device-ui digest to 3480b73 by @app/renovate in #9353
Full Changelog: v2.7.17.9058cce...v2.7.18.fb3bf78