Notes de version de Chute Mac
Version 1.1.5 (233)
Nouvelles fonctionnalités :
- Ajout du chaînage de proxys : une politique peut nommer un « Proxy amont » (
underlying-proxy) et joindre son serveur à travers lui, un groupe de politiques peut faire passer tous ses membres par un même amont, et le nouveau réglage « Proxy frontal » sous « Général → Avancé » (global-underlying-proxy) fait de même pour chaque nœud qui ne définit pas d'amont propre. Tous les transports sauf Tailscale peuvent être chaînés — les protocoles de flux empruntent le flux de l'amont ; Hysteria2, TUIC, MASQUE et XHTTP sur HTTP/3 empruntent son relais UDP en paquets fixes de 1280 octets ; les tunnels WireGuard et AmneziaWG passent par lui avec une MTU interne de 1280 octets ; les sessions SSH et AnyTLS s'ouvrent à travers lui — et l'éditeur de politiques propose le champ pour chacun d'eux. Une chaîne qui boucle, s'imbrique sur plus de 16 niveaux ou nomme une politique inexistante est refusée, sans jamais laisser le trafic partir en direct - Ajout des groupes de relais (
relay, comme dans Clash et mihomo) : les membres sont chaînés dans l'ordre où ils sont écrits — le premier est joint directement, chacun des suivants à travers ceux qui le précèdent, et le dernier se connecte à la destination. L'éditeur de groupe propose le type Relay, conserve les membres dans cet ordre et en exige au moins deux - Ajout des groupes aléatoires (
random, comme dans Shadowrocket) : chaque connexion choisit un membre au hasard, et pour l'UDP uniquement parmi les membres qui transportent l'UDP. Un groupe aléatoire n'a pas de sélection à modifier : la barre des menus et la page Proxys l'omettent donc, et l'éditeur de groupe le conserve en tant que groupe aléatoire - Ajout de la chaîne de proxys à la fenêtre de détail d'une connexion et à la console web : chaque saut est nommé (
Airport/HK-01 → Landing), « Copier les détails » l'inclut, la recherche de connexions la trouve, et l'export HAR enregistre le chemin - Ajout de
policy=aux fournisseurs de règles et de proxy : la liste est téléchargée à travers cette politique, et un nom de politique inexistant fait échouer le téléchargement au lieu de le laisser passer en direct. Les éditeurs du Mac n'ont pas encore de champ pour cette option, mais l'enregistrement la conserve - Ajout d'UDP sur TCP à l'éditeur Shadowsocks —
udp-over-tcp, version 1 ou 2 — afin que l'UDP d'un proxy passe à l'intérieur de ses connexions TCP et fonctionne même à travers une chaîne dont l'amont ne transporte pas d'UDP - Ajout de l'UDP à VMess et VLESS : l'UDP envoyé à l'un ou l'autre était jusqu'ici refusé d'emblée (il suivait
udp-policy-not-supported-behaviour, REJECT par défaut) ; il circule désormais sur une connexion par destination, comme dans mihomo, sing-box et Shadowrocket - Ajout de jq à la réécriture de corps :
http-request-jqethttp-response-jqexécutent un véritable programme jq sur un corps JSON, et l'éditeur propose les types « Requête jq » et « Réponse jq » avec un champ PROGRAMME JQ ; un programme invalide est signalé et sa règle ignorée, et un corps non JSON, un programme qui échoue ou une sortie vide laissent tous le corps intact - Ajout des scripts génériques : un script
type=genericn'a aucun déclencheur automatique et ne s'exécute qu'à la demande — depuis le bouton « Exécuter » de l'éditeur de script, ou viaGET /api/scriptsetPOST /api/scripts/run. L'éditeur de script gagne aussi un champ « Nom de l'événement » : les scripts d'événement reçoiventnetwork-changed,engine-startedetprofile-reloaded, et un script qui nomme un autre événement est signalé dans le journal et ne s'exécute jamais - Ajout de pools DNS dédiés :
direct-dns-serverrésout les domaines qu'une règle envoie en DIRECT,proxy-dns-serverrésout les noms d'hôte de vos propres serveurs proxy, etfallback-dns-serverest interrogé quand les serveurs principaux ne donnent aucune réponse ; chacun se rabat sur les serveurs globaux, et les réglages DNS proposent un champ pour chacun - Ajout de
#proxy/#proxy=<policy>aux amonts DNS, DoQ et DoH3 compris : un résolveur QUIC passe par le relais UDP de la politique, une politique qui ne peut pas transporter d'UDP saute ce serveur au lieu de l'interroger directement, un résolveur classique envoyé à travers une politique bascule vers DNS sur TCP, et les amontstcp://simples sont acceptés pour les chemins où DNS sur UDP est abandonné - Ajout de
encrypted-dns-follow-outbound-mode,allow-dns-svcb— les questions HTTPS et SVCB reçoivent une réponse vide tant qu'il n'est pas activé — et, par serveur, de#h3,#skip-cert-verify,#disable-ipv4,#disable-ipv6et#disable-qtype= - Enrichissement du mappage DNS local : une entrée
[Host]conserve tous les serveurs qu'elle liste et les interroge en parallèle, associe un domaine à plusieurs adresses, peut avoir pour clé un jeu de règles (RULE-SET:<url>), exécute un scripttype=dnspour ce domaine (script:<name>) et acceptessid:<name>pour une correspondance propre à un réseau ; l'éditeur permet d'associer un script et conserve chaque adresse et chaque serveur d'une entrée - Ajout de « Lire le fichier hosts système » sous « Général » (
read-etc-hosts, importé depuis leuse-system-hostsde mihomo) : les noms présents dans/etc/hostsreçoivent leur réponse du DNS de Chute - Ajout des notifications de règles : toute règle, FINAL compris, accepte
notification-text=etnotification-interval=et publie une notification quand elle correspond, au plus une fois par intervalle pour chaque règle ; l'éditeur de règles définit les deux, et les notifications suivent l'interrupteur de notifications de Chute - Ajout de
FINAL,<policy>,dns-failed: quand un nom ne peut pas être résolu, la connexion est ouverte sur la politique FINAL avec résolution distante au lieu d'être fermée ; l'éditeur de règles le propose - Ajout de la famille REJECT comme vraies politiques — REJECT-DROP, REJECT-NO-DROP, REJECT-TINYGIF, REJECT-IMG, REJECT-DICT, REJECT-ARRAY, REJECT-200 et REJECT-VIDEO — chacune répondant à une requête HTTP avec son corps documenté, un hôte rejeté plus de 50 fois en 30 secondes étant promu en REJECT-DROP ; le menu des politiques de l'éditeur de règles les liste, ainsi que PROXY
- Ajout des jeux de règles intégrés : les sections
[Ruleset Name]sont référencées commeRULE-SET,<name>, y compris les références entre elles — jusqu'à huit niveaux de profondeur, les boucles étant refusées - Ajout de la famille SSID : les redéfinitions DNS de
[SSID Setting]s'appliquent par réseau — noms,BSSID:,TYPE:WIFI/CELLULAR/WIRED(Ethernet sur un Mac),ROUTER:, noms entre guillemets et à joker — et purgent le cache du résolveur précédent au changement de réseau ; les groupes de politiquesssidetsubnetchoisissent leurs membres d'après le réseau en direct, et les règles SUBNET y correspondent.suspend=trueprend désormais effet sur le Mac : sur ce réseau, Chute retire le proxy système et détache le mode amélioré, la barre des menus l'indique, une notification signale chacune des deux transitions, et basculer le proxy à la main met fin à la suspension. Les éditeurs de groupe et de [SSID Setting] gagnent un menu « Correspondance par » (SSID, BSSID, TYPE, ROUTER), conservent les entrées dans l'ordre où elles sont écrites et affichent la redéfinition DNS de chaque entrée. Les changements de réseau parviennent désormais au moteur au moment où ils se produisent au lieu de toutes les 60 secondes, et Chute demande une fois l'autorisation de localisation quand la configuration désigne un réseau Wi-Fi, ce que macOS 14 et versions ultérieures exigent avant de révéler le nom du réseau - Ajout des plages et comparaisons DEST-PORT, SRC-PORT et IN-PORT (
80-81,>=50000, listes avec/), des valeursIPv4,IPv6,DOMAINetSIMPLEdeHOSTNAME-TYPE, et de règles IN-TYPE et IN-USER fonctionnelles, qui correspondent désormais au trafic réel au lieu du seul essai à blanc - Ajout de réglages MitM : déchiffrer HTTP/2 (
h2), bloquer le QUIC vers les hôtes déchiffrés pour qu'HTTP/3 ne contourne pas le déchiffrement (auto-quic-block), exclure des hôtes du déchiffrement, et reconnaître les mots-clés<ipv4-address>,<ipv6-address>et<simple-hostname>dans la liste d'hôtes ; les trois premiers se trouvent dans les réglages MitM - Ajout du routage QUIC par domaine en mode amélioré : avec la détection de protocole activée, le nom est lu depuis le QUIC Initial du client, un ClientHello réparti sur plusieurs Initials est réassemblé, et le flux est retenu jusqu'à ce que le nom soit connu, si bien que les règles DOMAIN routent les connexions HTTP/3 établies vers une adresse nue
- Ajout de
icmp-auto-reply, activé par défaut : en mode amélioré, un ping reçoit une réponse locale, en IPv4 comme en IPv6, au lieu d'expirer - Élargissement de l'import : les règles GEOSITE et GEOIP de catégorie de mihomo se déploient en jeux de règles qui fonctionnent, les fournisseurs
.mrset.srssont redirigés vers leurs listes sources publiées, les groupespolicy-pathsynthétisent un fournisseur avecupdate-interval, filtres et listes d'inclusion, leSUB-RULEde mihomo se développe en règles AND, ledetourde sing-box et ledialer-proxyde mihomo s'importent comme chaînage, et l'allowed-ipsde WireGuard est compilé et appliqué — l'éditeur WireGuard gagne un champ « IP autorisées » — afin qu'un tunnel scindé n'engloutisse plus toutes les destinations - Ajout de directives de configuration et de transports :
#!includeetinclude =intègrent d'autres fichiers,#!MACOS-ONLY,#!IOS-ONLYet#!TVOS-ONLYréservent des lignes à une seule plateforme, et les deux survivent à un enregistrement ; Shadowsocks gagne le transport WebSocket de v2ray-plugin ; et un id VLESS ou VMess qui n'est pas un UUID est converti en UUID avec UUIDv5, comme le font Xray et mihomo, au lieu de faire tomber le moteur - Ajout des champs « Interface de sortie » et « Autoriser une autre interface » à l'éditeur de politiques (
interface=,allow-other-interface=), qui lient les connexions TCP d'une politique à une seule interface réseau. Ils prennent effet avecnetwork-framework = false; sous Network.framework, le réglage par défaut de macOS, ils ne sont pas encore appliqués - Élargissement de l'API de script :
$httpAPIappelle les routes du moteur lui-même sans ouvrir de socket,$httpClienthonore unepolicy, et$event.namerapporte l'événement qui s'est réellement déclenché - Ajout d'options de réécriture : Map Local accepte
data-type,status-codeet des en-têtes, la réécriture d'en-tête gagneheader-replace-regex, la réécriture d'URL gagnereject-arrayetreject-tinygif, et une ligne de réécriture de corps peut porter plusieurs paires regex/remplacement ; les éditeurs proposent les nouveaux types et champs - Ajout des éléments « Ouvrir la console web » et « Copier le jeton de la console web » à la barre des menus, affichés quand la configuration sert la console : l'élément Ouvrir se connecte avec le jeton, l'élément Copier sert à un navigateur sur une autre machine, et un élément désactivé indique pourquoi quand l'écouteur n'est pas démarré ou que
external-http-uiest désactivé. La console gagne les onglets Actuel et Historique, une vue d'inspection (règle correspondante, source de la règle, politique, adaptateur, source DNS, processus, motif de fermeture, corps de requête et de réponse), une page Règles qui indique quelles règles de réécriture ont été déclenchées, une page Diagnostic et une liste des jeux de règles qui n'ont pas pu être chargés, et elle est complète dans les neuf langues - Ajout de points d'accès à l'API de contrôle HTTP :
/api/health,/api/events,/api/tailscale, les sondes sous/api/diagnostics/,/api/connections/export?format=har,/api/diagnostics/bundle,/api/scripts, la gestion des règles de réécriture et des hôtes MitM sous/api/rewriteset/api/mitm/hosts,POST /api/rules/matchpour tester une requête à blanc contre la table de règles,GET|PUT /api/loglevelpour changer le niveau de journal sans rechargement, etPOST /api/config/validatepour vérifier un profil sans l'appliquer - Ajout d'« Enregistrer l'ensemble de diagnostic… » à la barre des menus : une archive expurgée de la configuration, de l'état de santé, des événements de cette exécution, des règles et politiques chargées, du DNS, du trafic et des fragments de journal, construite dans Chute sans l'API de contrôle — et proposée aussi après l'arrêt de Chute, quand ce sont les journaux de la dernière exécution qu'il vous faut
- Ajout de l'export HAR, construit par le moteur à partir des trames enregistrées : codes d'état, horodatages et durées sont réels, et chaque entrée porte sous
_klla politique choisie, la règle correspondante et les réécritures déclenchées ; il est disponible dans la console web et à/api/connections/export?format=har - Ajout de l'attribution des réécritures à la fenêtre de détail d'une connexion : elle nomme la première réécriture d'URL, d'en-tête ou de corps, ou réponse simulée, qui a modifié la requête, et combien se sont déclenchées, « Copier les détails » les inclut toutes, et « Requêtes et historique » ouvre la console web pour les corps et les connexions fermées
- Ajout d'une notification « Adresse réseau modifiée », qui remplace « IP de sortie modifiée » : elle montre les adresses IPv4 et IPv6 propres à ce Mac, une ligne par famille, et signale une IPv4 située derrière un NAT ; seule une IPv4 derrière NAT coûte une unique requête STUN
- Ajout d'une notification « Réseau ne transportant aucun trafic », avec son propre interrupteur, activé par défaut : elle signale un lien qui accepte les connexions sans faire passer de données, et reste silencieuse tant que macOS signale lui-même le réseau comme injoignable
- Ajout du français comme langue intégrée, et d'un drapeau à côté de chaque langue dans le menu des langues
Améliorations :
- L'API de contrôle HTTP n'est plus servie sans authentification quand la configuration ne nomme aucun
external-http-secret: le moteur génère un jeton, que la barre des menus copie ;external-http-secret = nonene conserve l'accès anonyme que sur une adresse de boucle locale, et une adresse d'écoute joker n'est plus traitée comme une boucle locale - La correspondance des règles est bien plus rapide sur les grandes listes : une table de règles composée uniquement de règles de domaine est évaluée par un plan haché, et les contenus RULE-SET et DOMAIN-SET qui ne sont pas préchargés sont indexés au téléchargement au lieu d'être lus à chaque connexion
- Les flux UDP ne sont évalués qu'une fois : la décision d'un flux est mémorisée 60 secondes, si bien que les datagrammes suivants sautent les deux passes de correspondance et la requête DNS entre elles
- Meilleure reprise après un changement de réseau : les tunnels dont l'adresse source amont n'existe plus sur aucune interface sont fermés au lieu de bloquer les apps jusqu'au délai d'inactivité
- Les fournisseurs de règles se téléchargent l'un après l'autre au lieu d'être refusés une fois la file de téléchargement pleine, et leur conversion consomme bien moins de mémoire
- Les journaux sont écrits en fragments de 8 Mo (jusqu'à huit par exécution, les plus anciens supprimés), chacun ouvrant sur un en-tête qui nomme l'exécution, et l'onglet Journal suit chaque fragment dans l'ordre ; le moteur enregistre aussi si l'exécution précédente s'est arrêtée proprement ou a été tuée — dans l'en-tête du journal,
/api/statuset l'ensemble de diagnostic — et, avecloglevel = info, un flux volumineux ayant transféré au moins 1 Mio écrit à sa fermeture une ligne indiquant où il a attendu - Chaque éditeur structuré conserve désormais ce qu'il n'affiche pas : les groupes de politiques conservent leurs fournisseurs,
policy-path,include-*, filtres et paramètres inconnus, et laissent vide unurl=/timeout=resté à sa valeur par défaut afin que le groupe suiveproxy-test-url/test-timeout; les règles conservent leurs autres options ; une entrée[Host]conserve chaque adresse ; une ligne de réécriture de corps conserve ses paires suivantes ; les scripts conservent les clés que le formulaire n'affiche pas ; les sections WireGuard et AmneziaWG conservent les leurs, paramètres d'obfuscation d'AmneziaWG compris — si bien qu'ouvrir puis enregistrer ne réécrit plus une configuration - « Règles effectives » affiche la table que le moteur parcourt réellement pour la correspondance — règles placées en tête, modules, le profil et FINAL — et « Tester la règle » exécute l'essai à blanc du moteur au lieu de lire un cache
- L'import d'un profil publié ne perd plus le routage : le format est déterminé d'après ce que sert l'adresse, si bien qu'un abonnement
.confqui sert du Clash est converti ;dns-serveraccepte les URL de DNS chiffré, les lignes d'écoute acceptent un mot de passe, les membres de groupe entre guillemets sont conservés, les membresPASSsont écartés au lieu de devenir REJECT, et un protocole ou un type de groupe non pris en charge émet un avertissement au lieu de faire tomber tout son groupe ; un profil converti arrive en.conf, et un nom déjà utilisé est numéroté - Les tests de latence visent la bonne cible : le
test-urlet letest-timeoutd'un groupe, leproxy-test-urldu profil et lestest-urletexpected-statuspropres à un membre sont tous pris en compte, et un nœud chaîné est sondé à travers sa chaîne au lieu d'être sondé directement - Les groupes de politiques masqués restent hors de la barre des menus et de la page Proxys tant qu'ils ne sont pas utilisés ; quand l'API de contrôle fait pointer Global vers un groupe select, la barre des menus le liste et le coche ; et recharger un profil abandonne les règles ajoutées à l'exécution depuis la console web
- ShadowTLS vérifie désormais le certificat du site de camouflage quand
sni=est renseigné, comme le fait sing-box ;skip-cert-verify=truedésactive la vérification, et sanssni=la vérification est sautée avec un avertissement - Un PROCESS-NAME écrit sous forme de chemin correspond à ce chemin ou à ce préfixe de bundle, comme le permet le manuel de Surge, et les règles PROCESS-NAME-WILDCARD et PROCESS-PATH-WILDCARD de mihomo s'importent au lieu d'être écartées
- Les gros envois sur des connexions Network.framework ne gardent plus leurs données en mémoire jusqu'à ce que le fil principal trouve le temps de les libérer
- La case « Autoriser l'accès Wi-Fi » indique désormais ce qu'elle fait — les deux écouteurs de proxy locaux acceptent les connexions sur toutes les interfaces tant qu'elle est cochée — et les champs d'interface affichent 0.0.0.0 pendant ce temps, en conservant vos adresses pour le moment où elle sera décochée
- Les avis du mode amélioré décrivent désormais ce que fait le moteur : Chute définit lui-même la redéfinition DNS et la rétablit à l'arrêt, l'UDP est relayé à travers la politique correspondante, et un ping reçoit une réponse locale
- Mise à jour du programme de mise à jour intégré vers Sparkle 2.9.6, qui apporte les correctifs de sécurité de la série 2.x ; la vérification au lancement ne s'exécute désormais que si les vérifications automatiques des mises à jour sont activées
- Le japonais, le coréen, l'allemand, le thaï et le russe n'affichent plus d'anglais pour environ 850 textes, la demande d'approbation de l'extension réseau est traduite au lieu d'afficher un texte de substitution, et chaque langue reprend la terminologie de l'app iOS et de ce manuel
Corrections de bugs :
- Correction de « Routes incluses dans le VIF » (
tun-included-routes), qui restait sans effet : avec l'un ou l'autre type de mode amélioré, Helper utun ou PacketTunnel, les CIDR listés rejoignent désormais les routes du tunnel, si bien qu'une plage que prendrait sinon le sous-réseau propre de l'interface physique ou un autre VPN passe par Chute. Les entrées qui couperaient le tunnel — boucle locale, sous-réseaux propres au tunnel, link-local, multicast, broadcast, passerelle par défaut actuelle, longueur de préfixe de 0 — sont refusées et journalisées, et les plages privées sont acceptées avec un avertissement. L'assistant privilégié est mis à jour pour cela, si bien que macOS demande une fois de l'approuver - Correction du MitM en mode amélioré : un hôte correspondant à une règle MitM restait bloqué jusqu'au délai d'expiration, si bien que les réécritures HTTPS, la réponse simulée et les captures déchiffrées ne s'appliquaient jamais au trafic des apps ; et une requête ou une réponse déchiffrée de plus de 64 Ko restait bloquée, y compris à travers le proxy système
- Correction de
allow-wifi-accesssans effet : les écouteurs HTTP et SOCKS5 locaux restaient sur la boucle locale, si bien que rien sur le réseau ne pouvait les joindre ; l'option (etallow-lande sing-box à l'import) élargit désormais les deux écouteurs, et la désactiver les relie à nouveau - Correction des réécritures : une réécriture d'en-tête de réponse en MitM HTTP/1.1 était enregistrée comme appliquée alors que le client recevait l'en-tête d'origine, et en HTTP en clair elle ne correspondait qu'au chemin, si bien qu'un motif écrit contre l'URL complète ne correspondait jamais ; la réponse simulée bâtissait sa réponse à partir de l'en-tête de requête ; le
status-code=de Map Local était ignoré en HTTP/2 ; et les réponses HTTP/1.1 resérialisées partaient avec une phrase de motif vide - Correction de la correspondance des règles : les règles IP
no-resolveignoraient une connexion vers un littéral IP dès que la détection de protocole lui avait fourni un nom ; les lignes RULE-SET portant des options après le contenu étaient écartées ;RULE-SET,<name>,<policy>,no-resolveperdaitno-resolve; HOSTNAME-TYPE ne correspondait jamais ; RULE-SET et DOMAIN-SET dans AND / OR / NOT s'évaluaient toujours à faux, et SCRIPT toujours à vrai ; l'UNKNOWNde GEOIP et IP-ASN ne correspondait jamais ; un domaine routé vers un proxy par une règle logique était quand même réellement résolu ; et un littéral IPv6 entre crochets dans un en-tête Host était lu comme un nom d'hôte - Correction de
PROTOCOL,TCPetPROTOCOL,UDPqui ne correspondaient jamais, si bien que la façon habituelle de bloquer QUIC avec une règle AND fonctionne ;PROTOCOL,HTTPcorrespond désormais aussi aux requêtes simples passant par le proxy HTTP local, chemin qu'emprunte le trafic du proxy système - Correction de
block-quicqui n'acceptait qu'une seule des valeurs de Surge, toute autre valeur signifiant l'absence totale de blocage de QUIC - Correction des règles IP-ASN qui ne fonctionnaient jamais : les bases GeoLite2 placées dans
~/Chute/Contentétaient ignorées, et Chute n'embarquait aucune base ASN propre ; il en embarque désormais une - Correction des lignes PROCESS-NAME et PROCESS-PATH d'un jeu de règles qui étaient mises en minuscules, si bien qu'une règle nommant
Chromene correspondait jamais - Correction du démarrage de Chute avec un groupe select réglé sur autre chose que son premier membre, qui publiait une notification « groupe de politiques changé », et des reconstructions ultérieures qui déclenchaient l'avertissement d'instabilité ; un groupe sans choix mémorisé respecte désormais le
default=du profil - Correction de l'API de script :
$klne.getPolicyGroups()etselectPolicy()ne lèvent plus d'erreur la première fois qu'on les utilise,reloadConfiguration()recharge,getActiveConnections()rapporte le vrai hôte, port et id,closeConnection()ferme,startURLTest()lance un test, et un script before-send avecrequires-bodyreçoit le corps - Correction de
[Replica] hide-crashlytics-request, analysé mais jamais appliqué, dekeyword-filterqui comparait le nom d'hôte entier au lieu de vérifier qu'il contient le mot-clé, deexternal-http-controller = *:9090et:::9090qui étaient rejetés, et deoptimistic-dns = falsequi servait encore des enregistrements expirés - Correction de XHTTP qui plantait sous charge et se bloquait après la première écriture, si bien qu'une poignée de main TLS à travers lui n'aboutissait jamais, ainsi que de son remplissage stream-up sur HTTP/1.1
- Correction de Hysteria2 qui abandonnait tout datagramme UDP trop grand pour une seule trame QUIC DATAGRAM, ce qui renvoyait le HTTP/3 d'une app vers TCP, et d'un groupe url-test comprenant un membre Hysteria2 qui plantait
- Correction du redémarrage du mode amélioré qui réutilisait le premier port local et les numéros de séquence TCP de l'exécution précédente, auxquels un pair WireGuard détenant encore l'ancienne connexion répondait par des réinitialisations
- Correction de WireGuard qui plantait lorsqu'il était démarré depuis deux endroits à la fois, de Shadowsocks 2022 qui perdait la fin d'une réponse, de SSH qui, au repos, se bloquait 30 secondes et monopolisait un cœur de processeur, et des connexions REALITY / uTLS qui transmettaient un téléchargement corrompu après un enregistrement défectueux au lieu de se fermer
- Correction de Tailscale : sur un Mac doté de deux interfaces sur un même réseau, une poignée de main à laquelle l'autre adresse répondait n'aboutissait jamais, et les connexions restaient bloquées après l'arrêt de Tailscale
- Correction des deux écouteurs locaux qui restaient arrêtés après un rechargement — un écouteur qui s'arrête de manière inattendue est désormais redémarré —, du proxy HTTP qui ne répondait pas à une requête non authentifiée par 407 et
Proxy-Authenticate, d'un interblocage dans l'ancien XTLS, et des transports WebSocket qui ignoraient Ping et Close - Correction d'un plantage au démarrage du moteur sous macOS 10.15
- Correction des valeurs de script contenant des virgules — une expression cron comme
0 8,20 * * *ou un argument JSON — tronquées à la première virgule lors d'un enregistrement depuis l'éditeur de script, et des membres de groupe de politiques dont le nom contient une espace ou une virgule, enregistrés sans guillemets - Diverses améliorations de stabilité et de performances
Version 1.1.3 (230)
Nouvelles fonctionnalités :
- Ajout d'un assistant de configuration : au premier lancement, il vous mène de rien à une configuration fonctionnelle — importer un abonnement ou un lien de partage, saisir un serveur à la main, ou désigner un fichier de configuration que vous possédez déjà — puis installe l'assistant privilégié, applique le mode de trafic choisi et vérifie la connexion avant de conclure. Il peut être rouvert à tout moment depuis le menu
- Ajout de l'import de liens de partage (
vmess://,ss://,ssr://,trojan://,vless://,hysteria2://,shadowtls://) : les liens sont convertis localement, et un abonnement qui renvoie une liste de liens de partage — y compris encapsulée en base64 — est également accepté - Ajout de la détection du presse-papiers dans la feuille d'import : un lien qui s'y trouve est proposé derrière un bouton « Utiliser » plutôt que saisi silencieusement
- Ajout du schéma d'URL
chute://, afin qu'un lien d'import sur une page web s'ouvre dans Chute ; l'adresse est contrôlée puis confirmée avant tout téléchargement - Ajout de la prise en charge du protocole AmneziaWG, avec un éditeur pour ses paramètres d'obfuscation (Jc/Jmin/Jmax, S1–S4, H1–H4, I1–I5)
- Ajout du transport XHTTP à l'éditeur de politiques pour Trojan, VMess et VLESS — mode, chemin, hôte, en-têtes de requête et remplissage, limites de taille de post et d'intervalle, les quatre bornes XMUX, ainsi qu'un point de téléchargement distinct
- Ajout du transport gRPC à l'éditeur de politiques, avec nom de service et multi-mode
- Ajout des réglages ECH (Encrypted Client Hello) pour les politiques TLS : interrupteur d'activation,
ech-configépinglée et remplacement du nom de couvertureech-public-name - Ajout d'une empreinte client (uTLS) par politique, ainsi que d'une valeur par défaut pour tout le profil dans les réglages généraux
- Ajout des méthodes de chiffrement Shadowsocks AEGIS-128L et AEGIS-256
- Ajout de l'échange de clés hybride post-quantique X25519MLKEM768 pour TLS 1.3
- Ajout du sélecteur de chiffrement VMess, de l'épinglage d'empreinte de certificat MASQUE, d'une désactivation d'UDP par politique, et d'interrupteurs de multiplexage pour la famille HTTP, Shadowsocks, ShadowsocksR, Trojan, ShadowTLS et Hysteria2
- Ajout du service de nœud de sortie et de routeur de sous-réseau Tailscale : annoncez ce Mac et les réseaux situés derrière lui, activez le service depuis la barre des menus, recevez une notification lorsqu'un administrateur l'approuve, et gardez éventuellement le Mac éveillé tant qu'il achemine du trafic
- Ajout de la suppression de profils dans la liste des profils : les profils gérés par Chute sont placés dans la corbeille, tandis que les fichiers importés sur place sont seulement désenregistrés et restent où ils sont
- Ajout d'une fenêtre de rapport d'erreurs de configuration — une liste redimensionnable indiquant numéro de ligne, gravité, message et ligne d'origine, avec ⌘C sur les lignes et un bouton « Tout copier » — qui remplace une alerte pouvant dépasser la hauteur de l'écran
- Ajout de Map Remote à [URL Rewrite] : une règle de type
headerréécrit désormais la ligne de requête et l'hôte amont, avec expansion des groupes de capture - Ajout des arguments de module (
#!arguments), permettant de réutiliser un même module avec des valeurs différentes
Améliorations :
- Refonte de l'éditeur de politiques autour de formulaires par protocole : chaque protocole possède ses propres champs au lieu de partager des zones de texte avec des protocoles sans rapport, et la liste des types peut s'allonger sans renuméroter ceux du dessous
- À l'enregistrement, l'éditeur de politiques conserve désormais les options pour lesquelles il n'a pas de champ (ECH, ALPN, épinglage de certificat,
test-url,udp-relay,tfo) - Suppression de l'interrupteur TCP Fast Open pour TUIC, Hysteria2, MASQUE, AnyTLS et SSH, dont les adaptateurs ne lisent jamais cette option ; une politique portant déjà
tfola conserve - Amélioration de l'import des profils Clash, sing-box et Surge tels qu'ils sont publiés, y compris les sections MitM/Panel/Ponte de Surge, les variantes de REJECT, les lignes de module et le sélecteur [SSID Setting]
- Chute explique désormais à quoi sert l'assistant privilégié avant que macOS ne demande l'autorisation, au lieu de laisser la boîte de dialogue système apparaître sans contexte
- Ordonnancement des écrans du premier lancement : la licence est lue avant l'affichage de toute fenêtre, et la demande d'autorisation des notifications attend la fermeture de l'assistant de configuration
- Sans aucune configuration, la barre des menus propose désormais les Préférences, la fenêtre principale et les points d'entrée d'import au lieu d'un simple sélecteur de fichier ; les interrupteurs du tableau de bord indiquent ce qui manque au lieu d'échouer une minute plus tard ; et une telle installation démarre dans la nouvelle fenêtre principale
- L'état vide de la liste des profils et l'élément d'import par URL mentionnent maintenant les liens de partage, et la fenêtre d'aide explique ce qui doit réellement se produire avant que quoi que ce soit passe par le proxy
- Amélioration du débit et de l'usage processeur sur le chemin de données, la mise en correspondance des règles et le traitement UDP
- Les connexions ne sont plus réutilisées sur un chemin réseau remplacé après un changement de réseau du Mac
Corrections de bugs :
- Correction d'une licence valide signalée comme illégale après un redémarrage, où un unique échec de vérification passager arrêtait le proxy et ouvrait la fenêtre de licence
- Correction de la confirmation « Révoquer la licence » qui ne faisait rien
- Correction du bouton Annuler de l'invite d'erreur de configuration qui chargeait et démarrait quand même la configuration défectueuse, et de l'action d'abandon placée sur le bouton par défaut
- Correction de la perte du
flowVLESS lorsque REALITY était activé, et le client parle désormais réellement le cadrage XTLS Vision au lieu de se contenter de l'annoncer - Correction d'une politique dont le type ne peut être affiché par l'éditeur et qui était réécrite en HTTP à l'enregistrement
- Correction des politiques WireGuard et AmneziaWG désignant une section de configuration, qui recevaient un port littéral 0
- Correction de l'écriture de
ws-pathetws-headersalors que l'interrupteur WebSocket était désactivé - Correction de la page de réglages Interface qui ne défilait pas
- Correction de Shadowsocks
obfs=httpqui envoyait une ligne de requête malformée, laissant le tunnel connecté mais ne transportant rien - Correction de la désynchronisation de Shadowsocks 2022 lorsqu'une charge utile était répartie sur plusieurs lectures, et correction du format UDP de chacha20-poly1305
- Correction d'un alias
[Host]qui ne correspondait jamais : une requête A sur le nom aliasé passait au serveur amont et revenait en NXDOMAIN - Correction de la migration de connexion QUIC qui échappait aux règles
PROTOCOL,QUICet à l'option block-quic - Correction de WireGuard qui abandonnait les paquets mis en file d'attente pendant le rétablissement d'une session
- Correction de la ligne de description
#!argumentsd'un module qui écrasait les valeurs par défaut des arguments voisins - Diverses améliorations de stabilité et de performances
Version 1.1.2 (210)
Nouvelles fonctionnalités :
- Ajout de Tailscale comme type de proxy intégré : configurez un compte Tailscale directement dans Chute, rejoignez un tailnet et acheminez le trafic via des nœuds Tailscale — sans client distinct
- Ajout d'un volet de configuration Tailscale : saisie sécurisée de la clé d'authentification, vérification de la connexion, liste des nœuds du tailnet et changement de nœud de sortie
- Ajout d'un widget d'état Tailscale au tableau de bord et d'un raccourci dans la barre des menus pour changer de nœud de sortie
- Ajout de notifications système pour les diagnostics de proxy, y compris les références de politique orphelines, les changements d'IP de sortie et les événements Tailscale, avec des interrupteurs par type dans les réglages
- Ajout du type de proxy MASQUE à l'éditeur de politiques
- Ajout d'un éditeur de tableau pour la liste de contournement, avec des noms d'hôte simples par défaut et l'export automatique de no_proxy
- Ajout du regroupement des connexions par application dans le panneau Trafic
- Relèvement de la version minimale de macOS prise en charge à 10.14 (Mojave)
Améliorations :
- Amélioration du débit TUN sous macOS
- Amélioration de la stabilité de l'assistant privilégié, du proxy système et du cycle de vie DNS/TUN
- Amélioration de la stabilité et du débit des connexions Tailscale et WireGuard
- Amélioration de la fiabilité de l'extension système et de la reprise automatique du VPN
- Amélioration de la vérification de licence afin de ne plus traiter des erreurs serveur passagères comme une révocation
- Assainissement des noms de fichiers de configuration afin d'éviter que des caractères de chemin non valides ne provoquent des échecs de chargement
Corrections de bugs :
- Correction d'un problème où l'assistant pouvait se rattacher à un tunnel VPN déjà actif
- Correction d'un plantage provoqué par un changement de langue concurrent
- Correction d'un problème où le tunnel VPN pouvait échouer au second démarrage
- Correction du graphique sparkline de vitesse d'envoi qui traçait les données de réception
- Diverses améliorations de stabilité et de performance
Version 1.1.1 (202)
- Nouvelle interface principale avec tableau de bord : fenêtre à 4 onglets repensée (Tableau de bord, Trafic, Config, Journal), au design glass-morphism, avec graphiques sparkline de vitesse en temps réel, cartes de widgets personnalisables et animations de micro-interaction
- Nouveaux widgets de tableau de bord : état du proxy, mode TUN, temps de fonctionnement, connexions actives, débit descendant/montant et profil de configuration actuel
- Nouvel onglet de gestion des profils pour changer et organiser les profils de configuration
- Inspecteur de trafic amélioré, avec filtrage de session et consultation des journaux enrichis
- Nouveau mode amélioré VPN : option d'extension système PacketTunnel aux côtés de l'ancien utun par assistant, sélectionnable dans les Préférences
- Migration du démon assistant privilégié de SMJobless vers SMAppService (macOS 13+)
- Migration de l'extension réseau vers une extension système avec flux d'activation OSSystemExtensionRequest
- Ajout d'éditeurs de configuration pour les sections Body Rewrite, Script, Module et WireGuard
- Ajout d'un outil de diagnostic DNS des règles
- Mise à jour du noyau KLNEKit avec une importante extension fonctionnelle
- Ajout de la prise en charge du protocole AnyTLS avec obfuscation par remplissage multicouche
- Ajout de la prise en charge du protocole TUIC (relais TCP/UDP multiplexé fondé sur QUIC)
- Ajout de la prise en charge du protocole Hysteria2 avec contrôle de congestion Brutal
- Ajout de la prise en charge du protocole WireGuard (configuration en ligne et par section)
- Ajout de la prise en charge du protocole ShadowTLS avec camouflage d'empreinte TLS
- Ajout de la prise en charge de VLESS REALITY pour la résistance à la censure
- Ajout des méthodes de chiffrement Shadowsocks 2022 (2022-blake3-aes-128/256-gcm, chacha20-poly1305)
- Ajout du transport gRPC pour les protocoles VMess et VLESS
- Ajout de la prise en charge de DNS-over-TLS (DoT), DNS-over-QUIC (DoQ) et DNS-over-HTTP/3 (DoH3)
- Ajout de l'attribution par domaine de DoT/DoQ/DoH3 dans le mappage DNS local
- Ajout du système de scriptage JavaScript (7 types de scripts : rule, dns, request, response, generic, scheduled, dns-ttl)
- Ajout de la réécriture de corps : recherche et remplacement dans les corps de requête/réponse HTTP par regex (avec groupes de capture) ou JSONPath
- Ajout de la réponse simulée : renvoi de données simulées ou de contenu Map Local aux requêtes correspondantes
- Ajout de la détection de protocole : identification du protocole réel de la connexion et application des règles en conséquence
- Ajout des rapports de notification avec 5 types d'événements (échec de connexion, proxy indisponible, pic de trafic, échec de mise à jour de configuration, changement de groupe de politiques)
- Ajout de l'API de contrôle HTTP et d'une interface web intégrée pour la surveillance et la gestion à l'exécution
- Ajout du système de modules (.sgmodule) pour une gestion modulaire de la configuration
- Ajout du fournisseur de proxy pour la mise à jour dynamique des listes de proxys
- Ajout du groupe de politiques LoadBalance avec les stratégies round-robin, consistent-hashing et sticky-sessions
- Ajout de la prise en charge du groupe de politiques Fallback
- Ajout du type de règle IP-ASN (base de données ASN MaxMind GeoLite2 intégrée)
- Ajout des règles de combinaison logique : AND, OR, NOT
- Ajout des règles de correspondance avancée : SUBNET, HOSTNAME-TYPE, IN-TYPE, IN-USER, IN-NAME
- Ajout de nouveaux types de règles basées sur le domaine : DOMAIN-WILDCARD, DOMAIN-REGEX, DOMAIN-SET
- Ajout du type de règle PROTOCOL (correspondance selon le protocole détecté : HTTP, HTTPS, TLS, TCP, UDP, QUIC, STUN, DNS, DOH, DOQ)
- Ajout du type de règle SCRIPT pour une correspondance personnalisée fondée sur JavaScript
- Ajout de nouveaux types de règles de processus : PROCESS-PATH, PROCESS-NAME-REGEX
- Ajout du type de règle SRC-PORT
- Ajout des options extended-matching et requires-resolve pour les règles
- Ajout des modes de rejet de la réécriture d'URL : reject-200, reject-img, reject-dict
- Ajout de la prise en charge de la direction réponse pour la réécriture d'en-tête (header-response-add/del/replace)
- Ajout de la prise en charge des variables de modèle dans Map Local de la réécriture d'URL
- Ajout de la prise en charge de Replica pour un enregistrement sélectif du trafic
- Ajout de la prise en charge de la configuration gérée avec intervalle de mise à jour automatique
- Ajout de l'option exclude-simple-hostnames
- Ajout de l'option Bypass TUN pour acheminer en direct des plages d'IP indiquées
- Ajout de l'option globale interrupt-exist-connections
- Ajout de l'option network-framework
- Ajout de l'option disable-db-record
- Extension des options de groupe de politiques : expected-status, hidden, idle-timeout, lazy
- Extension du système de règles de 6 à 37 types de règles
- Optimisation du débit TUN (UTUN_OPT_MAX_PENDING_PACKETS)
- Correction de la valeur par défaut d'IPv6 (false → true)
- Correction des valeurs par défaut du niveau de journalisation, ajout des niveaux none et fatal
- Correction de la cohérence de nommage Shadowsocks/ShadowsocksR
- Diverses améliorations de stabilité et de performance
Version 1.0.7 (163)
- Mise à jour de KLNEKit
- Ajout de la prise en charge de la politique SSH
- Correction d'un problème UDP
- Corrections de bugs
Version 1.0.5 (155)
- Mise à jour de KLNEKit
- Passage du réseau TUN à 198.18.0.0/15 afin d'éviter les conflits avec les adresses internes IPv4
- Ajout d'une fonction d'aide pour l'icône du menu
- Implémentation de la prise en charge d'IPv6 pour le TUN
- Activation de la prise en charge du ping pour le TUN
- Correction de la disparition du menu du Dock
- Correction de la configuration de proxy non rétablie après la fermeture de Chute
- Correction du réseau TUN
- Correction du composant de mise à jour de l'app
- Corrections de bugs
Version 1.0.4 (145)
- Ajout de la prise en charge du protocole VLESS
- Ajout de XTLS pour VLESS
- Ajout de l'affichage des IP locales
- Ajout de la prise en charge des tunnels UDP dans Chute Dashboard
- Amélioration du serveur DNS intégré
- Correction du traitement de la règle FINAL
- Correction des tunnels UDP
- Corrections de bugs
Version 1.0.3 (132)
- Prise en charge de macOS 10.13 (sans prise en charge de Network.framework)
- Correction du chargement de la section Proxy des fenêtres de configuration
- Correction d'une erreur de requête HTTP
- Corrections de bugs
Version 1.0.2 (102)
- Reconstruction du serveur DNS
- Reconstruction de l'installation de l'extension
- Corrections de bugs
Version 1.0.0 (88)
- Première version publiée
- Ajout de la prise en charge du TUN
[Bêta] Version 0.4.9 (53)
- Correction de l'ordre des règles.
- Ajout de la prise en charge du scan de QR code à l'écran.
- Correction des groupes de politiques.
[Bêta] Version 0.4.5 (32)
- Corrections de bugs.
[Bêta] Version 0.3.5 (25)
- Corrections de bugs.
[Bêta] Version 0.3.0 (20)
- Corrections de bugs.
[Bêta] Version 0.2.0 (8)
- Première version.