Changelog
Every feature addition, improvement, and bug fix documented for full transparency.
cURL Import & SwiftNIO Migration
Full cURL command import with an in-process runtime, and a ground-up rewrite of the networking stack on SwiftNIO and AsyncHTTPClient.
- cURL command import with analyzer-driven execution and multi-transfer planning
- In-process curl runtime with mbedTLS-backed TLS and HTTP/2 via nghttp2
- Permission-aware import outcomes with local-network retry heuristics
- UDP PCAP analysis and hardened flow capture lifecycle
- Duplicate detection and editor diagnostics in the UI
- Capture cleanup actions and resilient auto-load fallback
- Migrated certificate handling to swift-certificates and compression to libzstd
- Request executor and networking rewritten on AsyncHTTPClient
- SOCKS5 and UDP forwarding migrated to NIO Transport Services
- MITM proxy internals rebuilt on NIO channel pipelines
- Removed legacy protocol parsers and curl runtime
- cURL parser handling of line continuations after quoted arguments
- Failed transfers no longer block cURL import completion
- Request duration now renders above size in list rows
- Input-specific keyboard types applied across all UI forms
- Zstd single-chunk streaming decode now flushes completed frames
- Captured bytes retained for truncated response bodies
- SOCKS5 UDP setup hardened with normalized full-tunnel config
- MITM CONNECT and streaming proxy pipeline stabilized
- PCAP writes batched to avoid duplicate full-tunnel capture
- Tunnel shutdown paths synchronized with tighter redirect handling
SOCKS5 Fallback & Widgets
Embedded local SOCKS5 fallback for environments without VPN tunneling, privacy-safe widget labels, and UX refinements across share sheets and toasts.
- Local SOCKS5 fallback embedded for environments where VPN tunneling is unavailable
- Privacy-safe widget labels with deep-link tab navigation
- Clear-all confirmation alerts across network and rule list views
- Notification permission prompt moved from onboarding to settings
- Body inspector extracted with cleaner action and view-model structure
- Share sheet presented directly to avoid blank host canvas
- Active session durations now tick correctly with clamped negative times
- Chunked and compressed SSE streams decoded with live snapshot persistence
- Stray menu dividers removed from rule list views
- Toast sized to content with centered text
IPv6, Widgets & Stability
IPv6 VPN capture, App Shortcuts and Control Center integration, settings reorganization, and a major stability pass across compression, PCAP, and concurrency.
- IPv6 support for VPN capture and VPN log export
- App Shortcuts and Siri intents for widget and Control Center integration
- Standardized empty states with primary actions across all list views
- DNS change notifications with optimized message handling
- Script execution timeouts and improved debugging output
- PCAP packet processing with granular error handling
- Settings reorganized into dedicated capture, rules, and security pages
- Accessibility and design consistency refined across all views
- Chunked body decoding and SSE handler state management rewritten
- Decompression errors unified with consolidated decoding paths
- Script execution counts and rewrite rule stats batched for performance
- Breakpoint resume race condition with hardened cURL import/export
- Validation and pattern matching edge cases tightened
- VPN tunnel lifecycle serialized to prevent duplicate concurrent starts
- Per-domain certificate storage and ClientHello parsing hardened
- Compression stream finalization with no-progress loop prevention
- Redirect loop prevention with bounded PCAP capture
- Big-endian PCAP support with overlapping TCP segment draining
- Filtered items now sort by timestamp
- Brotli and Deflate stream end validation
- Swift 6 strict concurrency compile errors resolved
Capture Controls
Advanced capture controls with persistent settings and a fix for unintended capture toggles during settings restore.
- Advanced capture controls with persistent settings
- Settings restore no longer triggers unintended capture toggles
Initial Release
The first public release of Trace. Device-wide HTTP(S) capture, TLS MITM inspection, real-time protocol debugging, and traffic modification—all on-device, all open source.
- Device-wide HTTP(S) capture via Network Extension packet tunnel
- TLS MITM inspection with on-device certificate authority and per-domain cert storage
- WebSocket frame inspection with real-time streaming view
- Server-Sent Events (SSE) debugging with event stream visualization
- Traffic rewrite rules with pattern matching for headers, URLs, and bodies
- Request builder for crafting and sending custom HTTP requests
- Host override mapping for redirecting traffic between environments
- PCAP export for Wireshark-compatible traffic analysis
- JavaScript scripting engine for custom request/response transformations
- Privacy-first architecture with zero telemetry and fully on-device processing
Follow development
Trace is developed in the open. Browse the source, track issues, and see every commit on GitHub.