Repository navigation
build(deps): bump zip from 4.6.1 to 9.0.5 in /apps/desktop/loopx-control-plane/src-tauri - #7629
Conversation
Bumps [zip](https://github.com/zip-rs/zip2) from 4.6.1 to 9.0.5. - [Release notes](https://github.com/zip-rs/zip2/releases) - [Changelog](https://github.com/zip-rs/zip2/blob/master/CHANGELOG.md) - [Commits](zip-rs/zip2@v4.6.1...v9.0.5) --- updated-dependencies: - dependency-name: zip dependency-version: 9.0.5 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com>
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent; gpt-6.1-sol; OpenAI; runtime_reported; reasoning_effort=max.
APPROVE:未发现阻断项。 这是 Windows 测试依赖的有界升级,生产 updater 仍使用 zip 4.6.1。评审绑定完整 head 090c752ee2a34ce18b7f2780c14fbbf8e94d9c96,base ee7b65f124f5f461b3e5f9f6fb45eae0e6c317f4。
动机 / Motivation
Windows 桌面更新回归测试的维护者。既有 NSIS 归档夹具使用 zip 4.6.1;本提案仅把其 writer 依赖更新为 9.0.5,并保持旧 updater 的读取输入兼容。在已执行的 macOS 源码复用验证中,新旧 writer 输出相同归档,现有读取和签名负例继续成立。不升级生产解压器、不改安装或服务回收逻辑,也不声称完成 Windows 原生窗口/安装验收。
旧夹具本来就能生成归档;本次收益是让已有回归的生成端完成依赖维护,而不是证明修复了某个生产安全漏洞。实际消费者仍是原来的 Windows 更新失败回归,没有另建测试入口或安装流程。
改动思路 / Approach
writer 属于既有测试夹具,reader 继续由已锁定的 updater 拥有;保持不同依赖版本比扩大到生产更新器迁移更符合本次边界。当前 PR 保留为 Windows 测试归档生成器的依赖维护;不顺带升级生产 updater,也不增加新 helper 或状态 owner。
先用 Cargo 的实际 Windows 目标解析确认边界,再直接比较归档协议:原样复用 nsis_artifact,分别链接 registry 中的 zip 4.6.1 和 9.0.5;输出交给真实 zip 4.6.1 解包及原 minisign 验证器。这样能发现“macOS 桌面测试通过,却根本没编译 Windows-only 新依赖”的盲区,同时不把一个 writer 更新扩成 updater 的生产迁移。
具体改动 / Changes
完整 diff 是两文件 +41/-4:Cargo.toml 一行 Windows dev-dependency 的 4→9,default-features=false 保持;生成的 Cargo.lock 加入 zip 9.0.5、typed-path、nix 0.31.3、cfg_aliases,并给原有 zip/nix 引用补版本以消除歧义。原有生产包版本及 checksum 没被替换。本维护项没有专用 RFC/issue 规定版本 9;我采用现有 Cargo 目标边界、桌面 README 和原回归作为兼容性依据,没有虚构规范编号。
关键代码讲解
Cargo.toml:55:声明位于cfg(target_os = "windows")的 dev-dependencies。真实cargo tree也显示 zip 9 仅通过该测试边进入;普通 Windows normal/build 图仍只有 updater 引入的 zip 4.6.1。nsis_artifact:116:原函数未改,SimpleFileOptions明确选择Stored,写入同一安装包名与非 PE 测试内容,再用finish返回内存字节;不依赖被关闭的默认压缩功能。原 Windows 回归:302:已有测试通过真实下载、签名、旧 ZIP 读取及 Windows 启动失败来检查窗口资源和服务恢复,保留handoff_active等断言,不能仅凭install返回错误就假装命中了正确分支。本次只实际执行其归档/验签边界,未在 macOS 上冒称跑过原生窗口测试。
对主干的风险 / Risks
最强反例是新版 writer 能编译,却生成旧 updater 无法消费的归档,使 Windows 回归在预期的退出钩子之前失败。我在 Rust 1.99.0/macOS 的独立源码复用检查中取得以下结果:
| 检查 | 结果 |
|---|---|
| 旧 writer / 新 writer / 恢复控制 | PASS;均为完全相同的 231 字节归档,旧 reader 提取的安装包名和完整内容相同 |
| 实际签名验证、byte-64 篡改、截断归档 | PASS;有效内容通过,两种损坏正确拒绝 |
仅将安装包名改为 fixture.txt 的反例 |
预期 FAIL:BinaryNotFoundInArchive / exit 101;恢复后 PASS / exit 0 |
| Windows 目标 normal/build 依赖图 | PASS;964 行仅归一化 checkout 路径后全等,zip 9 不进入生产图 |
cargo fmt --check、原生 premerge |
PASS;4 个直接检查、4 个选中 canary、0 hold;精确 CQR cqr_069723d9c5a765696b19 读回 valid |
归档完整 SHA-256 为 b4a4ccae3793fcb25374e054dd878ec6e8b742926e0a0577e90100b66be7ad57,字节比较未做归一化。原 NSIS producer 在 base/head 逐字相同,probe 使用的两个 ZIP crate checksum 与应用 lock 一致。最新已读取主干在这些 owner/fixture 路径与 base 无差异;完整当前队列的相关路径元数据也未出现另一条重叠改动。
UNVERIFIED: 本机没有运行 Windows 原生窗口、ShellExecuteW、完整桌面 cargo test/clippy 或旧 Rust 工具链。zip 9 声明 Rust 1.88;仓库相关工作流使用 stable,本次实跑为 1.99。上述结论限定在本次实际变化的纯归档生成/消费边界,不代替 Windows 发布或安装资格;生产实现和 normal/build 图保持不变。按配置未查询或等待远端 CI。
我的整体评价 / Verdict
维护增量完整且比例合适:复用既有测试及 reader,无额外状态、自动执行或人工确认步骤。普通用户旅程保持,长期调度/Goal 语义不适用本次两文件变化;不能从依赖更新或检查数量推导长期收益。仅 Cargo 声明及锁文件变化,没有渲染界面或阅读层级变化,视觉检查不适用。原生 Windows 执行仍是上述明确未验范围。
不建议为消除两个 zip 版本而顺带升级生产插件,也不需要给未改的短夹具再包一层 helper。保留当前边界可独立核验和回滚;评审通过不代表合并、发布或已安装采用。
English verdict: APPROVE — the Windows test-writer update preserves the existing archive contract; production dependencies are unchanged. Native Windows execution was not claimed.
Bumps zip from 4.6.1 to 9.0.5.
Release notes
Sourced from zip's releases.
... (truncated)
Changelog
Sourced from zip's changelog.
... (truncated)
Commits
0123ed1chore: release v9.0.5 (#1093)00cf82bdocs: Repeal policy of yanking versions with known vulnerabilities, add menti...52165b9chore: Enable release-plz on backport branches in future (#1079)ca51e64docs: Remove doc links that break when doc build doesn't enable all features ...6639687fix: use mode_t for fchmodat's mode, which is u32 on NetBSD and OpenBSD (#1076)5e06fa8fix(write): prevent duplicate 0x9901 AES extra field in raw_copy_file (#1078)b6f9fb8Merge commit from forkea2ccfeMerge commit from fork8068ab4Merge commit from fork0b51128doc: Clarifications to security policy (#1074)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)You can disable automated security fix PRs for this repo from the Security Alerts page.