ملاحظات إصدار Chute iOS
النسخة 1.2.2 (382)
ميزات جديدة:
- إضافة تسلسل البروكسي: يمكن للسياسة أن تسمّي
underlying-proxyفتصل إلى خادمها عبره، ويمكن لمجموعة السياسات أن ترسل كل أعضائها عبر منبع واحد، ويفعل الصف الجديد Front Proxy تحت 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. ولأن المجموعة العشوائية ليس فيها اختيار يمكن تغييره، فهي لا تظهر في أي موضع تختار فيه سياسة المجموعة، ويُبقيها محرر المجموعة مجموعةً عشوائية - إضافة سلسلة البروكسي إلى لوحة التحكم ووحدة تحكم الويب: تذكر تفاصيل الطلب وقائمة UDP كل قفزة (
Airport/HK-01 → Landing)، ويتضمّن تصدير HAR المسار - إضافة «التنزيل عبر» إلى محرري مزوّد القواعد ومزوّد البروكسي: يجلب
policy=تلك القائمة عبر السياسة المختارة، وإذا كان اسم السياسة غير موجود فشل التنزيل بدلاً من أن يتم مباشرة - إضافة 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، ويعرض المحرر حقل JQ PROGRAM؛ ويُبلَّغ عن البرنامج غير الصالح وتُتخطّى قاعدته، أما الجسم الذي ليس JSON، أو البرنامج الذي يفشل، أو الخرج الفارغ، فكلها تترك الجسم دون تغيير - إضافة السكريبتات العامة: لا مُشغّل تلقائياً لسكريبت
type=generic، فلا يعمل إلا عند الطلب — من زر Run في محرره، أو عبرGET /api/scriptsوPOST /api/scripts/run. ويُضاف إلى محرر السكريبت أيضاً حقل Event Name؛ ولا يُسلَّم من الأحداث إلاnetwork-changed، لذا لا يعمل أبداً سكريبت الحدث الذي يسمّي حدثاً آخر - إضافة مجموعات 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= - إضافة المزيد إلى Local DNS Mapping: يحتفظ مدخل
[Host]بكل الخوادم التي يذكرها ويستعلم منها بالتوازي، ويربط النطاق الواحد بعدة عناوين، ويمكن أن يكون مفتاحه مجموعة قواعد (RULE-SET:<url>)، ويشغّل سكريبتtype=dnsلذلك النطاق (script:<name>)، ويقبلssid:<name>لربط خاص بكل شبكة - إضافة إشعارات القواعد: تقبل أي قاعدة، بما فيها FINAL، الخيارين
notification-text=وnotification-interval=، فترسل إشعاراً حين تطابق، مرة واحدة على الأكثر في كل فترة لكل قاعدة؛ وتتبع الإشعارات مفتاح «السماح بالإشعارات» في التطبيق، والنقر على أحدها يفتح الرابط الذي يحمله - إضافة
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؛ ويعرضها منتقي السياسات، ويكتب الرموز DIRECT / REJECT / PROXY حيث كان يكتب تسمية مترجمة، ويصلح التسميات التي خلّفها إصدار أقدم
- إضافة مجموعات القواعد المضمّنة: تظهر أقسام
[Ruleset Name]في قائمة مستقلة في محرر الإعداد، وتُحرَّر سطراً سطراً، ويُشار إليها بـRULE-SET,<name>، بما في ذلك إشارة بعضها إلى بعض — بعمق يصل إلى ثمانية مستويات، مع رفض الحلقات - إضافة عائلة SSID: تنطبق تجاوزات DNS في
[SSID Setting]على كل شبكة على حدة — الأسماء، وBSSID:، وTYPE:WIFI/CELLULAR/WIRED، وROUTER:، والأسماء بين علامتي اقتباس والأسماء ذات أحرف البدل — وتمسح ذاكرة المُحلِّل السابق المؤقتة عند تغيّر الشبكة؛ وتختار مجموعتا السياساتssidوsubnetأعضاءهما وفق الشبكة الحالية، وتطابقها قواعد SUBNET، وصارsuspend=trueيوقف النفق: فمدخل اسم الشبكة أوTYPE:يصبح قاعدة قطع عند الطلب، ومدخلBSSID:أوROUTER:أو الاسم ذو حرف البدل يعلّقه الامتداد بنفسه، وينبّه الامتداد إلى ذلك حين يكون من شأن «Always On» أن يعيد النفق - إضافة نطاقات ومقارنات DEST-PORT و SRC-PORT و IN-PORT (
80-81و>=50000وقوائم/)، وقيمHOSTNAME-TYPEIPv4وIPv6وDOMAINوSIMPLE، وقواعد IN-TYPE و IN-USER و IN-NAME العاملة، التي تطابق الآن حركة المرور الفعلية بدلاً من التشغيل التجريبي فقط - إضافة عناصر تحكم MitM: فك تشفير HTTP/2 (
h2)، وحجب QUIC عن المضيفين الذين يُفك تشفيرهم كي لا يلتفّ HTTP/3 على فك التشفير (auto-quic-block)، واستثناء مضيفين من فك التشفير، ومطابقة كلمات Host List المفتاحية<ipv4-address>و<ipv6-address>و<simple-hostname> - إضافة توجيه QUIC حسب النطاق: يُقرأ الاسم من QUIC Initial الخاص بالعميل، ويُعاد تجميع ClientHello المقسّم على عدة Initials، ويُحتجز التدفق حتى يُعرف الاسم، فتوجّه قواعد DOMAIN اتصالات HTTP/3 المنشأة إلى عنوان مجرّد
- إضافة
icmp-auto-reply، مفعّل افتراضياً: يُردّ على ping داخل النفق محلياً، عبر IPv4 و IPv6، بدلاً من أن تنتهي مهلته - إضافة
tun-included-routes: تنضم نطاقات CIDR المدرجة إلى مسارات النفق بعد مساره الافتراضي، فالنطاق الذي كانت ستستحوذ عليه الشبكة الفرعية لواجهة Wi-Fi نفسها أو شبكة VPN أخرى — إذ يفضّل النظام المسار الأدق — يمر عبر Chute. وتُرفض المدخلات التي من شأنها قطع النفق (loopback، والشبكات الفرعية الخاصة بالنفق نفسه، و link-local، و multicast، و broadcast، وطول بادئة 0) وتُسجَّل، وتُقبل النطاقات الخاصة مع تحذير، وتُطبَّق القائمة المعدَّلة عند إعادة التحميل دون إعادة تشغيل النفق - إضافة دعم أوسع للاستيراد: تتوسّع قواعد GEOSITE وقواعد GEOIP الفئوية في mihomo إلى مجموعات قواعد تعمل، وتُنشئ مجموعات
policy-pathمزوّداً معupdate-intervalوالمرشّحات وقوائم التضمين، ويتوسّعSUB-RULEفي mihomo إلى قواعد AND، ويُستوردdetourفي sing-box وdialer-proxyفي mihomo على أنهما تسلسل، ويُصرَّفallowed-ipsفي WireGuard ويُطبَّق فعلاً فلم يعد النفق المنقسم يبتلع كل الوجهات، ويثبّتinterface=/allow-other-interface=في السياسة اتصالاتِها على واجهة شبكة واحدة - إضافة دعم أوسع في واجهة السكريبت: يستدعي
$httpAPIمسارات المحرك نفسه دون فتح مقبس، ويحترم$httpClientالخيارpolicy، ويمرّرread-etc-hostsملف hosts إلى DNS، ويذكر$event.nameالحدث الذي وقع فعلاً - إضافة عناصر تحكم الاستجابة الوهمية — قد يكون الجسم نصاً أو ملفاً أو base64 أو صورة GIF بحجم 1×1، مع رمز حالة وتحقق من الصحة — وجداول أنواع URL Rewrite و Header Rewrite، مع وضع التعبير النمطي لاستبدال قيمة ترويسة
تحسينات:
- يتطلب Chute الآن iOS 15 أو أحدث
- أصبح كل محرر منظَّم يحتفظ بما لا يعرضه: ينقل كل مُنشئ المفاتيح التي لا يعرضها — بقية خيارات القاعدة، والقواعد الفرعية في AND / OR / NOT، والعناوين الأخرى لمدخل
[Host]، والأسطر الأخرى في ترويسة الوحدة — فلم يعد فتح الإعداد وحفظه يعيد كتابته، ويُحرَّر المدخل الذي لا يعرف المحرر نوعه كنص - صارت محررات إعادة كتابة الجسم والترويسة والرابط و Map Local و Mock و Script تكتب ما يقرؤه المحرك: يُحفظ السكريبت مع
type=الخاص به، وتحافظ قيمة JSONPath على نوعها، ويحتفظ Map Local بـstatus-codeوdata-typeوالترويسات - لم يعد استيراد ملف تعريف منشور يُضيّع التوجيه: يقبل
dns-serverروابط DNS المشفّر، وتقبل أسطر المستمعين كلمة مرور، ويبقى أعضاء المجموعات المكتوبون بين علامتي اقتباس، وتُحوَّل القواعد المنطقية في sing-box كما هو موثّق، ويُسقَط أعضاءPASSبدلاً من أن يصبحوا REJECT، ويكتفي البروتوكول أو نوع المجموعة غير المدعوم بتحذير بدلاً من أن يُسقط مجموعته — وفي ملفات تعريف mihomo المستوردة، تراجعت القواعد التي لا يمكن أن تطابق أبداً من معظم القائمة إلى عدد يكاد لا يُذكر - صارت مجموعات القواعد تحتاج إلى ذاكرة أقل بكثير: تُنزَّل المزوّدات واحداً تلو الآخر بدلاً من أن تفشل تماماً بعد المزوّد رقم 35، وانخفضت ذُرى الذاكرة أثناء التحويل بنسبة 62–73%، ويُحدّ عدد اتصالات الفهرس وتُحرَّر عند ضغط الذاكرة، وتُرفض الحمولة الأكبر مما يحتمله الجهاز مع ذكر السبب في حالة مجموعة القواعد
- تمنع حدود الموارد الإعدادَ الضخم من دفع امتداد النفق إلى تجاوز حد ذاكرته: فلكلٍّ من مخزن شهادات MitM، والالتقاطات المتراكمة، وحجم السكريبتات وعددها، وميزانية الطلبات في وحدة التحكم، وأقران Tailscale، وذاكرة DNS المؤقتة حدٌّ أقصى على iOS
- تستخدم اختبارات زمن الاستجابة الهدف الصحيح: يُؤخذ في الحسبان كلٌّ من
test-urlوtest-timeoutالخاصين بالمجموعة، وproxy-test-urlفي الملف، وtest-urlوexpected-statusالخاصين بالعضو، وتُختبر العقدة المسلسَلة عبر سلسلتها بدلاً من اختبارها مباشرة - وحدة تحكم الويب وواجهة التحكم: لم تعد القاعدة المضافة أثناء التشغيل تبقى بعد إعادة تحميل الملف نفسه، وتبقى مؤشرات السجل تصاعدية دائماً فلا يفوّت الاستطلاع أي مدخل، وتذكر تفاصيل الاتصال سلسلة البروكسي
- أصبح ShadowTLS يتحقق من شهادة موقع التغطية حين يُكتب
sni=، كما يفعل sing-box؛ ويوقفskip-cert-verify=trueهذا التحقق (وكان هذا الخيار يُتجاهَل من قبل، ولم يكن يُتحقَّق من أي شهادة إطلاقاً)، ومن دونsni=يُتخطّى التحقق مع تحذير - التنزيلات والاشتراكات: يذهب كل تنزيل إلى ملف خاص به ويُحكم على الصيغة من جسمه، فلم يعد التحديث يعيد قراءة تنزيله الأول أو يطبّق ملف تعريف عنوان آخر؛ ويُحفظ ملف التعريف المحوَّل من Clash أو sing-box بامتداد
.confويُسمّى كما تسمّيه كل تطبيقات Chute؛ ويُضاف رقم إلى الاسم المستخدم بدلاً من الحفظ فوقه - التعامل مع الإعدادات: الحفظ باسم آخر يسأل أولاً، ويعيد تحميل النفق حين يكتب فوق الملف قيد التشغيل، ولم يعد يحذف الملف الذي فُتح منه الإعداد؛ و«المزامنة من iCloud» تحتسب الإعدادات المثبَّتة بالفعل ضمن حدّ الترخيص؛ وتبقى مجموعات السياسات المخفية خارج قائمتي Global و select مع بقائها في متناول المحرك؛ ويعرض Global دائماً المجموعة التي يستخدمها
- تحتفظ صفحة الرفع عبر Wi-Fi بامتداد الملف الذي تتلقاه، وترفض الاسم المستخدم مع ذكر السبب، وترسل الأسماء غير ASCII وفق ما يطلبه RFC 6266، فيصل
上传的配置.confبهذا الاسم نفسه - تتوفر الإعدادات والرسائل والإشعارات الجديدة باللغات المدمجة الثماني كلها، وتذكر إشعارات النفق سبب توقفه
إصلاحات الأخطاء:
- إصلاح إسقاط Hysteria2 أي مخطط بيانات UDP أكبر من أن يتسع له إطار QUIC DATAGRAM واحد، ما كان يمنع HTTP/3 الخاص بالتطبيق من العبور ويعيده إلى TCP؛ وصارت مخططات البيانات الكبيرة تُقسَّم عند الإرسال، ويُعاد تجميع ردود الخادم المقسَّمة
- إصلاح إعادة استخدام النفق بعد إعادة تشغيله أولَ منفذ محلي وأرقامَ تسلسل TCP من التشغيل السابق، فكان قرين WireGuard الذي لا يزال يحتفظ بالاتصال القديم يردّ عليها بإعادة ضبط الاتصال؛ وصارت حزمة TCP في النفق تستمد بذرتها من مصدر العشوائية في النظام، وتختار أرقام التسلسل الأولية كما يصف RFC 6528
- إصلاح توقّف XHTTP عبر النفق بعد أول عملية كتابة من التطبيق، فلم تكن مصافحة TLS تكتمل أبداً، ولم يكن الرفع يرسل سوى جزء واحد؛ وصارت كل عملية كتابة تكتمل بالترتيب، وحين يتجاوز ما ينتظر الرفع 1 MB تنتظر الكتابة التالية حتى يُفرَّغ
- إصلاح
PROTOCOL,TCPوPROTOCOL,UDPاللذين لم يكونا يطابقان أبداً: صار كل مسار وارد يحدّد نوع النقل، فتعمل الطريقة المعتادة لحجب QUIC بقاعدة AND - إصلاح
RULE-SETوDOMAIN-SETداخل AND / OR / NOT اللذين كانت نتيجتهما دائماً false — ما جعلNOT,((RULE-SET,…))يرفض حركة المرور المحلية أيضاً — وSCRIPTداخل قاعدة منطقية الذي كانت نتيجته دائماً true - إصلاح
RULE-SET,<name>,<policy>,no-resolveالذي كان يفقدno-resolveعند الكتابة بالاسم، وUNKNOWNفي GEOIP و IP-ASN الذي لم يكن يطابق أبداً، وتجاهلstatus-code=في Map Local عبر HTTP/2، وإعادة كتابة ترويسة الاستجابة عبر HTTP العادي التي كانت تطابق المسار فقط، فلم يكن النمط المكتوب للرابط الكامل يطابق أبداً - إصلاح
block-quicالذي كان يقبل واحدة فقط من قيم Surge، إذ كانت كل قيمة أخرى تعني عدم حجب QUIC إطلاقاً - إصلاح واجهة السكريبت: لم تعد
$klne.getPolicyGroups()وselectPolicy()تُطلقان استثناءً في أول استخدام لهما، وصارreloadConfiguration()يعيد التحميل فعلاً، وgetActiveConnections()يذكر المضيف والمنفذ والمعرّف الحقيقية، وcloseConnection()يغلق الاتصال، وصار سكريبت ما قبل الإرسال الذي يحملrequires-bodyيتلقى الجسم أخيراً - إصلاح
[Replica] keyword-filterالذي كان يقارن اسم المضيف كاملاً بدلاً من التحقق من احتوائه على الكلمة المفتاحية، فلم يكنkeyword-filter = googleيشملwww.google.com - إصلاح مطابقة قواعد PROCESS-NAME و PROCESS-PATH و PROCESS-NAME-REGEX لحركة مرور المتصفح على iOS، إذ كان الاسم الذي تقارنه هو اسم منتج المتصفح لا اسم عملية؛ فهذه القواعد لا تعمل إلا على macOS، ولم تعد تطابق أي شيء على iOS
- إصلاح ملف تعريف لوحة التحكم المحفوظ الذي كان يُقرأ من جديد بنوع خاطئ، ما كان يسبب انهياراً عند كل نقرة؛ والصفوف التي تُسحب أو تُحذف في قائمة تحوي عناصر مكررة فيختلّ تطابق الجدول مع بياناته؛ والانهيارات التي كانت تقع حين يصل استدعاء راجع إلى شاشة أُغلقت بالفعل
- إصلاح التحديث التلقائي للاشتراك الذي كان يحجب الخيط الرئيسي 30 ثانية، فيُنهي مراقب النظام التطبيق إذا انتقل إلى الخلفية في منتصف التحديث؛ ومفتاح مركز التحكم الذي كان يفشل دائماً لأن الودجة لم تكن تملك إذن التحكم في VPN، و Picture in Picture الذي كان يُعرض مرتين، واستمرار الودجة الذي كان يُستأنف مرتين
- إصلاح التنزيلات والأسماء: ملف تنزيل محفوظ كان التحديث التالي يعيد قراءته، وعنوان كان يُجاب بملف تعريف عنوان آخر حين يقترح الاثنان الاسم نفسه، واستيراد أو نسخ كان يحذف في iCloud الملف الذي قُرئ منه، ورفع كان يفقد كل ما بعد أول نقطة، واشتراك ينتهي عنوانه بامتداد مجرّد كان يُحفظ ملفاً مخفياً، وتعديل كان يُحفظ فوق إعداد قابل للقراءة دون سؤال
- إصلاح رابط
chute://— القادم من أتمتة في تطبيق «الاختصارات» مثلاً — الذي لم يكن يفعل شيئاً إذا لم يكن Chute يعمل مسبقاً؛ وصار الإطلاق البارد يعالجه أيضاً - تحسينات متنوعة في الاستقرار والأداء
النسخة 1.2.0 (351)
ميزات جديدة:
- إضافة عنوان وحدة تحكم الويب إلى لوحة التحكم: يعرض صف Web Console المضيف، والنقر عليه يقدّم «فتح» و«نسخ العنوان» و«نسخ رمز الوصول» — و«فتح» يحمل الرمز داخل الرابط، فيتم تسجيل الدخول دون كتابته
- إضافة «حزمة تشخيص وقت التشغيل» كآخر صف في قسم LOCAL PROXY من لوحة التحكم: يبني المحرك العامل أرشيفاً منقّحاً (الإعداد، ولقطة الصحة، وأحداث هذا التشغيل، والقواعد والسياسات المحمَّلة، و DNS، وحركة المرور، وشرائح السجل) ويسلّمه إلى ورقة المشاركة؛ يحتاج إلى أن يكون النفق متصلاً، لكن دون الحاجة إلى
external-http-controller - إضافة «حزمة التشخيص دون اتصال» في الإعدادات ← قسم التشخيص، يبنيها التطبيق دون نفق يعمل: تفاصيل الجهاز والتطبيق، وملف VPN كما يحتفظ به iOS، وملخص الإعداد المحدد وأخطاء تحليله، وصفحات التشخيص الثلاث نصاً، وبداية الإعداد المنقّحة، وكيف انتهى التشغيل السابق، وذيول سجل أحدث جلسة، وتقارير الانهيار المنتظرة
- إضافة «مشاركة السجل» إلى شاشة الجلسة، وتقدّم كل شرائح سجل الجلسة
- إضافة نسب إعادة الكتابة إلى تفاصيل الجلسة: يذكر قسم POLICY الآن، بجانب القاعدة والسياسة اللتين وجّهتا الطلب، قاعدة URL Rewrite أو Header Rewrite أو Body Rewrite أو Mock Response التي غيّرته
- إضافة إشعار «تغيّر عنوان الشبكة» بدلاً من «تغيّر IP الخروج»: يعرض عنواني IPv4 و IPv6 الخاصين بهذا الجهاز على الوصلة الفعلية، سطراً لكل عائلة، ويميّز IPv4 الواقع خلف NAT؛ يُقرأ IPv6 و IPv4 القابل للتوجيه محلياً، ولا يكلّف سوى IPv4 خلف NAT طلب STUN واحداً
- إضافة الفرنسية لغةً مدمجة
- إضافة صفحة رفع عبر Wi-Fi أعيد تصميمها بأسلوب وحدة تحكم الويب، مترجمة إلى تسع لغات
- إضافة تبويبي «الحالية» و«السجل» إلى وحدة تحكم الويب، وعرض فحص (القاعدة المطابِقة، ومصدر القاعدة، والسياسة، والمحوّل، ومصدر DNS، والعملية، وسبب الإغلاق، وجسما الطلب والاستجابة)، وصفحة قواعد تبيّن أي قواعد إعادة كتابة انطلقت، وصفحة تشخيص (البصمة، و CPU، ومدة التشغيل، والتدفقات، وكيف انتهى التشغيل السابق، وعدّاد الرفض، وسجل الأحداث، ولقطة Tailscale، ومسابر ping و DNS والخروج واختبار URL)؛ وأصبحت وحدة التحكم مكتملة بجميع اللغات التسع
- إضافة نقاط نهاية إلى HTTP Control API:
/api/healthو/api/eventsو/api/tailscaleوالمسابر تحت/api/diagnostics/و/api/connections/export?format=harو/api/diagnostics/bundle، وإدارة قواعد إعادة الكتابة ومضيفي MitM تحت/api/rewritesو/api/mitm/hosts، وPOST /api/rules/matchلتجربة طلب على جدول القواعد دون تنفيذ (مع الإبلاغ عن مروري DNS كليهما)، وGET|PUT /api/loglevelلتغيير مستوى السجل وأقسام الأنظمة الفرعية دون إعادة تحميل، وPOST /api/config/validateلفحص ملف إعداد دون تطبيقه
تحسينات:
- لم يعد HTTP Control API يُخدَّم مفتوحاً حين لا يسمّي الإعداد
external-http-secret: يولّد المحرك رمزاً تعرضه لوحة التحكم وتنسخه؛ اضبطexternal-http-secret = noneللإبقاء على الوصول المجهول، ولم يعد عنوان الاستماع بحرف البدل يُعامل على أنه loopback - أصبحت مطابقة القواعد أسرع بكثير على القوائم الكبيرة: تُفهرس حمولات RULE-SET و DOMAIN-SET عند التنزيل أو الاستعادة بدلاً من بثّها لكل اتصال، ويُطابَق جدول القواعد المكوَّن من قواعد نطاقات فقط عبر خطة مجزّأة — تنخفض قائمة من 50 ألف سطر من نحو 94 ms إلى أقل من 2 ms لكل بحث، بنحو 100 KB من الذاكرة لكل فهرس
- تُطابَق تدفقات UDP مرة واحدة: يُحفظ قرار التدفق 60 ثانية، فتتخطى مخططات البيانات اللاحقة مروري المطابقة واستعلام DNS بينهما
- تعافٍ أفضل بعد تغيّر الشبكة: الأنفاق التي لم يعد عنوان مصدرها إلى الخادم موجوداً على أي واجهة تُغلق بدلاً من تعليق التطبيقات حتى مهلة الخمول، ويُلاحَظ الآن تغيّر المسار من النوع نفسه (إعادة ارتباط شبكة الجوال)، ويُبلَّغ عن المسار الذي يقبل الاتصالات ولا ينقل بيانات على أنه ثقب أسود
- تُكتب سجلات الجلسات في شرائح بحجم 8 MB (حتى ثماني شرائح لكل تشغيل، وتُحذف الأقدم)، وتبدأ كل شريحة بترويسة تسمّي التشغيل ووقت بدايته، فلا تنتج الجلسة الطويلة بعد الآن ملفاً واحداً أكبر من أن يُسترجع؛ ويحمّل عارض السجل كل الشرائح بالترتيب ويواصل متابعة الشريحة قيد الكتابة
- يحتفظ المحرك بعلامة تشغيل أثناء عمله، وعند البدء التالي يبلّغ عمّا إذا كان التشغيل السابق قد توقف بسلام أم قُتل — في ترويسة السجل و
/api/statusوحزمتي التشخيص كلتيهما - يُبنى تصدير HAR الآن بواسطة المحرك من الإطارات المسجَّلة، فتكون رموز الحالة والطوابع الزمنية والتوقيتات حقيقية، ويحمل كل إدخال تحت
_klالسياسة المختارة والقاعدة المطابِقة وإصابات إعادة الكتابة؛ ويستخدمه كلٌّ من «تصدير HAR» في لوحة المعلومات وتفاصيل الاتصال - لا تحتاج إلى ترخيص سوى الميزات الثلاث التي تبيعها صفحة الشراء — التحكم المتقدم بالخادم و MitM ومسجّل حركة المرور؛ ولم يعد كلٌّ من تعرّف البروتوكول و Optimus DNS والوصول الخارجي و HTTP API و Web Console ومسح ذاكرة DNS المؤقتة يطلب ترخيصاً
- تتبع لوحة التحكم حالة النفق: تعيد ضبط حالتها حين يتوقف النفق، وتعيد الاستعلام عند إعادة الاتصال، ولا تعرض عنوان وحدة التحكم إلا حين تُخدَّم الصفحة فعلاً
- يقفل محرر الإعداد مفتاحي المستمعين ما دام
allow-wifi-accessمفعّلاً، لأن المحرك يوسّع المستمعين بنفسه، ويستعيد الواجهات المضبوطة حين يُعطَّل الخيار - حين لا تجد «استعادة شراء IAP» شيئاً، يعرض التنبيه «عرض الدليل» الذي يفتح تعليمات الترخيص عبر المنصات بلغة التطبيق؛ ويوضح إشعار الشراء الآن أن الشراء الواحد يغطي ثلاثة أجهزة iPhone أو iPad وثلاثة أجهزة Apple TV
- أصبحت قائمة عُقد tailnet مطابقة للقوائم الأخرى — مجمّعة بهوامش داخلية، مع صف «لا عناصر» للقسم الفارغ — وتعيد الاستعلام عن حالة العُقد كلما ظهرت
- عند
loglevel = info، يسجّل التدفق الضخم الذي نقل 1 MiB على الأقل سطراً واحداً عند الإغلاق يبيّن كم انتظر الطرف البعيد وكم انتظر التطبيق - لا تعرض صفحات التشخيص «نسخ» إلا في الصفوف التي فيها ما يُنسخ
إصلاحات الأخطاء:
- إصلاح MitM في وضع TUN: كان المضيف المطابِق لقاعدة MitM يتوقف حتى انتهاء المهلة، فلم تسرِ قط على حركة مرور التطبيقات إعادة كتابة الترويسات والأجسام والاستجابة الوهمية والالتقاط المفكوك التشفير في HTTPS (لم تتأثر حركة المرور عبر وكيل HTTP/SOCKS5 المحلي)
- إصلاح
allow-wifi-accessالذي لم يكن له أثر: ظل مستمعا HTTP و SOCKS5 المحليان على loopback فلم يتمكن شيء على Wi-Fi من الوصول إليهما؛ أصبح الخيار الآن (وallow-lanفي sing-box عند الاستيراد) يوسّع المستمعين، وتعطيله يعيد ربطهما - إصلاح إعادة كتابة ترويسة الاستجابة عبر MitM HTTP/1.1 التي كانت تُسجَّل على أنها طُبّقت بينما يتلقى العميل الترويسة الأصلية، ولم تكن تطابق قط قاعدة مكتوبة على الرابط الكامل
- إصلاح Mock Response الذي كان يبني ردّه من ترويسة الطلب — سطر الطلب في موضع سطر الحالة، ونقل ترويسات الطلب، و Content-Length خاطئ — وكان في HTTP غير المشفّر يرسل ترويسة الخادم الأصلي قبله
- إصلاح قواعد IP ذات
no-resolve(IP-CIDR و GEOIP و IP-ASN) التي كانت تتخطى الاتصال بعنوان IP حرفي حين يزوّده تعرّف البروتوكول بترويسة Host أو باسم من DNS العكسي؛ ولم يعد عنوان IP الحرفي المتعرَّف عليه يطابق قواعد DOMAIN أيضاً، فلم يعد الحكم يعتمد على ما إذا كان التعرّف مفعّلاً - إصلاح أسطر حمولة RULE-SET التي تحمل خيارات بعد المحتوى (
GEOIP,CN,no-resolveوDOMAIN,example.com,force-remote-dns) والتي كانت تُسقَط أو لا تطابق شيئاً، والقواعد الفرعية في AND/OR/NOT التي كانت تفقدno-resolve - إصلاح HOSTNAME-TYPE الذي لم يكن يطابق قط: أصبح نوع السجل الآن A للاتصال المنشأ عبر IPv4 و AAAA عبر IPv6، ويقول النص البديل في محرر القواعد ذلك
- إصلاح النطاق الموجَّه إلى وكيل بقاعدة AND/OR/NOT ذات قاعدة فرعية للنطاق والذي كان خادم DNS يحلّه فعلياً مع ذلك، فيختلف جواب DNS عن قرار التوجيه
- إصلاح قراءة عنوان IPv6 حرفي بين قوسين معقوفين في ترويسة Host متعرَّف عليها (
[2001:db8::1]:8080) على أنه اسم المضيف[2001 - إصلاح بدء النفق ومجموعة select مضبوطة على عضو غير الأول، ما كان ينشر إشعار «تبدّلت مجموعة السياسات»، وإعادات البناء التالية للبدء التي كانت تطلق تحذير التذبذب؛ والمجموعة التي لا اختيار محفوظاً لها تتبع الآن
default=في الملف بدلاً من إجبارها على عضوها الأول - إصلاح تجمّد التطبيق عند 100% من CPU مع تصاعد الذاكرة عند فتح لوحة التحكم بعد عمل النفق مدة
- إصلاح تصدير HAR الذي كان يكتب رموز حالة خاطئة وطوابع زمنية من 1970، وتصدير تفاصيل الاتصال الذي كان ينتج ملفاً لا يفتحه أي قارئ HAR
- إصلاح
[Replica] hide-crashlytics-requestالذي كان يُحلَّل ولا يُطبَّق قط على الالتقاطات - إصلاح رفض
external-http-controller = *:9090و:::9090— وكلاهما كتابة موثّقة — فكان المتحكم يمتنع عن البدء دون أي تنبيه - إصلاح
$klne.startURLTest()الذي لم يكن يطلق اختبار الكمون قط، واختبار URL على سياسة غير موجودة الذي كان يبلّغ عن فشل معقول بدلاً من خطأ - إصلاح انهيار عرضي في نقل XHTTP تحت الحمل
- إصلاح استجابات HTTP/1.1 المعاد تسلسلها التي كانت تخرج بعبارة سبب فارغة
- إصلاح شاشة الترخيص التي كانت تصف ترخيصاً صادراً لـ tvOS أو Android بأنه «غير معروف»، وشهادة لا يمكن لهذا التطبيق حملها بأنها حزمة iOS & macOS & tvOS
- إصلاح رابط App Store المعطّل في شاشة «حول»؛ ويفتح «تقييم» الآن ورقة المراجعة مباشرة
- تحسينات متنوعة في الاستقرار والأداء
النسخة 1.1.9 (322)
ميزات جديدة:
- إضافة نقل XHTTP إلى محرر السياسات — مفتاح التفعيل، والوضع (auto وpacket-up وstream-up وstream-one)، والمسار، والمضيف — لبروتوكولات Trojan وVMess وVLESS
- إضافة طرق تشفير Shadowsocks: AEGIS-128L وAEGIS-256
- إضافة إعدادات ECH (تحية العميل المشفّرة) لسياسات TLS: مفتاح التفعيل، وتثبيت إعداد ECH (
ech-config)، وتجاوز اسم التغطية (ech-public-name) - إضافة بصمة العميل (uTLS) لكل سياسة، مع قيمة افتراضية على مستوى الملف الشخصي
- إضافة دعم بروتوكول AmneziaWG، وهو نسخة من WireGuard مع تمويه حركة المرور، مع محرر لمعاملاته
- إضافة استيراد ملفات تعريف Clash وsing-box من عناوين URL للاشتراك أو من ملفات محلية أو ملفات مرفوعة عبر Wi-Fi
- إضافة صفحة لتقرير أخطاء التكوين تتيح نسخ المحتوى لتحل محل التنبيهات التي تمنع التفاعل
- إضافة تبادل مفاتيح هجين مقاوم للحوسبة الكمية X25519MLKEM768 لـ TLS 1.3
تحسينات:
- عند الحفظ، يحتفظ محرر السياسات الآن بالخيارات الموجودة التي لا يمكن تعديلها في الواجهة الحالية (ECH وALPN وتثبيت الشهادة و
test-urlوudp-relay)
إصلاحات الأخطاء:
- إصلاح انهيار النفق الناتج عن قواعد
IP-CIDRغير السليمة - إصلاح مشكلة كتابة إعداد SSH المسمى
idle-timeoutبمفتاح خاطئ وإهماله عند الحفظ - إصلاح قواعد الإعداد الأولي التي كانت تضع اسم السياسة بعد
no-resolve، مما قد يعطّل القواعد القائمة على IP - تحسينات متنوعة في الاستقرار والأداء
النسخة 1.1.8 (300)
ميزات جديدة:
- إضافة Tailscale كنوع بروكسي مدمج: اضبط حساب Tailscale مباشرةً في Chute، وانضم إلى tailnet، وحوّل الحركة عبر عُقد Tailscale — دون الحاجة إلى عميل منفصل
- إضافة محرّر قسم Tailscale: أدخل مفتاح المصادقة (auth key) بشكل آمن، تحقّق من الاتصال، اعرض عُقد tailnet، وبدّل عُقدة الخروج من داخل التطبيق
- إضافة لوحة تحكم Tailscale تعرض حالة العُقدة في الوقت الفعلي (متصل/غير متصل، IP، آخر ظهور) وتتيح تبديل عُقدة الخروج في أي وقت
- إضافة إشعارات النظام لتشخيص البروكسي، تشمل تغيّرات IP الخروج وأحداث اتصال Tailscale، مع مفاتيح لكل نوع في الإعدادات
- إضافة نوع البروكسي MASQUE إلى محرّر السياسات
تحسينات:
- تحسين إنتاجية TUN على iOS
- تحسين استقرار اتصالات Tailscale و WireGuard وإنتاجيتها
- تحسين استقرار نفق UDP ودقّة إحصاءات الحركة
- تحسين الاستقرار عند إيقاف VPN، مما يقلّل من الحالات التي ينهي فيها النظام الاتصال بشكل غير طبيعي
- تحسين موثوقية تبديل اللغة
- تنقية أسماء ملفات الإعدادات لمنع فشل التحميل بسبب أحرف المسار غير الصالحة
إصلاحات الأخطاء:
- إصلاح مشكلة عدم اتساق قواعد on-demand بين بدء وإيقاف VPN
- إصلاح انهيار نادر يسبّبه تبديل اللغة بشكل متزامن
- إصلاح معالجة تغيّر الشبكة لتجنّب إعادة اتصالات VPN غير الضرورية
- تحسينات متنوعة في الاستقرار والأداء
النسخة 1.1.7 (290)
ميزات جديدة:
- إضافة نظام JavaScript Scripting: تشغيل سكريبتات مخصصة لتعديل الطلبات/الاستجابات، تحليل DNS، مطابقة القواعد المخصصة، والمهام المجدولة
- إضافة Body Rewrite: البحث والاستبدال في محتوى طلبات/استجابات HTTP باستخدام regex (مع دعم مجموعات الالتقاط) أو تعبيرات JSONPath
- إضافة دعم بروتوكول ShadowTLS
- إضافة نقل gRPC لبروتوكولات VMess و VLESS
- إضافة دعم DNS-over-QUIC (DoQ) و DNS-over-HTTP/3 (DoH3)
- إضافة دعم DNS-over-TLS (DoT)
- إضافة HTTP Control API و Web UI لمراقبة وإدارة وقت تشغيل البروكسي
- إضافة نظام الوحدات (.sgmodule) لإدارة الإعدادات المعيارية
- إضافة Proxy Provider لتحديثات قوائم البروكسي الديناميكية
- إضافة Notification Reporting: يكتشف فشل الاتصالات، عدم توفر البروكسي، ارتفاع حركة المرور، فشل تحديث الإعدادات، وتبديل مجموعات السياسات؛ يرسل أحداثاً للإشعارات النظامية
- إضافة Mock Response: إرجاع بيانات وهمية للطلبات المطابقة دون الوصول إلى الخادم الحقيقي
- إضافة مجموعة سياسات LoadBalance باستراتيجيات round-robin و consistent-hashing و sticky-sessions
- إضافة أنماط URL Rewrite جديدة: reject-200, reject-img, reject-dict
- إضافة دعم اتجاه الاستجابة لـ Header Rewrite
- إضافة نوع قاعدة PROTOCOL مع 10 قيم نوع بروتوكول
- إضافة نوع قاعدة SCRIPT للمطابقة المخصصة عبر JavaScript
- إضافة خياري extended-matching و requires-resolve للقواعد
- إضافة AnyTLS multi-layer padding scheme
- إضافة طرق تشفير SS2022 (2022-blake3-aes-128/256-gcm, chacha20-poly1305)
- إضافة دعم Managed Configuration
- إضافة دعم Replica لنسخ الإعدادات
- إضافة واجهة إعدادات WireGuard
- إضافة خيار interrupt-exist-connections العام
تحسينات:
- مجموعات السياسات تدعم الآن خيارات expected-status و hidden و idle-timeout و lazy
- تحسين URL Rewrite مع دعم متغيرات القالب في تنسيق Map Local
- تحسين خادم DNS مع دعم بروتوكولات DoQ و DoH3 و DoT
- توسيع نظام القواعد من 6 إلى 30+ نوع قاعدة مع تغطية كاملة
إصلاحات الأخطاء:
- إصلاح القيمة الافتراضية لـ IPv6 (false -> true)
- إصلاح القيمة الافتراضية لمستوى السجل (notify -> warning)، إضافة مستويي none و fatal
- إصلاح اتساق تسمية Shadowsocks/ShadowsocksR في جميع أنحاء التوثيق
- تحسينات متنوعة في الاستقرار والأداء
النسخة 1.1.6 (256)
ميزات جديدة:
- إضافة دعم بروتوكول Hysteria2
- إضافة دعم بروتوكول WireGuard
- إضافة دعم بروتوكول VLESS REALITY
- إضافة protocol sniffer لحركة TUN
- إضافة دعم قاعدة IP-ASN
- إضافة دعم القواعد المنطقية AND/OR/NOT
إصلاحات الأخطاء:
- إصلاح مشاكل ذاكرة محول UDP
- تحسين أداء مطابقة Rule-Set و Domain-Set
- حل أخطاء طفيفة أخرى ومشاكل استقرار
- إصلاح تعطل عرض الترخيص
النسخة 1.1.5 (245)
ميزات جديدة:
- إضافة دعم بروتوكول TUIC
- إضافة دعم Shadowsocks 2022 (SS2022)
- تقديم tunnel configuration
- تحسين عرض السجل في الجلسة
إصلاحات الأخطاء:
- إصلاح مشكلة محول UDP
- تحسين أداء مطابقة Rule-Set و Domain-Set
- حل أخطاء طفيفة أخرى ومشاكل استقرار
النسخة 1.1.2 (231)
ميزات جديدة:
- واجهة iOS 26 UI
إصلاحات الأخطاء:
- إصلاح استجابة DNS IPv6 لتطبيق Gemini
- دعم RULE-SET مع محتوى التعليقات
- إصلاح حالة زر التبديل في مركز الـ Widget
النسخة 1.1.1 (218)
ميزات جديدة:
- دعم سياسة AnyTLS
- دعم Domain-Set
- دعم Rule-set عن بعد
تحسينات:
- إعادة بناء النفق لأداء أفضل
- نفق UDP مختبَر بالكامل
إصلاحات الأخطاء:
- إصلاح تسرب الذاكرة
النسخة 1.1.0 (210)
إصلاحات الأخطاء:
- إصلاح بعض الأخطاء
النسخة 1.0.9 (199)
ميزات جديدة:
- زر تبديل مركز التحكم iOS 18
إصلاحات الأخطاء:
- TUN مع IPv6 الآن يعيد التوجيه إلى نفق IPv6، لإصلاح بعض مشاكل الخدمات
النسخة 1.0.8 (188)
ميزات جديدة:
- دعم سياسة SSH
- إضافة اتصال لوحة التحكم عن بعد
تحسينات:
- تغيير شبكة TUN إلى 198.18.0.0/15 لتجنب مشكلة عنوان IPv4 الداخلي
- تحديث بعض النصوص
إصلاحات الأخطاء:
- إصلاح مشاكل DNS
النسخة 1.0.7 (167)
ميزات جديدة:
- وضع PIP
- مزامنة iCloud لملفات الإعدادات
- إضافة مدير إعدادات tvOS عن بعد
إصلاحات الأخطاء:
- إصلاح Vmess مع Websocket
النسخة 1.0.6 (160)
ميزات جديدة
- واجهة مستخدم جديدة
- إضافة رفع الإعدادات عبر Wi-Fi
- إضافة Network Diagnosis و Proxy Diagnosis
- إضافة وظيفة إعادة تعيين إعدادات VPN
- إضافة دعم حزم ICMP(Ping)
- إضافة فحص حالة VPN
تحسينات:
- تحسين UI/UX تحرير الإعدادات
- تحديث MTU إلى 4000
إصلاحات الأخطاء
- إصلاح أخطاء
- إصلاح إعداد TUN IPv6
النسخة 1.0.5 (147)
ميزات جديدة
- إضافة دعم بروتوكول VLESS
- إضافة دعم XTLS مع VLESS
- إضافة Session Viewer لمراجعة جلسات وسجلات البروكسي
- يمكنك مراجعة اتصالات UDP مع تطبيق Chute Dashboard macOS
تحسينات:
- تحسين تحرير الإعدادات
- تحسين خادم DNS المحلي لتجنب تلوث DNS
- تحسين ترحيل UDP
إصلاحات الأخطاء
- إصلاح عرض IPv6
- إصلاح خادم DNS
النسخة 1.0.4 (143)
ميزات جديدة
- دعم خادم بروكسي HTTP/Socks5 محلي
- دعم IPv6 الكامل
- إضافة دعم
syslibلخادم DNS
تحسينات:
- تحسين تحرير الإعدادات
- إضافة مفتاح Optimistic DNS
- تحسين خادم DNS المحلي
إصلاحات الأخطاء
- إصلاح مشكلة عنوان خادم البروكسي المحلي iOS التي قد تمنع التطبيق من الوصول إلى الشبكة
- إصلاح خادم DNS
النسخة 1.0.3 (138)
ميزات جديدة
- IP وهمي لتجنب تسمم ذاكرة DNS المؤقتة
- تنزيل ملف إعدادات من الإنترنت أو رمز QR
إصلاحات الأخطاء
- إصلاح مشكلة تحرير قاعدة FINAL
النسخة 1.0.2 (130)
ميزات جديدة
- دعم iPad
- دعم
chute://scheme وx-callback-url - إجراء Dashboard
- دعم iPhone 12
- إعادة بناء خادم DNS لأداء واستقرار أفضل
إصلاحات الأخطاء
- تحسين استقرار TCP
- إعادة بناء قفل TCP لتحسين الأداء
- تحسين استقرار UDP
- إصلاح تعطل الإعدادات
النسخة 1.0.1 (111)
- إصلاح فشل WeChat Share Extension
- إصلاح دعم IPv6
- تحديث فحص اكتمال HTTP
النسخة 1.0.0 (101)
- أول إصدار
هذه الصفحة ترجمة للنسخة الإنجليزية. في حال وجود اختلاف، يُعتمد على النسخة الإنجليزية.
ملاحظة: التطبيق لا يدعم اللغة العربية حاليًا.