feat(desktop): land Tauri parity and update bridge - #84
Conversation
* feat(desktop): complete OpenWork Tauri parity * fix(ci): align desktop workflows with YAML lint * chore(ci): retry sensitive scan * chore(repo): define OpenWork upstream boundary * fix(desktop): close release blockers
* fix(desktop): preserve Electron to Tauri upgrades * test(desktop): satisfy bridge contract lint
Code Coverage Summary
CLI Package - Full Text ReportCore Package - Full Text ReportFor detailed HTML reports, please see the 'coverage-reports-22.x-ubuntu-latest' artifact from the main CI run. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 53382baa5c
ℹ️ 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".
| disabled, | ||
| }: WebShellComposerToolbarRenderInfo) { | ||
| const { t } = useI18n(); | ||
| const [effort, setEffort] = useState('default'); |
There was a problem hiding this comment.
Synchronize the effort selector with the active setting
The selector always initializes to default and never reads the session's configured reasoning effort. When a user starts with a persisted tier such as high, switches sessions/models, or changes effort through another command surface, the toolbar displays a different value from the one used for subsequent turns, which can invalidate reasoning-effort comparisons. Populate this state from the active configuration and update it when that configuration changes.
Useful? React with 👍 / 👎.
| useEffect(() => { | ||
| applyOpenWorkPreferences(preferences); | ||
| void invokeOpenWork('set_interface_zoom', { | ||
| percent: preferences.zoom, | ||
| }).catch(() => undefined); |
There was a problem hiding this comment.
Implement or hide app zoom outside Tauri
When the standalone Web Shell is opened in an ordinary browser, window.__TAURI__ is absent, so this invocation resolves to undefined; applyOpenWorkPreferences also does not apply the stored zoom value. Because OpenWorkDesktopLayer and its zoom selector/shortcuts are mounted unconditionally in StandaloneApp, browser users can change a working-looking setting that never affects the interface. Gate the native-only control or provide a browser zoom implementation.
Useful? React with 👍 / 👎.
What this PR does
This PR completes the OpenWork Tauri landing that stopped after #81 reached
main. It lands the final #82 and #83 results on the default-branch baseline, including Tauri/Web Shell product parity, safe legacy-data migration, desktop-native integration, workspace and channel behavior, four-platform packaging, the Tauri updater, and the one-time Electron-to-Tauri compatibility bridge.It also restores a bounded OpenWork workflow set. Qwen-owned workflow files remain in the repository for upstream maintenance but stay disabled in GitHub Actions; SDK Java is now disabled at repository level without deleting its workflow file. Desktop Release remains active and defaults to a non-publishing dry run.
Why it's needed
#81 was merged into
mainbefore #82 and #83 were merged into their parent feature branches. GitHub therefore showed the stacked PRs as merged even though only the first layer reached the default branch. This PR makesmaincontain the complete reviewed desktop stack and leaves one tested release path that can build installers after merge without publishing by default.Reviewer Test Plan
How to verify
main, including migration, updater, release, workspace, channel, and desktop-native paths.Evidence (Before & After)
The UI baseline and screenshots are in PR1 (#81). This integration PR adds no separate visual redesign; its new evidence is the successful cross-platform installer matrix and browser smoke run linked above.
Tested on
Environment (optional)
GitHub-hosted macOS Apple Silicon, macOS Intel, Windows x64, and Linux x64 runners; OpenWork desktop version
0.2.0;electron_bridge=true;dry_run=true. Four installer artifact sets were uploaded with 14-day retention. No GitHub Release was created, no stable updater feed was changed, and no formal desktop app was published.Risk & Scope
0.2.0. The legacyOpenWork_0.1.0_aarch64.dmgis stale and is not a release candidate. Legacy data migration fails closed on unreadable or malformed source data, and Electron compatibility assets are generated only when the release bridge is enabled.Linked Issues
Related to #80, #81, #82, and #83. The upstream Qwen Electron-to-Tauri bridge is QwenLM/qwen-code#8392.
中文说明
本 PR 做了什么
这个 PR 补全了只将 #81 合入
main后中断的 OpenWork Tauri 落地。它把 #82 和 #83 的最终结果真正合入默认分支基线,包含 Tauri/Web Shell 产品能力对齐、安全的旧数据迁移、桌面原生集成、工作区和频道行为、四平台打包、Tauri updater,以及一次性的 Electron 到 Tauri 兼容升级桥。它同时恢复了边界清晰的 OpenWork workflow 集合。继承自 Qwen 的 workflow 文件继续保留在仓库中以便后续同步维护,但在 GitHub Actions 中保持禁用;SDK Java 也已在仓库层面禁用,没有删除 workflow 文件。Desktop Release 保持启用,并默认执行不发布的 dry run。
为什么需要
#81 先合入了
main,随后 #82 和 #83 分别合入各自的父功能分支。因此 GitHub 显示堆叠 PR 都已合并,但真正进入默认分支的只有第一层。这个 PR 让main包含完整且已审核的桌面端堆栈,并留下一个经过验证的发布路径:合入后可以直接构建安装包,默认不会发布。Reviewer 测试计划
如何验证
main上完整包含 feat(desktop): complete OpenWork Tauri parity #82 和 fix(desktop): preserve Electron to Tauri upgrades #83 的行为,包括迁移、更新、发布、工作区、频道和桌面原生路径。Electron -> Tauri -> 更新版 Tauri链路;不要把 dry-run artifacts 当作正式更新包。证据(Before & After)
UI 基线和截图已放在 PR1(#81)中。这个集成 PR 没有再引入独立的视觉重设计;新增证据是上面链接的跨平台安装包矩阵和浏览器 smoke 运行。
测试平台
环境(可选)
GitHub 托管的 macOS Apple Silicon、macOS Intel、Windows x64 和 Linux x64 runner;OpenWork 桌面版本
0.2.0;electron_bridge=true;dry_run=true。四组安装包 artifacts 已上传并保留 14 天。没有创建 GitHub Release,没有更新稳定 updater feed,也没有发布正式桌面应用。风险与范围
Electron -> Tauri -> 下一版 Tauri更新链。这些仍是使用真实 secrets 和隔离更新源的发布前 canary 门槛。0.2.0的 Tauri/Web Shell 应用。旧的OpenWork_0.1.0_aarch64.dmg已过期,不能作为候选发布包。旧数据遇到不可读或格式错误时会安全失败;只有启用发布桥时才生成 Electron 兼容资产。关联内容
关联 #80、#81、#82 和 #83。上游 Qwen 的 Electron 到 Tauri 桥接为 QwenLM/qwen-code#8392。