Skip to content

v0.2.6

Choose a tag to compare

@github-actions github-actions released this 31 Aug 12:33
· 7 commits to main since this release

DSH Forge v0.2.5

中文

DSH Forge v0.2.5 提升了完整安装包 OTA 的下载可观测性与跨平台重启可靠性:设置页现在显示下载进度,升级流程只有在新 generation 完整就绪并提交回执后才算成功。

本版本包含

  • “升级管理”页面在完整包下载期间显示进度条和已下载量;响应提供有效 Content-Length 时显示百分比,否则显示不确定进度,不伪造百分比。
  • 升级状态 Remote 新增 downloading 阶段和 download 快照(receivedBytestotalBytespercent),页面仍不会接触安装包 URL、暂存路径、helper 命令或重启 token。
  • 下载器会拒绝无法安全表示的响应长度,并在长度未知时继续报告已接收字节;取消、generation 关闭、下载失败或长度不匹配时会清理暂存文件。
  • Windows 使用受控暂存 cmd.exe runner 等待 Electron 退出,再运行 NSIS 并显式启动更新后的应用,避免安装器替换时占用旧进程;打包配置同时关闭 NSIS 完成后的自动启动。
  • macOS 和 Ubuntu helper 会启动替换后的应用并等待随机 token 回执。只有新应用完成 Host、loopback、窗口和 renderer 就绪后写入回执,升级才算成功;缺少回执时保留安装包供诊断,并恢复已替换的 macOS 或 Ubuntu 应用。
  • macOS 在收到有效回执后才执行 DMG 卸载、备份删除和暂存清理,清理失败不会把已完成的重启误报为失败;Windows 新应用也会在回执后最佳努力清理暂存文件。

升级与安全边界

  • 升级仍是用户确认后执行的完整安装包升级;确认前不会下载,不支持静默下载或后台自动安装。
  • 下载进度只投影受控的字节数和百分比,不暴露 URL、路径、命令或 token;无效 Content-Length 不会进入进度投影。
  • 本 OTA 通道仍不校验发布清单或完整安装包的摘要、签名和信任根,不能视为通用可信更新通道。

感谢所有参与升级体验与 macOS OTA 可靠性改进的贡献者。

English

DSH Forge v0.2.5 improves download observability and cross-platform restart reliability for full-package OTA: Settings now shows download progress, and an upgrade succeeds only after the new generation is fully ready and submits a receipt.

What's included

  • The “Upgrade management” page shows a progress bar and received bytes while the full package is downloading. A valid Content-Length produces a percentage; without one, the bar is indeterminate and no percentage is invented.
  • The upgrade Remote adds a downloading phase and a download snapshot (receivedBytes, totalBytes, and percent). The page still receives no package URL, staging path, helper command, or restart token.
  • The downloader rejects response lengths that cannot be represented safely and continues to report received bytes when the length is unknown. Cancellation, generation closure, download failure, and length mismatches clean up staged files.
  • Windows uses a controlled staging cmd.exe runner that waits for Electron to exit, runs NSIS, and explicitly starts the updated application so the old process does not hold the executable during replacement. Packaging also disables NSIS automatic launch after completion.
  • The macOS and Ubuntu helpers start the replaced application and wait for a random-token receipt. The upgrade succeeds only after the new application completes Host, loopback, window, and renderer readiness and writes the receipt; if it is missing, the package is retained for diagnosis and any replaced macOS or Ubuntu application is restored.
  • macOS performs DMG detachment, backup removal, and staging cleanup only after a valid receipt; cleanup failures cannot turn a completed restart into an install failure. The new Windows application also performs best-effort staging cleanup after its receipt.

Upgrade and security boundaries

  • Upgrades remain user-confirmed full-package upgrades; nothing downloads before confirmation, and silent downloads or background installation are not supported.
  • Download progress projects only controlled byte counts and percentages; it does not expose the URL, path, command, or token, and invalid Content-Length values never enter the projection.
  • This OTA channel still performs no digest, signature, or trust-root verification for Release manifests or full packages and must not be treated as a generally trusted update channel.

Thank you to everyone who contributed to the upgrade experience and macOS OTA reliability improvements.