ملاحظات إصدار Chute Mac

النسخة 1.1.5 (233)

ميزات جديدة:

  • إضافة تسلسل البروكسي: يمكن للسياسة أن تسمّي «Underlying Proxy» ‏(underlying-proxy) فتصل إلى خادمها عبره، ويمكن لمجموعة السياسات أن ترسل كل أعضائها عبر منبع واحد، ويفعل الإعداد الجديد «Front Proxy» تحت «General» ← «Advanced» ‏(global-underlying-proxy) الشيء نفسه لكل عقدة لا تحدّد منبعاً خاصاً بها. ويمكن تسلسل كل أنواع النقل عدا Tailscale: فالبروتوكولات القائمة على التدفق تمر داخل تدفق المنبع؛ و Hysteria2 و TUIC و MASQUE و XHTTP عبر HTTP/3 تمر عبر مرحّل UDP الخاص به في حزم ثابتة الحجم من 1280 بايت؛ وأنفاق WireGuard و AmneziaWG تمر عبره بـ MTU داخلي قدره 1280 بايت؛ وجلسات SSH و AnyTLS تُفتح فوقه — ويعرض محرّر السياسات هذا الحقل لكل واحد منها. أما التسلسل الذي يدور في حلقة، أو يتداخل لأكثر من 16 مستوى، أو يسمّي سياسة غير موجودة، فيُرفض ولا يُرسَل مباشرة أبداً
  • إضافة مجموعات الترحيل (relay، كما في Clash و mihomo): يُسلسَل الأعضاء بالترتيب الذي كُتبوا به — يُتصل بالأول مباشرة، ويُوصَل إلى كل عضو لاحق عبر الأعضاء الذين يسبقونه، ويتصل الأخير بالوجهة. ويعرض محرّر المجموعة النوع «Relay»، ويحفظ الأعضاء بهذا الترتيب، ويشترط عضوين على الأقل
  • إضافة المجموعات العشوائية (random، كما في Shadowrocket): يختار كل اتصال عضواً عشوائياً، ولا يُختار لـ UDP إلا من بين الأعضاء الذين يحملون UDP. ولأن المجموعة العشوائية ليس فيها اختيار يمكن تغييره، فهي لا تظهر في شريط القوائم ولا في تبويب «Proxies»، ويُبقيها محرّر المجموعة مجموعةً عشوائية
  • إضافة سلسلة البروكسي إلى نافذة تفاصيل الاتصال ووحدة تحكم الويب: تُذكر كل قفزة باسمها (Airport/HK-01 → Landing)، ويتضمّنها «Copy Details»، ويطابقها البحث في الاتصالات، ويسجّل تصدير HAR المسار
  • إضافة policy= إلى مزوّدي القواعد والبروكسي: تُنزَّل القائمة عبر تلك السياسة، وإذا كان اسم السياسة غير موجود فشل التنزيل بدلاً من أن يتم مباشرة. لا تملك محرّرات الـ Mac حقلاً لهذا الخيار بعد، لكن الحفظ يحتفظ به
  • إضافة UDP عبر TCP إلى محرّر Shadowsocks — udp-over-tcp، بالإصدار 1 أو 2 — فيُحمَل UDP الخاص بالبروكسي داخل اتصالات TCP الخاصة به، ويعمل حتى عبر سلسلة لا يحمل منبعها UDP
  • إضافة UDP إلى VMess و VLESS: كان UDP المرسَل إلى أيٍّ منهما يُرفض من الأساس (إذ كان يخضع لـ udp-policy-not-supported-behaviour، وقيمته الافتراضية REJECT)؛ أما الآن فينتقل عبر اتصال واحد لكل وجهة، كما في mihomo و sing-box و Shadowrocket
  • إضافة jq إلى إعادة كتابة الجسم: يشغّل http-request-jq و http-response-jq برنامج jq حقيقياً على جسم JSON، ويعرض المحرّر النوعين «Request jq» و«Response jq» مع حقل «JQ Program»؛ ويُبلَّغ عن البرنامج غير الصالح وتُتخطّى قاعدته، أما الجسم الذي ليس JSON، أو البرنامج الذي يفشل، أو الخرج الفارغ، فكلها تترك الجسم دون تغيير
  • إضافة السكريبتات العامة: لا مُشغّل تلقائياً لسكريبت type=generic، فلا يعمل إلا عند الطلب — من زر «Run» في محرّر السكريبت، أو عبر GET /api/scripts و POST /api/scripts/run. ويُضاف إلى محرّر السكريبت أيضاً حقل «Event Name»: تتلقى سكريبتات الأحداث network-changed و engine-started و profile-reloaded، أما السكريبت الذي يسمّي أي حدث آخر فيُنوَّه به في السجل ولا يعمل أبداً
  • إضافة مجموعات DNS مخصّصة: يحلّ direct-dns-server النطاقات التي ترسلها قاعدة إلى DIRECT، ويحلّ proxy-dns-server أسماء خوادم البروكسي نفسها، ويُسأل fallback-dns-server حين لا تعطي الخوادم الرئيسية جواباً؛ وكلٌّ منها يرجع إلى الخوادم العامة، ولكلٍّ منها حقل في إعدادات DNS
  • إضافة #proxy / #proxy=<policy> إلى منابع DNS، بما فيها DoQ و DoH3: فيمر مُحلِّل QUIC عبر مرحّل UDP الخاص بالسياسة، والسياسة التي لا تستطيع نقل UDP تتخطى ذلك الخادم بدلاً من سؤاله مباشرة، والمُحلِّل العادي المرسل عبر سياسة يتحول إلى DNS عبر TCP، وتُقبل منابع tcp:// العادية للمسارات التي تُسقط DNS عبر UDP
  • إضافة encrypted-dns-follow-outbound-mode و allow-dns-svcb — إذ يُجاب عن استعلامات HTTPS و SVCB بجواب فارغ ما لم يكن مفعّلاً — والخيارات الخاصة بكل خادم #h3 و #skip-cert-verify و #disable-ipv4 و #disable-ipv6 و #disable-qtype=
  • إضافة المزيد إلى تعيين DNS المحلي (Local DNS Mapping): يحتفظ مدخل [Host] بكل الخوادم التي يذكرها ويستعلم منها بالتوازي، ويربط النطاق الواحد بعدة عناوين، ويمكن أن يكون مفتاحه مجموعة قواعد (RULE-SET:<url>)، ويشغّل سكريبت type=dns لذلك النطاق (script:<name>)، ويقبل ssid:<name> لربط خاص بكل شبكة؛ ويربط المحرّر سكريبتاً بالمدخل ويحتفظ بكل عناوينه وخوادمه
  • إضافة «Read system hosts file» تحت «General» ‏(read-etc-hosts، المستورد من use-system-hosts في mihomo): يجيب DNS الخاص بـ Chute عن الأسماء الموجودة في /etc/hosts
  • إضافة إشعارات القواعد: تقبل أي قاعدة، بما فيها FINAL، الخيارين notification-text= و notification-interval=، فترسل إشعاراً حين تطابق، مرة واحدة على الأكثر في كل فترة لكل قاعدة؛ ويضبط محرّر القواعد كليهما، وتتبع الإشعارات مفتاح الإشعارات في Chute
  • إضافة FINAL,<policy>,dns-failed: حين يتعذّر حلّ اسمٍ، يُفتح الاتصال عبر سياسة FINAL مع الحلّ عن بُعد بدلاً من إغلاقه؛ ويعرضه محرّر القواعد
  • إضافة عائلة REJECT كسياسات حقيقية — ‏REJECT-DROP و REJECT-NO-DROP و REJECT-TINYGIF و REJECT-IMG و REJECT-DICT و REJECT-ARRAY و REJECT-200 و REJECT-VIDEO — يجيب كلٌّ منها عن طلب HTTP بالجسم الموثّق له، ويُرقّى المضيف الذي رُفض أكثر من 50 مرة خلال 30 ثانية إلى REJECT-DROP؛ وتسردها قائمة السياسات في محرّر القواعد، ومعها PROXY
  • إضافة مجموعات القواعد المضمّنة: يُشار إلى أقسام [Ruleset Name] بـ RULE-SET,<name>، بما في ذلك إشارة بعضها إلى بعض — بعمق يصل إلى ثمانية مستويات، مع رفض الحلقات
  • إضافة عائلة SSID: تنطبق تجاوزات DNS في [SSID Setting] على كل شبكة على حدة — الأسماء، و BSSID:، و TYPE:WIFI / CELLULAR / WIRED (أي Ethernet على الـ Mac)، و ROUTER:، والأسماء بين علامتي اقتباس والأسماء ذات أحرف البدل — وتمسح ذاكرة المُحلِّل السابق المؤقتة عند تغيّر الشبكة؛ وتختار مجموعتا السياسات ssid و subnet أعضاءهما وفق الشبكة الحالية، وتطابقها قواعد SUBNET. وصار suspend=true يسري على الـ Mac: فعلى تلك الشبكة يرفع Chute بروكسي النظام ويفصل الوضع المحسن، ويذكر شريط القوائم ذلك، ويُعلم إشعارٌ بكلا الانتقالين، وتبديل البروكسي يدوياً ينهي التعليق. ويُضاف إلى محرّرَي المجموعة و [SSID Setting] قائمة «Match by» ‏(SSID و BSSID و TYPE و ROUTER)، ويحفظان المدخلات بالترتيب الذي كُتبت به، ويعرضان تجاوز DNS لكل مدخل. وصارت تغيّرات الشبكة تصل إلى المحرك لحظة وقوعها بدلاً من دورة كل 60 ثانية، ويطلب Chute إذن الموقع مرة واحدة حين يسمّي الإعداد شبكة Wi-Fi، وهو ما يشترطه macOS 14 وما بعده قبل الكشف عن اسم الشبكة
  • إضافة نطاقات ومقارنات DEST-PORT و SRC-PORT و IN-PORT (80-81 و >=50000 وقوائم /)، وقيم HOSTNAME-TYPE ‏IPv4 و IPv6 و DOMAIN و SIMPLE، وقاعدتَي IN-TYPE و IN-USER العاملتين، اللتين تطابقان الآن حركة المرور الفعلية بدلاً من التشغيل التجريبي فقط
  • إضافة عناصر تحكم MitM: فك تشفير HTTP/2 (h2)، وحجب QUIC عن المضيفين الذين يُفك تشفيرهم كي لا يلتفّ HTTP/3 على فك التشفير (auto-quic-block)، واستثناء مضيفين من فك التشفير، ومطابقة كلمات Host List المفتاحية <ipv4-address> و <ipv6-address> و <simple-hostname>؛ والثلاثة الأولى موجودة في إعدادات MitM
  • إضافة توجيه QUIC حسب النطاق في الوضع المحسن: حين يكون استكشاف البروتوكول مفعّلاً، يُقرأ الاسم من QUIC Initial الخاص بالعميل، ويُعاد تجميع ClientHello المقسّم على عدة Initials، ويُحتجز التدفق حتى يُعرف الاسم، فتوجّه قواعد DOMAIN اتصالات HTTP/3 المنشأة إلى عنوان مجرّد
  • إضافة icmp-auto-reply، مفعّل افتراضياً: في الوضع المحسن يُردّ على ping محلياً، عبر IPv4 و IPv6، بدلاً من أن تنتهي مهلته
  • إضافة دعم أوسع للاستيراد: تتوسّع قواعد GEOSITE وقواعد GEOIP الفئوية في mihomo إلى مجموعات قواعد تعمل، وتُوجَّه مزوّدات .mrs و .srs إلى قوائم المصدر المنشورة الخاصة بها، وتُنشئ مجموعات policy-path مزوّداً مع update-interval والمرشّحات وقوائم التضمين، ويتوسّع SUB-RULE في mihomo إلى قواعد AND، ويُستورد detour في sing-box و dialer-proxy في mihomo على أنهما تسلسل، ويُصرَّف allowed-ips في WireGuard ويُطبَّق فعلاً — ويُضاف إلى محرّر WireGuard حقل «Allowed IPs» — فلم يعد النفق المنقسم يبتلع كل الوجهات
  • إضافة توجيهات إعدادات وأنواع نقل: يجلب #!include و include = ملفات أخرى، ويقصر #!MACOS-ONLY و #!IOS-ONLY و #!TVOS-ONLY الأسطر على منصة واحدة، ويبقى كلاهما بعد الحفظ؛ ويكتسب Shadowsocks نقل WebSocket الخاص بـ v2ray-plugin؛ ويُحوَّل معرّف VLESS أو VMess الذي ليس UUID إلى UUID عبر UUIDv5، كما يفعل Xray و mihomo، بدلاً من إيقاف المحرك
  • إضافة «Egress Interface» و«Allow Other Interface» إلى محرّر السياسات (interface= و allow-other-interface=)، لتثبيت اتصالات TCP الخاصة بالسياسة على واجهة شبكة واحدة. ويسري ذلك مع network-framework = false؛ أما تحت Network.framework، وهو الافتراضي في macOS، فلا يُطبَّق بعد
  • إضافة دعم أوسع في واجهة السكريبت: يستدعي $httpAPI مسارات المحرك نفسه دون فتح مقبس، ويحترم $httpClient الخيار policy، ويذكر $event.name الحدث الذي وقع فعلاً
  • إضافة خيارات لإعادة الكتابة: يقبل Map Local الخيارات data-type و status-code والترويسات، ويكتسب Header Rewrite الخيار header-replace-regex، ويكتسب URL Rewrite الخيارين reject-array و reject-tinygif، ويمكن لسطر Body Rewrite واحد أن يحمل عدة أزواج من التعبير النمطي والاستبدال؛ وتعرض المحرّرات الأنواع والحقول الجديدة
  • إضافة «Open Web Console» (فتح وحدة تحكم الويب) و«Copy Web Console Token» (نسخ رمز وحدة تحكم الويب) إلى شريط القوائم، ويظهران حين يقدّم الإعداد وحدة التحكم: يسجّل «Open Web Console» الدخول بالرمز، و«Copy Web Console Token» مخصّص لمتصفح على جهاز آخر، ويذكر العنصر المعطّل السبب حين لا يعمل المستمع أو يكون external-http-ui معطّلاً. وتكتسب وحدة التحكم تبويبي «الحالية» و«السجل»، وعرض فحص (القاعدة المطابِقة، ومصدر القاعدة، والسياسة، والمحوّل، ومصدر DNS، والعملية، وسبب الإغلاق، وجسما الطلب والاستجابة)، وصفحة قواعد تبيّن أي قواعد إعادة كتابة انطلقت، وصفحة تشخيص، وقائمة بمجموعات القواعد التي فشل تحميلها؛ وأصبحت وحدة التحكم مكتملة بجميع اللغات التسع
  • إضافة نقاط نهاية إلى HTTP Control API: ‏/api/health و /api/events و /api/tailscale والمسابر تحت /api/diagnostics/ و /api/connections/export?format=har و /api/diagnostics/bundle و /api/scripts، وإدارة قواعد إعادة الكتابة ومضيفي MitM تحت /api/rewrites و /api/mitm/hosts، و POST /api/rules/match لتجربة طلب على جدول القواعد دون تنفيذ، و GET|PUT /api/loglevel لتغيير مستوى السجل دون إعادة تحميل، و POST /api/config/validate لفحص ملف إعداد دون تطبيقه
  • إضافة «Save Diagnostic Bundle…» (حفظ حزمة التشخيص…) إلى شريط القوائم: أرشيف منقّح يضم الإعداد، والصحة، وأحداث هذا التشغيل، والقواعد والسياسات المحمَّلة، و DNS، وحركة المرور، وشرائح السجل، يُبنى داخل Chute دون واجهة التحكم — ويُعرض كذلك بعد توقف Chute، حين تكون سجلات التشغيل الأخير هي ما تحتاج إليه
  • إضافة تصدير HAR، يبنيه المحرك من الإطارات المسجَّلة: فتكون رموز الحالة والطوابع الزمنية والتوقيتات حقيقية، ويحمل كل إدخال تحت _kl السياسة المختارة والقاعدة المطابِقة وإصابات إعادة الكتابة؛ وهو متاح في وحدة تحكم الويب وعلى /api/connections/export?format=har
  • إضافة نسب إعادة الكتابة إلى نافذة تفاصيل الاتصال: تذكر أول قاعدة URL Rewrite أو Header Rewrite أو Body Rewrite أو Mock Response غيّرت الطلب، وعدد القواعد التي انطلقت، ويتضمّنها كلها «Copy Details»، ويفتح زر «Requests & History» (الطلبات والسجل) وحدة تحكم الويب لعرض الأجسام والاتصالات المغلقة
  • إضافة إشعار «Network Address Changed» (تغيّر عنوان الشبكة) بدلاً من «Exit IP Changed»: يعرض عنواني IPv4 و IPv6 الخاصين بهذا الـ Mac، سطراً لكل عائلة، ويميّز IPv4 الواقع خلف NAT؛ ولا يكلّف سوى IPv4 خلف NAT طلب STUN واحداً
  • إضافة إشعار «Network Not Carrying Traffic» (الشبكة لا تنقل حركة المرور)، بمفتاح خاص به مفعّل افتراضياً: يبلّغ عن وصلة تقبل الاتصالات لكنها لا تنقل أي بيانات، ويبقى صامتاً ما دام macOS نفسه يبلّغ أن الشبكة غير قابلة للوصول
  • إضافة الفرنسية لغةً مدمجة، وعلمٍ بجانب كل لغة في قائمة اللغات

تحسينات:

  • لم يعد HTTP Control API يُخدَّم مفتوحاً حين لا يسمّي الإعداد external-http-secret: يولّد المحرك رمزاً ينسخه شريط القوائم؛ ولا يُبقي external-http-secret = none الوصول المجهول إلا على عنوان loopback، ولم يعد عنوان الاستماع بحرف البدل يُعامل على أنه loopback
  • أصبحت مطابقة القواعد أسرع بكثير على القوائم الكبيرة: يُطابَق جدول القواعد المكوَّن من قواعد نطاقات فقط عبر خطة مجزّأة، وتُفهرس حمولات RULE-SET و DOMAIN-SET غير المحمَّلة مسبقاً عند التنزيل بدلاً من قراءتها لكل اتصال
  • تُطابَق تدفقات UDP مرة واحدة: يُحفظ قرار التدفق 60 ثانية، فتتخطى مخططات البيانات اللاحقة مروري المطابقة واستعلام DNS بينهما
  • تعافٍ أفضل بعد تغيّر الشبكة: الأنفاق التي لم يعد عنوان مصدرها إلى الخادم موجوداً على أي واجهة تُغلق بدلاً من تعليق التطبيقات حتى مهلة الخمول
  • تُنزَّل مزوّدات القواعد واحداً تلو الآخر بدلاً من أن تُرفض حين تمتلئ قائمة انتظار التنزيل، وصار تحويلها يستهلك ذاكرة أقل بكثير
  • تُكتب السجلات في شرائح بحجم 8 MB (حتى ثماني شرائح لكل تشغيل، وتُحذف الأقدم)، وتبدأ كل شريحة بترويسة تسمّي التشغيل، ويتابع تبويب «Log» كل الشرائح بالترتيب؛ ويسجّل المحرك أيضاً ما إذا كان التشغيل السابق قد توقف بسلام أم قُتل — في ترويسة السجل و /api/status وحزمة التشخيص — وعند loglevel = info، يسجّل التدفق الضخم الذي نقل 1 MiB على الأقل سطراً واحداً عند الإغلاق يبيّن أين انتظر
  • أصبح كل محرّر منظَّم يحتفظ بما لا يعرضه: تحتفظ مجموعات السياسات بمزوّداتها و policy-path و include-* والمرشّحات والمعاملات غير المعروفة، وتترك url= / timeout= ذوي القيمة الافتراضية فارغين كي تتبع المجموعة proxy-test-url / test-timeout؛ وتحتفظ القواعد ببقية خياراتها؛ ويحتفظ مدخل [Host] بكل عناوينه؛ ويحتفظ سطر Body Rewrite بأزواجه اللاحقة؛ وتحتفظ السكريبتات بالمفاتيح التي لا يعرضها النموذج؛ وتحتفظ أقسام WireGuard و AmneziaWG بمفاتيحها، بما فيها معاملات التمويه في AmneziaWG — فلم يعد فتح الإعداد وحفظه يعيد كتابته
  • صار «Effective Rules» يعرض الجدول الذي يمر عليه المطابِق فعلاً — القواعد المقدَّمة، والوحدات، وملف الإعدادات، و FINAL — وصار «Test Rule» يشغّل التشغيل التجريبي في المحرك بدلاً من القراءة من ذاكرة مؤقتة
  • لم يعد استيراد ملف تعريف منشور يُضيّع التوجيه: يُحكم على الصيغة بما يقدّمه العنوان فعلاً، فيُحوَّل اشتراك .conf يقدّم إعدادات Clash؛ ويقبل dns-server روابط DNS المشفّر، وتقبل أسطر المستمعين كلمة مرور، ويبقى أعضاء المجموعات المكتوبون بين علامتي اقتباس، ويُسقَط أعضاء PASS بدلاً من أن يصبحوا REJECT، ويكتفي البروتوكول أو نوع المجموعة غير المدعوم بتحذير بدلاً من أن يُسقط مجموعته؛ ويُحفظ ملف التعريف المحوَّل بامتداد .conf، ويُضاف رقم إلى الاسم المستخدم مسبقاً
  • تستخدم اختبارات زمن الاستجابة الهدف الصحيح: يُؤخذ في الحسبان كلٌّ من test-url و test-timeout الخاصين بالمجموعة، و proxy-test-url في الملف، و test-url و expected-status الخاصين بالعضو، وتُختبر العقدة المسلسَلة عبر سلسلتها بدلاً من اختبارها مباشرة
  • تبقى مجموعات السياسات المخفية خارج شريط القوائم وتبويب «Proxies» ما لم تكن قيد الاستخدام؛ وحين توجّه واجهة التحكم وضع Global إلى مجموعة select، يسردها شريط القوائم ويضع عليها علامة الاختيار؛ وإعادة تحميل ملف الإعدادات تُسقط القواعد التي أُضيفت أثناء التشغيل من وحدة تحكم الويب
  • أصبح ShadowTLS يتحقق من شهادة موقع التغطية حين يُكتب sni=، كما يفعل sing-box؛ ويوقف skip-cert-verify=true هذا التحقق، ومن دون sni= يُتخطّى التحقق مع تحذير
  • صار PROCESS-NAME المكتوب كمسار يطابق ذلك المسار أو بادئة الحزمة، كما يسمح دليل Surge، وصارت قاعدتا PROCESS-NAME-WILDCARD و PROCESS-PATH-WILDCARD في mihomo تُستوردان بدلاً من إسقاطهما
  • لم تعد عمليات الرفع الكبيرة عبر اتصالات Network.framework تُبقي بياناتها في الذاكرة حتى يتفرّغ الخيط الرئيسي لتحريرها
  • صار مربع الاختيار «Allow Wi-Fi Access» يوضّح ما يفعله — يقبل مستمعا البروكسي المحليان الاتصالات على كل الواجهات ما دام مفعّلاً — وتعرض حقول الواجهة 0.0.0.0 في أثناء ذلك، مع الاحتفاظ بعناوينك لحين تعطيله
  • صارت تنبيهات الوضع المحسن تصف ما يفعله المحرك فعلاً: يضبط Chute تجاوز DNS بنفسه ويستعيده عند الإيقاف، ويُرحَّل UDP عبر السياسة المطابِقة، ويتلقى ping رداً محلياً
  • تحديث أداة التحديث المدمجة إلى Sparkle 2.9.6، التي تتضمن إصلاحات الأمان في الإصدار 2.x؛ وصار الفحص عند التشغيل لا يجري إلا حين يكون الفحص التلقائي للتحديثات مفعّلاً
  • لم تعد اليابانية والكورية والألمانية والتايلاندية والروسية تعرض نحو 850 نصاً بالإنجليزية، وصار طلب الموافقة على امتداد الشبكة مترجماً بدلاً من عرض نص مؤقت، وتستخدم كل لغة مصطلحات تطبيق iOS وهذا الدليل

إصلاحات الأخطاء:

  • إصلاح انعدام أثر «VIF Included Routes» ‏(tun-included-routes): صارت نطاقات CIDR المدرجة تنضم إلى مسارات النفق مع نوعَي الوضع المحسن كليهما، Helper utun و PacketTunnel، فالنطاق الذي كانت ستستحوذ عليه الشبكة الفرعية للواجهة الفعلية نفسها أو شبكة VPN أخرى يمر عبر Chute. وتُرفض المدخلات التي من شأنها قطع النفق — loopback، والشبكات الفرعية الخاصة بالنفق نفسه، و link-local، و multicast، و broadcast، والبوابة الافتراضية الحالية، وطول بادئة 0 — وتُسجَّل، وتُقبل النطاقات الخاصة مع تحذير. وقد حُدِّث المساعد ذو الامتيازات لهذا الغرض، فيطلب macOS الموافقة عليه مرة واحدة
  • إصلاح MitM في الوضع المحسن: كان المضيف المطابِق لقاعدة MitM يتوقف حتى انتهاء المهلة، فلم تسرِ قط على حركة مرور التطبيقات عمليات إعادة الكتابة في HTTPS والاستجابة الوهمية والالتقاط المفكوك التشفير؛ وكان الطلب أو الاستجابة المفكوك التشفير الأكبر من 64 KB يتعلّق، حتى عبر بروكسي النظام
  • إصلاح allow-wifi-access الذي لم يكن له أثر: ظل مستمعا HTTP و SOCKS5 المحليان على loopback فلم يتمكن أي جهاز على الشبكة من الوصول إليهما؛ أصبح الخيار الآن (و allow-lan في sing-box عند الاستيراد) يوسّع المستمعين، وتعطيله يعيد ربطهما
  • إصلاح إعادة الكتابة: كانت إعادة كتابة ترويسة الاستجابة عبر MitM HTTP/1.1 تُسجَّل على أنها طُبّقت بينما يتلقى العميل الترويسة الأصلية، وعبر HTTP العادي كانت تطابق المسار فقط، فلم يكن النمط المكتوب للرابط الكامل يطابق أبداً؛ وكان Mock Response يبني ردّه من ترويسة الطلب؛ وكان status-code= في Map Local يُتجاهَل عبر HTTP/2؛ وكانت استجابات HTTP/1.1 المعاد تسلسلها تخرج بعبارة سبب فارغة
  • إصلاح مطابقة القواعد: كانت قواعد IP ذات no-resolve تتخطى الاتصال بعنوان IP حرفي متى زوّده الاستكشاف باسم؛ وكانت أسطر حمولة RULE-SET التي تحمل خيارات بعد المحتوى تُسقَط؛ وكان RULE-SET,<name>,<policy>,no-resolve يفقد no-resolve؛ ولم يكن HOSTNAME-TYPE يطابق أبداً؛ وكانت نتيجة RULE-SET و DOMAIN-SET داخل AND / OR / NOT دائماً false، ونتيجة SCRIPT دائماً true؛ ولم يكن UNKNOWN في GEOIP و IP-ASN يطابق أبداً؛ وكان النطاق الموجَّه إلى بروكسي بقاعدة منطقية يُحلّ فعلياً مع ذلك؛ وكان عنوان IPv6 الحرفي بين قوسين معقوفين في ترويسة Host يُقرأ على أنه اسم مضيف
  • إصلاح PROTOCOL,TCP و PROTOCOL,UDP اللذين لم يكونا يطابقان أبداً، فصارت الطريقة المعتادة لحجب QUIC بقاعدة AND تعمل؛ وصار PROTOCOL,HTTP يطابق أيضاً الطلبات العادية عبر بروكسي HTTP المحلي، وهو الطريق الذي تصل منه حركة مرور بروكسي النظام
  • إصلاح block-quic الذي كان يقبل واحدة فقط من قيم Surge، إذ كانت كل قيمة أخرى تعني عدم حجب QUIC إطلاقاً
  • إصلاح قواعد IP-ASN التي لم تكن تعمل أبداً: كانت قواعد بيانات GeoLite2 في ~/Chute/Content تُتجاهَل، ولم يكن Chute يأتي بقاعدة بيانات ASN خاصة به؛ وصار يأتي بواحدة الآن
  • إصلاح تحويل أسطر PROCESS-NAME و PROCESS-PATH داخل مجموعة قواعد إلى أحرف صغيرة، فلم تكن القاعدة التي تسمّي Chrome تطابق أبداً
  • إصلاح بدء Chute ومجموعة select مضبوطة على عضو غير الأول، ما كان ينشر إشعار «تبدّلت مجموعة السياسات»، وإعادات البناء اللاحقة التي كانت تطلق تحذير التذبذب؛ والمجموعة التي لا اختيار محفوظاً لها تتبع الآن default= في ملف الإعدادات
  • إصلاح واجهة السكريبت: لم تعد $klne.getPolicyGroups() و selectPolicy() تُطلقان استثناءً في أول استخدام لهما، وصار reloadConfiguration() يعيد التحميل فعلاً، و getActiveConnections() يذكر المضيف والمنفذ والمعرّف الحقيقية، و closeConnection() يغلق الاتصال، و startURLTest() يبدأ اختباراً، وصار سكريبت ما قبل الإرسال الذي يحمل requires-body يتلقى الجسم
  • إصلاح [Replica] hide-crashlytics-request الذي كان يُحلَّل ولا يُطبَّق قط، و keyword-filter الذي كان يقارن اسم المضيف كاملاً بدلاً من التحقق من احتوائه على الكلمة المفتاحية، ورفض external-http-controller = *:9090 و :::9090، و optimistic-dns = false الذي كان لا يزال يقدّم سجلات منتهية الصلاحية
  • إصلاح انهيار XHTTP تحت الحمل وتوقّفه بعد أول عملية كتابة، فلم تكن مصافحة TLS عبره تكتمل أبداً، وإصلاح حشو stream-up الخاص به عبر HTTP/1.1
  • إصلاح إسقاط Hysteria2 أي مخطط بيانات UDP أكبر من أن يتسع له إطار QUIC DATAGRAM واحد، ما كان يعيد HTTP/3 الخاص بالتطبيق إلى TCP، وانهيار مجموعة url-test التي تضم عضواً من Hysteria2
  • إصلاح إعادة استخدام الوضع المحسن بعد إعادة تشغيله أولَ منفذ محلي وأرقامَ تسلسل TCP من التشغيل السابق، فكان قرين WireGuard الذي لا يزال يحتفظ بالاتصال القديم يردّ عليها بإعادة ضبط الاتصال
  • إصلاح انهيار WireGuard حين يُشغَّل من موضعين في آن واحد، وفقدان Shadowsocks 2022 نهاية الاستجابة، وتوقّف SSH مدة 30 ثانية وإشغاله نواة معالج كاملة وهو خامل، وتمرير اتصالات REALITY / uTLS تنزيلاً معطوباً بعد سجل تالف بدلاً من الإغلاق
  • إصلاح Tailscale: على Mac له واجهتان على الشبكة نفسها، لم تكن المصافحة التي يُردّ عليها من العنوان الآخر تكتمل أبداً، وكانت الاتصالات تتعلّق بعد توقف Tailscale
  • إصلاح بقاء المستمعَين المحليين متوقفين بعد إعادة التحميل — وصار المستمع الذي يتوقف على نحو غير متوقع يُعاد تشغيله — وعدم ردّ بروكسي HTTP على الطلب غير المصادَق بـ 407 و Proxy-Authenticate، وحالة جمود في XTLS القديم، وتجاهل وسائل نقل WebSocket لإطارَي Ping و Close
  • إصلاح انهيار عند بدء المحرك على macOS 10.15
  • إصلاح قطع قيم السكريبت التي تحتوي على فواصل — مثل جدول cron كـ 0 8,20 * * * أو وسيط JSON — عند أول فاصلة حين تُحفظ من محرّر السكريبت، وحفظ أعضاء مجموعات السياسات الذين تحتوي أسماؤهم على مسافة أو فاصلة دون علامتي اقتباس
  • تحسينات متنوعة في الاستقرار والأداء

النسخة 1.1.3 (230)

ميزات جديدة:

  • إضافة مساعد الإعداد: يأخذك التشغيل الأول من لا شيء إلى إعداد يعمل فعلاً — استيراد اشتراك أو رابط مشاركة، أو إدخال بيانات خادم يدوياً، أو الإشارة إلى ملف إعدادات تملكه بالفعل — ثم يثبّت المساعد ذا الامتيازات، ويطبّق طريقة تمرير الحركة التي اخترتها، ويتحقق من الاتصال قبل الإنهاء. ويمكن فتحه مجدداً في أي وقت من القائمة
  • إضافة استيراد روابط المشاركة (vmess:// وss:// وssr:// وtrojan:// وvless:// وhysteria2:// وshadowtls://): تُحوَّل الروابط محلياً، ويُقبل كذلك اشتراك يعيد قائمة من روابط المشاركة، بما فيها القوائم المغلّفة بـ base64
  • إضافة اكتشاف الحافظة في نافذة الاستيراد: يُعرض الرابط الموجود في الحافظة خلف زر «استخدام» بدلاً من ملء الحقل بصمت
  • إضافة مخطط الروابط chute://، بحيث يفتح رابط الاستيراد الموجود في صفحة ويب داخل Chute؛ ويُفحص شكل العنوان ويُطلب تأكيدك قبل جلب أي شيء
  • إضافة دعم بروتوكول AmneziaWG، بما في ذلك محرّر لمعاملات التمويه الخاصة به (Jc/Jmin/Jmax، S1–S4، H1–H4، I1–I5)
  • إضافة نقل XHTTP إلى محرّر السياسات لأنواع Trojan وVMess وVLESS — الوضع والمسار والمضيف، ترويسات الطلب والحشو، حدود حجم post والفواصل الزمنية، حدود XMUX الأربعة، ونقطة تنزيل منفصلة
  • إضافة نقل gRPC إلى محرّر السياسات، مع اسم الخدمة ووضع multi-mode
  • إضافة إعدادات ECH (‏Encrypted Client Hello) لسياسات TLS: مفتاح التفعيل، وech-config مثبَّت، وتجاوز اسم الغطاء عبر ech-public-name
  • إضافة بصمة العميل (uTLS) لكل سياسة، مع قيمة افتراضية على مستوى الملف كاملاً في الإعدادات العامة
  • إضافة طريقتَي تشفير Shadowsocks: ‏AEGIS-128L و AEGIS-256
  • إضافة تبادل المفاتيح الهجين ما بعد الكمّي X25519MLKEM768 لـ TLS 1.3
  • إضافة اختيار شيفرة VMess، وتثبيت بصمة شهادة MASQUE، ومفتاح تعطيل UDP لكل سياسة، ومفاتيح التعددية (multiplexing) لعائلة HTTP وShadowsocks وShadowsocksR وTrojan وShadowTLS وHysteria2
  • إضافة العمل كعقدة خروج وموجّه شبكة فرعية في Tailscale: أعلِن عن هذا الـ Mac والشبكات خلفه، بدّل التشغيل من شريط القوائم، واستقبل إشعاراً عند موافقة المسؤول، مع خيار إبقاء الـ Mac مستيقظاً ما دام يحمل حركة
  • إضافة حذف الملفات في قائمة ملفات الإعدادات: تُنقل الملفات التي يديرها Chute إلى سلة المهملات، بينما تُلغى فقط تسجيل الملفات المستوردة في مكانها وتبقى حيث هي
  • إضافة نافذة تقرير أخطاء الإعدادات — قائمة قابلة لتغيير الحجم تعرض رقم السطر ودرجة الخطورة والرسالة والسطر الأصلي، مع ⌘C على الصفوف وزر «نسخ الكل» — لتحل محل تنبيه كان قد يتجاوز ارتفاع الشاشة
  • إضافة Map Remote إلى [URL Rewrite]: صار نوع القاعدة header يعيد كتابة سطر الطلب والمضيف الأعلى، مع توسيع مجموعات الالتقاط
  • إضافة وسائط الوحدات (#!arguments)، بحيث يمكن إعادة استخدام الوحدة نفسها بقيم مختلفة

تحسينات:

  • إعادة بناء محرّر السياسات حول نماذج لكل بروتوكول: صار لكل بروتوكول حقوله الخاصة بدل مشاركة حقول نصية مع بروتوكولات لا علاقة لها، وصارت قائمة الأنواع تكبر دون إعادة ترقيم ما تحتها
  • عند الحفظ، صار محرّر السياسات يحافظ على الخيارات التي لا يملك لها حقلاً (ECH وALPN وتثبيت الشهادة وtest-url وudp-relay وtfo)
  • إزالة مفتاح TCP Fast Open من TUIC وHysteria2 وMASQUE وAnyTLS وSSH، فمحوّلاتها لا تقرأ هذا الخيار أصلاً؛ وأي سياسة تحمل tfo مسبقاً تحتفظ به
  • تحسين استيراد ملفات Clash وsing-box وSurge كما تُنشر فعلياً، بما في ذلك أقسام MitM/Panel/Ponte في Surge، وصيغ REJECT المختلفة، وأسطر الوحدات، ومحدِّد [SSID Setting]
  • صار Chute يشرح وظيفة المساعد ذي الامتيازات قبل أن يطلب macOS الإذن، بدل ظهور مربع حوار النظام بلا سياق
  • ترتيب واجهات التشغيل الأول: تُقرأ الرخصة قبل عرض أي نافذة، ويؤجَّل طلب إذن الإشعارات حتى يُغلق مساعد الإعداد
  • عند غياب أي إعداد، صار شريط القوائم يوفّر التفضيلات والنافذة الرئيسية ومداخل الاستيراد بدل منتقي ملفات وحيد؛ وتقول مفاتيح لوحة المعلومات ما الناقص بدل الإخفاق بعد دقيقة؛ وتبدأ هذه التثبيتات في النافذة الرئيسية الجديدة
  • صارت الحالة الفارغة لقائمة الملفات وعنصر الاستيراد عبر URL يذكران روابط المشاركة، وصارت نافذة المساعدة تشرح ما يلزم فعلاً قبل أن يمر أي شيء عبر البروكسي
  • تحسين الإنتاجية واستهلاك المعالج في مسار البيانات ومطابقة القواعد ومعالجة UDP
  • لم يعد يُعاد استخدام الاتصالات عبر مسار شبكة تجاوزه النظام بعد تغيّر شبكة الـ Mac

إصلاحات الأخطاء:

  • إصلاح اعتبار رخصة صالحة غير قانونية بعد إعادة التشغيل، حيث كان إخفاق تحقّق عابر واحد يوقف البروكسي ويفتح نافذة الرخصة
  • إصلاح عدم حدوث أي شيء عند تأكيد «إلغاء الرخصة»
  • إصلاح تحميل الإعدادات المعطوبة وتشغيلها رغم الضغط على «إلغاء» في تنبيه خطأ الإعدادات، وإصلاح وقوع إجراء التجاهل على الزر الافتراضي
  • إصلاح إسقاط flow في VLESS كلما كان REALITY مفعّلاً، وصار العميل يستخدم تأطير XTLS Vision فعلياً بدل الإعلان عنه فقط
  • إصلاح إعادة كتابة سياسة لا يستطيع المحرّر عرض نوعها على أنها HTTP عند الحفظ
  • إصلاح حصول سياسات WireGuard وAmneziaWG التي تشير إلى قسم إعدادات على منفذ قيمته 0 حرفياً
  • إصلاح كتابة ws-path وws-headers بينما مفتاح WebSocket مغلق
  • إصلاح عدم تمرير صفحة إعدادات الواجهة
  • إصلاح إرسال Shadowsocks سطر طلب مشوَّهاً مع obfs=http، ما كان يترك النفق متصلاً دون أن ينقل شيئاً
  • إصلاح فقدان Shadowsocks 2022 للتزامن عندما تنقسم الحمولة على أكثر من قراءة، وتصحيح صيغة UDP لـ chacha20-poly1305
  • إصلاح عدم مطابقة الاسم البديل في [Host] إطلاقاً، إذ كان استعلام A للاسم البديل يمرّ إلى الخادم الأعلى ويعود بـ NXDOMAIN
  • إصلاح إفلات ترحيل اتصالات QUIC من قواعد PROTOCOL,QUIC ومن خيار block-quic
  • إصلاح إسقاط WireGuard للحزم المصطفّة أثناء إعادة إنشاء الجلسة
  • إصلاح كتابة سطر وصف #!arguments في وحدة فوق القيم الافتراضية للوسائط المجاورة له
  • تحسينات متنوعة في الاستقرار والأداء

النسخة 1.1.2 (210)

ميزات جديدة:

  • إضافة Tailscale كنوع بروكسي مدمج: اضبط حساب Tailscale مباشرةً في Chute، وانضم إلى tailnet، وحوّل الحركة عبر عُقد Tailscale — دون الحاجة إلى عميل منفصل
  • إضافة قسم إعدادات Tailscale: أدخل مفتاح المصادقة (auth key) بشكل آمن، تحقّق من الاتصال، اعرض عُقد tailnet، وبدّل عُقدة الخروج
  • إضافة عنصر حالة Tailscale إلى لوحة المعلومات واختصار في شريط القوائم لتبديل عُقدة الخروج
  • إضافة إشعارات النظام لتشخيص البروكسي، تشمل مراجع السياسات غير المحلولة، تغيّرات IP الخروج، وأحداث Tailscale، مع مفاتيح لكل نوع في الإعدادات
  • إضافة نوع البروكسي MASQUE إلى محرّر السياسات
  • إضافة محرّر جدول bypass-list مع simple-hostnames كافتراضي وتصدير no_proxy تلقائي
  • إضافة تجميع الاتصالات حسب التطبيق في لوحة الحركة
  • رفع الحد الأدنى لإصدار macOS المدعوم إلى 10.14 (Mojave)

تحسينات:

  • تحسين إنتاجية TUN على macOS
  • تحسين استقرار المساعد ذي الامتيازات، وبروكسي النظام، ودورة حياة DNS/TUN
  • تحسين استقرار اتصالات Tailscale و WireGuard وإنتاجيتها
  • تحسين موثوقية امتداد النظام واستمرار VPN التلقائي
  • تحسين التحقق من الترخيص لتفادي اعتبار أخطاء الخادم العابرة إلغاءً
  • تنقية أسماء ملفات الإعدادات لمنع فشل التحميل بسبب أحرف المسار غير الصالحة

إصلاحات الأخطاء:

  • إصلاح مشكلة كان المساعد يعيد فيها إرفاق نفسه بنفق VPN قيد التشغيل بالفعل
  • إصلاح انهيار يسبّبه تبديل اللغة بشكل متزامن
  • إصلاح مشكلة فشل نفق VPN عند البدء للمرة الثانية
  • إصلاح رسم مخطط سرعة الرفع لبيانات التنزيل بدلاً من ذلك
  • تحسينات متنوعة في الاستقرار والأداء

النسخة 1.1.1 (202)

  • واجهة رئيسية جديدة مع Dashboard: نافذة بأربعة تبويبات بتصميم جديد (Dashboard, Traffic, Config, Log) تتميز بتصميم glass-morphism، رسوم sparkline للسرعة الفورية، بطاقات widgets قابلة للتخصيص، ورسوم متحركة micro-interaction
  • بطاقات Dashboard جديدة: حالة البروكسي، وضع TUN، وقت التشغيل، الاتصالات النشطة، إنتاجية الرفع/التنزيل، وملف الإعدادات الحالي
  • تبويب Profiles جديد لإدارة التبديل وتنظيم ملفات الإعدادات
  • Traffic Inspector مطور مع تصفية جلسات وعرض سجلات محسن
  • وضع VPN Enhanced Mode جديد: خيار PacketTunnel system extension جنباً إلى جنب مع helper utun القديم، قابل للاختيار في التفضيلات
  • ترحيل privileged helper daemon من SMJobless إلى SMAppService (macOS 13+)
  • ترحيل Network Extension إلى System Extension مع تدفق تنشيط OSSystemExtensionRequest
  • إضافة محررات إعدادات لـ Body Rewrite, Script, Module, و WireGuard
  • إضافة أداة Rules DNS diagnostics
  • تحديث KLNEKit kernel مع توسيع كبير في الميزات
  • إضافة دعم بروتوكول AnyTLS مع تمويه padding متعدد الطبقات
  • إضافة دعم بروتوكول TUIC (ترحيل TCP/UDP متعدد الإرسال قائم على QUIC)
  • إضافة دعم بروتوكول Hysteria2 مع تحكم ازدحام Brutal
  • إضافة دعم بروتوكول WireGuard (تكوين مضمن وقائم على الأقسام)
  • إضافة دعم بروتوكول ShadowTLS مع تمويه بصمة TLS
  • إضافة دعم VLESS REALITY لمكافحة الرقابة
  • إضافة طرق تشفير Shadowsocks 2022 (2022-blake3-aes-128/256-gcm, chacha20-poly1305)
  • إضافة نقل gRPC لبروتوكولات VMess و VLESS
  • إضافة دعم DNS-over-TLS (DoT), DNS-over-QUIC (DoQ), و DNS-over-HTTP/3 (DoH3)
  • إضافة تعيين DoT/DoQ/DoH3 لكل نطاق في Local DNS Mapping
  • إضافة نظام JavaScript Scripting (7 أنواع سكريبتات: rule, dns, request, response, generic, scheduled, dns-ttl)
  • إضافة Body Rewrite: البحث والاستبدال في محتويات طلبات/استجابات HTTP عبر regex (مع مجموعات الالتقاط) أو JSONPath
  • إضافة Mock Response: إرجاع بيانات وهمية أو محتوى Map Local للطلبات المطابقة
  • إضافة Protocol Sniffing: اكتشاف بروتوكول الاتصال الفعلي وتطبيق القواعد وفقاً لذلك
  • إضافة Notification Reporting مع 5 أنواع أحداث (connection-failure, proxy-unavailable, traffic-surge, config-update-failure, policy-group-switch)
  • إضافة HTTP Control API و Web UI مدمج لمراقبة وإدارة وقت التشغيل
  • إضافة نظام الوحدات (.sgmodule) لإدارة الإعدادات المعيارية
  • إضافة Proxy Provider لتحديثات قوائم البروكسي الديناميكية
  • إضافة مجموعة سياسات LoadBalance باستراتيجيات round-robin و consistent-hashing و sticky-sessions
  • إضافة دعم مجموعة سياسات Fallback
  • إضافة نوع قاعدة IP-ASN (قاعدة بيانات MaxMind GeoLite2 ASN المدمجة)
  • إضافة قواعد الدمج المنطقي: AND, OR, NOT
  • إضافة قواعد المطابقة المتقدمة: SUBNET, HOSTNAME-TYPE, IN-TYPE, IN-USER, IN-NAME
  • إضافة أنواع قواعد جديدة مبنية على النطاق: DOMAIN-WILDCARD, DOMAIN-REGEX, DOMAIN-SET
  • إضافة نوع قاعدة PROTOCOL (مطابقة حسب البروتوكول المكتشف: HTTP, HTTPS, TLS, TCP, UDP, QUIC, STUN, DNS, DOH, DOQ)
  • إضافة نوع قاعدة SCRIPT للمطابقة المخصصة عبر JavaScript
  • إضافة أنواع قواعد عملية جديدة: PROCESS-PATH, PROCESS-NAME-REGEX
  • إضافة نوع قاعدة SRC-PORT
  • إضافة خياري extended-matching و requires-resolve للقواعد
  • إضافة أنماط رفض URL Rewrite: reject-200, reject-img, reject-dict
  • إضافة دعم اتجاه الاستجابة لـ Header Rewrite (header-response-add/del/replace)
  • إضافة دعم متغيرات القالب Map Local لـ URL Rewrite
  • إضافة دعم Replica لتسجيل حركة المرور الانتقائي
  • إضافة دعم Managed Configuration مع فاصل تحديث تلقائي
  • إضافة خيار exclude-simple-hostnames
  • إضافة خيار Bypass TUN للتوجيه المباشر لنطاقات IP محددة
  • إضافة خيار interrupt-exist-connections العام
  • إضافة خيار network-framework
  • إضافة خيار disable-db-record
  • توسيع خيارات مجموعة السياسات: expected-status, hidden, idle-timeout, lazy
  • توسيع نظام القواعد من 6 إلى 37 نوع قاعدة
  • تحسين إنتاجية TUN (UTUN_OPT_MAX_PENDING_PACKETS)
  • إصلاح القيمة الافتراضية لـ IPv6 (false -> true)
  • إصلاح قيم log level الافتراضية، إضافة مستويي none و fatal
  • إصلاح اتساق تسمية Shadowsocks/ShadowsocksR
  • تحسينات متنوعة في الاستقرار والأداء

النسخة 1.0.7 (163)

  • تحديث KLNEKit
  • إضافة دعم سياسة SSH
  • إصلاح مشكلة UDP
  • إصلاحات أخطاء

النسخة 1.0.5 (155)

  • تحديث KLNEKit
  • تغيير شبكة TUN إلى 198.18.0.0/15 لتجنب مشكلة عنوان IPv4 الداخلي
  • إضافة وظيفة مساعدة لأيقونة القائمة
  • تنفيذ دعم IPv6 لـ TUN
  • تفعيل دعم ping لـ TUN
  • إصلاح مشكلة اختفاء قائمة Dock
  • إصلاح عدم استعادة إعدادات البروكسي بعد إغلاق Chute
  • إصلاح شبكة TUN
  • إصلاح مكون تحديث التطبيق
  • إصلاحات أخطاء

النسخة 1.0.4 (145)

  • إضافة دعم بروتوكول VLESS
  • إضافة XTLS لـ VLESS
  • إضافة عرض لعناوين IP المحلية
  • إضافة دعم نفق UDP لـ Chute Dashboard
  • تحسين خادم DNS المدمج
  • إصلاح معالجة قاعدة FINAL
  • إصلاح نفق UDP
  • إصلاحات أخطاء

النسخة 1.0.3 (132)

  • دعم macOS 10.13 (بدون دعم Network.framework)
  • إصلاح تحميل قسم Config Windows Proxy
  • إصلاح خطأ طلب HTTP
  • إصلاحات أخطاء

النسخة 1.0.2 (102)

  • إعادة بناء خادم DNS
  • إعادة بناء تثبيت Extension
  • إصلاحات أخطاء

النسخة 1.0.0 (88)

  • أول نسخة إصدار
  • إضافة دعم TUN

[Beta] النسخة 0.4.9 (53)

  • إصلاح ترتيب القواعد.
  • إضافة دعم مسح رمز QR على الشاشة.
  • إصلاح مجموعة السياسات.

[Beta] النسخة 0.4.5 (32)

  • إصلاحات أخطاء.

[Beta] النسخة 0.3.5 (25)

  • إصلاحات أخطاء.

[Beta] النسخة 0.3.0 (20)

  • إصلاحات أخطاء.

[Beta] النسخة 0.2.0 (8)

  • أول إصدار.
S. Smart Rabbit LLC © All Rights Reserved            updated 2026-10-01 17:39:45

هذه الصفحة ترجمة للنسخة الإنجليزية. في حال وجود اختلاف، يُعتمد على النسخة الإنجليزية.

ملاحظة: التطبيق لا يدعم اللغة العربية حاليًا.

results matching ""

    No results matching ""