LXMF propagation sync, manual node entry, and status improvements

Propagation sync (microReticulum submodule):
- Fix msgpack interop: send nil (not 0) for per_transfer_limit so
  Python server doesn't reject all messages as exceeding "0 KB limit"
- Fix Resource response routing: extract request_id from packed data
  when not present in Resource advertisement, route to pending request
  callback instead of generic concluded handler
- Fix Link::request() to manually build packed arrays, avoiding
  Bytes::to_msgpack() BIN-wrapping that breaks protocol interop

UI enhancements:
- PropagationNodesScreen: manual node entry via 32-char hex hash in
  search field, with paste support and radio button selection
- StatusScreen: display stamp cost from propagation node
- UIManager: NVS persistence for selected propagation node, proactive
  path request on node selection, sync state machine with timeout
  handling

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
torlando-tech
2026-03-02 23:03:32 -05:00
co-authored by Claude Opus 4.6
parent 7d687ea8a8
commit 609a3bc62b
7 changed files with 313 additions and 35 deletions
+1 -1
View File
@@ -839,7 +839,6 @@ void setup_lxmf() {
INFO("Propagation node manager registered");
// Configure propagation settings
router->set_propagation_node_manager(propagation_manager);
router->set_fallback_to_propagation(app_settings.prop_fallback_enabled);
router->set_propagation_only(app_settings.prop_only);
if (!app_settings.prop_selected_node.isEmpty()) {
@@ -1462,6 +1461,7 @@ void loop() {
if (router) {
router->process_outbound();
router->process_inbound();
router->process_sync();
}
// Update UI manager (processes LXMF messages)