UPIA stacks every install in its own
C:\Program Files\...\UXP\Plugins\External\net.wilddragon.dragonflight.uxp_<version>\
folder without removing prior versions. After 10 deploys today there are
11 of them coexisting, and Premiere's loader can pick the wrong one,
which is why v2.1.8 didn't appear to land.
This change makes the running version visible at a glance:
- main.js reads manifest.json at runtime via require('uxp').storage
.localFileSystem.getPluginFolder() so the displayed version is
whatever Premiere actually loaded — never a hand-edited constant
that could drift.
- index.html adds #panel-version inside the status strip (between
host and ⋯) and #brand-version below the brand tag on connect.
- styles.css: small mono chip in --text-4, low key but readable.
If the chip ever shows the wrong version we know the loader picked
a stale dir; if it shows nothing the manifest read itself failed.
The install script needs to remove old _<version> dirs going forward;
the next commit will add that cleanup step to the deploy.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| src | ||
| dragonflight-mam-2.1.0.ccx | ||
| dragonflight-mam-2.1.1.ccx | ||
| dragonflight-mam-2.1.2.ccx | ||
| dragonflight-mam-2.1.3.ccx | ||
| dragonflight-mam-2.1.4.ccx | ||
| dragonflight-mam-2.1.5.ccx | ||
| dragonflight-mam-2.1.5b.ccx | ||
| dragonflight-mam-2.1.6.ccx | ||
| dragonflight-mam-2.1.7.ccx | ||
| 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.