Skip to content

Release Notes (v1.0.7)

Choose a tag to compare

@RaijuMounun RaijuMounun released this 08 Jul 14:12

What's New in v1.0.7

This release introduces the highly anticipated Traceroute feature, deeply integrated into the TUI with a robust, unprivileged-first architectural design and cross-platform parsing parity.

Features

Interactive Traceroute TUI Widget: Added a new plug-and-play widget to visualize network hops in real-time. Simply press t while on the Ping dashboard to trace the active target, and press Esc to instantly resume the ping engine.
Dedicated RAW Sockets (Linux): Migrated Traceroute from DGRAM to Type::RAW sockets. This bypasses Linux kernel restrictions that silently drop Type 11 (Time Exceeded) ICMP packets and mask identifiers, ensuring 100% accurate hop detection.
Unprivileged Ping Retained: Thanks to the "Dedicated RAW" architecture, the core Ping engine remains strictly unprivileged. Root (sudo) is only required when explicitly executing a Traceroute.

Resilience & Fail-Fast Mechanisms

"CoreEngine Never Dies" Principle: Resolved a critical UI freeze issue. Fatal socket errors (e.g., PermissionDenied when running Traceroute without sudo) are no longer swallowed as timeouts.
Graceful UI Error Recovery: If a privilege error occurs, the orchestrator gracefully halts the probe and displays a red Bento Grid ErrorWidget. The app does not crash; users can press Esc to dismiss the error and safely resume the Ping loop.

Under the Hood

Cross-Platform Parsing Parity: Implemented dynamic IPv4 Header Stripping based on Internet Header Length (IHL). This replaces the static byte offsets in the Windows implementation, unifying the ICMP packet parser across Linux and Windows.
Deep Telemetry Tracing: Injected aggressive tracing::debug! and tracing::warn! hooks deep within the ICMP payload decoding logic to aid in dropped-packet analysis and future network debugging.
Manual ICMP Checksums: Added custom ICMP checksum calculation logic specifically for RAW sockets since the OS no longer computes it automatically.

Full Changelog: v1.0.6...v1.0.7