-
Notifications
You must be signed in to change notification settings - Fork 0
RU Release Notes 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 artifactwindows-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-hashedEDпо BLAKE2b-512, сохраняя проверку закреплённого key ID, подписи содержимого и глобальной подписи trusted comment. Legacy-поддержка ограничена resolver-каталогом; загружаемые архивы dnscrypt-proxy по-прежнему принимаются только с modernED. -
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 и исполняемый customabp.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
Shadowsocks-win-x64.zipShadowsocks-win-x64.zip.sha256