Skip to content

ZH Release Checklist

SlimRG edited this page Aug 23, 2026 · 1 revision

发布检查清单

本 checklist 补充自动化 Validate-Repository.ps1Build-Release.ps1。只有自动检查与 Windows 手工 smoke tests 都通过,release 才算完成。

版本与源码树

  • 当 system DNS 无法解析 api.github.com、但当前 Shadowsocks 隧道可用时,DNSCrypt Install/Check update 仍应通过 SOCKS5 上的 Cloudflare DoH(Google 备用)访问 GitHub;若隧道上游仍失败,应在显示本地化 UI 错误前把原始异常写入 Logs。
  • Directory.Build.propsVersion 正确。
  • ApplicationInfo、manifests、CHANGES 与 published EXE 使用一致的 5.2.31 / 5.2.31.0。
  • Source archive 不包含 .git.githubbinobjartifacts
  • Source archive 不包含 release binary。
  • Publish directory 只有 Shadowsocks.exe

Build

.\packaging\Validate-Repository.ps1
.\packaging\Build-Release.ps1
  • Restore 使用 NuGetAudit=true / NuGetAuditMode=all
  • Compiler/analyzer warning 会阻止 release。
  • Unit/integration tests 通过。
  • Final EXE FileVersion 与 release version 一致。
  • ZIP 与 SHA-256 来自已验证的 one-file publish。

User Mode

  • 无需 UAC 即可运行。
  • 不会无故提取 NetworkService/WinDivert。
  • Local PAC 将 system proxy 请求送入 managed proxy。
  • C# FilterEngine 正确产生 DIRECT/PROXY。
  • Local PAC 模式下,Open user-rule.txt 会创建/打开当前用户规则文件;修改后 managed snapshot 原子更新。
  • 切换到 Online PAC 后,Local managed routingLocal user rules 与本地 GeoSite source 卡片隐藏;切回 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 与 User Mode rule 行为一致。
  • 不发生 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 设置应隐藏,而不是以 disabled 控件造成卡死错觉。

  • SystemDirectProxyCustomDohDnsCrypt 全部验证。

  • Administrator Mode 的 UDP/TCP 53 正常。

  • DNSCrypt install/update/signature validation 通过。

  • Active DNSCrypt 不存在 plaintext/system fallback。

  • Automatic resolver filters 满足 DNSSEC/no-log/no-filter/IPv4/IPv6。

  • ODoH 保持禁用。

  • DNSCrypt crash/restart 期间没有 plaintext window。

插件

  • 导入引用已知 built-in plugin 但尚未安装的 ss:// 时,UI 提供 InstallImport without pluginCancel;安装成功后继续正常的服务器导入确认。

  • Built-in plugin install 正常并保存 trusted repository/release/asset provenance。

  • Catalog plugin 提供 Automatic updatesCheck updates 可强制手动检查。

  • Background maintenance 将成功 release check 限制为每 24 小时一次,推迟 in-use plugin,在 network/release check 失败后稍后重试且不推进 success timestamp,并拒绝低于已安装版本的可解析候选版本。

  • ZIP/TAR.GZ manual import 正常且永不 auto-update。

  • Traversal/rooted/Windows-ADS path 与 link/special TAR entry 被拒绝;download/extraction limits 生效;GitHub 提供 SHA-256 asset digest 时进行验证。

  • Staging/rollback package replacement 正常完成后不留下 transient dir。

  • Managed package 位于 active storage root。

  • Server 通过 PluginManager 解析插件。

  • Clean Mode 插件位于 Temp session。

Self-update

  • 只接受 Shadowsocks-win-x64.zip.sha256
  • Draft release 被忽略;prerelease 由设置控制。
  • SHA-256、ZIP layout、payload FileVersion 都验证。
  • Equal version / downgrade 被拒绝。
  • .download stream 在 promotion 前关闭。
  • Staged updater 验证自身 SHA-256。
  • Replacement 可 rollback。
  • Startup-copy 更新 primary EXE,随后刷新 startup copy。
  • 取消 UAC 不会结束正在工作的应用。

Storage / Clean Mode

  • EXE 旁没有可变状态。
  • Normal root:%LOCALAPPDATA%\Shadowsocks
  • Clean root:%TEMP%\Shadowsocks\Clean\...
  • Quit 后 Clean session 被删除。
  • Clean Mode 禁用 Start with Windows。
  • 旧 startup entries 会去重/迁移。

UI / localization

  • 依次切换 EN/RU/zh-CN/zh-TW/JA/KO/FR,确认页面标题、内置 Settings、tray 命令、Hotkey 间接动作标签与注册状态 tooltip 都遵循应用选择的语言。

  • 对不明显的交互 controls 检查本地化 ToolTip 与 accessibility HelpText;状态不能只靠颜色表达。

  • 无关的上下文 UI 被隐藏:Plugin=None 时的 plugin 字段、No proxy 时的 Forward Proxy 详情、Online PAC 下的 Local-only PAC 卡片、非 Admin/Game runtime 下的 Admin diagnostics。

  • Selection/dirty/busy 状态一致:Save/Discard 与 selection actions 在不适用时禁用;重复项 Add 禁用;DNSCrypt/GeoSite/online-config/plugin/update 长操作显示进度并阻止冲突操作。

  • 页面与 tray 对 Online PAC URL 使用相同规则,只接受绝对 HTTP/HTTPS;保存 URL 无效时必须修正后才能启用 Online PAC。

  • 暂时选择 Plugin=None 只隐藏 plugin-specific 字段,不会在 Save 前破坏未保存值。

  • 在 Plugins 中选择已安装的 catalog plugin 时,主操作文本与本地化 tooltip 必须同步从 Install 切换为 Reinstall;busy 状态应禁用已安装 plugin 列表及冲突操作。

  • 在 PAC / GeoSite 中,未保存的 source 更改必须禁用 Download / refresh,并显示本地化说明要求先保存 sources;refresh 期间显示进度并禁用 source 编辑。

  • 主页面可打开。

  • Tray 正常。

  • Servers、Plugins、Traffic、DNS、PAC/GeoSite、Logs、About & updates 完成 smoke test。

  • Embedded License / Third-party notices 可以打开。

  • EN/RU/zh-CN/zh-TW/JA/KO/FR 的 user-visible strings 不为空。

  • 新 controls 的 ToolTip/HelpText 已验证。

Windows smoke test

  • Windows 10 build 19041+。
  • Windows 11。
  • x64。
  • Startup、import、proxy enable/disable、tray、quit。
  • 测试的是最终打包的 exact release ZIP。

GitHub Release

  • CI 绿色后才创建 tag。

  • Draft release 包含 ZIP 与 SHA-256。

  • Release notes 已审核。

  • 发布的是已经 smoke-tested 的同一 asset。

  • DNSCrypt 解析器目录刷新使用 Shadowsocks 上的 Cloudflare DoH,并以 Google DoH 备用;解析器列表 HTTPS 同样通过 Shadowsocks,Minisign 在发布前验证,生成的目录 TOML 包含 urls = []bootstrap_resolvers = []ignore_system_dns = true

Clone this wiki locally