v6.9.16
Deep Engineering Audit
12 correctness, reliability, and security fixes from an end-to-end audit.
Fixed
- Blocklist data loss on periodic refresh — when all sources returned HTTP 304 Not Modified, the blocklist was silently rebuilt with zero source domains, removing all ad/tracker blocking until the next non-304 update
- Regex rules missing from VPN rebuild — user regex block/allow rules were silently ignored at VPN start until the next background worker run
- Per-app DNS rule cache race — brief window during reload where all per-app DNS rules were dropped
- EDE JSON injection — block reasons with quotes/backslashes produced malformed JSON in Extended DNS Error responses
- VPN stability metrics lost on DB failure — dropped query and error counters were silently zeroed
- VPN restart coroutine leaks — recovery monitor and config observer accumulated on every network change
- DNS cache TTL overcapping — all upstream TTLs above 300s were silently capped to 5 minutes, causing excessive upstream queries
- Hourly chart timezone mismatch — blocked/total/latency charts showed UTC hours instead of local timezone
- Threat-intel domain swap race — brief false-negative window during feed refresh
- GeoIP cache unbounded growth — in-memory cache grew without limit for the VPN session lifetime
Security
- Added legacy
fullBackupContentrules for API 26-30 so cloud backup exclusions apply on Android 8-11 - Restricted FileProvider paths from entire directory trees to specific subdirectories
Build
- Removed dead ProGuard rules and overly broad Compose R8 keeps that prevented tree-shaking