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>
89 lines
3.4 KiB
Markdown
89 lines
3.4 KiB
Markdown
# 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+.
|
|
|
|
```bash
|
|
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.
|
|
|
|
```powershell
|
|
& "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:
|
|
```powershell
|
|
& "...\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.
|