torlando-techandClaude Opus 4.7 9699a15a2d fix(ui): coalesce ConversationListScreen refresh on inbound flood
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>
2026-05-09 02:59:40 -04:00
2026-02-07 11:49:21 -05:00
2026-03-04 14:12:36 -05:00

Pyxis logo

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.

S
Description
No description provided
Readme GPL-3.0
311 MiB
0 Stars 1 Watchers 0 Forks
Languages
C++ 47%
C 40.3%
Python 10.7%
JavaScript 1%
mupad 0.7%
Other 0.2%