-
Notifications
You must be signed in to change notification settings - Fork 0
RU Changelog
-
Исправлена проверка версии 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: состояние пустого редактора серверов больше не пытается назначать
IsEnabledWinUI-контейнеру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-hashedED, без ослабления проверки содержимого и 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.
-
Финальный 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.
- Завершён Variant B: Local GeoSite/EasyList/ABP принимает решения только через C#
FilterEngine. - Удалены
abp.js, compiled-PAC backend, backend selector и executable customabp.txt. - User Mode и Administrator Mode используют один network-filter subset.
- Admin TCP получает late Host/SNI decision без MITM.
- Snapshot rebuild атомарный, с last-known-good fallback.
- Добавлены/укреплены
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 отключён.
- 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.
- 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 модели.
- WinUI 3 остаётся единственным presentation stack.
- Улучшены Logs, Traffic, PAC/GeoSite, DNS и About & updates.
- License/Third-party explanatory UI локализован.
- Завершён WinUI analyzer/lifetime follow-up:
App,DnsPageиLogsPageполучили явное управление завершением; cached pages освобождаются до controller; DNS cancellation source принадлежит соответствующей async-операции; Logs сериализует запись настроек через non-disposable .NETLock; оставшиеся 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 синхронизированы.
- Созданы отдельные языковые ветки EN/RU/ZH.
- Глобальные Home/Sidebar содержат только выбор языка.
- Все основные технические и release-разделы доступны на каждом языке.