Surface XEdDSA signing status in BaseUI — the firmware's built-in on-device display UI (the classic OLED screens) — per the cross-platform spec in meshtastic/design#113 (source of truth, read it first).
BaseUI is the on-device screen UI rendered by firmware. The richer MUI (device-ui / standalone-ui) is tracked separately (device-ui#331, standalone-ui#35).
Summary
Indicate when a node and its broadcast packets are cryptographically signed and verified (XEdDSA). The radio already computes this on-device — BaseUI just needs to render the indicator. Affirm the good state only; never warn on unsigned traffic (legacy nodes, DMs, and oversized broadcasts are legitimately unsigned).
Signals (already available on-device)
MeshPacket.xeddsa_signed — this packet's signature is verified (primary signal).
NodeInfo.has_xeddsa_signed — this node signs its packets.
What to build
OLED adaptation
- BaseUI is monochrome and space-constrained, so the spec's "green & prominent" can't carry over literally — rely on a clear shield glyph in a consistent slot rather than color.
- Keep the existing lock/encryption indication separate from signing (shield = authentic, lock = private).
v1 decisions (from #113)
- Affirm-only: unsigned is silent (no icon, no warning).
- No "unverifiable" state — use the verified bool only.
- Don't reuse the lock for signing; nothing here is an error state.
Parent: meshtastic/design#113
Surface XEdDSA signing status in BaseUI — the firmware's built-in on-device display UI (the classic OLED screens) — per the cross-platform spec in meshtastic/design#113 (source of truth, read it first).
Summary
Indicate when a node and its broadcast packets are cryptographically signed and verified (XEdDSA). The radio already computes this on-device — BaseUI just needs to render the indicator. Affirm the good state only; never warn on unsigned traffic (legacy nodes, DMs, and oversized broadcasts are legitimately unsigned).
Signals (already available on-device)
MeshPacket.xeddsa_signed— this packet's signature is verified (primary signal).NodeInfo.has_xeddsa_signed— this node signs its packets.What to build
has_xeddsa_signed("this node signs its packets").xeddsa_signed) broadcast. Never on DMs — the flag is never set on DMs, so gating on the bool alone is safe.OLED adaptation
v1 decisions (from #113)
Parent: meshtastic/design#113