Skip to content

RU Changelog

SlimRG edited this page Aug 23, 2026 · 1 revision

История изменений

  • Исправлена проверка версии publish в CI: каноническая product version теперь читается из Directory.Build.props, как и в repository/release tooling, вместо ошибочного требования локального <Version> в Shadowsocks.WinUI.csproj. GitHub workflow-файлы теперь входят в release-ready архив исходников и проверяются валидатором, чтобы этот контракт больше не расходился с проектом.

  • Исправлена release-проверка локализации: теперь она использует ту же ordinal-регистрозависимую семантику ключей, что и runtime-каталог. Точные дубликаты English key по-прежнему запрещены, а намеренно разные Active / ACTIVE допустимы; лишние case-only варианты UI унифицированы и удалены.

  • Исправлена runtime-семантическая ошибка PowerShell в Validate-Repository.ps1: XML/package helper-функции больше не используют return if (...), который PowerShell трактует как попытку запуска команды if. Добавлена самопроверка валидатора, запрещающая statement-keyword непосредственно после return.

  • Исправлен release-validator под PowerShell Set-StrictMode -Version Latest: успешные проверки с пустыми коллекциями больше не обращаются к синтетическим .FullName / .Name при формировании диагностического текста; packaging-скрипты явно проецируют имена перед -join, а валидатор запрещает возвращение небезопасного паттерна.

  • Исправлены регрессии first-use defaults DNSCrypt, обнаруженные полным набором тестов: активный runtime по-прежнему по умолчанию маршрутизируется через Shadowsocks и требует валидный локальный SOCKS5 endpoint, а direct/offline test fixtures отключают routing явно; resolver-catalog TOML не наследует runtime proxy-флаг, поскольку читает только заранее загруженный подписанный cache.

  • Analyzer hotfix 5.2.31: восстановление выбора сервера после обновления online-config теперь принимает конкретный List<Server>, который уже передаёт Configuration.configs; CA1859 устранён без suppression и без изменения поведения.

  • Compile hotfix 5.2.31: состояние пустого редактора серверов больше не пытается назначать IsEnabled WinUI-контейнеру Border; доступность применяется к реальным полям редактора, а release validator теперь статически запрещает IsEnabled для известных non-Control контейнеров/визуальных элементов.

  • Финальное усиление маршрутизации: незаполненные legacy/повреждённые профили исключены из Balancing/High Availability, выбора в трее и hotkey-переключения; HA и SIP003 process tracking различают профили с одинаковым host/port. TCP timeout стратегии теперь берётся у реально выбранного сервера, а обновление подписки сохраняет выбранный профиль без коллизии с локальным сервером того же endpoint.

  • Hotfix 5.2.31: удалён синтетический пустой Server 1; ноль серверов теперь является нормальным состоянием, а незаполненный draft не разблокирует зависимые функции.

  • DNS, PAC и включение системного proxy Windows недоступны до появления полностью настроенного Shadowsocks-сервера; удаление последнего рабочего сервера выключает фактический proxy/DNS/capture runtime, но сохраняет выбранную DNS policy для повторного применения после добавления рабочего сервера.

  • Для Start on Boot, переключения Administrator capture/UAC и операций обновления добавлена отзывчивая busy-индикация.

  • Новая конфигурация DNSCrypt включает при первом использовании все опции, кроме IPv6. Уже сохранённые DNSCrypt-настройки сохраняются буквально: schema v3 их не мигрирует и не перезаписывает.

  • Навигационные значки WinUI, Logs и UAC/Administrator переведены на явные совместимые с Windows 10 Segoe MDL2 Assets glyphs.

  • Hotfix 5.2.31: Minisign-проверка DNSCrypt теперь поддерживает legacy-формат Ed, используемый официальным resolver-каталогом, наряду с современным pre-hashed ED, без ослабления проверки содержимого и trusted comment.

  • Self-update теперь возобновляет фактическое состояние оболочки на момент передачи обновлению, а не исходный startup-аргумент процесса: если после запуска окно открыли или спрятали, это состояние сохраняется и после обновления приложения.

  • После перезагрузки/восстановления сеанса теперь восстанавливается реальное состояние оболочки: Start with Windows и Restart Manager остаются взаимоисключающими, но используют --start-visible / --start-hidden, чтобы открытое окно вернулось открытым, а tray-only состояние осталось в трее. WM_QUERYENDSESSION фиксирует состояние до закрытия HWND системой; оба restore-маркера исключены из обработки обычного второго запуска, поэтому перенаправленный системный restore не раскрывает диалог уже запущенного экземпляра.

  • Исправлено падение DNSCrypt release validator в StrictMode из-за неинициализированного $controllerPath.

  • Устранены последние CA1859 в DNSCrypt TOML: private-сериализация static resolver stamps и тестовый helper теперь используют уже фактически создаваемый Dictionary; правила analyzer не ослаблялись.

  • Получение GitHub release metadata, ZIP и Minisign для компонента DNSCrypt теперь идёт через Cloudflare DoH поверх Shadowsocks с резервным Google DoH; redirect-hosts также разрешаются через этот туннель, а ошибки пишутся в лог до rollback вместо сырого system-DNS сообщения api.github.com.

  • Исправлен bootstrap deadlock resolver-каталога DNSCrypt: основной путь — Cloudflare DoH по Shadowsocks, резервный — Google DoH по Shadowsocks; HTTPS-загрузка resolver list также остаётся внутри туннеля, Minisign проверяется до публикации, а dnscrypt-proxy получает только offline local cache (urls = [], bootstrap_resolvers = [], ignore_system_dns = true).

  • Завершён полный аудит локализации, accessibility и контекстных состояний WinUI: выбранный язык приложения теперь управляет встроенным пунктом Settings, косвенными названиями действий Hotkeys и подсказками статуса регистрации; подписи Forward Proxy переведены на все 7 локалей; selection/dirty/busy состояния единообразно управляют действиями Servers, PAC/GeoSite, Online Config, Plugins, Games, Hotkeys, Sharing, Traffic и Updates.

  • Уточнена логика контекстного UI: невалидный сохранённый Online PAC URL исправляется до активации и со страницы, и из tray; GeoSite refresh показывает progress и блокирует конфликтующее редактирование; Add отключён для дубликатов; update-операции блокируют конфликтующие controls; Plugin=None скрывает plugin-only поля без преждевременного стирания несохранённых значений; устаревшее редактирование сгенерированного Local PAC удалено в пользу user-rule.txt.

  • Исправлены четыре UX-пробела: импорт ss:// предлагает установить отсутствующий известный plugin, первичная установка DNSCrypt показывает анимированный progress, Local PAC позволяет открыть user-rule.txt, а Local managed-routing карточки скрываются в Online PAC mode.

  • Исправлены устаревшие legal-resource tests: теперь они проверяют актуальную формулировку Adblock Plus-derived network routing; fake GitHub plugin releases используют один и тот же ZIP payload для SHA-256 и download response, поэтому digest-проверка детерминирована, а anti-downgrade test доходит до проверки версии.

Fork-specific история. Исторические upstream изменения остаются в CHANGES.

5.2.31 — 2026-08-23

  • Финальный release-аудит: сохранённые compatibility-поля DNSCrypt больше не переписываются при обработке конфигурации или применении видимых DNSCrypt-настроек; при этом Administrator Mode по-прежнему принудительно обеспечивает эффективный fail-closed для DNSCrypt-трафика. Также Save() сохраняет реально выбранный сервер при перестановке mixed local/subscription списка.

  • Исправлена установка встроенного QTun из GitHub Releases: Windows asset теперь выбирается по реальному upstream-имени ZIP с target triple x86_64-pc-windows-msvc, а не по windows-native, которое является лишь именем GitHub Actions artifact.

  • Исправлен UDP-выбор в Load Balance при отрицательном hash endpoint: индекс сервера теперь вычисляется unsigned modulo и не может стать отрицательным.

  • Исправлена compile-регрессия WinUI DNS после рефакторинга владения cancellation: при выходе из ручного выбора resolver latency probing теперь отменяется через актуальный _cancelResolverLatency, без ссылок на удалённое поле _resolverLatencyCancellation.

Routing

  • Завершён Variant B: Local GeoSite/EasyList/ABP принимает решения только через C# FilterEngine.
  • Удалены abp.js, compiled-PAC backend, backend selector и executable custom abp.txt.
  • User Mode и Administrator Mode используют один network-filter subset.
  • Admin TCP получает late Host/SNI decision без MITM.
  • Snapshot rebuild атомарный, с last-known-good fallback.

DNS

  • Добавлены/укреплены System, Direct, Proxy, CustomDoh, DnsCrypt.
  • Transparent UDP/TCP 53 поддерживается в Admin Mode.
  • DNSCrypt install/update/catalog verification hardened.
  • Automatic mode применяет DNSSEC/no-log/no-filter/address-family filters.
  • ODoH отключён.

Update / startup

  • Automatic self-update использует exact ZIP + SHA-256.
  • Добавлены staged-updater self-hash, anti-downgrade FileVersion checks и rollback.
  • Исправлен update при запуске из stale LocalAppData startup-copy.
  • Устранены duplicate Start-with-Windows instances.

Plugins

  • Managed SIP003 packages: xray-plugin, v2ray-plugin, qtun.
  • Manual ZIP/TAR.GZ import.
  • Managed storage и trusted release provenance; catalog-плагины автоматически проверяются раз в сутки, поддерживают ручную Check updates и per-plugin toggle, а in-use package откладывается. Manual imports не auto-update; arbitrary repository field оставлен в TODO до отдельной trust/asset-selection модели.

UI

  • WinUI 3 остаётся единственным presentation stack.
  • Улучшены Logs, Traffic, PAC/GeoSite, DNS и About & updates.
  • License/Third-party explanatory UI локализован.

Build / quality

  • Завершён WinUI analyzer/lifetime follow-up: App, DnsPage и LogsPage получили явное управление завершением; cached pages освобождаются до controller; DNS cancellation source принадлежит соответствующей async-операции; Logs сериализует запись настроек через non-disposable .NET Lock; оставшиеся CA1725/CA1822/CA1834/CA1305/CA1806/CA1859 исправлены без глобального подавления production analyzer-правил.
  • Закрыт follow-up список строгой сборки Visual Studio: исправлена compile-регрессия регистра локальных переменных TrafficPage, применены конкретные типы во внутренних hot paths и .NET 10 argument helpers, обновлены test TaskCompletionSource bridges и pointer/culture handling, а DNSCrypt/WinDivert security-pin tests теперь читают runtime metadata констант. Только для UnitTests отключены CA1707/CA1861: Method_Scenario_Result и локальные literal fixtures сохранены как осознанный стиль читаемых тестов; production analyzers не подавляются.
  • Version source централизован в Directory.Build.props.
  • .NET 10 recommended analyzers включены.
  • Release build использует warnings-as-errors.
  • Validator сокращён до полезных structural/supply-chain checks.
  • Исправлены legacy public fields, exception API, resource ownership, nullable/cancellation warnings.
  • Финальный compile/analyzer cleanup исправил проверку длины DNSCrypt resolver array, убрал бессмысленный protected из sealed controller и сделал UDPRelay явно IDisposable.
  • README EN/RU/ZH синхронизированы.

Wiki

  • Созданы отдельные языковые ветки EN/RU/ZH.
  • Глобальные Home/Sidebar содержат только выбор языка.
  • Все основные технические и release-разделы доступны на каждом языке.

Clone this wiki locally