Skip to content

release: OpenTake 1.0.0-beta.2 - #237

Merged
appergb merged 219 commits into
mainfrom
release/v1.0.0-beta.2
Aug 9, 2026
Merged

release: OpenTake 1.0.0-beta.2#237
appergb merged 219 commits into
mainfrom
release/v1.0.0-beta.2

Conversation

@appergb

@appergb appergb commented Aug 8, 2026

Copy link
Copy Markdown
Owner

Summary

  • harden playback frame delivery, project media authorization, retained import/proxy publication, and resource scheduling
  • close packaged asset 504 failures and external-media symlink/rebinding escapes
  • finish editor UI consistency and keyboard/accessibility behavior
  • add fail-closed exact-SHA CI and automated macOS ARM64 + Windows x64 prerelease workflow
  • update locked Motion Canvas dependency and attach module-by-module audit evidence

Verification

  • Tauri library: 538/538; safe asset: 20/20; ProjectMedia: 11/11
  • Web: 138 files, 1157/1157; production build passed
  • Motion Canvas: audit 0, licenses 123, tests 2/2, reproducible build passed
  • Release workflow contract: 41/41; Windows workflow contract: 66/66; C1B and actionlint passed
  • independent final code review and security review: PASS, no CRITICAL/HIGH/MEDIUM findings
  • fresh macOS ARM64 App + DMG built, deep/strict codesign and DMG mount/diff verified, installed and dual-4K60 playback/UI smoke passed

Windows scope

Windows validation in this PR is intentionally code logic, CI contracts, build/package, sidecar and installer smoke only. No manual Windows GUI claim is made. The exact commit must pass GitHub hosted Windows runners before merge.

Release policy

The workflow never creates or moves tags. After this PR is merged and main CI is green, v1.0.0-beta.2 will be created once at the exact remote main SHA; the tag-triggered workflow publishes a prerelease only after all quality, macOS and Windows jobs succeed. Local macOS artifacts are ad-hoc signed and are not Developer ID notarized.

baiqing added 30 commits July 29, 2026 16:01
baiqing added 8 commits August 5, 2026 14:09
After gating TestTurnGate/turn_context to unix, AppCoreHandle/CoreHandle,
ToolResult and AppCore imports are unused on Windows test builds.
…tability

- ff.rs: availability-probe and cancellable-ffprobe tests asserted immediate
  pid death; SIGKILLed orphans linger as zombies until init reaps them, so
  kill -0 still succeeds under loaded CI (2 Linux failures). Poll with a
  bounded deadline, mirroring assert_capture_limit_kills_tree. Also relax the
  nonreturning_wait elapsed bound (2s->5s) — the deadline-fires assertion is
  unchanged.
- Windows rebind tests (prepared_project_detects..., mcp inspect_project_media
  ..., safe_asset_protocol project_helper_rejects...) renamed bundles while
  retained handles were open — cap-std strips FILE_SHARE_DELETE so Windows
  fails those renames closed. Split each into cfg(unix) (original rebind
  assertion) + cfg(windows) (fail-closed rename-blocked assertion).
Only the cfg(unix) project_helper_rejects_an_ambient_bundle_replacement test
uses it; on Windows test builds the cfg(test) import was unused.
… loaded CI)

Two consecutive windows-product failures hit the two documented
environment-flaky chromium tests (audit G): virtual_time_... Timeout(20s) at
chromium.rs:80 and sandbox_progress_... render timed out after 90s. Both pass
in the fresh-state dedicated steps minutes earlier, then time out inside the
workspace sequence on a loaded runner.

- chromium.rs test helper timeouts 20s -> 60s (timeout SEMANTICS are still
  asserted by the deliberate 500ms timeout test)
- production motion sandbox deadline 90s -> 180s (complex renders on slow or
  loaded machines; still fail-closed)
cargo test --workspace stops at the first failing target, so security_config
never ran on Windows CI until the motion-timeout fix let the workspace step
reach it. The include_str!(lib.rs) assertion searched for '\n            "opentake-asset",'
but Windows git materializes CRLF (no .gitattributes) — normalize line
endings before matching.
…ers on saturated prewarm queue

Playback pixels were frozen to the last composite still during PLAY because the
2026-08 webview-scope hardening (75f62b9) dropped http://127.0.0.1:* from CSP
img-src while the streaming playback preview canvas loads one JPEG per rendered
frame from the in-process MJPEG server on a random loopback port. WKWebView
enforces img-src on those <img> loads, so every live frame was silently
blocked; playhead events (IPC) and composite stills (data:) kept working,
leaving the stage showing the play-start frame until pause requested a new
still. Restore the loopback port wildcard in img-src (csp + devCsp) and relax
the security_config assertion to allow exactly that single wildcard.

Large folder imports also dropped the tail of their grid posters: the bounded
prewarm queue (24) rejected posters past capacity with no retry, so a 50+ file
import left its last items without thumbnails until a card scroll happened to
request them lazily. Raise the queue to 64 and re-attempt Busy posters with a
bounded drain wait after the batch commits; regression test imports 72 files
and asserts every poster lands on disk.
…edia scope

Root causes (user-verified on a 4K/60fps dual-video-track project):
1. The loopback /frame store kept only the newest published frame and
   required an exact frame+sequence match. When the renderer falls behind
   (4K multitrack), it publishes faster than the front end's
   event→IPC→React→DOM→HTTP round trip, so almost every <img> request 204s
   and failRustFrame silently dropped every non-terminal frame — the preview
   froze on the idle still while the playhead kept moving. lookup now serves
   the newest published frame for any same-session query that is not newer
   than what was published; a future-frame query is still dropped.
2. Front end retried only terminal frames; live frames now retry once so a
   transient 204 re-resolves to the newest frame.
3. Opening a project did not grant its referenced media files to the asset
   protocol, so thumbnails/previews/scrub stills could only load if each
   file had been re-approved through a dialog. project_open now grants the
   exact materialized files the project references (never whole directories).

Regression coverage: transport lookup semantics (stale frame + slow consumer
resolve to newest; future frame + foreign session rejected), front end
live-frame retry, and project media scope grant.
@appergb
appergb merged commit 4473be3 into main Aug 9, 2026
30 checks passed
@appergb
appergb deleted the release/v1.0.0-beta.2 branch August 9, 2026 05:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant