From 12cf5c082422ceb026bcb7bf40f0fe7a5a23e68c Mon Sep 17 00:00:00 2001 From: anoracleofra-code Date: Thu, 26 Mar 2026 15:45:11 -0600 Subject: [PATCH] fix: add paho-mqtt dependency + improve Infonet sync status labels MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit paho-mqtt was missing from pyproject.toml, causing the Meshtastic MQTT bridge to silently disable itself in Docker — no live chat messages could be received. Also improve Infonet node status labels: show RETRYING when sync fails instead of misleading SYNCING, and WAITING when node is enabled but no sync has run yet. --- backend/pyproject.toml | 1 + .../src/components/InfonetTerminal/NetworkStats.tsx | 4 +++- uv.lock | 11 +++++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/backend/pyproject.toml b/backend/pyproject.toml index ed2d8b3..96d29ff 100644 --- a/backend/pyproject.toml +++ b/backend/pyproject.toml @@ -21,6 +21,7 @@ dependencies = [ "reverse-geocoder==1.5.1", "sgp4==2.23", "orjson>=3.10.0", + "paho-mqtt>=1.6.0", "slowapi==0.1.9", "uvicorn==0.34.0", "yfinance==0.2.54", diff --git a/frontend/src/components/InfonetTerminal/NetworkStats.tsx b/frontend/src/components/InfonetTerminal/NetworkStats.tsx index cd5de3f..9c36a37 100644 --- a/frontend/src/components/InfonetTerminal/NetworkStats.tsx +++ b/frontend/src/components/InfonetTerminal/NetworkStats.tsx @@ -49,10 +49,12 @@ export default function NetworkStats() { }, []); const nodeColor = stats.syncOutcome === 'ok' ? 'text-green-400' + : stats.syncOutcome === 'running' ? 'text-amber-400' : stats.nodeEnabled ? 'text-amber-400' : 'text-gray-600'; const nodeLabel = stats.syncOutcome === 'ok' ? 'CONNECTED' : stats.syncOutcome === 'running' ? 'SYNCING' - : stats.nodeEnabled ? 'SYNCING' : 'OFFLINE'; + : stats.syncOutcome === 'error' || stats.syncOutcome === 'fork' ? 'RETRYING' + : stats.nodeEnabled ? 'WAITING' : 'OFFLINE'; return (
diff --git a/uv.lock b/uv.lock index fd7aae5..7719fd3 100644 --- a/uv.lock +++ b/uv.lock @@ -77,6 +77,7 @@ dependencies = [ { name = "feedparser" }, { name = "httpx" }, { name = "orjson" }, + { name = "paho-mqtt" }, { name = "playwright" }, { name = "playwright-stealth" }, { name = "pydantic" }, @@ -110,6 +111,7 @@ requires-dist = [ { name = "feedparser", specifier = "==6.0.10" }, { name = "httpx", specifier = "==0.28.1" }, { name = "orjson", specifier = ">=3.10.0" }, + { name = "paho-mqtt", specifier = ">=1.6.0" }, { name = "playwright", specifier = "==1.50.0" }, { name = "playwright-stealth", specifier = "==1.0.6" }, { name = "pydantic", specifier = "==2.11.1" }, @@ -981,6 +983,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529", size = 74366, upload-time = "2026-01-21T20:50:37.788Z" }, ] +[[package]] +name = "paho-mqtt" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/39/15/0a6214e76d4d32e7f663b109cf71fb22561c2be0f701d67f93950cd40542/paho_mqtt-2.1.0.tar.gz", hash = "sha256:12d6e7511d4137555a3f6ea167ae846af2c7357b10bc6fa4f7c3968fc1723834", size = 148848, upload-time = "2024-04-29T19:52:55.591Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c4/cb/00451c3cf31790287768bb12c6bec834f5d292eaf3022afc88e14b8afc94/paho_mqtt-2.1.0-py3-none-any.whl", hash = "sha256:6db9ba9b34ed5bc6b6e3812718c7e06e2fd7444540df2455d2c51bd58808feee", size = 67219, upload-time = "2024-04-29T19:52:48.345Z" }, +] + [[package]] name = "pandas" version = "2.3.3"