# Intqual Release Notes (v1.0.8)
This release introduces massive performance and stability improvements by transitioning the network engine's core to a true asynchronous I/O architecture. Furthermore, it brings enterprise-grade enhancements to bandwidth testing and UI responsiveness.
🚀 New Features & Enhancements
- Bandwidth Engine Modernization: Replaced the custom raw TCP/TLS socket implementation with
reqwest(rustls-tls) for enhanced stability, better cross-platform support, and native HTTP connection pooling. - Zero-Copy Upload Stream: Implemented a zero-copy (
bytes::Bytes::from_static) approach during upload tests, eliminating the need to clone 2MB payloads into memory. This drastically reduces CPU overhead and memory footprint. - Time-Boxed Streaming: Transitioned from fixed-size file downloads to 10-second time-boxed continuous streaming, yielding highly accurate bandwidth saturation measurements.
- Real-Time UI Progress Tracking: Integrated an O(1) byte counter directly into the upload stream to provide smooth, real-time UI updates, eliminating chunky visual jumps.
- Enterprise Traceroute: Upgraded the traceroute algorithm to send 3 ICMP packets per TTL instead of one. The UI now calculates and displays the Average RTT (Round Trip Time).
- Mock Engine (Simulation Mode): Introduced a
--mockCLI flag and aMockEngineimplementation to generate simulated network data for isolated, offline UI testing.
🛠️ Architecture & Performance
- True Non-Blocking Async I/O (ICMP): Resolved OS-level thread blocking within ICMP sockets. Implemented
tokio::io::unix::AsyncFdfor zero-cost async polling on Unix platforms and added aspawn_blockingfallback for Windows to prevent Tokio event loop starvation. - Dependency Inversion (UI & Engine): Decoupled the UI from the network engine by introducing a
NetworkEnginetrait, heavily abstracting core probing operations. - UI Deadlock Resolution: Completely asynchronousized Crossterm's blocking keyboard read mechanism using
tokio::select!andEventStream. - Lock Optimization (RwLock): Replaced
MutexwithRwLockfor UI state management. This allows the UI to render concurrently while the network engine updates data in the background, significantly reducing FPS drops and eliminating rendering deadlocks.
🐛 Bug Fixes & UX Improvements
- Rate Limit & Ban Handling: Fixed crashes caused by network bans (e.g., Cloudflare HTTP 429). Added
ProbeError::RateLimitedand ensured engine workers execute a graceful shutdown. - Flash & Return Bug Fixed: The application no longer abruptly returns to the main screen upon bandwidth test failure (e.g., internet disconnection). The error screen now remains locked until explicitly dismissed by the user.
- Persistent Test Results: Restored the functionality where the last bandwidth speed test results persist on the main dashboard (
LatencyDashboardWidget) after returning from the test screen. - State Leak & Jitter Fixes: Cleared stale datasets when switching views and resolved a race condition in the Jitter deviation calculation.
🧹 Housekeeping & Chores
- Resolved project-wide
cargo clippywarnings by adopting idiomatic let-chains and collapsing redundant logic. - Added a
Makefileto standardize the local build workflow. - Updated
PKGBUILDfor Linux packaging.
Full Changelog: v1.0.7...v1.0.8