Meshtastic

com.geeksville.mesh
by Zapstore _@zapstore.dev

Republished from GitHub / F-Droid by the Zapstore main account.

Meshtastic is a tool for using Android devices with open-source, off-grid mesh radios. This app is the main client for the Meshtastic project, allowing you to manage your mesh devices and communicate with other users. For more information about the Meshtastic project, please visit our website: [meshtastic.org](https://www.meshtastic.org). The firmware that runs on the radio devices is a separate open-source project, which you can find here: [https://github.com/meshtastic/Meshtastic-device](https://github.com/meshtastic/Meshtastic-device). **Community and Support** This project is currently in beta. We would love to hear from you! If you have questions, feedback, or encounter any problems, please join our friendly and active community: * **Discussion Forum:** [https://github.com/orgs/meshtastic/discussions](https://github.com/orgs/meshtastic/discussions) * **Discord:** [https://discord.gg/meshtastic](https://discord.gg/meshtastic) * **Report an Issue:** [https://github.com/meshtastic/Meshtastic-Android/issues](https://github.com/meshtastic/Meshtastic-Android/issues) **Documentation** To learn more about the features and capabilities of this app and Meshtastic, please view our official documentation: [**View Documentation**](https://meshtastic.org/docs/) **Translations** You can help translate the app into your native language using Crowdin: [https://crowdin.meshtastic.org/android](https://crowdin.meshtastic.org/android)

First release: Jul 7, 2025, 19 total releases.

Most recent release: Sep 25, 2026.

Website Repo

Appears in 6 app stacks.

0 sats / 0 zaps received in the past year.

Sats Received

Underlying data available via MCP: app_zaps, app_releases.

Zap Count

Underlying data available via MCP: app_zaps, app_releases.

Releases

  • Sep 25, 2026 2.8.2 (29322440) fdroid
    ## Highlights Messaging: swipe to reply, double-tap reactions, per-contact drafts, pinned and unread conversations, bubbles, proven delivery receipts. A Units setting. One search bar for nodes, messages, settings and docs. Settings take labels, units and firmware gates from the schema. Map layer opacity and role filters. Lightning, particulate and soil telemetry. Tap phones to share a contact or channel. KML import works again. <!-- Release notes generated using configuration in .github/release.yml at v2.8.2 --> ## What's Changed ### 🏗️ Features * perf(ui): render QR codes at display density instead of fixed 960px by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6793 * feat: report Android 17 memory-limiter kills via ApplicationExitInfo by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6792
    More…
    * feat(privacy): shield sensitive UI content from non-tool accessibility services by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6794 * feat(hardware): fetch bootloader OTA quirks from the API, seeded from the bundled asset by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6802 * feat(hardware): fetch the maintenance UF2 manifest from the API, digest-pinned by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6803 * feat(messaging): swipe to reply, double-tap reactions, day separators by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6850 * feat(messaging): per-contact drafts and a quieter composer by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6851 * feat(messaging): name the sender on the jump-to-latest control by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6856 * feat(notifications): offer conversations as bubbles by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6858 * feat(messaging): mark unread, swipe row actions, and pinned conversations by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6857 * feat(messaging): close the quick reaction bar on a tap outside it by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6865 * feat(settings): send the optional ham long_name alongside the call sign by @vidplace7 in https://github.com/meshtastic/Meshtastic-Android/pull/6875 * feat(appfunctions): reconcile system state instead of blind-writing it by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6908 * feat(units): resolve units from the device region, add a Units setting, render through ICU by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6916 * feat(connections): notice when transmit is disabled by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6945 * feat(agents): add the run-meshtastic-android skill with desktop and emulator drivers by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6955 * feat(map): give every map layer its own opacity slider by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6958 * feat(map): filter the map by node role and by how a node was heard by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6959 * feat(settings): align the Mesh Beacon config editor with design#140 by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6963 * feat(discovery): suppress beacon invitations for channels the radio already has by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6964 * feat(network): configure HTTP client engines and add platform User-Agent headers by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7008 * feat(ui): blend noise floor into signal quality rating (design#15) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7009 * feat(map): offline banner and Google basemap auto-fallback on connectivity loss by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6998 * feat(node): add an update-status shortcut to the local node menu by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7047 * feat: mark nodes not heard since the LoRa config changed by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7055 * chore: device link disclosure by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7068 * feat(node): overflow the time frame selector instead of crushing it by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7097 * perf: cache-window the hot lists, and modernize the nav3 and adaptive wiring by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7093 * feat(docs): use the real M3 search bar for doc search by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7098 * feat(nfc): share a contact or channel by tapping phones, no tag needed by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7124 * feat(ui): share the link from the share dialog, and say what the dialog does by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7126 * feat(node): signed and verified indicators in place of the PKI lock by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7117 * fix(node): keep a contact's public key when a different one arrives by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7118 * feat(settings): show the license notice on the About screen by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7191 * feat(map): clamp zoom when framing bounds, and let style images use hardware bitmaps by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7245 * refactor(navigation): route deep links through navigation3 UriDeepLinkMatcher by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7246 * refactor(settings): read numeric field bounds from the protobufs field registry by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7242 * feat(telemetry): surface lightning, PM status and soil-water metrics by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7237 * feat(node): rank maker hardware between supported and community in the device badge by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7263 * feat(settings): gate config fields on the schema's firmware versions by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7262 * feat(settings): hide module settings the node reports compiled out by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7272 * feat(mqtt): surface a refused subscription from the broker by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7290 * feat(settings): drive the module gates from the schema by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7296 * feat(settings): label enum pickers from the schema by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7298 * feat(settings): read the labels and helper text the schema already has by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7302 * feat(beacon): honour the advertised frequency slot by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7305 * feat(settings): emit the enum key prefixes the schema strings use by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7306 * feat(search): one M3 search bar, settings search, and node status in search by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7303 * feat(settings): show the unit the schema declares by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7304 * feat(connections): handle hardware without Bluetooth for Android XR by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7318 * feat(connections): handle hardware without USB host for Android XR by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7322 * refactor(connections): give Demo Mode its own section by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7326 * feat(messaging): show whether a delivery receipt was proven by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7284 * feat(messaging): record signing and ack proof on reactions by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7339 ### 🖥️ Desktop * fix(desktop): disable macOS notifications when the process has no app bundle by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6876 * fix(desktop): test the bundle path, not the identifier, before notifying by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6885 * fix(desktop): use standard SPDX license identifier for RPM packaging by @RCGV1 in https://github.com/meshtastic/Meshtastic-Android/pull/7043 * fix(desktop): pin the Flathub screenshots to a commit that survives the squash by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7243 * fix(desktop): keep MapLibre's FFI upcall methods through ProGuard by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7287 * refactor(model): parse the selected device address once by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7328 ### 🛠️ Fixes * fix(navigation): clear deep-link replay cache once applied to the backstack by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6796 * fix(ui): give feedback when a contact or channel import arrives while disconnected by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6798 * fix(database): rebuild the packet FTS index after the schema-52 table recreation by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6808 * fix(map): raise android-maps-utils to 5.1.1 so KML import survives xmlutil 1.0.x by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6811 * fix(database): give every SQLite connection a busy timeout by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6809 * fix(firmware): show the erase wait and upload retries during Legacy DFU by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6812 * fix(map): parse KMZ archives in the F-Droid map overlay renderer by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6834 * fix(firmware): map SoftDevice variants for the new nrf52840 boards by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6843 * fix(navigation): never let the active backstack empty under NavDisplay by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6844 * fix(metrics): eliminate the Vico canvas restore underflow crash by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6847 * fix(ui): bound pane content height under the adaptive three-pane scaffold by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6845 * fix(connection): extend BLE handshake deadlines while config progress flows by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6848 * fix(map): survive the WebView provider update race in Site Planner by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6846 * fix(mqtt): tolerate object-typed payload in MQTT JSON messages by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6839 * fix(messaging): clear and suppress notifications for the conversation on screen by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6849 * fix(messaging): fire swipe row actions once per swipe, and let the snackbar go by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6863 * Stabilize Mid-Session Locale Unit State Test by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/6870 * Demote Repeated Offline Heartbeat Rejection Logs to Debug by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/6872 * Use Scan-Only Probes After Prolonged Bonded BLE Reconnect Failures by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/6871 * fix(permissions): recover from a skipped, denied, or revoked permission instead of dead-ending by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6880 * fix(node): convert temperature before labelling it °F, and show wind in km/h by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6925 * fix(settings): drop the beacon single-target scalars protobufs reserved by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6942 * fix(node): scroll traceroute/log history detail popups by @beecho01 in https://github.com/meshtastic/Meshtastic-Android/pull/6708 * fix(ui): show device roles by name, and stop doubling two percent signs by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6962 * fix(map): gate the MapLibre waypoint editor on isModifiableBy by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6969 * fix(ai): bound assistant messages at what the send path will actually encode by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6970 * fix(firmware): hide USB maintenance where the platform cannot run it by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6974 * fix(map): resolve the persisted basemap before the map first renders by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6978 * fix(network): point the API base URL at the R2-backed apiv2 host by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7004 * fix(settings): floor the beacon broadcast-target list at one row by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7010 * fix(settings): re-learn the node number when the first region set renumbers the radio by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7021 * fix(connections): scope region warnings to the active connection by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/7015 * fix(mqtt): downgrade unparseable-payload decode logs from error to warn by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7040 * fix(node): gate direct messages on holding a public key by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7050 * fix(takserver): skip compressed v1 TAK packets to stop duplicate contacts by @texaskst in https://github.com/meshtastic/Meshtastic-Android/pull/7020 * fix(firmware): move firmware artifact fetching onto the R2 hosts by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7073 * fix(settings): fetch Mesh Beacon config from remote-admin nodes by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7077 * fix(messaging): keep the composer IME session stable while the node list changes by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7079 * fix(network): never send heartbeat nonce 1, the firmware NodeInfo-ping trigger by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7078 * fix(lora): correct preset SNR floors and signal colors by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7110 * fix(settings): allow all available spread factors by @gargomoma in https://github.com/meshtastic/Meshtastic-Android/pull/7119 * fix(nfc): write to tags that have never been NDEF-formatted by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7123 * fix(node): stop presenting MQTT-only nodes as unheard on the current LoRa by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7138 * fix(node): revert the time frame selector to a segmented row by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7142 * fix(messaging): keep the Enter key in the message composer by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7155 * fix(storeforward): dedupe a router replay by original_id by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7158 * fix(service): keep the process alive and awake through firmware updates and scans by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7159 * fix(messaging): key conversations to channel identity, not slot index by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7162 * fix(ui): drop the lazy list cache windows that crash inside a lookahead scope by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7185 * fix(settings): state lockdown's irreversibility in the enable dialog by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7171 * fix(network): point the API base URL at the production host by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7197 * fix(discovery): write a dwell and its parent check in one transaction by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7204 * fix(map): keep the 300 ms ease on MapLibre camera nudges by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7240 * fix(ble): replace deprecated preConflate with bufferCapacity by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7236 * fix(model): fold 0xAE into the hash of an AEAD channel by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7239 * fix(model): align the US first-setup preset with the device screen by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7244 * fix(settings): name config exports after the long name, not the short name by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7248 * fix(nodes): the direct filter no longer returns MQTT nodes by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7256 * fix(mqtt): TLS switch shows and sets the stored flag for the public broker by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7255 * fix(connection): name the transport in handshake stall reports by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7276 * fix(mqtt): subscribe with the options the negotiated protocol version allows by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7273 * fix(analytics): give crash reports the radio that produced them, a real blame frame, and a ceiling by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7274 * fix(settings): write the external notification duration in milliseconds by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7307 * fix(node): keep the node counts visible while searching by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7311 * fix(ble): don't arm a BLE transport on hardware without Bluetooth by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7321 * fix(connections): refuse serial addresses without USB host by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7327 * fix(service): stop a stale saved address overwriting a newer selection by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7329 * fix(service): stay foreground only for an address that can connect by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7330 * fix(messaging): clarify the message filter controls by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7324 * fix(notifications): give bubbles an adaptive icon by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7336 * fix(position): send no coordinates with a position request when we have none by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7361 ### 📝 Other Changes * refactor(settings): edit the status message on the user screen by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6951 * refactor(map): retire the maps-utils workarounds its 5.1 fixes made stale by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7046 * refactor(prefs): keep each surface's filters in one state object by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7120 * refactor(appfunctions): migrate to AppFunctionServiceEntryPoint by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/7340 ## New Contributors * @azchohfi made their first contribution in https://github.com/meshtastic/Meshtastic-Android/pull/6864 * @gargomoma made their first contribution in https://github.com/meshtastic/Meshtastic-Android/pull/7119 **Full Changelog**: https://github.com/meshtastic/Meshtastic-Android/compare/v2.8.1...v2.8.2
  • Aug 20, 2026 2.8.1 (29321949) fdroid
    <!-- Release notes generated using configuration in .github/release.yml at v2.8.1 --> ## What's Changed ### 🏗️ Features * feat(settings): add 2.8 amateur and EU Lite/Narrow LoRa regions by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6548 * feat(takserver): surface mesh nodes to ATAK as CoT contacts (mesh-to-CoT) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6554 * feat: distinguish saved coverage estimates in the map layers sheet by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6578 * Align Android message status wording by @RCGV1 in https://github.com/meshtastic/Meshtastic-Android/pull/6133 * feat(settings): export the node database as JSON by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6610 * feat(tak): show local server status by @RCGV1 in https://github.com/meshtastic/Meshtastic-Android/pull/6599
    More…
    * feat(messaging): add optional full message timestamps by @simulationstation in https://github.com/meshtastic/Meshtastic-Android/pull/6639 * feat(settings): warn before enabling licensed (ham) mode by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6632 * perf(startup): move WorkManager and AppFunctions init off the main thread by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6648 * feat(analytics): report key user interactions as named RUM actions by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6654 * feat(node): surface incomplete nodes with a badge and show them by default by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6673 * refactor(maps): share custom tile providers by @simulationstation in https://github.com/meshtastic/Meshtastic-Android/pull/6641 * feat(demo): make Demo Mode reachable and populated in release builds by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6691 * feat(lora): honor a pinned-preset intent advertised for UNSET by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6711 * feat(icons): add Material icons for custom SF Symbols and fix soil telemetry icons by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6722 * feat(settings): add About screen with hardware carousel and rename license screen to Acknowledgements by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6721 * feat(firmware): add nRF52/RP2040 factory erase and OTAFIX bootloader upgrade over USB by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6526 * feat(node): label SNR quality on the Node Details signal row by @beecho01 in https://github.com/meshtastic/Meshtastic-Android/pull/6703 * fix(database): raise default cache limit and warn before eviction by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6742 * feat(tak): add TAK Mesh Channel setting for outbound TAK traffic by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6770 ### 🖥️ Desktop * fix(desktop): stop SIGSEGV on every Linux notification by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6543 * fix(desktop): free the GError and release libnotify on shutdown by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6544 * fix(desktop): restore BLE scanning and connecting in packaged builds by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6558 * fix(service): stop blocking getString on Dispatchers.Default-reachable notification paths by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6668 * fix(messaging): disambiguate sender-scoped packet IDs by @simulationstation in https://github.com/meshtastic/Meshtastic-Android/pull/6624 * fix(connections): hide the replay demo entry when its capture asset is absent by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6692 * fix(lifecycle): harden packet admission and transport ownership by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/6716 ### 🛠️ Fixes * fix(ui): give rx_snr real presence semantics end to end by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6523 * fix(debug): restore node ID hex annotations broken by the Wire migration by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6532 * fix(nodes): suppress alerts during initial database sync by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/6538 * fix(ble): pause background RSSI polling by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/6539 * fix(database): recover wedged observer pools by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/6540 * fix(docs): publish only screenshots a synced page references by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6557 * fix(icons): differentiate google/fdroid debug launcher icons by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6564 * fix(tak): re-encode bundled .p12 certs with legacy PKCS#12 algorithms for Android ≤ 9 ATAK compatibility by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6569 * fix: Site Planner map/camera parity with iOS by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6577 * fix(service): unwedge the inbound pipeline behind stale-Connected zombies by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6587 * fix(map): scope location tracking to the visible lifecycle by @simulationstation in https://github.com/meshtastic/Meshtastic-Android/pull/6602 * fix(konsist): normalize source paths on Windows by @simulationstation in https://github.com/meshtastic/Meshtastic-Android/pull/6604 * fix(map): reuse cluster items across camera recompositions by @simulationstation in https://github.com/meshtastic/Meshtastic-Android/pull/6605 * fix(fdroid): ship 16 KB-compatible GeoPackage SQLite by @simulationstation in https://github.com/meshtastic/Meshtastic-Android/pull/6606 * fix(tak): gate V2 packets on known firmware by @RCGV1 in https://github.com/meshtastic/Meshtastic-Android/pull/6600 * fix(messaging): wait for shared-contact routing ACK by @simulationstation in https://github.com/meshtastic/Meshtastic-Android/pull/6603 * fix(build): sign debug builds with a shared checked-in keystore by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6615 * fix(ci): unbreak the merge queue on Gradle 9.6.1 by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6636 * fix(ui): add MQTT context to channel uplink/downlink toggle labels by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6614 * fix(i18n): localize emoji picker strings by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6628 * fix(database): delete nodes and metadata atomically by @simulationstation in https://github.com/meshtastic/Meshtastic-Android/pull/6623 * fix(ci): sync Flatpak Gradle distribution by @simulationstation in https://github.com/meshtastic/Meshtastic-Android/pull/6625 * fix(mqtt): isolate overlapping client sessions by @simulationstation in https://github.com/meshtastic/Meshtastic-Android/pull/6616 * fix(data): stop "1 hour" log retention from wiping the MeshLog table by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6635 * fix(node): chart environment metrics in the user's display units by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6634 * fix(messaging): time out orphaned "Sending..." messages into a retryable failure by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6630 * fix(ui): stop emoji picker clipping text at large font scales by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6631 * fix(service): await persisted device before boot reconnect by @simulationstation in https://github.com/meshtastic/Meshtastic-Android/pull/6617 * fix(node): stop compass updates while backgrounded by @simulationstation in https://github.com/meshtastic/Meshtastic-Android/pull/6620 * fix(service): load persisted MeshLog cleanup policy by @simulationstation in https://github.com/meshtastic/Meshtastic-Android/pull/6621 * fix(usb): validate permission callbacks by @simulationstation in https://github.com/meshtastic/Meshtastic-Android/pull/6622 * fix(settings): refresh delayed remote public keys by @simulationstation in https://github.com/meshtastic/Meshtastic-Android/pull/6638 * fix(ui): locale-aware unit formatting and message-view font scaling (design audit) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6629 * fix(android): preserve shared text in deep links by @simulationstation in https://github.com/meshtastic/Meshtastic-Android/pull/6619 * fix(test): isolate androidApp unit tests from the production Application by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6644 * fix(settings): show REDACTED for a remote node's withheld private key by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6649 * fix(ui): surface watchdog-forced reconnects in the nav connection icon by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6655 * fix(ble): enable Kable preConflate to prevent scan-callback ANRs by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6652 * fix(ui): restore bottom time-axis height at large font scales by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6656 * fix(telemetry): repoint 1-Wire temperature at per-channel fields, adopt ADC voltage by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6653 * fix(analytics): cover local firmware sideloads and report message_send in the foreground by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6660 * fix(database): bound withDb execution so one wedged callback can't stall every write by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6661 * fix(konsist): anchor path rules to the scanned checkout root so the commonMain guard isn't vacuously green in agent worktrees by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6665 * fix(database): recover from Room's silent connection-pool wedge (#6608) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6658 * fix(settings): restore channels from device profiles by @simulationstation in https://github.com/meshtastic/Meshtastic-Android/pull/6618 * fix(map): open Site Planner for the selected node by @simulationstation in https://github.com/meshtastic/Meshtastic-Android/pull/6640 * fix(map): allow layers with generic MIME types by @ayysasha in https://github.com/meshtastic/Meshtastic-Android/pull/6663 * fix(ui): move event firmware branding off the app bar by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6676 * fix(lora): validate 2.4 GHz bandwidth options by @RCGV1 in https://github.com/meshtastic/Meshtastic-Android/pull/6529 * fix(build): track compose-multiplatform's actual version in the flatpak arm64 force-resolve by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6694 * fix(build): declare navigationevent-compose explicitly, fixing Dokka's metadata compile by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6698 * fix(notifications): stop repeated protected position alerts by @ayysasha in https://github.com/meshtastic/Meshtastic-Android/pull/6700 * fix(lora): keep a deliberately pinned preset at fresh setup by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6710 * fix(admin): retain session refresh across multi-hop latency by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/6718 * fix(discovery): restore radio state after interrupted scans by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/6717 * fix(network): handle IPv6 mDNS addresses correctly, refresh on re-announce by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6729 * fix(ui): request HIGH error correction for generated QR codes by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6730 * fix(barcode): narrow the F-Droid scanner to QR-only by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6731 * fix(ai): read the real inference source instead of hardcoding it by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6732 * fix(firmware): add fallback painter to device hardware image by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6733 * fix(map): restore osmbonuspack native styling, fix tile-scaling gap by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6735 * fix(takserver): wire TAKPacket-SDK's logger, surface remarks-stripped by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6736 * fix(node): confirm before clearing a node's position track by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6745 * fix(takserver): route TAK self-test through the real v1/v2 dispatch path by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6746 * fix(map): scope Google Maps clustering to the viewport above 1000 nodes by @beecho01 in https://github.com/meshtastic/Meshtastic-Android/pull/6739 * fix(node): make node-list search case-insensitive for non-ASCII names by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6753 * fix(ble): refresh a stale GATT cache during ordinary reconnects by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6744 * fix(connections): open the region picker directly from the region card by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6743 * fix(tak): duplicate ATAK contacts on v1 GeoChat + surface v1-fallback notice by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6759 * fix(connections): gate manual + recent TCP connects on ACCESS_LOCAL_NETWORK by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6766 * fix(service): explain, don't hang, when a TCP reconnect lacks local-network access by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6767 * fix(firmware): point OTAFIX bootloader self-update at meshtastic's own fork by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6769 * fix(firmware): map T_ECHO_CARD (136) to SoftDevice 6.1.1 by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6776 * fix: derive temperature unit from locale temperature preference, not distance system by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6775 * fix(ci): bump verify-flatpak's vendored Gradle dist to 9.7.1 to match the wrapper by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6782 * fix(dfu): back off correctly when Android throttles BLE scan-starts by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6784 ### 📝 Other Changes * refactor(compose): adopt keyed SideEffect and drop redundant config write-back effects by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6684 * refactor(firmware): dedupe the Android/JVM download byte-copy loop by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6737 ## New Contributors * @clayburn made their first contribution in https://github.com/meshtastic/Meshtastic-Android/pull/6531 * @simulationstation made their first contribution in https://github.com/meshtastic/Meshtastic-Android/pull/6602 * @ayysasha made their first contribution in https://github.com/meshtastic/Meshtastic-Android/pull/6663 * @beecho01 made their first contribution in https://github.com/meshtastic/Meshtastic-Android/pull/6703 **Full Changelog**: https://github.com/meshtastic/Meshtastic-Android/compare/v2.8.0...v2.8.1
  • Feb 19, 2026 2.7.13 (29320069) fdroid
    <!-- Release notes generated using configuration in .github/release.yml at main --> ## What's Changed ### 🏗️ Features * feat(wire): migrate from protobuf -> wire by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4401 * Update strings.xml by @b8b8 in https://github.com/meshtastic/Meshtastic-Android/pull/4432 * feat(deps): Update Wire to v6.0.0-alpha02 by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4440 * feat(example): Add packet log and UI improvements by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4455 * feat(sharing): Refactor QR/NFC scanning with ML Kit and CameraX by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4471 * feat(ui): Redesign NodeItem for improved clarity and density by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4475
    More…
    * feat: Check if NFC is enabled and prompt user to enable it by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4482 * feat: Add stable class definitions for Meshtastic models by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4500 * feat(database): Enable Write-Ahead Logging for Room DB by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4499 * feat: Remove auto-retry confirmation for messages by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4513 * refactor(time): Centralize time handling with kotlinx-datetime by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4545 * feat(notifications): navigate to node details on tap by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4558 * feat(settings): Only show homoglyph setting for Cyrillic locales by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4559 * feat(nodes): Display role-specific icons by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4572 * feat(settings): Allow clearing the node status message by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4577 ### 🛠️ Fixes * chore(ci): Change number of shards for parallel test execution by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4428 * refactor(model): Make DataPacket fully mutable and fix Parcel reading by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4431 * ci(jitpack): Use standard Gradle tasks for building by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4448 * refactor(build): Use version catalog for Compose Multiplatform by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4452 * feat(db): Add sender-based message filtering by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4477 * refactor(node): Improve public key conflict handling by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4486 * feat(ble): Handle invalid BLE attributes by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4485 * feat: Queue special app PortNums when disconnected by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4495 * feat: Improve connection state broadcast and timing by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4498 * feat: Add disconnect broadcast and improve app port handling by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4502 * feat: consolidate dialogs by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4506 * feat(charts): More charts ui/ux tweaks by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4520 * fix: use truthy value for `emoji` field on Reaction packets by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4524 * fix(db): Revert removal of retry_count by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4527 * fix(settings): Correct hop_limit type for LoRa config by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4525 * feat(messaging): Move message input to Scaffold bottomBar by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4530 * feat(messaging): Add bell character to alert message and refine trim by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4532 * feat(analytics): Enhance user privacy by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4540 * fix(mesh): Set from field in locally handled packets by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4543 * fix(release): fixes to prep for release by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4546 * feat(db): enhance public key conflict handling by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4555 * fix: uri handling, ci test setup by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4556 * chore(docs): Refine Dokka source set configuration by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4562 * feat: Accurately display outgoing diagnostic packets by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4569 * refactor(ui): Simplify composable message handling in dialog by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4573 * refactor(metrics): Prevent chart crashes with empty data by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4578 * refactor(settings): Use LocalConfig for radio configuration state by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4579 * refactor(logging): Reduce log noise by lowering severity of common errors by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4591 ### 📝 Other Changes * refactor(build): Introduce AndroidLibraryFlavors convention plugin by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4449 * chore(ci): Simplify jitpack.yml build steps by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4460 * build(ksp): ksp and publishing tuning by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4462 * Enhancement - optional transparent homoglyph encoding of a few characters in certain languages for more compact and efficient text messages by @LuigiVampa92 in https://github.com/meshtastic/Meshtastic-Android/pull/4491 * fix: Defer setting connected state until after nodeDB load by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4505 * Revert "chore(deps): update nordic.ble to v2.0.0-alpha13" by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4536 ## New Contributors * @LuigiVampa92 made their first contribution in https://github.com/meshtastic/Meshtastic-Android/pull/4491 **Full Changelog**: https://github.com/meshtastic/Meshtastic-Android/compare/v2.7.12...v2.7.13-closed.4
  • Feb 17, 2026 2.7.13 (29320065) fdroid
    <!-- Release notes generated using configuration in .github/release.yml at v2.7.13-internal.15 --> ## What's Changed ### 🏗️ Features * feat(wire): migrate from protobuf -> wire by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4401 * Update strings.xml by @b8b8 in https://github.com/meshtastic/Meshtastic-Android/pull/4432 * feat(deps): Update Wire to v6.0.0-alpha02 by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4440 * feat(example): Add packet log and UI improvements by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4455 * feat(sharing): Refactor QR/NFC scanning with ML Kit and CameraX by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4471 * feat(ui): Redesign NodeItem for improved clarity and density by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4475
    More…
    * feat: Check if NFC is enabled and prompt user to enable it by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4482 * feat: Add stable class definitions for Meshtastic models by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4500 * feat(database): Enable Write-Ahead Logging for Room DB by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4499 * feat: Remove auto-retry confirmation for messages by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4513 * refactor(time): Centralize time handling with kotlinx-datetime by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4545 * feat(notifications): navigate to node details on tap by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4558 * feat(settings): Only show homoglyph setting for Cyrillic locales by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4559 * feat(nodes): Display role-specific icons by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4572 * feat(settings): Allow clearing the node status message by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4577 ### 🛠️ Fixes * chore(ci): Change number of shards for parallel test execution by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4428 * refactor(model): Make DataPacket fully mutable and fix Parcel reading by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4431 * ci(jitpack): Use standard Gradle tasks for building by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4448 * refactor(build): Use version catalog for Compose Multiplatform by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4452 * feat(db): Add sender-based message filtering by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4477 * refactor(node): Improve public key conflict handling by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4486 * feat(ble): Handle invalid BLE attributes by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4485 * feat: Queue special app PortNums when disconnected by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4495 * feat: Improve connection state broadcast and timing by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4498 * feat: Add disconnect broadcast and improve app port handling by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4502 * feat: consolidate dialogs by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4506 * feat(charts): More charts ui/ux tweaks by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4520 * fix: use truthy value for `emoji` field on Reaction packets by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4524 * fix(db): Revert removal of retry_count by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4527 * fix(settings): Correct hop_limit type for LoRa config by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4525 * feat(messaging): Move message input to Scaffold bottomBar by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4530 * feat(messaging): Add bell character to alert message and refine trim by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4532 * feat(analytics): Enhance user privacy by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4540 * fix(mesh): Set from field in locally handled packets by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4543 * fix(release): fixes to prep for release by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4546 * feat(db): enhance public key conflict handling by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4555 * fix: uri handling, ci test setup by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4556 * chore(docs): Refine Dokka source set configuration by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4562 * feat: Accurately display outgoing diagnostic packets by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4569 * refactor(ui): Simplify composable message handling in dialog by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4573 * refactor(metrics): Prevent chart crashes with empty data by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4578 * refactor(settings): Use LocalConfig for radio configuration state by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4579 ### 📝 Other Changes * refactor(build): Introduce AndroidLibraryFlavors convention plugin by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4449 * chore(ci): Simplify jitpack.yml build steps by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4460 * build(ksp): ksp and publishing tuning by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4462 * Enhancement - optional transparent homoglyph encoding of a few characters in certain languages for more compact and efficient text messages by @LuigiVampa92 in https://github.com/meshtastic/Meshtastic-Android/pull/4491 * fix: Defer setting connected state until after nodeDB load by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4505 * Revert "chore(deps): update nordic.ble to v2.0.0-alpha13" by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4536 ## New Contributors * @LuigiVampa92 made their first contribution in https://github.com/meshtastic/Meshtastic-Android/pull/4491 **Full Changelog**: https://github.com/meshtastic/Meshtastic-Android/compare/v2.7.12...v2.7.13-internal.15
  • Feb 17, 2026 2.7.13 (29320057) fdroid
    <!-- Release notes generated using configuration in .github/release.yml at v2.7.13-internal.14 --> ## What's Changed ### 🏗️ Features * feat(wire): migrate from protobuf -> wire by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4401 * Update strings.xml by @b8b8 in https://github.com/meshtastic/Meshtastic-Android/pull/4432 * feat(deps): Update Wire to v6.0.0-alpha02 by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4440 * feat(example): Add packet log and UI improvements by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4455 * feat(sharing): Refactor QR/NFC scanning with ML Kit and CameraX by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4471 * feat(ui): Redesign NodeItem for improved clarity and density by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4475
    More…
    * feat: Check if NFC is enabled and prompt user to enable it by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4482 * feat: Add stable class definitions for Meshtastic models by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4500 * feat(database): Enable Write-Ahead Logging for Room DB by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4499 * feat: Remove auto-retry confirmation for messages by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4513 * refactor(time): Centralize time handling with kotlinx-datetime by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4545 * feat(notifications): navigate to node details on tap by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4558 * feat(settings): Only show homoglyph setting for Cyrillic locales by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4559 * feat(nodes): Display role-specific icons by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4572 ### 🛠️ Fixes * chore(ci): Change number of shards for parallel test execution by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4428 * refactor(model): Make DataPacket fully mutable and fix Parcel reading by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4431 * ci(jitpack): Use standard Gradle tasks for building by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4448 * refactor(build): Use version catalog for Compose Multiplatform by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4452 * feat(db): Add sender-based message filtering by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4477 * refactor(node): Improve public key conflict handling by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4486 * feat(ble): Handle invalid BLE attributes by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4485 * feat: Queue special app PortNums when disconnected by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4495 * feat: Improve connection state broadcast and timing by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4498 * feat: Add disconnect broadcast and improve app port handling by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4502 * feat: consolidate dialogs by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4506 * feat(charts): More charts ui/ux tweaks by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4520 * fix: use truthy value for `emoji` field on Reaction packets by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4524 * fix(db): Revert removal of retry_count by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4527 * fix(settings): Correct hop_limit type for LoRa config by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4525 * feat(messaging): Move message input to Scaffold bottomBar by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4530 * feat(messaging): Add bell character to alert message and refine trim by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4532 * feat(analytics): Enhance user privacy by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4540 * fix(mesh): Set from field in locally handled packets by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4543 * fix(release): fixes to prep for release by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4546 * feat(db): enhance public key conflict handling by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4555 * fix: uri handling, ci test setup by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4556 * chore(docs): Refine Dokka source set configuration by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4562 * feat: Accurately display outgoing diagnostic packets by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4569 * refactor(ui): Simplify composable message handling in dialog by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4573 ### 📝 Other Changes * refactor(build): Introduce AndroidLibraryFlavors convention plugin by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4449 * chore(ci): Simplify jitpack.yml build steps by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4460 * build(ksp): ksp and publishing tuning by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4462 * Enhancement - optional transparent homoglyph encoding of a few characters in certain languages for more compact and efficient text messages by @LuigiVampa92 in https://github.com/meshtastic/Meshtastic-Android/pull/4491 * fix: Defer setting connected state until after nodeDB load by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4505 * Revert "chore(deps): update nordic.ble to v2.0.0-alpha13" by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4536 ## New Contributors * @LuigiVampa92 made their first contribution in https://github.com/meshtastic/Meshtastic-Android/pull/4491 **Full Changelog**: https://github.com/meshtastic/Meshtastic-Android/compare/v2.7.12...v2.7.13-internal.14
  • Feb 15, 2026 2.7.13 (29320053) fdroid
    <!-- Release notes generated using configuration in .github/release.yml at v2.7.13-internal.12 --> ## What's Changed ### 🏗️ Features * feat(wire): migrate from protobuf -> wire by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4401 * Update strings.xml by @b8b8 in https://github.com/meshtastic/Meshtastic-Android/pull/4432 * feat(deps): Update Wire to v6.0.0-alpha02 by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4440 * feat(example): Add packet log and UI improvements by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4455 * feat(sharing): Refactor QR/NFC scanning with ML Kit and CameraX by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4471 * feat(ui): Redesign NodeItem for improved clarity and density by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4475
    More…
    * feat: Check if NFC is enabled and prompt user to enable it by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4482 * feat: Add stable class definitions for Meshtastic models by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4500 * feat(database): Enable Write-Ahead Logging for Room DB by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4499 * feat: Remove auto-retry confirmation for messages by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4513 * refactor(time): Centralize time handling with kotlinx-datetime by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4545 * feat(notifications): navigate to node details on tap by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4558 * feat(settings): Only show homoglyph setting for Cyrillic locales by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4559 ### 🛠️ Fixes * chore(ci): Change number of shards for parallel test execution by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4428 * refactor(model): Make DataPacket fully mutable and fix Parcel reading by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4431 * ci(jitpack): Use standard Gradle tasks for building by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4448 * refactor(build): Use version catalog for Compose Multiplatform by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4452 * feat(db): Add sender-based message filtering by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4477 * refactor(node): Improve public key conflict handling by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4486 * feat(ble): Handle invalid BLE attributes by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4485 * feat: Queue special app PortNums when disconnected by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4495 * feat: Improve connection state broadcast and timing by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4498 * feat: Add disconnect broadcast and improve app port handling by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4502 * feat: consolidate dialogs by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4506 * feat(charts): More charts ui/ux tweaks by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4520 * fix: use truthy value for `emoji` field on Reaction packets by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4524 * fix(db): Revert removal of retry_count by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4527 * fix(settings): Correct hop_limit type for LoRa config by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4525 * feat(messaging): Move message input to Scaffold bottomBar by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4530 * feat(messaging): Add bell character to alert message and refine trim by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4532 * feat(analytics): Enhance user privacy by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4540 * fix(mesh): Set from field in locally handled packets by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4543 * fix(release): fixes to prep for release by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4546 * feat(db): enhance public key conflict handling by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4555 * fix: uri handling, ci test setup by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4556 * chore(docs): Refine Dokka source set configuration by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4562 ### 📝 Other Changes * refactor(build): Introduce AndroidLibraryFlavors convention plugin by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4449 * chore(ci): Simplify jitpack.yml build steps by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4460 * build(ksp): ksp and publishing tuning by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4462 * Enhancement - optional transparent homoglyph encoding of a few characters in certain languages for more compact and efficient text messages by @LuigiVampa92 in https://github.com/meshtastic/Meshtastic-Android/pull/4491 * fix: Defer setting connected state until after nodeDB load by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4505 * Revert "chore(deps): update nordic.ble to v2.0.0-alpha13" by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4536 ## New Contributors * @LuigiVampa92 made their first contribution in https://github.com/meshtastic/Meshtastic-Android/pull/4491 **Full Changelog**: https://github.com/meshtastic/Meshtastic-Android/compare/v2.7.12...v2.7.13-internal.12
  • Feb 3, 2026 v2.7.12 Release page →
    <!-- Release notes generated using configuration in .github/release.yml at v2.7.12-internal.9 --> ## What's Changed ### 🏗️ Features * feat: word-based message filtering with quarantine approach (stored but hidden) by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/4241 * feat(node): Refactor Node Detail screen and enhance user feedback by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4291 * Refactor: Only show advanced and app settings for local node by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4290 * feat: Add Status Message module support by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4163 * refactor(ui): Icon audit and node list item refactor by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4313 * feat(ui): Remove uptime from SignalInfo by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4328
    More…
    * feat(messaging): Improve message bubble UI and add delivery status action by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4330 * Refactor: Replace custom charts with Vico library by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4348 * Refactor: Create `core:api` module and set up publishing by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4362 * feat(charts): voltage, colors, legends, and adaptive ui by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4383 ### 🛠️ Fixes * feat(service): Introduce fallback worker to ensure service stays alive by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4295 * feat: Improve channel migration logic and add tests by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4294 * fix(ui): Prevent NaN values in environment metrics by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4316 * fix(usb): Add error handling for serial write operations by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4318 * fix(service): Add error handling for invalid StoreForward++ packets by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4319 * fix: map cluster crash by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4317 * refactor(core): Optimize and share network state flows by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4320 * fix(notifications): Suppress notifications for muted contacts an… by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4323 * fix(mesh): Set `hopStart` to match `hopLimit` in sent packets by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4324 * fix(node): list and detail usability fixes by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4336 * refactor(firmware): Inject dispatcher into `BleOtaTransport` by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4339 * fix(caps): Correct firmware version for `canMuteNode` by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4341 * chore(lint): Disable ForbiddenComment detekt rule by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4344 * fix(neighborinfo): disable neighbor info dialog temporarily by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4345 * fix(reactions): fix sent message reaction alignment by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4355 * refactor(build): Centralize Android SDK and Java versions by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4377 * fix(node): fix regressions since node ui refactor by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4379 * refactor(build): Centralize Develocity and build cache configuration by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4382 * Refactor PR workflow to include check-changes step by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4397 * chore: fix regressions in the release by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4398 * ci18n: Add fastlane metadata to Crowdin by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4402 * feat(settings): Add firmware capability checks for settings by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4403 * ci: fix scheduled-updates workflow by explicitly adding paths by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4405 * feat(release): Automate changelog, asset updates, and tagging by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4407 * fix(ci): ensure release commit is pushed to branch and validate SHA by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4409 * fix(ci): robust SHA passing for release workflow by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4410 * fix(ci): ensure release SHA is passed correctly and validate inputs by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4411 * fix(l10n): update translation paths in Crowdin config to use locale by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4420 * fix(l10n): update translation paths in Crowdin config to use locale by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4422 ### 📝 Other Changes * chore(build): Enable and configure Compose Compiler reports by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4289 * chore(deps): Update Gradle and library versions by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4309 * Update VERSION_NAME_BASE to 2.7.12 by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4312 * feat(build): Add support for remote Gradle build cache by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4357 * chore: Apply maven-publish plugin consistently by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4364 * feat: Add JitPack configuration for publishing by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4365 * build: Configure JitPack publishing for core modules by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4366 * chore(ci): Remove GitHub Packages publishing workflow by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4368 * build: Lower JDK to 17 and minSdk to 21 by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4369 * Update full_description.txt by @Korb in https://github.com/meshtastic/Meshtastic-Android/pull/4388 * docs: fix typo and url by @bobidle in https://github.com/meshtastic/Meshtastic-Android/pull/4396 * fix(ci): use PAT for release workflow to bypass branch protection by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4408 * fix(ci): robust SHA passing via artifact to bypass secret masking by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4412 * fix(ci): switch to pre-emptive tagging workflow by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4414 * fix(ci): pre-emptive tagging by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4415 ## New Contributors * @Korb made their first contribution in https://github.com/meshtastic/Meshtastic-Android/pull/4388 * @bobidle made their first contribution in https://github.com/meshtastic/Meshtastic-Android/pull/4396 **Full Changelog**: https://github.com/meshtastic/Meshtastic-Android/compare/v2.7.11...v2.7.12-internal.9
  • Jan 21, 2026 v2.7.11 Release page →
    <!-- Release notes generated using configuration in .github/release.yml at v2.7.11 --> ## What's Changed ### 🏗️ Features * feat(logging): Replace Timber with Kermit for multiplatform logging by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4083 * Consider hopStart=0 when calculating hops for packets by @esev in https://github.com/meshtastic/Meshtastic-Android/pull/4101 * Convert Room DAO methods to suspend functions by @romansl in https://github.com/meshtastic/Meshtastic-Android/pull/4102 * feat: add retention period to meshLog. Defaults to 7 days, with a settings dropdown to change by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/4078 * Fix: Use dynamic year for copyright headers by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4116 * feat: auto retry text message send on max retransmit by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/4124
    More…
    * feat: Add separate notifications for waypoints by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4131 * feat: Enhance message notifications with history and actions by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4133 * feat: Add initial handling for Store and Forward PlusPlus packets by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4136 * feat: Add acknowledgement status and retry for emoji reactions by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4142 * feat: Mute broadcast Reaction notifications by default by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4159 * feat: Add SFPP confirmed status to Messages and Reactions by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4139 * feat(i18n): Add string for PKI public key send failure by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4165 * feat: Handle Store and Forward heartbeat packets by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4168 * refactor(build): centralize Dokka documentation generation by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4171 * Dedup repeat messages/reactions due to sfpp by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/4174 * feat: Add mute node functionality by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4181 * feat: Add `forceEnableAll` to `Capabilities` by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4184 * feat(messaging): Overhaul message bubbles and add actions by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4206 * Refactor: Improve MessageItem layout and styling by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4208 * refactor(messaging): Redesign message bubbles and reaction UI by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4217 * feat: Add ESP32 Unified OTA update support by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4095 * feat: Add Client Base role strings by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4227 * feat: Localize traceroute strings by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4228 * feat: retry message/reaction dialog by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/4195 * refactor: Enable test coverage and update CI by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4233 * feat(service): Overhaul MeshServiceExample by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4263 * feat(test): Add comprehensive unit and instrumentation tests by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4260 * fix(ui): Hide battery icon when no power data is available by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4274 ### 🛠️Fixes * refactor: Migrate to Android Gradle Plugin 9.0 by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4072 * feat: Refactor back navigation in adaptive screens by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4085 * fix: update schema 27 with packet index by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/4086 * feat: Improve POSIX time zone string generation by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4087 * feat(build): Set JVM toolchain to 21 by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4090 * feat: Refactor MeshService into smaller, single-responsibility components by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4108 * Refactor: Improve analytics plugin application and task configuration by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4120 * fix: Update copyright year to 2026 by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4121 * feat: Send emoji codepoint in reaction packets by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4123 * feat: Improve node handling and add client notifications by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4130 * fix: reaction display regression by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4141 * refactor: use location compat by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4143 * fix: fix strings.xml by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4147 * fix: Make node details selectable by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4151 * refactor(datetime): Standardize date/time formatting with `DateUtils` by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4164 * refactor(deps): inject CoroutineDispatchers by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4170 * refactor(build): Centralize Dokka configuration into convention plugin by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4173 * fix(meshlog): Change default retention to 30 days by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4177 * feat: Add "now" string and update formatAgo function by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4183 * fix #4150: display `0°C` instead of `-0°C` for near-zero negative temperatures by @lohwasser in https://github.com/meshtastic/Meshtastic-Android/pull/4186 * fix(deps): resolve faraday-multipart ruby 4 incompatibility by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4199 * Revert "fix(deps): resolve faraday-multipart ruby 4 incompatibility" by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4200 * Revert "chore(deps): update ruby to v4" by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4201 * feat(connections): Improve connection screen UI and logic by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4224 * ci(actions): Set up JDK 21 in scheduled-updates workflow by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4236 * ci: Run tests and generate coverage for all modules by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4238 * Revert "ci: Run tests and generate coverage for all modules" by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4240 * fix(ci): Run tests for both F-Droid and Google flavors by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4239 * feat(firmware): Use pio_env to select correct firmware variant by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4244 * ci: fix coverage report paths and improve test result inclusivity by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4245 * refactor(ui): Improve EmojiPicker layout constraints by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4250 * refactor: Use device address to manage service lifecycle by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4251 * fix(node): Correct owner ID and local user detection by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4256 * Display traceroutes with 0 hops by @esev in https://github.com/meshtastic/Meshtastic-Android/pull/4261 * refactor(firmware): Simplify ESP32 firmware check by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4272 * fix(4269): Add LongTurbo preset name and tests by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4273 * fix(configs): Improve loading state feedback and dialog behavior by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4271 * refactor(service): Add destination node number to remote admin commands by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4276 * fix: crashes by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4281 * chore: Add gradle-daemon-jvm.properties to specify toolchain by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4282 * Fix(firmware): Disable serial/USB updates for ESP32 devices by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4283 * feat: Configure Pre-Commit run for debugging by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4284 ## New Contributors * @esev made their first contribution in https://github.com/meshtastic/Meshtastic-Android/pull/4101 * @romansl made their first contribution in https://github.com/meshtastic/Meshtastic-Android/pull/4102 * @lohwasser made their first contribution in https://github.com/meshtastic/Meshtastic-Android/pull/4186 **Full Changelog**: https://github.com/meshtastic/Meshtastic-Android/compare/v2.7.10...v2.7.11
  • Dec 27, 2025 v2.7.10 Release page →
    <!-- Release notes generated using configuration in .github/release.yml at v2.7.10 --> ## What's Changed ### 🏗️ Features * feat(messaging): Add double-tap to react with 👍 by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3972 * feat: Port “Compass view” bottom sheet from Meshtastic-Apple PR #1504 by @jakevis in https://github.com/meshtastic/Meshtastic-Android/pull/3896 * feat(settings): add about screen with open source licenses by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4012 * feat: add SNR/RSSI/Hops Away metrics and timestamp to the reaction dialog by @1nv in https://github.com/meshtastic/Meshtastic-Android/pull/3964 * feat: Traceroute map visualisation by @DivineOmega in https://github.com/meshtastic/Meshtastic-Android/pull/4002 * refactor(build): Migrate core/common to KMP and cleanup build logic by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4026
    More…
    * feat(ui): Animate icon changes with Crossfade by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4028 * ci: Cache AVD snapshots to speed up Android tests by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4030 * feat(build): add module dependency graph generation by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4042 * Feat request neighbours by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/3709 * feat: Add ability to request telemetry from a remote node by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4059 * Add elevation to places where LatLong is listed. by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/4071 * Implements#4054 - Add channel name to channel message notification by @RaspberryProgramming in https://github.com/meshtastic/Meshtastic-Android/pull/4069 ### 🛠️Fixes * refactor(di): Introduce @ProcessLifecycle qualifier for di by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3978 * refactor: Move byte utilities to core:common module by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3977 * refactor(concurrent): Introduce SequentialJob to manage service setup by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3983 * feat: Mark database models and protobufs as stable by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3982 * feat: Optimize message list node lookup by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3981 * chore: Update VERSION_NAME_BASE to 2.7.10 by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3986 * refactor(ui): refactor glow effect drawing by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3988 * refactor: consolidate F-Droid task disabling to convention plugin by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3990 * chore: enhance bluetooth and wifi connection logging by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/3960 * fix(build): disable more analytics tasks for F-Droid builds by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4000 * Update strings for small meshes.xml by @b8b8 in https://github.com/meshtastic/Meshtastic-Android/pull/4009 * Allow using custom tile server via HTTP by @texaskst in https://github.com/meshtastic/Meshtastic-Android/pull/3976 * Remove ktorfit by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/4019 * Restructure node filters by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/4020 * fix: correctly check for local or pre-db-update reaction via RSSI == 0 by @1nv in https://github.com/meshtastic/Meshtastic-Android/pull/4024 * refactor(analytics): Only plant DebugTree in debug builds by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4025 * fix: nodes seen before full user exchange not being updated in phone NodeDB by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/3996 * Traceroute map position snapshots by @DivineOmega in https://github.com/meshtastic/Meshtastic-Android/pull/4035 * fix : avoid our node to be a relaynode candidate by @emp3r0r7 in https://github.com/meshtastic/Meshtastic-Android/pull/4037 * refactor: Add LONG_TURBO ChannelOption and validation test by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4039 * fix: app README.md header by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4043 * perf: add missing index to optimize message list by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/4055 * fix: fixes to improve chat view reliability, eliminates stutter by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/4053 * Revert "chore(deps): update ruby to v4" by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4064 * fix unstaged file for altitude on compass by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/4074 * fix: internal regression; if hardware model is unset keep long/short names null by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/4079 * perf: add node list indicies by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/4056 ### 👷Dependencies * chore(deps): update com.google.firebase:firebase-bom to v34.7.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3973 * chore(deps): update ktorfit to v2.7.1 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3974 * chore(deps): update io.nlopez.compose.rules:detekt to v0.5.2 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3975 * chore(deps): update github artifact actions (major) by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3987 * chore(deps): update actions/checkout action to v6 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3991 * chore(deps): update core/proto/src/main/proto digest to 4095e59 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3998 * chore(deps): update core/proto/src/main/proto digest to 9beb80f by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/4014 * chore(deps): update devtools.ksp to v2.3.4 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/4018 * chore(deps): update plugin protobuf to v0.9.6 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/4022 * chore(deps): update ruby to v3.4.8 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/4023 * chore(deps): update androidx.compose:compose-bom-alpha to v2025.12.01 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/4027 * chore(deps): update kotlin ecosystem to v2.3.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/4015 * chore(deps): update core/proto/src/main/proto digest to 62ef17b by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/4029 * chore(deps): update actions/cache action to v5 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/4031 * chore(deps): update google maps compose to v7 (major) by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/4032 * chore(deps): update fastlane to v2.230.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/4038 * chore(deps): update io.nlopez.compose.rules:detekt to v0.5.3 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/4041 * chore(deps): update markdown renderer (mike penz) by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/4048 * chore(deps): update core/proto/src/main/proto digest to c474fd3 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/4050 * chore(deps): update ruby to v4 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/4062 ### 🧱Repo * chore: Add labeler rule for refactor branch naming by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3979 ### 🤖Automated * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3980 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3984 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3985 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3989 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3997 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3999 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4001 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4003 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4004 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4006 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4008 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4013 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4017 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4021 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4034 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4040 * chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4044 * chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4045 * chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4049 * chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4051 * chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4058 * chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4060 * chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4066 * chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4067 * chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4068 * chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4073 * chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/4076 ## New Contributors * @jakevis made their first contribution in https://github.com/meshtastic/Meshtastic-Android/pull/3896 * @texaskst made their first contribution in https://github.com/meshtastic/Meshtastic-Android/pull/3976 * @1nv made their first contribution in https://github.com/meshtastic/Meshtastic-Android/pull/3964 * @DivineOmega made their first contribution in https://github.com/meshtastic/Meshtastic-Android/pull/4002 * @RaspberryProgramming made their first contribution in https://github.com/meshtastic/Meshtastic-Android/pull/4069 **Full Changelog**: https://github.com/meshtastic/Meshtastic-Android/compare/v2.7.9...v2.7.10
  • Dec 11, 2025 v2.7.9 Release page →
    <!-- Release notes generated using configuration in .github/release.yml at v2.7.9 --> ## What's Changed ### 🏗️ Features * feat: add infrastructure shutdown safeguards and enhance shutdown dialog text by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/3858 * feat(firmware): Implement USB DFU updates for supported devices by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3901 * chore(build-logic): Apply Spotless and Detekt to build-logic module by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3962 ### 🛠️Fixes * fix: contact list ordering by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/3863 * fix: autofocus in message threads by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/3869
    More…
    * fix: system back button exiting from node detail page by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/3870 * feat(model): Make NetworkDeviceHardware robust to unknown JSON keys by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3880 * Fix/3894 talkback confusion by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/3914 * block creation or sending of duplicate channels. by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/3913 * chore: Update VERSION_NAME_BASE to 2.7.9 by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3917 * Revert "block creation or sending of duplicate channels. " by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3921 * update internal report name to reorder . by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/3925 * fix #3838 : message deletion count on the contacts page. by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/3924 * Set socket timeout to 5s by @weebl2000 in https://github.com/meshtastic/Meshtastic-Android/pull/3929 * refactor: Remove unused connection transport state by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3933 * refactor: improve node DB state management and readiness logic by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3932 * fix(maps): Enable lite mode and fix recomposition for inline maps by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3936 * refactor(settings): Use string resources for update intervals by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3937 * fix(map): Remove liteMode from inline map by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3949 * feat(navigation): Navigate back to list view on tab reselection by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3948 * chore(ci): generate changelog on pushes to main by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3951 * ci(workflow): Improve release tag detection and artifact changelog by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3954 * fix: back button respects navigation history in detail screens by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/3956 * fix(strings): correct settings interval templating by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3959 * refactor(build): Create a dedicated analytics convention plugin by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3961 * fix(nodes): Correctly filter ignored nodes by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3966 ### 👷Dependencies * chore(deps): update ktorfit to v2.6.5 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3875 * chore(deps): update actions/ai-inference action to v2 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3888 * chore(deps): update actions/github-script action to v8 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3889 * chore(deps): update actions/stale action to v10.1.1 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3890 * chore(deps): update io.nlopez.compose.rules:detekt to v0.5.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3891 * chore(deps): update io.nlopez.compose.rules:detekt to v0.5.1 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3900 * chore(deps): update androidx (general) by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3895 * chore(deps): update com.github.mik3y:usb-serial-for-android to v3.10.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3906 * chore(deps): update protobuf runtime to v4.33.2 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3908 * chore(deps): update core/proto/src/main/proto digest to 4095e59 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3905 * chore(deps): update plugin kover to v0.9.4 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3938 * chore(deps): update peter-evans/create-pull-request action to v8 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3939 * chore(deps): update plugin com.gradle.develocity to v4.3 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3950 * chore(deps): update actions/upload-artifact action to v5 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3955 * chore(deps): update mikepenz/release-changelog-builder-action action to v6 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3953 * chore(deps): update core/proto/src/main/proto digest to 4095e59 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3958 * chore(deps): update com.android.tools:common to v31.13.2 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3968 * chore(deps): update datadog to v3.4.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3969 * chore(deps): update agp to v8.13.2 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3967 ### 🧱Repo * chore: Add GitHub Actions for AI-powered issue and PR management by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3886 * Repo - drop completeness check for feature requests by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/3910 * repo/ reduce ai review triggers when unneeded by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/3915 * repo: Add AI Community Moderator workflow by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3931 * repo: Add Contributor Covenant Code of Conduct by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3941 * chore: Schedule documentation deployment on Sundays by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3942 * chore: Use repeatOnLifecycle for lifecycle-aware coroutine launch by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3952 ### 🤖Automated * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3861 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3864 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3871 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3872 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3879 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3887 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3892 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3893 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3918 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3920 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3922 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3927 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3928 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3940 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3943 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3944 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3945 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3957 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3965 ## New Contributors * @weebl2000 made their first contribution in https://github.com/meshtastic/Meshtastic-Android/pull/3929 **Full Changelog**: https://github.com/meshtastic/Meshtastic-Android/compare/v2.7.8...v2.7.9
  • Nov 30, 2025 v2.7.8 Release page →
    <!-- Release notes generated using configuration in .github/release.yml at v2.7.8 --> ## What's Changed ### 🏗️ Features * feat: Add firmware update module for Nordic nRF devices by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3782 * feat(settings): Add RTTTL ringtone playback in settings by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3799 * dupe internal builds to an alt repo to allow obtanium by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/3809 * feat: Keep screen on during firmware update by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3806 * feat: prevent QR imports from overriding local TX power by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/3845 * feat(navigation): Implement adaptive list-detail for contacts and nodes by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3850
    More…
    * feat: firmware bootloader ota warnings by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/3846 * feat: per device persistant dismissal of bootloader nags by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/3859 ### 🛠️Fixes * docs: Overhaul and rename agent guide by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3757 * chore(ci): Add Crowdin sync to scheduled updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3760 * chore(ci): Use CROWDIN_GITHUB_TOKEN for scheduled updates PR by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3761 * chore(crowdin): Remove `preserve_hierarchy` option by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3764 * chore(renovate): Configure more aggressive automerge by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3772 * chore: Update VERSION_NAME_BASE to 2.7.8 by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3779 * fix: unread count racecondition by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/3784 * fix: skip nodeinfo upsert when we recieve defaults from the node by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/3796 * feat: Add Jetpack Paging 3 support for messages and threads/contacts by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/3795 * refactor: Improve RSSI reading robustness in connection info by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3798 * refactor(connections): Improve RSSI reading robustness by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3804 * Added relays count by @RCGV1 in https://github.com/meshtastic/Meshtastic-Android/pull/3773 * fix: message list paged lifecycle resulting in notifications being cleared by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/3815 * fix: skip default nodeinfo upsert in handleReceivedUser for live packets by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/3819 * fix stop the connections screen from jumping during connections by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/3821 * fix: allow forgetting of network nodes by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/3820 * Fix add qr acting like replace instead of add by @RCGV1 in https://github.com/meshtastic/Meshtastic-Android/pull/3823 * fix: loadCachedDb() before backfill to ensure in-mem nodedb isn't stale, show filtered count in nodelist by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/3827 * fix: Prevent message list jumping during pagination updates by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/3829 * fix: Multiple bugs - settings text fields, dropdowns, missing override duty cycle, and MQTT icon display by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/3833 * fix: node search by keeping denormalized name columns up to date and backfilling existing nodes by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/3839 * fix: duplicate LazyColumn keys for broadcast contacts by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/3840 * fix: fdroid device hardware fallback using bundled JSON for incomplete cache entries by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/3844 * fix: further fixes for fdroid json fallbacks by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/3847 * fix: prevent text fields from auto-focusing on screen load by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/3857 * refactor(navigation): Simplify adaptive back nav and state by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3860 ### 👷Dependencies * chore(deps): update plugin dependency-analysis to v3.5.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3751 * chore(deps): update actions/checkout action to v6 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3755 * chore(deps): update androidx datastore to v1.2.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3756 * chore(deps): update devtools.ksp to v2.3.3 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3759 * chore(deps): update no.nordicsemi.kotlin.ble:client-android to v2.0.0-alpha11 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3776 * chore(deps): update core/proto/src/main/proto digest to 52fa252 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3775 * chore(deps): update io.nlopez.compose.rules:detekt to v0.4.28 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3781 * chore(deps): update fastlane to v2.229.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3783 * chore(deps): update androidx (general) to v3.3.6 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3797 * chore(deps): update fastlane to v2.229.1 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3801 * chore(deps): update ruby to v3.4.7 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3802 * chore(deps): update ktor to v3.3.3 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3825 * chore(deps): update plugin dependency-analysis to v3.5.1 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3831 * chore(deps): update no.nordicsemi.kotlin.ble:client-android to v2.0.0-alpha12 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3849 ### 🧱Repo * chore(ci): preserve translation hierarchy by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3762 * ci(workflows): Preserve hierarchy when uploading sources to Crowdin by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3763 * fix(ci): localization branch name by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3765 * ci: check workflow status on scheduled updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3774 * fix: typo by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3777 * chore(ci): Use dedicated token for Crowdin workflow by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3778 * fix token value by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/3811 * tweak bug reports by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/3818 * add 'ci' to autolabel for repo. by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/3835 ### 🤖Automated * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3752 * chore: Scheduled updates (Firmware, Hardware, Translations) by @github-actions[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3766 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3790 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3791 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3794 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3800 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3803 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3810 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3824 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3826 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3828 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3832 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3834 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3836 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3843 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3848 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3851 * chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3852 **Full Changelog**: https://github.com/meshtastic/Meshtastic-Android/compare/v2.7.7...v2.7.8
  • Nov 19, 2025 v2.7.7 Release page →
    <!-- Release notes generated using configuration in .github/release.yml at v2.7.7 --> ## What's Changed ### 🏗️ Features * refactor(ble): Migrate to Nordic BLE Library for scanning and bonding by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3712 * feat #3642: Add infrastructure to the list of filters. by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/3716 * feat(connections): `Connecting` state refactor by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3722 * feat(ui): Display BLE signal strength for connected device by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3721 * feat(ui): Improve scan status text display by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3725 * feat: polish jump to unread message by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/3710
    More…
    ### 🛠️Fixes * Update strings.xml by @b8b8 in https://github.com/meshtastic/Meshtastic-Android/pull/3711 * add back arrow to the channelConfig screen by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/3713 * refactor(coroutines): Use SupervisorJobs by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3714 * fix #3509: MQTT reporting interval not being selected, and sent to node by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/3717 * fix(bluetooth): Check for permissions before accessing bonded devices by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3720 * feat(bluetooth): Request location permission for BLE scan pre S by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3724 * feat(nsd): Add support for Android 14+ NSD resolving by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3731 * refactor(service): Simplify boot-time service startup by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3730 * refactor(ble): Improve BLE connection stability and error handling by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3744 ### 👷Dependencies * chore(deps): update com.squareup.okhttp3:logging-interceptor to v5.3.1 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3718 * chore(deps): update gradle to v9.2.1 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3723 * chore(deps): update com.squareup.okhttp3:logging-interceptor to v5.3.2 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3733 * chore(deps): update core/proto/src/main/proto digest to 7eb3258 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3736 * chore(deps): update plugin spotless to v8.1.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3738 * chore(deps): update com.diffplug.spotless:spotless-plugin-gradle to v8.1.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3737 * chore(deps): update datadog to v3.3.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3742 * chore(deps): update androidx (general) by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3745 * chore(deps): update androidx room to v2.8.4 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3746 * chore(deps): update androidx lifecycle to v2.10.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3748 * chore(deps): update androidx.navigation3:navigation3-runtime to v1.0.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3747 ### 🧱Repo * chore: Update VERSION_NAME_BASE to 2.7.7 by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3715 ### 🤖Automated * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3734 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3739 * chore: Scheduled updates (Firmware, Hardware) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3743 **Full Changelog**: https://github.com/meshtastic/Meshtastic-Android/compare/v2.7.6...v2.7.7
  • Nov 15, 2025 v2.7.6 Release page →
    <!-- Release notes generated using configuration in .github/release.yml at v2.7.6 --> ## What's Changed ### 🏗️ Features * Feat/improve debug decoding by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/3554 * feat #3436 - add current IP address' to the settings > network panel. by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/3537 * Fix #3542 Conversations list item layout. by @Tema-man in https://github.com/meshtastic/Meshtastic-Android/pull/3553 * feat: Display relay node information for messages by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3574 * Enable parallel installation of debug and release builds by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3596 * Remove `UiViewModel` snackbar logic by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3598
    More…
    * Modularize remaining nodes code by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3599 * Move `SettingsNavigation` back to `:app` module by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3604 * Re-enable debug application IDs by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3607 * feat(map): Persist Google Maps camera position by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3605 * Remove `stringResource()` `id` named argument by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3618 * Alias strings `R` to `Res` by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3619 * Relocate proto utils by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3621 * Clean up string access by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3629 * refactor(ble): Replace custom BLE implementation with Nordic by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3595 * feat: per device DB manager by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/3641 * refactor(ble): Refactor NordicBleInterface for clarity and stability by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3653 * Kmp strings cleanup by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3669 * feat: Add bottom-nav scroll-to-top handling for nodes and conversations by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/3674 * feat(ble): Add support for LogRadio characteristic, enhance logs by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3691 * feat: jump to oldest unread message upon opening a thread, display divider between read/unread by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/3693 ### 🛠️Fixes * Add node's name to CSV export file by @NeimadTL in https://github.com/meshtastic/Meshtastic-Android/pull/3555 * fix #3528 Handle duplicate values in the broadcast interval enum by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/3538 * Fix #3468 - Timed Mute by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/3544 * fix #3566: rangetest export not having distances by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/3566 * fix #2062: Remap channels when rearranged by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/3561 * feat: Enable minification and add ProGuard rules by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3576 * refactor: Comment out debug applicationId overrides by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3601 * Use `Resources` for string access by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3620 * fix(#3622): Do not favorite node when sending a dm from a CLIENT_BASE device by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3623 * refactor: Update protobuf keep rule for new package name by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3627 * fix: Clear packet database alongside node database by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3634 * fix: Update ignored status in nodeDB on toggle by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3638 * fix: Add delays around heartbeat on connection by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3643 * fix: bt notif subscription race condition by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3645 * Make `:core:strings` a Compose Multiplatform library by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3617 * chore: temporarily remove translations to allow crowdin to repopulate by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3664 * refactor: Improve log export logic for decoded payloads by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3663 * fix: enforce LRU only over device-specific DBs, add one-time deletion of legacy DB on switch (guarded by prefs flag) by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/3648 * fix: clear in mem cached values on nodedb, factory reset by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/3680 * Remove escaped single quotes and fix format args (translations) by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3682 * Attempt to disable crowdin escapes by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3685 * Attempt to disable crowdin single quote escapes by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3687 * fix(strings): Correct format specifiers for plurals and integers by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3698 * chore: Fix unescaped apostrophes in translations by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3700 * fix: address backfill issue on tcp connections; add logging by @mdecourcy in https://github.com/meshtastic/Meshtastic-Android/pull/3676 * feat(build): Add distinct names for debug builds by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3707 ### 👷Dependencies * chore(deps): update kotlin ecosystem to v2.2.21 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3531 * chore(deps): update github artifact actions (major) by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3541 * chore(deps): update plugin dependency-analysis to v3.4.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3540 * chore(deps): update gradle to v9.2.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3558 * chore(deps): update plugin dependency-analysis to v3.4.1 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3572 * chore(deps): update firebase by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3571 * chore(deps): update com.squareup.okhttp3:logging-interceptor to v5.3.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3579 * chore(deps): update core/proto/src/main/proto digest to fbe1538 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3584 * chore(deps): update markdown renderer (mike penz) to v0.38.1 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3594 * ci: Enable Renovate for Bundler by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3602 * chore(deps): Bump aws-sdk-s3 and related dependencies by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3603 * chore(deps): update devtools.ksp to v2.3.1 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3612 * chore(deps): update com.google.android.gms:play-services-maps to v19.2.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3613 * chore(deps): update ktor to v3.3.2 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3624 * chore(deps): update androidx navigation by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3625 * chore(deps): update androidx (general) by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3626 * chore(deps): update androidx navigation to v1.0.0-rc01 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3628 * chore(deps): update devtools.ksp to v2.3.2 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3635 * chore(deps): update agp to v8.13.1 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3651 * chore(deps): update com.android.tools:common to v31.13.1 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3652 * chore(deps): update plugin compose-multiplatform to v1.9.3 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3654 * feat(#3508): Optionally preserve Favorites on nodeDb reset by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3633 * chore(deps): update com.google.zxing:core to v3.5.4 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3670 * chore(deps): update protobuf runtime to v4.33.1 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3692 * chore(deps): update com.google.firebase:firebase-bom to v34.6.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3704 * chore(deps): update google maps compose to v6.12.2 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3706 ### 🧱Repo * Update VERSION_NAME_BASE to 2.7.6 by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3588 * fix: Explicitly set Crowdin project type to Android by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3694 * feat: Add pre-commit run configuration by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3696 ### 🤖Automated * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3529 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3539 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3543 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3546 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3552 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3557 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3559 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3560 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3563 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3568 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3569 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3573 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3577 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3581 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3587 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3591 * chore: Scheduled updates (Firmware, Hardware) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3593 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3597 * chore: Scheduled updates (Firmware, Hardware) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3600 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3608 * chore: Scheduled updates (Firmware, Hardware) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3616 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3630 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3631 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3646 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3650 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3660 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3666 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3673 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3675 * chore: Scheduled updates (Firmware, Hardware) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3690 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3699 ## New Contributors * @NeimadTL made their first contribution in https://github.com/meshtastic/Meshtastic-Android/pull/3555 * @Tema-man made their first contribution in https://github.com/meshtastic/Meshtastic-Android/pull/3553 * @mdecourcy made their first contribution in https://github.com/meshtastic/Meshtastic-Android/pull/3641 **Full Changelog**: https://github.com/meshtastic/Meshtastic-Android/compare/v2.7.5...v2.7.6
  • Oct 30, 2025 v2.7.5 Release page →
    <!-- Release notes generated using configuration in .github/release.yml at v2.7.5-open.1 --> ## What's Changed ### 🏗️ Features * Generate a POSIX timezone string from a ZoneID by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3514 * Organize channel config files by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3526 ### 🛠️Fixes * fix: Allow BLE reconnection after connection drop by @suteny0r in https://github.com/meshtastic/Meshtastic-Android/pull/3518 * chore: Update VERSION_NAME_BASE to 2.7.5 by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3527 ### 👷Dependencies
    More…
    * chore(deps): update plugin dependency-analysis to v3.2.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3515 * chore(deps): update androidx room to v2.8.3 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3524 * chore(deps): update androidx.compose.material3.adaptive:adaptive to v1.2.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3525 * chore(deps): update androidx (general) by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3522 * chore(deps): update devtools.ksp to v2.3.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3516 * chore(deps): update androidx navigation to v1.0.0-beta01 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3523 ### 🤖Automated * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3513 ## New Contributors * @suteny0r made their first contribution in https://github.com/meshtastic/Meshtastic-Android/pull/3518 **Full Changelog**: https://github.com/meshtastic/Meshtastic-Android/compare/v2.7.4...v2.7.5-open.1
  • Oct 20, 2025 v2.7.4 Release page →
    <!-- Release notes generated using configuration in .github/release.yml at v2.7.4 --> ## What's Changed ### 🏗️ Features * Add unread count badge to bottom nav by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3440 * Modularize messaging code by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3435 * Remove unused `UiViewModel` code by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3442 * Move maps manifest to `:feature:map` by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3444 * Decouple settings screens from `NavHostController` by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3450 * Tweak settings footer button style/visibility by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3458
    More…
    * feat(ble): Refactor SafeBluetooth and add modern Android API support by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3483 * feat(#3474): Move lock icon on ContactItem.kt, tweak layout. by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3487 * feat(map): Add pulsing animation to recently heard nodes by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3495 ### 🛠️Fixes * feat(workflows): Allow promotions from any channel by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3432 * remove default value for onDismiss from SimpleAlertDialog by @SebRut in https://github.com/meshtastic/Meshtastic-Android/pull/3441 * Move `NodeMapScreen` to `:feature:map` by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3443 * Sets keyboard sentence capitalization on chat text inputs by @Kealper in https://github.com/meshtastic/Meshtastic-Android/pull/3445 * Modularize `ScannedQrCodeDialog` by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3446 * chore: Add workflows permission to GitHub Actions by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3452 * Revert "chore: Add workflows permission to GitHub Actions" by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3454 * Add `stateInWhileSubscribed` extension by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3456 * Clean up list item component API by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3465 * Add dividers to node details by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3466 * Enhancement - Add 'show all meanings' to node key encryption dialog by @ChrisDeardeuff in https://github.com/meshtastic/Meshtastic-Android/pull/3437 * Align `CoroutineDispatchers` usage by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3481 * Fix lint in `Main.kt` by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3484 * feat(bluetooth): conditional RSSI polling by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3489 * Revert "chore(deps): update ruby to v3.4.7" by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3490 * Fix app cold start jank by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3492 * Update strings.xml - Remove "seconds" by @b8b8 in https://github.com/meshtastic/Meshtastic-Android/pull/3497 * feat(position): Update position broadcast intervals by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3500 * feat: Remove Bluetooth RSSI feature by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3504 ### 👷Dependencies * chore(deps): update com.google.firebase:firebase-bom to v34.4.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3427 * chore(deps): update core/proto/src/main/proto digest to cd5c83a by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3429 * chore(deps): update com.squareup.okhttp3:logging-interceptor to v5.2.1 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3430 * chore(deps): update core/proto/src/main/proto digest to 38638f1 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3433 * chore(deps): update plugin com.gradle.develocity to v4.2.2 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3453 * chore(deps): update datadog to v3.2.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3462 * chore(deps): update org.jetbrains.dokka:android-documentation-plugin to v2.1.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3471 * chore(deps): update plugin dokka to v2.1.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3472 * chore(deps): update protobuf runtime to v4.33.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3475 * chore(deps): update plugin kover to v0.9.3 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3485 * chore(deps): update ruby to v3.4.7 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3416 * chore(deps): update devtools.ksp to v2.2.20-2.0.4 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3428 * chore(deps): update core/proto/src/main/proto digest to 4a61838 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3493 * chore(deps): update core/proto/src/main/proto digest to bf149bb by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3501 ### 🧱Repo * chore(repo): Update VERSION_NAME_BASE to 2.7.4 by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3457 * Modify stale.yml for issue management by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3460 ### 🤖Automated * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3431 * chore: Scheduled updates (Firmware, Hardware) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3438 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3455 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3459 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3463 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3470 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3473 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3477 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3479 * chore: Scheduled updates (Firmware, Hardware) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3488 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3498 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3505 ## New Contributors * @SebRut made their first contribution in https://github.com/meshtastic/Meshtastic-Android/pull/3441 * @ChrisDeardeuff made their first contribution in https://github.com/meshtastic/Meshtastic-Android/pull/3437 **Full Changelog**: https://github.com/meshtastic/Meshtastic-Android/compare/v2.7.3...v2.7.4
  • Oct 9, 2025 v2.7.3 Release page →
    <!-- Release notes generated using configuration in .github/release.yml at v2.7.3 --> ## What's Changed ### 🏗️ Features * Modularize settings code by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3355 * Inject `PlatformAnalytics` directly by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3358 * feat: Always Display voltage by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3362 * Remove unused dependencies in `:app` by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3365 * refactor(ui): Refactor SettingsItem component by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3364 * Remove version catalog bundles by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3370
    More…
    * Move tests to appropriate modules by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3377 * Remove remaining unused dependencies in `:core:*` by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3387 * feat(ui): Refactor node position details into separate section by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3382 * feat(ui): Simplify connection status message by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3389 * feat(ci): Configure staged rollouts for Android releases by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3399 * feat(#3409): Add analytics notice to welcome screen by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3410 * feat(settings): replace interval inputs with dropdowns by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3352 ### 🛠️Fixes * refactor: Switch to `compileOnly` for convention plugins by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3357 * feat(ble): Implement keep-alive and improve connection stability by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3359 * feat: Add contentColor parameter to info components by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3363 * ci: Use `tag_name` input in release and promote workflows by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3366 * Fix google build by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3371 * Remove unused `:core:database` dependencies by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3383 * fix: service status notification refactor by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3386 * fix: Change fallback node name format by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3391 * ci: fix release cleanup by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3392 * Remove remaining unused dependencies across the project by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3390 * ci(github-actions): Check for null tagName in post-release-cleanup by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3398 * feat(node): Always show exchange position action by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3400 * Fix share channels crash by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3401 * Protobuf package change by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3291 * Revert "chore(deps): update ruby to v3.4.7" by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3415 * feat(ci): Refactor release promotion logic by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3418 * feat(ci): Checkout code in promotion workflow by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3419 * ci(workflow): Calculate release increment based on target channel by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3420 * feat(ci): Use `gh release edit` to retag releases by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3421 * ci(github-actions): Remove tag step for promotions by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3422 ### 👷Dependencies * Consistent catalog naming for AndroidX dependencies by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3368 * chore(deps): update github/codeql-action action to v4 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3376 * chore(deps): update com.squareup.okhttp3:logging-interceptor to v5.2.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3378 * chore(deps): update google maps compose to v6.12.1 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3379 * chore(deps): update devtools.ksp to v2.2.20-2.0.3 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3380 * Remove unused `:core:analytics` dependencies by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3381 * chore(deps): update ruby to v3.4.7 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3384 * chore(deps): update ktor to v3.3.1 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3397 * chore(deps): update androidx room to v2.8.2 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3405 * chore(deps): update androidx.compose.material3.adaptive:adaptive to v1.2.0-rc01 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3406 * chore(deps): update androidx navigation to v1.0.0-alpha11 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3404 * chore(deps): update androidx (general) by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3407 * chore(deps): update plugin dependency-analysis to v3.1.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3408 * chore(deps): update core/proto/src/main/proto digest to ef173e3 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3403 * chore(deps): update core/proto/src/main/proto digest to ef173e3 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3411 * chore(deps): update ruby to v3.4.7 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3414 * chore(deps): update com.google.gms.google-services:com.google.gms.google-services.gradle.plugin to v4.4.4 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3425 * chore(deps): update plugin google-services to v4.4.4 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3426 ### 🧱Repo * chore: Update VERSION_NAME_BASE to 2.7.3 by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3367 ### 🤖Automated * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3369 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3388 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3393 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3412 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3417 **Full Changelog**: https://github.com/meshtastic/Meshtastic-Android/compare/v2.7.2...v2.7.3
  • Oct 4, 2025 v2.7.2 Release page →
    <!-- Release notes generated using configuration in .github/release.yml at main --> ## What's Changed ### 🏗️ Features * Decouple `MessageScreen` from `UiViewModel` by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3210 * Decouple `MapView` from `UiViewModel` by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3213 * Move some repo classes to `:core:data` by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3214 * Decouple contacts nav graph from `UiViewModel` by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3215 * Decouple `MainAppBar` from `UiViewModel` by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3216 * feat(map): add last heard filter for map nodes by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3219
    More…
    * feat(map): Add last heard filter for node tracks by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3222 * add colour coding to traceroutes by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/3227 * feat(bluetooth): expose and display bluetooth signal strength (RSSI) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3235 * Migrate node sort prefs to datastore by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3241 * Clearer node filter options by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3250 * Add `:core:service` by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3253 * Decouple `NodeMapScreen` from `UIViewModel` by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3257 * refactor(analytics)!: modularize analytics - remove Logging by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3256 * feat(map): set minimum cluster size to 10 by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3260 * refactor(ui)!: update NodeItem display with new components by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3273 * Add `:feature:node` by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3275 * Modularize common composables by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3286 * feat(network): add http cache to OkHttpClient by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3290 * feat(contact): add manually verified shared contact support by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3283 * feat(settings): add link to system app settings by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3293 * `ConnectionsScreen` available BLE devices by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3298 * Finish migration away from global app bar by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3297 * Add `BuildConfigProvider` by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3318 * More map modularization by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3319 * Decouple `NodeMapScreen` from `MetricsViewModel` by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3323 ### 🛠️Fixes * Decouple `NodeDetail` from `UiViewModel` by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3212 * ci(release): add build provenance and streamline release process by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3217 * Spruce up `LoRaConfigScreen` by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3224 * fix(service): clear nodeDB when device address changes by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3232 * build: use git commit count for versionCode by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3233 * Remove `NodeChip` long-click by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3220 * fix(build): apply Datadog and Firebase plugins _only_ to google flavor by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3240 * Remove node card expansion by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3243 * fix(crash): pass in navcontroller and specify viewmodel type by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3244 * fix(ui): handle ActivityNotFoundException when opening firmware links by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3245 * fix(service): Update foreground service type and error handling by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3246 * fix(deps): update Kotlin Serialization plugin version by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3261 * Remove noisy error disconnected toast by @thebentern in https://github.com/meshtastic/Meshtastic-Android/pull/3263 * Modularize more maps files by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3262 * chore(analytics): Disable Google services for F-Droid builds by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3264 * chore(fdroid): Configure F-Droid build variant by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3265 * ci(release): simplify artifact paths for GitHub Release by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3267 * feat(analytics): Set session sample rate for RUM by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3277 * Fix `NodeChip` click handling by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3278 * fix(debug): replace top app bar with actions (delete) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3276 * Move `MapViewExtensions` to `:feature:map` by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3284 * Decouple `ChannelScreen` from `UIViewModel` by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3295 * Decouple `ScannedQrCodeDialog` from `UiViewModel` by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3300 * Fix shared contact deeplink by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3302 * feat(ci): overhaul release workflow for hotfixes and promotions by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3307 * Update strings.xml - PKI required for DMs by @b8b8 in https://github.com/meshtastic/Meshtastic-Android/pull/3301 * refactor(release)!: simplify and streamline release workflow by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3309 * ci(github-actions): add Release environment to workflows by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3310 * ci(workflows): configure git user for release workflows by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3311 * ci(github-actions): move release environment to correct workflow by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3314 * ci(release): trigger release workflow from promotion and internal builds by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3315 * chore(ci): remove release environment from prepare-build-info job by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3316 * ci(release): check for existing versionCode on Google Play before build by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3320 * ci(promote-release): enhance stage promotion logic by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3321 * ci(release): refine promotion logic and enhance Datadog integration by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3322 * Revert by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3325 * Revert markdown message rendering by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3328 * feat(chat): (re)allow multi-line messages in text input by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3329 * fix: update foreground service type to manifest by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3332 * ci(release): refactor release workflow to be callable by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3330 * feat(workflow): update permissions for release workflow by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3333 * fix(release): simplify build condition for internal channel by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3336 * Refactor build steps to check channel input by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3337 * fix(release): update track names for Google Play promotion by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3338 * refactor(ci): separate release and promotion workflows by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3339 * feat(fastlane): copypasta typo by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3342 ### 👷Dependencies * chore(deps): update core/proto/src/main/proto digest to 082bb7c by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3223 * chore(deps): update core/proto/src/main/proto digest to 394268b by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3252 * chore(deps): update gradle/actions action to v5 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3270 * chore(deps): update google maps compose to v6.12.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3274 * chore(deps): update core/proto/src/main/proto digest to 60c3e66 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3279 * chore(deps): update plugin com.gradle.develocity to v4.2.1 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3288 * chore(deps): update datadog to v1.21.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3292 * chore(deps): update core/proto/src/main/proto digest to c1e31a9 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3305 * chore(deps): update actions/stale action to v10.1.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3317 * chore(deps): update core/proto/src/main/proto digest to a1b8c3d by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3326 ### 🧱Repo * chore(repo): Update VERSION_NAME_BASE to 2.7.2 by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3294 * ci: Add environment specification for promote-release job by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3340 * fix(ci): replace build lanes by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3341 ### 🤖Automated * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3211 * chore: Scheduled updates (Firmware, Hardware) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3218 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3221 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3229 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3236 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3237 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3239 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3242 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3247 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3269 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3271 * chore: Scheduled updates (Firmware, Hardware) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3280 * chore: Scheduled updates (Firmware, Hardware) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3285 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3296 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3299 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3303 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3304 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3306 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3312 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3327 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3331 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3334 * chore: Scheduled updates (Firmware, Hardware) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3335 **Full Changelog**: https://github.com/meshtastic/Meshtastic-Android/compare/v2.7.1...2.7.2
  • Sep 26, 2025 v2.7.1 Release page →
    <!-- Release notes generated using configuration in .github/release.yml at v2.7.1 --> ## What's Changed ### 🏗️ Features * Feat/node notes by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/3014 * docs: update app store metadata by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3048 * Update strings.xml - Include GeoJSON by @b8b8 in https://github.com/meshtastic/Meshtastic-Android/pull/3052 * feat(build): Convention Plugins by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3081 * More `ConnectionsScreen` screen breakup by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3108 * feat(build-logic): modularize build-logic & update dependencies by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3110
    More…
    * Example project: Appease Detekt by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3125 * Move nav routes to new `:navigation` project module by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3124 * Decouple `ConnectionsScreen` from `UiViewModel` by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3126 * Re-add "set region" CTA by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3129 * Start migration away from global top app bar by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3132 * Decouple `SettingsScreen` from `UiViewModel` by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3137 * Flatten `BluetoothViewModel` by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3138 * Add `MapScreen` by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3142 * New core modules for `:model`, `:navigation`, `:network`, `:prefs` by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3147 * Launch system language picker for API 33+ by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3145 * Modularize protos by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3152 * Modularize some model classes by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3153 * feat(settings): align config screens copy and order with iOS by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3144 * refactor(R): Move R file imports to core UI module by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3159 * refactor(settings)!: standardize radio config screens by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3167 * Add core data modules by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3169 * Modularize prefs classes by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3171 * feat(settings): add device telemetry toggle by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3166 * Move common dispatchers to `:core:di` by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3178 * Modularize `CustomTileProviderRepository` by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3181 * Modularize more models/utils by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3182 * refactor(ui): improve UX for saving node notes by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3197 * Add `:core:ui` by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3203 * Less state held by `MeshService` by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3205 * Decouple `NodeScreen` from `UiViewModel` by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3207 ### 🛠️Fixes * Update EnvironmentMetrics.kt - μR/h by @b8b8 in https://github.com/meshtastic/Meshtastic-Android/pull/3008 * fix(service): increase config wait time by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3006 * docs: update release process for promotion strategy by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3017 * feat(ci): migrate to fastlane for release management by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3038 * docs(RELEASE_PROCESS): update release finalization steps by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3040 * fix(merge-queue): add CODECOV_TOKEN to secrets by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3064 * ci: add CODECOV_TOKEN to merge-queue workflow by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3066 * ci: upload Android test results to Codecov by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3055 * fix: detekt by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3090 * fix: detekt by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3096 * Add coverage status configuration to codecov.yml by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3104 * #2803 Waypoints with line breaks by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/3101 * Convert sample project to Kotlin by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3111 * refactor(build): simplify lint, spotless, and detekt configurations by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3133 * refactor(map): use hiltViewModel for MapViewModel by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3135 * Modularize some map-related files by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3154 * ci: streamline release process and artifact handling by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3163 * Update strings.xml by @b8b8 in https://github.com/meshtastic/Meshtastic-Android/pull/3180 * Modularize database classes by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3192 * refactor(service): unify config and node info request flow by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3201 * chore(release): remove update-github-release step from workflow by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3204 * feat(db): introduce transactional config installation by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3209 ### 👷Dependencies * chore(deps): update meshtastic protobufs to 8caf423 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3025 * chore(deps): update actions/upload-pages-artifact action to v4 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3029 * chore(deps): update google maps compose to v6.10.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3036 * chore(deps): update actions/download-artifact action to v5 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3046 * chore(deps): update ruby to v3.4.5 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3045 * chore(deps): update kotlin ecosystem to v2.2.20 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3050 * chore(deps): update codecov/codecov-action action to v5 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3069 * chore(deps): update androidx adaptive ui to v1.2.0-beta02 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3057 * chore(deps): update androidx room to v2.8.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3060 * chore(deps): update androidx navigation by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3059 * chore(deps): update androidx (general) by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3056 * chore(deps): update androidx.hilt:hilt-navigation-compose to v1.3.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3068 * chore(deps): update com.google.devtools.ksp to v2.2.20-2.0.2 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3067 * chore(deps): update protobuf runtime to v4.32.1 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3078 * chore(deps): update com.google.protobuf:protoc to v4.32.1 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3102 * chore(deps): update androidx (general) by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3103 * chore(deps): update plugin datadog to v1.20.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3105 * chore(deps): update plugin dependency-analysis to v3.0.3 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3112 * chore(deps): update plugin com.gradle.common-custom-user-data-gradle-plugin to v2.4.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3113 * chore(deps): update markdown renderer (mike penz) to v0.37.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3087 * chore(deps): update meshtastic protobufs to 945b796 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3114 * chore(deps): update androidx.compose.runtime:runtime-tracing to v1.9.1 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3116 * chore(deps): update plugin dependency-analysis to v3.0.3 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3115 * chore(deps): update ruby to v3.4.6 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3120 * Use Ktor/Ktorfit for API calls by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3122 * chore(deps): update plugin com.gradle.develocity to v4.2 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3121 * chore(deps): update plugin kover to v0.9.2 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3123 * chore(deps): update androidx lifecycle to v2.9.4 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3130 * chore(deps): update plugin dependency-analysis to v3.0.4 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3131 * chore(deps): update gradle to v9.1.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3143 * chore(deps): update com.google.firebase:firebase-bom to v34.3.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3146 * chore(deps): update datadog to v3.1.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3150 * chore(deps): update meshtastic protobufs to 6a8b80a by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3149 * chore(deps): update actions/download-artifact action to v5 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3164 * chore(deps): update actions/github-script action to v8 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3165 * chore(deps): update google maps compose to v6.11.0 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3168 * chore(deps): update androidx (general) by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3186 * chore(deps): update com.diffplug.spotless:spotless-plugin-gradle to v8 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3190 * chore(deps): update plugin spotless to v8 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3191 * chore(deps): update androidx room to v2.8.1 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3189 * chore(deps): update androidx adaptive ui to v1.2.0-beta03 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3187 * chore(deps): update androidx navigation by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3188 * chore(deps): update dagger & hilt to v2.57.2 by @renovate[bot] in https://github.com/meshtastic/Meshtastic-Android/pull/3208 ### 🧱Repo * chore(issues): overhaul issue templates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3012 * feat(docs): migrate configs to dokka 2 by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3031 * feat(ci): add kover for test coverage reporting by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3041 * repo(release): merge changes from 2.7.0 to main by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3070 * add internal bug report with ch_testing tags by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/3099 * Remove `design/` git submodule by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3177 * Redundant methods in `RadioConfigRepository` by @poliver in https://github.com/meshtastic/Meshtastic-Android/pull/3198 ### 🤖Automated * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3013 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3022 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3026 * ci: add Dokka for kdoc documentation generation and deployment by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3024 * chore: Scheduled updates (Firmware, Hardware) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3030 * fix(release): Simplify Play Store deployment to upload-only by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3027 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3032 * fix(docs): dokka path by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3034 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3037 * chore: Scheduled updates (Firmware, Hardware) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3039 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3049 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3054 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3072 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3074 * chore: Scheduled updates (Firmware, Hardware) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3073 * chore: Scheduled updates (Firmware, Hardware) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3075 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3076 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3080 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3084 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3086 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3092 * ci(release): update artifact paths in release workflow by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3097 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3093 * chore: Scheduled updates (Firmware, Hardware) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3098 * chore: Scheduled updates (Firmware, Hardware) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3117 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3134 * chore: Scheduled updates (Firmware, Hardware) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3148 * 2.7.0 by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/2900 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3155 * chore: Scheduled updates (Firmware, Hardware) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3162 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3170 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3173 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3174 * chore: Scheduled updates (Firmware, Hardware) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3183 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3184 * chore: Scheduled updates (Firmware, Hardware) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3193 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3194 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3195 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3196 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3200 * New Crowdin updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/3202 ## New Contributors * @b8b8 made their first contribution in https://github.com/meshtastic/Meshtastic-Android/pull/3008 **Full Changelog**: https://github.com/meshtastic/Meshtastic-Android/compare/v2.7.0...v2.7.1
  • Jul 7, 2025 2.6.30 Release page →
    <!-- Release notes generated using configuration in .github/release.yml at 2.6.30 --> # Meshtastic: Smooth moves 🔗 Improved Connections: More reliable and refined. 💬 Smarter Messaging: Unread counts fixed, new scroll-to-bottom button. 🔍 Enhanced Search & Filters: Smarter search, new filter toggles. ✨ UI/UX Improvements: Smoother interface, better waypoint handling. 🐞 Bug Fixes: Crashes squashed, increased stability. ⚡ Performance Boost: Optimized scrolling and responsiveness. ## What's Changed
    More…
    ### 🛠️Fixes & Features * Refactor Connections screen and add new strings by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/2236 * chore(l10n): New Crowdin Translations by @github-actions in https://github.com/meshtastic/Meshtastic-Android/pull/2232 * fix: unread message count not updating when opening conversations by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/2239 * chore(l10n): New Crowdin Translations by @github-actions in https://github.com/meshtastic/Meshtastic-Android/pull/2238 * Fix waypoints by @RCGV1 in https://github.com/meshtastic/Meshtastic-Android/pull/2237 * Refactor: Improve network availability observation by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/2247 * 2.6.25 by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/2245 * Refactor: Improve GitHub release workflow and build configuration by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/2251 * Refactor: Use JVM toolchain and disable Crashlytics for F-Droid by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/2252 * Refactor: Improve network device selection UI and logic by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/2268 * Add warning dialog before clearing logs by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/2262 * fix add button being behind list by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/2267 * Make search escape regex, so '.' and similar behave properly. by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/2263 * add a toggle to AND/OR all filters. by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/2265 * chore(l10n): New Crowdin Translations by @github-actions in https://github.com/meshtastic/Meshtastic-Android/pull/2253 * 2.6.25 by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/2272 * chore(repo): Enable merge queue by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/2274 * chore(ci): android.yml updates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/2275 * chore(ci): Update dependency-submission.yml by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/2277 * chore: update firmware releases list from Meshtastic API by @github-actions in https://github.com/meshtastic/Meshtastic-Android/pull/2276 * chore(l10n): New Crowdin Translations by @github-actions in https://github.com/meshtastic/Meshtastic-Android/pull/2273 * 2269 - CI testing not failing correctly by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/2279 * chore(l10n): New Crowdin Translations by @github-actions in https://github.com/meshtastic/Meshtastic-Android/pull/2280 * fix: Clear notifications on device switch by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/2281 * Fix unmessageable toggle by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/2282 * feat(#2080): Add scroll to bottom button in message list by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/2283 * chore(l10n): New Crowdin Translations by @github-actions in https://github.com/meshtastic/Meshtastic-Android/pull/2285 * Reduces available filter list to only those that will do something. by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/2278 * chore(l10n): New Crowdin Translations by @github-actions in https://github.com/meshtastic/Meshtastic-Android/pull/2287 * ui update/cleanup: Message padding updates by @jsoberg in https://github.com/meshtastic/Meshtastic-Android/pull/2289 * fix: crash in charts, nav by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/2290 * chore(l10n): New Crowdin Translations by @github-actions in https://github.com/meshtastic/Meshtastic-Android/pull/2291 * Feat/2061 public ind by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/2284 * 2.6.27 by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/2293 * Refactor BLE exceptions and handle ServiceAction exceptions by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/2294 * Refactor NsdManager and improve service display by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/2292 * Refactor: Remove dispatcher and use conditional start destination by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/2309 * chore(l10n): New Crowdin Translations by @github-actions in https://github.com/meshtastic/Meshtastic-Android/pull/2295 * Feat/2303 contributor docs by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/2304 * chore(l10n): New Crowdin Translations by @github-actions in https://github.com/meshtastic/Meshtastic-Android/pull/2315 * fix/2305 don't use filtered logs for availiable presets by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/2317 * Refactor: Display scanning indicator during Bluetooth scan by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/2321 * chore(l10n): New Crowdin Translations by @github-actions in https://github.com/meshtastic/Meshtastic-Android/pull/2320 * chore (repo): Add README.md for mesh_service_example by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/2324 * Improved detection of emulator environments by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/2323 * ci: split workflows for PR and merge queue by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/2322 * chore(l10n): New Crowdin Translations by @github-actions in https://github.com/meshtastic/Meshtastic-Android/pull/2327 * 2.6.29 by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/2331 * feat: remember recently entered IPs (#2242) by @lkosson in https://github.com/meshtastic/Meshtastic-Android/pull/2319 * Refactor: Replace AppIntro library with Compose implementation by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/2332 * feat: Add support for sharing contacts via deeplink by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/2336 * chore(l10n): New Crowdin Translations by @github-actions in https://github.com/meshtastic/Meshtastic-Android/pull/2337 * chore: update firmware releases list from Meshtastic API by @github-actions in https://github.com/meshtastic/Meshtastic-Android/pull/2342 * chore(l10n): New Crowdin Translations by @github-actions in https://github.com/meshtastic/Meshtastic-Android/pull/2340 * Update Crowdin config by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/2346 * add some extra sim packets by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/2306 * redo the beta program links. by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/2350 * Refactor: Improve connection state display in UI by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/2353 * chore(l10n): New Crowdin Translations by @github-actions in https://github.com/meshtastic/Meshtastic-Android/pull/2345 * chore: Optimize node screen while scrolling by @jsoberg in https://github.com/meshtastic/Meshtastic-Android/pull/2355 * Feat/2334 channel indicators by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/2356 * refactor(ci): Consolidate GitHub Actions workflows by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/2361 * Ci fixes by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/2364 * chore(l10n): New Crowdin Translations by @github-actions in https://github.com/meshtastic/Meshtastic-Android/pull/2357 * chore: update device hardware list from Meshtastic API by @github-actions in https://github.com/meshtastic/Meshtastic-Android/pull/2362 * skip test and lint on scheduled-updates by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/2367 * add missing region info (433 ANZ, both KZ) by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/2369 * Revert "skip test and lint on scheduled-updates" by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/2371 * chore: Scheduled updates (Firmware, Hardware, Translations) by @github-actions in https://github.com/meshtastic/Meshtastic-Android/pull/2370 * Fix/2207 node details respects units by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/2374 * chore: Scheduled updates (Firmware, Hardware, Translations) by @github-actions in https://github.com/meshtastic/Meshtastic-Android/pull/2376 * 2.6.30 by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/2372 ### 👷Dependencies * chore(deps): update kotlin to v2.2.0 by @renovate in https://github.com/meshtastic/Meshtastic-Android/pull/2234 * chore(deps): update com.android.tools.build:gradle to v8.11.0 by @renovate in https://github.com/meshtastic/Meshtastic-Android/pull/2243 * chore(deps): ksp 2.2.0-2.0.2 by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/2246 * chore(deps): update app/src/main/proto digest to 386fa53 by @renovate in https://github.com/meshtastic/Meshtastic-Android/pull/2248 * chore(deps): update mesh_service_example/src/main/proto digest to 386fa53 by @renovate in https://github.com/meshtastic/Meshtastic-Android/pull/2249 * chore(deps): update com.google.gms:google-services to v4.4.3 by @renovate in https://github.com/meshtastic/Meshtastic-Android/pull/2260 * chore(deps): update com.google.firebase:firebase-bom to v33.16.0 by @renovate in https://github.com/meshtastic/Meshtastic-Android/pull/2261 * chore(deps): update app/src/main/proto digest to 2097da9 by @renovate in https://github.com/meshtastic/Meshtastic-Android/pull/2255 * chore(deps): update mesh_service_example/src/main/proto digest to 2097da9 by @renovate in https://github.com/meshtastic/Meshtastic-Android/pull/2256 * chore(deps): update org.jetbrains.kotlinx:kotlinx-serialization-json to v1.9.0 by @renovate in https://github.com/meshtastic/Meshtastic-Android/pull/2271 * chore(deps): update mesh_service_example/src/main/proto digest to 86c738e by @renovate in https://github.com/meshtastic/Meshtastic-Android/pull/2314 * chore(deps): update app/src/main/proto digest to 5ef7aec by @renovate in https://github.com/meshtastic/Meshtastic-Android/pull/2313 * chore(deps): update mesh_service_example/src/main/proto digest to 5ef7aec by @renovate in https://github.com/meshtastic/Meshtastic-Android/pull/2318 * chore(deps): update adaptive to v1.2.0-alpha08 by @renovate in https://github.com/meshtastic/Meshtastic-Android/pull/2325 * chore(deps): update androidx.compose.material3:material3 to v1.4.0-alpha17 by @renovate in https://github.com/meshtastic/Meshtastic-Android/pull/2326 * chore(deps): update app/src/main/proto digest to 854bb24 by @renovate in https://github.com/meshtastic/Meshtastic-Android/pull/2328 * chore(deps): update mesh_service_example/src/main/proto digest to 854bb24 by @renovate in https://github.com/meshtastic/Meshtastic-Android/pull/2329 * chore(deps): update navigation to v2.9.1 by @renovate in https://github.com/meshtastic/Meshtastic-Android/pull/2330 * chore(deps): update mesh_service_example/src/main/proto digest to 584f0a3 by @renovate in https://github.com/meshtastic/Meshtastic-Android/pull/2339 * chore(deps): update app/src/main/proto digest to 584f0a3 by @renovate in https://github.com/meshtastic/Meshtastic-Android/pull/2338 * chore(deps): update okhttp to v5 (major) by @renovate in https://github.com/meshtastic/Meshtastic-Android/pull/2341 * chore (deps): Update Gradle wrapper to 8.14.3 by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/2354 **Full Changelog**: https://github.com/meshtastic/Meshtastic-Android/compare/2.6.24...2.6.30