• کنترل مصرف quota برای حسابهای Apps Script (PR #1396 از @CaptainMirage): هر Deployment/حساب حالا داخل یک پنجره rolling 24h شمرده میشود، قبل از رسیدن به سقف با quota_safety_buffer از چرخش خارج میشود، و اگر همه حسابها خالی شوند کل relay بهجای fail شدن وسط session سریع 503 برمیگرداند. وضعیت در quota_state.json ذخیره میشود، بعد از restart باقی میماند، و UI دسکتاپ بخش Usage Today را با شمارنده fetchها، reset بعدی، حسابهای فعال، تخمین حجم، و بنر QUOTA HARD STOP نشان میدهد.
• iOS full-tunnel app scaffold (PR #1398 از @yyoyoian-pixel): سورس اپ iOS/NetworkExtension اضافه شد: leaf + FakeIP → SOCKS5 → mhrv-rs، ساخت staticlib با cargo rustc --crate-type staticlib، UI با چند Deployment ID، auth key show/hide، SNI pool editor و probe، import/share کانفیگ سازگار با Android، signing از Local.xcconfig، آیکن، و README مخصوص TestFlight. هنوز IPA رسمی داخل release CI منتشر نمیشود؛ این release سورس و مسیر build را وارد main میکند.
• جلوگیری از OOM در tunnel-node Full mode (PR #1401 از @yyoyoian-pixel): بافر downstream هر TCP session به 32 MiB محدود شد و reader وقتی client دیر drain میکند backpressure میگیرد. empty pollها دیگر session idle را زنده نگه نمیدارند، cleanup حالا همه taskهای session را abort میکند، و log دورهای تعداد sessionها و حجم read_buf را نشان میدهد. این همان مسیر OOM روی VPSهای کوچک هنگام ویدیو/download سریع و polling کند Apps Script بود.
• Apps Script account quota tracking (PR #1396 by @CaptainMirage): each Deployment/account is now tracked in a rolling 24h window, removed from rotation before the hard limit via quota_safety_buffer, and when every account is exhausted the relay returns a fast 503 instead of failing mid-session. State is persisted in quota_state.json across restarts, and the desktop UI now shows Usage Today with fetch counts, next reset, active accounts, data estimate, and a QUOTA HARD STOP banner.
• iOS full-tunnel app scaffold (PR #1398 by @yyoyoian-pixel): added the iOS/NetworkExtension app source: leaf + FakeIP → SOCKS5 → mhrv-rs, staticlib builds via cargo rustc --crate-type staticlib, multi-Deployment UI, auth-key show/hide, SNI pool editor and probe, Android-compatible config import/share, signing through Local.xcconfig, app icon, and a TestFlight-oriented README. The release CI does not publish an IPA yet; this release lands the source and build path on main.
• Prevent tunnel-node Full mode OOMs (PR #1401 by @yyoyoian-pixel): each TCP session's downstream buffer is capped at 32 MiB, and the reader applies backpressure when Apps Script polling drains slowly. Empty polls no longer keep idle sessions alive, cleanup aborts every task in a session, and periodic logs now expose session count plus total read_buf memory. This targets the VPS OOM path seen with fast upstream video/downloads and slow Apps Script polling.
What's Changed
- fix(tunnel-node): bound per-session memory to prevent OOM by @yyoyoian-pixel in #1401
- iOS: full-tunnel VPN app — UI parity, build fix, SNI pool by @yyoyoian-pixel in #1398
- feat(quota): per-account Apps Script quota tracking with hard-stop and UI display by @CaptainMirage in #1396
Full Changelog: v1.9.35...v1.9.36