Skip to content

feat(desktop): establish OpenWork on the Qwen Tauri Web Shell - #81

Open
yiliang114 wants to merge 8444 commits into
mainfrom
replatform/tauri-shell
Open

feat(desktop): establish OpenWork on the Qwen Tauri Web Shell#81
yiliang114 wants to merge 8444 commits into
mainfrom
replatform/tauri-shell

Conversation

@yiliang114

Copy link
Copy Markdown
Collaborator

What this PR does

This is PR1 of the OpenWork replatforming tracked in #80. It adopts qwen-code v0.21.10 as the repository baseline and establishes the smallest complete desktop path on Tauri 2 and the Qwen Web Shell: OpenWork branding, the original OpenWork symbol, a bundled Node/Qwen/Web Shell runtime, an authenticated loopback daemon, local workspace bootstrap, runtime recovery, and clean daemon shutdown.

The legacy Electron implementation remains available as parity evidence, while duplicate merge artifacts and incompatible legacy root workspaces are kept out of the PR1 runtime. The migration audit records every preserved, upstream-equivalent, deferred, or redesigned capability for PR2.

Why it's needed

OpenWork needs to follow the current Qwen desktop architecture without silently losing its product identity or existing behavior. Splitting the migration makes the architectural baseline independently runnable and reviewable before PR2 restores the remaining OpenWork-specific product features and release infrastructure.

Reviewer Test Plan

How to verify

  1. Launch the macOS app and confirm the native window opens the Qwen Web Shell under the OpenWork name and original logo, using the local OpenWork workspace by default.
  2. Create or open a workspace session, send Reply exactly OK, and confirm the assistant returns OK and the session remains available in the sidebar.
  3. Stop the bundled daemon and confirm the app shows the OpenWork recovery screen; choose Retry and confirm a replacement daemon restores the Web Shell. Quit the app normally and confirm no bundled daemon remains.
  4. Launch the packaged app and confirm its staged runtime serves the OpenWork Web Shell while protected daemon APIs still require the per-launch bearer token.

Evidence (Before & After)

Before: OpenWork used the legacy Electron renderer/runtime path and did not run on the qwen Tauri/Web Shell architecture.

After — OpenWork-branded Web Shell welcome state:

OpenWork Tauri welcome state

After — real workspace session and model response:

OpenWork real session response

Recovery — bundled daemon exit is surfaced with an actionable Retry flow:

OpenWork daemon recovery

Tested on

OS Status
🍏 macOS
🪟 Windows ⚠️
🐧 Linux ⚠️

Environment (optional)

macOS; Node.js 22+; local Tauri debug build and release app bundle; bundled qwen-code v0.21.10 runtime. Verified with the full workspace build and typecheck, ESLint, Rust format/clippy and 37 unit tests, two branding tests, release-contract checks, runtime smoke, real-session lifecycle E2E, and packaged smoke.

Risk & Scope

  • Main risk or tradeoff: This is a large foundational repository import and desktop runtime migration; the highest-risk authentication, navigation, process-lifecycle, and packaging boundaries were exercised locally, but the cross-platform bundle matrix still needs PR2 validation.
  • Not validated / out of scope: OpenWork marketplace and onboarding flows, appearance and composer parity, the built-in browser, floating pet, native menu parity, messaging/worktree parity, and updater/signing/release automation are deferred to PR2 and listed in the migration audit.
  • Breaking changes / migration notes: The active desktop runtime is now Tauri plus qwen serve; incompatible legacy OpenWork packages are excluded from the qwen root workspace, and the updater is intentionally disabled until the PR2 release path is implemented.

Linked Issues

Relates to #80.

中文说明

本 PR 做了什么

这是 #80 所跟踪的 OpenWork 架构迁移 PR1。它以 qwen-code v0.21.10 作为仓库基线,并在 Tauri 2 与 Qwen Web Shell 上建立最小但完整的桌面运行路径:OpenWork 品牌、原始 OpenWork 图标、内置 Node/Qwen/Web Shell 运行时、带鉴权的本机回环 daemon、本地工作区启动、运行时恢复,以及退出时完整清理 daemon。

旧 Electron 实现继续保留为功能对齐依据,同时重复的合并产物和不兼容的旧根工作区不会进入 PR1 运行路径。迁移审计记录了所有已保留、由上游等价覆盖、延期或需要重新设计的能力,供 PR2 继续完成。

为什么需要

OpenWork 需要跟进当前 Qwen 桌面架构,同时不能悄然丢失产品身份或既有行为。拆分迁移后,可以先独立运行和审查架构基线,再由 PR2 恢复剩余的 OpenWork 专属产品功能与发布基础设施。

Reviewer 测试计划

如何验证

  1. 启动 macOS 应用,确认原生窗口以 OpenWork 名称和原始图标打开 Qwen Web Shell,并默认使用本地 OpenWork 工作区。
  2. 创建或打开工作区会话,发送 Reply exactly OK,确认助手返回 OK,且该会话仍可在侧边栏中访问。
  3. 终止内置 daemon,确认应用显示 OpenWork 恢复页;点击 Retry,确认新的 daemon 恢复 Web Shell。正常退出应用后,确认没有残留的内置 daemon。
  4. 启动打包后的应用,确认其中暂存的运行时可以提供 OpenWork Web Shell,同时受保护的 daemon API 仍要求每次启动生成的 bearer token。

证据(Before & After)

Before:OpenWork 使用旧 Electron renderer/runtime 路径,尚未运行在 qwen Tauri/Web Shell 架构上。

After — OpenWork 品牌的 Web Shell 欢迎页:

OpenWork Tauri 欢迎页

After — 真实工作区会话与模型回复:

OpenWork 真实会话回复

Recovery — 内置 daemon 退出后会显示可操作的 Retry 恢复流程:

OpenWork daemon 恢复页

已测试平台

OS 状态
🍏 macOS
🪟 Windows ⚠️
🐧 Linux ⚠️

环境(可选)

macOS;Node.js 22+;本地 Tauri debug build 与 release app bundle;内置 qwen-code v0.21.10 运行时。已通过全仓 build 和 typecheck、ESLint、Rust format/clippy 与 37 个单元测试、2 个品牌测试、release contract 检查、runtime smoke、真实会话生命周期 E2E,以及 packaged smoke。

风险与范围

  • 主要风险或取舍:这是一次大规模的基础仓库导入与桌面运行时迁移;本地已经覆盖最高风险的鉴权、导航、进程生命周期和打包边界,但跨平台 bundle 矩阵仍需在 PR2 验证。
  • 未验证 / 范围外:OpenWork marketplace 与 onboarding、外观和 composer 对齐、内置浏览器、桌面宠物、原生菜单、消息与 worktree 对齐,以及 updater/signing/release 自动化均延期到 PR2,并已列入迁移审计。
  • 破坏性变更 / 迁移说明:当前桌面运行时改为 Tauri 加 qwen serve;不兼容的旧 OpenWork package 被排除出 qwen 根工作区,updater 在 PR2 发布路径完成前有意保持禁用。

关联 Issue

关联 #80

Loading
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.