Skip to content

修复管理器离线更新和交接结果重复提示 - #154

Open
jinghero wants to merge 1 commit into
ModAVD:mainfrom
jinghero:codex/issue-170-handoff-results-20261113
Open

jinghero wants to merge 1 commit into
ModAVD:mainfrom
jinghero:codex/issue-170-handoff-results-20261113

Conversation

@jinghero

Copy link
Copy Markdown
Collaborator

管理器断网时,如果已有核对有效、且比已安装版本新的暂存,现在可以继续更新。只有 Prepare 返回 update_unavailable 才尝试复用;复用前重新取得更新锁,核对暂存指纹和版本记录。取消、损坏暂存、版本不符和其他错误仍终止任务。普通 CLI Prepare 和 Install 的行为保持原样。

每次交接生成随机 ID,结果分别保存在 .update/manager-results/<ID>.json。CLI 把同一个 ID 传给重开的管理器。若已有管理器在运行,这次启动把结果转交给它;页面从服务端领取一次后才显示提示。普通启动不读取旧结果,多个窗口也不会重复提示。中英文 API 文档一并更新。

本 PR 只处理 P3-1、P3-2,不含 P2 交接空档、P3-3 下载阶段互斥或路径身份修复。

验证在 Windows 上使用 Go 1.26.5:

  • gofmt -l .、go vet ./...、go test ./... -count=1 通过;darwin/arm64、linux/amd64 的 go vet ./... 通过。
  • CI 使用的前端测试加 node --experimental-vm-modules --test scripts/test_update_handoff.mjs,合计 35 项通过。新增测试执行实际的 update.js,覆盖多窗口、刷新、同秒不同 ID 和断线重试。
  • 隐私扫描 694 个文件,0 失败;scripts/repo_checks.py、scripts/test_repo_checks.py、scripts/test_measure_trim.py 通过。
  • build.ps1 构建 CLI 和 GUI 通过。
  • 六项故障注入均被回归检出:跳过暂存校验、跳过版本比较、放宽错误条件、忽略文件 ID、忽略领取 ID、保留已领取提示。
  • 隔离根目录上的原生进程验证通过:真实 CLI 安装失败后重开 GUI、转交给已有管理器、八个并发客户端只领取一次、无关启动忽略旧结果、过期和错配结果清理、重开失败只清理本次结果。
  • 完整离线交接通过:本地代理返回 503,GUI 复用有效暂存并正常退出,真实 CLI 换文件后重开 GUI,版本记录从 v0.1.0 到 v0.2.0、更新状态回到 idle,成功结果只领取一次。测试进程和端口已清理。

原生验证使用占位模拟器文件和真实构建的管理器、CLI。没有启动或编译模拟器,没有测试游戏;提示内容由前端模块测试覆盖,未手工打开 Edge 做视觉验收。

Refs ModAVD/ModAVD#170

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant