История изменений (Changelog)
Все важные изменения в этом проекте документируются в данном файле.
Формат основан на Keep a Changelog, и проект следует семантическому версионированию.
3.0.0 — 2026-10-19
Заголовок раздела «3.0.0 — 2026-10-19»Исправлено
Заголовок раздела «Исправлено»- Импорт URL
socks4://иsocks4a://сохраняет этот протокол. Раньше любой URLsocks*записывался какsocks5, и SOCKS4-прокси открывался рукопожатием SOCKS5. - Shell-обёртки сохраняют код завершения команды и дочернего процесса после
обработки файла передачи из дашборда. Ошибки
env onтакже возвращаются вызывающей оболочке.
Изменено
Заголовок раздела «Изменено»- Команда переименована в
tspm, в том числе при установке через Homebrew иcargo install tspm. В файле запуска оболочки используйтеeval "$(tspm init zsh)"(илиbash). Имена функцииproxyи переменныхTSPM_*сохранены. - Конфигурация хранится в
~/Library/Application Support/tspm/на macOS и${XDG_CONFIG_HOME:-~/.config}/tspm/на Linux. Программа не читает и не переносит прежний каталог. Чтобы сохранить профили, перенесите его вручную и обновите абсолютныйconfig_pathвsettings.json, если он задан. Явное указание путей к конфигу и настройкам продолжает работать. - Файлы передачи команд оболочке и отладки —
~/.tspm-eval,~/.tspm-debug-enabledи~/.tspm-debug.log. Прежние файлы игнорируются. Архивы релиза и формула Homebrew используют имяtspm; импорт библиотеки Rust —tspm. - Homebrew выбирает нативный архив для macOS или Linux и arm64 или x86_64. Перед созданием тега workflow проверяет все четыре архива и их контрольные суммы, затем обновляет в формуле все четыре варианта загрузки вместе.
dirsобновлён с 6 до 7; обе версии используютdirs-sys0.5.- Зафиксированы обновления
clap4.6.7,clap_complete4.6.11,futures0.3.34,reqwest0.13.5,serde_json1.0.154,thiserror2.0.21 иtokio1.53.3.
2.4.0 — 2026-10-18
Заголовок раздела «2.4.0 — 2026-10-18»Безопасность
Заголовок раздела «Безопасность»- Зафиксированный
rustlsобновлён с 0.23.45 до 0.23.46 из-за RUSTSEC-2026-0346, RUSTSEC-2026-0347, RUSTSEC-2026-0348 и RUSTSEC-2026-0349. В них описаны вывод секретов TLS черезDebug, отправка данных приложения внешнему серверу после отказа Encrypted Client Hello, большое выделение памяти при распаковке сертификата до аутентификации и понижение обмена ключами из-за неаутентифицированного ServerHello.
Добавлено
Заголовок раздела «Добавлено»- Установка:
cargo install tspmставит этот релиз из crates.io. Команда по-прежнемуterminal-session-proxy-manager. Прежняя установкаcargo install --gitзанимает тот же бинарник; передcargo install tspmудалите её командойcargo uninstall terminal-session-proxy-manager.
2.3.1 — 2026-10-14
Заголовок раздела «2.3.1 — 2026-10-14»Диаграммы в документации, более надёжная навигация и переключение темы сайта, а также исправления безопасности зависимостей.
Безопасность
Заголовок раздела «Безопасность»- Зафиксированная версия
quinn-protoобновлена с 0.11.17 до 0.11.18 для устранения RUSTSEC-2026-0338, RUSTSEC-2026-0340 и RUSTSEC-2026-0343: паник при обработке QUIC-потоков, задержки ACK и дейтаграмм. Эта необязательная зависимость не включена в текущем наборе возможностей CLI. - Сайт: Уязвимая зависимость
braces(GHSA-vfj7-8cjw-p6xm) исключена из сборки документации: для отбора страниц вstarlight-llms-txtиспользуется Picomatch, совместимость проверяется тестами.
Добавлено
Заголовок раздела «Добавлено»- Docs: Двуязычные диаграммы показывают, где применяются настройки прокси,
как
proxy onменяет окружение текущей оболочки и как дашборд передаёт выбранный профиль обратно в оболочку. - Сайт: Диаграммы Mermaid следуют активной теме и открываются в диалоге с масштабированием, вписыванием, перетаскиванием, сенсорными жестами и управлением с клавиатуры. После закрытия фокус возвращается к кнопке открытия; сочетания клавиш масштабирования браузера остаются доступны.
Исправлено
Заголовок раздела «Исправлено»- Docs: URL изображения счётчика Views обновлён в обеих README, чтобы GitHub запрашивал свежий бейдж вместо прежней записи в кеше изображений.
- Сайт: Документация остаётся видимой после переходов назад и вперёд, включая страницы, восстановленные из кеша истории браузера. Отменённые переходы больше не оставляют содержимое уходящей страницы скрытым.
- Сайт: Выбор светлой, тёмной или автоматической темы синхронизируется между переключателями страницы, вкладками браузера и переходами по истории; переключение работает и при блокировке хранилища. Быстрые смены темы безопасно заменяют незавершённый переход; настройка уменьшения движения учитывается.
Изменено
Заголовок раздела «Изменено»- Сайт: Шапка документации на компьютерах использует логотип и название главной страницы. Мобильная навигация и оглавление имеют общий стеклянный фон; расположение переключателей темы и языка, кнопок GitHub, групп меню и пунктов оглавления стало чётче.
- Contributing: Инструкции агентов ссылаются на отдельные правила и скиллы; описание восстановления релиза, проверок и владельцев соответствует текущим процессам. Архивы завершённых планов удалены.
2.3.0 — 2026-09-16
Заголовок раздела «2.3.0 — 2026-09-16»Релиз, в котором у проекта появился собственный сайт. Двуязычный сайт документации публикуется из собственного Markdown репозитория и одинаково работает на телефонах и на компьютерах. Вывод CLI переработан для терминалов и скриптов, которым оформление только мешает, и закрыта уязвимость в TLS.
Обновляетесь? Три изменения вывода могут затронуть скрипты, которые читают
то, что печатает утилита, — в разделе Изменено они помечены Ломает
скрипты. В config.json, settings.json, именах команд, флагах и кодах
завершения ничего не меняется.
Безопасность
Заголовок раздела «Безопасность»- CLI:
rustlsобновлён до 0.23.45 из-за RUSTSEC-2026-0285: сообщения рукопожатия TLS 1.3, пересекающие границу уровня шифрования, принимались, а не отклонялись.reqwestиспользует его во всех HTTPS-запросах утилиты —status,ping,speedtest,monitor, импорт по URL. - Сайт: Зависимости сборки сайта обновлены до версий, в которых закрыты
уязвимости в
astro(критическая: удалённое выполнение кода через оптимизацию AVIF-изображений),sharp,svgoиjs-yaml. Astro обновлён до 7.3.2. Это касается только сборки сайта, не CLI.
Добавлено
Заголовок раздела «Добавлено»Сайт документации
Заголовок раздела «Сайт документации»- Сайт: Сайт документации по адресу
lebedevkondakovsergeyvach.github.io/Terminal-Session-Proxy-Manager,
на русском (
/ru/) и английском, на Astro Starlight. Страницы генерируются при сборке изREADME*.md,docs/*.md,CONTRIBUTING.mdи changelog, поэтому сайт и файлы на GitHub не могут разойтись. - Сайт: Главная страница: возможности проекта рядом со скриншотами терминала в светлом и тёмном вариантах и плитки быстрого старта.
- Сайт: Оформление в стиле Material Design 3, вся палитра которого выведена из фирменного ржаво-оранжевого цвета проекта, в светлой и тёмной теме, с плавными переходами между страницами — при включённом «уменьшении движения» страница просто сменяется.
- Сайт: Переключатель темы на три положения — светлая, авто (как в системе) и тёмная — с круговым раскрытием при смене темы.
- Сайт: Полнотекстовый поиск с быстрыми ссылками на основные руководства, пока строка поиска пуста, и интерфейсом поиска на русском.
- Сайт: Инструкции по установке во вкладках (Homebrew, Cargo, готовая сборка), пошаговые руководства, цветные блоки-подсказки, блоки кода в рамке терминала с кнопкой копирования и скриншоты, которые увеличиваются по клику или касанию.
- Сайт: Работает на телефонах и сенсорных экранах:
- широкие таблицы прокручиваются вбок, а не обрезаются;
- подписи вкладок на узких экранах переносятся, а не уходят за край;
- кнопки, вкладки и списки — не ниже 44px, чтобы в них было легко попасть пальцем;
- эффекты наведения работают только с мышью, поэтому карточка после касания больше не остаётся «приподнятой»;
- шапка помещается на экране шириной 320px;
- на телефоне переключатели темы и языка страницы документации находятся в меню.
- Сайт: Круглая кнопка «домой» рядом с названием сайта на каждой странице документации — на телефонах и на компьютерах, с подписью «На главную» / «Home» для программ экранного доступа.
- Сайт: Логотип проекта в шапке главной страницы, собственный favicon и иконка для закладок на экране «Домой» в iOS.
- Сайт: Собственная страница 404 на обоих языках — со ссылками на документацию и переходом на главную при любой ширине экрана.
- Сайт: Картинка-превью для ссылок в соцсетях и мессенджерах и
llms.txtдля машинного чтения. - Сайт: Сборка падает на битой внутренней ссылке, поэтому мёртвая ссылка не может попасть на опубликованный сайт.
Документация
Заголовок раздела «Документация»- Docs:
CHANGELOG.ru.md— история изменений на русском, публикуется по/ru/changelog/.README.ru.mdтеперь ведёт на неё, а не на английский файл. - Docs: В
docs/SHELL_INTEGRATION.mdпоявилось объяснение, зачем нужна shell-функция, с диаграммой последовательности;docs/USAGE.mdначинается с разбивки подкоманд на четыре категории. - Docs: В README появился бейдж со ссылкой на сайт документации.
CLI и конфигурация
Заголовок раздела «CLI и конфигурация»- Config: OpenAI (
https://status.openai.com/api/v2/status.json) и Anthropic (https://www.anthropic.com) добавлены в стандартный списокping_targets. Существующие конфиги сохраняют свой список. - CLI: После переключения
proxy switchиproxy use <key>заканчивают строку подтверждения тегом[ON]или[OFF]— заданы ли в этой оболочке переменные прокси. При вызове через shell-функциюproxyтег[ON]значит, что новый профиль уже применён, а[OFF]— что он сохранён и ждётproxy on. - CLI: Меню
proxy switchубирается с экрана при закрытии — и после выбора профиля, и после отмены. - CLI:
proxy pingпечатает ответы HTTP 2xx зелёным, остальные — жёлтым.
Автоматизация и участие в разработке
Заголовок раздела «Автоматизация и участие в разработке»- CI:
website.ymlпроверяет каждый pull request, затрагивающий сайт или документы, из которых он собирается: запускает тесты генератора, собирает сайт и падает на битой внутренней ссылке.pages.ymlпубликует сайт изmain. - CI: Dependabot следит и за npm-зависимостями сайта, а не только за Cargo и GitHub Actions.
- CI: Политика веток требует менять
CHANGELOG.ru.mdвсякий раз, когда меняетсяCHANGELOG.md, — публикуются оба. - Contributing: Git-хуки в
.githooks/, включаются один раз на клон командойgit config core.hooksPath .githooks.commit-msgотклоняет строки авторства инструментов (Co-Authored-By:, «Generated with …»),pre-pushзапрещает пуш вmainи пуш тегов: публикует релиз слияние релизной ветки. - Contributing: Единый набор инструкций для ИИ-агентов.
AGENTS.md— общий контракт;CLAUDE.mdи.cursor/rules/— точки входа для Claude Code и Cursor; правила по областям лежат в.claude/rules/. К скиллам в.claude/skills/добавилисьstarlight-website— для работы над сайтом — иagent-docs-audit, который проверяет набор инструкций на расхождения..mcp.jsonобъявляет серверы документацииcontext7иastro-docs.
Изменено
Заголовок раздела «Изменено»Вывод CLI
Заголовок раздела «Вывод CLI»- CLI — Ломает скрипты:
proxy onиproxy offбольше не печатают строку подтверждения. Выводятся только shell-выражения дляeval, поэтомуeval "$(proxy env on)"теперь молчит. Скрипт, искавший это подтверждение, нужно поправить. - CLI — Ломает скрипты: строка, которую
proxy use <key>иproxy switchпечатают после переключения, заканчивается новым тегом[ON]/[OFF], то есть её форма изменилась. - CLI — Ломает скрипты:
proxy pingпомечает ответ не из диапазона 2xx какWARN (… ms)жёлтым; раньше это былоOKзелёным, как успех. - CLI: Эмодзи убраны из строк локализации и из заголовков отчётных команд —
ping,diagnose,monitor,git,import,benchmark,speedtest— и из индикатора порта в дашборде. У маркера приглашения и у заголовка дашборда они остались. Статусы, которые печатаетproxy ping, теперь переводятся, а не зашиты по-английски. - CLI: Разделитель между блоками отчёта — обычная линия из
-вместо жирной голубой из=, а заголовки отчётов больше не начинаются с пробелов.
Документация
Заголовок раздела «Документация»- Docs:
docs/*.mdиCONTRIBUTING.md— обычный CommonMark и, как и раньше, читаются на GitHub. Вкладки, карточки, шаги и подсказки сайта записаны комментариями<!--site:…-->: GitHub их не показывает, а генератор сайта разворачивает. - Docs: В
docs/CONFIGURATION.mdприведён полный списокping_targetsпо умолчанию, а таблица полей называет все команды, которые его читают. - Docs: Исправлены описания того, что делают некоторые команды:
benchmarkпроверяет профили по очереди, опрашивая все цели одного профиля одновременно, — а не все профили параллельно;Spaceвproxy dashсохраняет выбранный профиль активным без выхода; переменные оболочки он не обновляет — это делает толькоEnter;monitorпри неудачной проверке или без заданной переменной прокси сохраняет самый быстрый доступный профиль активным, но не меняет переменные оболочки, в которой запущен;profile setделает профиль активным, не переприменяя переменные оболочки;diagnoseпоказывает основные переменные прокси, а не все, что устанавливаетproxy on.
- Docs: Описание релиза в
.ai/GIT_WORKFLOW.mdсоответствует тому, как работает пайплайн: тег создаётся после сборки бинарников, поэтому упавшая сборка не оставляет тега, и шаги восстановления исходят из этого.
Зависимости
Заголовок раздела «Зависимости»- CLI:
chacha200.10.1, отозванный (yanked) с crates.io, заменён на 0.10.2.
Участие в разработке
Заголовок раздела «Участие в разработке»- Contributing: Изменение в
docs/, README,CONTRIBUTING.mdили changelog должно проходить и сборку сайта (cd website && npm ci && npm test && npm run build), потому что эти файлы — содержимое сайта. - Contributing: Правило про changelog в
CONTRIBUTING.mdсовпадает с проверкой CI: запись нужна и для изменений вshell/иconfigs/, причём в обоих файлах —CHANGELOG.mdиCHANGELOG.ru.md. Шаблон pull request использует те же проверки с--lockedиnpm ci, что и остальная документация. - Contributing:
CLAUDE.mdимпортируетAGENTS.md, а не только ссылается на него, — теперь Claude Code действительно загружает правила проекта. Скиллы переехали из.agents/skills/(там остались симлинки) в.claude/skills/, где их находит Claude Code. Скиллrelease-managerобновляет блок ссылок в конце changelog, аcargo-auditспрашивает, куда отнести запись о безопасности, если версия релизной ветки уже зафиксирована. - CI: Политика веток сравнивает pull request с его merge base, поэтому pull request только с документацией больше не блокируется другими коммитами релизной ветки.
- CI: У workflow по умолчанию доступ к репозиторию только на чтение; задача
cargo auditполучает лишь то дополнительное разрешение, которое нужно ей, чтобы публиковать результаты, — раньше это у неё не получалось.
Удалено
Заголовок раздела «Удалено»- CLI: Ключи перевода
env_on_msgиenv_off_msg— не используются с тех пор, какproxy onиproxy offперестали печатать подтверждение. - Contributing: Скилл
aur-packager— пакета в AUR у проекта нет — и неиспользуемый.agents/mcp_config.json.
2.2.2 — 2026-08-21
Заголовок раздела «2.2.2 — 2026-08-21»Исправлено
Заголовок раздела «Исправлено»- Автоматизация релизов: Повторная попытка обновления Homebrew tap с исправленной ссылкой на имя тега.
2.2.1 — 2026-08-21
Заголовок раздела «2.2.1 — 2026-08-21»Исправлено
Заголовок раздела «Исправлено»- Автоматизация релизов: Исправлена ошибка релиза, из-за которой формула Homebrew не обновилась при выпуске версии v2.2.0. Запущен патч-релиз для корректного выполнения
mislav/bump-homebrew-formula-actionи синхронизации tap.
2.2.0 — 2026-08-20
Заголовок раздела «2.2.0 — 2026-08-20»Релиз, направленный на повышение надежности и корректности работы. Исправлен ряд давних ошибок, включая ту, которая могла привести к потере сохраненных профилей пользователя, а также уязвимость с shell-инъекцией. Два изменения влияют на скрипты — см. раздел Изменено.
Исправлено
Заголовок раздела «Исправлено»- Некорректный
config.jsonбольше не удаляет ваши профили. Первая попытка исправления была неполной и была выявлена в ходе ревью: функцияload()перестала перезаписывать файл, однако следующая команда, выполняющая сохранение (profile set/use/remove,importили нажатие Enter в дашборде), по-прежнему записывала дефолтные значения прямо поверх него. Теперь некорректно спарсенный конфигурационный файл помечается соответствующим образом, а любая попытка сохранить изменения поверх него завершается ошибкой с пояснением. Команды только для чтения продолжают работать, что позволяет диагностировать проблему с файлом. То же самое относится и кsettings.json, где перезапись также неявно сбрасывалаconfig_pathи перенаправляла утилиту на другой файл конфигурации. env onвозвращает ненулевой код завершения при отсутствии активного профиля. Ранее выводилось сообщение об ошибке, но код возврата был0, из-за чего цепочкаproxy_on && deployпродолжала выполняться в терминале без прокси.profile setбольше не сбрасывает протокол существующего профиля. Для флага--protocolбыло задано значение по умолчанию, из-за чего изменение только порта неявно перезаписывало протоколhttp-профиля наsocks5.- IPv6-профили теперь генерируют валидные URL. Запись вида
::1принималась, но преобразовывалась вhttp://::1:1080, что не может разобрать ни один клиент. Теперь литералы заключаются в квадратные скобки в URL и остаются без скобок в параметрах JVM-Dhttp.proxyHost=, в соответствии с требованиями каждого из форматов. - Ошибка применения URL прокси больше не расценивается как успех. Ошибка создания прокси игнорировалась, из-за чего запрос отправлялся напрямую:
monitorсообщал о неработающем туннеле как об исправном,benchmarkпомещал неработающий профиль на первое место по скорости, после чегоbestвыбирал его, аstatusи дашборд отображали реальный IP-адрес машины так, будто это IP прокси. - Дашборд больше не искажает собственное отображение. Нажатие
sзапускало бенчмарк, чей спиннер прогресса выводит данные в stderr по таймеру, перекрываясь с кадрами ratatui. - Выбор в дашборде больше не сбивается при поступлении результатов бенчмарка. Список сортировался заново без пересчета положения курсора, из-за чего нажатие Enter применяло тот профиль, который случайно оказался под курсором.
- Shell-обёртка возвращает реальный статус завершения. Шаг повторного применения настроек становился собственным статусом функции и инвертировал его:
proxy use workвозвращал ошибку при успехе при выключенном прокси, аproxy use nopeвозвращал успех при ошибке при включенном. runбольше не позволяет дочерней команде переопределять настройки самого менеджера. Предварительный парсер сканировал всю командную строку, поэтомуproxy run mytool --lang enизменял конфигурационный файл, загружаемый самим менеджером.speedtestсообщает об обрыве соединения вместо некорректно рассчитанной скорости. Ошибка передачи данных посреди потока была неотличима от штатного завершения тела ответа.diagnoseразрешает доменные имена (DNS). Проверка сокетов принимала только IP-литералы, поэтому профиль с доменным именем всегда отображался с закрытым портом. Функцияload()перезаписывала нечитаемый конфиг дефолтными значениями, поэтому одна случайная запятая приводила к незаметному удалению всех профилей. Файл, который существует, но не может быть спарсен, теперь выводится в stderr и сохраняется байт-в-байт. То же самое относится кsettings.json.proxy --helpбольше не выводит необработанный ключcmd_debug. Для подкомандыdebugотсутствовал перевод. Теперь тест проверяет наличие описания для каждой подкоманды на обоих языках.proxy runкорректно принимает флаги для дочерней команды. Вызовproxy run curl -sS URLзавершался ошибкой «unexpected argument ‘-s’»; теперь аргументы после имени программы передаются без изменений.- Флаг
-hснова везде означает--help. В командеprofile setон был привязан к--host, перекрывая флаг вызова справки для этой подкоманды. - Дашборд больше не паникует при пустом списке профилей. Нажатие клавиши со стрелкой вычисляло
len() - 1для пустого списка, что вызывало панику на альтернативном экране и оставляло терминал в неработоспособном состоянии. - Терминал корректно восстанавливается при любом выходе из дашборда. RAII-гард в сочетании с перехватчиком паник (panic hook) заменили прежнюю очистку, работавшую только при успешном завершении, из-за чего пользователи оставались в raw-режиме на альтернативном экране при любой ошибке или панике.
- Дашборд экспортирует те же переменные, что и
env on. Ранее он устанавливал толькоHTTP_PROXY,HTTPS_PROXYиALL_PROXY, опуская имена в нижнем регистре и параметры для JVM. - Импорт постороннего JSON-файла больше не создаёт фиктивные профили. Поскольку каждое поле конфигурации имеет значение по умолчанию в serde, любой JSON-объект успешно парсился и «импортировал» два встроенных профиля по умолчанию.
git on/git offсообщают об ошибках. Статус завершения командыgit configигнорировался, поэтому при отсутствии установленногоgitвсё равно выводилось сообщение об успешном выполнении.monitorбольше не считает статус 404 успешным. Теперь он опрашивает настраиваемыйhealth_check_url, возвращающий204, вместо специальной обработки ошибочного ответа конкретного API.- Результаты бенчмарка теперь отличают недоступный прокси от просто медленного; ранее специальное значение-маркер
9999объединяло оба случая. - Переменная
NO_COLORобрабатывается в соответствии со спецификацией (любое непустое значение), а не только при ее наличии в окружении.
Безопасность
Заголовок раздела «Безопасность»- Shell-инъекция в
env onи механизме передачи состояния дашборда. Вывод, передаваемый вeval "$(...)", интерполировал поля профиля без экранирования, что позволяло значению хоста из отредактированного или импортированного конфига выполнять произвольные команды. Теперь все значения экранируются одинарными кавычками POSIX, что подтверждено тестом, выполняющим сгенерированный скрипт в реальном shell. - Профили проходят валидацию перед сохранением как в
profile set, так и при импорте: хост проверяется по белому списку символов, порт должен быть ненулевым, а протокол — поддерживаться утилитой.
Добавлено
Заголовок раздела «Добавлено»- Документированная модель ветвления:
main<-release/X.Y.Z<- task-ветки, описанная в.ai/GIT_WORKFLOW.mdи контролируемая.github/workflows/branch-policy.yml. Pull request’ы проверяются на соответствие именования веток, валидность пары head/base и наличие записи в changelog. - Автоматическая публикация релизов. Слияние релизной ветки в
mainзапускает CI-проверку сборки, создание тегаvX.Y.Z, сборку бинарных файлов под четыре целевые платформы и обновление Homebrew tap. Создание тегов вручную по-прежнему поддерживается и использует тот же процесс. - Глобальные флаги
--config-file,--settings-fileи--langс соответствующими переменными окруженияTSPM_CONFIG,TSPM_SETTINGSиTSPM_LANG. Это обеспечивает возможность автоматизации через скрипты и запуск тестов в полной изоляции. - Настраиваемые эндпоинты в
config.json:ipv4_api,ipv6_api,health_check_urlиspeedtest_url, которые ранее были жестко захардкожены. - Полная локализация для
speedtest,monitor,gitи TUI-дашборда, которые ранее выводили текст на английском языке независимо от выбранного языка. - Файлы
CONTRIBUTING.md,SECURITY.md,AGENTS.md,CLAUDE.md, шаблоны issues и pull requests, а также конфигурация Dependabot. - Количество тестов выросло с 9 до 126, включая набор сквозных (end-to-end) тестов в
tests/cli.rs, тестирующий реальный бинарник в изолированной конфигурации.
Изменено
Заголовок раздела «Изменено»Два изменения могут повлиять на существующие скрипты:
profile useиprofile removeвозвращают ненулевой код завершения при передаче неизвестного ключа. Ранее они выводили ошибку и завершались с кодом0, из-за чего конструкцияproxy profile use "$p" || fallbackвсегда шла по ветке успешного выполнения.- У флага
profile set --hostудалена короткая форма-h. Используйте--host.
Также изменено:
- Команда
exportзавершается с ошибкой вместо пустого вывода, если нет активного профиля, поэтомуproxy export envfile > .envне может случайно очистить файл. settings set --langотклоняет неизвестный язык вместо автоматического выбора русского.- Неиспользуемое поле
enabledудалено изconfig.json. Существующие конфиги продолжают загружаться, поле просто игнорируется. runв точности транслирует код завершения дочернего процесса.- Переход на редакцию Edition 2024, MSRV 1.88 и обновление зависимостей: clap 4.6, tokio 1.48, reqwest 0.13, thiserror 2.0, dirs 6.0, colored 3.1, indicatif 0.18, dialoguer 0.12. Директория конфигурации macOS не изменилась при обновлении
dirs. - Релизные сборки используют Fat LTO, одну единицу кодогенерации (codegen unit) и очистку отладочных символов (stripped symbols).
- Процесс публикации релиза проставляет тег только после успешной сборки всех бинарных файлов. Ранее создание тега в самом начале приводило к тому, что при сбое сборки создавался тег без опубликованных файлов, а последующие попытки видели существующий тег и навсегда пропускали релиз.
- В CI добавлены проверка MSRV, аудит безопасности
cargo audit, сборки с флагом--lockedи проверка сборки документации. Релизы теперь проверяют соответствие тега версии крейта, формируют бинарные файлы для Linuxaarch64и публикуют контрольные суммы SHA-256.
2.1.1 — 2026-08-18
Заголовок раздела «2.1.1 — 2026-08-18»Добавлено
Заголовок раздела «Добавлено»- Двуязычные сообщения справки CLI.
Изменено
Заголовок раздела «Изменено»- Конфигурация по умолчанию использует безопасные стандартные профили.
