Type: bug | Area: WebSocket / text messages / heard
Problem
When viewing a message channel and a new message arrives over the WebSocket (live prepend), the message card shows 0 heard and does not update until a full page refresh. After refresh, REST list returns the correct heard count.
Reproduced on the messages page while staying on the active channel (message appears in the list in realtime, but heard count is wrong).
Likely cause
TextMessageWebSocketNotifier serializes via TextMessageWSSerializer.get_heard(), which only populates observations when original_packet.prefetched_observations exists (Meshtastic MessagePacket path). Otherwise it returns [].
MeshCore rows use original_mc_packet + MeshCorePacketObservation; REST TextMessageSerializer.get_heard() handles both — WS path does not mirror that yet. Notifier also does not prefetch observations at notify time.
Code: Meshflow/ws/serializers.py (TextMessageWSSerializer), Meshflow/ws/services/text_message.py, compare Meshflow/text_messages/serializers.py (get_heard).
Acceptance criteria
Related
Type: bug | Area: WebSocket / text messages / heard
Problem
When viewing a message channel and a new message arrives over the WebSocket (live prepend), the message card shows
0 heardand does not update until a full page refresh. After refresh, REST list returns the correct heard count.Reproduced on the messages page while staying on the active channel (message appears in the list in realtime, but heard count is wrong).
Likely cause
TextMessageWebSocketNotifierserializes viaTextMessageWSSerializer.get_heard(), which only populates observations whenoriginal_packet.prefetched_observationsexists (MeshtasticMessagePacketpath). Otherwise it returns[].MeshCore rows use
original_mc_packet+MeshCorePacketObservation; RESTTextMessageSerializer.get_heard()handles both — WS path does not mirror that yet. Notifier also does not prefetch observations at notify time.Code:
Meshflow/ws/serializers.py(TextMessageWSSerializer),Meshflow/ws/services/text_message.py, compareMeshflow/text_messages/serializers.py(get_heard).Acceptance criteria
Related
message.heard.lengthinMessageItem(meshflow-ui).text_messages/tests/test_heard_api.py.