diff --git a/packages/core/src/meshDevice.ts b/packages/core/src/meshDevice.ts index 0be2b224..c1367815 100755 --- a/packages/core/src/meshDevice.ts +++ b/packages/core/src/meshDevice.ts @@ -931,6 +931,10 @@ export class MeshDevice { from: meshPacket.from, to: meshPacket.to, channel: meshPacket.channel, + hops: Math.min(meshPacket.hopStart - meshPacket.hopLimit, 0), + rxRssi: meshPacket.rxRssi, + rxSnr: meshPacket.rxSnr, + viaMqtt: meshPacket.viaMqtt, }; this.log.trace( diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index 8f055d67..d2614d5f 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -60,6 +60,10 @@ export interface PacketMetadata { from: number; to: number; channel: ChannelNumber; + hops: number; + rxRssi: number; + rxSnr: number; + viaMqtt: boolean; data: T; } diff --git a/packages/core/src/utils/transform/decodePacket.ts b/packages/core/src/utils/transform/decodePacket.ts index 06896403..a90a37f6 100644 --- a/packages/core/src/utils/transform/decodePacket.ts +++ b/packages/core/src/utils/transform/decodePacket.ts @@ -86,6 +86,10 @@ export const decodePacket = (device: MeshDevice) => type: "direct", channel: Types.ChannelNumber.Primary, data: decodedMessage.payloadVariant.value.position, + hops: 0, + rxRssi: 0, + rxSnr: 0, + viaMqtt: false, }); } @@ -99,6 +103,10 @@ export const decodePacket = (device: MeshDevice) => type: "direct", channel: Types.ChannelNumber.Primary, data: decodedMessage.payloadVariant.value.user, + hops: 0, + rxRssi: 0, + rxSnr: 0, + viaMqtt: false, }); } break; @@ -238,6 +246,10 @@ export const decodePacket = (device: MeshDevice) => type: "direct", channel: Types.ChannelNumber.Primary, data: decodedMessage.payloadVariant.value, + hops: 0, + rxRssi: 0, + rxSnr: 0, + viaMqtt: false, }); break; } diff --git a/packages/web/CONTRIBUTING.md b/packages/web/CONTRIBUTING.md index 64dd2be5..183514a2 100644 --- a/packages/web/CONTRIBUTING.md +++ b/packages/web/CONTRIBUTING.md @@ -134,7 +134,10 @@ fix: correct caching issue in storage service ## 💡 Tips for Contributors - Keep PRs **small, focused, and atomic**. - Discuss larger changes with the team on [Discord](https://discord.gg/meshtastic) before starting work. -- If unsure, open a draft PR for early feedback. +- If unsure, open a draft PR for early feedback. +- Maintain cross-platform visual consistency: when implementing new UI components, it's important to maintain a consistent +look and layout across platforms. Before introducing a new visual pattern, please reference the existing interfaces in other +client apps to ensure alignment. --- diff --git a/packages/web/src/components/PageComponents/Messages/MessageItem.tsx b/packages/web/src/components/PageComponents/Messages/MessageItem.tsx index 16cd394c..54e589e3 100644 --- a/packages/web/src/components/PageComponents/Messages/MessageItem.tsx +++ b/packages/web/src/components/PageComponents/Messages/MessageItem.tsx @@ -216,6 +216,21 @@ export const MessageItem = ({ message }: MessageItemProps) => { {displayName} + {message.viaMqtt && ( + + + + + ☁️ + + + + MQTT + + + + + )} {messageDate && (