# Dragonflight Premiere Panel — v1.0.1

Built 2026-05-23 from `feat/premiere-installer`. First release that
actually loads under Premiere Pro 2025 (CEP 12) and connects to an
auth-enabled mam-api.

## What changed since v1.0.0

| Problem | Fix |
|---------|-----|
| `manifest.xml` had `--` inside an XML comment → CEP 12 refused to parse it | Comment rewritten without double hyphens |
| `manifest.xml` lacked a `Version="X.Y"` attribute on the root and used a non-standard `AbstractionLayers`/`ExtensionList` structure → CEP rejected with `Unsupported Manifest version ''` | Rewritten to the standard CSXS 7.0 schema (`ExtensionList` + `DispatchInfoList`), matching the working AMPP panel template |
| `main.js` re-declared `const csInterface` at top-level — CSInterface.js already declared the same binding. CEP 12 shares script-realm lexical scope across `<script>` tags, so main.js threw `Identifier 'csInterface' has already been declared` and never ran. The click handler for Connect was never attached → "nothing happens." | Removed the duplicate declaration; main.js now uses the binding set up by CSInterface.js |
| No way to authenticate against mam-api when `AUTH_ENABLED=true` (panel only sent `credentials: 'include'`, but it has no session cookie) | Added an "API Token" password field next to Server URL; persists to localStorage; `window.fetch` is monkey-patched to inject `Authorization: Bearer <token>` on every request to the configured server |
| Server URL field had a `change`-event listener that only fired on blur — quick "type URL → click Connect" cycles never saved the URL | Switched to `input` event so every keystroke commits. Also normalizes any trailing slash on restore so old saved `http://host/` values stop producing `//api/v1` 404s |
| New token input was `type="password"`, but the CSS selector was `input[type="text"].server-url` → unstyled, invisible against the dark theme. The 3-column grid layout also crammed the new row into a button-width slot | Connection bar restructured into a `.connection-controls--stacked` flex column of two `.server-input-row` flex rows; CSS input selector generalized to `input.server-url` |
| Build scripts' version-extraction regex only matched the old `<ExtensionBundleVersion>X</...>` element form | Now matches both element and attribute forms |

## Artifacts

| File | Size | Install |
|------|------|---------|
| [dragonflight-premiere-panel-1.0.1-windows-setup.exe](dragonflight-premiere-panel-1.0.1-windows-setup.exe) | 2.0 MB | Windows — double-click |
| [dragonflight-premiere-panel-1.0.1.zxp](dragonflight-premiere-panel-1.0.1.zxp) | 35 KB | macOS + Windows — [Anastasiy's ZXP Installer](https://install.anastasiy.com/) |

## Configuring after install

1. Open Premiere → **Window → Extensions → Wild Dragon MAM**
2. **Server URL**: e.g. `http://10.0.0.25:47434`
3. **API token**: generate one via
   ```
   curl -c cookies.txt -X POST $API/api/v1/auth/login \
        -H 'Content-Type: application/json' \
        -d '{"username":"USER","password":"PASS"}'

   curl -b cookies.txt -X POST $API/api/v1/tokens \
        -H 'Content-Type: application/json' \
        -d '{"name":"premiere-panel"}'
   ```
   Paste the returned `token` value (starts with `wd_`) into the panel.
4. Click **Connect** — status dot turns green and projects populate the dropdown.

If your `mam-api` runs with `AUTH_ENABLED` unset/false, the token field can be left empty.
