Skip to content

isUnmessagable flag always shows false for local node (never read or stored) #3683

Description

@Yeraze

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

  1. Store isUnmessagable (and isLicensed) in the DB node row when processing NodeInfo user data
  2. Fix the /admin/get-owner local-node path to read the actual stored value instead of hardcoding false
  3. Include isUnmessagable in getCurrentConfig()localNodeInfo so the Configuration tab reads it correctly on load

Authored by NodeZero 0️⃣

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions