บันทึกการอัปเดต Chute tvOS
เวอร์ชัน 1.5.1 (90)
คุณสมบัติใหม่:
- เพิ่มการเชื่อมโยงพร็อกซีเป็นลูกโซ่ในตัวแก้ไข: ตอนนี้ทุกประเภทพร็อกซีมีช่อง
underlying-proxyการเชื่อมต่อของนโยบายจึงถูกต่อออกผ่านนโยบายที่ระบุชื่อไว้ — โปรโตคอลแบบสตรีมวิ่งบนสตรีมของอัปสตรีม ส่วน Hysteria2, TUIC, MASQUE และ XHTTP บน HTTP/3 วิ่งบน UDP relay ของอัปสตรีม อุโมงค์ WireGuard และ AmneziaWG วิ่งผ่านอัปสตรีม และเซสชัน SSH กับ AnyTLS เปิดผ่านอัปสตรีม — ส่วนลูกโซ่ที่วนซ้ำ ลึกเกิน 16 ชั้น หรือระบุชื่อนโยบายที่ไม่มีอยู่จะถูกปฏิเสธตั้งแต่ตอนโหลด แทนที่จะเชื่อมต่อออกโดยตรง ทุกประเภทพร็อกซียกเว้น Tailscale เชื่อมโยงเป็นลูกโซ่ได้ และนโยบาย TUIC, Hysteria2, WireGuard, AmneziaWG และ ShadowTLS จะถูกเขียนกลับตรงตามที่อ่านมาเหมือนเดิม - เพิ่มพร็อกซีต้นทางระดับกลุ่ม: ตัวแก้ไขกลุ่มเขียน
underlying-proxy=เพียงครั้งเดียว — โดยใส่เครื่องหมายคำพูดเมื่อชื่อมีเครื่องหมายจุลภาคหรือช่องว่าง — สมาชิกทุกตัวของกลุ่มนั้นจึงเข้าถึงเซิร์ฟเวอร์ของตนผ่านนโยบายเดียวที่ระบุไว้ตรงนั้น - เพิ่มแถว «พร็อกซีด่านหน้า» ภายใต้ «ขั้นสูง»: แถวนี้เขียน
global-underlying-proxyโดยเลือกจาก «ไม่มี» กับนโยบายและกลุ่มของโปรไฟล์ และครอบคลุมทุกโหนดที่ไม่ได้ตั้งพร็อกซีต้นทางของตัวเอง;close-if-proxy-chain-missingไม่มีแถวและถูกเก็บไว้ตรงตามที่เขียน - เพิ่ม «ดาวน์โหลดผ่าน» ในตัวแก้ไขผู้ให้บริการกฎและผู้ให้บริการพร็อกซี:
policy=ดึงรายการนั้นผ่านนโยบายที่เลือก และ «ไม่มี» จะดาวน์โหลดโดยตรง; ตัวแก้ไขผู้ให้บริการพร็อกซียังเก็บunderlying-proxyของผู้ให้บริการไว้ด้วย - เพิ่ม «UDP ผ่าน TCP» ในตัวแก้ไข Shadowsocks: สวิตช์
udp-over-tcpและเมื่อเปิดอยู่จะมีตัวเลือก «เวอร์ชัน UoT» (1 หรือ 2; หากไม่ได้เขียนเวอร์ชันไว้จะใช้ 2) UDP ของพร็อกซีนี้จึงวิ่งอยู่ภายในการเชื่อมต่อ TCP ของตัวเอง และยังใช้งานได้ผ่านอัปสตรีมที่ไม่รับส่ง UDP เซิร์ฟเวอร์ต้องรองรับ UoT และ mihomo ใช้เวอร์ชัน 1 เวอร์ชันที่ตัวเลือกแสดงไม่ได้จะถูกเก็บไว้ตามที่เขียน จนกว่าคุณจะเลือกเวอร์ชันอื่น - เพิ่มแถว «เชนพร็อกซี» ในรายละเอียดการเชื่อมต่อ: การเชื่อมต่อที่ผ่านสายต่อพ่วงจะแสดงทุกฮอป —
Airport/HK-01 → Landing— ไว้ข้างนโยบายที่กำหนดเส้นทางให้; รายละเอียดคำขอและรายการ UDP ในคอนโซลเว็บก็แสดงเส้นทางเดียวกัน และไฟล์ HAR ที่ส่งออกก็มีเส้นทางนี้ด้วย - เพิ่มกลุ่มรีเลย์ (
relayแบบเดียวกับใน Clash และ mihomo): สมาชิกถูกต่อพ่วงกันตามลำดับที่เขียนไว้ — ตัวแรกเชื่อมต่อโดยตรง ตัวถัด ๆ ไปเข้าถึงผ่านตัวที่อยู่ก่อนหน้า และตัวสุดท้ายเชื่อมต่อไปยังปลายทาง ตัวเลือกประเภทกลุ่มมี Relay; กลุ่มรีเลย์แสดง «ชื่อ» «ประเภทกลุ่ม» และ «ซ่อน» เก็บสมาชิกตามลำดับนั้น และคงพารามิเตอร์ของกลุ่มไว้เมื่อบันทึก ส่วนกลุ่มที่มีสมาชิกน้อยกว่าสองตัวและไม่มีแหล่งสมาชิกแบบไดนามิกจะถูกปฏิเสธพร้อมข้อความเฉพาะ - เพิ่มกลุ่มสุ่ม (
randomแบบเดียวกับใน Shadowrocket): ทุกการเชื่อมต่อจะสุ่มเลือกสมาชิกหนึ่งตัว โดย UDP จะสุ่มเฉพาะจากสมาชิกที่รับส่ง UDP ได้ กลุ่มสุ่มไม่มีตัวเลือกให้เปลี่ยน จึงไม่ปรากฏในจุดที่ใช้เลือกนโยบายของกลุ่ม และตัวแก้ไขกลุ่มจะคงให้เป็นกลุ่มสุ่มไว้ - เพิ่ม UDP ให้ VMess และ VLESS: เมื่อก่อน UDP ที่ส่งไปยังโปรโตคอลทั้งสองจะถูกปฏิเสธทันที (โดยเป็นไปตาม
udp-policy-not-supported-behaviourซึ่งค่าเริ่มต้นคือ REJECT) ตอนนี้ UDP จะวิ่งผ่านการเชื่อมต่อแยกหนึ่งเส้นต่อหนึ่งปลายทาง เหมือนใน mihomo, sing-box และ Shadowrocket - เพิ่มการแสดงเหตุผลให้ผู้ให้บริการที่โหลดชุดกฎไม่สำเร็จ — การดาวน์โหลดที่ไม่เคยสำเร็จ หรือเพย์โหลดที่เกินขีดจำกัดขนาด — เป็นสีแดงบนแถวของผู้ให้บริการนั้น; เมื่อก่อนผู้ให้บริการแบบนี้ดูเหมือนตัวที่ทำงานปกติทุกประการ ทั้งที่ทุกกฎที่อ้างถึงมันไม่จับคู่อะไรเลย
- ตัวแก้ไขไม่ทิ้งสิ่งที่แสดงไม่ได้อีกต่อไป: กฎเก็บตัวเลือกที่ไม่มีแถวรองรับ (
notification-text,no-resolve,update-intervalและอื่น ๆ) เขียน pre-matching ต่อจากนโยบายและเฉพาะกับ REJECT โหลดKEY:valueของกฎ SUBNET แยก SYSTEM, LAN, ผู้ให้บริการ และ URL ออกจากกันใน RULE-SET และสร้างกฎย่อย AND / OR / NOT ที่แยกวิเคราะห์ได้; กลุ่มโหลดสมาชิกที่ประกาศไว้ ซ่อนผู้ให้บริการที่policy-pathสร้างขึ้น และเก็บตัวกรอง,include-*,default=,interrupt-exist-connectionsและพารามิเตอร์ที่ไม่รู้จักไว้ตามลำดับเดิม; รายการโฮสต์เก็บรายการเซิร์ฟเวอร์ทั้งหมดพร้อม#proxyและคอมเมนต์ แสดงค่า DoH / DoT / DoQ / DoH3 และมีประเภท «สคริปต์» เพิ่ม; Map Local เก็บเนื้อหาแบบไบนารี ชนิดข้อมูล และรหัสสถานะไว้ และเก็บส่วนหัวแบบ Surge ที่ค่ามีเครื่องหมายทวิภาคไว้ด้วย; โมดูลเก็บบรรทัด#!system_versionและบรรทัดของแพลตฟอร์มอื่นไว้ - เพิ่มแถวสำหรับการตั้งค่าที่ตัวแก้ไขเคยแสดงไม่ได้: DoT / DoQ / DoH3, DNS เฉพาะทางสำหรับการเชื่อมต่อตรง / เซิร์ฟเวอร์พร็อกซี / สำรอง, SVCB, DNS แบบเข้ารหัสที่ทำตามกฎและข้ามการตรวจสอบใบรับรองได้, UDP ที่ไม่มีรีเลย์,
proxy-test-url/internet-test-url/test-timeout, MitM สำหรับ HTTP/2 และการบล็อก QUIC พร้อมชื่อโฮสต์ที่ยกเว้น, โหมดตัวกรองของ Replica, ตระกูล REJECT และ PROXY ในตัวในตัวเลือกนโยบาย,dns-failedบน FINAL และ IPv6 แบบตัวเลขตรง ๆ เป็นโฮสต์ของนโยบาย; Header Rewrite มี «แทนที่ส่วนหัว (Regex)» เพิ่ม, URL Rewrite มี «ปฏิเสธ (อาร์เรย์)» และ «ปฏิเสธ (GIF ขนาดเล็ก)» เพิ่ม, สคริปต์มีประเภท generic และชื่อเหตุการณ์เพิ่ม และช่วงพอร์ต, HOSTNAME-TYPE, PROTOCOL และรูปแบบของผู้ให้บริการมีข้อความตัวอย่างที่บอกว่ารับค่าแบบใดได้ - เพิ่ม
tun-included-routes: CIDR ที่ระบุจะถูกเพิ่มเข้าในเส้นทางของอุโมงค์ต่อจากเส้นทางเริ่มต้น ช่วงที่อยู่ที่ปกติจะถูกซับเน็ตของอินเทอร์เฟซเครือข่ายเองแย่งไป — เพราะระบบเลือกเส้นทางที่เจาะจงกว่า — จึงวิ่งผ่าน Chute แทน รายการที่จะทำให้อุโมงค์ถูกตัดขาด (loopback, ซับเน็ตของอุโมงค์เอง, link-local, multicast, broadcast, ความยาวพรีฟิกซ์ 0) จะถูกปฏิเสธพร้อมบันทึกเหตุผลไว้ในบันทึก ช่วงที่อยู่ส่วนตัวใช้ได้แต่มีคำเตือน และรายการที่แก้ไขจะมีผลเมื่อโหลดร้อน (hot reload) โดยไม่ต้องเริ่มอุโมงค์ใหม่ - เพิ่ม jq ใน Body Rewrite:
http-request-jqและhttp-response-jqที่เขียนไว้ในไฟล์การกำหนดค่าจะรันโปรแกรม jq จริงกับเนื้อหา JSON (ตัวแก้ไข Body Rewrite บน 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 relay ของนโยบาย นโยบายที่รับส่ง UDP ไม่ได้จะข้ามเซิร์ฟเวอร์นั้นแทนที่จะถามเซิร์ฟเวอร์โดยตรง ตัวแปลงชื่อแบบธรรมดาที่ส่งผ่านนโยบายจะเปลี่ยนไปใช้ DNS over TCP และรองรับอัปสตรีมแบบtcp://ธรรมดาสำหรับเส้นทางที่ทิ้ง DNS over UDP - เพิ่ม
encrypted-dns-follow-outbound-mode,allow-dns-svcb— คำขอ HTTPS และ SVCB จะได้คำตอบว่างหากไม่ได้เปิดตัวเลือกนี้ — และตัวเลือกรายเซิร์ฟเวอร์#h3,#skip-cert-verify,#disable-ipv4,#disable-ipv6และ#disable-qtype= - เพิ่มความสามารถให้ «การกำหนด DNS เฉพาะที่»: รายการ
[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 ที่ถูกแบ่งอยู่ในหลาย Initial จะถูกประกอบกลับ และโฟลว์จะถูกพักไว้จนกว่าจะรู้ชื่อ กฎ DOMAIN จึงกำหนดเส้นทางการเชื่อมต่อ HTTP/3 ที่ทำไปยังที่อยู่ IP ตรง ๆ ได้
- เพิ่ม
icmp-auto-replyซึ่งเปิดเป็นค่าเริ่มต้น: ping ภายในอุโมงค์จะได้รับการตอบกลับจากในเครื่อง ทั้งบน IPv4 และ IPv6 แทนที่จะหมดเวลา - เพิ่มความสามารถในการนำเข้า: กฎ GEOSITE และกฎ GEOIP แบบหมวดหมู่ของ mihomo ขยายเป็นชุดกฎที่ใช้งานได้จริง กลุ่ม
policy-pathสร้างผู้ให้บริการพร้อมupdate-intervalตัวกรอง และรายการ include,SUB-RULEของ mihomo ขยายเป็นกฎ AND,detourของ sing-box และdialer-proxyของ mihomo นำเข้าเป็นการต่อพ่วง,allowed-ipsของ WireGuard ถูกคอมไพล์และบังคับใช้ อุโมงค์แบบแยกเส้นทางจึงไม่กลืนทุกปลายทางอีกต่อไป และinterface=/allow-other-interface=ของนโยบายจะตรึงการเชื่อมต่อของนโยบายไว้กับอินเทอร์เฟซเครือข่ายเดียว - เพิ่มความสามารถของ API สคริปต์:
$httpAPIเรียกเส้นทางของเอนจินเองได้โดยไม่ต้องเปิดซ็อกเก็ต,$httpClientทำตามpolicyที่ระบุ,read-etc-hostsป้อนไฟล์ hosts ให้ DNS และ$event.nameรายงานเหตุการณ์ที่เกิดขึ้นจริง
การปรับปรุง:
- ทุกสตริงที่แอปแสดงมีครบทั้งแปดภาษาแล้ว: ป้ายกำกับแปดรายการที่เคยแสดงเป็นภาษาอังกฤษ รวมถึงแถวของ Tailscale ได้รับการแปลแล้ว และข้อความ 88 รายการที่ถ้อยคำในตัวแอปไม่ตรงกับไฟล์ภาษาของแอปก็ตรงกันแล้ว
- คำศัพท์ตรงกันทั่วทั้งแอป Chute แล้ว: ตัวกรองระดับความรุนแรงของบันทึกและป้ายทั้งเจ็ดใช้ชื่อระดับเดียวกับเอนจิน ป้ายกำกับ load-balance ทำตาม Chute Mac และคอนโซลเว็บ การดักจับทราฟฟิก การตอบกลับจำลอง การกำหนด DNS เฉพาะที่ และ HTTP Control API ใช้ชื่อสอดคล้องกันภายในแต่ละภาษาทั้งแปดภาษา
- การนำเข้าโปรไฟล์ที่เผยแพร่ไม่ทำให้การกำหนดเส้นทางสูญหายอีกต่อไป:
dns-serverรองรับ URL ของ 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ของสมาชิกเอง ล้วนถูกนำมาใช้ และโหนดที่ต่อพ่วงอยู่จะถูกทดสอบผ่านสายต่อพ่วงของมันแทนที่จะทดสอบโดยตรง - คอนโซลเว็บและ control API: กฎที่เพิ่มขณะทำงานจะไม่ค้างอยู่หลังโหลดโปรไฟล์เดิมซ้ำอีกต่อไป และเคอร์เซอร์ของบันทึกเดินหน้าทางเดียว การโพลล์จึงไม่ข้ามรายการใดเลย
- ShadowTLS ตรวจสอบใบรับรองของเว็บไซต์บังหน้าแล้วเมื่อมีการเขียน
sni=เหมือนที่ sing-box ทำ;skip-cert-verify=trueจะปิดการตรวจสอบนี้ (เมื่อก่อนตัวเลือกนี้ถูกละเลย และไม่มีการตรวจใบรับรองเลย) และหากไม่มีsni=การตรวจสอบจะถูกข้ามพร้อมคำเตือน
การแก้ไขข้อบกพร่อง:
- แก้ไขรายการการกำหนดค่าที่หายไปหลังอัปเดตแอป: การกำหนดค่าเก็บอยู่ในโฟลเดอร์ Caches ของแอป — ที่เดียวที่ tvOS ให้แอปเขียนได้ และเป็นโฟลเดอร์ที่ระบบล้างทิ้งได้ทุกเมื่อที่ต้องการพื้นที่คืน — การอัปเกรดจึงอาจทิ้งรายการว่างเปล่าไว้โดยไม่มีอะไรบนหน้าจออธิบายสาเหตุ ตั้งแต่เวอร์ชันนี้เป็นต้นไป การกำหนดค่าทุกรายการจะถูกเก็บไว้ในที่เก็บการตั้งค่าของแอปด้วย ซึ่งระบบไม่ล้างทิ้ง (เก็บข้อความของการกำหนดค่าเมื่อยาวไม่เกิน 256 KB ส่วนที่อยู่การสมัครสมาชิกและช่วงเวลารีเฟรชเก็บเสมอ); ไฟล์ที่หายไปจะถูกเขียนกลับตอนเปิดแอปและตอนที่แอปกลับมาอยู่เบื้องหน้า การกำหนดค่าที่เหลือเพียงที่อยู่จะถูกดาวน์โหลดใหม่ และหน้าจอหลักจะแจ้งว่า «กู้คืนการตั้งค่าแล้ว N รายการ» การกำหนดค่าที่คุณลบจะถูกลืม จึงไม่กลับมาอีก ระบบกู้คืนการกำหนดค่าที่หายไปก่อนเปิดเวอร์ชันนี้เป็นครั้งแรก หรือการกำหนดค่าที่ใหญ่เกิน 256 KB และไม่ได้มาจากที่อยู่ใด ๆ ไม่ได้ และหากเริ่มอุโมงค์จาก Control Center ก่อนที่จะเคยเปิดแอปเลย ก็จะไม่มีอะไรถูกกู้คืน
- แก้ไขการตั้งค่า SSID บน Apple TV: การเปิด «ระงับตาม SSID» เกิดข้อผิดพลาดกับทุกรายการที่ไม่มี SSID (
TYPE:,BSSID:หรือROUTER:) รายการเขียน[SSID Setting]ใหม่ทุกครั้งที่เข้าไปดู และตัวแก้ไข SSID กับซับเน็ตทิ้งสมาชิกที่ไม่มีแถวรองรับ ตอนนี้รายการแสดงเฉพาะรายการแบบง่าย"<name>" suspend=trueและเก็บอย่างอื่นไว้ที่เดิม ตัวแก้ไขกลุ่ม ssid เก็บสมาชิกตามลำดับที่ประกาศไว้พร้อมตัวเลือก «จับคู่ตาม» และเมื่อบันทึกการตั้งค่าเหล่านี้ แอปจะแจ้งว่าใช้ไม่ได้บน Apple TV และบันทึกไว้เพื่อใช้บน iOS และ macOS - แก้ไขปัญหาที่ตัวแก้ไขทำให้รายการที่แสดงได้ไม่ครบเสียหาย: รายการ
[Host]ที่มีหลายที่อยู่ถูกตัดเหลือแค่ที่อยู่แรกทันทีที่เปิด ค่า[Script]ที่มีเครื่องหมายจุลภาค (cron0 8,20 * * *, อาร์กิวเมนต์ JSON) ถูกตัดสั้นทุกครั้งที่บันทึก บรรทัด[Body Rewrite]สูญเสียคู่ regex ส่วนเกิน บรรทัดของกฎ กลุ่ม โฮสต์ Map Local หรือ header-rewrite สูญเสียตัวเลือกที่ไม่มีแถวรองรับ และ «ขั้นสูง» ตัดช่องว่างภายในรายการของตัวเองทิ้งทุกครั้งที่เข้าไปดู โปรไฟล์ที่บันทึกโดยไม่ได้เปิดรายการนั้นไม่เคยได้รับผลกระทบ ปัญหานี้จึงไม่มีใครสังเกตเห็น - แก้ไขการดาวน์โหลดที่ปนกัน: ตอนนี้การดาวน์โหลดแต่ละครั้งเขียนลงไฟล์ชั่วคราวของตัวเอง ซึ่งถูกลบเมื่ออ่านเสร็จ และถูกลบด้วยเมื่อการดาวน์โหลดหรือการอ่านล้มเหลว การรีเฟรชแบบมีการจัดการจึงไม่อ่านไฟล์จากการดาวน์โหลดครั้งแรกซ้ำไปเรื่อย ๆ อีก และสองที่อยู่ที่มีชื่อแนะนำเหมือนกันก็ไม่เขียนทับกันอีกต่อไป — และชื่อไฟล์ที่เซิร์ฟเวอร์แนะนำก็ไม่สามารถกำหนดได้อีกว่าไฟล์จะถูกเขียนไว้ที่ใด
- แก้ไขการตัดสินรูปแบบจากชื่อไฟล์: «ดาวน์โหลดจาก URL» และการรีเฟรชการกำหนดค่าแบบมีการจัดการตัดสินจากเนื้อหาว่าที่อยู่นั้นให้ไฟล์แบบใด ที่อยู่
.confที่ให้ไฟล์ Clash จึงถูกแปลงตอนเพิ่ม และการรีเฟรชที่พบไฟล์แบบนั้นจะปล่อยไฟล์ไว้ตามเดิม; การแปลงเกิดขึ้นก่อนใส่ส่วนหัว MANAGED-CONFIG ใด ๆ การแปลงที่ล้มเหลวจะแสดงข้อผิดพลาดแรก และหมายเหตุจากการแปลงจะถูกนับบนหน้าจอและเขียนลงบันทึก - แก้ไขการอัปโหลดและดาวน์โหลดของหน้า Wi-Fi:
/upแปลง Clash และ sing-box เหมือนที่/uploadทำ ทั้งคู่บันทึกเป็น<name>.confชื่อที่การกำหนดค่าอื่นใช้อยู่จะถูกปฏิเสธ/downloadไม่สร้าง.conf.confอีกต่อไปและส่งfilename*แบบเข้ารหัสแล้ว และ/deleteเปรียบเทียบชื่อในรูปแบบ NFC โดยจับคู่แบบตรงทุกตัวก่อน — การกำหนดค่าที่ใช้งานอยู่จึงไม่ถูกลบ และไม่หลุดรอดการตรวจสอบว่ากำลังใช้งานอยู่ ด้วยชื่อเดียวกันที่เขียนในรูปแบบ Unicode อื่น - แก้ไขการบันทึกทับการกำหนดค่าชื่อเดียวกันที่เกิดขึ้นเงียบ ๆ: ตอนนี้ตัวแก้ไขและ «ดาวน์โหลดจาก URL» จะถามก่อน และการเขียนทับการกำหนดค่าที่อุโมงค์กำลังใช้งานอยู่จะโหลดการกำหนดค่านั้นใหม่
- แก้ไขกลุ่มนโยบายที่ซ่อนไว้ซึ่งปรากฏในรายการกลุ่มและรายการ «สากล» ของอุโมงค์; กลุ่มที่ซ่อนไว้แต่กำลังใช้งานอยู่ยังคงแสดง และ «สากล» ที่ชี้ไปยังกลุ่ม select จะถูกแสดง ทำเครื่องหมาย และกู้คืนตามชื่อ
- แก้ไขการส่งต่อผ่าน QR ของหน้าอัปโหลดผ่าน Wi-Fi: การส่งต่อด้วย
chute://tv?url=กลับมาอยู่ในหน้าเว็บโดยตรง การสแกนจึงเปิดแอป Chute iOS ขึ้นมาอย่างที่หน้าเว็บบอกไว้; iPad ก็ส่งต่อได้เช่นกัน เพราะ iPadOS รายงานตัวเองเป็นเบราว์เซอร์เดสก์ท็อป ซึ่งการตรวจแบบเฉพาะโทรศัพท์มองข้ามไป; และเบราว์เซอร์ที่ไม่ยอมเปิดสคีมแบบกำหนดเองหากไม่มีการแตะจะได้ปุ่ม «เปิดใน Chute» ซึ่งแปลไว้ในทั้งเก้าภาษาของหน้าเว็บ - แก้ไขการขัดข้องหลายจุด: ใน «การตั้งค่า › เซสชัน», ในตัวแก้ไขการกำหนดค่าสำหรับโปรไฟล์ที่ตั้ง
loglevel = none, กับเซสชันที่อุโมงค์เขียนค้างไว้ครึ่งทาง (ซึ่งหลังจากนั้นจะเปิดไม่ได้อีกเลย), ทุกครั้งที่เปิดแอปหลังได้รับคำตอบที่ไม่คาดคิดจากเซิร์ฟเวอร์ใบอนุญาต, ตอนเปิดแอปและใน «ดูใบอนุญาต» เมื่ออ่านใบอนุญาตไม่ได้ และทุกครั้งที่เข้ารายการการกำหนดค่าเมื่อโฟลเดอร์ที่แชร์มีไฟล์ระบบหลงเข้ามา ตอนนี้การล้างช่องในการตั้งค่าจะล้างค่าจริง ๆ - แก้ไขการรีเฟรชการสมัครสมาชิกที่ถึงกำหนด ซึ่งทำให้รายการการกำหนดค่าและการบันทึกการแก้ไขต้องรอนานถึง 30 วินาที; ตอนนี้การรีเฟรชจะทำงานต่อเมื่อการดาวน์โหลดของตัวเองเสร็จ โดยไม่ทำให้สิ่งใดต้องรอ
- แก้ไขการขัดข้องที่เกิดจากสองเธรดเปลี่ยนข้อมูลเดียวกันพร้อมกัน — ระหว่างการเปิดแอปแบบเย็น ระหว่างการอ่านบันทึกของเซสชัน และระหว่างการรีเฟรชรายการเซสชัน
- แก้ไขอุโมงค์ที่เริ่มใหม่แล้วใช้พอร์ตโลคัลแรกและหมายเลขลำดับ TCP ซ้ำกับรอบก่อนหน้า ซึ่งเพียร์ WireGuard ที่ยังถือการเชื่อมต่อเดิมอยู่ตอบกลับด้วยการรีเซ็ต; ตอนนี้สแต็ก TCP ของอุโมงค์ตั้งค่าเริ่มต้นจากแหล่งสุ่มของระบบ และเลือกหมายเลขลำดับเริ่มต้นตามที่ RFC 6528 อธิบาย
- แก้ไข XHTTP ที่ค้างในอุโมงค์หลังแอปเขียนข้อมูลครั้งแรก ทำให้ TLS handshake ไม่เคยเสร็จและการอัปโหลดส่งได้เพียงก้อนเดียว; ตอนนี้การเขียนแต่ละครั้งเสร็จสมบูรณ์ตามลำดับ และเมื่อมีข้อมูลรออัปโหลดเกิน 1 MB การเขียนครั้งถัดไปจะรอจนกว่าข้อมูลนั้นจะถูกส่งออกไป
- แก้ไข
PROTOCOL,TCPและPROTOCOL,UDPที่ไม่เคยจับคู่: ตอนนี้การเชื่อมต่อขาเข้าทุกรายการตัดสินการขนส่งของตัวเอง วิธีปกติในการบล็อก QUIC ด้วยกฎ AND จึงใช้ได้ - แก้ไข
RULE-SETและDOMAIN-SETภายใน AND / OR / NOT ที่ประเมินเป็นเท็จเสมอ — ทำให้NOT,((RULE-SET,…))ปฏิเสธทราฟฟิกในประเทศไปด้วย — และSCRIPTภายในกฎตรรกะที่ประเมินเป็นจริงเสมอ - แก้ไข
RULE-SET,<name>,<policy>,no-resolveที่สูญเสียno-resolveเมื่อเขียนด้วยชื่อ, GEOIP และ IP-ASNUNKNOWNที่ไม่เคยจับคู่,status-code=ของ Map Local ที่ถูกละเลยบน HTTP/2 และ Header Rewrite ฝั่งการตอบกลับบน HTTP ธรรมดาที่จับคู่เฉพาะพาธ ทำให้รูปแบบที่เขียนสำหรับ URL เต็มไม่มีทางจับคู่ได้ - แก้ไข
block-quicที่ยอมรับค่าของ Surge เพียงค่าเดียว โดยค่าอื่นทั้งหมดหมายถึงไม่บล็อก QUIC เลย - แก้ไข API สคริปต์:
$klne.getPolicyGroups()และselectPolicy()ไม่โยนข้อผิดพลาดในการเรียกใช้ครั้งแรกอีกต่อไป,reloadConfiguration()โหลดใหม่จริง,getActiveConnections()รายงานโฮสต์ พอร์ต และ id จริง,closeConnection()ปิดจริง และสคริปต์ before-send ที่มีrequires-bodyได้รับเนื้อหาเสียที - แก้ไข
[Replica] keyword-filterที่เปรียบเทียบกับชื่อโฮสต์ทั้งชื่อ แทนที่จะตรวจว่าชื่อโฮสต์มีคีย์เวิร์ดนั้นอยู่หรือไม่ ทำให้keyword-filter = googleไม่ครอบคลุมwww.google.com - แก้ไขกฎ PROCESS-PATH และ PROCESS-NAME-REGEX ที่ถูกตรวจบน Apple TV กับชื่อที่ไม่ใช่ชื่อโปรเซส; เช่นเดียวกับ PROCESS-NAME กฎเหล่านี้ใช้ได้เฉพาะบน macOS และไม่มีวันจับคู่บน Apple TV
- ปรับปรุงความเสถียรและประสิทธิภาพต่าง ๆ
เวอร์ชัน 1.4 (75)
คุณสมบัติใหม่:
- เพิ่มแถว «ที่อยู่คอนโซลเว็บ» ในแผงควบคุม: จะปรากฏเมื่อตัวรับฟังของคอนโซลทำงานจริงแล้ว และเมื่อเปิดจะแสดง QR โค้ดที่ URL พาโทเคนการเข้าถึงไปด้วย — สแกนด้วยโทรศัพท์ก็ลงชื่อเข้าใช้ได้ทันที ไม่ต้องคัดลอกที่อยู่และเลขฐานสิบหก 32 ตัวด้วยรีโมท
- เพิ่ม «ชุดข้อมูลวินิจฉัยออฟไลน์» ในการตั้งค่า ซึ่งแอปสร้างเองโดยไม่ต้องมีอุโมงค์ทำงาน: รายละเอียดอุปกรณ์และแอป โปรไฟล์ VPN ตามที่ tvOS เก็บไว้ สรุปการกำหนดค่าที่เลือกและข้อผิดพลาดในการแยกวิเคราะห์ ส่วนของเครือข่าย (การเข้าถึงได้ ชนิดของลิงก์ เซิร์ฟเวอร์ DNS ที่อยู่และอินเทอร์เฟซในเครื่อง) ส่วนต้นของการกำหนดค่าที่ลบข้อมูลอ่อนไหวแล้ว วิธีที่รอบก่อนหน้าจบลง ชาร์ดบันทึกของเซสชันล่าสุด และรายงานการขัดข้องที่รอส่ง เนื่องจาก tvOS ไม่มีแผงแชร์ ไฟล์เก็บถาวรจึงถูกให้บริการโดยเซิร์ฟเวอร์ HTTP ในเครื่องแบบใช้ครั้งเดียวบนพาธที่เดาไม่ได้ และแสดงเป็น QR โค้ด ลิงก์จะใช้ไม่ได้ทันทีเมื่อออกจากหน้านี้
- เพิ่มตัวกรองตามระดับความรุนแรงในบันทึกเซสชัน — ทั้งหมด, Notify+, Warning+, Fatal — «ขอดูเฉพาะคำเตือน» จึงเป็นแค่การกดครั้งเดียว แทนการพิมพ์ค้นหาบนแป้นพิมพ์บนหน้าจอ; บรรทัดที่ตัวแยกวิเคราะห์จัดระดับไม่ได้จะไม่ถูกซ่อนเลย
- เพิ่มการระบุที่มาของการเขียนใหม่ในรายละเอียดเซสชัน: ส่วน «REWRITES» จะแสดงกฎ URL Rewrite, Header Rewrite, Body Rewrite หรือการตอบกลับจำลองที่แก้ไขคำขอ ไว้ข้างกฎและนโยบายที่กำหนดเส้นทางให้คำขอนั้น
- เพิ่มแถว «อนุญาตการเข้าถึงผ่าน Wi-Fi» ในตัวแก้ไขการกำหนดค่า — คีย์ที่เกิดขึ้นเมื่อนำเข้า
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 โค้ดของ «ที่อยู่คอนโซลเว็บ» พาไปด้วย หากต้องการคงการเข้าถึงแบบไม่ระบุตัวตน ให้ตั้งexternal-http-secret = noneและที่อยู่รับฟังแบบไวลด์การ์ดจะไม่ถูกถือเป็น loopback อีกต่อไป - การจับคู่กฎกับรายการขนาดใหญ่เร็วขึ้นมาก: เนื้อหาของ RULE-SET และ DOMAIN-SET จะถูกทำดัชนีเมื่อดาวน์โหลดหรือกู้คืน แทนการอ่านสตรีมทั้งไฟล์ทุกการเชื่อมต่อ และตารางกฎที่มีแต่กฎโดเมนจะจับคู่ผ่านแผนแบบแฮช — รายการ 50,000 บรรทัดใช้เวลาต่อการค้นหาจากราว 94 ms เหลือไม่ถึง 2 ms โดยใช้หน่วยความจำราว 100 KB ต่อดัชนี
- โฟลว์ UDP จับคู่เพียงครั้งเดียว: ผลการตัดสินของโฟลว์จะถูกจำไว้ 60 วินาที ดาต้าแกรมถัดไปจึงข้ามการจับคู่ทั้งสองรอบและการสอบถาม DNS ระหว่างนั้น
- ฟื้นตัวหลังเปลี่ยนเครือข่ายได้ดีขึ้น: อุโมงค์ที่ที่อยู่ต้นทางฝั่งอัปสตรีมไม่มีอยู่บนอินเทอร์เฟซใดแล้วจะถูกปิดทันที แทนที่จะปล่อยให้แอปค้างจนหมดเวลาว่าง และเส้นทางที่รับการเชื่อมต่อได้แต่ไม่มีข้อมูลไหลจะถูกรายงานเป็นหลุมดำ
- บันทึกเซสชันเขียนเป็นชาร์ดขนาด 8 MB (สูงสุดแปดชาร์ดต่อรอบ ลบชาร์ดเก่าสุดก่อน); หน้าบันทึกจะดึงชาร์ดใหม่สุดรวมกันไม่เกินหนึ่งชาร์ด แทนการอ่านทั้งรอบเข้าหน่วยความจำ พร้อมแจ้งเมื่อละชาร์ดที่เก่ากว่าไว้ และยังติดตามชาร์ดที่กำลังเขียนอยู่ต่อเนื่องข้ามการหมุนไฟล์
- เอนจินเก็บเครื่องหมายการทำงานไว้ระหว่างทำงาน และเมื่อเริ่มครั้งถัดไปจะรายงานว่ารอบก่อนหน้าหยุดตามปกติหรือถูกบังคับปิด — ในส่วนหัวของบันทึก
/api/statusและชุดข้อมูลวินิจฉัยทั้งสองแบบ - การส่งออก HAR ตอนนี้สร้างโดยเอนจินจากเฟรมที่บันทึกไว้ รหัสสถานะ การประทับเวลา และเวลาที่ใช้จึงเป็นค่าจริง และแต่ละรายการมีนโยบายที่เลือก กฎที่ตรง และการเขียนใหม่ที่เกิดขึ้นอยู่ใต้
_kl - มีเพียงสามคุณสมบัติที่หน้าซื้อจำหน่ายเท่านั้นที่ต้องใช้ใบอนุญาต — การกำหนดค่าหลายชุด การควบคุมเซิร์ฟเวอร์พร็อกซีท้องถิ่น และเครื่องบันทึกการรับส่งข้อมูล; สวิตช์ HTTP API และคอนโซลเว็บ, การดมกลิ่นโปรโตคอล, Optimus DNS, ล้างแคช DNS และแถว «ที่อยู่คอนโซลเว็บ» ไม่ต้องใช้ใบอนุญาตอีกต่อไป และผู้ใช้ที่ยังไม่ซื้อซึ่งอุโมงค์ยังไม่ทำงานจะได้รับคำแนะนำให้เริ่มอุโมงค์ แทนที่จะเห็นหน้าซื้อ
- คอนโซลที่ผูกกับที่อยู่ loopback จะบอกว่าเปิดได้เฉพาะบน Apple TV เครื่องนี้และควรตั้งค่าอะไรแทน แทนที่จะเสนอ QR โค้ดที่เปิดไม่ได้; โทเคนการเข้าถึงก็ไม่ถูกแสดงบนจอที่ทั้งห้องมองเห็นอีกต่อไป
- ข้อความการซื้อระบุแล้วว่าการซื้อหนึ่งครั้งครอบคลุม Apple TV สามเครื่องและ iPhone หรือ iPad สามเครื่อง; เมื่อ «กู้คืนการซื้อ IAP» ไม่พบอะไร กล่องแจ้งเตือนจะเสนอ «ดูคู่มือ» และแสดง QR โค้ดของคำแนะนำเรื่องใบอนุญาตข้ามแพลตฟอร์มในภาษาของแอป
- ที่
loglevel = infoโฟลว์ขนาดใหญ่ที่ส่งข้อมูลอย่างน้อย 1 MiB จะบันทึกหนึ่งบรรทัดตอนปิด บอกว่ารอฝั่งระยะไกลและฝั่งแอปนานเท่าใด
การแก้ไขข้อบกพร่อง:
- แก้ไข MitM ในโหมด TUN: โฮสต์ที่ตรงกับกฎ MitM ค้างจนหมดเวลา ทำให้ Header Rewrite, Body Rewrite, การตอบกลับจำลอง และการจับข้อมูลที่ถอดรหัสของ HTTPS ไม่เคยมีผลกับทราฟฟิกของแอปเลย (ทราฟฟิกผ่านพร็อกซี HTTP/SOCKS5 ท้องถิ่นไม่ได้รับผลกระทบ)
- แก้ไข
allow-wifi-accessที่ไม่มีผล: ตัวรับฟัง HTTP และ SOCKS5 ท้องถิ่นยังคงอยู่บน loopback ทำให้อุปกรณ์อื่นบน Wi-Fi เข้าถึงไม่ได้; ตอนนี้ตัวเลือกนี้ (และallow-lanของ sing-box เมื่อนำเข้า) จะขยายตัวรับฟังทั้งสอง และเมื่อปิดจะผูกใหม่ - แก้ไขการสลับสวิตช์ใด ๆ ในส่วนที่สองของแผงควบคุมทำให้แอปขัดข้อง หลังจากที่แถว «ที่อยู่คอนโซลเว็บ» สามารถปรากฏได้ เพราะจำนวนแถวของตารางเปลี่ยนไปขณะโหลดใหม่ทีละแถว
- แก้ไขหน้าเซสชันที่แสดงเพียงช่วงใดช่วงหนึ่งของรอบการทำงาน และเซสชันที่สูญเสียวันที่หลังการหมุนไฟล์ครั้งที่แปด นับตั้งแต่เอนจินเริ่มหมุนบันทึกตามขนาดคงที่; ชาร์ดถูกเรียงตามหมายเลขแล้ว และมุมมองแบบเรียลไทม์ก็ไม่ค้างที่จุดหมุนไฟล์อีก
- แก้ไขหน้าบันทึกที่อ่านชาร์ดทั้งหมดของเซสชันเข้าหน่วยความจำพร้อมกัน — มากถึง 64 MB ของข้อความบน Apple TV — และตัวกรองระดับความรุนแรงที่ปล่อยบรรทัดต่อเนื่องของรายการหลายบรรทัดผ่านไป ทั้งที่ซ่อนรายการต้นทางไว้แล้ว
- แก้ไข Header Rewrite ฝั่งการตอบกลับผ่าน MitM HTTP/1.1 ที่ถูกบันทึกว่านำไปใช้แล้วแต่ไคลเอนต์ยังได้รับส่วนหัวเดิม และไม่เคยตรงกับกฎที่เขียนตาม URL เต็ม
- แก้ไข Mock Response ที่สร้างการตอบกลับจากส่วนหัวคำขอ — บรรทัดคำขออยู่ในตำแหน่งบรรทัดสถานะ ส่วนหัวคำขอถูกส่งต่อไปด้วย Content-Length ผิด — และบน HTTP ธรรมดายังส่งส่วนหัวของเซิร์ฟเวอร์ต้นทางนำหน้าไปก่อน
- แก้ไขกฎ IP ที่มี
no-resolve(IP-CIDR, GEOIP, IP-ASN) ข้ามการเชื่อมต่อไปยัง IP ตรง ๆ เมื่อการดมกลิ่นโปรโตคอลให้ส่วนหัว Host หรือชื่อจาก reverse 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 ID ที่ใช้ไม่ได้ และ «ให้คะแนน» ที่เปิดหน้าเวอร์ชัน 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 (Encrypted Client Hello) สำหรับนโยบาย 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และ REALITYspiderxที่เขียนด้วยคีย์ผิดและถูกทิ้งเมื่อบันทึก - แก้ไขการขัดข้องเมื่อสลับภาษา
- แก้ไขปัญหาการแสดงผลของตัวควบคุมบนหน้าจอ
- การปรับปรุงความเสถียรและประสิทธิภาพหลายด้าน
เวอร์ชัน 1.2 (45)
คุณสมบัติใหม่:
- เพิ่ม Tailscale เป็นประเภทพร็อกซีในตัว: กำหนดค่าบัญชี Tailscale เข้าร่วม tailnet และส่งทราฟฟิก Apple TV ผ่านโหนด Tailscale — โดยไม่ต้องใช้ไคลเอนต์แยกต่างหาก
- เพิ่มแผงควบคุม Tailscale ที่แสดงสถานะโหนดแบบเรียลไทม์ (ออนไลน์/ออฟไลน์, IP, เห็นล่าสุด) และสลับ exit node ได้จากรีโมต
- เพิ่มมุมมอง 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)
- การเปิดตัวครั้งแรก
หน้านี้เป็นฉบับแปลจากเวอร์ชันภาษาอังกฤษ หากเนื้อหาไม่ตรงกัน ให้ยึดเวอร์ชันภาษาอังกฤษเป็นหลัก