Skip to content

NLE timeline export: Resolve, Premiere, Final Cut, Pro Tools AAF - #86

Merged
wassgha merged 3 commits into
mainfrom
cursor/nle-timeline-export-c389
Aug 13, 2026
Merged

NLE timeline export: Resolve, Premiere, Final Cut, Pro Tools AAF#86
wassgha merged 3 commits into
mainfrom
cursor/nle-timeline-export-c389

Conversation

@wassgha

@wassgha wassgha commented Aug 13, 2026

Copy link
Copy Markdown
Owner

Rebase of #52 onto current main, with i18n and dialog fixes for the localization work that landed after that PR.

Summary

Adds a Timeline tab to the Export dialog for handing edits off to other NLEs:

Format Extension Target
DaVinci Resolve .xml xmeml (Resolve-friendly file://localhost/ paths)
Adobe Premiere .xml xmeml
Final Cut Pro .fcpxml FCPXML 1.8
Pro Tools / Logic .aaf metadata-only AAF composition

Also includes a frame-rate picker (23.976–60). Sequences reference the original media by filename — relink after import.

Implementation

  • lib/serializeTimeline.ts builds a keep-range clip list and writes XML/FCPXML via @chatoctopus/timeline
  • lib/aaf/patchAaf.ts patches a vendored AAF scaffold (assets/aaf/scaffold.aaf, copied into public/vendor/aaf on postinstall)
  • Tests in tests/serialize-timeline-test.ts (XML smoke + optional pyaaf2 round-trip for AAF)

Rebase onto main

  • Kept current Sentry / analytics / Parakeet setup; added @chatoctopus/timeline and cfb (did not restore the old coi-serviceworker path)
  • transpilePackages: @chatoctopus/timeline, cfb, parakeet.js
  • copy-assets.mjs: Parakeet ORT patch + AAF scaffold copy

Fixes after rebase

  • Timeline tab copy and errors go through the UI catalogs (all eight locales)
  • Runtime AAF/timeline errors map through localizeRuntimeMessage
  • Export dialog cannot be dismissed or tab-switched while a timeline download is in progress
  • Timeline unit tests run in CI

Test plan

  • npx tsx tests/serialize-timeline-test.ts
  • npm run test:i18n
  • npm run lint / tsc --noEmit / Electron typecheck
  • Export → Timeline → Resolve / Premiere / Final Cut downloads and opens in the target app (relink media)
  • Export → Timeline → Pro Tools AAF opens in Pro Tools or Logic; clips match cut list
  • Audio-only project: Timeline export has audio track only
  • Frame-rate change remaps clip lengths correctly
  • Long media filename AAF still shows a usable ….ext for relink
  • >64 keep ranges: AAF option shows warning / download disabled; Resolve still works
  • Non-English UI locale: Timeline tab and help text are translated
Open in Web Open in Cursor 

cursoragent and others added 3 commits August 13, 2026 00:41
Extend the Export dialog with a Timeline tab that writes cut lists as
DaVinci Resolve / Premiere XML (xmeml), Final Cut Pro FCPXML, or a
metadata-only Pro Tools/Logic AAF. XML formats use @chatoctopus/timeline;
AAF is patched from a vendored scaffold and validated with pyaaf2.

Co-authored-by: Wassim Gharbi <wassgha@gmail.com>
Preserve file extensions when fitting AAF media names, percent-encode
NetworkLocator URLs, surface the 64-clip AAF cap in the Export dialog,
fail loudly if edit-rate rewrite misses, and soften the optional pyaaf2
test dependency.

Co-authored-by: Wassim Gharbi <wassgha@gmail.com>
Wire Timeline tab copy through the UI catalogs, map runtime AAF/timeline
errors for localization, keep the export dialog closed while a timeline
download is in progress, and run the serialize-timeline tests in CI.

Co-authored-by: Wassim Gharbi <wassgha@gmail.com>
@vercel

vercel Bot commented Aug 13, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
app.rescript Ready Ready Preview Aug 13, 2026 12:44am

@wassgha
wassgha marked this pull request as ready for review August 13, 2026 00:44
@wassgha
wassgha merged commit 758f9ef into main Aug 13, 2026
3 checks passed
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.

2 participants