Refactor Reticulum runtime ownership boundaries

Add Reticulum runtime budget, announce scheduling, deferred discovery, RX telemetry, and adapter scratch owners.

Route notification feedback through a platform notification runtime, keep product calls on Sideband LXST, and classify Reticulum network projections.

Unify LoRa TX budget handling across protocol actions, ACK retry, app sends, and MQTT downlink relay; document frozen runtime ownership rules and add smoke coverage.
This commit is contained in:
liu weikai committed 2026-07-19 22:41:51 +08:00
1 parent 5fedc327f3
commit f2ff45283d
70 files changed
+3423 -756

No files matched your search

@@ -89,7 +89,7 @@ constexpr bool kFlashPackStorageEnabled = false;
#if defined(ESP_PLATFORM) || defined(ARDUINO_ARCH_ESP32)
constexpr bool kAllowSynchronousContentSupplementFontLoad = false;
constexpr bool kAllowDeferredContentSupplementFontLoad = false;
constexpr bool kAllowDeferredContentSupplementFontLoad = true;
#else
constexpr bool kAllowSynchronousContentSupplementFontLoad = true;
constexpr bool kAllowDeferredContentSupplementFontLoad = true;
@@ -103,7 +103,10 @@ ui::UiActionResult RuntimeChatActionSink::markRead(ui::chat::ConversationId id)
return ui::UiActionResult::fail(ui::UiActionFailure::Unsupported);
}
chat_service_.markConversationRead(core_id);
if (!chat_service_.markConversationRead(core_id))
{
return ui::UiActionResult::fail(ui::UiActionFailure::Rejected);
}
return ui::UiActionResult::success();
}
@@ -4,6 +4,7 @@
#include "app/app_facade_access.h"
#include "chat/infra/mesh_protocol_utils.h"
#include "platform/ui/reticulum_directory_runtime.h"
#include "platform/ui/reticulum_network_projection_policy.h"
#include "platform/ui/reticulum_page_runtime.h"
#include "ui/app_runtime.h"
#include "ui/assets/fonts/font_utils.h"
@@ -66,6 +67,7 @@ namespace
{
namespace rtdir = ::platform::ui::reticulum_directory;
namespace rtnet = ::platform::ui::reticulum_network;
namespace rtpage = ::platform::ui::reticulum_page;
namespace micron = ::ui::screens::network::micron;
@@ -920,14 +922,14 @@ const char* aspect_label(rtdir::AnnounceAspect aspect)
case rtdir::AnnounceAspect::LxmfDelivery:
return "LXMF";
case rtdir::AnnounceAspect::LxmfPropagation:
return "Prop";
return "Relay";
case rtdir::AnnounceAspect::CallAudio:
return "Call";
case rtdir::AnnounceAspect::NomadNetworkNode:
return "Nomad";
return "Web";
case rtdir::AnnounceAspect::Unknown:
default:
return "Node";
return "Unknown";
}
}
@@ -942,12 +944,16 @@ const char* announce_display_label(const rtdir::AnnounceRecord& announce,
{
return "Anonymous Node";
}
if (announce.aspect == rtdir::AnnounceAspect::LxmfPropagation)
{
return "Message Relay";
}
if (announce.aspect == rtdir::AnnounceAspect::LxmfDelivery ||
announce.aspect == rtdir::AnnounceAspect::CallAudio)
{
return "Anonymous Peer";
}
return fallback ? fallback : "";
return fallback ? fallback : "Unknown Service";
}
const char* address_display_label(const rtdir::LxmfAddressRecord& address,
@@ -962,7 +968,7 @@ const char* address_display_label(const rtdir::LxmfAddressRecord& address,
bool announce_visible_in_directory(const rtdir::AnnounceRecord& announce)
{
return announce.valid && announce.aspect == rtdir::AnnounceAspect::NomadNetworkNode;
return rtnet::visible(announce);
}
std::size_t visible_announce_count()