From 7e88277abdebc3c8a345b49da67973ac111028de Mon Sep 17 00:00:00 2001 From: Jascha Date: Fri, 14 Aug 2026 14:22:12 -0700 Subject: [PATCH 1/2] Stop message progress loop when message is rejected The progress loop in handle_lxmf_message_progress upserts the message to the database every second until it reaches a terminal state, but REJECTED was missing from the stop conditions. A rejected message kept re-inserting itself forever, so deleting the conversation history had no effect and the message reappeared on page reload. --- meshchat.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/meshchat.py b/meshchat.py index b3207dc..d574dda 100644 --- a/meshchat.py +++ b/meshchat.py @@ -3031,10 +3031,11 @@ class ReticulumMeshChat: has_delivered = lxmf_message.state == LXMF.LXMessage.DELIVERED has_propagated = lxmf_message.state == LXMF.LXMessage.SENT and lxmf_message.method == LXMF.LXMessage.PROPAGATED has_failed = lxmf_message.state == LXMF.LXMessage.FAILED + has_rejected = lxmf_message.state == LXMF.LXMessage.REJECTED is_cancelled = lxmf_message.state == LXMF.LXMessage.CANCELLED # check if we should stop updating - if has_delivered or has_propagated or has_failed or is_cancelled: + if has_delivered or has_propagated or has_failed or has_rejected or is_cancelled: should_update_message = False # handle an announce received from reticulum, for an audio call address From 3190f3e5a6f61c86341b21c8d65fddcd7e5862f5 Mon Sep 17 00:00:00 2001 From: Andreev Kirill Andreevich Date: Tue, 6 Oct 2026 21:52:10 +0300 Subject: [PATCH 2/2] Fix bug where toggling transport fails if reticulum config section is missing Fixes #173 Signed-off-by: Andreev Kirill Andreevich --- meshchat.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/meshchat.py b/meshchat.py index d574dda..448c7a3 100644 --- a/meshchat.py +++ b/meshchat.py @@ -980,6 +980,10 @@ class ReticulumMeshChat: @routes.post("/api/v1/reticulum/enable-transport") async def index(request): + # ensure reticulum section exists + if "reticulum" not in self.reticulum.config: + self.reticulum.config["reticulum"] = {} + # enable transport mode self.reticulum.config["reticulum"]["enable_transport"] = True self.reticulum.config.write() @@ -992,6 +996,10 @@ class ReticulumMeshChat: @routes.post("/api/v1/reticulum/disable-transport") async def index(request): + # ensure reticulum section exists + if "reticulum" not in self.reticulum.config: + self.reticulum.config["reticulum"] = {} + # disable transport mode self.reticulum.config["reticulum"]["enable_transport"] = False self.reticulum.config.write()