feat: add mesh network visualizer

- D3.js force-directed graph for real-time mesh visualization
- WebSocket server (mesh-viz-bridge crate) for live updates
- Demo mode with simulated topology
- JSONL file upload for offline analysis
- Optional viz logging in mesh_node forwarding
This commit is contained in:
2026-04-06 21:43:28 +02:00
parent 99d36679c8
commit 95ce8898fd
9 changed files with 831 additions and 1 deletions

7
viz/sample-feed.jsonl Normal file
View File

@@ -0,0 +1,7 @@
{"type":"snapshot","nodes":[{"id":"relay-a","label":"relay-a","status":"active","latency_ms":14},{"id":"relay-b","label":"relay-b","status":"active","latency_ms":21},{"id":"edge-c","label":"edge-c","status":"idle","latency_ms":48}],"links":[{"source":"relay-a","target":"relay-b"},{"source":"relay-b","target":"edge-c"}]}
{"type":"hop","from":"relay-a","to":"relay-b","ms":18}
{"type":"hop","from":"relay-b","to":"edge-c","ms":33}
{"type":"node_status","id":"edge-c","status":"error","latency_ms":500}
{"type":"node_status","id":"edge-c","status":"idle","latency_ms":55}
{"type":"node_leave","id":"edge-c"}
{"type":"snapshot","nodes":[{"id":"relay-a","label":"relay-a","status":"active","latency_ms":14},{"id":"relay-b","label":"relay-b","status":"active","latency_ms":21}],"links":[{"source":"relay-a","target":"relay-b"}]}