@synthetic-ai/premiere-mcp 2.3.1 → 2.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -273,6 +273,26 @@
273
273
  border-color: var(--accent);
274
274
  background: var(--surface-2);
275
275
  }
276
+ /* Language selector (rendered by i18n/panel.cjs into #languageSettings) */
277
+ .synth-lang-select {
278
+ width: 100%;
279
+ padding: 7px 8px;
280
+ background: var(--surface);
281
+ border: 1px solid var(--border);
282
+ color: var(--text);
283
+ border-radius: 8px;
284
+ font-size: 11.5px;
285
+ font-family: inherit;
286
+ outline: none;
287
+ }
288
+ .synth-lang-select:focus { border-color: var(--accent); }
289
+ .synth-lang-select option { background: #18181b; color: var(--text); }
290
+ .synth-lang-note {
291
+ font-size: 10.5px;
292
+ color: var(--text-dim);
293
+ margin-top: 6px;
294
+ line-height: 1.4;
295
+ }
276
296
 
277
297
  /* -- Buttons (Synthetic primary / secondary) --------------------------- */
278
298
  .button-row {
@@ -361,7 +381,7 @@
361
381
  </head>
362
382
  <body>
363
383
  <!-- ── Synthetic shell header (canonical — DO NOT edit per-panel) ── -->
364
- <a class="synth-header" data-href="https://synthetic.com.ar" href="#" title="Open synthetic.com.ar">
384
+ <a class="synth-header" data-href="https://synthetic.com.ar" href="#" title="Open synthetic.com.ar" data-i18n-title="ui.bridge.header.openSite">
365
385
  <img class="synth-header-logo" src="synthetic-logo.png" alt="Synthetic">
366
386
  <span class="synth-header-name">Synthetic</span>
367
387
  <span class="synth-version-tag" id="synthHeaderVersion">v2.0.0</span>
@@ -390,67 +410,75 @@
390
410
  </div>
391
411
  <div class="product-text">
392
412
  <div class="title">Premiere Pro MCP</div>
393
- <div class="sub">Bridge · 437 tools</div>
413
+ <div class="sub" data-i18n="ui.bridge.product.subtitle" data-i18n-vars='{"count":437}'>Bridge · 437 tools</div>
394
414
  </div>
395
415
  <!-- Status dot inside the product block — green = bridge running, grey
396
416
  = stopped. Updated alongside #statusDot/#statusText from main.js. -->
397
417
  <span id="productStatus" class="product-status" title="Panel ready"></span>
398
418
  </div>
399
419
  <div id="topbar-right" style="display:flex; gap:2px; flex-shrink:0;">
400
- <button id="btnReload" onclick="location.reload()" title="Reload panel" class="icon-btn">⟳</button>
401
- <button id="btnSettingsToggle" onclick="toggleSettings()" title="Settings" class="icon-btn">⚙</button>
420
+ <button id="btnReload" onclick="reloadPanel()" title="Reload panel" data-i18n-title="ui.bridge.toolbar.reload" class="icon-btn">⟳</button>
421
+ <button id="btnSettingsToggle" onclick="toggleSettings()" title="Settings" data-i18n-title="ui.bridge.toolbar.settings" class="icon-btn">⚙</button>
402
422
  </div>
403
423
  </div>
404
424
 
405
- <!-- Settings (hidden by default — toggled by the ⚙ button above). Just
406
- the license key for now: this panel doesn't have AE Agent's full
425
+ <!-- Settings (hidden by default — toggled by the ⚙ button above). The
426
+ license key + the language: this panel doesn't have AE Agent's full
407
427
  Subscription/API Keys/Data settings system, and doesn't need it. -->
408
428
  <div id="settingsPanel" style="display:none; margin: 0 0 14px; padding: 10px; border: 1px solid #3a3a3a; border-radius: 8px; background: rgba(255,255,255,0.02);">
409
- <label for="licenseKeyInput">License key</label>
429
+ <label for="licenseKeyInput" data-i18n="ui.bridge.settings.licenseKey">License key</label>
410
430
  <div class="button-row" style="margin-top:0;">
411
- <input type="text" id="licenseKeyInput" placeholder="Paste your Premiere MCP license key" style="flex:1;">
431
+ <input type="text" id="licenseKeyInput" placeholder="Paste your Premiere MCP license key" data-i18n-placeholder="ui.bridge.settings.licensePlaceholder" style="flex:1;">
412
432
  </div>
413
433
  <div class="button-row">
414
- <button id="btnSaveLicense" onclick="saveLicenseKey()">Save license</button>
434
+ <button id="btnSaveLicense" onclick="saveLicenseKey()" data-i18n="ui.bridge.settings.saveLicense">Save license</button>
415
435
  </div>
416
436
  <div id="licenseStatus" class="meta" style="margin: 6px 0 0;"></div>
437
+ <!-- Language: saved to <USER_DATA>/com.mcp.premiere.bridge/settings.json,
438
+ shared with the AI Chat panel and read by the MCP server when it
439
+ (re)starts. The panel UI switches immediately. See main.js initI18n. -->
440
+ <div id="languageSettings"></div>
441
+ <div id="languageStatus" class="meta" style="margin: 6px 0 0;"></div>
442
+ <!-- Temp dir field -->
443
+ <label for="tempDir" data-i18n="ui.bridge.tempDir.label">Temp directory</label>
444
+ <div class="button-row" style="margin-top:0;">
445
+ <input type="text" id="tempDir" value="" style="flex:1;">
446
+ </div>
447
+ <div class="button-row">
448
+ <button onclick="saveTempDir()" data-i18n="ui.bridge.controls.save">Save</button>
449
+ </div>
417
450
  </div>
418
451
 
419
452
  <!-- Status -->
420
453
  <div class="status-row">
421
454
  <div class="status-dot" id="statusDot"></div>
422
- <span id="statusText">Stopped</span>
455
+ <span id="statusText" data-i18n="ui.bridge.status.stopped">Stopped</span>
423
456
  </div>
424
- <div class="meta">Commands processed: <strong id="cmdCount">0</strong></div>
457
+ <div class="meta"><span data-i18n="ui.bridge.stats.commandsProcessed">Commands processed:</span> <strong id="cmdCount">0</strong></div>
425
458
 
426
459
  <!-- Update banner (hidden until checkForUpdates() finds a newer version) -->
427
460
  <div id="updateBanner" style="display:none; margin: 12px 0; padding: 12px; border: 1px solid #a855f7; border-radius: 8px; background: rgba(168,85,247,0.08);">
428
461
  <div style="display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom: 8px;">
429
- <span style="font-weight:600; color:#e9d5ff;">Update available</span>
462
+ <span style="font-weight:600; color:#e9d5ff;" data-i18n="ui.bridge.update.available">Update available</span>
430
463
  <span id="updateVersionTag" style="font-family: monospace; font-size: 11px; color:#c084fc;">v? -> v?</span>
431
464
  </div>
432
465
  <div id="updateNotes" style="font-size: 11px; color:#a8a4c0; margin-bottom: 10px; line-height: 1.4;"></div>
433
466
  <div style="display:flex; gap:6px;">
434
- <button id="btnUpdateNow" onclick="applyUpdate()" style="flex:1; background:#a855f7; color:#fff; border:none; padding:6px 10px; border-radius:4px; font-size:12px; cursor:pointer;">Update now</button>
435
- <button id="btnUpdateLater" onclick="dismissUpdate()" style="background:transparent; color:#a8a4c0; border:1px solid #444; padding:6px 10px; border-radius:4px; font-size:12px; cursor:pointer;">Later</button>
436
- <button id="btnUpdateInstaller" onclick="openInstaller()" title="If hot-swap fails or the release needs a fresh manifest" style="background:transparent; color:#a8a4c0; border:1px solid #444; padding:6px 10px; border-radius:4px; font-size:12px; cursor:pointer;">.zxp</button>
467
+ <button id="btnUpdateNow" onclick="applyUpdate()" style="flex:1; background:#a855f7; color:#fff; border:none; padding:6px 10px; border-radius:4px; font-size:12px; cursor:pointer;" data-i18n="ui.bridge.update.now">Update now</button>
468
+ <button id="btnUpdateLater" onclick="dismissUpdate()" style="background:transparent; color:#a8a4c0; border:1px solid #444; padding:6px 10px; border-radius:4px; font-size:12px; cursor:pointer;" data-i18n="ui.bridge.update.later">Later</button>
469
+ <button id="btnUpdateInstaller" onclick="openInstaller()" title="If hot-swap fails or the release needs a fresh manifest" data-i18n-title="ui.bridge.update.installerHint" style="background:transparent; color:#a8a4c0; border:1px solid #444; padding:6px 10px; border-radius:4px; font-size:12px; cursor:pointer;">.zxp</button>
437
470
  </div>
438
471
  </div>
439
472
 
440
- <!-- Temp dir field -->
441
- <label for="tempDir">Temp directory</label>
442
- <input type="text" id="tempDir" value="">
443
-
444
473
  <!-- Controls -->
445
474
  <div class="button-row">
446
- <button id="btnStart" onclick="startBridge()">Start bridge</button>
447
- <button id="btnStop" onclick="stopBridge()" disabled>Stop</button>
448
- <button onclick="saveTempDir()">Save</button>
475
+ <button id="btnStart" onclick="startBridge()" data-i18n="ui.bridge.controls.start">Start bridge</button>
476
+ <button id="btnStop" onclick="stopBridge()" disabled data-i18n="ui.bridge.controls.stop">Stop</button>
449
477
  </div>
450
478
 
451
479
  <!-- Log -->
452
480
  <div class="log-label">
453
- <span class="l">Activity log</span>
481
+ <span class="l" data-i18n="ui.bridge.activity.title">Activity log</span>
454
482
  <span class="r">premiere-mcp-bridge</span>
455
483
  </div>
456
484
  <div id="log"></div>
@@ -459,14 +487,21 @@
459
487
 
460
488
  <!-- ── Synthetic shell footer (canonical — DO NOT edit per-panel) ── -->
461
489
  <footer class="synth-footer">
462
- <span class="synth-footer-label">Built by</span>
463
- <a class="synth-footer-link" data-href="https://synthetic.com.ar" href="#" title="Open synthetic.com.ar">
490
+ <span class="synth-footer-label" data-i18n="ui.bridge.footer.builtBy">Built by</span>
491
+ <a class="synth-footer-link" data-href="https://synthetic.com.ar" href="#" title="Open synthetic.com.ar" data-i18n-title="ui.bridge.header.openSite">
464
492
  <img class="synth-footer-logo" src="synthetic-logo.png" alt="Synthetic">
465
493
  <span class="synth-footer-name">Synthetic</span>
466
494
  </a>
467
495
  </footer>
468
496
 
469
497
  <script src="CSInterface.js"></script>
498
+ <!-- i18n (vendored from synthetic-idiomas by scripts/sync-i18n.mjs). With
499
+ --enable-nodejs CEP exposes a global `module`, so the UMD core registers
500
+ itself on module.exports instead of window: pick it up from there. -->
501
+ <script src="i18n-core.cjs"></script>
502
+ <script>if (!window.SyntheticI18n && typeof module === "object" && module && module.exports && module.exports.createI18n) window.SyntheticI18n = module.exports;</script>
503
+ <script src="i18n-panel.cjs"></script>
504
+ <script src="i18n-locales.js"></script>
470
505
  <script src="main.js"></script>
471
506
  </body>
472
507
  </html>