mirror of
https://github.com/torlando-tech/pyxis.git
synced 2026-10-23 06:12:25 +00:00
9699a15a2d7f01c2a62f0b35e50c9b2afb1f6d73
on_message_received() called \`_conversation_list_screen->refresh()\`
unconditionally per message. Under propagation-sync flood (50+ queued
messages delivered back-to-back) that's 50 full LVGL list redraws,
each holding LVGL_LOCK across:
- lv_obj_clean(_list) + reload conversations from MessageStore
- per-conversation container construction
- per-peer Identity::recall_app_data calls for display names
- SPI display flush
The refreshes serialize behind LVGL_LOCK, the SPI bus stays saturated
flushing dirty regions, and pyxis's USB CDC TX buffer overflows
because the main loop is too busy with display work to drain the
serial-output FIFO. Harness commands time out as a side effect.
Replace the per-message refresh with a coalescing flag drained from
update():
- on_message_received only sets _pending_conversation_refresh
- update() refreshes at most once per 750ms
- update() also skips the refresh entirely when the user isn't on
the conversation list (show_conversation_list refreshes when they
navigate back, so nothing's lost — a chat-screen user gets quiet
background ingestion)
Validated under a 2-round LXMF soak: direct + opportunistic short and
medium messages all PASS round-trip with the coalescing in effect.
Propagation flake is unchanged (known timing issue between pyxis
upload and bot's 8s sync poll, not a UI regression).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Pyxis
An LXMF and LXST client firmware for T-Deck, built on a highly modified fork of microReticulum
Very much WIP, don't expect stability :)
Features
Reticulum transport over:
- RNode-compatible LoRa
- AutoInterface (local wifi)
- TCP Client
- BLE Interface (barely working if at all)
Other features:
- GPS-synced time
- One really annoying beep when you get a new message (user toggle)
- View the announce stream
- Choose a propagation node (and sync with it) (fixed in v0.2.1)
- Set auto announce timer
- Light up keyboard (user toggle)
Will crash in about 5 minutes of normal use (sorry)I had 5d uptime on v0.2.0 with BLE disabled- Make LXST voice calls (codec2 only, quality sounds horrible coming out the other end in Columba, needs work)
Why "Pyxis"
Pyxis, latin for "compass," is a constellation in the southern sky depicting a mariner's compass. Small but essential, the compass ensures every message finds its destination - even when the path is uncertain.
Languages
C++
47%
C
40.3%
Python
10.7%
JavaScript
1%
mupad
0.7%
Other
0.2%