• Fix v1.9.13 regression — کاربران v1.9.10 → v1.9.13 upgrade میکردن و حس میکردن کندتره (#773). علت: block_doh در Rust با #[serde(default)] برای فیلد bool به false resolve میشد (default trait از Rust)، نه true که PR #763 قصد داشت. کاربران existing با config.json بدون فیلد block_doh و tunnel_doh = true (default جدید از #468)، هر DNS lookup رو از مسیر Apps Script میفرستادن — ~۱.۵ ثانیه overhead هر page load. حالا block_doh با named-default function به true resolve میشه — مرورگر DoH reject میشه + system DNS via tun2proxy فوراً پاسخ میده + هیچ tunnel round-trip دیگه. کاربران power که عمداً DoH از تونل میخوان، میتونن block_doh: false صریح بگذارن. تست: 180 lib + 35 tunnel-node + UI release-mode build همه green.
• Fix v1.9.13 perceived-slowness regression on upgrade (#773): block_doh was using #[serde(default)] on a bool, which resolves to Rust's Default::default() = false rather than the true PR #763 intended. Existing configs upgrading from v1.9.10 had no block_doh field, so they got false paired with tunnel_doh = true (the new default from #468) — every browser DoH lookup got tunneled through Apps Script, adding ~1.5s overhead per page load. Now block_doh uses a named-default function that returns true — DoH is rejected at the SOCKS5 listener so the browser falls back to system DNS (instant, via tun2proxy's virtual DNS) and no tunnel round-trip happens. Power users who specifically want DoH-through-tunnel can opt back in with block_doh: false. Tests: 180 lib + 35 tunnel-node + UI release-mode build all green.
Full Changelog: v1.9.13...v1.9.14