Skip to content

fix: 修复更新通道切换时的任务归属与界面状态 - #313

Open
Yueby wants to merge 1 commit into
SPlayer-Dev:devfrom
Yueby:fix/updater-channel-state
Open

Yueby wants to merge 1 commit into
SPlayer-Dev:devfrom
Yueby:fix/updater-channel-state

Conversation

@Yueby

@Yueby Yueby commented Sep 23, 2026

Copy link
Copy Markdown
Contributor

改动类型

  • 缺陷修复(fix)

改动说明

修复更新通道切换时检查、下载与安装资格的任务归属:主进程在发起任务时捕获通道及代次,切换或批量重置配置后立即使旧结果失效,并保持下载独占及检查、下载互斥。config:set、config:reset 与 config:replaceAll 均同步有效通道。

当前版界面事件同步更新:invalidated 立即清除旧版本信息和按钮;仅在下载请求被接受后进入下载态。被拒下载按忙碌、检查中、无可用更新给出本地化提示,不冲掉当前状态;检查、下载、安装失败明确标记来源以路由重试。有效安装包在安装失败后仍可从 About 重新打开重试弹窗。

验证

  • 定向测试:4 文件 / 50 项;完整 pnpm test:web:16 文件 / 125 项;pnpm test:node:35/35;pnpm typecheck、变更文件 ESLint、Prettier --check、git diff --check 通过。
  • 新增真实 updater service→真实 Pinia store 联动测试;底层 electron-updater 和 IPC 桥由受控 mock 驱动,覆盖通道切换、旧任务迟到、A→B→A、拒绝下载、失败重试和安装资格。配置入口测试及代次机制变异验证通过。
  • Windows x64 真实 Electron 开发实例:用项目便携数据入口隔离到临时 UserData/app-data,通过 CDP 操作真实设置与更新弹窗。stable→nightly 检测到 1.2.0-nightly.900,界面展示版本、发布日期、97.2 MB 及“前往下载页”;nightly→stable 时旧弹窗与顶栏图标立即消失,stable 与 beta 检查均返回无更新。日志及临时配置与界面状态一致。历史实例还曾确认旧下载任务结果被忽略。
  • 两次便携启动后 60 秒内存样本:Browser 157/157 MB、GPU 128/113 MB、Network Service 55/55 MB、主 Tab 173/169 MB。样本都发生在本次界面切换测试之前,无同进程切换前后的可比内存数据。

验证边界

便携开发实例禁止应用内安装,本轮未下载更新包、未触发退出安装。下载中重置、旧下载占用拒绝、下载成功安装入口、安装失败后的重试仅由受控跨层测试覆盖;真实安装器启动、重试成功及 macOS/Linux 行为未实测。PR 不应描述为完整安装端到端通过。

This branch has not been deployed

No deployments
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