Releases
v1.5.1
OpenCut v1.5.1 — Batches 28+29 Audit Fixes
Compare
Sorry, something went wrong.
No results found
v1.5.1 — Batches 28+29 Audit Fixes (50+ bugs fixed)
Critical: UXP Panel Was Completely Non-Functional (5 P0 bugs)
CSRF header name mismatch (X-CSRF-Token vs X-OpenCut-Token)
CSRF token fetched from non-existent /csrf endpoint
Job polling hit /jobs/{id} instead of /status/{id}
Job cancel used DELETE instead of POST /cancel/{id}
LLM settings called non-existent BackendClient.fetch()
Route Crash Fixes (Batch 29)
auto-zoom : probe.get() on non-dict crashed apply_to_file, wrong subprocess import alias, keyframe result was dict not list
loudness-match : batch_loudness_match returns list not dict — entire result was silently discarded
settings : 6 POST routes silently accepted malformed JSON (silent=True -> force=True)
chapters : missing LLM provider allowlist, segments validation
multicam : segments validation, 50 MB file size cap
Core Module Fixes (Batch 28)
chapter_gen -- Non-greedy JSON regex truncated multi-element LLM arrays
nlp_command -- Route allowlist on LLM output, word-boundary keyword matching
color_match -- VideoWriter.isOpened(), consolidated run_ffmpeg, channel label fix
auto_zoom -- VideoCapture try/finally, easing was a complete no-op
loudness_match -- Pass 1 returncode, measured value validation, target clamp
footage_search -- Windows file lock non-blocking -> blocking + explicit unlock
deliverables -- round(fps) for 29.97fps timecodes
CLI Crash Fixes
chapters: dict attribute access crash
repeat-detect: dict treated as list
search index/query: imported from non-existent module
Security
MCP server: files[] array path traversal validation, UNC path rejection
checks.py: consistent bool returns (Tuple was always truthy)
user_data.py: removed lock eviction thread-safety bug
You can’t perform that action at this time.