dragonflight/services/premiere-plugin-uxp/README.md
Claude 91e4691230 feat(premiere-plugin-uxp): v2.0.0 — UXP port replacing CEP for import
CEP `csInterface.evalScript` callback is broken in Premiere Pro 26.0.x —
nothing called from the panel ever returns, so importFiles deadlocks. Adobe's
path forward is UXP. This is the minimum viable port that restores the
Import Proxy / Import Hi-Res workflow.

Scope (v2.0.0):
- Connect to a Dragonflight server (URL + Bearer token; persisted)
- Asset library (search, refresh, grid with thumbnails)
- Import Proxy via streamed download → Project.importFiles
- Import Hi-Res via presigned S3 URL → Project.importFiles

Layout:
  manifest.json     UXP v5, host=premierepro, minVersion=26.0.0
  index.html        Panel shell
  styles.css        Mirrors web UI dark tokens
  src/ui.js         DOM helpers, toast, progress, formatting
  src/api.js        HTTP client (Bearer; manual redirect-follow drops auth
                    when hopping to a different host per UXP security policy)
  src/library.js    Asset grid render + selection
  src/import-flow.js  Streaming download (fs.createWriteStream) +
                      premierepro.Project.importFiles into rootBin
  src/main.js       Bootstrap, event wiring
  build/pack.mjs    Packs into .ccx; installs via UnifiedPluginInstallerAgent

Coexists with services/premiere-plugin/ (CEP) — keeps the CEP panel for any
features that still work there while running v2.0.0 for import. Future v2.x
will add live preview, conform, timeline export, settings.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-28 00:19:28 -04:00

3.4 KiB

Dragonflight MAM — Premiere Pro UXP panel (v2.0.0)

The successor to the CEP panel at services/premiere-plugin/.

Why this exists: Premiere Pro 26.0.x broke csInterface.evalScript's return-value callback — it no longer fires. That deadlocks any CEP panel that needs to call back into Premiere (importFiles, sequence access, etc). Adobe's path forward is UXP; this panel is the minimum viable port that restores the Import Proxy / Import Hi-Res workflow.

Scope (v2.0.0)

In:

  • Connect to a Dragonflight server (URL + Bearer token, persisted in localStorage)
  • Browse the asset library (search, refresh, grid with thumbnails)
  • Import Proxy — downloads the proxy MP4 and adds it to the active project
  • Import Hi-Res — downloads the original from S3 (presigned URL) and imports

Out (carried over from the CEP panel later, as v2.x):

  • Mount Live (SMB live preview)
  • Conform / Auto-Relink / Batch Trim
  • Timeline export
  • Settings tabs (Account, Tokens, S3) — use the web UI for now

Project layout

manifest.json     UXP manifest v5 (host=premierepro, minVersion=26.0.0)
index.html        Panel shell (vanilla HTML)
styles.css        Mirrors the web UI's dark design tokens
src/
  ui.js           DOM helpers, toast, progress, formatting
  api.js          Dragonflight HTTP client (Bearer auth, redirect handling)
  library.js      Asset grid render + selection
  import-flow.js  Download (streamed) + Premiere importFiles
  main.js         Bootstrap, event wiring
icons/            DarkIcon.png + LightIcon.png  (23x23, optional)
build/pack.mjs    Pack into .ccx for install

Build

Requires Node 18+.

cd services/premiere-plugin-uxp
node build/pack.mjs
# → build/dist/dragonflight-mam-2.0.0.ccx

(Uses system zip. On Windows hosts use Compress-Archive — error message shows the exact command.)

Install on Windows

Prerequisite: Premiere Pro Preferences > Plugins > Enable developer mode must be toggled on (one-time, per machine). This is required for any UXP plugin not distributed via Creative Cloud Marketplace.

& "C:\Program Files\Common Files\Adobe\Adobe Desktop Common\RemoteComponents\UPI\UnifiedPluginInstallerAgent\UnifiedPluginInstallerAgent.exe" /install "C:\path\to\dragonflight-mam-2.0.0.ccx"

That writes to %APPDATA%\Adobe\UXP\Plugins\External\net.wilddragon.dragonflight.uxp\ and registers the plugin with UPIA.

To uninstall:

& "...\UnifiedPluginInstallerAgent.exe" /remove net.wilddragon.dragonflight.uxp

Open the panel in Premiere via Window > Extensions > Dragonflight MAM.

Development loop (Adobe UXP Developer Tool)

For iterative dev without rebuilding+reinstalling:

  1. Install Adobe UXP Developer Tool ("UDT") from Creative Cloud.
  2. UDT → Add Plugin → point at this folder.
  3. Load → opens the panel in Premiere with hot-reload.

Known limits

  • Adobe strips Authorization headers on cross-origin redirects. import-flow.js uses redirect: 'manual' and drops the Bearer when hopping to a different host (e.g. when the server 302s us to the S3 endpoint).
  • Project.importFiles() returns a boolean, not the new ProjectItem. To locate the imported item, Import.locateImported(project, filename) does a rootItem.getItems() diff after import.
  • UXP's os.tmpdir() resolves to Windows %TEMP% which is cleared by Disk Cleanup. For long-lived downloads, persist explicitly elsewhere.