mirror of
https://github.com/permissionlesstech/bitchat.git
synced 2026-07-25 16:45:19 +00:00
Add mesh diagnostics: /ping, /trace, and topology map
- New protocol types ping=0x26 / pong=0x27 (9-byte payload: 8-byte nonce + origin TTL) with per-peer inbound rate limiting (5 per 10s) - /ping @name reports RTT and hop count, 10s timeout - /trace @name prints the estimated path from gossiped directNeighbors - Topology map sheet (circular Canvas layout) reachable from App Info - Ping/pong ride the deterministic directed-relay path like DMs - Tests: payload round-trip, hop-count math, command output, edge normalization, layout Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -5171,6 +5171,54 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"app_info.network.title" : {
|
||||
"comment" : "Section header for network diagnostics in the app info sheet",
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
"en" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "network"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"app_info.network.topology.description" : {
|
||||
"comment" : "Row description for the mesh topology map",
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
"en" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "map of peers and links learned from mesh announces"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"app_info.network.topology.hint" : {
|
||||
"comment" : "Accessibility hint for the mesh topology row",
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
"en" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "opens the mesh topology map"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"app_info.network.topology.title" : {
|
||||
"comment" : "Row title opening the mesh topology map",
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
"en" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "mesh topology"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"app_info.privacy.ephemeral.description" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
@@ -15425,6 +15473,18 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"content.commands.ping" : {
|
||||
"comment" : "Description of the /ping command in the suggestions panel",
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
"en" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "measure round-trip time to a mesh peer"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"content.commands.slap" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
@@ -15604,6 +15664,18 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"content.commands.trace" : {
|
||||
"comment" : "Description of the /trace command in the suggestions panel",
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
"en" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "estimate the mesh path to a peer"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"content.commands.unblock" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
@@ -35194,6 +35266,66 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"topology.caption" : {
|
||||
"comment" : "Caption under the mesh topology map",
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
"en" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "estimated from gossiped neighbor lists (up to 10 per peer) — your device is highlighted"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"topology.empty" : {
|
||||
"comment" : "Empty state of the mesh topology map",
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
"en" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "no mesh links yet — the map fills in as peer announces arrive"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"topology.refresh" : {
|
||||
"comment" : "Accessibility label of the topology refresh button",
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
"en" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "refresh topology"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"topology.summary" : {
|
||||
"comment" : "Topology map summary: number of peers and links",
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
"en" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "%1$ld peers · %2$ld links"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"topology.title" : {
|
||||
"comment" : "Title of the mesh topology map sheet",
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
"en" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "mesh topology"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"verification.my_qr.accessibility_label" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
|
||||
Reference in New Issue
Block a user