MeshCore Ninja
← FieldMesh

FieldMesh · Releases

from GitHub · updated 2026-06-21

6 releases

  1. v5.3 # 2 months ago · 2026-04-28 07:00 UTC

    [5.3] — MeshCore Upstream Sync

    Changes

    • MeshCore upstream alignment — codebase updated to track MeshCore v1.15.0; no FieldMesh-specific feature changes in this release

    Download latest build

    EU Offgrid frequency

    ThinkNode_M1_companion_radio_ble_FieldMeshv5.3.zip WioTrackerL1_companion_radio_ble_FieldMeshv5.3.zip t1000e_companion_radio_ble_FieldMeshv5.3.zip

    US Offgrid frequency

    ThinkNode_M1_companion_radio_ble_USFieldMeshv5.3.zip WioTrackerL1_companion_radio_ble_USFieldMeshv5.3.zip t1000e_companion_radio_ble_USFieldMeshv5.3.zip

  2. v5.2 # 2 months ago · 2026-04-09 14:29 UTC

    [5.2] — HomeScreen Redesign & Online Node Counter

    New features

    • Online node counter — HomeScreen now shows how many nodes have been heard in the last 30 minutes, combining advert senders and message senders in a single deduplicated count (16-entry LRU cache)
    • Node counter icon — the online count is displayed with a filled circle icon (●) instead of plain [X] text
    • Real channel name in title bar — message history and favorite preview now show the actual channel name (e.g. "Public") instead of the hardcoded "[CH]" tag
    • Mode indicator — GPS-SHARE and OFF-GRID modes are now shown on the HomeScreen FIRST page

    Changes

    • M1 HomeScreen layout — node counter fixed at y=22 regardless of connection state; MSG:X replaces < Connected > when disconnected; nodes_icon y-offset corrected (+3px) to align with text baseline
    • Channel message title bar — sender name omitted from title bar for channel messages (already visible inside the message text)
    • Favorite indicator — clears correctly after all messages are deleted (deleteEntry / clearAll); no longer persists stale data after app sync
    • MSG:X counter — hidden on HomeScreen while phone app is connected
    • RECENT/TRACKING pages — row limits now display-height-adaptive via max_y variable instead of hardcoded values

    Bug fixes

    • BLE init: send_queue flood — between onSecured() and CMD_APP_START async pushes could fill all 12 send_queue slots, causing the app to time out. Fixed via _app_initialized flag and isWriteBusy() guard
    • Double-counting in node counter — nodes heard via both advert and message were counted twice. Fixed via countOnlineNodesExcluding()
    • adv_fresh buffer — was reusing the 4-entry RECENT display array, capping the advert-based node count at 4. Now uses a dedicated ADVERT_PATH_TABLE_SIZE (16) buffer
    • formatRelTime undefined behavior — replaced signed int cast with safe uint32_t arithmetic

    Technical notes

    • Changes confined to UITask.cpp, UITask.h, MyMesh.cpp, MyMesh.h, icons.h
    • DataStore, AbstractUITask, platformio.ini unaffected

    Download latest build

    EU Offgrid frequency

    ThinkNode_M1_companion_radio_ble_FieldMeshv5.2.zip WioTrackerL1_companion_radio_ble_FieldMeshv5.2.zip t1000e_companion_radio_ble_FieldMeshv5.2.zip

    US Offgrid frequency

    ThinkNode_M1_companion_radio_ble_USFieldMeshv5.2.zip WioTrackerL1_companion_radio_ble_USFieldMeshv5.2.zip t1000e_companion_radio_ble_USFieldMeshv5.2.zip

  3. v5.1 # 3 months ago · 2026-04-04 08:18 UTC

    [5.1] — Headless Device Support (T1000-E, RAK WiseMesh TAG)

    New features

    • Headless device supportui-orig now fully integrated into FieldMesh; devices with no display and a single button (Seeed T1000-E, RAK WiseMesh TAG) are supported as first-class citizens
    • Off-Grid toggle via 5× click — 5 presses on the single button toggles Off-Grid mode on/off; buzzer feedback is forced regardless of mute state (ascending tone = on, descending = off)
    • SOS alarm via buzzer — incoming !SOS messages trigger a continuous buzzer siren that overrides quiet mode and loops until acknowledged with a short press

    Changes

    • All button actions (advert, GPS toggle, buzzer toggle, Off-Grid toggle) now produce forced buzzer feedback regardless of quiet mode — essential for display-less operation
    • Ascending tone (c,e) = feature enabled; descending tone (e,c) = feature disabled — consistent across all actions
    • newMsg() signature updated to include is_favorite parameter — compatible with V5 AbstractUITask interface
    • refreshDisplay() and isOnRecentOrTrackingPage() added as explicit no-op overrides — required for MyMesh compatibility

    Button mapping (headless devices — single button)

    Press Action
    Wake display / acknowledge SOS alarm
    Send advert
    Buzzer mute on/off
    GPS on/off
    Off-Grid mode on/off
    Long press (first 8 s) CLI Rescue Mode
    Long press Shutdown

    Technical notes

    • Changes confined to ui-orig/Button.h, ui-orig/Button.cpp, ui-orig/UITask.h, ui-orig/UITask.cpp
    • ui-new (ThinkNode M1, Wio Tracker L1) is completely unaffected
    • _buzzer_restore_quiet flag ensures non-blocking buzzer playback before quiet state is restored

    Download latest build

    EU Offgrid frequency

    ThinkNode_M1_companion_radio_ble_FieldMeshv5.1.zip WioTrackerL1_companion_radio_ble_FieldMeshv5.1.zip t1000e_companion_radio_ble_FieldMeshv5.1.zip

    US Offgrid frequency

    ThinkNode_M1_companion_radio_ble_USFieldMeshv5.1.zip WioTrackerL1_companion_radio_ble_USFieldMeshv5.1.zip t1000e_companion_radio_ble_USFieldMeshv5.1.zip

  4. v5.09 # 3 months ago · 2026-04-03 12:35 UTC

    FieldMesh V5 — the first release that makes the node fully standalone for messaging. No phone required.

    What's new

    Message History (ThinkNode M1 + Wio Tracker L1)

    • Received messages are stored on the device and browsable without the companion app
    • Home screen redesigned: shows unread counter and the name + timestamp of the most recent message from a favourite contact
    • Long press on home screen opens the message menu (filter: All / Favourites)
    • One message per view, newest first — short press = next, long press = clear all
    • Channel tag ([CH1], [DM]) and timestamp shown per message
    • New message while history is open: +1 new alert, no automatic screen switch

    Text Input & Send (Wio Tracker L1 only)

    • Compose and send channel messages directly from the device via joystick
    • Channel select → character compose → "Sent!" confirmation
    • Character selection via joystick left/right, confirm with short press, send with long press
    • 80 character limit

    Important notes

    • Message history is RAM-only — messages are lost on reboot. This is intentional: smartphone sync via the companion app is never affected by what the device shows or clears.
    • Text send is available on Wio Tracker L1 only. Single-button input on ThinkNode M1 does not support text composition.
    • No DM sending — channel messages only.

    Files changed

    UITask.h, UITask.cpp, MyMesh.h, MyMesh.cpp, AbstractUITask.h

    Full changelog

    See RELEASE.md for the complete version history.

    ThinkNode_M1_companion_radio_ble_FieldMeshv5.09.zip

    WioTrackerL1_companion_radio_ble_FieldMeshv5.09.zip

  5. v4.04 # 3 months ago · 2026-03-30 20:55 UTC

    V4.04 — Wio Tracker L1 Joystick UI Fixes

    target.cpp / target.h

    • Added joystick_up (JOYSTICK_UP) and joystick_down (JOYSTICK_DOWN) as MomentaryButton

    UITask.cpp — loop()

    • Joystick Up → KEY_PREV, Joystick Down → KEY_NEXT
    • Joystick press short → KEY_ENTER (confirm in menus)
    • Joystick press long → handleLongPress() (context action)

    UITask.cpp — HomeScreen

    • Removed dead code: KEY_ENTER on Tracking page directly toggled GPS-Share — unused since V2.02 (Outdoor Menu), but accidentally active on Wio Tracker
    • Tracking hint text: "Settings: press Enter" (joystick) instead of "Settings: long press"

    UITask.cpp — OutdoorMenuScreen

    • Removed footer "short=next long=select" on joystick devices (self-explanatory)
    • Menu navigation: Up/Down instead of Left/Right

    UITask.cpp — SOSSendScreen

    • handleLongPress() now sends KEY_SELECT instead of KEY_ENTER to SOSSendScreen to distinguish short and long press
    • Short press = always go back (both states)
    • Long press = confirm / send (both states)
    • Hint text both states: "long press: SEND

    ThinkNode_M1_companion_radio_ble_FieldMeshv4.04.zip

    WioTrackerL1_companion_radio_ble_FieldMeshv4.04.zip

  6. v4.03 # 3 months ago · 2026-03-30 14:46 UTC

    V4.03 – Backlight & Display Logic Overhaul

    Fixed

    • AUTO_OFF_MILLIS=0 removed from platformio.ini – display now correctly sleeps after 15 seconds of inactivity
    • 5-minute backlight auto-off timer removed – no longer needed with display sleep active
    • Backlight now correctly follows _backlight_on state on every turnOn() call, overriding GxEPD driver behavior

    Improved

    • Backlight state is fully decoupled from display wake events – incoming messages and adverts wake the display without changing the backlight state
    • Added refreshDisplay() – wakes display briefly on incoming adverts when on Recent or Tracking page, without affecting backlight
    • Advert-triggered display refresh works even when a phone is connected via BLE

    Technical

    • Added refreshDisplay() and isOnRecentOrTrackingPage() to AbstractUITask as virtual methods
    • _backlight_off_at member removed from UITask