Skip to content

Meck v1.12.6 -- Tile home screen on every T-Deck Pro & Max build, Call Log & phone Contacts, device-side DM retries

Latest

Choose a tag to compare

@pelgraine pelgraine released this 26 Jul 07:00

v1.12.6 is the first tagged release since v1.12.3. The in-tree bumps to v1.12.4 and v1.12.5 were never published, so everything below has accumulated across all three steps. Build date: 26 July 2026.

Headline changes: the T-Deck Max tile home screen is now the home screen on all T-Deck Pro builds; the SMS & Phone app gains a Call Log and a Contacts screen with a tappable app menu; and direct messages now retry on the device with live Sending / Delivered / Failed status.


What's Changed since v1.12.3

Tile home screen on all T-Deck Pro builds

IMG_3854

The touch tile grid introduced on the T-Deck Max is now the first home page on every T-Deck Pro build -- audio, 4G, BLE, WiFi and standalone alike.

  • Twelve tiles in a 2 x 6 grid -- Messages, Contacts, Settings, Discover, Trace, Maps, Notes, Reader, Audiobooks, Alarm, Browser, Games -- plus a full-width Phone tile beneath them.
  • Tap a tile to open it. The keyboard shortcuts are unchanged, so W/A/D/Enter and the letter keys work exactly as before.
  • Tiles for features a given build does not include (Phone on audio builds, Audiobooks on 4G builds) are inert.
  • Tile labels follow your Font Style setting -- Classic 5x7, Noto Sans 7pt or Montserrat 7pt.
  • A status strip above the grid shows the unread MSG count alongside the connection state, WiFi IP and port, or the BLE pin, depending on the build.
  • Nothing changes on the Max: it already had this screen, and the render path was verified byte-for-byte against the previous Max output.

SMS & Phone app -- Call Log and Contacts (Pro 4G and Max)

The phone app menu is now four rows: Dial, Call Log, Contacts and SMS Inbox.

Call Log

  • Stores the 32 most recent calls on the SD card at /sms/calllog.dat, oldest trimmed on append.
  • Logs incoming and outgoing calls with their duration, plus missed, busy and no-answer attempts.
  • Calls arriving without caller ID are logged and shown as Unknown rather than dropped.
  • Contact names are resolved through the SMS contacts store where known.
  • Enter dials the highlighted entry back, D deletes it, Q backs out.
  • The menu row carries an unseen-missed [n] badge, matching the existing SMS Inbox badge. Both persist across a reboot and clear when you open that screen.

Contacts

  • A dedicated screen for saved phone contacts, stored at /sms/contacts.txt.
  • A adds a contact, M sends an SMS to the highlighted one.
  • Opening a contact gives an editable Name and Number page with a Save row, plus F to dial and D to delete.

Touch on the app menu

  • The four menu rows are now tappable. The first tap highlights a row, a second tap on the same row opens it.

Phone fixes

  • An incoming call now drops the lock screen. Previously both keyboard and touch input were blocked while locked, which left the ringing screen unable to answer or reject. The device stays unlocked afterwards.
  • Opening the SMS screen mid-call no longer resets the view to the app menu and wipe the ringing screen.
  • The app menu footer right margin was widened so Ent:Open is no longer clipped.

Lock screen notifications (Pro 4G and Max)

The lock screen now shows outstanding unread SMS and unseen missed calls beneath the existing clock, battery and unread message count.

These counts are read from the SMS inbox read flags and the call log seen flags rather than tallied while locked, so they survive locking, unlocking and a reboot, and clear only when you actually open that conversation or the Call Log. State is loaded at boot when the SD card comes up.

IMG_3926

Direct messages -- device-side retries and delivery status (all Pro and Max builds)

Tracked DM sends now retry on the device, the same way the companion app does, so this works with no phone connected.

  • 3 attempts (all flood) when no path is set, or 5 attempts when a path is set -- 4 direct on the set path, then a path reset and a final flood.
  • Each attempt waits its own hop-aware estimated timeout.
  • The conversation view shows the live state in the message prefix: Sending x/N while retrying, Delivered once the recipient acknowledges any attempt, or Failed once all attempts are exhausted.
  • Wired for keyboard, touch, CardKB compose and channel sharing. BLE app sends and the voice envelope path are untouched.
  • Status is session-only. The on-SD message format is unchanged at v4, so no migration and no reformat.

A first pass drew a tick glyph for the delivered state; because the GFX fonts position from the baseline rather than the glyph top, the tick landed below the line. It has been replaced with the word Delivered sitting in the same prefix position as Sending and Failed.

Toast overlays now clear on time (all Pro and Max builds)

Alert toasts could stay on screen after their expiry. Any render landing inside the alert window -- which the new DM status pushes trigger -- redrew the overlay, and the e-ink refresh throttle then clamped the scheduled clearing render past the expiry. The scheduler now wakes at the expiry instead when an alert is still active and due to lapse before the next scheduled render. One bounded extra render per toast, both display branches covered.

Contacts saving throttled (all Pro and Max builds)

The lazy contact save on ESP32 boards has moved from a 5-second debounce to a 12-hour interval. On busy meshes this was rewriting roughly 95 KB to LittleFS over and over. The next flush is anchored 12 hours out on the first dirty pass and only written once reached, re-anchoring after each save.

To avoid losing up to 12 hours of contact learning on a flat battery, contacts are now flushed (blocking) in the low-battery auto-shutdown path before power-off. Manual power-off is unchanged.

Radio presets

  • Added Australia (Mid) -- 915.075 MHz, 125 kHz, SF9, CR5, 22 dBm.
  • Added Australia (Wide) -- 915.800 MHz, 250 kHz, SF10, CR5, 22 dBm.
  • Removed Australia (Narrow) -- 916.575 MHz, 62.5 kHz, SF7, CR8, 22 dBm. If you run the narrow profile, set frequency, bandwidth, SF and CR manually from Settings, or over serial, after applying any preset.

Q is the exit key again (Pro and Max)

Earlier work in this cycle moved almost every Q:Exit footer and handler to Shift+Backspace. That has been reverted on the T-Deck Pro and T-Deck Max: Q is once again back/exit across the interface. The one exception is text entry, where Q is a normal character and Shift+Backspace exits instead. Footers were updated to match.

Fixes

  • Max frontlight -- the e-ink frontlight occasionally stayed lit when the auto-lock timer fired, burning power behind the lock screen. It now switches off with the lock screen.
  • Truncated footers -- the right-hand footer hint was clipping its last character on the channel picker, channel messages and repeater admin screens. The right margin has been widened.
  • Max battery capacity -- the BQ27220 design capacity define had been flipped to 2500 mAh by accident and is back to 1400 mAh.
  • Build fixes -- thanks to @nabbi for two PRs fixing build failures on case-sensitive filesystems (Linux) for the ESP32 LilyGo variants, and the remaining failures found by a full pio run across every environment (#21, #22).

Repository

T-Watch S3 and S3 Plus support has been removed from this repository. Meck Watch is now a separate, private repository, available to monthly GitHub sponsors from $2 USD per month. Nothing in the T-Deck Pro, T-Deck Max, T5S3 or repeater builds is affected.


Builds in this release

Only the T-Deck Pro and T-Deck Max binaries are published here. The T5S3 E-Paper Pro stays on v1.12.2, and the remote repeater and WiFi repeater environments are unchanged.

Environment Device Version string
meck_audio_ble T-Deck Pro, Audio + BLE Meck v1.12.6
meck_audio_wifi T-Deck Pro, Audio + WiFi Meck v1.12.6.WiFi
meck_audio_standalone T-Deck Pro, Audio standalone Meck v1.12.6
meck_4g_ble T-Deck Pro, 4G + BLE Meck v1.12.6.4G
meck_4g_wifi T-Deck Pro, 4G + WiFi Meck v1.12.6.4G.WiFi
meck_4g_standalone T-Deck Pro, 4G standalone Meck v1.12.6.4G.SA
meck_max_ble T-Deck Max + BLE Meck v1.12.6.MAX
meck_max_wifi T-Deck Max + WiFi Meck v1.12.6.MAX.WiFi
meck_max_standalone T-Deck Max standalone Meck v1.12.6.MAX.SA

First-Time Flashing

Each build comes in two forms:

  • <name>-merged.bin -- bootloader, partition table, and firmware in a single image. Flash at address 0x0. Use this for a first-time flash, when coming from other firmware, or if a device will not boot after an update.
  • <name>.bin -- firmware only. Use this to update an existing Meck install, including OTA updates from your phone (Settings -> OTA Tools).

The partition layout supports dual OTA slots, so the previous firmware remains on the inactive partition as an automatic rollback target if a new image fails to boot.


MeshCore Companion Apps

BLE variants connect to the standard MeshCore companion apps:

WiFi variants connect via TCP on port 5000: