Add Paths & Hashes to Analytics: colorful hash-width share, received path-entry distribution, hourly hash-width trends and coverage-category charts, with exact accessible tables.
Use the bounded server /stats/paths aggregates and the existing 24h/7d/30d and region controls. Count receptions, make missing hours explicit, keep empty paths out of hash-width adoption, and distinguish TRACE/unclassified metadata. Flood path entries and remaining direct-route entries have different meanings; the page must describe header contents without claiming network distance, device capability or collision rates.
Reuse ECharts/themes/query cancellation and current responsive cards. Verify single-hour, long-window, no-hash, unknown/trace, empty, loading and error/retry cases on desktop/mobile. Keep this dependent on #55 with a focused feature diff, native Pi testing, a source/changelog entry, and no synthetic production data.
Add Paths & Hashes to Analytics: colorful hash-width share, received path-entry distribution, hourly hash-width trends and coverage-category charts, with exact accessible tables.
Use the bounded server
/stats/pathsaggregates and the existing 24h/7d/30d and region controls. Count receptions, make missing hours explicit, keep empty paths out of hash-width adoption, and distinguish TRACE/unclassified metadata. Flood path entries and remaining direct-route entries have different meanings; the page must describe header contents without claiming network distance, device capability or collision rates.Reuse ECharts/themes/query cancellation and current responsive cards. Verify single-hour, long-window, no-hash, unknown/trace, empty, loading and error/retry cases on desktop/mobile. Keep this dependent on #55 with a focused feature diff, native Pi testing, a source/changelog entry, and no synthetic production data.