Skip to content

feat(extension): optimize export (AVIF photos, VBR H.264 video) and add a playground - #11

Merged
AbianS merged 6 commits into
mainfrom
feat/export-optimization
Oct 19, 2026
Merged

AbianS merged 6 commits into
mainfrom
feat/export-optimization

Conversation

@AbianS

@AbianS AbianS commented Oct 19, 2026

Copy link
Copy Markdown
Member

Summary

  • Video: the export only contains the ranges the steps play, re-encoded with VBR H.264 (software OpenH264 first, then hardware, then VP9, then the original recording as a last resort). Each segment's last frame lasts until the segment ends.
  • Photos: frames are extracted as lossless PNG and encoded once at export as AVIF (@jsquash/avif in a pool of workers). The exporter ships AVIF as is and still converts anything else to WebP. The editor CSP adds 'wasm-unsafe-eval' for the encoder.
  • player-core: loads single-file .openshowcase bundles as a stream, and exports readStoredZip.
  • Playground: a new extension page that plays an exported bundle with the real player. It opens from the export dialog ("Test it in the playground") or from the popup header.
  • Changeset: minor (all packages are in the fixed group).

Test plan

  • pnpm run ci passes (biome, build, types, tests, size)
  • Export a demo: photos inside the bundle are .avif (.webp means the wasm CSP isn't working)
  • "Test it in the playground" opens the downloaded bundle
  • The popup's playground icon opens the playground

@AbianS
AbianS merged commit 7f5d0aa into main Oct 19, 2026
1 check passed
@AbianS
AbianS deleted the feat/export-optimization branch October 19, 2026 17:16
@github-actions github-actions Bot mentioned this pull request Oct 19, 2026
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