Nova Proxy V3.8.3
🚀 Release Notes — v3.8.3
📅 Release Date: 2026-06-23
✨ Overview
Version 3.8.3 is a domestic-routing bugfix plus four refinements: a download speed limit, exit-datacenter flags on nodes, a faster panel, and a panel language-toggle fix. Drop-in worker.js replacement — no config, KV, or D1 changes, and nothing changes by default unless you turn the speed limit on. Includes everything from V3.8.2.
Upgrade path: drop-in replacement for
worker.js. Installs on 3.8.0+ see the update banner and can upgrade in one click from Settings → Update panel.
🐛 Fix — domestic .ir routing (was tunneled through the proxy)
A regression sent internal Iranian .ir sites through the tunnel instead of routing them direct. The domestic-bypass guard checked for an existing Iran rule with a substring test, and the word "direct" contains "ir", so for every config it concluded "already present" and never added the Iran-direct rule.
- Fixed in both generated formats: sing-box (Hiddify, sing-box/NekoBox, Karing) and Clash/mihomo (FlClash/Clash Meta).
- The inserted rule is now self-contained (
domain_suffix: .ir/DOMAIN-SUFFIX,ir) — no remote geosite/geoip rule-set to download, so it keeps working even whenraw.githubusercontent.comis blocked inside Iran. (The old code also referenced rule-sets it never defined.) - Make sure the Domestic bypass · ایرانمستقیم toggle is on; have users re-import / refresh after the worker is updated.
✨ New — download speed limit (per-user, off by default)
A token-bucket limiter caps each user's total download speed across all of their parallel connections — a fairness backstop so one user can't saturate the worker.
- Global: Settings → Network → Speed limit (KB/s);
0= unlimited. - Per-user: an optional limit on the Users page that overrides the global for that user.
- It's a real aggregate cap (a speed test opening many streams still totals the limit), enforced at the single download choke point.
- Download only by design. We control the read from the remote, so the download cap is exact and immediate. Upload can't be capped reliably — Cloudflare's WebSocket inbound can't be backpressured by the worker — so it's intentionally left unlimited.
✨ New — exit-datacenter flags on nodes
Generated nodes now show the flag of the Cloudflare datacenter you're exiting through — e.g. 🇩🇪 Nova-xxxxxx via Frankfurt, 🇦🇪 via Dubai. The colo comes from request.cf.colo, mapped through a built-in ~180-datacenter table; an unrecognized datacenter simply shows no flag (it never affects node generation). Because Cloudflare is anycast, all of a user's nodes share the same flag (their nearest exit), and it can change if Cloudflare reroutes.
✨ Improved — faster panel load
Dashboard HTML/JS/CSS are now edge-cached for all hosts (5-minute TTL) instead of being re-fetched from GitHub on every load. After the first warm-up load, the panel serves from Cloudflare's cache — no per-asset GitHub round-trip.
🐛 Fix — panel language toggle
The Speed limit and Monthly data cap cards were hardcoded bilingual; they now use the panel's data-i18n system, so the EN/FA toggle shows only the selected language.
📁 Worker Files
worker.js — single obfuscated Worker (string-array obfuscation, browser-no-eval) to help avoid Cloudflare Error 1101; cloudflare:sockets import preserved. public/version.json carries version 3.8.3.
📝 Deployment Notes
- Deploy
worker.js; publishversion.json(version3.8.3). - Panel repo: re-upload
admin/index.html+version.json(Speed-limit controls + language fix). - Publish/refresh the v3.8.3 GitHub Release with
worker.jsattached as a.jsasset (the website installer reads it). - No config/KV/D1 changes; all V3.0–3.8.2 functionality is retained.
یادداشت انتشار — نسخهٔ ۳.۸.۳
📅 تاریخ انتشار: ۱۴۰۵/۰۴/۰۲
✨ خلاصه
نسخهٔ ۳.۸.۳ یک رفع باگ مسیریابی داخلی بههمراه چهار بهبود است: محدودیت سرعت دانلود، نمایش پرچم دیتاسنترِ خروج روی نودها، بارگذاری سریعترِ پنل، و رفع سوییچ زبانِ پنل. جایگزین مستقیم worker.js — بدون تغییر config/KV/D1، و تا وقتی محدودیت سرعت را روشن نکنی هیچ رفتاری بهطور پیشفرض تغییر نمیکند. همهٔ امکانات ۳.۸.۲ حفظ شده است.
مسیر ارتقا: جایگزین مستقیم
worker.js. کاربران ۳.۸.۰ به بعد بنر بهروزرسانی را میبینند و با یک کلیک از تنظیمات ← بهروزرسانی پنل ارتقا میدهند.
🐛 رفع — مسیریابی داخلی .ir (که از داخل تونل رد میشد)
یک باگ باعث میشد سایتهای داخلی .ir بهجای مستقیم، از داخل تونل رد شوند. شرطِ «آیا قانون ایران از قبل هست؟» با یک تستِ زیررشتهای بود و واژهٔ direct شاملِ «ir» است — پس برای هر کانفیگ نتیجه میگرفت «از قبل هست» و قانونِ مستقیمِ ایران هیچوقت اضافه نمیشد.
- در هر دو فرمت خروجی رفع شد: sing-box (هیدیفای، sing-box/NekoBox، کارینگ) و Clash/mihomo.
- قانونِ افزودهشده حالا خودبسنده است (
domain_suffix: .ir/DOMAIN-SUFFIX,ir) — بدون نیاز به دانلودِ rule-set از راه دور، پس حتی وقتیraw.githubusercontent.comدر ایران مسدود است هم کار میکند. - مطمئن شو گزینهٔ ایرانمستقیم روشن است؛ بعد از بهروزرسانی ورکر، کاربران کانفیگ را دوباره ایمپورت/تازه کنند.
✨ جدید — محدودیت سرعت دانلود (هر کاربر، پیشفرض خاموش)
یک محدودگرِ token-bucket سرعت دانلودِ کلِ هر کاربر را در مجموع همهٔ اتصالهایش محدود میکند — یک سازوکار انصاف تا یک کاربر نتواند کل ورکر را اشغال کند.
- سراسری: تنظیمات ← شبکه ← محدودیت سرعت (KB/s)؛ مقدار
0یعنی نامحدود. - هر کاربر: یک محدودیت اختیاری در صفحهٔ کاربران که برای آن کاربر بر مقدار سراسری اولویت دارد.
- یک سقفِ واقعیِ تجمعی است (حتی اسپیدتست با چند اتصالِ موازی هم در مجموع به همان حد میرسد).
- فقط دانلود — بهصورت طراحیشده. خواندن از مقصد را ما کنترل میکنیم، پس سقفِ دانلود دقیق و آنی است. آپلود را نمیتوان بهطور قابلاتکا محدود کرد (ورودیِ WebSocket کلودفلر backpressure نمیپذیرد)، پس عمداً نامحدود است.
✨ جدید — پرچم دیتاسنترِ خروج روی نودها
نودهای تولیدشده حالا پرچمِ دیتاسنترِ کلودفلری که از آن خارج میشوی را نشان میدهند — مثلاً 🇩🇪 Nova-xxxxxx از فرانکفورت، 🇦🇪 از دبی. چون کلودفلر anycast است، همهٔ نودهای یک کاربر یک پرچم دارند (نزدیکترین خروج) و ممکن است با تغییر مسیر عوض شود. دیتاسنترِ ناشناخته بدون پرچم نمایش داده میشود.
✨ بهبود — بارگذاری سریعترِ پنل
فایلهای HTML/JS/CSS پنل اکنون در edge کش میشوند (۵ دقیقه) بهجای اینکه در هر بار از گیتهاب گرفته شوند. بعد از اولین بارگذاری، پنل از کشِ کلودفلر سرو میشود.
🐛 رفع — سوییچ زبانِ پنل
کارتهای محدودیت سرعت و سقف داده ماهانه دوزبانهٔ ثابت بودند؛ حالا از سیستم data-i18n پنل استفاده میکنند، پس سوییچ EN/FA فقط زبانِ انتخابشده را نشان میدهد.
📝 یادداشتهای استقرار
worker.jsرا دیپلوی کن؛version.json(نسخهٔ3.8.3) را منتشر کن.- ریپوی پنل:
admin/index.html+version.jsonرا دوباره بارگذاری کن. - ریلیزِ v3.8.3 گیتهاب را با ضمیمهٔ
worker.js(فایل.js) منتشر/بهروزرسانی کن (نصاب وبسایت آن را میخواند). - نیازی به تغییر config/KV/D1 نیست؛ همهٔ قابلیتهای ۳.۰ تا ۳.۸.۲ حفظ شده است.