feat: adopt typed yt-dlp broker and reproducible CI

Merged
MP
4mo ago
+3149-346

Summary

  • migrate host-managed downloads to the typed yt-dlp contract
  • add complete WASM ABI smoke coverage and pinned reproducible CI
  • use upstream Extism 1.30.0

Validation

  • 79 unit tests and the WASM smoke pass
  • native and WASM Clippy pass with warnings denied
  • release WASM build and cargo audit pass

Linear: MAT-129, MAT-131


Summary by cubic

Switch downloads to the typed run_ytdlp broker and harden reproducible CI with split verify/release workflows repinned to canonical upstream SHAs, gated by tags, and restricted to the repository owner. Bumps the plugin to 1.3.0, requires Vortex host 0.2.0, and adds a release WASM ABI smoke test (addresses Linear MAT-129, MAT-131).

  • New Features

    • Adopt typed run_ytdlp broker: replace run_subprocess, send only url/format/output_dir/audio_only, and parse the typed response.
    • Add tests/wasm_smoke.rs to validate exports and the broker contract end-to-end.
    • CI: split verification and release via reusable configs, repin workflows by commit to canonical upstream, pin Rust toolchain (1.95.0), and restrict release to owner tag builds.
    • Bump extism to =1.30.0.
  • Migration

    • Host must expose the typed run_ytdlp function (Vortex ≥ 0.2.0) and subprocess: ["yt-dlp"] capability.
    • No user-facing changes; the plugin cannot set binaries, args, timeouts, env, or cwd.

Summary by CodeRabbit

  • New Features
    • Adaptive media downloads now use the host’s typed download service.
    • Download requests provide structured media details, including format, audio-only mode, and output location.
  • Improvements
    • Updated compatibility requirements to Vortex 0.2.0 or later.
    • Strengthened host-controlled network access and download execution safeguards.
  • Documentation
    • Clarified supported host capabilities and adaptive stream download behavior.
  • Release
    • Updated the plugin version to 1.3.0.