Viewport-based message virtualization for open chats: only the visible
window of LVGL widgets is materialised while layout offsets cover the
full thread (up to msgCap). Supports bubble and compact IRC modes, day
separators, jump to oldest/latest, and compressed LVGL scroll coords
for very long histories.
Finger drags advance layout scroll 1:1 even when coords are compressed,
so long histories scroll fluidly without micro-drags that trigger bubble
long-press menus.
Includes LVGL crash hardening from soak testing: defer refreshChatDetail
and bubble reflow off the indev/refresh path, sync-delete during async
render, size chatVirtEnsureMsgIdx to msgCap for the SD deep ring, and
open-to-bottom scroll that does not rely on premature scroll_bottom.
Fixes#126
Signed-off-by: Steve Glenner <steveglenner@hotmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
- ALT-accent picker on the Tanmatsu physical keyboard: hold ALT + letter
opens the accent popup with the first variant highlighted, the letter
cycles (auto-repeat walks the options), releasing ALT (its own scancode
event) inserts the highlighted choice. Popup is nav-skipped/non-clickable
so keypad-nav focus can't steal the cycle key, SC()-scaled, align-centred.
- Double-tap-space language cycle ported to the Tanmatsu typing path
(navPump), and keyboardLayoutsApply now updates the active layout even
with no on-screen keyboard object (was a permanent no-op there).
- Fonts: LV_USE_FONT_COMPRESSED on; extras_font_12/14/16 regenerated
compressed (identical text glyphs; redundant mono emoji dropped — the
colour imgfont covers emoji) freeing ~340 KB; new compressed Latin-accent
extras_lat_20/24/28 spliced into the Large/Huge fallback chain
(Tanmatsu-only) so umlauts size-match the scaled UI. Tanmatsu app.bin =
3,269,440 B, UNDER the known-booting 3,271,856 B (50-page AppFS ceiling).
- TEMP: TDECK_KEYCODE_PROBE toast (build-flag gated, inert in releases)
for mapping the T-Deck alt key.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Headline: full keyboard navigation (on by default) — WASDZ spatial focus move, S select,
Q back, per-tab hotkeys (E/R/T/U/I) shown on the icons, plus scroll up/down (F/C). Every
key is remappable in Settings -> Keyboard. Foundation for keyboard-first devices like the
Tanmatsu T-Pager (no touchscreen) and a reliable keyboard workflow on the T-Deck today.
Also: #27 receive/flood reboot fix, on-boot crash-report prompt, map zoom +/- buttons (#26),
route-replay wide overview, 'App drawer as home' option. The in-progress Tanmatsu (ESP32-P4)
port source is now public. Mesh America catalog + release.sh kept from main.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
First board lands. wadamesh builds the LVGL touch firmware as its own project,
consuming the MeshCore core via lib_deps @ git tag (ALLFATHER-BV/MeshCore
#v1.16.0-wada.0) — no vendored core in this repo. Output is byte-identical to the
in-tree meshcomod build (delta = embedded build-path strings only).
Contents: companion_radio app (MyMesh/main/DataStore), ui-touch LVGL UI,
variants/heltec_v4 board glue, boards/heltec_v4.json, lv_conf, the bundled
ed25519 lib, AsyncElegantOTA, partition table, and a flattened platformio.ini
for env heltec_v4_tft_companion_radio_usb_tcp_touch.
MeshCore-derived files (app glue) remain MIT; ui-touch is GPL — see NOTICE.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Kaj Schittecat <kaj@schittecat.com>