MeshCore Ninja
← MCLite

MCLite · Releases

from GitHub · updated 2026-06-21

20 releases

  1. v0.3.9 # 2 hours ago · 2026-06-21 08:09 UTC

    Added

    • Step-wise admin permissions. Beyond the existing security.admin_enabled (global on/off for the Admin screen), a new permissions config block scopes what's reachable inside Admin: permissions.settings (full / restricted / none) — restricted keeps only the basics editable (brightness, auto-dim, dim brightness, keyboard brightness, theme) and shows everything else read-only (no chevron); none makes all settings read-only. permissions.companion (default on) hides the Companion group (WiFi/USB/Bluetooth) when off — configured services still run. permissions.conversation_management (default off) is reserved for a future release (on-device add/edit/remove of contacts/channels/rooms; they stay read-only views for now). All three are provisionable from the config tool. Defaults are fully permissive, so existing configs are unchanged.
    • Settings reorganised into per-section screens + Admin is now a pure hub. The on-device Admin screen no longer mixes settings, diagnostics and shortcuts — it's three labelled groups of links: Companion (WiFi / USB / Bluetooth), Conversations (Contacts / Channels / Rooms, read-only views), and Settings (Device, Radio, Display, Messaging, Sound, GPS, Battery, Security). Each section is its own screen mirroring the config tool, with all of its editable settings and its read-only diagnostics in one place (no more duplicated rows across Admin and Device Settings). Newly editable on-device: Radio (region preset picker — EU/UK/CH vs US/Canada — plus a TX-power slider and an advert-interval picker; frequency/SF/BW/CR/scope/path-hash stay read-only), Messaging (history, max-per-chat, location format, retries, telemetry request/badges/auto-refresh, canned messages, allow-mute), and GPS (enable, location-advert precision, timezone, clock offset, last-known max age). Offgrid mode and the live Heard-Adverts count now live at the top of the Radio screen. Each hub link carries an icon (gear for settings; @/#/R for contacts/channels/rooms; Wi-Fi/USB/Bluetooth for companion), and the 3rd-party licenses moved to an About block at the bottom of the hub. Radio/GPS changes reboot once on exit (same batched-save model as theme/language). The old single "Device Settings" screen is superseded by this layout.
    • Selectable UI themes. Choose a color palette — Dark (default), Light, Amber (a "military" night mode that preserves night vision), or High contrast — on-device (Admin → Theme, reboots to apply) or via display.theme in config. Custom palettes can be defined under display.themes (start from a built-in base, override any color with #RRGGBB). Default appearance is unchanged. On/off switches now use the theme accent colour too. Thanks @jason-s13r (#24).
    • Per-row Info + Map buttons on the Heard Adverts screen. Each heard node now has an explicit info (eye) button that opens its detail dialog, and — when the advert carries a location — a map button that opens the map centered on that node. Back now returns to the Admin screen. Thanks @jason-s13r (#15).
    • Map screen pan buttons + windowed chrome. The map gains an on-screen D-pad (up/left/centre/right/down) alongside the existing drag-to-pan. On the T-Deck the map now keeps the status bar visible and uses the standard lv_win header with a back button (the T-Watch stays full-screen). Thanks @jason-s13r (#22, supersedes #20/#21).
    • Uptime + last-charged in the Admin Battery section. Shows when the device booted (wall-clock + relative) and when charging last stopped (with the level at the time). Thanks @jason-s13r (#23).
    • On-device Device Settings. A new editable settings screen (Admin → Device Settings, behind the existing admin.enabled gate) for changing device n …
  2. v0.3.8 # 5 days ago · 2026-06-16 09:19 UTC

    Highlights

    Less advert spam, more location privacy.

    Added

    • Location-advert privacy precision. The location-advert setting (now gps.location_precision) can coarsen the position you broadcast: Off · Exact · ~100 m · ~750 m · ~3 km · ~12 km · ~50 km (Meshtastic-style grid snapping, centred in the cell). Only the broadcast advert is coarsened — telemetry replies to authorized contacts and the in-chat GPS insert always use your exact position. Default off; old location_advert: true/false configs are read automatically. Scheme adopted from @jason-s13r.
    • Zero-hop "Local" advert button on the Heard Adverts screen — announce yourself to immediate neighbours without flooding the whole mesh.

    Changed

    • No more periodic flood adverts by default (#13). MCLite previously flooded a mesh-wide advert every ~9 min; on a 110-repeater mesh one device generated ~half of all adverts. Now it sends a single flood advert on boot and otherwise advertises on demand — matching stock MeshCore clients. Thanks @stucamp and @jason-s13r.
    • Opt-in periodic advert — new radio.advert_interval_min field (config tool → Radio) re-enables periodic adverts for ad-hoc / SAR / private meshes. Default 0 = off; if set, enforced to ≥60 min (720 / 12 h recommended).
    • GPS button inserts your location into the message instead of a "Send Location?" confirm — append @ <coords> to the input, add context, send normally (byte-guarded against the 160-byte limit).

    Flash from the web flasher or grab the merged .bin below. T-Deck Plus: mclite-v0.3.8.bin · T-Watch Ultra: mclite-watch-v0.3.8.bin.

  3. v0.3.7 # 6 days ago · 2026-06-15 09:34 UTC

    MCLite 0.3.7 — tappable map coordinates, lv_win screen chrome, and on-device screenshots.

    Added

    • Tap a shared location to open it on the map. A received/sent message containing a GPS position — decimal lat, lon or MGRS/UTMREF — shows an underlined "Open in map" link under the bubble; tapping it opens the map centered there. Touch-only, shown only when map tiles are present on SD. Adds a reverse MGRS→lat/lon parser, unit-tested.
    • Screenshot to SD (debug aid, off by default). Enable debug.screenshots (config tool → Display) and capture the current screen to /screenshots/*.bmp (24-bit BMP, opens on any PC) — T-Deck: Shift+$; T-Watch: double-press the side (PEK) button. (Top-layer overlays like toasts/PIN/SOS aren't captured.)

    Changed

    • Heard Adverts screen now uses the standard lv_win chrome (back arrow + title + action buttons) — the first step of rolling consistent screen headers across the app (community PR #8, @jason-s13r).

    Removed

    • The non-functional Alt+L "insert location" keyboard shortcut (the chat GPS button already does this).

    Notes

    • Config tool: "Save screenshots" toggle (Display); Security section relayout (Lock + Auto Lock on one line, Admin Screen separate).
    • Both boards (T-Deck Plus, T-Watch Ultra) build; 246 native tests pass.
  4. v0.3.6 # 9 days ago · 2026-06-12 09:45 UTC

    MCLite 0.3.6 — emoji, three-step volume, and reliability polish.

    Added

    • Emoji in chat — received emoji render inline (monochrome OpenMoji font with a Montserrat fallback, so plain text is unchanged and unknown glyphs degrade gracefully). An on-device emoji picker (display.emoji, default on, can be disabled) adds a smiley button to compose from a curated set, capped to the 160-byte message budget. Incoming/outgoing text is sanitized (strips emoji variation selectors, normalizes smart quotes to ASCII). Adopted from the @jason-s13r fork; OpenMoji is CC-BY-SA 4.0.
    • Three-step volume — the status-bar bell now cycles max → mute → mid → max; the built-in chime and custom WAV notifications scale to the level. Default is max (loudness unchanged); SOS stays fixed and loud (@jason-s13r, #11).

    Changed

    • sound.enabled is now a true master switch. false means fully silent — no notifications, no chime, and no SOS sound — and the status-bar bell is hidden. Set true (the default) for the 3-step volume bell.

    Fixed

    • A last-known position restored after reboot no longer reports "~0s ago" before the clock has synced — it shows "Last known position" until GPS/NTP re-locks, then the real age.
    • A failed send now shows a "Send failed - try again" toast instead of a silently FAILED bubble (still tap-to-retry).
    • Map tile loader hardening: oversized/corrupt PNGs and out-of-range tile coordinates are rejected and grey-filled cleanly.

    Both boards (T-Deck Plus, T-Watch Ultra) build; 219 native tests pass.

  5. v0.3.5 # 10 days ago · 2026-06-11 10:32 UTC

    Fixed

    • Translations past ~128 keys reverted to English. The i18n loader capped SD-loaded strings at 128, but the language files now hold ~197 keys — so on German/French/Italian every key past the cap silently fell back to English (e.g. canned_58, plus the offgrid / firmware-update / WiFi / USB / BLE / map / heard-adverts / toast screens). Raised the cap to 256 and added a boot-time warning if a language file ever exceeds it.
    • Config tool wiped stored WiFi on edit. The tool's file-import never loaded the wifi section, so importing a device's config.json, editing it, and re-exporting produced an empty wifi block — clearing the device's stored SSID/password on the next copy to SD. WiFi (and the persisted BLE pairing PIN) now round-trip correctly, including through the share-link and start-fresh paths.
  6. v0.3.4 # 10 days ago · 2026-06-11 10:03 UTC

    Added

    • Auto-refresh contact GPS — keeps the map markers / convo-list badges of contacts who don't broadcast their own location fresh, by quietly re-requesting telemetry GPS before the cached fix goes stale. Throttled (one request per scan, respects the EU duty cycle, yields to manual requests) and self-limiting (stops asking a contact that doesn't answer). New setting messaging.auto_telemetry, default on, can be disabled.
    • Per-conversation quick replies — any contact, channel, or room can carry its own canned list (max 8) that overrides the global quick-reply list for that chat only; leave it empty to fall back to the global list. Editable per card in the config tool. Turns a conversation into a command menu — e.g. a Home Assistant / automation bridge ("Open gate", "Lights on", "Status?").
    • Last-known location persists across reboots — the most recent GPS fix is saved to SD (/mclite/last_location.json, throttled) and restored on boot, so the map opens to your last position without waiting for a fresh fix (@jason-s13r, #10).
    • Advertise from the companion app — the MeshCore phone/desktop app's Advertise button now works while connected (BLE/WiFi/USB); previously it was rejected as an unsupported command. Honours the app's flood vs local (zero-hop) option. The on-device advert button and the automatic periodic advert are unchanged.

    Changed

    • The device-info / admin screen is now fully localized — every row label routes through the translation table (de/fr/it) (@jason-s13r, #9).
    • Conversation history now loads only the most recent max_history_per_chat messages per chat at boot (previously the whole file was loaded into RAM). Bounds memory if a history file is larger than the cap — e.g. after lowering the setting. No visible change; the runtime cap was already in place.

    Fixed

    • Telemetry retry is no longer cancelled by the contact-info pop-up's own timeout when the mesh's outbound queue is busy (the two timers now stay in lockstep) — the retry fires under congestion as intended.
    • Closing the contact-info pop-up now cancels its in-flight telemetry retry, so no stray flood request goes out for a pop-up you already closed.
    • Muting a chat is now absolute: it silences notifications even for a contact flagged always_sound (always_sound still overrides global mute, unchanged).
    • Messages that exceed the 160-byte limit (e.g. emoji or accented/non-Latin text — which can be ≤160 characters but more bytes) are now refused with a "Message too long" toast that keeps your text, instead of silently failing to send while still drawing a (failed) bubble.
    • A timed-out telemetry request now releases the radio's single telemetry slot when the exchange ends (previously the slot stayed held after a no-response request). Without this, auto-refresh contact GPS would stall for the rest of the session after the first contact that didn't answer, and slow/multi-hop contacts could be backed off too eagerly; both are resolved.
    • Auto-refresh no longer lets a single un-sendable contact block the rest of the round-robin, and max_history_per_chat: 0 now consistently means "unlimited" on both load and prune (previously prune at 0 would wipe the conversation).
  7. v0.3.3 # 11 days ago · 2026-06-10 16:51 UTC

    Contact-location and delivery-reliability improvements, plus a batch of community contributions from @jason-s13r.

    Added

    • Unified contact location — one source of truth for where a contact is: fresh telemetry (accurate) → their advert GPS → a heard advert. The conversation-list GPS badge now shows for any known position (not just telemetry); the contact info pop-up shows that position even without a telemetry reply (advert-sourced coordinates are marked approximate with ~), offers the Map button whenever any position is known, and on a request timeout shows the known position instead of a bare "No response". Telemetry stays primary; the 30-minute freshness window is unchanged.
    • Flood-routing retries for better delivery when a direct path degrades — on DM retries and on telemetry-request retries (with a "Retrying…" state).
    • Per-chat mute — opt-in (messaging.allow_mute, default off). Long-press a conversation to mute; muted chats don't beep or wake the screen (SOS always does), with an indicator in the list and chat header.
    • Vendor row on the device-info screen showing the firmware's source repo (owner/repo) — handy with fork flashing.

    Fixed

    • Chat scroll-to-bottom is more robust on an empty chat area / on open.

    Thanks

    • @jason-s13r for PRs #3–#7.

    Install/update via the web flasher, or on-device (SD card / WiFi). Binaries: mclite-v0.3.3.bin (T-Deck Plus), mclite-watch-v0.3.3.bin (T-Watch Ultra).

    Full Changelog: https://github.com/laserir/MCLite/compare/v0.3.2...v0.3.3

  8. v0.3.2 # 12 days ago · 2026-06-09 11:03 UTC

    Map unification plus fixes from a careful review of 0.3.0/0.3.1.

    Changed

    • The contact Map button and the status-bar GPS icon now open the same map (one screen, one set of controls). Opening from a contact just centers on that contact and pre-selects it — drawn slightly larger with a highlight ring and its name in the bottom bar — while still showing every other contact / telemetry / heard-node location and your own position (a distinct green/amber dot).
    • Reload rebuilds all markers and re-checks your own position; Center always jumps to your own location once a fix is available (even when opened from a contact), falling back to the location the map opened on when there's no fix.

    Fixed

    • Center now uses your own location on a contact-opened map (previously it only ever recentered on the contact).
    • The status-bar GPS icon stays visible (dimmed) and tappable when GPS is disabled, so the map remains reachable.
    • @mention no longer truncates a near-full message draft.
    • Companion: the contacts since field is read safely (removed an unaligned read).

    Install/update via the web flasher, or on-device (SD card / WiFi). Binaries: mclite-v0.3.2.bin (T-Deck Plus), mclite-watch-v0.3.2.bin (T-Watch Ultra).

    Full Changelog: https://github.com/laserir/MCLite/compare/v0.3.1...v0.3.2

  9. v0.3.1 # 12 days ago · 2026-06-09 09:01 UTC

    Fork-adoption batch (features adopted from the jason-s13r/MCLite fork) plus map polish.

    Added

    • GPS location in adverts (opt-in, gps.location_advert, default off) — broadcast your position so contacts see you on their map. Uses MeshCore's native advert location; sends a live fix or a still-valid last-known one. Unencrypted broadcast — hence opt-in. Read-only status on the admin GPS screen; toggled via the config tool / SD.
    • General map — tap the status-bar GPS icon for a map of your own location plus every heard node / contact that carries GPS (same chat / repeater / room / sensor symbols as the heard-adverts list). Tap a marker for its name; Reload button re-scans heard nodes.
    • NTP time sync — set the clock from an NTP server over WiFi when GPS hasn't locked (GPS still overrides once it does).
    • @mention — tap a sender's name in a channel/room to insert @name .
    • Fork-aware OTA — build-time overridable update repo so forks can self-update.
    • Web flasher repo/fork picker — choose which repo's published releases to flash.

    Changed

    • Map markers render as filled colored dots (type color + contrasting symbol) so they read against any tile; selection ring sits just outside the dot.

    Fixed

    • Map markers are reliably tappable (tap-slop dead-zone; wider hit tolerance).
    • Map markers no longer blink out near the viewport edge across zoom levels.

    Install/update via the web flasher, or on-device (SD card / WiFi). Binaries: mclite-v0.3.1.bin (T-Deck Plus), mclite-watch-v0.3.1.bin (T-Watch Ultra).

    Full Changelog: https://github.com/laserir/MCLite/compare/v0.3.0...v0.3.1

  10. v0.3.0 # 13 days ago · 2026-06-08 12:18 UTC

    Highlights

    Companion mode — bridge the radio to a phone, desktop, or CLI using the standard MeshCore companion protocol, in parallel with normal on-device use (messages appear in both):

    • Bluetooth — pairs with the official MeshCore iOS/Android apps (6-digit passkey + bonding).
    • WiFi — reach it from meshcore-cli/meshcore.js/meshcore_py on your LAN.
    • USB — wired serial companion.

    One transport at a time; messaging is read-only for config. WiFi and Bluetooth can't run together (shared radio/RAM) — the device handles the switch and offers a reboot when needed.

    Also includes the on-device firmware-update fixes and a refreshed README (Quick Start + balanced companion docs).

    Install/update via the web flasher, or on-device (SD card / WiFi). Binaries: mclite-v0.3.0.bin (T-Deck Plus), mclite-watch-v0.3.0.bin (T-Watch Ultra).

    Full Changelog: https://github.com/laserir/MCLite/compare/v0.2.2...v0.3.0

  11. v0.2.2 # 14 days ago · 2026-06-07 15:20 UTC

    Fixes a stack overflow that crashed the device when installing a firmware update over WiFi (the TLS handshake + on-stack buffer exceeded the loop-task stack). WiFi over-the-air updates now work end-to-end. SD-card install and USB flashing were unaffected.

    Note: devices on 0.2.1 should update via SD card or USB (the 0.2.1 WiFi installer has the crash); 0.2.2 onward updates over WiFi cleanly.

  12. v0.2.0 # 20 days ago · 2026-06-01 14:43 UTC
  13. v0.1.8 # 2 months ago · 2026-05-05 12:01 UTC

    Highlights

    Heard Adverts — every advert MeshCore decodes goes into a 64-entry LRU buffer (RAM, evaporates on reboot). New screen reachable from the admin menu lists them with type icons, last-heard age, alias-when-known, and a queued badge for entries you've saved this session. Detail modal shows fingerprint-style pubkey + per-hop path direction.

    • Live updates while the screen is visible: 1 Hz rate-limited rebuild, focus preserved by pubkey, skipped while a modal is open.
    • Save discovered chat contacts — Save button on the detail modal appends a from_discovery: true entry to config.json with conservative defaults (all permissions off, no SOS in/out). Activates on next boot via the existing ContactStore + MCLiteMesh registration path. CHAT-only — repeaters/rooms/sensors stay infrastructure. After save: [Reboot now, OK] confirmation.
    • Manual advert button in the header — sends a local advert immediately and re-anchors the periodic 9-min schedule. Toast confirms.
    • Clear button wipes the in-memory buffer.

    Config persistence hardening

    • ConfigManager::save() now uses atomic writes: stage to .tmp, retain previous file as .bak during the rename, drop .bak on successful completion. Steady state is just config.json.
    • Boot fallback to config.json.bak if the live file is missing or corrupt (mid-save power loss). Successful recovery promotes the loaded content back to main and removes .bak.
    • Required because config.json holds the device identity keys — a torn truncate-write would brick the unit.

    Other changes

    • Boot screen — MCLite mark glyph above the title, drawn programmatically (no raster asset).
    • Default dim_brightness 20 → 0 — auto-dim now goes fully dark, prevents long-term burn-in on the always-on status bar.
    • Long-standing log fix: [MCLiteMesh] Discovered contact was printing the raw packed path_len byte (low 6 bits = hops, upper 2 = hash size). Values like 70 actually meant 6 hops with 2-byte hashes. Now masked correctly.
    • Config tool: amber 'Added via device — review me' badge on from_discovery contacts, with an inline ✕ to mark reviewed. Round-trip preserves the flag on both load paths and the export builder.
    • i18n: 19 new keys covering type names, field labels, hops format, save/reboot/queue/error states, advert-sent toast — across en/de/fr/it and the embedded LANG_FILES.

    Tests

    • 185 native test cases (was 172). New coverage in test_heard_advert_cache (14) and test_config (atomic writes, .bak fallback, recovery cleanup, from_discovery round-trip, append-discovered-contact success/duplicate/cap).

    Compatibility

    • Backward-compatible config: missing from_discovery parses as false. Old firmware ignores the field.
    • ConfigManager now writes through the atomic path even for the existing offgrid-toggle save — no caller change needed.
    • To force first-boot regen, delete both config.json and config.json.bak.

    Install

    🤖 Generated with Claude Code

  14. v0.1.7 # 2 months ago · 2026-04-29 10:39 UTC

    Highlights

    Room server client — join community message boards run by MeshCore room servers. Posts appear in the conversation list with an R icon (purple), ordered alongside DMs and channels by last activity. Up to 8 rooms.

    • Auto-login on boot with exponential backoff (1 → 2 → 4 → cap 30 min).
    • Disconnect recovery — re-login on chat-open (rate-limited 30s) and after 10 minutes of silence while a room chat is foreground. Both wake the server's 3-strike push-freeze that trips after ~36s of radio dropout, so passive readers don't miss posts after brief out-of-range moments.
    • Per-room flags mirroring channels: read_only, allow_sos (default true), send_sos (default false), scope override.
    • Sender resolution — 4-byte sender_prefix looked up against ContactStore: alias if known, else 8-hex-char fallback.
    • sync_since persisted per-room across reboots; only newer posts replay on next login.
    • AdminScreen Rooms section under Channels: name, online/offline indicator, last-sync timestamp.
    • Config tool Rooms card with all four toggles and the new info-icon collapsible-hint pattern.

    Other changes

    • MAX_CONTACTS=32 → 40 (32 chat + 8 room) with cap warnings on overflow.
    • MAX_CONVERSATIONS=48 → 56.
    • Translations: sec_rooms added in de/fr/it.
    • data[5] keep-alive byte runtime watch — warns if a future MeshCore server re-enables the legacy interval.

    Compatibility

    • Backward-compatible config: missing room_servers block parses as empty list. Old firmware ignores the field.
    • DM and channel history files stay byte-identical (no syncSince written when zero).
    • Telemetry, SOS, key/PIN lock, offgrid mode all unaffected.

    Install

    🤖 Generated with Claude Code

  15. v0.1.5 # 2 months ago · 2026-04-21 09:31 UTC

    Highlights

    • MeshCore upgraded to v1.15.0 (companion-v1.15.0) — catches up with upstream bug fixes, new token-bucket duty-cycle dispatcher, and default-scope aligned wire format. Binary-compatible with all MCLite v0.1.x peers.
    • SOS burst hardened — 50ms inter-send pacing and dispatcher yield between each recipient so the packet pool can drain. Fixes intermittent cases where SOS delivered to only some contacts/channels in meshes with many targets.
    • SOS received → key lock auto-disengages — when an incoming SOS alert appears, the device automatically unlocks its keys so the user can respond immediately. PIN lock stays engaged — no security compromise.
    • Configurable path hash mode — new radio.path_hash_mode setting (0/1/2 → 1/2/3 bytes per repeater fingerprint in the packet path). Larger sizes reduce path collisions in dense meshes at the cost of a few extra bytes per hop. Defaults to 0 for wire-identical compatibility with pre-v1.15 peers.
    • Admin screen shows active path hash size plus per-channel scope overrides rendered as [scope:#name], distinct from the [SOS] / [read-only] capability flags.

    Changes since v0.1.4

    • 08ca1f7 Bump MeshCore to v1.15.0, harden SOS burst delivery
    • a90ad6e Add configurable path hash mode and admin screen scope display
    • 0f53de1 Bump version to 0.1.5
    • aba8ceb Publish firmware v0.1.5 to web flasher
    • debad94 Document scope and path_hash_mode in example config

    Install

    Flash mclite-v0.1.5.bin via the web flasher or manually with esptool. Use mclite_config_tool.html (offline, single file) to edit config.json.

  16. v0.1.4 # 2 months ago · 2026-04-20 18:19 UTC

    Highlights

    • Map view on telemetry modal — tap a contact's name in the chat header → telemetry modal → Map button (visible when the contact has fresh GPS and SD tiles are available). Full-screen slippy-tile map centred on the contact, own-device marker, +/- zoom, scale bar. Tile pack layout /tiles/{z}/{x}/{y}.png is compatible with upstream MeshCore T-Deck firmware — existing tile packs work unchanged. See the updated README for how to prepare a /tiles folder with map-tiles-downloader.
    • Screen lock & auto-lock unified — single lock / auto_lock config with deferred click; backwards-compatible with older configs missing auto_key_lock.
    • Region scope transport codes — optional per-radio / per-channel scope for repeater filtering.
    • MeshCore dependency pinned to commit 792f2999 for reproducible builds.

    Changes since v0.1.3

    • 444065d Add map view on telemetry modal
    • 89c3825 Add Map view to features list, drop OSM attribution note
    • b4598bb Correct map-tiles-downloader description (TUI, not browser) and document GeoNames region codes
    • 6f378e0 Pin MeshCore dep to commit 792f2999 for reproducible builds

    Install

    Flash mclite-v0.1.4.bin via the web flasher or manually with esptool. Use mclite_config_tool.html (offline, single file) to edit config.json.

  17. v0.1.3 # 2 months ago · 2026-04-13 08:44 UTC

    What's New

    • Region scope — tag outgoing packets with MeshCore transport codes so repeaters can filter by region. Set a global scope or override per channel. Compatible with 1-byte and 2-byte repeaters
    • Automatic DST — POSIX timezone strings for automatic daylight saving time transitions
    • SOS fix — SOS acknowledgement no longer triggers an SOS alert on the sender's device
    • Telemetry fix — CayenneLPP parsing off-by-one corrected
    • Config tool — region scope settings for radio and per-channel override

    Install

    Flash via the Web Flasher or download the binary below and flash with esptool:

    esptool.py write_flash 0x0 mclite-v0.1.3.bin
    
  18. v0.1.2 # 3 months ago · 2026-03-30 12:01 UTC

    What's New

    • Quick replies — optional canned message picker in chat (OK, Copy, Where are you?, Need help, etc.). Disabled by default, enable via config tool or "canned_messages": true in config.json. Supports custom messages via JSON array.
    • Translations — quick reply messages translated for German, French, and Italian
    • Config tool — Quick Replies toggle in Messaging section; auto-detects base64 identity keys from firmware-generated configs

    Install

    Flash via the Web Flasher or download the binary below and flash with esptool:

    esptool.py write_flash 0x0 mclite-v0.1.2.bin
    
  19. v0.1.1 # 3 months ago · 2026-03-28 18:32 UTC

    What's New

    • Keyboard backlight support — turns on at boot, off on auto-dim, restores on wake. Configurable via kbd_backlight (on/off) and kbd_brightness (1–255, default 127).
    • Configurable dim brightness — new dim_brightness setting (0–255, default 20). Set to 0 to turn the screen off completely when inactive.
    • Config tool: Basic/Advanced mode — new toggle to show only Device, Identity, Contacts, and Channels by default. Switch to Advanced for Radio, Display, Messaging, Sound, GPS, Battery, and Security settings.
    • Updated config tool, example config, admin screen, and README.

    Flashing

    Use the web flasher or download mclite-v0.1.1.bin below and flash with esptool:

    esptool.py write_flash 0x0 mclite-v0.1.1.bin
    
  20. v0.1.0 # 3 months ago · 2026-03-27 06:34 UTC

    MCLite v0.1.0

    Purpose-built MeshCore companion firmware for LilyGo T-Deck Plus.

    Highlights

    • MeshCore mesh messaging (DM + channels)
    • SOS alert system with long-press trigger
    • GPS location sharing (decimal, MGRS, or both)
    • On-demand telemetry (battery, location, environment)
    • Multi-language support (EN/DE/FR/IT)
    • SD card message history with ACK persistence
    • Offline config tool (HTML)

    Install

    Flash mclite-v0.1.0.bin via the web flasher or esptool.