Bug: isUnmessagable flag always shows false for local node in MeshMonitor
Reported by Discord user NullVoid (null_v0id) on v4.11.5. The Unmessageable checkbox in the Configuration tab always renders unchecked even when the device has the flag set (confirmed correct in the official Meshtastic web client). The node also does not display as infrastructure/unmessageable on the map.
Root Causes (confirmed in source)
1. /admin/get-owner hardcodes false for the local node
src/server/server.ts ~line 5079:
// For local node:
return res.json({ owner: {
longName: localNodeInfo.longName || '',
shortName: localNodeInfo.shortName || '',
isUnmessagable: false, // ← hardcoded, never reads the actual device value
isLicensed: false, // ← same issue
publicKey: publicKeyBase64
}});
For remote nodes (line ~5093) it correctly uses owner.isUnmessagable || false.
2. NodeInfo processing never stores isUnmessagable in the database
src/server/meshtasticManager.ts ~line 7917–7921:
if (nodeInfo.user) {
nodeData.longName = nodeInfo.user.longName;
nodeData.shortName = nodeInfo.user.shortName;
nodeData.hwModel = nodeInfo.user.hwModel;
nodeData.role = nodeInfo.user.role;
// isUnmessagable is never read from nodeInfo.user here
}
isUnmessagable (and isLicensed) are present in the Meshtastic User protobuf but are silently dropped on ingest, so MeshMonitor never has them available for the local node.
Impact
- Configuration tab: Unmessageable checkbox always unchecked for local node
- Map: node never shown with infrastructure/unmessageable marker, regardless of actual device setting
Fix Direction
- Store
isUnmessagable (and isLicensed) in the DB node row when processing NodeInfo user data
- Fix the
/admin/get-owner local-node path to read the actual stored value instead of hardcoding false
- Include
isUnmessagable in getCurrentConfig() → localNodeInfo so the Configuration tab reads it correctly on load
Authored by NodeZero 0️⃣
Bug:
isUnmessagableflag always shows false for local node in MeshMonitorReported by Discord user NullVoid (null_v0id) on v4.11.5. The Unmessageable checkbox in the Configuration tab always renders unchecked even when the device has the flag set (confirmed correct in the official Meshtastic web client). The node also does not display as infrastructure/unmessageable on the map.
Root Causes (confirmed in source)
1.
/admin/get-ownerhardcodesfalsefor the local nodesrc/server/server.ts~line 5079:For remote nodes (line ~5093) it correctly uses
owner.isUnmessagable || false.2. NodeInfo processing never stores
isUnmessagablein the databasesrc/server/meshtasticManager.ts~line 7917–7921:isUnmessagable(andisLicensed) are present in the MeshtasticUserprotobuf but are silently dropped on ingest, so MeshMonitor never has them available for the local node.Impact
Fix Direction
isUnmessagable(andisLicensed) in the DB node row when processing NodeInfo user data/admin/get-ownerlocal-node path to read the actual stored value instead of hardcodingfalseisUnmessagableingetCurrentConfig()→localNodeInfoso the Configuration tab reads it correctly on loadAuthored by NodeZero 0️⃣