Commit Graph

50 Commits

Author SHA1 Message Date
DeFiDude
d89b6699ab v1.6.2: Fix announce bin8 encoding in Settings, deduplicate encodeAnnounceName
Some checks failed
PlatformIO Build / build (push) Failing after 30s
PlatformIO Build / release (push) Has been skipped
Apply bin8 fix to the duplicate announce encoding in LvSettingsScreen
(Send Announce action). Replace inline copy with shared function from
main.cpp. Follows up on PR #5.
v1.6.2
2026-03-15 12:32:54 -06:00
dude.eth
e3dffe6df2 Merge pull request #5 from scotty007/fix/announce-format
Fix msgpack format of announce app data
2026-03-15 12:27:22 -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
Scotty
d9097c0289 Fix msgpack format of announce app data 2026-03-15 13:26:09 +01:00
DeFiDude
02d7dedcce v1.6.1: Fix TCP port input, flash status, PSRAM audio optimization
- Fix TCP port input: allow direct digit entry instead of scroll-only
- Fix flash status always showing "Error" (was checking SD path on flash)
- Flash now shows used/total KB instead of just Mounted/Error
- Audio buffers use PSRAM (ps_malloc) with internal heap fallback
- Bump version to 1.6.1
v1.6.1
2026-03-13 13:42:17 -06:00
DeFiDude
813a14641f v1.6.0: Update microReticulum ref, LXMF fixes, bump version v1.6.0 2026-03-13 04:24:29 -06:00
dude.eth
c4669a2fcc Update README.md 2026-03-12 15:50:05 -06:00
dude.eth
ec66d24aa3 Update README.md 2026-03-12 15:42:22 -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
v1.5.11
2026-03-11 14:49:08 -06:00
DeFiDude
957911d7e7 Fix LXMF TX: Header2 transport_id correction and TCP transport improvements
- Restructure send_outgoing() to handle both Header1 wrapping and
  Header2 transport_id correction (for multi-hop edge case where
  Transport::outbound uses wrong _received_from as transport_id)
- Add announce management improvements and LXMF delivery fixes
- Add LoRa interface enhancements and nodes screen updates
- Sync microReticulum hops > 1 revert in libdeps
2026-03-11 13:43:39 -06:00
DeFiDude
6e36e6524a Remove transport node feature — ratdeck is endpoint only
These standalone devices should not act as transport nodes.
Remove the config toggle, settings UI, and boot-time config peek.
Hardcode transport_enabled(false).
2026-03-11 03:32:35 -06:00
DeFiDude
cb74e7233e v1.5.10: M5Burner merged binary support v1.5.10 2026-03-10 23:00:49 -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
2a7808cf5a Add release protocol documentation
Standardized checklist for version bumps, tagging, post-release
verification, and hotfix workflow. Moves inline release steps from
BUILDING.md into dedicated RELEASING.md.
2026-03-10 14:57:40 -06:00
DeFiDude
9d81d05979 Performance and stability pass (v1.5.9)
- Tighten transport announce rate limit from 5/sec to 2/sec
- Reduce RNS loop frequency from 200Hz to 100Hz
- Throttle LVGL rendering to 30 FPS (was unthrottled)
- Time-box TCP frame loop to 3 frames / 8ms per client
- Add 12ms global TCP budget across all clients
- Replace blocking WiFi announce delay(1500) with deferred non-blocking check
- Rotate persistData() across 3 cycles to spread file I/O
- Reduce LvNodesScreen rebuild frequency (2s → 5s, skip small transient changes)
- Bump version to 1.5.9
v1.5.9
2026-03-10 12:10:24 -06:00
DeFiDude
1c6f1a7633 Fix boot loop crash from null Identity in announce handler
Guard AnnounceManager::received_announce() against null Identity
objects — Identity::recall() can fail when known_destinations table
is full and cull removes the entry. Also removes dead-code
needs_transport_headers() override from TCPClientInterface.
2026-03-10 11:22:19 -06:00
DeFiDude
c630fe9d30 Bump version to 1.5.8 v1.5.8 2026-03-10 00:53:48 -06:00
DeFiDude
fb9eb4a4c3 Fix TCP messaging, LoRa status reversion, and message ordering (v1.5.8)
- TCPClientInterface overrides needs_transport_headers() so hops==1
  packets get HEADER_2 wrapping through the hub
- Track savedCounter in LXMFMessage and use direct filename lookup
  for status updates, fixing LoRa uptime-timestamp precision loss
  that caused SENT status to revert to QUEUED on reload
- Remove timestamp-based re-sort in loadConversation() which broke
  chronological order when mixing LoRa (uptime) and TCP (epoch)
  timestamps; counter-based filenames already provide correct order
2026-03-10 00:49:59 -06:00
DeFiDude
6f272596c8 Fix announce flood from TCP hub overwhelming device (v1.5.7)
4-layer defense against 100+ node announce storms from rns.ratspeak.org:
- Transport-level rate limiter (5/sec) via filter_packet callback, before Ed25519 verify
- TCP frame processing time-boxed to 15ms per loop iteration
- Global announce rate limit (3/sec) in AnnounceManager
- UI rebuild throttled to once per 2 seconds

Also fixes message status not persisting to disk on queue drain.
v1.5.7
2026-03-10 00:08:56 -06:00
DeFiDude
9c48530ec8 Fix incorrect radio preset values in QUICKSTART docs
Preset table and inline reference had wrong BW and TX power values
that didn't match the actual firmware presets.
2026-03-09 15:43:30 -06:00
DeFiDude
fc5b7a527e Fix TCP messaging via hub and persist known_destinations (v1.5.6) v1.5.6 2026-03-08 22:01:41 -06:00
dude.eth
e8b7592f33 Update README.md 2026-03-08 20:45:59 -06:00
DeFiDude
84b7f7175f Fix README video: restore HD thumbnail, add YouTube caption
Switch back to maxresdefault.jpg (1280x720) from hqdefault.jpg
(480x360 with black letterbox bars). Add small caption below the
thumbnail so visitors know it's a clickable video.
2026-03-08 20:35:36 -06:00
DeFiDude
881f9da262 Use YouTube thumbnail with play button overlay 2026-03-08 20:25:18 -06:00
DeFiDude
3f5f225a36 Replace product images with YouTube video in README 2026-03-08 20:23:48 -06:00
DeFiDude
58615b845a v1.5.5: Fix message duplication and ordering over LoRa v1.5.5 2026-03-08 19:28:23 -06:00
DeFiDude
1e22924159 v1.5.4: Hop-based eviction, first-boot data cleanup, message performance
- Evict highest-hop unsaved nodes first when peer list is full (nearby peers survive)
- Add first-boot SD data cleanup screen before name input
- Conversation summaries cache for faster message list rendering
- Optimize message view refresh with summary-based change detection
- Streamline unread tracking through MessageStore instead of LXMFManager
v1.5.4
2026-03-08 17:53:43 -06:00
DeFiDude
76b03a7508 v1.5.3: Cross-compat fixes, announce parsing, UI improvements v1.5.3 2026-03-08 16:52:36 -06:00
DeFiDude
4687bc9d38 Remove legacy dead code: pre-LVGL screens and unused stubs
Delete 24 files (2487 lines):
- 18 legacy screen files (BootScreen, HomeScreen, NodesScreen,
  MessagesScreen, MessageView, SettingsScreen, HelpOverlay,
  NameInputScreen, MapScreen) replaced by Lv-prefixed LVGL versions
- PowerManager (superseded by hal/Power)
- hal/Audio (ES7210 stub, working audio is audio/AudioNotify)
- hal/GPS (stub, GPS deprioritized)

Move shared types (SettingType, SettingItem, SettingsCategory) from
deleted SettingsScreen.h into LvSettingsScreen.h.

Clean main.cpp: remove legacy includes, instances, and tab mapping.

Note: StatusBar and TabBar retained — still used by UIManager/main.cpp.
2026-03-08 16:52:36 -06:00
DeFiDude
b3fa3927ce Fix stale defidude references and version bumps
- Update clone URLs in BUILDING.md and QUICKSTART.md to ratspeak/ratdeck
- Fix update checker API URL in LvSettingsScreen.cpp to ratspeak/ratdeck
- Bump version examples in BUILDING.md from v1.4.2 to v1.5.2
2026-03-08 16:51:59 -06:00
DeFiDude
ddaba06f14 Rewrite README, add product photos 2026-03-08 04:37:38 -06:00
DeFiDude
d49fe332d3 Add LICENSE file, fix README: BLE status, beleth→ratspeak.org, update presets 2026-03-08 04:00:26 -06:00
DeFiDude
8947b636fc Fix LoRa presets: true max range BW 62.5kHz/22dBm, shift balanced and fast down
Long Range: SF12, 62.5 kHz, CR 4/8, 22 dBm (~37 bps)
Balanced:   SF9, 125 kHz, CR 4/5, 17 dBm (~1.8 Kbps)
Fast:       SF7, 250 kHz, CR 4/5, 14 dBm (~11 Kbps)

Previous Long Range used 125 kHz (3rd highest BW) and 17 dBm — not
actually max range. SX1262 supports 62.5 kHz BW and 22 dBm TX power.
2026-03-08 03:45:33 -06:00
dude.eth
5ebf95658c Update README.md
Remove silly slop text
2026-03-07 23:32:30 -07:00
DeFiDude
6cb3118230 v1.5.2: Fix TCP client failures on WiFi reconnect
- TCP connect timeout 500ms → 5000ms (matches RatCom)
- Always recreate TCP clients on WiFi reconnect (stale socket fix)
- Stop TCP clients cleanly on WiFi disconnect
v1.5.2
2026-03-07 22:22:47 -07:00
DeFiDude
9ec2984d4f v1.5.1: Fix messaging failures, stale timestamps, retry logic
- Add NTP time sync on WiFi STA connect (fixes --:-- timestamps)
- Throttle LXMF send retries to 2s intervals, increase max to 30 (~60s window)
- Restore message status re-save to disk after send completes (QUEUED→SENT/FAILED)
- Update GitHub org URLs to ratspeak
v1.5.1
2026-03-07 21:05:19 -07:00
dude.eth
255030955a fix download URL to /download.html 2026-03-07 17:50:05 -07:00
dude.eth
349f08e80c fix web flasher URL: /flash -> /download 2026-03-07 17:44:03 -07:00
dude.eth
0f95cdeeef Update README.md 2026-03-07 17:40:32 -07:00
dude.eth
b48c9064b9 updating docs to reflect v1.4.2 2026-03-07 17:38:45 -07:00
dude.eth
a32182140d v1.4.2: LXMF interop fix, UI redesign, radio defaults
- Fix LXMF wire format: standardize on opportunistic [src:16][sig:64][content]
- Fix LXMF signature: sign(dest||src||packed) per spec, remove message_hash
- Fix MsgPack interop: handle both str and bin types for title/content
- Radio defaults changed to Balanced preset (SF9/BW250k/CR5/TX14)
- Messages screen: sorted by most recent, preview with You:/Them:, green unread dot, timestamps
- Status bar: replace LoRa/BLE/WiFi text with signal bars (green=connected, red=offline)
- Home screen: remove Unread info (shown in Messages tab)
- Contacts screen added (Friends tab)
- Identity manager: multi-slot identity support with per-slot display names
- Message store: fix peer hash truncation, SD directory creation, .bak file leak
- Settings: check for updates, active identity display, info diagnostics
v1.4.2
2026-03-07 17:03:34 -07: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
v1.4.0
2026-03-07 13:00:59 -07:00
DeFiDude
9b7980665c v1.3.1: Chat bubbles, identity management, transport mode fix, performance
- Rewrite MessageView with word-wrapped chat bubbles, timestamps,
  incoming/outgoing alignment, pixel-based scrolling
- Add IdentityManager for multi-identity support (create/switch/delete,
  8 slots max, per-identity display names)
- Fix transport mode: default to endpoint (no rebroadcast) — was acting
  as transport node, rebroadcasting every TCP announce over LoRa causing
  5-11 second UI freezes per TX. Loop time: 11146ms → 6ms
- Add Transport Node toggle in Settings > Network
- TCP interface now drains up to 10 frames per loop (was 1)
- Reduce LoRa debug polling from 5s to 30s
2026-03-06 22:32:54 -07:00
DeFiDude
4c55c3ee6c v1.3.0: Major stability, settings redesign, WiFi scanner, TCP support
Stability fixes:
- Fix message duplication (8x repeat) via messageId-based filenames
- Fix message ordering with epoch timestamps (NTP-aware fallback)
- Fix device freezes: MessageView caches messages instead of reading
  disk every frame at 20fps (now refreshes every 500ms)
- Fix .bak file cascade: filter all file ops to .json only, cleanup junk
- Fix radio presets not persisting across reboots (removed force-override)

Settings redesign:
- Collapsible category navigation (6 categories with summaries)
- Enter to drill into category, Backspace to return
- WiFi network scanner with signal bars and RSSI display
- WiFi SSID/Password fields for STA mode
- TCP server preset (None / Ratspeak Hub / Custom) with host/port
- Frequency selector (868/906/915/923 MHz) and Preamble setting
- Factory reset with confirmation step
- Reboot device action
- Merged small categories (Input into Display, Actions into System)

New features:
- TCP network support for rns.ratspeak.org connectivity
- Preamble stored/applied in config and radio at boot
- Version bumped to 1.3.0
v1.3.0
2026-03-06 22:09:17 -07:00
DeFiDude
dbc33c7926 Fix LXMF message duplication: add messageId deduplication
- Add seen messageId set to processIncoming() to prevent duplicate
  processing of the same message arriving via multiple callbacks
- Remove redundant save at QUEUED stage (only save after send attempt)
- Cap dedup set at 100 entries to prevent memory growth
v1.2.2
2026-03-06 16:32:59 -07:00
DeFiDude
d518921eed v1.2.2: Fix trackball, add display name support, announce with app_data
- Fix trackball completely dead: remove gpio_reset_pin() calls that
  prevented GPIO interrupts from registering on ESP32-S3
- Add trackball left/right tab cycling when screen doesn't consume event
- Add NameInputScreen: Ratspeak-branded first-boot name input
- Add display name to all announces as MessagePack app_data
- Add TEXT_INPUT setting type; expose Display Name in Settings
- HomeScreen Enter key sends announce with toast notification
- Bump version to 1.2.2
2026-03-06 16:28:18 -07:00
DeFiDude
5d038aec9e Fix trackball dead after USB web flash
After ESP32-S3 USB download mode, GPIO peripheral state may persist
across soft reset. The trackball interrupts silently fail because
pins are in an unknown state from the bootloader.

Fix: call gpio_reset_pin() and detachInterrupt() before configuring
the trackball GPIOs, ensuring a clean state regardless of how the
device was reset (power cycle, RTS toggle, or software reset).
v1.2.1
2026-03-06 15:43:13 -07:00
DeFiDude
03d51d5c52 Switch release artifact from merged .bin to ZIP with manifest
Package bootloader, partitions, boot_app0, and firmware as separate
files in a ZIP with manifest.json specifying flash addresses and
settings. This enables the web flasher to flash each part at its
correct address individually, matching proven web flasher patterns.
v1.2.0
2026-03-06 14:36:29 -07:00
DeFiDude
80d4cd45f6 v1.1.0: UI polish, LXMF messaging fixes, keyboard cleanup
- Remove boot display test (color bars + 1.5s delay)
- Show identity hashes on NodesScreen (colon-formatted, matching own identity display)
- Show node names in MessagesScreen and MessageView instead of raw hex
- Add message status indicators in chat (*/!/~ for sent/failed/queued)
- Fix LXMF send: retry Identity::recall() up to 5 times before failing
- Add LXMF logging throughout send/receive/queue drain
- Remove Alt+IJML arrow key mapping (obsolete with trackball)
- Filter own node from discovered nodes list
- Update troubleshooting docs with SetModulationParams STDBY fix
v1.1.0
2026-03-06 13:34:15 -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.
v1.0.0
2026-03-06 12:40:34 -07:00