fix(desktop): preserve Electron to Tauri upgrades - #83
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 205ba60b35
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| if [[ "$ELECTRON_BRIDGE" == 'true' ]]; then | ||
| for manifest in macos:latest-mac.yml windows:latest.yml linux:latest-linux.yml; do | ||
| platform="${manifest%%:*}" | ||
| output="${manifest#*:}" | ||
| node .github/scripts/create-electron-bridge-manifest.mjs --assets release-assets --platform "$platform" --version "$RELEASE_VERSION" --output "release-assets/$output" |
There was a problem hiding this comment.
Generate bridge manifests during dry runs
When desktop-release.yml takes the dry_run=true path, it calls this workflow with publish: false, so the entire publish job is skipped and this newly added manifest loop never runs. Consequently, dry releases cannot produce or inspect latest-mac.yml, latest.yml, or latest-linux.yml, even though they are intended to rehearse the bridge artifact set; move artifact aggregation and manifest generation into a job that also runs for dry builds, and gate only the GitHub publication steps.
Useful? React with 👍 / 👎.
What this PR does
This stacked PR gives existing OpenWork Electron installations a direct upgrade path to the Tauri desktop on macOS, Windows, and Linux. Stable bridge releases publish Electron-compatible manifests and Tauri payloads alongside the signed Tauri updater feed, use versioned
0.2.xinstaller names, and expose the stable versioned release as GitHub Latest for the legacy GitHub updater.The default desktop version is now
0.2.0, matching the first Tauri release line. On Windows, the Tauri installer removes the matching per-user Electron installation in update mode before writing new files, preserving user data and preventing duplicate uninstall entries. The bridge remains enabled by default during the legacy support window; when it is intentionally disabled, later Tauri releases do not replace the last bridge as GitHub Latest.Why it's needed
OpenWork Electron
0.1.4discovers updates through GitHub's latest stable release and platform YAML files, while the Tauri desktop reads a fixedlatest.jsonfeed. Publishing onlydesktop-latest/latest.jsonwould strand every existing Electron installation. This PR keeps both updater generations valid without retaining Electron build tooling and makes the release usage explicit.Reviewer Test Plan
How to verify
0.2.0, the release workflow defaults the bridge on, and all three Electron manifests contain the expected SHA-512 and size fields.0.2.0withelectron_bridge=trueand confirm the artifact set includes versioned arm64/x64 ZIPs and DMGs, the Windows NSIS installer, the Linux AppImage, all three Electron manifests, and the signed Tauri update manifest.0.1.4, verify each platform installs the signed bridge and then receives a newer Tauri update. On Windows, confirm user data remains and only one OpenWork uninstall entry exists after migration.Evidence (Before & After)
N/A — release infrastructure, version metadata, and installer migration only; no UI change.
Tested on
Environment (optional)
macOS arm64, Node.js 22.22.0.
npm run test:release --prefix packages/desktop-shell --workspaces=false,actionlinton both desktop workflows, andgit diff --checkpassed.Risk & Scope
0.2.0withelectron_bridge=true,dry_run=false,draft=false, andprerelease=false.Linked Issues
Follow-up to #81 and #82. Related upstream tracking: QwenLM/qwen-code#9074.
中文说明
这个 PR 做了什么
这个叠加 PR 为现有 OpenWork Electron 安装提供 macOS、Windows 和 Linux 上直接升级到 Tauri 桌面端的路径。稳定桥接版会在签名的 Tauri 更新源旁同时发布 Electron 兼容清单和 Tauri 载荷,使用包含
0.2.x版本号的安装包名称,并把稳定的版本化 Release 标记为 GitHub Latest,供旧 GitHub updater 发现。默认桌面版本现在是
0.2.0,与第一条 Tauri 发行线一致。在 Windows 上,Tauri 安装器会在写入新文件前以更新模式移除同一应用的当前用户 Electron 安装,保留用户数据并防止出现重复卸载项。在旧版支持窗口内,桥接默认保持开启;当明确关闭桥接后,后续仅 Tauri Release 不会替换最后一个桥接版的 GitHub Latest 状态。为什么需要
OpenWork Electron
0.1.4通过 GitHub 的最新稳定 Release 和平台 YAML 文件发现更新,而 Tauri 桌面端读取固定的latest.jsonfeed。若只发布desktop-latest/latest.json,所有现有 Electron 安装都会被留在旧版本。这个 PR 无需保留 Electron 构建工具链即可同时维持两代 updater,并明确声明发布使用方式。Reviewer 测试计划
如何验证
0.2.0、release workflow 默认开启桥接,且三个 Electron 清单都包含预期的 SHA-512 与文件大小字段。electron_bridge=true对0.2.0做 dry release,确认资产包含带版本号的 arm64/x64 ZIP 和 DMG、Windows NSIS 安装器、Linux AppImage、三份 Electron 清单以及签名的 Tauri 更新清单。0.1.4的一次性机器上,逐平台验证可安装签名桥接版并继续收到更新的 Tauri 版本。Windows 上还需确认用户数据保留且迁移后仅存在一个 OpenWork 卸载项。证据(Before & After)
N/A——仅涉及发布基础设施、版本元数据和安装器迁移,没有 UI 变化。
测试平台
环境(可选)
macOS arm64,Node.js 22.22.0。
npm run test:release --prefix packages/desktop-shell --workspaces=false、两个桌面 workflow 的actionlint和git diff --check均通过。风险与范围
0.2.0、electron_bridge=true、dry_run=false、draft=false和prerelease=false发布。关联 Issue
#81 和 #82 的后续。相关上游追踪:QwenLM/qwen-code#9074。