Skip to content

Commit e863ed6

Browse files
committed
fix: batch 32 — 16 remaining integration bugs from E2E verification
Routes: - timeline export-from-markers: accept "filepath" fallback for "input_file" param (CEP sends filepath) - timeline smart-bins: accept both "binName"/"bin_name" and "rule"/"rule_type" field name conventions CEP panel: - repeat-detect result: read "r.repeats" (was "r.cuts"/"r.ranges") - chapters: send "api_key" (was "llm_api_key") — key was silently lost, breaking OpenAI/Anthropic providers - export-from-markers result: read "r.count" (was "r.exported") - CSRF header in 4 raw fetch() calls: X-CSRF-Token → X-OpenCut-Token — LLM settings save + audio/zoom defaults save were 403 failures UXP panel: - color-match/auto-zoom/denoise result: read "result.output" with fallback to "result.output_path" - chapters: read "c.seconds" for timecodes (was "c.start" → always 0) - batch-rename: send renames array format route expects - smart-bins: send rules array format route expects - export-from-markers: send input_file+markers route expects - deliverables: send non-empty sequence_data (empty {} was falsy)
1 parent f60f328 commit e863ed6

18 files changed

Lines changed: 38 additions & 38 deletions

File tree

Install.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ Write-Host " \___/| .__/ \___|_| |_|\____\__,_|\__|" -ForegroundColor Cyan
155155
Write-Host " |_| " -ForegroundColor Cyan
156156
Write-Host ""
157157
Write-Host " Open Source Video Editing Automation" -ForegroundColor DarkGray
158-
Write-Host " Installer v1.5.3" -ForegroundColor DarkGray
158+
Write-Host " Installer v1.5.4" -ForegroundColor DarkGray
159159

160160
$isAdmin = Test-IsAdmin
161161
if ($isAdmin) {

OpenCut.iss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
; Fully self-contained installer — bundles server exe, ffmpeg, and CEP extension
33

44
#define MyAppName "OpenCut"
5-
#define MyAppVersion "1.5.3"
5+
#define MyAppVersion "1.5.4"
66
#define MyAppPublisher "SysAdminDoc"
77
#define MyAppURL "https://github.com/SysAdminDoc/OpenCut"
88

extension/com.opencut.panel/CSXS/manifest.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22
<ExtensionManifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
33
Version="7.0"
44
ExtensionBundleId="com.opencut.panel"
5-
ExtensionBundleVersion="1.5.3"
5+
ExtensionBundleVersion="1.5.4"
66
ExtensionBundleName="OpenCut">
77

88
<ExtensionList>
9-
<Extension Id="com.opencut.panel.main" Version="1.5.3" />
9+
<Extension Id="com.opencut.panel.main" Version="1.5.4" />
1010
</ExtensionList>
1111

1212
<ExecutionEnvironment>

extension/com.opencut.panel/client/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2943,7 +2943,7 @@ <h1 class="content-title" id="contentTitle">Cut & Clean</h1>
29432943
<div class="card-header"><div class="card-title">About OpenCut</div></div>
29442944
<div class="settings-row">
29452945
<span class="settings-label">Version</span>
2946-
<span class="settings-value">1.5.3</span>
2946+
<span class="settings-value">1.5.4</span>
29472947
</div>
29482948
<div class="about-links">
29492949
<a href="https://github.com/SysAdminDoc/opencut" class="about-link" target="_blank">GitHub</a>

extension/com.opencut.panel/client/main.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* ============================================================
2-
OpenCut CEP Panel - Main Controller v1.5.3
2+
OpenCut CEP Panel - Main Controller v1.5.4
33
6-Tab Professional Toolkit
44
============================================================ */
55
(function () {
@@ -5495,7 +5495,7 @@
54955495

54965496
// --- Silence mode toggle ---
54975497
function loadLlmSettings() {
5498-
fetch(BACKEND + "/settings/llm", { headers: { "X-CSRF-Token": csrfToken } })
5498+
fetch(BACKEND + "/settings/llm", { headers: { "X-OpenCut-Token": csrfToken } })
54995499
.then(function(r) { return r.json(); })
55005500
.then(function(s) {
55015501
if (s.provider) {
@@ -5526,7 +5526,7 @@
55265526
var baseUrl = (document.getElementById("llmBaseUrl2") || {}).value || "";
55275527
fetch(BACKEND + "/settings/llm", {
55285528
method: "POST",
5529-
headers: { "Content-Type": "application/json", "X-CSRF-Token": csrfToken },
5529+
headers: { "Content-Type": "application/json", "X-OpenCut-Token": csrfToken },
55305530
body: JSON.stringify({ provider: provider, model: model, api_key: apiKey, base_url: baseUrl })
55315531
}).then(function(r) { return r.json(); })
55325532
.then(function() { showToast("LLM settings saved", "success"); })
@@ -5547,12 +5547,12 @@
55475547
var easing = (document.getElementById("defaultZoomEasing") || {}).value || "ease_in_out";
55485548
fetch(BACKEND + "/settings/loudness-target", {
55495549
method: "POST",
5550-
headers: { "Content-Type": "application/json", "X-CSRF-Token": csrfToken },
5550+
headers: { "Content-Type": "application/json", "X-OpenCut-Token": csrfToken },
55515551
body: JSON.stringify({ target_lufs: lufs })
55525552
}).catch(function() {});
55535553
fetch(BACKEND + "/settings/auto-zoom", {
55545554
method: "POST",
5555-
headers: { "Content-Type": "application/json", "X-CSRF-Token": csrfToken },
5555+
headers: { "Content-Type": "application/json", "X-OpenCut-Token": csrfToken },
55565556
body: JSON.stringify({ zoom_amount: zoom, easing: easing })
55575557
}).then(function() { showToast("Defaults saved", "success"); })
55585558
.catch(function() { showToast("Failed to save defaults", "error"); });
@@ -5844,7 +5844,7 @@
58445844
var res = document.getElementById("markerExportResult");
58455845
var sum = document.getElementById("markerExportSummary");
58465846
if (res) res.classList.remove("hidden");
5847-
if (sum) sum.textContent = "Exported " + (r.exported || 0) + " clips.";
5847+
if (sum) sum.textContent = "Exported " + (r.count || r.exported || 0) + " clips.";
58485848
});
58495849

58505850
function loadProjectItems() {
@@ -6002,7 +6002,7 @@
60026002
addJobDoneListener(function (job) {
60036003
if (job.type !== "repeat-detect" || job.status !== "complete" || !job.result) return;
60046004
var r = job.result;
6005-
repeatCutsData = r.cuts || r.ranges || [];
6005+
repeatCutsData = r.repeats || r.cuts || r.ranges || [];
60066006
lastTimelineCuts = repeatCutsData;
60076007
var res = document.getElementById("repeatResults");
60086008
var sum = document.getElementById("repeatSummary");
@@ -6039,7 +6039,7 @@
60396039
filepath: selectedPath,
60406040
llm_provider: provider,
60416041
llm_model: model,
6042-
llm_api_key: apiKey,
6042+
api_key: apiKey,
60436043
max_chapters: maxChapters,
60446044
});
60456045
}

extension/com.opencut.panel/client/style.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* ============================================================
2-
OpenCut CEP Panel v1.5.3 - ULTRA PREMIUM EDITION
2+
OpenCut CEP Panel v1.5.4 - ULTRA PREMIUM EDITION
33
Next-Generation AI Editing Suite for Adobe Premiere Pro
44
============================================================ */
55

extension/com.opencut.uxp/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
<path d="M4 2.5a3 3 0 00-1.76 5.43L7.33 11l-5.09 3.07A3 3 0 104.8 19.5a3 3 0 001.76-5.43L8.93 12.6 16.5 17V5L8.93 9.4 6.56 7.93A3 3 0 004 2.5z" fill="var(--accent)"/>
1717
</svg>
1818
<span class="oc-logo">OpenCut</span>
19-
<span class="oc-version">v1.5.3</span>
19+
<span class="oc-version">v1.5.4</span>
2020
</div>
2121
<div class="oc-header-right">
2222
<div class="oc-connection" id="connectionStatus" title="Backend connection status">

extension/com.opencut.uxp/main.js

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ const BACKEND_DEFAULT = "http://127.0.0.1:5679";
2323
const BACKEND_MAX_PORT = 5689;
2424
const POLL_INTERVAL_MS = 1200;
2525
const HEALTH_CHECK_MS = 8000;
26-
const VERSION = "1.5.3";
26+
const VERSION = "1.5.4";
2727

2828
async function detectBackend() {
2929
// Try ports 5679-5689 like CEP panel does
@@ -686,7 +686,7 @@ async function runChapterGeneration() {
686686
if (area && body) {
687687
area.classList.remove("hidden");
688688
body.value = result.chapters.map((c, i) =>
689-
`${formatTimecode(c.start)}${c.title ?? `Chapter ${i + 1}`}`
689+
`${formatTimecode(c.seconds ?? c.start ?? 0)}${c.title ?? `Chapter ${i + 1}`}`
690690
).join("\n");
691691
}
692692
}
@@ -747,7 +747,7 @@ async function runDenoise() {
747747
(result) => {
748748
UIController.hideProcessing();
749749
UIController.setButtonLoading("runDenoiseBtn", false);
750-
UIController.showToast(`Denoise complete. Output: ${result.output_path ?? "saved"}`, "success");
750+
UIController.showToast(`Denoise complete. Output: ${result.output ?? result.output_path ?? "saved"}`, "success");
751751
UIController.setStatus("Denoise complete.");
752752
},
753753
(err) => {
@@ -776,7 +776,7 @@ async function runNormalize() {
776776
(result) => {
777777
UIController.hideProcessing();
778778
UIController.setButtonLoading("runNormalizeBtn", false);
779-
UIController.showToast(`Normalization complete. Output: ${result.output_path ?? "saved"}`, "success");
779+
UIController.showToast(`Normalization complete. Output: ${result.output ?? result.output_path ?? "saved"}`, "success");
780780
UIController.setStatus("Normalization complete.");
781781
},
782782
(err) => {
@@ -872,7 +872,7 @@ async function runColorMatch() {
872872
(result) => {
873873
UIController.hideProcessing();
874874
UIController.setButtonLoading("runColorMatchBtn", false);
875-
UIController.showToast(`Color match complete. Output: ${result.output_path ?? "saved"}`, "success");
875+
UIController.showToast(`Color match complete. Output: ${result.output ?? result.output_path ?? "saved"}`, "success");
876876
UIController.setStatus("Color match complete.");
877877
},
878878
(err) => {
@@ -901,7 +901,7 @@ async function runAutoZoom() {
901901
(result) => {
902902
UIController.hideProcessing();
903903
UIController.setButtonLoading("runAutoZoomBtn", false);
904-
UIController.showToast(`Auto zoom complete. Output: ${result.output_path ?? "saved"}`, "success");
904+
UIController.showToast(`Auto zoom complete. Output: ${result.output ?? result.output_path ?? "saved"}`, "success");
905905
UIController.setStatus("Auto zoom complete.");
906906
},
907907
(err) => {
@@ -1024,7 +1024,7 @@ async function runBatchExport() {
10241024

10251025
await JobPoller.start(
10261026
"/timeline/export-from-markers",
1027-
{ preset, output_dir: outputDir },
1027+
{ input_file: "", markers: [], output_dir: outputDir, format: preset },
10281028
(pct, msg) => { UIController.setProgress(pct); UIController.setProcessingMsg(msg || "Exporting..."); },
10291029
(result) => {
10301030
UIController.hideProcessing();
@@ -1051,7 +1051,7 @@ async function runBatchRename() {
10511051

10521052
await JobPoller.start(
10531053
"/timeline/batch-rename",
1054-
{ pattern, scope },
1054+
{ renames: [], pattern, scope },
10551055
(pct, msg) => { UIController.setProgress(pct); UIController.setProcessingMsg(msg || "Renaming..."); },
10561056
(result) => {
10571057
UIController.hideProcessing();
@@ -1077,7 +1077,7 @@ async function runSmartBins() {
10771077

10781078
await JobPoller.start(
10791079
"/timeline/smart-bins",
1080-
{ strategy },
1080+
{ rules: [{ binName: strategy, rule: "type", field: "type", value: strategy }] },
10811081
(pct, msg) => { UIController.setProgress(pct); UIController.setProcessingMsg(msg || "Organising..."); },
10821082
(result) => {
10831083
UIController.hideProcessing();
@@ -1302,7 +1302,7 @@ async function runDeliverables(type) {
13021302

13031303
await JobPoller.start(
13041304
`/deliverables/${type.replace(/_/g, "-")}`,
1305-
{ sequence_data: {}, output_dir: outputDir || null },
1305+
{ sequence_data: { video_tracks: [], audio_tracks: [] }, output_dir: outputDir || null },
13061306
(pct, msg) => { UIController.setProgress(pct); UIController.setProcessingMsg(msg || "Generating..."); },
13071307
(result) => {
13081308
UIController.hideProcessing();

extension/com.opencut.uxp/manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"id": "com.opencut.uxp",
33
"name": "OpenCut UXP",
4-
"version": "1.5.3",
4+
"version": "1.5.4",
55
"main": "index.html",
66
"host": [
77
{

install.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import subprocess
1111
import platform
1212

13-
VERS = "1.5.3"
13+
VERS = "1.5.4"
1414
CEP_EXT = "com.opencut.panel"
1515
WIN_CEP_DIR = os.path.expandvars(r"%APPDATA%\Adobe\CEP\extensions")
1616
MAC_CEP_DIR = os.path.expanduser("~/Library/Application Support/Adobe/CEP/extensions")

0 commit comments

Comments
 (0)