Примечания к выпуску Chute tvOS
Версия 1.4 (75)
Новые возможности:
- В панель управления добавлена строка «Адрес веб-интерфейса»: она появляется, как только слушатель консоли действительно поднят, и при открытии показывает QR-код, URL которого несёт токен доступа — достаточно отсканировать его телефоном, чтобы войти, не переписывая пультом адрес и 32 шестнадцатеричных символа
- В Настройки добавлен «Офлайн-диагностический пакет», который приложение собирает без работающего туннеля: сведения об устройстве и приложении, VPN-профиль в том виде, в каком его хранит tvOS, сводка выбранной конфигурации и её ошибок разбора, раздел о сети (доступность, тип канала, серверы DNS, локальные адреса и интерфейсы), очищенное начало конфигурации, то, как завершился предыдущий запуск, части журнала последнего сеанса и ожидающие отправки отчёты о сбоях. Поскольку в tvOS нет меню «Поделиться», архив отдаёт одноразовый локальный HTTP-сервер по неугадываемому пути и показывает его в виде QR-кода; после выхода с экрана ссылка перестаёт работать
- В журнал сеанса добавлен фильтр по уровню — «Все», Notify+, Warning+, Fatal — так что «покажи предупреждения» умещается в одно нажатие вместо поиска, набранного на экранной клавиатуре; строки, уровень которых разборщик не распознал, никогда не скрываются
- В сведения о сеансе добавлена атрибуция перезаписи: раздел «REWRITES» рядом с правилом и политикой, направившими запрос, называет правило URL Rewrite, Header Rewrite, Body Rewrite, Map Local, Map Remote или Mock, которое его изменило
- В редактор конфигурации добавлена строка «Allow WiFi Access» — ключ, который появляется при импорте
http-listen = 0.0.0.0:…из Surge илиallow-lanиз sing-box и который редактор раньше вообще не мог показать; пока он включён, обе строки слушателей показывают «Вкл.» и заблокированы, поскольку движок сам расширяет оба слушателя - Добавлен французский как встроенный язык, и все восемь встроенных языков объявлены в App Store
- В веб-консоль добавлены вкладки «Текущие» и «История», вид подробностей (совпавшее правило, источник правила, политика, адаптер, источник DNS, причина закрытия, тела запроса и ответа), страница «Правила», показывающая, какие правила перезаписи срабатывали, и страница «Диагностика» (объём памяти, CPU, время работы, потоки, как завершился предыдущий запуск, счётчик отказов, журнал событий, снимок Tailscale и пробы ping / DNS / выход / URL-тест); консоль теперь полностью переведена на все девять языков — и поскольку самому телевизору некуда положить файл, именно там пользователь tvOS скачивает диагностический пакет среды выполнения и экспорт HAR
- Добавлены точки входа HTTP-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-API управления больше не открыт без аутентификации, когда в конфигурации нет
external-http-secret: движок генерирует токен, который несёт QR-код адреса веб-интерфейса; чтобы сохранить анонимный доступ, задайтеexternal-http-secret = none; кроме того, адрес прослушивания с подстановкой больше не считается loopback - Сопоставление правил на больших списках стало значительно быстрее: содержимое RULE-SET и DOMAIN-SET индексируется при загрузке или восстановлении вместо потокового просмотра на каждое соединение, а таблица правил, состоящая только из доменных правил, сопоставляется по хешированному плану — для списка в 50 тысяч строк один поиск сокращается примерно с 94 мс до менее 2 мс при около 100 КБ памяти на индекс
- UDP-потоки сопоставляются один раз: решение по потоку запоминается на 60 секунд, так что последующие датаграммы пропускают оба прохода сопоставления и DNS-запрос между ними
- Лучшее восстановление после смены сети: туннели, исходный адрес которых больше не существует ни на одном интерфейсе, закрываются, а не держат приложения до тайм-аута простоя, а путь, который принимает соединения, но не передаёт данные, сообщается как «чёрная дыра»
- Журналы сеансов записываются частями по 8 МБ (до восьми на запуск, самые старые удаляются); экран журнала берёт самые новые части в объёме одной части вместо того, чтобы читать в память весь запуск, сообщает, когда более старые части опущены, и продолжает следить за пишущейся частью через ротацию
- Движок держит маркер запуска во время работы и при следующем старте сообщает, завершился ли предыдущий запуск штатно или был убит — в заголовке журнала, в
/api/statusи в обоих диагностических пакетах - Экспорт HAR теперь собирается движком из записанных кадров, поэтому коды состояния, метки времени и тайминги реальны, а каждая запись несёт под
_klвыбранную политику, совпавшее правило и срабатывания перезаписи - Лицензия нужна только для трёх функций, которые продаёт страница покупки, — Несколько конфигураций, Управление локальным прокси-сервером и Запись трафика; переключатели HTTP API и веб-интерфейса, Определение протокола, Оптимальный DNS, «Очистить кэш DNS» и строка «Адрес веб-интерфейса» её больше не требуют, а пользователю без лицензии с остановленным туннелем предлагается запустить туннель, а не страница покупки
- Консоль, привязанная к адресу loopback, теперь сообщает, что открывается только на этом Apple TV, и что следует задать вместо этого, вместо того чтобы предлагать QR-код, который никуда не ведёт; токен доступа больше не выводится на экран, который видит вся комната
- Текст о покупке теперь говорит, что одна покупка покрывает три Apple TV и три iPhone или iPad; если «Восстановить покупку IAP» ничего не находит, предупреждение предлагает «Открыть руководство» и показывает QR-код с кроссплатформенными инструкциями по лицензии на языке приложения
- При
loglevel = infoобъёмный поток, передавший не менее 1 МиБ, при закрытии пишет одну строку о том, сколько он ждал удалённую сторону и сколько — приложение
Исправления ошибок:
- Исправлен MitM в режиме TUN: хост, совпавший с правилом MitM, зависал до тайм-аута, поэтому Header Rewrite, Body Rewrite, Map Local, Mock и расшифрованные записи для HTTPS никогда не применялись к трафику приложений (трафик через локальный HTTP/SOCKS5-прокси не затрагивался)
- Исправлено бездействие
allow-wifi-access: локальные слушатели HTTP и SOCKS5 оставались на loopback, и ничто в Wi-Fi не могло до них достучаться; теперь флаг (иallow-lansing-box при импорте) расширяет оба слушателя, а его отключение перепривязывает их - Исправлен сбой приложения при переключении любого выключателя во втором разделе панели управления после того, как строка «Адрес веб-интерфейса» смогла появляться: число строк таблицы менялось под перезагрузкой отдельной строки
- Исправлено: после того как движок стал ротировать журнал по фиксированному размеру, экран сеанса показывал произвольный отрезок запуска, а сеанс терял дату после восьмой ротации; части теперь упорядочены по номеру, и живой просмотр больше не замирает на ротации
- Исправлено чтение всех частей журнала сеанса в память разом — до 64 МБ текста на Apple TV — и фильтр по уровню, пропускавший строки-продолжения многострочной записи, саму запись при этом скрывая
- Исправлена перезапись заголовка ответа через MitM HTTP/1.1, которая записывалась как применённая, тогда как клиент получал исходный заголовок, и никогда не совпадала с правилом, написанным по полному URL
- Исправлен 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-TYPETCP | 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 (Encrypted Client Hello) для TLS-политик — переключатель, закреплённая конфигурация ECH (
ech-config) и переопределение прикрывающего имени (ech-public-name) - Добавлен отпечаток клиента (uTLS) для каждой политики, а также значение по умолчанию для всего профиля
- Добавлена поддержка AmneziaWG, варианта WireGuard с обфускацией трафика
- Добавлен экран отчёта об ошибках конфигурации с поддержкой навигации фокуса tvOS вместо блокирующего предупреждения
- Добавлен постквантовый гибридный обмен ключами X25519MLKEM768 для TLS 1.3
Улучшения:
- При сохранении редактор политик теперь сохраняет существующие параметры, недоступные для редактирования в текущем интерфейсе (ECH, ALPN, закрепление сертификата,
test-url,underlying-proxy,udp-relay)
Исправления ошибок:
- Исправлен сбой туннеля из-за некорректных правил
IP-CIDR - Исправлены настройки SSH
idle-timeoutи REALITYspiderx, которые записывались под неверными ключами и отбрасывались при сохранении - Исправлен сбой при переключении языка
- Исправлены проблемы отображения экранных элементов управления
- Различные улучшения стабильности и производительности
Версия 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
- Исправлена потеря фокуса и скачки при открытии Dashboard/Sessions и возврате из списка узлов Tailscale
- Исправлено поведение кнопки Menu: надёжно закрывает списки и корректно возвращает фокус
- Исправлен текст в нижнем колонтитуле списка сессий: «смахнуть для удаления» заменено на «долгое нажатие для удаления»
- Различные улучшения стабильности и производительности
Версия 1.0 (35)
- Первый выпуск
Эта страница — перевод английской версии. При расхождениях приоритет имеет английская версия.