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

النسخة 1.5.1 (90)

ميزات جديدة:

  • إضافة تسلسل البروكسي إلى المحررات: تعرض السياسة الآن underlying-proxy لكل نوع بروكسي، فيُطلب اتصالها عبر السياسة المسمّاة — فبروتوكولات البث تركب بث المنبع، و Hysteria2 و TUIC و MASQUE و XHTTP عبر HTTP/3 تركب مرحّل UDP الخاص به، وأنفاق WireGuard و AmneziaWG تمر عبره، وجلسات SSH و AnyTLS تُفتح فوقه — ويُرفض عند التحميل أي تسلسل يتكرر حلقياً أو يتجاوز عمقه 16 مستوى أو يسمّي سياسة غير موجودة، بدلاً من الاتصال مباشرة إلى الخارج. ويمكن تسلسل كل نوع بروكسي عدا Tailscale، وتُكتب سياسات TUIC و Hysteria2 و WireGuard و AmneziaWG و ShadowTLS في غير ذلك تماماً كما قُرئت
  • إضافة المنبع على مستوى المجموعة: يكتب محرر المجموعة underlying-proxy= مرة واحدة — بين علامتي اقتباس حين يحمل الاسم فاصلة أو مسافة — فيبلغ كل عضو في تلك المجموعة خادمه عبر السياسة الواحدة المسمّاة هناك
  • إضافة صف Front Proxy تحت Advanced: يكتب global-underlying-proxy، مختاراً من None ومن سياسات الملف ومجموعاته، ويغطي كل عقدة لا تضبط منبعاً خاصاً بها؛ أما close-if-proxy-chain-missing فلا صف له ويُحفظ تماماً كما كُتب
  • إضافة «التنزيل عبر» إلى محرري مزوّد القواعد ومزوّد البروكسي: يجلب policy= تلك القائمة عبر السياسة المختارة، ومع None تُنزَّل مباشرة؛ ويحتفظ محرر مزوّد البروكسي أيضاً بـ underlying-proxy الخاص بالمزوّد
  • إضافة UDP عبر TCP إلى محرر Shadowsocks: مفتاح udp-over-tcp، ومعه ما دام مفعّلاً منتقي UoT Version ‏(1 أو 2؛ ويُستخدم 2 حين لا يُكتب أي إصدار)، فيُحمَل UDP الخاص بهذا البروكسي داخل اتصالات TCP الخاصة به ويظل يعمل عبر منبع لا يحمل UDP. ويجب أن يدعم الخادم UoT، و mihomo يستخدم الإصدار 1. أما الإصدار الذي لا يستطيع المنتقي عرضه فيبقى كما كُتب إلى أن تختار غيره
  • إضافة صف «Proxy Chain» إلى تفاصيل الاتصال: فالاتصال الذي مرّ عبر سلسلة تُذكر كل قفزاته — Airport/HK-01 → Landing — بجانب السياسة التي وجّهته؛ وتعرض تفاصيل الطلب وقائمة UDP في وحدة تحكم الويب المسار نفسه، ويتضمّنه تصدير HAR
  • إضافة مجموعات الترحيل (relay، كما في Clash و mihomo): يُسلسَل الأعضاء بالترتيب الذي كُتبوا به — يُتصل بالأول مباشرة، ويُوصَل إلى كل عضو لاحق عبر الأعضاء الذين يسبقونه، ويتصل الأخير بالوجهة. ويوجد Relay في منتقي نوع المجموعة؛ وتعرض مجموعة الترحيل «Name» و «Group Type» و «Hidden»، وتحفظ أعضاءها بهذا الترتيب، وتُبقي معاملاتها عند الحفظ، ويُرفض ما دون عضوين في غياب مصدر ديناميكي، برسالة خاصة بهذه الحالة
  • إضافة المجموعات العشوائية (random، كما في Shadowrocket): يختار كل اتصال عضواً عشوائياً، ولا يُختار لـ UDP إلا من بين الأعضاء الذين يحملون UDP. ولأن المجموعة العشوائية ليس فيها اختيار يمكن تغييره، فهي لا تظهر في أي موضع تختار فيه سياسة المجموعة، ويُبقيها محرر المجموعة مجموعةً عشوائية
  • إضافة UDP إلى VMess و VLESS: كان UDP المرسَل إلى أيٍّ منهما يُرفض من الأساس (إذ كان يخضع لـ udp-policy-not-supported-behaviour، وقيمته الافتراضية REJECT)؛ أما الآن فينتقل عبر اتصال واحد لكل وجهة، كما في mihomo و sing-box و Shadowrocket
  • إضافة سبب الفشل إلى المزوّد الذي تعذّر تحميل مجموعة قواعده — تنزيل لم ينجح قط، أو حمولة تتجاوز حد الحجم — ويظهر السبب باللون الأحمر في صفه؛ إذ كان مثل هذا المزوّد يبدو تماماً كمزوّد يعمل، في حين لم تكن أي قاعدة تسمّيه تطابق شيئاً
  • لم تعد المحررات تُسقط ما لا تستطيع عرضه: تحتفظ القواعد بالخيارات التي لا صف لها (notification-text و no-resolve و update-interval وغيرها)، وتكتب المطابقة المسبقة بعد السياسة ولـ REJECT وحدها، وتحمّل KEY:value في قاعدة SUBNET، وتميّز في RULE-SET بين SYSTEM و LAN والمزوّد و URL، وتستطيع بناء قواعد فرعية AND / OR / NOT قابلة للتحليل؛ وتحمّل المجموعات أعضاءها المعلَنين، وتخفي المزوّد الذي يُنشئه policy-path، وتحتفظ بالمرشّحات و include-* و default= و interrupt-exist-connections والمعاملات غير المعروفة بترتيبها الأصلي؛ وتحتفظ مدخلات المضيفين بقائمة الخوادم كاملة مع #proxy والتعليق، وتعرض قيم DoH / DoT / DoQ / DoH3، ويُضاف إليها النوع Script؛ ويحتفظ Map Local بالأجسام الثنائية ونوع بياناتها ورمز حالتها، وبترويسة على نمط Surge تحتوي قيمتها على نقطتين؛ وتحتفظ Modules بأسطر #!system_version وبالأسطر الخاصة بالمنصات الأخرى
  • إضافة صفوف للإعدادات التي لم تكن المحررات تستطيع عرضها: DoT / DoQ / DoH3، وخوادم DNS مخصّصة لكلٍّ من direct و proxy-server و fallback، و SVCB، و DNS مشفّر يتبع القواعد ويمكنه تخطي فحص الشهادات، و UDP بلا ترحيل، و proxy-test-url / internet-test-url / test-timeout، وخيارات MitM لـ HTTP/2 وحجب QUIC مع أسماء المضيفين المستثناة، ووضع مرشّح Replica، ومتغيّرات REJECT و PROXY المدمج في منتقيات السياسات، و dns-failed على FINAL، وعناوين IPv6 الحرفية كمضيفين للسياسات؛ ويكسب Header Rewrite الوضع Replace (Regex)، و URL Rewrite الوضعين Reject Array و Reject Tiny GIF، و Scripts النوع العام واسم الحدث، وتحصل نطاقات المنافذ و HOSTNAME-TYPE و PROTOCOL وصيغ المزوّدين على نصوص نائبة توضّح ما تقبله
  • إضافة tun-included-routes: تنضم نطاقات CIDR المدرجة إلى مسارات النفق بعد مساره الافتراضي، فالنطاق الذي كانت ستستحوذ عليه الشبكة الفرعية لواجهة الشبكة نفسها — إذ يفضّل النظام المسار الأدق — يمر عبر Chute. وتُرفض المدخلات التي من شأنها قطع النفق (loopback، والشبكات الفرعية الخاصة بالنفق نفسه، و link-local، و multicast، و broadcast، وطول بادئة 0) مع تسجيل السبب، وتُقبل النطاقات الخاصة مع تحذير، وتُطبَّق القائمة المعدَّلة عند إعادة تحميل ساخنة دون إعادة تشغيل النفق
  • إضافة jq إلى إعادة كتابة الجسم: يشغّل http-request-jq و http-response-jq، حين يُكتبان في ملف الإعداد، برنامج jq حقيقياً على جسم JSON (ولا يعرضهما محرر إعادة كتابة الجسم على Apple TV)؛ ويُبلَّغ عن البرنامج غير الصالح وتُتخطّى قاعدته، أما الجسم الذي ليس JSON، أو البرنامج الذي يفشل، أو الخرج الفارغ، فكلها تترك الجسم دون تغيير
  • إضافة السكريبتات العامة: لا مُشغّل تلقائياً لسكريبت type=generic، فلا يعمل إلا عند الطلب، عبر GET /api/scripts و POST /api/scripts/run
  • إضافة مجموعات DNS مخصّصة: يحلّ direct-dns-server النطاقات التي ترسلها قاعدة إلى DIRECT، ويحلّ proxy-dns-server أسماء خوادم البروكسي نفسها، ويُسأل fallback-dns-server حين لا تعطي الخوادم الرئيسية جواباً؛ وكلٌّ منها يرجع إلى الخوادم العامة
  • إضافة #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>)
  • إضافة 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
  • إضافة مجموعات القواعد المضمّنة: يُشار إلى أقسام [Ruleset Name] في ملف الإعداد بـ RULE-SET,<name>، بما في ذلك إشارة بعضها إلى بعض — بعمق يصل إلى ثمانية مستويات، مع رفض الحلقات؛ وتعرضها قائمة مزوّدي القواعد وتترك تحريرها لملف الإعداد
  • إضافة نطاقات ومقارنات DEST-PORT و SRC-PORT و IN-PORT (80-81 و >=50000 وقوائم /)، وقيم HOSTNAME-TYPE ‏IPv4 و 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، بدلاً من أن تنتهي مهلته
  • إضافة دعم أوسع للاستيراد: تتوسّع قواعد 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 الحدث الذي وقع فعلاً

تحسينات:

  • أصبح كل نص يعرضه التطبيق متوفراً باللغات الثماني كلها: تُرجمت ثماني تسميات كانت تعود إلى الإنجليزية، ومنها صفوف Tailscale، وصارت 88 نصاً كانت صياغتها المدمجة في التطبيق تخالف ملفات اللغة متطابقةً الآن
  • توحّدت المصطلحات بين تطبيقات Chute: يستخدم مرشّح الخطورة في السجل وشاراته السبع أسماء المستويات كما يسمّيها المحرك، وتتبع تسميات موازنة الحمل Chute Mac، وتُسمّى Web Console و Traffic Capture و Mock Response و Local DNS Mapping و HTTP Control API تسميةً موحّدة داخل كل لغة من اللغات الثماني
  • لم يعد استيراد ملف تعريف منشور يُضيّع التوجيه: يقبل dns-server روابط DNS المشفّر، وتقبل أسطر المستمعين كلمة مرور، ويبقى أعضاء المجموعات المكتوبون بين علامتي اقتباس، وتُحوَّل القواعد المنطقية في sing-box كما هو موثّق، ويُسقَط أعضاء PASS بدلاً من أن يصبحوا REJECT، ويكتفي البروتوكول أو نوع المجموعة غير المدعوم بتحذير بدلاً من أن يُسقط مجموعته — وفي ملفات تعريف mihomo المستوردة، تراجعت القواعد التي لا يمكن أن تطابق أبداً من معظم القائمة إلى عدد يكاد لا يُذكر
  • صارت مجموعات القواعد تحتاج إلى ذاكرة أقل بكثير: تُنزَّل المزوّدات واحداً تلو الآخر بدلاً من أن تفشل تماماً بعد المزوّد رقم 35، وانخفضت ذُرى الذاكرة أثناء التحويل بنسبة 62–73%، ويُحدّ عدد اتصالات الفهرس وتُحرَّر عند ضغط الذاكرة، وتُرفض الحمولة الأكبر مما يحتمله Apple TV مع ذكر السبب في صف المزوّد الخاص بها
  • تمنع حدود الموارد الإعدادَ الضخم من دفع امتداد النفق إلى تجاوز حد ذاكرته: فلكلٍّ من مخزن شهادات MitM، والالتقاطات المتراكمة، وحجم السكريبتات وعددها، وميزانية الطلبات في وحدة التحكم، وأقران Tailscale، وذاكرة DNS المؤقتة حدٌّ أقصى على Apple TV
  • تستخدم اختبارات زمن الاستجابة الهدف الصحيح: يُؤخذ في الحسبان كلٌّ من test-url و test-timeout الخاصين بالمجموعة، و proxy-test-url في الملف، و test-url و expected-status الخاصين بالعضو، وتُختبر العقدة المسلسَلة عبر سلسلتها بدلاً من اختبارها مباشرة
  • وحدة تحكم الويب وواجهة التحكم: لم تعد القاعدة المضافة أثناء التشغيل تبقى بعد إعادة تحميل الملف نفسه، وتبقى مؤشرات السجل تصاعدية دائماً فلا يفوّت الاستطلاع أي مدخل
  • أصبح ShadowTLS يتحقق من شهادة موقع التغطية حين يُكتب sni=، كما يفعل sing-box؛ ويوقف skip-cert-verify=true هذا التحقق (وكان هذا الخيار يُتجاهَل من قبل، ولم يكن يُتحقَّق من أي شهادة إطلاقاً)، ومن دون sni= يُتخطّى التحقق مع تحذير

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

  • إصلاح اختفاء قائمة الإعدادات بعد تحديث التطبيق: تُخزَّن الإعدادات في مجلد Caches الخاص بالتطبيق — وهو المكان الوحيد الذي يسمح فيه tvOS للتطبيق بالكتابة، والنظام يفرّغه متى احتاج إلى استعادة المساحة — فقد يترك التحديث القائمة فارغة دون أي شيء على الشاشة يوضح السبب. وابتداءً من هذا الإصدار، يُحفظ كل إعداد أيضاً في مخزن الإعدادات الخاص بالتطبيق، الذي لا يمسحه النظام (نصّه ما دام 256 KB أو أقل، وعنوان اشتراكه وفترة تحديثه دائماً)؛ وتُعاد كتابة الملفات المفقودة عند تشغيل التطبيق وعند عودته إلى المقدمة، وتُنزَّل من جديد الإعدادات التي لم يبقَ منها سوى عنوانها، وتعرض الشاشة الرئيسية «Restored N configuration(s).». أما الإعداد الذي تحذفه بنفسك فيُنسى، فلا يعود. ولا يمكن بهذا استعادة الإعدادات التي فُقدت قبل أول تشغيل لهذا الإصدار، ولا الإعداد الذي يتجاوز 256 KB ولم يأتِ من أي عنوان، ولا يُستعاد شيء إذا شُغِّل النفق من مركز التحكم قبل أن يُفتح التطبيق ولو مرة واحدة
  • إصلاح إعدادات SSID على Apple TV: كان فتح SSID Suspend يطلق استثناءً لأي مدخل بلا SSID (TYPE: أو BSSID: أو ROUTER:)، وكانت القائمة تعيد كتابة [SSID Setting] في كل زيارة، وكان محررا SSID والشبكة الفرعية يُسقطان أعضاء لا صف لهم. تعرض القائمة الآن مدخلات "<name>" suspend=true البسيطة وحدها وتُبقي كل ما عداها في مكانه، ويحفظ محرر مجموعة ssid أعضاءه بترتيب التعريف مع خيار «Match By»، وعند حفظ أيٍّ منها يُنبَّه إلى أن هذه الإعدادات غير متاحة على Apple TV وأنها تُحفظ لاستخدامها على iOS و macOS
  • إصلاح المحررات التي كانت تُتلف المدخلات التي لا تستطيع عرضها كاملة: كان مدخل [Host] ذو العناوين المتعددة يُختصر إلى أولها بمجرد فتحه، وكانت قيمة [Script] التي تحتوي على فاصلة (تعبير cron مثل 0 8,20 * * *، أو وسيط JSON) تُبتر عند كل حفظ، وكان سطر [Body Rewrite] يفقد أزواج تعبيراته النمطية الإضافية، وكان سطر القاعدة أو المجموعة أو المضيف أو Map Local أو إعادة كتابة الترويسة يفقد الخيارات التي لا صف لها، وكان Advanced يحذف المسافات داخل مدخلات قوائمه في كل زيارة. أما الملف الذي يُحفظ دون فتح المدخل فلم يتأثر قط، ولهذا مرّ الخلل دون أن يُلاحَظ
  • إصلاح اختلاط التنزيلات: صار كل تنزيل يذهب إلى ملف مؤقت خاص به، يُحذف بمجرد قراءته، وكذلك حين يفشل التنزيل أو القراءة، فلم يعد التحديث المُدار يقرأ تنزيله الأول إلى الأبد، ولم يعد عنوانان يقترحان الاسم نفسه يكتب أحدهما فوق الآخر — ولم يعد اسم الملف الذي يقترحه الخادم قادراً على تحديد مكان كتابة الملف
  • إصلاح تحديد الصيغة من اسم الملف: صار «التنزيل من رابط» وتحديث الإعداد المُدار يحكمان على ما يقدّمه العنوان من جسمه، فيُحوَّل عنوان .conf يقدّم Clash عند إضافته، والتحديث الذي يصادف عنواناً كهذا يترك الملف كما هو؛ ويجري التحويل قبل إضافة أي ترويسة MANAGED-CONFIG، والتحويل الذي يفشل يعرض أول خطأ له، ويُعرض عدد ملاحظاته على الشاشة وتُكتب في السجل
  • إصلاح الرفع والتنزيل في صفحة Wi-Fi: صار /up يحوّل Clash و sing-box كما يفعل /upload، ويحفظ كلاهما <name>.conf، ويُرفض الاسم الذي يستخدمه إعداد آخر، ولم يعد /download ينتج .conf.conf وصار يرسل filename* مرمّزاً، ويقارن /delete الأسماء بصيغة NFC مبتدئاً بالمطابقة التامة — فلا يستطيع الاسم نفسه مكتوباً بصيغة يونيكود أخرى أن يحذف الإعداد قيد الاستخدام، ولا أن يُفلته من فحص الاستخدام
  • إصلاح الحفظ الصامت فوق إعداد يحمل الاسم نفسه: صار المحرر و«التنزيل من رابط» يسألان أولاً، والكتابة فوق الإعداد الذي يشغّله النفق تعيد تحميله
  • إصلاح ظهور مجموعات السياسات المخفية في قائمتي المجموعات و Global الخاصتين بالنفق؛ أما المجموعة المخفية المستخدمة حالياً فتبقى، و Global الذي يشير إلى مجموعة select يُدرج ويُعلَّم بعلامة الاختيار ويُستعاد بالاسم
  • إصلاح التسليم عبر رمز QR في صفحة الرفع عبر Wi-Fi: عاد رابط التسليم chute://tv?url= مضمَّناً في الصفحة نفسها، فمسح الرمز يفتح تطبيق Chute iOS كما تعد الصفحة؛ ويتم التسليم من iPad أيضاً، لأن iPadOS يعرّف نفسه كمتصفح سطح مكتب ففاتَه الفحص المقصور على الهواتف؛ والمتصفح الذي يرفض فتح مخطط مخصّص دون نقرة يظهر له الآن زر «Open in Chute»، مترجَماً إلى لغات الصفحة التسع
  • إصلاح عدة انهيارات: في Settings › Sessions، وفي محرر الإعداد لملف يضبط loglevel = none، وعند جلسة تركها النفق نصف مكتوبة (ولم يكن ممكناً فتحها بعد ذلك أبداً)، وعند كل تشغيل بعد ردّ غير متوقع من خادم الترخيص، وعند التشغيل وفي «عرض الترخيص» حين يتعذّر قراءة الترخيص، وعند كل زيارة لقائمة الإعدادات حين يحتوي المجلد المشترك على ملف نظام دخيل. وصار إفراغ حقل في الإعدادات يفرّغه فعلاً
  • إصلاح تحديث الاشتراك المستحق الذي كان يؤخّر قائمة الإعدادات وحفظ التعديلات مدة تصل إلى 30 ثانية؛ وصار التحديث يُستكمل حين ينتهي تنزيله، دون أن يؤخّر أي شيء
  • إصلاح انهيارات سببها تعديل خيطين للبيانات نفسها في آن واحد — أثناء الإطلاق البارد، وأثناء قراءة سجل الجلسة، وأثناء تحديث قائمة الجلسات
  • إصلاح إعادة استخدام النفق بعد إعادة تشغيله أولَ منفذ محلي وأرقامَ تسلسل 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-PATH و PROCESS-NAME-REGEX التي كانت تُفحص على Apple TV مقابل اسم ليس اسم عملية؛ فهي، مثل PROCESS-NAME، لا تعمل إلا على macOS ولا تطابق أي شيء هنا
  • تحسينات متنوعة في الاستقرار والأداء

النسخة 1.4 (75)

ميزات جديدة:

  • إضافة صف «Web Console Address» إلى لوحة التحكم: يظهر بمجرد أن يعمل مستمع وحدة التحكم فعلاً، وفتحه يعرض رمز QR يحمل رابطه رمز الوصول — فمسحه بالهاتف يسجّل الدخول دون نسخ عنوان و 32 خانة ست عشرية بجهاز التحكم
  • إضافة «حزمة التشخيص دون اتصال» في الإعدادات، يبنيها التطبيق دون نفق يعمل: تفاصيل الجهاز والتطبيق، وملف VPN كما يحتفظ به tvOS، وملخص الإعداد المحدد وأخطاء تحليله، وقسم للشبكة (إمكانية الوصول، ونوع الوصلة، وخوادم DNS، والعناوين والواجهات المحلية)، وبداية الإعداد المنقّحة، وكيف انتهى التشغيل السابق، وشرائح سجل أحدث جلسة، وتقارير الانهيار المنتظرة. ولأن tvOS لا يملك ورقة مشاركة، يقدّم الأرشيفَ خادمُ HTTP محلي يعمل مرة واحدة على مسار لا يمكن تخمينه، ويُعرض رمز QR؛ ويتوقف الرابط عن العمل بمجرد إغلاق الشاشة
  • إضافة مرشّح حسب مستوى الخطورة إلى سجل الجلسة — الكل و Notify+ و Warning+ و Fatal — فيصبح «أرني التحذيرات» نقرة واحدة بدل بحث يُكتب على لوحة مفاتيح الشاشة؛ ولا تُخفى أبداً الأسطر التي لم يستطع المحلل تصنيفها
  • إضافة نسب إعادة الكتابة إلى تفاصيل الجلسة: يذكر قسم «REWRITES»، بجانب القاعدة والسياسة اللتين وجّهتا الطلب، قاعدة URL Rewrite أو Header Rewrite أو Body Rewrite أو Mock Response التي غيّرته
  • إضافة صف «Allow Wi-Fi Access» إلى محرر الإعداد — وهو المفتاح الذي ينتج عن استيراد http-listen = 0.0.0.0:… من Surge أو allow-lan من sing-box، وحالة لم يكن المحرر يستطيع عرضها إطلاقاً؛ وما دام مفعّلاً يُظهر صفّا المستمعين «مفعّل» ويُقفلان، لأن المحرك يوسّع المستمعين بنفسه
  • إضافة الفرنسية لغةً مدمجة، والإعلان عن اللغات المدمجة الثماني كلها في App Store
  • إضافة تبويبي «الحالية» و«السجل» إلى وحدة تحكم الويب، وعرض فحص (القاعدة المطابِقة، ومصدر القاعدة، والسياسة، والمحوّل، ومصدر DNS، وسبب الإغلاق، وجسما الطلب والاستجابة)، وصفحة قواعد تبيّن أي قواعد إعادة كتابة انطلقت، وصفحة تشخيص (البصمة، و CPU، ومدة التشغيل، والتدفقات، وكيف انتهى التشغيل السابق، وعدّاد الرفض، وسجل الأحداث، ولقطة Tailscale، ومسابر ping و DNS والخروج واختبار URL)؛ وأصبحت وحدة التحكم مكتملة بجميع اللغات التسع — ولأن التلفاز نفسه لا مكان فيه لحفظ ملف، فمن وحدة التحكم أيضاً ينزّل مستخدم tvOS حزمة تشخيص وقت التشغيل أو تصدير HAR
  • إضافة نقاط نهاية إلى 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: يولّد المحرك رمزاً يحمله رمز QR الخاص بـ Web Console Address؛ اضبط 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 السياسة المختارة والقاعدة المطابِقة وإصابات إعادة الكتابة
  • لا تحتاج إلى ترخيص سوى الميزات الثلاث التي تبيعها صفحة الشراء — الإعدادات المتعددة والتحكم بخادم الوكيل المحلي ومسجّل حركة المرور؛ ولم يعد مفتاحا HTTP API و Web Console ولا تعرّف البروتوكول و Optimus DNS ومسح ذاكرة DNS المؤقتة وصف «Web Console Address» تطلب ترخيصاً، ويُطلب من المستخدم المجاني والنفق متوقف أن يشغّله بدلاً من عرض صفحة الشراء عليه
  • وحدة التحكم المرتبطة بعنوان loopback تقول الآن إنها لا تُفتح إلا على جهاز Apple TV هذا وما الذي ينبغي ضبطه بدلاً من ذلك، بدل تقديم رمز QR لا يقود إلى شيء؛ ولم يعد رمز الوصول يُطبع على شاشة تراها الغرفة كلها
  • يوضح إشعار الشراء الآن أن الشراء الواحد يغطي ثلاثة أجهزة Apple TV وثلاثة أجهزة iPhone أو iPad؛ وحين لا تجد «استعادة شراء IAP» شيئاً، يعرض التنبيه «عرض الدليل» ويقدّم رمز QR لتعليمات الترخيص عبر المنصات بلغة التطبيق
  • عند loglevel = info، يسجّل التدفق الضخم الذي نقل 1 MiB على الأقل سطراً واحداً عند الإغلاق يبيّن كم انتظر الطرف البعيد وكم انتظر التطبيق

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

  • إصلاح MitM في وضع TUN: كان المضيف المطابِق لقاعدة MitM يتوقف حتى انتهاء المهلة، فلم تسرِ قط على حركة مرور التطبيقات إعادة كتابة الترويسات والأجسام والاستجابة الوهمية والالتقاط المفكوك التشفير في HTTPS (لم تتأثر حركة المرور عبر وكيل HTTP/SOCKS5 المحلي)
  • إصلاح allow-wifi-access الذي لم يكن له أثر: ظل مستمعا HTTP و SOCKS5 المحليان على loopback فلم يتمكن شيء على Wi-Fi من الوصول إليهما؛ أصبح الخيار الآن (و allow-lan في sing-box عند الاستيراد) يوسّع المستمعين، وتعطيله يعيد ربطهما
  • إصلاح انهيار التطبيق عند تبديل أي مفتاح في القسم الثاني من لوحة التحكم بعد أن صار صف «Web Console Address» قابلاً للظهور، إذ كان عدد صفوف الجدول يتغيّر أثناء إعادة تحميل صف واحد
  • إصلاح عرض الجلسة الذي كان يُظهر شريحة عشوائية من التشغيل، وفقدان الجلسة تاريخها بعد التدوير الثامن، منذ أن صار المحرك يدوّر سجله عند حجم ثابت؛ فالشرائح تُرتَّب الآن بحسب رقمها، ولم يعد العرض الحي يتجمّد عند التدوير
  • إصلاح قراءة عارض السجل كل شرائح الجلسة إلى الذاكرة دفعة واحدة — حتى 64 MB من النص على جهاز Apple TV — ومرشّح الخطورة الذي كان يمرّر أسطر التكملة لمدخل متعدد الأسطر بينما يخفي المدخل نفسه
  • إصلاح إعادة كتابة ترويسة الاستجابة عبر 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. وكان النص البديل لهذه القاعدة في المحرر يقول http | https وهو من نصيب PROTOCOL، ونص IN-TYPE يقول TCP | UDP؛ وكلاهما يذكر الآن ما تقبله القاعدة فعلاً
  • إصلاح قراءة عنوان IPv6 حرفي بين قوسين معقوفين في ترويسة Host متعرَّف عليها ([2001:db8::1]:8080) على أنه اسم المضيف [2001
  • إصلاح بدء النفق ومجموعة select مضبوطة على عضو غير الأول، ما كان ينشر إشعار «تبدّلت مجموعة السياسات»، وإعادات البناء التالية للبدء التي كانت تطلق تحذير التذبذب؛ والمجموعة التي لا اختيار محفوظاً لها تتبع الآن default= في الملف بدلاً من إجبارها على عضوها الأول
  • إصلاح رفض external-http-controller = *:9090 و :::9090 — وكلاهما كتابة موثّقة — فكان المتحكم يمتنع عن البدء دون أي تنبيه
  • إصلاح انهيار عرضي في نقل XHTTP تحت الحمل
  • إصلاح شاشة الترخيص التي كانت تصف شهادة منتج آخر بأنها حزمة Chute؛ وما لا يمكن لهذا التطبيق حمله بحق يظهر الآن «غير معروف»، وأُضيفت تسمية Android
  • إصلاح رمز QR الخاص بـ «Chute iOS» في شاشة «حول» الذي كان يشير إلى معرّف App Store معطّل، و«تقييم» الذي كان يفتح صفحة نسخة iOS بدل صفحة هذا التطبيق
  • إصلاح تخطيط صفحة الرفع عبر Wi-Fi
  • تصحيح الأسماء الصينية والتايلاندية لعائلات إعادة الكتابة لتطابق الدليل وأسماء الأقسام في ملف الإعداد نفسه
  • تحسينات متنوعة في الاستقرار والأداء

النسخة 1.3 (62)

ميزات جديدة:

  • إضافة نقل XHTTP إلى محرر السياسات — مفتاح التفعيل، والوضع (auto وpacket-up وstream-up وstream-one)، والمسار، والمضيف — لبروتوكولات Trojan وVMess وVLESS
  • إضافة طرق تشفير Shadowsocks: AEGIS-128L وAEGIS-256
  • إضافة طرق تشفير Shadowsocks 2022 (SS2022) التي كانت ناقصة: 2022-blake3-aes-128-gcm و2022-blake3-aes-256-gcm و2022-blake3-chacha20-poly1305
  • إضافة إعدادات ECH (تحية العميل المشفّرة) لسياسات TLS: مفتاح التفعيل، وتثبيت إعداد ECH (ech-config)، وتجاوز اسم التغطية (ech-public-name)
  • إضافة بصمة العميل (uTLS) لكل سياسة، مع قيمة افتراضية على مستوى الملف الشخصي
  • إضافة دعم بروتوكول AmneziaWG، وهو نسخة من WireGuard مع تمويه حركة المرور
  • إضافة شاشة لتقرير أخطاء التكوين تدعم تنقّل التركيز في tvOS لتحل محل التنبيه الذي يمنع التفاعل
  • إضافة تبادل مفاتيح هجين مقاوم للحوسبة الكمية X25519MLKEM768 لـ TLS 1.3

تحسينات:

  • عند الحفظ، يحتفظ محرر السياسات الآن بالخيارات الموجودة التي لا يمكن تعديلها في الواجهة الحالية (ECH وALPN وتثبيت الشهادة وtest-url وudp-relay)

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

  • إصلاح انهيار النفق الناتج عن قواعد IP-CIDR غير السليمة
  • إصلاح مشكلة كتابة إعدادي SSH idle-timeout وREALITY spiderx بمفتاحين خاطئين وإهمالهما عند الحفظ
  • إصلاح انهيار عند تبديل اللغة
  • إصلاح مشاكل عرض عناصر التحكم على الشاشة
  • تحسينات متنوعة في الاستقرار والأداء

النسخة 1.2 (45)

ميزات جديدة:

  • إضافة Tailscale كنوع بروكسي مدمج: اضبط حساب Tailscale، وانضم إلى tailnet، وحوّل حركة Apple TV عبر عُقد Tailscale - دون الحاجة إلى عميل منفصل
  • إضافة لوحة تحكم Tailscale تعرض حالة العُقدة في الوقت الفعلي (متصل/غير متصل، IP، آخر ظهور) وتتيح تبديل عُقدة الخروج من الريموت
  • إضافة عرضَي Dashboard و Sessions بملء الشاشة مع سجل جلسات داكن لكل مستوى
  • إضافة لوحة تفاصيل النفق لفحص الأنفاق النشطة
  • إضافة نوع البروكسي MASQUE إلى محرّر السياسات

تحسينات:

  • تحسين إنتاجية TUN على Apple TV
  • تحسين استقرار اتصالات Tailscale و WireGuard وإنتاجيتها
  • تحسين تنقّل التركيز على الشاشة الرئيسية عبر القوائم وزر الطاقة وصف About ليكون أكثر قابلية للتنبّؤ
  • محاذاة تخطيط الإعدادات مع iOS (إزالة عنصر Always On، Twitter->X، وتحسين صفوف APNs و Rate و Language)
  • عرض IP الجهاز في القائمة الجانبية اليمنى فقط عند إيقاف VPN

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

  • إصلاح حالة "VPN لا يعمل" الخاطئة وتسميات "يعمل" العالقة في لوحة المعلومات
  • إصلاح فقدان التركيز وقفزه عند فتح Dashboard/Sessions وعند العودة من قائمة عُقد Tailscale
  • إصلاح سلوك زر Menu بحيث يغلق القوائم ويعيد التركيز بشكل موثوق
  • تصحيح نص تذييل قائمة الجلسات من "اسحب للحذف" إلى "اضغط مطولاً للحذف"
  • تحسينات متنوعة في الاستقرار والأداء

النسخة 1.0 (35)

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

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

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

results matching ""

    No results matching ""