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