Skip to content

Releases: SysAdminDoc/OpenCut

OpenCut v1.8.0

Choose a tag to compare

@SysAdminDoc SysAdminDoc released this 26 Mar 02:38

OpenCut v1.8.0 — Workflow Engine, Job Persistence, i18n, Docker

New Features

Workflow Engine

  • Chain multi-step processing into reusable workflows (e.g., silence removal → captions → export)
  • 6 built-in presets: Clean Interview, Podcast Polish, Social Clip, YouTube Upload, Documentary Rough, Studio Audio
  • Save/delete custom workflows; inter-step cancellation support

SQLite Job Persistence

  • Jobs survive server restarts — history stored in ~/.opencut/jobs.db (WAL mode)
  • Interrupted job recovery on startup with user notification
  • Job stats and paginated history endpoint

Structured Error Taxonomy

  • Every error now returns {error, code, suggestion} JSON
  • 13 factory constructors (missing_dependency, gpu_out_of_memory, rate_limited, etc.)
  • safe_error() auto-classifies Python exceptions into structured responses
  • Frontend showAlert() reads suggestion field for actionable recovery hints

Frontend Overhaul

  • Keyboard shortcuts with configurable bindings and reference card
  • Quick action buttons on Cut, Captions, Audio, and Video tabs (one-click workflows)
  • Cut review panel — preview and approve/reject cuts before applying
  • Status bar with live system health, GPU usage, and job count
  • i18n system with English locale (data-i18n attributes, t() function)
  • Project templates: 6 built-in (YouTube, Shorts, TikTok/Reels, Podcast, Cinema, Broadcast)
  • Preset export/import for sharing settings as JSON files
  • Lazy tab rendering for faster panel startup
  • Toast reflow and enhanced error display

10 Themes

  • 4 new light themes: Snowlight, Latte, Solarized, Paper
  • Light-theme overrides for ~40 components including scrollbar, hover states, toasts
  • Total: 6 dark + 4 light themes

Responsive Design

  • 4 breakpoints (800px, 480px, 440px, 380px) for compact panel sizes
  • Complete interactive states for all button variants
  • Focus-visible rings on 15 interactive elements
  • 4px spacing rhythm enforced throughout

Docker Support

  • Multi-stage Dockerfile (Python 3.12 + FFmpeg + optional deps)
  • docker-compose.yml with GPU variant and named volume for ~/.opencut
  • .dockerignore for minimal build context

Backend Infrastructure

  • Job-ID log correlation — every log line tagged with [job_id]
  • /logs/tail endpoint for filtered real-time log viewing
  • /templates/list, /templates/save, /templates/apply endpoints
  • Vite build pipeline config for future bundling
  • TypeScript config for incremental migration

Bug Fixes & Improvements

  • Audio route refactored for cleaner error handling
  • Security module expanded with additional validation
  • ~/.opencut/packages now inserted at priority position in sys.path
  • Enhanced job system with thread-local job_id and safe_error delegation

Install

Download OpenCut-Setup-1.8.0.exe below — it handles everything (server, FFmpeg, CEP extension, registry keys, desktop shortcut). No Python or FFmpeg required.

Or from source:

git clone https://github.com/SysAdminDoc/OpenCut.git
cd OpenCut
pip install -e ".[all]"
python -m opencut.server

OpenCut v1.7.2

Choose a tag to compare

@SysAdminDoc SysAdminDoc released this 25 Mar 05:09

Improvements

Pip Install Permission Fallbacks

  • safe_pip_install() now has a 3-tier fallback: normal → --user--target ~/.opencut/packages
  • Whisper install and reinstall routes use the same permission fallback chain
  • --prefer-binary flag added to all pip installs (avoids needing Rust/C compilers)
  • Actionable error messages when Rust compilation fails (links to rustup.rs)
  • ~/.opencut/packages added to sys.path at server startup for --target installs

UI Polish

  • Toast notifications — Repositioned to bottom-center with upward stacking (no more overlapping)
  • Panel default size — Increased to 900x800 (from 520x700), min width 480px (from 400px)

Full changelog: v1.7.1...v1.7.2

OpenCut v1.7.1

Choose a tag to compare

@SysAdminDoc SysAdminDoc released this 25 Mar 03:46

Bug Fixes (Batch 35)

  • Color match completely brokenrun_ffmpeg() returns str but code accessed .returncode/.stderr (CompletedProcess attributes). Fixed return value handling.
  • Auto-edit XML destroyed before usefinally: shutil.rmtree(temp_dir) deleted the XML result before the caller could access it. Now copies to persistent temp dir first.
  • ExtendScript marker iteration unreliable — Switched seqMarkers[i] indexed access to getFirstMarker()/getNextMarker() iterator pattern (reliable across Premiere versions).
  • Silence speed-up slider always invisible — CSS hidden class couldn't be overridden by style.display="". Fixed with classList.toggle().
  • Translate Pipeline workflow never translated — Only transcribed. Added explicit /captions/translate step.
  • Social Ready workflow missing captions — Added /captions/burn-in step to match UI description.
  • Styled captions checkboxes deadword_highlight and auto_emoji values never sent in API payload.
  • Workflow denoise method mismatch — Hardcoded rnnoise but UI only offers afftdn. Fixed.
  • Cancel/complete race condition — SSE could fire "complete" after cancel, causing unwanted auto-import.
  • NLP auto-execute stale clipselectedPath captured at callback time, not command time. Fixed with snapshot.
  • Timeline cuts NaN sort corruption — String/null cut times produced NaN in sort comparator, corrupting clip deletion order.
  • Export range persistent side effectsetInPoint/setOutPoint persisted after export, constraining future playback.
  • Caption track inflated count — Returned original array length instead of actual written segments.
  • Export video no progress — Missing -progress pipe:1 flag meant progress bar stuck at 20%.
  • Export video no timeout — Hung FFmpeg blocked thread forever. Added scaled timeout with kill.
  • Export video partial file leak — Failed FFmpeg left corrupt output files on disk.
  • 10 duplicate HTML class attributes — Second class= silently ignored by parser, losing spacing utilities.

Full changelog: v1.7.0...v1.7.1

OpenCut v1.7.0

Choose a tag to compare

@SysAdminDoc SysAdminDoc released this 25 Mar 01:16

UI/UX Polish, Accessibility & Design System Overhaul

CEP Panel

  • Friendlier error messages and alerts throughout
  • ARIA accessibility attributes on interactive elements
  • SVG icons replacing emoji for cross-platform consistency
  • Card descriptions added to each tool panel for discoverability
  • Clearer labels: "Keep Padding", "Custom Fillers", "Fast/Precise" trim modes
  • Enhanced error hints for timeouts, connection failures, and missing deps

CSS Design System

  • 4px spacing rhythm with new --sp-2xl token
  • Layered shadow tokens (--shadow-sm through --shadow-xl, --shadow-inner, glow variants)
  • New --neon-yellow and --neon-pink accent variables
  • Improved font stacks with Segoe UI / Cascadia Code fallbacks
  • Tighter border radii for a more refined look

UXP & ExtendScript

  • UXP style updates for visual consistency
  • ExtendScript host improvements

Full Changelog: v1.6.0...v1.7.0

OpenCut v1.6.0 — Architecture Overhaul

Choose a tag to compare

@SysAdminDoc SysAdminDoc released this 24 Mar 21:12

v1.6.0 — Architecture Overhaul

Major infrastructure improvements across 3 phases.

New Modules

  • opencut/schemas.py — 15 dataclass response schemas (JobResponse, SilenceResult, LoudnessMatchResult, ColorMatchResult, etc.) with to_dict() serialization. Prevents the field-name mismatch bug class that caused ~40 bugs in v1.5.x.
  • opencut/gpu.pyGPUContext context manager for automatic VRAM cleanup. register() tracks models, __exit__ does del + torch.cuda.empty_cache(). Replaces 46 scattered try/finally patterns across 12 core modules.
  • opencut/workers.pyWorkerPool (ThreadPoolExecutor-based) with JobPriority levels. Replaces raw thread spawning in async_job decorator. Bounded concurrency, Future tracking, clean shutdown via atexit.
  • opencut/openapi.py — Auto-generated OpenAPI 3.0 spec from Flask routes + schema dataclasses. GET /openapi.json serves the live spec.

Security

  • CSRF token rotation — 1-hour TTL, rotating pool of 10 tokens, grace window for in-flight requests. Replaces static token that was valid forever. Constant-time comparison via hmac.compare_digest.

Performance

  • FFmpeg path cachingget_ffmpeg_path() / get_ffprobe_path() do shutil.which() once and cache. Pre-warmed on server startup.
  • Premiere state caching — CEP+UXP panels cache sequence info and project items with 8s TTL, invalidated on tab switch. Eliminates redundant ExtendScript evalScript() round-trips.

Auto-Update

  • GET /system/update-check — Compares current version against latest GitHub release. 1-hour cache, 5s timeout, fails silently offline. CEP+UXP show toast when update available.

Testing

  • 25 new integration tests — Flask test client tests covering /health, /openapi.json, CSRF protection, search validation, deliverables, NLP, settings masking, timeline validation
  • 128 total tests (103 unit + 25 integration), all passing

Dev Tooling

  • Version sync now covers UXPsync_version.py syncs 18 targets (was 15), no more manual UXP version updates
  • CI runs testspytest step added to GitHub Actions workflow before PyInstaller build

Downloads

  • OpenCut-Setup-1.6.0.exe — Windows installer (Inno Setup)
  • OpenCut-Server-v1.6.0-win-x64.zip — Portable standalone server

OpenCut v1.5.6 — Security + Stability Fixes

Choose a tag to compare

@SysAdminDoc SysAdminDoc released this 24 Mar 20:20

Batch 34: UNC path blocking in validate_path (SSRF/NTLM prevention), stuck job auto-expiry (2hr timeout), zombie process reaping, async_job thread tracking, registry path sanitization, ExtendScript projectItem reset safety.

OpenCut v1.5.5 — Last 3 Broken Features Fixed

Choose a tag to compare

@SysAdminDoc SysAdminDoc released this 24 Mar 20:08

Batch 33: Multicam auto-transcribe from filepath, full report sequential deliverables, folder indexing support. See commit log for details.

OpenCut v1.5.4 — E2E Verification Fixes

Choose a tag to compare

@SysAdminDoc SysAdminDoc released this 24 Mar 19:50

v1.5.4 — Batch 32: End-to-End Verification Fixes (16 bugs)

Full chain verification of every v1.5.0 feature (CEP JS → route → core → result → JS handler) found 16 remaining integration bugs after 4 previous audit rounds.

Routes

  • export-from-markers: accept filepath fallback for input_file param
  • smart-bins: accept both binName/bin_name and rule/rule_type conventions

CEP Panel

  • repeat-detect: result handler read r.cuts but route returns r.repeats
  • chapters: sent llm_api_key but route reads api_key — OpenAI/Anthropic silently broken
  • export-from-markers: result read r.exported but route returns r.count
  • CSRF in fetch(): 4 raw fetch() calls used wrong header X-CSRF-Token — settings saves were 403 failures

UXP Panel

  • color-match/auto-zoom/denoise: result handlers read result.output_path but routes return result.output
  • chapters: displayed c.start (undefined) instead of c.seconds for timecodes
  • batch-rename/smart-bins/export-from-markers: sent wrong param schemas
  • deliverables: empty {} was falsy in Python, causing 400 errors

Downloads

  • OpenCut-Setup-1.5.4.exe — Windows installer (Inno Setup)
  • OpenCut-Server-v1.5.4-win-x64.zip — Portable standalone server

OpenCut v1.5.3 — Full Frontend Endpoint Audit

Choose a tag to compare

@SysAdminDoc SysAdminDoc released this 24 Mar 16:25

v1.5.3 — Batch 31: 25 Broken Frontend Features Fixed

UXP Panel — Every Feature Was Broken (18 P0 Fixes)

Every single UXP feature handler posted to wrong API endpoints (missing Blueprint prefixes like /audio/, /video/, /captions/, /timeline/) and sent wrong parameter names. All 18 handlers fixed:

  • Silence removal, filler detection, transcription
  • Chapter generation, repeat detection
  • Denoise, normalize, loudness match, beat markers
  • Color match, auto zoom, multicam cuts
  • Batch export, batch rename, smart bins, SRT import
  • Footage search, NLP command, library indexing
  • Deliverables (4 types)

CEP Panel — 5 Data Format Mismatches

  • Beat markers and chapter markers sent wrapper objects ({times: [...]}) but ExtendScript expects marker arrays ([{time, name, type}])
  • Batch rename sent {id, old_name, new_name} but ExtendScript reads {nodeId, newName}
  • Smart bins sent {bin_name, rule_type} but ExtendScript reads {binName, rule}
  • Deliverables result read data.output_path but API returns data.output

ExtendScript

  • ocExportSequenceRange now aborts on setInPoint/setOutPoint failure instead of silently exporting the wrong range

OpenCut v1.5.2 — 7 Broken Features Fixed + Callback Crashes

Choose a tag to compare

@SysAdminDoc SysAdminDoc released this 24 Mar 15:25

v1.5.2 — Batch 30: Integration Bug Fixes

7 CEP Panel Features Were Completely Non-Functional

Parameter name mismatches between frontend (main.js) and backend routes meant these features always returned 400 errors or silently failed:

Feature Frontend sent Backend expected Fix
Beat Markers filepath file Route accepts both
Repeat Detection filepath file Route accepts both
Chapter Generation filepath file Route accepts both
NLP Command filepath file Route accepts both
Loudness Match filepaths files Frontend fixed
Search Index filepaths files Frontend fixed
Footage Search max_results top_k Frontend fixed

Additionally, the loudness match results table read r.clips but the API returns outputs -- table never rendered.

on_progress Callback Crash (All 48 Route Callbacks)

Core modules (color_match, auto_zoom, loudness_match) call on_progress(int) with 1 argument, but all route callbacks were defined as _on_progress(pct, msg) requiring 2 arguments. This caused TypeError crashes on every job that used progress callbacks from new core modules.

Fixed by adding default msg="" parameter to all 48 callback definitions across video.py, audio.py, and captions.py.

Queue Allowlist

9 new v1.5.0 routes were missing from _ALLOWED_QUEUE_ENDPOINTS -- queue operations for these features silently failed.

Command Palette

  • "Color Match" pointed to non-existent tl-colormatch sub-tab (fixed to vid-color)
  • "Auto Zoom" pointed to non-existent tl-autozoom sub-tab (fixed to vid-effects)

Dependencies Dashboard

  • Added multicam to /system/dependencies response (was missing)