New Features
Connection Monitor: Traceroute Burst Capture (#196)
- Event-triggered traceroute — automatically captures hop-level network path when outages or packet loss are detected (5-min cooldown per target)
- Manual traceroute — "Run Traceroute" button in the Connection Monitor detail view
- Trace history — clickable trace list with hop detail expansion showing per-hop IP, hostname, latency, and probe response count
- New C helper binary (
docsight-traceroute-helper) with setuid privilege dropping and per-hop stdout flushing for partial results on timeout - New API endpoints —
POST /api/connection-monitor/traceroute/<id>,GET /api/connection-monitor/traces/<id>,GET /api/connection-monitor/trace/<id> - Demo mode — realistic sample traces for Cloudflare and Google DNS targets
- i18n — all 4 languages (EN/DE/FR/ES)
UX Improvements
- Chart zoom persistence — zoom state survives the 10-second auto-refresh cycle
- Reset Zoom button — visible button appears when zoomed in, with hover tooltip ("Drag to zoom, double-click to reset")
- Dynamic Y-axis scaling — adapts to actual latency data instead of hardcoded 200ms ceiling (40ms floor for low-latency connections)
- No more scroll jumps — container height is pinned during chart refresh to prevent page jumping
Bugfixes
- Security: check
seteuid()return value in traceroute helper, drop privileges in--checkpath - Flaky test: mock
utc_nowin Smart Capture timeline test (was date-dependent) - i18n: correct German umlaut in
traceroute.running
Stats
- 23 files changed, +1956 lines
- 39 new tests (1769 total, all passing)