支持矩阵
桌面平台边界
权威运行时是 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。