Skip to content

RU Release Notes 5.2.31

SlimRG edited this page Aug 23, 2026 · 1 revision

Shadowsocks Reborn 5.2.31

  • CI-проверка publish теперь использует Directory.Build.props как единственный источник product version и больше не требует запрещённый project-local <Version> в Shadowsocks.WinUI.csproj. GitHub workflow-файлы включены в release-ready архив и проверяются вместе с исходниками.

  • Проверка локализации теперь полностью соответствует CsvLocalizationService: исходные ключи сравниваются ordinal и с учётом регистра, поэтому реальные дубликаты остаются release-blocker, но корректные Active / ACTIVE больше не схлопываются PowerShell. Устаревшие case-only варианты унифицированы/удалены, добавлены regression tests.

  • Release-валидатор больше не использует проблемную конструкцию PowerShell return if (...) и содержит защиту от statement-keyword непосредственно после return.

  • Hotfix release validation: PowerShell StrictMode больше не падает на успешных проверках пустых коллекций при вычислении диагностического текста (.FullName / .Name). Repository, DNSCrypt и package validators теперь явно проецируют имена элементов перед -join и защищены от повторного появления этого паттерна.

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

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

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

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

  • Финальный release-аудит сохраняет ранее записанные DNSCrypt compatibility-значения без переписывания при загрузке/применении настроек, сохраняя при этом эффективный fail-closed DNSCrypt capture в Administrator Mode. Сохранение серверов также удерживает реально выбранный сервер при перестановке local/subscription групп.

  • Установка встроенного QTun теперь соответствует реальному upstream-имени Windows release ZIP (x86_64-pc-windows-msvc) вместо не связанного с именем файла Actions artifact windows-native.

  • UDP Load Balance теперь безопасно обрабатывает отрицательный hash 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.

  • Исправлена установка DNSCrypt с текущим официальным каталогом резолверов: проверка Minisign для каталога теперь поддерживает официальный legacy-формат Ed по исходным байтам наряду с современным pre-hashed ED по BLAKE2b-512, сохраняя проверку закреплённого key ID, подписи содержимого и глобальной подписи trusted comment. Legacy-поддержка ограничена resolver-каталогом; загружаемые архивы dnscrypt-proxy по-прежнему принимаются только с modern ED.

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

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

  • Исправлен drift release-валидаторов: packaging/Validate-DnsCrypt.ps1 больше не падает при Set-StrictMode из-за неинициализированного $controllerPath, а Validate-Repository.ps1 проверяет актуальные FilePath / FallbackFilePath вместо устаревшего FileName.

  • Финальный analyzer follow-up: сериализация DNSCrypt static resolver stamps и тестовый helper переведены на конкретный Dictionary, что убирает оставшиеся CA1859 без suppression. Установка/обновление компонента DNSCrypt больше не использует Windows resolver для api.github.com и GitHub release asset hosts. GitHub API, archive и Minisign HTTPS разрешаются через Cloudflare DoH с резервным Google DoH и подключаются через активный SOCKS5 Shadowsocks; ошибка логируется до rollback и показывается как локализованная ошибка туннельного upstream.

  • Исправлен 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). Финальный WinUI polish-pass проверяет локализацию, tooltip/accessibility help и контекстную видимость на всех страницах и в tray. Встроенный Settings, косвенные Hotkey labels/status и ранее пропущенные подписи Forward Proxy теперь следуют выбранному языку приложения во всех 7 локалях. Нерелевантные опции скрываются, selection/dirty/busy состояния единообразно управляют действиями, невалидный сохранённый Online PAC URL исправляется до активации, GeoSite refresh явно блокирует конфликтующее редактирование, а update/plugin операции больше не оставляют противоречивые действия доступными.

Follow-up по regression tests: embedded legal-resource tests теперь проверяют актуальный заголовок Adblock Plus-derived network routing, а fake GitHub plugin release повторно использует один неизменный ZIP payload и для объявленного SHA-256, и для download response. Это устраняет нестабильность digest из-за ZIP timestamp metadata и позволяет anti-downgrade test проверять именно version gate. Текущий UI также закрывает четыре first-use UX-пробела: Share / QR предварительно проверяет известные SIP003 plugins в ss:// и может установить отсутствующий catalog package до импорта; при первой установке DNSCrypt анимированная operation-card остаётся видимой на этапах download/verify/install/activate; Local PAC даёт открыть user-rule.txt; при Online PAC Local managed-routing, local-rule и GeoSite карточки скрываются, поскольку внешний PAC является авторитетным.

Дополнительное compile-исправление убирает последние ссылки DnsPage на удалённое _resolverLatencyCancellation; переключение режима resolver теперь использует актуальный cancellation delegate _cancelResolverLatency.

WinUI lifetime/analyzer cleanup теперь явно освобождает ресурсы приложения и страниц, уничтожает cached DNS/Logs pages до controller shutdown, сохраняет безопасное владение cancellation source внутри async-операций, сериализует запись настроек Logs через .NET Lock и устраняет оставшиеся CA1725/CA1822/CA1834/CA1305/CA1806/CA1859 без широкого production suppression.

Версия 5.2.31 завершает managed-routing Variant B, усиливает DNS/privacy, self-update и release tooling, а также переводит проект на более строгие правила .NET 10 analyzers.

About → License и Third-party notices показывают пояснительный текст на выбранном языке интерфейса (EN/RU/zh-CN/zh-TW/JA/KO/FR), при этом authoritative license text остаётся в оригинале.

Основное

  • Добавлен background auto-update доверенных built-in SIP003 catalog packages: успешная проверка не чаще раза в сутки, in-use plugin откладывается, есть ручная Check updates и per-plugin automatic-update toggle, после ошибки проверка остаётся retryable; orphaned backup после аварийно прерванного package swap восстанавливается при следующем чтении plugin storage. Manual imports не auto-update; произвольный repository source вынесен в TODO до отдельной trust/asset-selection модели.

  • Plugin update pipeline ограничивает download/extraction, отвергает traversal/rooted/Windows-ADS имена и TAR links/special entries и проверяет GitHub SHA-256 asset digest, если он опубликован, и отвергает распознаваемую candidate-версию ниже установленной; package promotion использует staging + rollback.

  • Traffic statistics переведена с бесконечного Thread/public mutable Queue на cancellation-aware Task и стабильные snapshots.

  • Follow-up strict-build cleanup исправляет compile-регрессию регистра локальных переменных TrafficPage и оставшиеся присланные .NET 10 analyzer diagnostics. Production-предупреждения исправлены в коде; только UnitTests отключают CA1707/CA1861, чтобы сохранить читаемые Method_Scenario_Result имена и локальные literal fixtures. Security-pin tests теперь проверяют runtime metadata констант вместо compile-time-folded assertions.

  • Дополнительный Windows analyzer pass исправил побочные ошибки переименования в relay/controller, оформил явное владение ресурсами proxy/UDP/DNSCrypt/WinDivert/controller, протянул CancellationToken через асинхронный I/O и применил конкретные типы коллекций только во внутренних hot paths без глобального подавления analyzer-правил.

  • Финальный compile cleanup исправил проверку длины DNSCrypt resolver array, убрал некорректный protected у членов sealed controller и сделал UDPRelay явно IDisposable.

  • Local GeoSite + EasyList/ABP routing полностью перенесён в C# FilterEngine.

  • abp.js, compiled-PAC compatibility backend, backend selector и исполняемый custom abp.txt удалены.

  • Local PAC оставлен только как минимальный Windows system-proxy funnel.

  • Administrator Mode использует тот же rule set и позднее решение по HTTP Host / TLS SNI без TLS decryption.

  • DNS policies System, Direct, Proxy, CustomDoh, DnsCrypt работают с transparent UDP/TCP 53 в Admin Mode.

  • DNSCrypt управляется как скачиваемый проверяемый компонент; ODoH отключён.

  • Automatic application self-update проверяет exact GitHub assets, SHA-256, ZIP layout и FileVersion и выполняет rollback-safe replacement.

  • Исправлена защита от двойного запуска startup-copy + primary EXE.

  • Product version централизована в Directory.Build.props.

  • Release validator упрощён до структурных/supply-chain invariants; behavioral contracts проверяются tests.

  • Release build использует warnings-as-errors.

Дополнительная чистка качества

После включения .NET 10 recommended analyzers исправлены legacy public fields, culture-sensitive formatting, disposable ownership, nullable contract общего FilterEngine, cancellation propagation и несколько API naming issues без глобального NoWarn.

Persisted JSON names сохранены там, где C# API переименован (enabled, server_port, plugin_opts, plugin_args).

Документация

Wiki разделена на независимые EN/RU/ZH ветки. Home и _Sidebar содержат только выбор языка; каждый язык имеет полный набор User Guide, Architecture, Storage, WinUI, Security, Contributing, Release Checklist, License, Third-party notices, Changelog и Release Notes.

Платформа

  • Windows 10 version 2004 / build 19041+
  • Windows 11
  • x64 only
  • .NET 10
  • WinUI 3

Release assets

  • Shadowsocks-win-x64.zip
  • Shadowsocks-win-x64.zip.sha256

Clone this wiki locally