Skip to content

OpenTake 1.0.0-beta.4

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 11 Aug 03:59
· 69 commits to main since this release
2c4efdf

OpenTake 1.0.0-beta.4

发布日期:2026-08-10(Asia/Shanghai)

Beta 目标

在 Beta 3 已发布的播放候选之上,冻结可验证的编辑、导出与更新体验:时间线播放必须稳定地
按帧推进和暂停,源素材预览不能受 WebView 编解码差异影响,转场与工程重开保持一致;更新候选
则必须从固定仓库、精确 tag 和签名资产中发现、校验并安装。

主要变化

  • 播放时钟与原生会话统一以整数帧推进;冷启动、暂停、结尾重播和连续播放/暂停不再出现延迟
    停止、回抽或继续推进。Space 在素材、预览、Inspector、Timeline 与 Agent 等非文本区域统一
    触发播放/暂停,而输入与可编辑文本仍保留普通空格输入。
  • 单素材视频优先使用 Rust/FFmpeg 原生流式源预览,并将当前会话、暂停 seek、切换和终止状态
    绑定到同一控制面;WebView 只在原生能力不可用时回退。HEVC Main 与 Main 10/10-bit 素材
    因而不依赖 WebKit 的 profile 支持,不把黑屏、绿色底边或解码异常伪装为成功。
  • 相邻片段的交叉溶解会跨切点正确播放,保存、完全退出并重开工程后仍保留在 project.json
    导出对话框随编码格式给出一致的容器提示:H.264 为 .mp4,ProRes 为 .mov;空时间线、
    字幕/交换格式与实际编码路径继续受 Web/Rust 集成合同覆盖。
  • GitHub prerelease 更新路径固定在 appergb/OpenTake:只接受 HTTPS、严格递增的 SemVer、
    精确 tag manifest、Tauri/Minisign 包签名与签名 attestation;拒绝其他仓库、draft、HTTP、
    同版本、降级和带 build metadata 的候选。Windows MSI 与 NSIS 使用各自的更新入口,避免跨
    安装器升级。
  • 检查更新显式支持系统代理;匿名 GitHub REST 被 403/429 限流时,只回退固定的官方
    releases.atom feed。所有响应仍有大小、结构和 URL allowlist 限制;本地 tokenized manifest
    verifier 强制绕过代理。
  • Motion 路径只在 headless Chromium 与 FFmpeg 都可用时发布,保持受限 HTML/模板渲染、取消和
    原子导入边界。Windows ort-tract 链升级到 tract-* 0.22.3,移除
    RUSTSEC-2026-0217 所涉旧依赖。

GitHub 自动发布流程

.github/workflows/release.yml 的正常 tag push 只接受 v1.0.0-beta.4 这类 v<semver> tag;
此时 product source SHA 与 release tooling SHA 必须相同,并等于当前远端 main HEAD。若这个
tag push 已通过 source、质量与 macOS 门禁,却仅在 Windows 的 checksum-pinned FFmpeg sidecar
provision 步骤失败,则该 workflow_dispatch 恢复链以 root failed_run_id(固定为
failed_run_id=31412976593)绑定原 tag-push run。历史恢复 run 31427093503 仅在 Windows
PowerShell → .cmd → Tauri config argv 边界失败;其后的直接前驱 run 31441693191
已通过 validate、质量、macOS 与 Windows 门禁,只在 publish 的 Create or refresh draft prerelease
步骤失败。下一次恢复必须同时显式提供 failed_run_id=31412976593
failed_recovery_run_id=31441693191,缺少或替换任一 ID 都 fail closed。product source 仍是原不可变
tag SHA 2c4efdff9d2587c90cbcac0919f9d1d333d67d6a;直接前驱的 release tooling 固定为
924bc1102a9343e14c3beea2a3622b5d92ebff13,当前 release tooling 则固定为当前远端 main
github.workflow_sha,并从该 Git commit 的 blob 精确提取,绝不从 raw HTTP URL 下载执行。
两条路径都不创建、移动或删除 tag。Cargo、Tauri 与 Web 版本均为 1.0.0-beta.4,Windows WiX
安装器版本为 1.0.0.4,并由独立发布合约 fail closed 校验。

  1. validate job 解析 immutable source SHA;恢复路径先逐项核对 root run 的五个 job 与 Windows
    sidecar 失败 step,再独立核对直接前驱 run 的五个 exact job(包括成功的 validate job)、
    publish 第 15 步权限失败以及 macOS/Windows 两个 artifact 的 ID、大小、digest、未过期状态与
    run/repository/source 绑定。两个 GitHub compare 响应必须分别证明 source → 924bc110…
    924bc110… → 当前远端 main,不接受互换、跳段或任意失败 run。直接前驱的 validate 成功
    也是它已核验上一恢复链的证据。随后验证版本、WiX、本文档、prerelease 语义和洁净 checkout;质量门禁执行依赖
    锁定安装、audit、格式、clippy、workspace/Web 测试及 workflow/tooling commit 合同。
  2. macOS ARM64 和 Windows x64 都要求非空 TAURI_SIGNING_PRIVATE_KEY
    TAURI_SIGNING_PRIVATE_KEY_PASSWORD。构建产生平台安装包、Tauri updater package、每个
    companion signature 与签名 attestation;macOS app 仍是 ad-hoc 签名,Windows 安装器仍不是
    Authenticode 签名。Windows release 与 full-product CI 都在 RUNNER_TEMP 写入 UTF-8 无 BOM、
    非链接 regular-file Tauri config,并把绝对路径作为单独 --config argv;release 精确开启 updater
    artifacts,CI 精确关闭它以避免依赖发布签名 secrets。
  3. publish 从 exact SHA 的配置读取内置 updater 公钥,用独立 Minisign 工具验证 package 与
    attestation;manifest 将版本、tag、source SHA、平台、资产名称、大小和 SHA-256 绑定。只有
    draft 的十七项精确资产上传、下载回读、名称/大小、签名和 SHA256SUMS 全部相符后才公开。
    前驱的 403 不是 contents: write 缺失:当 target_commitish 指向与默认分支之间修改过
    workflow 文件的旧提交时,GitHub 要求 Actions GITHUB_TOKEN 无法获得的 Workflows write 权限。
    因 tag 已存在且经独立验证,create/refresh 都不再传 --target;REST target_commitish 只做非空
    schema 校验,不作为 source oracle。发布前后的 remote tag peel 与 GraphQL tagCommit.oid 才必须始终
    精确等于 source SHA。恢复发布的公开 release notes 从精确 release tooling commit 读取,并同时记录
    root/direct-predecessor run IDs、source、tooling、notes commit 与当前 Actions run。

Updater 私钥不写入 checkout、receipt、manifest、日志或发布 artifact;缺少任一 secret 时流程
失败,绝不退化为未签名 updater。

验收与外部边界

  • 自动化合同覆盖 release、attestation、manifest、Windows workflow、严格 YAML 与 actionlint;
    GUI 验收记录见 最终模块验收
  • 真实 N→N+1 安装仍要求仓库同时配置发布签名 secrets 和一个更高、由同一 updater key 签名的
    Release;没有满足这些前置条件时,不把发现/校验测试表述为安装 E2E。
  • Windows WebView2、MSI/NSIS 原地升级和原生音频设备仍由 exact-SHA Windows CI/实机验证;
    macOS 结果不能替代 Windows 验证。

回滚

  • Beta 3 的 v1.0.0-beta.3 tag 与发布资产保持不可变,作为回滚候选;不得移动或重用历史 tag。
  • 若 Beta 4 公开后发现回归,保留 Beta 4 审计记录,回退到上一份已验证发布;修复后仅以更高的新
    prerelease tag 重新通过完整门禁。

Automated release provenance

  • Source commit: 2c4efdff9d2587c90cbcac0919f9d1d333d67d6a
  • Release tooling commit: 344a92f6ba570657888756c78b6022edc11ec32b
  • Release notes commit: 344a92f6ba570657888756c78b6022edc11ec32b
  • Recovery chain: root run 31412976593; direct predecessor run 31441693191
  • GitHub Actions run: 31454364312/1
  • Updater trust: updater packages are signed with the dedicated Tauri updater key; the private key is supplied only from GitHub Actions secrets and is never published.
  • Platform signing limits: the macOS app uses ad-hoc signing only; it is not Developer ID signed or notarized. Windows installers are not Authenticode-signed.