Zephyr v2.4.2 — 供应链安全加固、SBOM 生成、Provider 加载轮询、延迟测试修复
CI 供应链安全全面加固(OSSF Scorecard、SBOM 生成、Semgrep SARIF、所有 Action SHA 锁定、AGPL deny list、pnpm overrides);DOM ID 生成器改用 CSPRNG;Provider 加载轮询机制(1.5s 间隔、代际取消、终端耗尽状态、26 个前端测试);hide_timeout_nodes 安全阀(全过滤时保留原始列表、GLOBAL include-all);延迟测试卡住修复(preferredGroupName 传递 + stuck pending 清除)。
新功能 — CI / 供应链安全
OSSF Scorecard 供应链安全检查
新增 OSSF Scorecard 供应链安全健康检查 Job,覆盖分支保护、代码审查、依赖管理、CI 安全等维度。
SBOM(软件物料清单)生成
Release 工作流新增独立 SBOM 生成 Job,将 CycloneDX 格式的依赖清单作为 Release asset 发布。
GitHub Action 全面 SHA 锁定
所有第三方 GitHub Actions 从浮动版本标签改为锁定到不可变的 commit SHA,防止供应链注入攻击。
Semgrep SARIF 上传
Semgrep SAST 扫描结果新增 SARIF 上传步骤,安全告警直接显示在 GitHub Security tab 和 PR 中,支持点击跳转到问题代码行。
AGPL 许可证 Deny List 强化
dependency-review-action 的 deny-licenses 从 GPL-3.0, AGPL-3.0 扩展为完整变体列表。
pnpm overrides 依赖版本固定
通过 pnpm-workspace.yaml 的 overrides 字段强制固定传递依赖版本,修复已知漏洞:
| 依赖 | 固定版本 | 修复的漏洞 |
|---|---|---|
nanoid@3 |
3.3.16 | nanoid 5.x 为 ESM-only,CommonJS 消费者需要 3.x 线获取安全补丁 |
brace-expansion |
5.0.7 | CVE-2024-4068 ReDoS(1.x/2.x 未 backport 修复) |
ws |
8.21.1 | CVE-2024-37890 超长 header DoS |
同时 package.json 新增 engines.node >= 20 约束(#958)。
新功能 — 安全
DOM ID CSPRNG
apps/desktop/src/utils/dom-id.js 中的 DOM ID 生成器从 Math.random() 改为 crypto.getRandomValues()。
新功能 — 代理
Provider 加载轮询
代理组从 Provider(订阅源)异步加载时,前端自动启动轮询机制确保 UI 及时更新。
hide_timeout_nodes 安全阀
隐藏超时节点功能增强,防止过度过滤导致用户看到空白代理组。
i18n 新增
4 种语言(en/zh/ja/ko)新增 providerPollExhausted 和 retry 翻译键。
新功能 — 测试
前端测试
新增 26 个前端测试用例(Vitest)。
Bug 修复
延迟测试卡住修复(#976)
延迟测试按钮、自动测试调度器、selectBest 处理器在调用 fetchProxyGroupsShared() 时未传递 preferredGroupName,导致 resolver 回退到 effective group(来自 MATCH 规则)而非用户当前查看的组。