Skip to content

RU Release Checklist

SlimRG edited this page Aug 23, 2026 · 1 revision

Проверка перед выпуском

Этот checklist дополняет автоматические Validate-Repository.ps1 и Build-Release.ps1. Release считается готовым только после автоматических и ручных smoke tests на Windows.

Версия и дерево

  • При неработающем system DNS для api.github.com, но рабочем Shadowsocks-туннеле, DNSCrypt Install/Check update всё равно получает GitHub через Cloudflare DoH (Google fallback) поверх SOCKS5; если туннельный upstream недоступен, исходное исключение записывается в Logs до показа локализованной ошибки UI.
  • Directory.Build.props содержит правильную Version.
  • ApplicationInfo, manifests, CHANGES и published EXE согласованы по 5.2.31 / 5.2.31.0.
  • В source archive нет .git, .github, bin, obj, artifacts.
  • В source archive нет release binaries.
  • В publish directory ровно Shadowsocks.exe.

Build

.\packaging\Validate-Repository.ps1
.\packaging\Build-Release.ps1
  • Restore выполняется с NuGetAudit=true и NuGetAuditMode=all.
  • Compiler/analyzer warnings блокируют release.
  • Unit/integration tests проходят.
  • Final EXE FileVersion совпадает с requested release version.
  • ZIP и SHA-256 создаются из проверенного one-file publish.

User Mode

  • Запускается без UAC.
  • Не извлекает NetworkService/WinDivert без необходимости.
  • Local PAC включает system proxy и направляет requests в managed proxy.
  • C# FilterEngine даёт ожидаемые DIRECT/PROXY решения.
  • В Local PAC кнопка Open user-rule.txt создаёт/открывает активный файл пользовательских правил; изменение файла атомарно обновляет managed snapshot.
  • При Online PAC карточки Local managed routing, Local user rules и локальных GeoSite sources скрыты; после возврата в Local PAC снова отображаются.
  • Невалидный rebuild оставляет last-known-good snapshot.

Administrator Mode

  • UAC запускает broker/helper.
  • WinDivert 2.2.2 x64 скачивается и проверяется SHA-256.
  • TCP/UDP capture активируется.
  • HTTP Host и TLS SNI дают parity с User Mode rules.
  • Нет TLS MITM/CA/certificate replacement.
  • Application Direct/Proxy/Block выше по приоритету.
  • ECH/no-SNI/non-HTTP fallback детерминирован.
  • Game Mode приостанавливает Admin capture без нового UAC и восстанавливает его после выхода игры.

DNS

  • При первой установке DNSCrypt всё время загрузки/проверки/активации видны активные ProgressRing/ProgressBar и текст операции; временно недоступные DNS settings скрыты, а не выглядят зависшими disabled controls.

  • System, Direct, Proxy, CustomDoh, DnsCrypt проверены.

  • UDP и TCP 53 работают в Administrator Mode.

  • DNSCrypt install/update/signature verification проходит.

  • Active DNSCrypt не имеет plaintext/system fallback.

  • Automatic resolver filters соблюдают DNSSEC/no-log/no-filter/IPv4/IPv6.

  • ODoH остаётся отключён.

  • Crash/restart DNSCrypt не оставляет plaintext window.

Плагины

  • Импорт ss:// с известным built-in plugin, который ещё не установлен, предлагает Install, Import without plugin и Cancel; после успешной установки продолжается обычное подтверждение импорта сервера.

  • Built-in plugin install работает и сохраняет trusted repository/release/asset provenance.

  • Automatic updates доступен для catalog plugin; Check updates запускает ручной проход.

  • Background maintenance выполняет успешный release-check не чаще раза в 24 часа, откладывает in-use plugin, повторяет неудачный network/release check позже без сдвига success timestamp и отвергает распознаваемую candidate-версию ниже установленной.

  • ZIP/TAR.GZ manual import работает и никогда не auto-update.

  • Traversal/rooted/Windows-ADS paths и link/special TAR entries отклоняются; download/extraction limits соблюдаются; GitHub SHA-256 asset digest проверяется, если опубликован.

  • Staging/rollback package replacement не оставляет transient dirs после нормального завершения.

  • Managed package хранится под active storage root.

  • Server resolves plugin через PluginManager.

  • Clean Mode хранит plugin внутри Temp session.

Self-update

  • Принимаются только Shadowsocks-win-x64.zip и .sha256.
  • Draft releases игнорируются; prerelease зависит от setting.
  • SHA-256, ZIP layout и payload FileVersion проверяются.
  • Equal version и downgrade отклоняются.
  • .download stream закрыт до atomic promotion.
  • Staged updater проверяет собственный SHA-256.
  • Replacement rollback-safe.
  • Startup-copy обновляет primary EXE, затем refresh startup copy.
  • Отмена UAC не завершает рабочее приложение.

Storage / Clean Mode

  • Mutable state не создаётся рядом с EXE.
  • Normal root: %LOCALAPPDATA%\Shadowsocks.
  • Clean root: %TEMP%\Shadowsocks\Clean\....
  • Clean session удаляется после Quit.
  • Start with Windows отключён в Clean Mode.
  • Stale startup entries дедуплицируются.

UI / localization

  • Переключить EN/RU/zh-CN/zh-TW/JA/KO/FR и проверить заголовки страниц, встроенный Settings, команды tray, косвенные Hotkey labels и tooltip статуса регистрации — всё следует выбранному языку приложения.

  • Для неочевидных интерактивных controls проверить локализованные ToolTip и accessibility HelpText; состояние не передаётся только цветом.

  • Нерелевантный контекстный UI скрыт: plugin-поля при Plugin=None, детали Forward Proxy при No proxy, локальные PAC-карточки при Online PAC, Admin diagnostics вне Admin/Game runtime.

  • Selection/dirty/busy состояния согласованы: Save/Discard и selection-actions отключены, когда неприменимы; Add отключён для дубликатов; долгие DNSCrypt/GeoSite/online-config/plugin/update операции показывают progress и блокируют конфликтующие действия.

  • Страница и tray одинаково отвергают Online PAC URL не HTTP/HTTPS; невалидный сохранённый URL требуется исправить до активации Online PAC.

  • Временный выбор Plugin=None скрывает plugin-specific поля, но не уничтожает несохранённые значения до Save.

  • На Plugins выбор уже установленного catalog plugin синхронно меняет и основное действие, и локализованный tooltip с Install на Reinstall; busy-state блокирует список установленных plugins и конфликтующие действия.

  • На PAC / GeoSite несохранённые изменения sources блокируют Download / refresh и показывают локализованное объяснение, что сначала нужно сохранить sources; во время refresh виден progress, а редактирование sources заблокировано.

  • Main pages открываются.

  • Tray работает.

  • Servers, Plugins, Traffic, DNS, PAC/GeoSite, Logs, About & updates проверены.

  • License и Third-party notices открываются из embedded resources.

  • EN/RU/zh-CN/zh-TW/JA/KO/FR user-visible strings не пусты.

  • Tooltips/HelpText проверены для новых controls.

Windows smoke test

  • Windows 10 build 19041+.
  • Windows 11.
  • x64.
  • Startup, import, proxy enable/disable, tray, quit.
  • Exact release ZIP протестирован после упаковки.

GitHub Release

  • Tag создаётся только после зелёного CI.

  • Release draft содержит ZIP и SHA-256.

  • Notes проверены.

  • Публикуется именно протестированный asset.

  • Обновление resolver-каталога DNSCrypt использует Cloudflare DoH по Shadowsocks с резервным Google DoH; HTTPS resolver-list также идёт через Shadowsocks, Minisign проверяется до публикации, а catalog TOML содержит urls = [], bootstrap_resolvers = [], ignore_system_dns = true.

Clone this wiki locally