From e81718126110838bb392c3dd34413da1abb8922c Mon Sep 17 00:00:00 2001 From: MarekWo Date: Sun, 15 Mar 2026 12:12:41 +0100 Subject: [PATCH] fix(websocket): include SNR, hops, route and analyzer URL in channel message events The SocketIO new_message emit for channel messages was missing snr, path_len, pkt_payload and analyzer_url fields, causing messages received via WebSocket to render without metadata until a full page refresh. Co-Authored-By: Claude Opus 4.6 --- app/device_manager.py | 22 ++++++++++++++++++++++ app/static/js/app.js | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/app/device_manager.py b/app/device_manager.py index 8c565d8..dca9c8b 100644 --- a/app/device_manager.py +++ b/app/device_manager.py @@ -7,12 +7,16 @@ Event handlers capture incoming data and write to Database + emit SocketIO. """ import asyncio +import hashlib import json import logging import threading import time from typing import Optional, Any, Dict, List +ANALYZER_BASE_URL = 'https://analyzer.letsmesh.net/packets?packet_hash=' +GRP_TXT_TYPE_BYTE = 0x05 + logger = logging.getLogger(__name__) @@ -380,6 +384,20 @@ class DeviceManager: return if self.socketio: + snr = data.get('SNR', data.get('snr')) + path_len = data.get('path_len') + pkt_payload = data.get('pkt_payload') + + # Compute analyzer URL from pkt_payload + analyzer_url = None + if pkt_payload: + try: + raw = bytes([GRP_TXT_TYPE_BYTE]) + bytes.fromhex(pkt_payload) + packet_hash = hashlib.sha256(raw).hexdigest()[:16].upper() + analyzer_url = f"{ANALYZER_BASE_URL}{packet_hash}" + except (ValueError, TypeError): + pass + self.socketio.emit('new_message', { 'type': 'channel', 'channel_idx': channel_idx, @@ -387,6 +405,10 @@ class DeviceManager: 'content': content, 'timestamp': ts, 'id': msg_id, + 'snr': snr, + 'path_len': path_len, + 'pkt_payload': pkt_payload, + 'analyzer_url': analyzer_url, }, namespace='/chat') logger.debug(f"SocketIO emitted new_message for ch{channel_idx} msg #{msg_id}") diff --git a/app/static/js/app.js b/app/static/js/app.js index 82e1ec7..bedf09d 100644 --- a/app/static/js/app.js +++ b/app/static/js/app.js @@ -908,7 +908,7 @@ function appendMessageFromSocket(data) { path_len: data.path_len || null, echo_paths: [], echo_snrs: [], - analyzer_url: null, + analyzer_url: data.analyzer_url || null, pkt_payload: data.pkt_payload || null, txt_type: data.txt_type || 0, };