The v2.0.0 grid stayed empty in Premiere 26 because UXP's CSS engine
doesn't support `grid-template-columns: repeat(auto-fill, minmax(...))`
or `aspect-ratio`. Cards rendered with 0 height and the flex column
collapsed, so the actions row stuck to the top of the pane.
Switch to flex-wrap with fixed-width (140px) cards and explicit 80px
thumb heights — both work in UXP's stripped CSS.
Also fix the /auth/me response shape — it returns the user fields
directly, not wrapped in `{ user: ... }`. Header now shows
"display_name @ host" instead of falling back to bare host.
Add a toast on each library load reporting "Loaded N assets (total M)"
so we can tell empty-grid (zero assets) from CSS-broken-grid (cards
exist but invisible) at a glance.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| src | ||
| index.html | ||
| manifest.json | ||
| README.md | ||
| styles.css | ||
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:
- Install Adobe UXP Developer Tool ("UDT") from Creative Cloud.
- UDT → Add Plugin → point at this folder.
- Load → opens the panel in Premiere with hot-reload.
Known limits
- Adobe strips
Authorizationheaders on cross-origin redirects.import-flow.jsusesredirect: '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 aboolean, not the newProjectItem. 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.