dragonflight/services/premiere-plugin-uxp/README.md

90 lines
3.4 KiB
Markdown
Raw Normal View History

# 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.