支援矩陣
桌面平台邊界
權威執行階段是 Agent、檔案、Git、PTY、供應商、權限和持久化的所有者。平台差異應封裝在apps/desktop/src/platform 或共享 facade 中,不要在 UI 裡複製業務分支。
釋出通道
通道是編譯期身份,不是執行階段開關:
通道由 tag 推導(
*-preview.* / *-rc.* / 純 semver)。釋出流程會斷言 tag、Cargo.toml、package.json 與 Packager.<channel>.toml 中的版本完全一致。執行階段覆蓋通道會被拒絕(release_channel_override_rejected)。
釋出工作流
.github/workflows/release.yml 在 v* tag 上全自動執行,桌面端矩陣覆蓋六個平台 / 架構組合:
行動端在同一個 workflow 中構建:Android APK + AAB,iOS XCFramework + 未簽名模擬器應用。釋出 job 要求全部前置 job 成功才會建立 release,因此不會出現部分矩陣的殘缺釋出。
工作流目前沒有 macOS 公證和 Windows Authenticode 步驟。加入這兩步之前,安裝包會一直帶有平台警告。
Android 構建
VIBEX_MOBILE_ANDROID_TARGETS(空格分隔)可覆蓋 Debug ABI,Release 預設只構建 arm64-v8a。
釋出工作流會呼叫 apps/mobile/scripts/sign-android-release.sh:APK 使用 zipalign + apksigner,AAB 使用 jarsigner。RC / 預覽在沒有倉庫金鑰時生成一次性的 vibex-ci 金鑰;Stable 釋出必須配置 VIBEX_ANDROID_KEYSTORE_BASE64 和 VIBEX_ANDROID_KEYSTORE_PASSWORD,可選 VIBEX_ANDROID_KEY_PASSWORD 和倉庫變數 VIBEX_ANDROID_KEY_ALIAS(預設 vibex)。
iOS 構建
VibexFFI.xcframework 並生成 Xcode 工程。簽名、Bundle identifier、真機 / 模擬器選擇和分發憑據都由本機 Xcode 流程決定,不要把證書或 provisioning profile 提交到倉庫。釋出產物是未簽名的真機 IPA,安裝者用自己的 Apple ID 重簽名;免費賬號的簽名有效期為 7 天。
桌面打包
自動更新
crates/app-update 實現簽名更新:
- 從 GitHub Releases Atom feed 發現候選版本,按通道過濾。
- 校驗
vibex-update.json的 Ed25519 簽名,並對產物做 SHA-256 校驗,URL 白名單限定在 releases 下載路徑。 - 啟動 30 秒後首次檢查,之後 RC / 預覽每 2 小時、Stable 每 6 小時檢查一次,帶抖動與退避。
- AppImage 走原地自我替換(帶
.vibex-backup與pending-install.json崩潰恢復);deb、macOS app 和 NSIS 拉起系統安裝器並要求重啟。 - 釋出流水線會把標記提交裡的
docs/operations/release-notes-v<version>.md暫存為vibex-release-notes.md,檔案缺失或沒有## English段落時直接讓釋出失敗;桌面端在限定大小和更短超時下從已驗證的標籤獲取它,並按介面語言選擇段落,依次回退到通用中文和英文。
行動端生命週期
行動端需要處理後臺、網路切換、斷線和重連。恢復時先用 Remote v2 獲取權威會話和時間線,再訂閱即時事件;不要用過期投影覆蓋權威狀態。TUI 與遠端執行階段
TUI 作為桌面包的第二個二進位制釋出:Linux/usr/bin/vibex、macOS .app 旁的 vibex、Windows vibex.exe;容器裡用 vibex-server tui。它是同一套執行階段協議的客戶端,不連結桌面 UI,也不開啟資料庫。
SSH / WSL 遠端執行階段由桌面端配置:通過 SSH 上傳並安裝 vibex-server,打開回環隧道,取得一次性配對碼並配對。釋出產物必須來自簽名清單;遠端會再次校驗 SHA-256。完整契約見 docs/remote/ssh-runtime.md 和 .trellis/spec/backend/ssh-remote-runtime.md。
自託管部署
推薦把服務繫結 loopback,再通過受控 HTTPS 反向代理或 Tailnet Serve 釋出。Host 和 Origin 必須獨立校驗,CORS 不得使用*。閘道器只暴露協議與健康檢查端點,不提供瀏覽器 UI 或業務 API。
詳見自託管無頭執行階段與自託管 Relay。