feat: initial commit - Jhonny Editor
- Adicionado estrutura completa do projeto - Configurado MCP server para Premiere Pro - Adicionado documentação e skills - Configurado Gitignore para o projeto
This commit is contained in:
Executable
+80
@@ -0,0 +1,80 @@
|
||||
# UXP Spike
|
||||
|
||||
A throwaway UXP plugin that answers two questions we cannot answer from the docs. It is not part
|
||||
of the MCP server and nothing depends on it.
|
||||
|
||||
## Why
|
||||
|
||||
**1. Is issue #9 fixable?**
|
||||
|
||||
Documented ExtendScript has **no frame-export method at all**. `Sequence` exposes only
|
||||
`exportAsMediaDirect`, `exportAsProject`, and `exportAsFinalCutProXML` — there is no
|
||||
`exportFramePNG`. That is why `capture_frame` reaches into the undocumented QE DOM, and why
|
||||
[#9](https://github.com/leancoderkavy/premiere-pro-mcp/issues/9) reports it returning `false` and
|
||||
writing nothing on **both** PPro 2025 and 2026. It isn't a bug we can fix; it's a hole in the API.
|
||||
|
||||
UXP has a supported `Exporter.exportSequenceFrame()`. **Probe A** finds out whether it works.
|
||||
|
||||
Frame capture is the only tool that gives an agent *visual* evidence of the timeline. Without it
|
||||
there is no way to verify a color grade, a transition, or a title actually landed. It's worth a
|
||||
spike on its own.
|
||||
|
||||
**2. Can we drop the temp-file bridge?**
|
||||
|
||||
Today the CEP panel polls a temp directory every 200ms for `.jsx` files. UXP has `WebSocket` and
|
||||
`fetch`, which would be a strict upgrade. But:
|
||||
|
||||
- Adobe's UXP docs **never mention `localhost` or `127.0.0.1`** — not once, anywhere.
|
||||
- UXP WebSockets are **client-only**: a plugin "cannot host or accept incoming connections", so
|
||||
the MCP server must be the server. (Fine — that's the direction we want anyway.)
|
||||
- macOS is documented to restrict `http://`. Whether that extends to `ws://` is **unstated**.
|
||||
- `wss://` with a self-signed cert is **explicitly broken on macOS** per Adobe's known-issues page.
|
||||
|
||||
So both obvious loopback options sit in undocumented-or-blocked territory. **Probes B–E** find out
|
||||
what actually connects. This determines our entire transport, so it's worth knowing before we
|
||||
commit to a port rather than after.
|
||||
|
||||
## Running it
|
||||
|
||||
You need Premiere Pro **25.6 or newer** (that's when UXP went GA) and the
|
||||
[UXP Developer Tool](https://developer.adobe.com/premiere-pro/uxp/plugins/) 2.2+.
|
||||
|
||||
**1. Start the spike server.** Zero dependencies, so there is nothing to install:
|
||||
|
||||
```bash
|
||||
node uxp-spike/server.mjs # listens on 127.0.0.1:7777
|
||||
```
|
||||
|
||||
**2. Enable Premiere's developer mode.** Settings → Plugins → *Enable developer mode*, then
|
||||
**restart Premiere**.
|
||||
|
||||
**3. Side-load the plugin.** In UXP Developer Tool: **Add Plugin** → select
|
||||
`uxp-spike/manifest.json` → **Load & Watch**.
|
||||
|
||||
**4. Open a project with a sequence**, put the playhead somewhere with visible picture, and open
|
||||
**Window → UXP Plugins → MCP UXP Spike**.
|
||||
|
||||
**5. Click "Run all probes."**
|
||||
|
||||
## Reading the result
|
||||
|
||||
The panel prints a JSON verdict and writes it to `/tmp/mcp-uxp-spike-report.json`. The server also
|
||||
logs every transport that reaches it.
|
||||
|
||||
The two lines that matter:
|
||||
|
||||
```
|
||||
Issue #9 (frame capture): FIXED by UXP | still broken
|
||||
Transport: websocket | http-fetch | file-bridge
|
||||
```
|
||||
|
||||
Probe A does **not** trust `exportSequenceFrame`'s return value — the QE DOM lies about this in
|
||||
both directions, so success is decided purely by whether a file exists on disk afterwards.
|
||||
|
||||
A failing probe is a **result, not an error**. "Loopback WebSocket is blocked" is exactly the kind
|
||||
of thing worth learning in an afternoon rather than three weeks into a port.
|
||||
|
||||
## Please paste the JSON verdict into the tracking issue
|
||||
|
||||
If you can run this against a real Premiere, that's genuinely the most useful thing anyone can do
|
||||
for this project right now. Neither of these questions can be settled from Adobe's documentation.
|
||||
Reference in New Issue
Block a user