feat: wzp-analyzer binary — protocol analyzer with TUI (#13, #14, #15)
New binary: wzp-analyzer joins a room as a passive observer and displays
real-time per-participant quality metrics.
Features:
- Passive observation: connects to relay, receives all media, never sends
- Participant detection: identifies senders by sequence number streams
- Per-participant stats: packets, loss%, jitter, codec, codec switches
- TUI mode (ratatui): color-coded table (green/yellow/red by loss),
10 FPS refresh, session header, quit with q/Ctrl+C
- No-TUI mode: prints stats to stderr every 2s (for headless/CI use)
- Capture mode: binary .wzp format with microsecond timestamps for
offline replay (magic WZP\x01, JSON header, per-packet records)
- Session summary on exit
Usage:
wzp-analyzer 193.180.213.68:4433 --room general
wzp-analyzer 193.180.213.68:4433 --room general --no-tui --duration 60
wzp-analyzer 193.180.213.68:4433 --room general --capture session.wzp
372 tests passing, 0 regressions.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>