electrobun-workflow

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Electrobun Development Workflow

Electrobun 开发工作流

The Pipeline

流水线

┌──────────┐    ┌──────────┐    ┌──────────────┐    ┌───────────┐
│   INIT   │ →  │   DEV    │ →  │    BUILD     │ →  │  RELEASE  │
│          │    │          │    │              │    │           │
│ template │    │ dev+watch│    │ canary/stable│    │  upload   │
│ scaffold │    │ hot reload│   │ sign+notarize│    │ auto-update│
└──────────┘    └──────────┘    └──────────────┘    └───────────┘
  Skill:          Skill:          Skill:               Skill:
  electrobun-init electrobun-dev  electrobun-build     electrobun-release
  Command:        (always-on)     Command:             Command:
  /electrobun-init                /electrobun-build    /electrobun-release

┌──────────┐    ┌──────────┐    ┌──────────────┐    ┌───────────┐
│   INIT   │ →  │   DEV    │ →  │    BUILD     │ →  │  RELEASE  │
│          │    │          │    │              │    │           │
│ template │    │ dev+watch│    │ canary/stable│    │  upload   │
│ scaffold │    │ hot reload│   │ sign+notarize│    │ auto-update│
└──────────┘    └──────────┘    └──────────────┘    └───────────┘
  Skill:          Skill:          Skill:               Skill:
  electrobun-init electrobun-dev  electrobun-build     electrobun-release
  Command:        (always-on)     Command:             Command:
  /electrobun-init                /electrobun-build    /electrobun-release

Stage 1: INIT

阶段 1:INIT

When: Starting a new project from scratch.
Command:
bash
electrobun init <project-name> --template=<template>
cd <project-name> && bun install
Success:
bun start
launches the template app.
→ Ready for Stage 2 when: Template runs, you've updated
app.name
and
app.identifier
.
Deep knowledge: See
electrobun-init
skill.

使用时机: 从零开始创建新项目。
命令:
bash
electrobun init <project-name> --template=<template>
cd <project-name> && bun install
成功标志:
bun start
会启动模板应用。
→ 可进入阶段 2 的条件: 模板可以运行,并且你已更新
app.name
和
app.identifier
。
深入了解: 请参阅
electrobun-init
skill。

Stage 2: DEV

阶段 2:DEV

When: Building features — the majority of development time.
Commands:
bash
bun run dev          # → electrobun dev --watch
Success: App reloads automatically on save. Console output appears in terminal.
Key tools while in dev:
  • CEF devtools at
    http://localhost:9222
    (if using CEF renderer)
  • view.openDevTools()
    for native WKWebView (macOS)
  • Inline source maps → stack traces point to
    .ts
    lines
→ Ready for Stage 3 when: Feature is complete, tested manually, and you're ready for a distributable build.
Deep knowledge: See
electrobun-dev
skill.

使用时机: 构建功能——这占开发时间的大多数。
命令:
bash
bun run dev          # → electrobun dev --watch
成功标志: 保存后,应用会自动重新加载。控制台输出会显示在终端中。
开发阶段的关键工具:
  • 如果使用 CEF renderer,可在
    http://localhost:9222
    使用 CEF devtools
  • 对原生 WKWebView(macOS)使用
    view.openDevTools()
  • 内联 source maps → stack trace 会指向
    .ts
    代码行
→ 可进入阶段 3 的条件: 功能已完成、已手动测试,并且已准备好生成可分发构建。
深入了解: 请参阅
electrobun-dev
skill。

Stage 3: BUILD

阶段 3:BUILD

When: Creating a distributable build for testing (canary) or release (stable).
Commands:
bash
undefined
使用时机: 为测试(canary)或发布(stable)创建可分发构建。
命令:
bash
undefined

First time: set signing env vars

First time: set signing env vars

export ELECTROBUN_DEVELOPER_ID="Developer ID Application: ..." export ELECTROBUN_APPLEID="you@example.com" export ELECTROBUN_APPLEIDPASS="xxxx-xxxx-xxxx-xxxx" export ELECTROBUN_TEAMID="XXXXXXXXXX"
export ELECTROBUN_DEVELOPER_ID="Developer ID Application: ..." export ELECTROBUN_APPLEID="you@example.com" export ELECTROBUN_APPLEIDPASS="xxxx-xxxx-xxxx-xxxx" export ELECTROBUN_TEAMID="XXXXXXXXXX"

Canary (internal testing)

Canary (internal testing)

electrobun build --env=canary
electrobun build --env=canary

Stable (production)

Stable (production)

electrobun build --env=stable

**Success:** `artifacts/` contains `.tar.zst`, `.patch`, `update.json`, `.dmg`.

**Skip signing for pipeline testing:**
```bash
ELECTROBUN_SKIP_CODESIGN=1 electrobun build --env=canary
→ Ready for Stage 4 when: Artifacts are present and the built app runs correctly.
Deep knowledge: See
electrobun-build
skill.

electrobun build --env=stable

**成功标志:** `artifacts/` 中包含 `.tar.zst`、`.patch`、`update.json`、`.dmg`。

**流水线测试时跳过签名:**
```bash
ELECTROBUN_SKIP_CODESIGN=1 electrobun build --env=canary
→ 可进入阶段 4 的条件: 构建产物已生成,并且构建后的应用可以正常运行。
深入了解: 请参阅
electrobun-build
skill。

Stage 4: RELEASE

阶段 4:RELEASE

When: Distributing the build to users and enabling auto-update.
Steps:
  1. Upload
    artifacts/
    to
    release.baseUrl
  2. Verify:
    curl <baseUrl>/macos-arm64-update.json
  3. Running apps detect and apply the update automatically
Success: Users on the previous version get the update within their configured check interval.
Deep knowledge: See
electrobun-release
skill.

使用时机: 向用户分发构建,并启用自动更新。
步骤:
  1. 将
    artifacts/
    上传到
    release.baseUrl
  2. 验证:
    curl <baseUrl>/macos-arm64-update.json
  3. 正在运行的应用会自动检测并应用更新
成功标志: 上一版本的用户会在其配置的检查间隔内收到更新。
深入了解: 请参阅
electrobun-release
skill。

Cross-Stage Config Reference

跨阶段配置参考

See
electrobun-config
skill for the complete
electrobun.config.ts
field reference.

有关完整的
electrobun.config.ts
字段参考,请参阅
electrobun-config
skill。

Common Cross-Stage Gotchas

常见的跨阶段问题

  1. app.version
    not bumped
    → Auto-updater won't detect a new release even after upload
  2. build.views
    missing an entry
    → Renderer HTML loads but JS silently fails (Stage 2-3)
  3. bundleWGPU
    /
    bundleCEF
    not set for all platforms
    → Runtime crash on non-dev machine (Stage 3)
  4. release.baseUrl
    not set
    → No update.json generated, no patch created (Stage 3→4)
  5. Artifacts uploaded but
    update.json
    URL wrong
    → Auto-updater polls
    <baseUrl>/<os>-<arch>-update.json
    — no version in the filename

  1. 未更新
    app.version
    → 即使已经上传,自动更新器也无法检测到新版本
  2. build.views
    缺少条目
    → Renderer HTML 可以加载,但 JS 会静默失败(阶段 2-3)
  3. 未为所有平台设置
    bundleWGPU
    /
    bundleCEF
    → 在非开发机器上运行时崩溃(阶段 3)
  4. 未设置
    release.baseUrl
    → 不会生成 update.json,也不会创建 patch(阶段 3→4)
  5. 构建产物已上传,但
    update.json
    URL 错误
    → 自动更新器会轮询
    <baseUrl>/<os>-<arch>-update.json
    ,文件名中不包含版本号

Quick Reference

快速参考

I want to...CommandSkill
Start a new project
/electrobun-init
electrobun-init
Set up a new window with RPC
/electrobun-window
electrobun-rpc
Add WebGPU rendering
/electrobun-wgpu
electrobun-webgpu
Add an app menu
/electrobun-menu
electrobun
Check pipeline status
/electrobun-workflow
electrobun-workflow
Run a guided build
/electrobun-build
electrobun-build
Release to users
/electrobun-release
electrobun-release
Understand the full config(auto)electrobun-config
Debug a failure(auto)electrobun (debugger agent)
我想……命令Skill
启动新项目
/electrobun-init
electrobun-init
使用 RPC 设置新窗口
/electrobun-window
electrobun-rpc
添加 WebGPU 渲染
/electrobun-wgpu
electrobun-webgpu
添加应用菜单
/electrobun-menu
electrobun
检查流水线状态
/electrobun-workflow
electrobun-workflow
运行引导式构建
/electrobun-build
electrobun-build
向用户发布
/electrobun-release
electrobun-release
了解完整配置(自动)electrobun-config
调试故障(自动)electrobun(debugger agent)