Skip to content

ZH Changelog

SlimRG edited this page Aug 23, 2026 · 1 revision

更新日志

  • 修复 CI publish 版本验证:现在与 repository/release tooling 一样从 Directory.Build.props 读取唯一的产品版本,不再错误要求 Shadowsocks.WinUI.csproj 中存在被项目规则禁止的本地 <Version>。GitHub workflow 文件现在也包含在 release-ready 源码归档中并由 validator 检查,防止该契约再次漂移。

  • 修复本地化发布验证:现在与运行时目录一样使用 ordinal、区分大小写的键语义。完全相同的英文键仍会阻止发布,而有意区分的 Active / ACTIVE 保持合法;多余的仅大小写不同 UI 键已统一并移除。

  • 修复了 Validate-Repository.ps1 中的 PowerShell 运行时语义错误:XML/包辅助函数不再使用 return if (...)(PowerShell 会将其解释为调用名为 if 的命令)。验证器现在还会拒绝在 return 后直接使用语句关键字。

  • 修复 PowerShell Set-StrictMode -Version Latest 下的 release validator:成功路径中的空集合不再在格式化诊断信息时访问合成的 .FullName / .Name;packaging 脚本会在 -join 前显式投影成员名称,validator 也会阻止该不安全模式再次出现。

  • 修复完整测试集暴露的 DNSCrypt 首次使用默认值回归:活动 runtime 仍默认通过 Shadowsocks 路由并要求有效的本地 SOCKS5 endpoint;direct/offline 测试 fixture 会显式关闭该路由;resolver-catalog TOML 只读取预置的已签名缓存,因此不继承活动 runtime 的 proxy 设置。

  • 5.2.31 analyzer hotfix:online-config 刷新后的服务器选择恢复现在使用 Configuration.configs 实际传入的具体 List<Server>,无需 suppression 即清除 CA1859,行为不变。

  • 5.2.31 编译 hotfix:服务器编辑器的空状态不再向 WinUI Border 赋值不存在的 IsEnabled;现在会禁用实际输入控件,repository validator 也会静态拒绝对已知 non-Control 容器/视觉类型使用 IsEnabled

  • 最终路由加固:不完整的 legacy/损坏服务器配置不再参与 Balancing/High Availability、托盘选择和服务器快捷键;HA 与 SIP003 进程跟踪会区分 host/port 相同的不同配置。策略 TCP timeout 取自实际选中的服务器,订阅刷新也会在不与同 endpoint 的本地配置冲突的情况下保持当前选择。

  • 5.2.31 hotfix:移除合成的空 Server 1;零服务器现在是合法状态,不完整的草稿服务器不会解锁依赖服务器的功能。

  • 在存在完整 Shadowsocks 服务器之前,DNS、PAC 与启用 Windows 系统代理保持禁用;删除最后一个可用服务器时会停止实际的代理/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 glyph。

  • 5.2.31 热修复:DNSCrypt 的 Minisign 验证现在支持官方解析器目录使用的旧版 Ed 签名格式,同时继续支持现代预哈希 ED 格式,并保持对内容和 trusted comment 的完整验证。

  • Self-update 现在会恢复交接更新时记录的实时 shell 状态,而不是沿用进程最初的 startup 参数;因此启动后再打开或隐藏窗口,其状态在应用更新后仍会保留。

  • 系统重启/会话恢复现在会保留真实的 shell 状态:Start with Windows 与 Restart Manager 仍保持互斥,但通过 --start-visible / --start-hidden 让原先打开的窗口重新打开、原先仅托盘的实例继续留在托盘。WM_QUERYENDSESSION 会在系统关闭 HWND 前保存状态;两个 restore 标记也都不会按普通的第二次启动处理,因此重定向的系统恢复不会弹出“已在运行”对话框。

  • 修复 DNSCrypt release validator 因 $controllerPath 未初始化而在 StrictMode 下失败的问题。

  • 清除最后的 DNSCrypt TOML CA1859:private static resolver stamp 序列化与测试 helper 现在使用其实际创建的具体 Dictionary 类型,未放宽 analyzer 规则。

  • DNSCrypt 组件的 GitHub release metadata、ZIP 与 Minisign 下载现在通过 Shadowsocks 上的 Cloudflare DoH,并以 Google DoH 作为备用;redirect 主机也通过同一隧道解析,失败会在 rollback 前写入日志,不再暴露原始的 api.github.com system-DNS 错误。

  • 修复 DNSCrypt 解析器目录 bootstrap 死锁:主路径为 Shadowsocks 上的 Cloudflare DoH,备用为 Shadowsocks 上的 Google DoH;解析器列表 HTTPS 下载也保持在隧道内,发布前执行 Minisign 验证,dnscrypt-proxy 只读取离线本地缓存(urls = []bootstrap_resolvers = []ignore_system_dns = true)。

  • 完成 WinUI 本地化、accessibility 与上下文状态的全面审查:应用选择的语言现在也控制内置 Settings 导航项、Hotkeys 的间接动作标签与注册状态提示;Forward Proxy 字段标签覆盖全部 7 个已发布 locale;Servers、PAC/GeoSite、Online Config、Plugins、Games、Hotkeys、Sharing、Traffic 与 Updates 的操作统一按 selection/dirty/busy 状态启用。

  • 收紧上下文 UI 逻辑:保存但无效的 Online PAC URL 在页面或 tray 启用前都会要求修正;GeoSite refresh 显示进度并阻止冲突编辑;重复项的 Add 被禁用;更新期间禁用冲突操作;Plugin=None 只隐藏 plugin 专属字段而不会提前清空未保存值;已移除对生成 Local PAC 文件的旧编辑入口,用户规则统一通过 user-rule.txt

  • 修复四个首次使用/界面问题:ss:// 导入会提示安装缺失的已知插件,DNSCrypt 首次安装持续显示动画进度,Local PAC 可打开 user-rule.txt,Online PAC 模式隐藏 Local managed-routing 卡片。

  • 修复过期的 legal-resource 测试:现在断言当前 Adblock Plus-derived network routing notice 文案;fake GitHub plugin release 对 SHA-256 与下载响应复用同一份 ZIP payload,使 digest 验证确定化,并确保 anti-downgrade 测试真正执行版本门控。

Fork-specific 变更记录。历史 upstream Shadowsocks for Windows 记录仍保存在 CHANGES

5.2.31 — 2026-08-23

  • 最终发布审计:处理配置或应用可见 DNSCrypt 设置时,不再改写已持久化的 DNSCrypt 兼容字段;Administrator Mode 的 DNSCrypt 拦截仍会强制执行有效的 fail-closed 保护。同时,保存混合 local/subscription 服务器列表时,即使分组排序改变位置,也会保持实际选中的服务器。

  • 修复内置 QTun 从 GitHub Releases 安装失败的问题:Windows asset 现在按 upstream 实际使用的 x86_64-pc-windows-msvc ZIP 命名匹配,不再误用仅作为 GitHub Actions artifact 名称的 windows-native

  • 修复 UDP Load Balance 在 endpoint hash 为负数时可能生成负服务器索引的问题;现在使用 unsigned modulo 保证索引始终有效。

  • 修复 WinUI DNS cancellation ownership 重构后遗留的编译回归:离开手动 resolver 选择时,现在通过当前 _cancelResolverLatency delegate 取消 latency probing,不再引用已删除的 _resolverLatencyCancellation 字段。

Routing

  • 完成 Variant B:Local GeoSite/EasyList/ABP 仅通过 C# FilterEngine 决策。
  • 删除 abp.js、compiled-PAC backend、backend selector、executable custom abp.txt
  • User Mode 与 Administrator Mode 使用相同 network-filter subset。
  • Admin TCP 通过 HTTP Host / TLS SNI late decision,无 MITM。
  • Snapshot 原子替换,失败时保留 last-known-good。

DNS

  • 强化 SystemDirectProxyCustomDohDnsCrypt
  • Admin Mode 支持 transparent UDP/TCP 53。
  • 强化 DNSCrypt install/update/catalog validation。
  • Automatic mode 应用 DNSSEC/no-log/no-filter/address-family filters。
  • ODoH 禁用。

Update / startup

  • Automatic self-update 使用 exact ZIP + SHA-256。
  • 增加 staged-updater self-hash、anti-downgrade FileVersion 与 rollback。
  • 修复从旧 LocalAppData startup-copy 启动时的更新目标。
  • 防止 duplicate Start-with-Windows instance。

Plugins

  • Managed SIP003 packages:xray-pluginv2ray-pluginqtun
  • 支持 ZIP/TAR.GZ manual import。
  • Plugin storage 与 trusted release provenance 统一管理;catalog plugin 每天自动检查一次、支持手动 Check updates 与 per-plugin toggle,in-use package 会推迟。Manual import 不 auto-update;任意 repository field 暂列 TODO,等待单独的 trust/asset-selection 设计。

UI

  • WinUI 3 保持唯一 presentation stack。
  • 改进 Logs、Traffic、PAC/GeoSite、DNS、About & updates。
  • License/Third-party explanatory UI 完成本地化。

Build / quality

  • 完成 WinUI analyzer/lifetime 后续清理:AppDnsPageLogsPage 具有明确的 shutdown ownership;cached page 在 controller 之前释放;DNS cancellation source 由对应 async operation 自己拥有并释放;Logs 使用 non-disposable .NET Lock 串行化设置写入;其余 CA1725/CA1822/CA1834/CA1305/CA1806/CA1859 均直接修复,没有全局抑制 production analyzer。
  • 清理 Visual Studio strict-build 后续诊断:修复 TrafficPage 局部变量大小写导致的编译回归;私有 hot path 使用具体类型与 .NET 10 argument helper;更新测试中的 TaskCompletionSource bridge、pointer/culture 处理;DNSCrypt/WinDivert security-pin 测试改为读取运行时常量 metadata。仅在 UnitTests 中关闭 CA1707/CA1861,以保留 Method_Scenario_Result 命名和局部 literal fixture 的可读性;production analyzer 仍保持启用。
  • Version 集中到 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 的长度检查,移除 sealed controller 中无意义的 protected,并让 UDPRelay 显式实现 IDisposable
  • README EN/RU/ZH 同步。

Wiki

  • 新增 EN/RU/ZH 独立语言分支。
  • 全局 Home/Sidebar 只显示语言选择。
  • 所有主要技术与 release 文档在三种语言下都可访问。

Clone this wiki locally