fix: prevent virtual node from broadcasting channel config to clients (#1567)#1659
Conversation
…#1567) When the physical node reconnects, its full config dump (including FromRadio.channel messages) was broadcast to all connected virtual node clients. Channel 0 typically has an empty name in the protobuf, which the Android app displays as the placeholder "Channel Name". This fix: 1. Filters out 'channel' type FromRadio messages from real-time broadcast so clients only receive channel config through sendInitialConfig() 2. Adds refreshAllClients() to VirtualNodeServer to re-send config to all connected clients when the physical node reconnects 3. Updates the config capture complete callback to trigger a client refresh on reconnection rather than only initializing once Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
Claude finished @Yeraze's task —— View job PR Review AnalysisI've thoroughly reviewed this PR that addresses the virtual node channel name broadcasting issue (#1567). Here's my comprehensive feedback: Todo List:
✅ Code Quality and ImplementationStrong Points:
🔍 Implementation ReviewMessage Filtering Logic ( const shouldBroadcast = !context?.skipVirtualNodeBroadcast &&
(!parsed || parsed.type !== 'channel');
Refresh Mechanism (
|
The previous fix (#1659) prevented broadcasting channel config during physical node reconnection, but sendInitialConfig() still replayed cached channel bytes from the radio. Since the radio sends channels with empty name strings, the Android app would display "Channel NAme" after every container restart. Now channels are rebuilt fresh from the database (like NodeInfo and MyNodeInfo already were), ensuring proper channel names are always sent to virtual node clients. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…Yeraze#1567) (Yeraze#1659) Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Summary
FromRadio.channeltype messages from real-time virtual node broadcast — these should only reach clients through the controlledsendInitialConfig()flow. Broadcasting them during physical node reconnection caused Android/iOS clients to receive unsolicited channel updates with empty name fields, displayed as "Channel Name" placeholder text.refreshAllClients()method toVirtualNodeServerthat re-sends full initial config to all connected clients when the physical node reconnects and config capture completes.Closes #1567
Test plan
🤖 Generated with Claude Code