mirror of
https://github.com/different-ai/openwork
synced 2026-04-25 17:15:34 +02:00
Ships the last-missing piece of the Electron migration. After this PR
merges there are three one-shot scripts under scripts/migration/ that
carry the whole lifecycle from "cut v0.12.0" through "delete src-tauri":
01-cut-migration-release.mjs # bumps versions, writes the release env
# fragment, tags, pushes.
02-validate-migration.mjs # guided smoke test against a cut release.
03-post-migration-cleanup.mjs # deletes src-tauri, flips defaults,
# scrubs Tauri docs (dry-run by default).
Code landing in the same PR (dormant until a release sets
VITE_OPENWORK_MIGRATION_RELEASE=1):
- apps/desktop/src-tauri/src/commands/migration.rs gains
migrate_to_electron() — downloads the matching Electron .zip, verifies
the Apple signature, swaps the .app bundle in place via a detached
shell script, relaunches, and exits. Windows + Linux branches are
stubbed with clear TODOs for the follow-up.
- apps/app/src/app/lib/migration.ts grows migrateToElectron() + a
"later" defer helper.
- apps/app/src/react-app/shell/migration-prompt.tsx adds the one-time
"OpenWork is moving to a new engine" modal. Mounted from
providers.tsx. Gated on isTauriRuntime() AND the build-time flag, so
Electron users and all non-migration-release builds never render it.
- apps/app/vite.config.ts loads apps/app/.env.migration-release when
present so the prompt gets the release-specific download URLs.
- .gitignore allows the migration-release fragment to be committed only
on the tagged migration-release commit (removed in cleanup step).
Release workflow:
- .github/workflows/release-macos-aarch64.yml gains a publish-electron
job alongside the Tauri jobs. Gated on RELEASE_PUBLISH_ELECTRON repo
var OR the new publish_electron workflow_dispatch input (default
false). Uses the existing Apple Dev ID secrets — no new credential
story. Produces latest-mac.yml alongside Tauri's latest.json so a
v0.12.0 release serves both updaters.
Verified:
pnpm --filter @openwork/app typecheck ✓
cargo check --manifest-path apps/desktop/src-tauri/Cargo.toml ✓
node --check on all mjs scripts ✓
python yaml parse of release-macos-aarch64.yml ✓
Not verified (needs a real release cycle):
end-to-end migration from a signed Tauri .app to a signed Electron
.app through the detached-script install swap.
Co-authored-by: Benjamin Shafii <benjamin@openworklabs.com>
61 lines
1.1 KiB
Plaintext
61 lines
1.1 KiB
Plaintext
.turbo/
|
|
node_modules/
|
|
packages/*/node_modules/
|
|
apps/*/node_modules/
|
|
ee/apps/*/node_modules/
|
|
ee/packages/*/node_modules/
|
|
.next/
|
|
out/
|
|
dist/
|
|
packages/*/dist/
|
|
apps/*/dist/
|
|
ee/apps/*/dist/
|
|
ee/packages/*/dist/
|
|
tmp/
|
|
|
|
# Local git worktrees
|
|
_worktrees/
|
|
|
|
# Tauri/Rust
|
|
packages/desktop/src-tauri/target/
|
|
packages/desktop/src-tauri/sidecars/
|
|
apps/desktop/src-tauri/target/
|
|
apps/desktop/src-tauri/sidecars/
|
|
|
|
# Env
|
|
.env
|
|
.env.*
|
|
!.env.example
|
|
# The migration-release fragment is committed only on the tagged
|
|
# migration-release commit and removed by 03-post-migration-cleanup.mjs.
|
|
# Allow git to see it so `cut-migration-release` can commit it.
|
|
!.env.migration-release
|
|
|
|
# Bun build artifacts
|
|
*.bun-build
|
|
apps/server/cli
|
|
apps/server-v2/openapi/openapi.json
|
|
packages/openwork-server-sdk/generated/
|
|
|
|
# pnpm store (created by Docker volume mounts)
|
|
.pnpm-store/
|
|
|
|
# Docker dev workspace (ephemeral mount point)
|
|
packaging/docker/workspace/
|
|
|
|
# OS
|
|
.DS_Store
|
|
|
|
# OpenCode mirror
|
|
vendor/opencode/
|
|
|
|
# OpenCode local deps
|
|
.opencode/node_modules/
|
|
.opencode/bun.lock
|
|
|
|
# OpenWork workspace-local artifacts
|
|
.opencode/openwork/
|
|
.vercel
|
|
.env*.local
|
|
.claude/*
|