Changelog
Every feature, fix, and change across all Rockxy releases.
Unreleased
Next
Added
- •Documentation pages for Request Diff, JavaScript Scripting, and Sessions & HAR features
- •Entry points tables (menu paths, keyboard shortcuts) added to all feature documentation pages
- •Simplified single-group navigation structure in docs replacing the two-tab layout
- •Diff integration: select 2 transactions, right-click "Compare Selected" to open side-by-side diff window (Cmd+Option+D)
- •Session metadata dialog after opening a .rockxysession file showing transaction count, log entries, date range, and version
- •Scripting window empty state with capability list and "Create Your First Script" button
- •Script sidebar error visibility: plugins in error state show the error message inline
- •Script console surfaces load-time errors automatically
- •Specific error messages for script timeouts and JS exceptions with actionable hints
- •"Edit and Repeat" replay sheet: right-click splits "Repeat" (fast) from "Edit and Repeat" (editable sheet)
- •Unified rule management: Map Local, Map Remote, and Block List windows now route through RuleSyncService
- •Persistent direct-mode proxy backup survives crashes and force-quits
- •Launch-time stale proxy recovery: detects and restores leftover Rockxy proxy overrides on app launch
- •Ownership-aware proxy disable: detects whether proxy is owned by direct mode or helper
- •Response breakpoints: proxy pipeline intercepts upstream responses for user editing
- •Editable query parameters in breakpoint editor with add/remove buttons
- •"Add Breakpoint for Selected Request" command in Tools menu and toolbar dropdown
- •Breakpoints window (Cmd+Shift+B) with queue-backed BreakpointManager
- •Live bandwidth metering in footer: cumulative totals, instantaneous throughput via 1s sliding window
- •Helper tool unreachable status with XPC diagnostic properties and retry/reinstall actions
- •Advanced Proxy Settings helper section redesigned with 3-zone layout
- •RuleEngine converted to shared singleton actor for thread-safe rule evaluation
- •RuleSyncService centralizes all rule mutations with automatic disk persistence
- •Breakpoint window two-section sidebar showing both rules and paused items
Changed
- •Documentation license reference corrected from MIT to Apache 2.0
- •GraphQL documentation narrowed to "GraphQL-over-HTTP detection" to match actual scope
- •Request replay docs rewritten to reflect proxy-bypass session behavior
- •README roadmap split into Shipped and Planned sections
- •Root CA key type corrected from RSA 2048-bit to P-256 (ECDSA) in HTTPS docs
- •Import error dialogs now show specific titles and messages per failure type
- •Removed iOS Simulator Certificate step from Welcome screen
- •Privacy Settings rewritten with honest disclosure and "No Data Collected" badge
- •MCP Settings replaced with informational Labs Preview surface
- •Root CA private key storage is now Keychain-primary with automatic migration from disk PEM
Fixed
- •Replay requests now bypass the local proxy via shared proxyBypassSession, preventing infinite loops
- •Multi-selection in request list no longer collapses to single selection
- •Diff window refreshes when a new comparison is triggered while already open
- •Response headers now displayed in the replay sheet
- •SystemProxyWarningBanner now displays the actual warning message instead of hardcoded text
- •Response breakpoint edits now recorded in transaction
- •Stale pendingBreakpointPhase no longer leaks across requests
- •Context menu "Add Breakpoint" now routes through addRule() for JSON persistence
- •CertificateStore no longer writes plaintext PEM to disk after successful Keychain save
- •Import size-validation errors now show NSAlert instead of being silently logged
- •HTTP breakpoint port, Content-Length, body, URL, and scheme handling fixes
- •HTTPS breakpoint URL field now constrains editing to path and query only
- •XPC caller validation hardened with two-layer defense-in-depth
- •Map Local directory path containment bypass fixed
Earlier Development
Added
- •Quick search bar with field picker: search by URL, host, path, method, status code, headers, query, comment, or color
- •Active filter summary strip with removable chips and "Clear All" button
- •Filter operators: "Is Not" (notEqual) and "Regex" for advanced filter rules
- •Native .rockxysession format for saving and opening full debug sessions
- •HAR import (File → Import HAR) for Chrome DevTools, Firefox, and other tools
- •Allow List: capture-level filter restricting recording to specific domains
- •No Caching toggle: injects Cache-Control/Pragma headers to force fresh responses
- •Breakpoint end-to-end wiring: pauses HTTP and HTTPS requests in NIO pipeline
- •Multiple workspace tabs (Cmd+T new, Cmd+W close, Cmd+1-9 switch)
- •"Copy as" submenu: Headers, Body, Cookies, URL, cURL, JSON, HAR, Raw
- •Custom Previewer Tabs: JSON Treeview, HTML Preview, Hex, Raw, CSS, JavaScript, XML, Images
- •Custom Header Columns: add request/response header columns to flow table
- •Map Local Directory support with subpath resolution, index.html fallback, MIME detection
- •Sidebar right-click context menu (Pin, SSL Proxying, Sort, Tools, Export, Delete)
- •Bypass Proxy List window (Tools → Bypass Proxy List, Cmd+Opt+B)
- •Helper tool certificate trust management via XPC
- •Map Local rules: configurable status code, rule import/export to JSON
- •Right-click context menu: Copy URL/cURL/cell/JSON/HAR/raw, Repeat, Pin, Highlight, Tools, Export
- •Transaction highlight colors (red, orange, yellow, green, blue, purple)
- •User-Agent app identification from HTTP headers
- •Column auto-sizing with double-click column dividers
- •Process identification via lsof with 2-second batch caching
- •Real macOS app icons in sidebar and client column
- •JavaScript plugin ecosystem with JavaScriptCore, plugin manifests, filesystem discovery
- •$rockxy bridge API for JS plugins: logging, crypto, encoding, storage, environment
- •Plugin request hooks and read-only response hooks in proxy pipeline
- •Welcome/Getting Started window with live setup checklist
- •Map Local, Map Remote, Block List, SSL Proxying List, Diff, and Scripting windows
- •Rule Hub: grid layout with toggle/name/pattern/action/priority, search, presets, import/export
- •Engine status pills in toolbar showing Proxy/Logs/Plugins state
- •Enhanced status bar: request count, session timer, error count, selected request info
- •Privileged Helper Tool: SMAppService-based daemon for instant system proxy changes
- •SSL Proxying List: per-domain control over HTTPS interception
Changed
- •filteredTransactions converted from computed property to cached stored property
- •Batch timer interval increased from 100ms to 250ms for larger batches
- •Batch delivery decoupled from lsof: process resolution runs asynchronously
- •Incremental NSTableView updates: insertRows instead of full reloadData
- •O(1) domain tree lookup with dictionary-backed index
- •Process resolution moved off main thread to TrafficSessionManager actor
- •TLS failure transactions hidden from traffic list by default
- •Helper tool auto-updates on version mismatch
- •System proxy now configures all enabled network services
- •Helper tool XPC validation uses certificate chain comparison
Fixed
- •Proxy blocking all internet traffic: added 5-second connection timeouts and 30-second read timeouts
- •Leaked connections on failed TLS handshakes now properly closed
- •Lost HTTPS transactions when upstream server closes without TLS close_notify
- •Chrome ERR_CERT_AUTHORITY_INVALID: SHA-256 fingerprint-based root CA, clean stale duplicates
- •Removed keyEncipherment from ECDSA leaf cert (wrong for ECDHE, BoringSSL rejection)
- •Fail-closed trust validation at proxy start
- •Port conflict detection before proxy bind
- •Replaced 60-second connection lifetime cap with idle timeout (300s) that resets on data activity
- •TLS handshake race condition where both success and error handlers fire
- •XPC stale connection reuse after error or timeout
- •Auto-passthrough for strict TLS clients (ChatGPT, certificate-pinned apps)
- •Proxy blocking all internet traffic after ~5 minutes: fixed leaked NIO channels
- •App crash after ~40 minutes: added eviction observer for bufferEvictionRequested
- •Chrome privacy interstitial on first TLS rejection: downgrade to raw passthrough
- •RecentFailureTracker crash during high-volume TLS failures (UInt64 underflow race)
- •HTTPS MITM fatal crash: correct NIOSSLServerHandler pipeline placement
- •"Certificate not yet valid" errors: backdate notValidBefore by 2 days
- •CONNECT tunnel TLS handshake (WRONG_VERSION_NUMBER): forward-based ProtocolDetectorHandler
- •HTTPS interception TLS handshake: Content-Length: 0 on CONNECT 200 response
- •XPC continuation leak: flattened nested timeout/continuation into single scope
- •Helper tool version mismatch causing reinstall cycles
- •VPN/tunnel detection: warning banner when traffic may not be captured
- •Blank main window after welcome, frozen Start button, and numerous proxy startup fixes
- •Rule engine: mapRemote, modifyHeader, and throttle actions now properly forward requests
- •HTTPS proxy relay now evaluates rules (previously bypassed all rules)
- •Search field selection ignored: filtering always searched URL regardless of picker
- •"Save Session" menu item exporting HAR instead of native session format
- •Blank main window visible behind welcome screen on first launch
- •Path traversal protection for Map Local rules
- •Plugin reinstall from already-deleted bundle path
Security
- •Helper tool ConnectionValidator compares code signing certificate chains (immune to Info.plist tampering)
- •Port validation (1024-65535) on helper proxy override XPC calls
- •Rate limiting (2s cooldown) on proxy change XPC calls
- •TOCTOU vulnerability fix in CrashRecovery (try/catch instead of fileExists)
- •Restrictive file permissions (0o600) on proxy backup files
- •Rule import rejects files larger than 5 MB
- •Plugin install validates source directory and sanitizes names
- •Helper tool entitlements deny unsigned executable memory and dyld environment variables
For the full commit history, see the GitHub repository.