Skip to content

Commit 15738bd

Browse files
committed
fix: batch 31 — 25 broken frontend features, full UXP+CEP endpoint audit
UXP panel (18 P0 fixes — every feature was broken): Every handler posted to wrong endpoints (missing Blueprint prefixes) and sent wrong parameter names: - /silence → correct (but params: file_path→filepath, threshold_db→ threshold, min_silence_duration→min_duration, padding_ms→padding) - /filler-words → /fillers (file_path→filepath, filler_words→custom_words) - /transcribe → /captions (file_path→filepath, caption_style→format, word_level→word_timestamps) - /chapters → /captions/chapters (file_path→filepath) - /repeat-detection → /captions/repeat-detect (file_path→filepath, similarity_threshold→threshold) - /denoise → /audio/denoise (file_path→filepath) - /normalize → /audio/normalize (file_path→filepath) - /loudness-match → /audio/loudness-match (restructured as batch) - /beat-detection → /audio/beat-markers (file_path→filepath, sensitivity→subdivisions) - /color-match → /video/color-match (file_path→source, reference_path→reference) - /auto-zoom → /video/auto-zoom (file_path→filepath, max_zoom→zoom_amount) - /multicam-cuts → /video/multicam-cuts (cam paths→filepath+diarization) - /batch-export-markers → /timeline/export-from-markers - /batch-rename → /timeline/batch-rename - /smart-bins → /timeline/smart-bins - /import-srt → /timeline/srt-to-captions - /search-footage → /search/footage (limit→top_k) - /nlp-command → /nlp/command - /index-library → /search/index - /deliverables → /deliverables/{type} (output_path→output) CEP panel (5 fixes): - addBeatMarkersToSequence: sent {times: [...]} object but ocAddSequenceMarkers expects array of marker objects - addChaptersAsMarkers: same format mismatch — wrapped object instead of marker array - renameAll: sent {id, old_name, new_name} but ExtendScript reads {nodeId, newName} - createSmartBins: sent {bin_name, rule_type} but ExtendScript reads {binName, rule} — added field transformation - genDeliverableDoc: read data.output_path but API returns data.output ExtendScript: - ocExportSequenceRange: setInPoint/setOutPoint failures now abort with error instead of silently exporting wrong range
1 parent 64cee9a commit 15738bd

18 files changed

Lines changed: 65 additions & 60 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.2" -ForegroundColor DarkGray
158+
Write-Host " Installer v1.5.3" -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.2"
5+
#define MyAppVersion "1.5.3"
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.2"
5+
ExtensionBundleVersion="1.5.3"
66
ExtensionBundleName="OpenCut">
77

88
<ExtensionList>
9-
<Extension Id="com.opencut.panel.main" Version="1.5.2" />
9+
<Extension Id="com.opencut.panel.main" Version="1.5.3" />
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.2</span>
2946+
<span class="settings-value">1.5.3</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: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* ============================================================
2-
OpenCut CEP Panel - Main Controller v1.5.2
2+
OpenCut CEP Panel - Main Controller v1.5.3
33
6-Tab Professional Toolkit
44
============================================================ */
55
(function () {
@@ -5736,7 +5736,8 @@
57365736
function addBeatMarkersToSequence() {
57375737
if (!inPremiere) { showAlert("Premiere Pro connection required."); return; }
57385738
if (!beatMarkerTimes || !beatMarkerTimes.length) { showAlert("No beat markers detected."); return; }
5739-
var payload = JSON.stringify({ times: beatMarkerTimes, type: "Chapter" });
5739+
var markers = beatMarkerTimes.map(function(t) { return { time: t, name: "Beat", type: "Chapter" }; });
5740+
var payload = JSON.stringify(markers);
57405741
cs.evalScript('ocAddSequenceMarkers(' + JSON.stringify(payload) + ')', function (result) {
57415742
try {
57425743
var r = JSON.parse(result);
@@ -5895,7 +5896,7 @@
58955896
var idx = parseInt(inputs[i].getAttribute("data-idx"));
58965897
var orig = renameItemsData[idx];
58975898
if (orig && inputs[i].value !== orig.name) {
5898-
renames.push({ id: orig.id || orig.path, old_name: orig.name, new_name: inputs[i].value });
5899+
renames.push({ nodeId: orig.nodeId || orig.id || orig.path, newName: inputs[i].value });
58995900
}
59005901
}
59015902
if (!renames.length) { showAlert("No changes to apply."); return; }
@@ -5975,7 +5976,8 @@
59755976
api("POST", "/timeline/smart-bins", { rules: smartBinRules }, function (err, data) {
59765977
if (err || (data && data.error)) { showAlert("Validation failed: " + (data ? data.error : "Network error")); return; }
59775978
if (!inPremiere) { showToast("Rules validated (no Premiere connection)", "info"); return; }
5978-
var payload = JSON.stringify(smartBinRules);
5979+
var jsxRules = smartBinRules.map(function(r) { return { binName: r.bin_name, rule: r.rule_type, field: r.field, value: r.value }; });
5980+
var payload = JSON.stringify(jsxRules);
59795981
cs.evalScript('ocCreateSmartBins(' + JSON.stringify(payload) + ')', function (result) {
59805982
try {
59815983
var r = JSON.parse(result);
@@ -6075,7 +6077,8 @@
60756077
function addChaptersAsMarkers() {
60766078
if (!inPremiere) { showAlert("Premiere Pro connection required."); return; }
60776079
if (!chaptersData || !chaptersData.length) { showAlert("No chapters available."); return; }
6078-
var payload = JSON.stringify({ chapters: chaptersData, type: "chapter" });
6080+
var markers = chaptersData.map(function(c) { return { time: c.seconds || c.start || c.time || 0, name: c.title || c.label || "Chapter", type: "Chapter" }; });
6081+
var payload = JSON.stringify(markers);
60796082
cs.evalScript('ocAddSequenceMarkers(' + JSON.stringify(payload) + ')', function (result) {
60806083
try {
60816084
var r = JSON.parse(result);
@@ -6169,7 +6172,7 @@
61696172
var res = document.getElementById("deliverablesResult");
61706173
var fp = document.getElementById("deliverablesFilePath");
61716174
if (res) res.classList.remove("hidden");
6172-
if (fp) fp.textContent = data.output_path || "File generated.";
6175+
if (fp) fp.textContent = data.output || data.output_path || "File generated.";
61736176
showToast(type + " generated", "success");
61746177
});
61756178
}

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.2 - ULTRA PREMIUM EDITION
2+
OpenCut CEP Panel v1.5.3 - ULTRA PREMIUM EDITION
33
Next-Generation AI Editing Suite for Adobe Premiere Pro
44
============================================================ */
55

extension/com.opencut.panel/host/index.jsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2151,16 +2151,18 @@ function ocExportSequenceRange(outputPath, startSeconds, endSeconds) {
21512151
return JSON.stringify({ error: "No active sequence" });
21522152
}
21532153

2154-
// Set in/out points on the sequence
2154+
// Set in/out points on the sequence — abort if either fails
21552155
try {
21562156
seq.setInPoint(startSeconds);
21572157
} catch (e) {
21582158
_ocLog("ocExportSequenceRange setInPoint error: " + e.toString());
2159+
return JSON.stringify({ error: "Failed to set in-point: " + e.toString() });
21592160
}
21602161
try {
21612162
seq.setOutPoint(endSeconds);
21622163
} catch (e) {
21632164
_ocLog("ocExportSequenceRange setOutPoint error: " + e.toString());
2165+
return JSON.stringify({ error: "Failed to set out-point: " + e.toString() });
21642166
}
21652167

21662168
// Queue to AME

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.2</span>
19+
<span class="oc-version">v1.5.3</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: 36 additions & 36 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.2";
26+
const VERSION = "1.5.3";
2727

2828
async function detectBackend() {
2929
// Try ports 5679-5689 like CEP panel does
@@ -541,7 +541,7 @@ async function runSilenceRemoval() {
541541

542542
await JobPoller.start(
543543
"/silence",
544-
{ file_path: clipPath, threshold_db: threshold, min_silence_duration: minSilence, padding_ms: padding, mode },
544+
{ filepath: clipPath, threshold: threshold, min_duration: minSilence, padding_before: padding / 1000, padding_after: padding / 1000, mode },
545545
(pct, msg) => {
546546
UIController.setProgress(pct);
547547
UIController.setProcessingMsg(msg || "Processing...");
@@ -595,8 +595,8 @@ async function runFillerDetection() {
595595
UIController.showProcessing("Detecting filler words...");
596596

597597
await JobPoller.start(
598-
"/filler-words",
599-
{ file_path: clipPath, filler_words: words.split(",").map(w => w.trim()), padding_ms: padding },
598+
"/fillers",
599+
{ filepath: clipPath, custom_words: words.split(",").map(w => w.trim()) },
600600
(pct, msg) => { UIController.setProgress(pct); UIController.setProcessingMsg(msg || "Transcribing..."); },
601601
(result) => {
602602
UIController.hideProcessing();
@@ -630,9 +630,9 @@ async function runTranscribe() {
630630
UIController.showProcessing("Transcribing — this may take a while...");
631631

632632
await JobPoller.start(
633-
"/transcribe",
634-
{ file_path: clipPath, model, language: lang === "auto" ? null : lang,
635-
caption_style: style, diarize, word_level: wordLevel },
633+
"/captions",
634+
{ filepath: clipPath, model, language: lang === "auto" ? null : lang,
635+
format: style, diarize, word_timestamps: wordLevel },
636636
(pct, msg) => { UIController.setProgress(pct); UIController.setProcessingMsg(msg || "Transcribing..."); },
637637
(result) => {
638638
UIController.hideProcessing();
@@ -671,8 +671,8 @@ async function runChapterGeneration() {
671671
UIController.showProcessing("Generating chapters with AI...");
672672

673673
await JobPoller.start(
674-
"/chapters",
675-
{ file_path: clipPath, llm_provider: provider, llm_model: model },
674+
"/captions/chapters",
675+
{ filepath: clipPath, llm_provider: provider, llm_model: model },
676676
(pct, msg) => { UIController.setProgress(pct); UIController.setProcessingMsg(msg || "Generating..."); },
677677
(result) => {
678678
UIController.hideProcessing();
@@ -711,8 +711,8 @@ async function runRepeatDetection() {
711711
UIController.showProcessing("Detecting repeated segments...");
712712

713713
await JobPoller.start(
714-
"/repeat-detection",
715-
{ file_path: clipPath, similarity_threshold: threshold, keep_best: keepBest },
714+
"/captions/repeat-detect",
715+
{ filepath: clipPath, threshold, keep_best: keepBest },
716716
(pct, msg) => { UIController.setProgress(pct); UIController.setProcessingMsg(msg || "Analysing..."); },
717717
(result) => {
718718
UIController.hideProcessing();
@@ -741,8 +741,8 @@ async function runDenoise() {
741741
UIController.showProcessing("Applying noise reduction...");
742742

743743
await JobPoller.start(
744-
"/denoise",
745-
{ file_path: clipPath, method, strength },
744+
"/audio/denoise",
745+
{ filepath: clipPath, method, strength },
746746
(pct, msg) => { UIController.setProgress(pct); UIController.setProcessingMsg(msg || "Processing..."); },
747747
(result) => {
748748
UIController.hideProcessing();
@@ -770,8 +770,8 @@ async function runNormalize() {
770770
UIController.showProcessing("Normalizing audio...");
771771

772772
await JobPoller.start(
773-
"/normalize",
774-
{ file_path: clipPath, target_lufs: targetLufs, true_peak: truePeak ? -1.0 : null },
773+
"/audio/normalize",
774+
{ filepath: clipPath, target_lufs: targetLufs, true_peak: truePeak ? -1.0 : null },
775775
(pct, msg) => { UIController.setProgress(pct); UIController.setProcessingMsg(msg || "Normalizing..."); },
776776
(result) => {
777777
UIController.hideProcessing();
@@ -800,8 +800,8 @@ async function runLoudnessMatch() {
800800
UIController.showProcessing("Matching loudness to reference...");
801801

802802
await JobPoller.start(
803-
"/loudness-match",
804-
{ file_path: clipPath, reference_path: refPath },
803+
"/audio/loudness-match",
804+
{ files: [clipPath, refPath], target_lufs: -14.0 },
805805
(pct, msg) => { UIController.setProgress(pct); UIController.setProcessingMsg(msg || "Matching..."); },
806806
(result) => {
807807
UIController.hideProcessing();
@@ -828,8 +828,8 @@ async function runBeatMarkers() {
828828
UIController.showProcessing("Detecting beats...");
829829

830830
await JobPoller.start(
831-
"/beat-detection",
832-
{ file_path: trackPath, sensitivity },
831+
"/audio/beat-markers",
832+
{ filepath: trackPath, subdivisions: Math.max(1, Math.round(sensitivity * 4)) },
833833
(pct, msg) => { UIController.setProgress(pct); UIController.setProcessingMsg(msg || "Analysing tempo..."); },
834834
async (result) => {
835835
UIController.hideProcessing();
@@ -866,8 +866,8 @@ async function runColorMatch() {
866866
UIController.showProcessing("Matching color grading...");
867867

868868
await JobPoller.start(
869-
"/color-match",
870-
{ file_path: clipPath, reference_path: refPath, strength },
869+
"/video/color-match",
870+
{ source: clipPath, reference: refPath, strength },
871871
(pct, msg) => { UIController.setProgress(pct); UIController.setProcessingMsg(msg || "Grading..."); },
872872
(result) => {
873873
UIController.hideProcessing();
@@ -895,8 +895,8 @@ async function runAutoZoom() {
895895
UIController.showProcessing("Applying auto zoom / reframe...");
896896

897897
await JobPoller.start(
898-
"/auto-zoom",
899-
{ file_path: clipPath, aspect_ratio: aspect, max_zoom: maxZoom },
898+
"/video/auto-zoom",
899+
{ filepath: clipPath, zoom_amount: maxZoom, easing: "ease_in_out" },
900900
(pct, msg) => { UIController.setProgress(pct); UIController.setProcessingMsg(msg || "Reframing..."); },
901901
(result) => {
902902
UIController.hideProcessing();
@@ -927,8 +927,8 @@ async function runMulticamCuts() {
927927
UIController.showProcessing("Generating multicam cuts...");
928928

929929
await JobPoller.start(
930-
"/multicam-cuts",
931-
{ cam1_path: cam1Path, cam2_path: cam2Path, strategy },
930+
"/video/multicam-cuts",
931+
{ filepath: cam1Path, diarization_file: cam2Path, min_cut_duration: 1.0 },
932932
(pct, msg) => { UIController.setProgress(pct); UIController.setProcessingMsg(msg || "Analysing cameras..."); },
933933
async (result) => {
934934
UIController.hideProcessing();
@@ -1023,7 +1023,7 @@ async function runBatchExport() {
10231023
UIController.showProcessing("Starting batch export from markers...");
10241024

10251025
await JobPoller.start(
1026-
"/batch-export-markers",
1026+
"/timeline/export-from-markers",
10271027
{ preset, output_dir: outputDir },
10281028
(pct, msg) => { UIController.setProgress(pct); UIController.setProcessingMsg(msg || "Exporting..."); },
10291029
(result) => {
@@ -1050,7 +1050,7 @@ async function runBatchRename() {
10501050
UIController.showProcessing("Renaming project items...");
10511051

10521052
await JobPoller.start(
1053-
"/batch-rename",
1053+
"/timeline/batch-rename",
10541054
{ pattern, scope },
10551055
(pct, msg) => { UIController.setProgress(pct); UIController.setProcessingMsg(msg || "Renaming..."); },
10561056
(result) => {
@@ -1076,7 +1076,7 @@ async function runSmartBins() {
10761076
UIController.showProcessing("Organising project bins...");
10771077

10781078
await JobPoller.start(
1079-
"/smart-bins",
1079+
"/timeline/smart-bins",
10801080
{ strategy },
10811081
(pct, msg) => { UIController.setProgress(pct); UIController.setProcessingMsg(msg || "Organising..."); },
10821082
(result) => {
@@ -1104,7 +1104,7 @@ async function runSrtImport() {
11041104
UIController.showProcessing("Importing SRT to timeline...");
11051105

11061106
await JobPoller.start(
1107-
"/import-srt",
1107+
"/timeline/srt-to-captions",
11081108
{ srt_path: srtPath, track_index: trackIndex },
11091109
(pct, msg) => { UIController.setProgress(pct); UIController.setProcessingMsg(msg || "Importing..."); },
11101110
(result) => {
@@ -1135,8 +1135,8 @@ async function runIndexLibrary() {
11351135
if (statusLine) statusLine.textContent = "Indexing...";
11361136

11371137
await JobPoller.start(
1138-
"/index-library",
1139-
{ folder, index_transcripts: transcripts, index_frames: frames },
1138+
"/search/index",
1139+
{ files: [folder], model: "base" },
11401140
(pct, msg) => {
11411141
UIController.setProgress(pct);
11421142
UIController.setProcessingMsg(msg || "Scanning...");
@@ -1168,7 +1168,7 @@ async function runFootageSearch() {
11681168
UIController.setButtonLoading("runFootageSearchBtn", true);
11691169
UIController.setStatus("Searching footage...");
11701170

1171-
const r = await BackendClient.post("/search-footage", { query, limit });
1171+
const r = await BackendClient.post("/search/footage", { query, top_k: limit });
11721172

11731173
UIController.setButtonLoading("runFootageSearchBtn", false);
11741174

@@ -1213,7 +1213,7 @@ async function runNlpCommand() {
12131213
UIController.showProcessing("Parsing command with AI...");
12141214

12151215
await JobPoller.start(
1216-
"/nlp-command",
1216+
"/nlp/command",
12171217
{ command, llm_provider: provider },
12181218
(pct, msg) => { UIController.setProgress(pct); UIController.setProcessingMsg(msg || "Thinking..."); },
12191219
(result) => {
@@ -1301,14 +1301,14 @@ async function runDeliverables(type) {
13011301
UIController.showProcessing(`Generating ${type.replace(/_/g, " ")}...`);
13021302

13031303
await JobPoller.start(
1304-
"/deliverables",
1305-
{ type, output_dir: outputDir || null },
1304+
`/deliverables/${type.replace(/_/g, "-")}`,
1305+
{ sequence_data: {}, output_dir: outputDir || null },
13061306
(pct, msg) => { UIController.setProgress(pct); UIController.setProcessingMsg(msg || "Generating..."); },
13071307
(result) => {
13081308
UIController.hideProcessing();
13091309
if (btnId) UIController.setButtonLoading(btnId, false);
13101310
UIController.showToast(
1311-
`${type.replace(/_/g, " ")} saved: ${result.output_path ?? result.path ?? "done"}`,
1311+
`${type.replace(/_/g, " ")} saved: ${result.output ?? result.output_path ?? "done"}`,
13121312
"success"
13131313
);
13141314
UIController.setStatus(`${type} generated.`);

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.2",
4+
"version": "1.5.3",
55
"main": "index.html",
66
"host": [
77
{

0 commit comments

Comments
 (0)