Commit Graph

17 Commits

Author SHA1 Message Date
DeFiDude 401107995a Pin lvgl and LovyanGFX to ~1.1.16 / ~8.3.4 (block 1.2.x / 8.4.x)
LovyanGFX 1.2.x bundles its own lvgl-compat headers that collide
with lvgl >=8.4 on shared types (lv_area_t, lv_font_t, etc.).
Tilde restricts fresh clones to the 1.1.x and 8.3.x ranges this
build was originally cached against, so `pio run` from a fresh
checkout doesn't randomly break.
2026-04-23 21:41:13 -06:00
DeFiDude be771818f9 Silence vfs_api error spam and rename /ratputer/ SD paths to /ratdeck/
CORE_DEBUG_LEVEL=0 drops Arduino core noise on expected-missing files, LittleFSFileSystem::open_file now actually works so path_table persists across reboots.
2026-04-16 21:54:44 -06:00
dude.eth de608c4667 Increase supply chain risk
I simply do not care enough to keep the proper microReticulum commit pinned, started as a joke. Still keeping crypto dependencies internal, though.
2026-04-08 13:38:23 -06:00
DeFiDude e8000538aa Reduce supply chain risk 2026-04-07 15:11:39 -06:00
DeFiDude f41e4c0363 Tune RNS tables, cache status bar time, add BLE idle timeout
Status bar: Cache last displayed hour/minute, skip LVGL label
update when minute hasn't changed (eliminates 59/60 redundant
invalidations per minute).

RNS tables: Increase ANNOUNCE_TABLE_MAX 32→48 (prevents premature
eviction on networks >32 nodes). Increase RATE_TIMESTAMPS_MAX
16→32 (prevents false rate-limit rejects on busy networks).

BLE: Add 5-minute idle timeout. Stale connections now get
disconnected to free the single NimBLE connection slot for new
devices. Activity tracked on connect, RX, and TX events.
2026-03-28 15:51:43 -06:00
DeFiDude 949e508f80 Reduce table caps for client device performance
Lower known_destinations from 512→128, announce_table from 128→32,
path_table from 256→64. Ratdeck is a client, not a transport node —
smaller tables reduce cull overhead and memory pressure on busy hubs.
2026-03-24 22:23:15 -06:00
DeFiDude 851da63220 LoRa split-packet framing, TX queue, and LXMF delivery fixes
LoRaInterface: Implement RNode-compatible split-packet framing so the
full Reticulum MTU (500 bytes) works over LoRa. Packets >254 bytes are
transparently split into two LoRa frames with matching sequence numbers
and reassembled on the receiver. Also adds a 4-deep TX queue instead of
dropping packets when the radio is busy — critical for link handshakes.

LXMFManager: Large messages (>MDU) now queue pending link establishment
and retry via resource transfer instead of failing immediately. Stale
link-pending state is detected and reset. Speculative background link
establishment removed to avoid LoRa collisions.

AnnounceManager: Add app_data hex diagnostics on announce RX for
debugging name extraction issues.

main.cpp: Centralize all announce paths through announceWithName() so
display name and app_data are always logged.
2026-03-24 20:55:07 -06:00
DeFiDude e250ea1ad0 Switch microReticulum dependency to fork master branch
PlatformIO Build / release (push) Has been skipped
PlatformIO Build / build (push) Failing after 7m17s
All fixes from fix/tcp-transport-and-identity-persistence have been
merged into master on ratspeak/microReticulum. No need for the branch
reference anymore.
2026-03-20 19:47:47 -06:00
DeFiDude 43e5420416 Fix LXMF bidirectional messaging, increase known_destinations cap
Outbound (Ratdeck→Python) was broken because Identity::recall() could
never find the recipient. Root cause: OS::time() returns seconds since
boot on ESP32, but persisted known_destinations entries carried timestamps
from the previous session. New announces got timestamp ~31s while persisted
entries had ~5000s, so the LRU cull immediately removed the new entry.

The microReticulum Identity.cpp fix (timestamp normalization on load) is
in .pio/libdeps and must be upstreamed to ratspeak/microReticulum separately.

Changes:
- known_destinations cap 256→512 (PSRAM pool was 1% used, plenty of room)
- Fix link delivery destHash: onLinkEstablished callback was passing link_id
  instead of LXMF destination hash, corrupting conversation routing
- Add diagnostic logging: [LXMF-DIAG], [TCP-DIAG], [HEART-DIAG], [DIAG-PROOF]
  for tracing link establishment, proof routing, and interface status
2026-03-20 19:24:28 -06:00
DeFiDude 45df807424 Fix TCP announce flood: adaptive filter, TCP backpressure, aligned table caps
- Enhanced announce filter: adaptive rate (3/sec boot, 5/sec normal),
  skip re-validation of known paths unless hop count improved or 5min
  revalidation window expired
- Skip TCP reads when RNS loop exceeds 200ms to prevent UI starvation
- Lower MAX_ANNOUNCES_PER_SEC from 8 to 5
- Align build flag table caps (256/128) with runtime values
2026-03-19 15:24:31 -06:00
DeFiDude fc91f8214e TCP scaling, GUI pooling, dev mode, protocol improvements
- TCP: wider drain budgets, TCP_NODELAY, no flush, PSRAM buffers, queue announces until hub ID
- GUI: object pool Messages/Contacts screens, partial MessageView status, targeted tab refresh
- LVGL throttled to 5fps when dimmed, non-blocking RSSI monitor, bounded I2S writes
- LXMF batch drain, BLE frame mutex, LoRa interrupt-driven RX, name cache cap 300
- Developer mode in settings: custom radio params (freq/txp/SF/BW/CR/preamble) behind warning
2026-03-15 12:25:29 -06:00
DeFiDude 813a14641f v1.6.0: Update microReticulum ref, LXMF fixes, bump version 2026-03-13 04:24:29 -06:00
DeFiDude 81d5f31e08 v1.5.11: Fix TCP outbound messaging + PSRAM optimization
- Fix path destruction on announce_packet cache miss (microReticulum)
- Fix hops_to() triggering unnecessary flash cache reads (microReticulum)
- Add PSRAM allocator for ArduinoJson Persistence (microReticulum)
- Enable PSRAM pool allocator for ContainerAllocator (2MB PSRAM pool)
- PathTable and AnnounceTable now allocate on PSRAM instead of heap
2026-03-11 14:49:08 -06:00
DeFiDude 0a969ef4c6 Add merged single .bin output for M5Burner compatibility
Add post-build script that produces ratdeck-merged.bin with bootloader,
partitions, boot_app0, and firmware at correct offsets. CI now attaches
the merged binary as a standalone release asset alongside the existing
multi-part ZIP.
2026-03-10 22:59:01 -06:00
DeFiDude fc5b7a527e Fix TCP messaging via hub and persist known_destinations (v1.5.6) 2026-03-08 22:01:41 -06:00
DeFiDude 07025bfa23 v1.4.0: LVGL UI, async radio TX, live TCP management, input fixes
- Migrate all screens to LVGL v8.4 widget system
- Non-blocking radio TX (async endPacket via LoRaInterface)
- Live TCP server switching with transient node cleanup
- Fix UI freeze during radio transmit
- Trackball long-press delete, deferred click with debounce
- Pin microReticulum to 392363c, fix list_directory API
- Fix CI build: portable include path, remove hardcoded local path
2026-03-07 13:00:59 -07:00
DeFiDude 1255f0db51 Initial release: Ratdeck v1.0.0
Reticulum transport node + LXMF encrypted messenger for LilyGo T-Deck Plus.
ESP32-S3, 16MB flash, SX1262 LoRa, LovyanGFX display, NimBLE BLE.
2026-03-06 12:40:34 -07:00