Skip to content

Releases: SysAdminDoc/OpenCut

OpenCut v1.9.15

27 Mar 23:41

Choose a tag to compare

OpenCut v1.9.15

Highlights (v1.9.4 → v1.9.15)

Security & Stability

  • 80+ bugs fixed across 12 patch releases
  • 4 security vulnerabilities patched (path traversal, symlink escape, model injection)
  • 23 crash bugs fixed (callback TypeError, CLI import errors, encoding failures)
  • 58 bare ffmpeg/ffprobe subprocess calls resolved for bundled install compatibility
  • 14 text file open() calls fixed with encoding="utf-8" for Windows compatibility

New Features

  • Priority WorkerPool — critical jobs leapfrog background work when workers busy
  • 23 MCP tools (up from 18) — denoise, upscale, scene detect, depth map, shorts pipeline
  • 22 response schemas (up from 13) with OpenAPI coverage for 15+ more endpoints
  • 4 new UXP video features — Upscale, Scene Detection, Style Transfer, Shorts Pipeline
  • 16 CLI commands (up from 14) — denoise and scene-detect added, 4 broken commands fixed
  • Docker GPU profile via docker compose --profile gpu up

Quality

  • Comprehensive audit across all routes, core modules, frontend, and infrastructure
  • 0 lint warnings, all 18 version targets synced
  • 254 routes, 23 MCP tools, 23 schemas, 16 CLI commands verified
  • All tests passing

Install

Download OpenCut-Server-Windows.tar.gz, extract, and run OpenCut-Server.exe.
Or install via pip: pip install -e . then opencut-server.

OpenCut v1.9.3

27 Mar 05:24

Choose a tag to compare

What's New in v1.9.3

Refactored

  • Split video.py into 5 domain blueprints — Monolithic 3636-line video.py split into video_core.py (1395), video_editing.py (750), video_fx.py (687), video_specialty.py (489), video_ai.py (443). No file exceeds 1400 lines. All URL paths unchanged — zero breaking changes.
  • @async_job decorator adoption — All 97 manual _new_job() + threading.Thread + _update_job(status="complete") patterns across 6 route files converted to the @async_job decorator. Fixes a race condition where cancelled jobs could be overwritten to "complete". Removes ~2,800 lines of boilerplate. Decorator extended with filepath_required and filepath_param parameters.
  • App factory patternserver.py now exposes create_app(config) for isolated Flask instances. New opencut/config.py centralizes env var reads into OpenCutConfig dataclass. Tests use independent app instances.
  • Install route factorymake_install_route() in opencut/jobs.py replaces 6 identical install endpoint handlers (depth, emotion, multimodal-diarize, broll-generate, face, crisper-whisper) with a single factory call per route.
  • Version sync CI enforcementscripts/sync_version.py now includes package.json in targets and supports --check flag. Added to CI pipeline.

Also included (from v1.9.2 changelog)

  • JSON structured logging, CI coverage enforcement (50% threshold)
  • Structured error migration — zero bare 500 errors remain
  • Smart tab reordering by contextual relevance
  • 150+ new core module unit tests, ExtendScript mock harness
  • Pre-commit hooks (ruff lint/format + pytest smoke)
  • Security: replaced __import__() with importlib, GPUContext memory leak fix, XSS/injection fixes, timer leak fixes
  • Codebase at 0 lint warnings

Downloads

  • OpenCut-Setup-1.9.3.exe — Full self-extracting installer (355 MB) with server + FFmpeg + extensions
  • OpenCut-Server-v1.9.3-win64.zip — Standalone server distribution (227 MB)

OpenCut v1.9.2

27 Mar 01:36

Choose a tag to compare

What's New in v1.9.2

v1.9.0 — Core Features

  • Contextual Awareness — 35-feature relevance scoring based on clip metadata. Guidance banners and sub-tab highlights based on what you're editing
  • Plugin System — Discover, load, and manage plugins from ~/.opencut/plugins/. Ships with timecode-watermark and clip-notes example plugins
  • Multicam XML Export — Generate Premiere Pro-compatible FCP XML from multicam diarization cuts
  • SQLite FTS5 Footage Index — Persistent full-text search index replaces JSON index. Incremental re-indexing via mtime
  • NDJSON Response Streaming — Progressive delivery of large result sets (segments, scenes, thumbnails)
  • 13 Blueprints, 175+ endpoints — Context and Plugins blueprints added

v1.9.1 — Batch & Testing

  • Parallel Batch Processing — ThreadPoolExecutor with GPU/CPU worker isolation, partial failure handling
  • Clip Notes Plugin — SQLite-backed per-clip notes with text/CSV export
  • 175+ Endpoint Smoke Tests — Full route coverage across all 13 blueprints

v1.9.2 — Quality & Security

  • JSON Structured Logging — File handler outputs JSON with timestamp, level, module, job_id
  • CI Coverage Enforcementpytest-cov with 50% threshold, PR/push triggers
  • Structured Error Migration — Zero bare {"error": str(e)} patterns remain. All API errors return {error, code, suggestion}
  • Smart Tab Reordering — Sub-tabs reorder by contextual relevance scores
  • 150+ New Core Module Tests — 28 previously untested modules now covered
  • ExtendScript Mock Harness — 38 JSX functions tested under Node.js (35 assertions)
  • Pre-commit Hooks — ruff lint/format + pytest smoke on pre-push

Security

  • Replaced all __import__() with importlib.import_module()
  • 96 routes hardened: TooManyJobsError → proper 429 responses
  • AI GPU rate limiting prevents concurrent OOM crashes
  • XSS fix in engine registry, ASS subtitle injection prevention
  • Reframe dimension DoS protection (16-7680px bounds)

Bug Fixes

  • GPUContext memory leak — __exit__ now calls .cpu() on models
  • batch_id collision risk reduced (8→16 hex chars)
  • 5 timer/interval leaks fixed (elapsed, mediaScan, poll, SSE parse)
  • 23 import sorting + 15 unused import + 4 unused variable fixes
  • Codebase at 0 lint warnings

Downloads

  • OpenCut-Server-v1.9.2-win64.zip — Standalone server (extract & run)
  • OpenCut-Setup.exe — WPF installer with optional dependency management

OpenCut v1.9.0

26 Mar 05:11

Choose a tag to compare

OpenCut v1.9.0 — AI Detection Upgrades, OTIO Export, Emotion Highlights

New Features

Silero VAD — Neural Silence Detection

  • AI-powered voice activity detection as an alternative to energy threshold
  • Three modes: energy (classic FFmpeg), vad (Silero neural), auto (tries VAD first, falls back to energy)
  • Far more accurate in noisy environments — uses a 1.8MB ONNX model, <1ms per 30ms chunk
  • Dropdown selector in the Silence Removal panel

CrisperWhisper — Verbatim Filler Detection

  • New filler detection backend using the nyrahealth/CrisperWhisper model
  • Transcribes speech verbatim, explicitly marking fillers as [UH] and [UM] with precise timestamps
  • Standard Whisper actively omits fillers — CrisperWhisper captures them all
  • Selectable via dropdown in the Filler Word Detection panel

Robust Video Matting (RVM)

  • New background removal backend with temporal consistency across frames
  • Uses a recurrent neural network that exploits temporal information — no flickering between frames
  • Two models: mobilenetv3 (fast) or resnet50 (higher quality)
  • Selectable alongside existing rembg backend in the Video AI panel

Florence-2 Auto Watermark Detection

  • New /video/auto-detect-watermark endpoint
  • Uses Florence-2 vision-language model to automatically locate watermark regions
  • Detects logos, text overlays, and watermarks with a natural language prompt
  • Edge-density fallback when Florence-2 is not installed

Emotion-Based Highlights

  • New emotion_highlights.py core module using deepface facial expression analysis
  • Builds an emotion curve over time, identifying peaks of emotional significance
  • New "Emotion Highlights (Face AI)" button in the Captions tab
  • Complements LLM-based highlight extraction with visual emotion signals

Engagement Scoring

  • Multi-signal highlight quality scoring: hook strength, emotional peak, pacing, quotability
  • Blended with LLM scores (60% LLM, 40% engagement) for better highlight ranking
  • Engagement breakdown returned in shorts pipeline and highlight extraction responses

OpenTimelineIO Export

  • New /timeline/export-otio endpoint with three modes: cuts, segments, markers
  • Universal timeline interchange format supported by DaVinci Resolve, Avid, FCP, and more
  • Export silence/filler cuts as an OTIO file importable into any compatible NLE

Improved Thumbnail Scoring

  • Composition balance analysis via edge density in quadrants
  • Center interest bonus for well-framed subjects
  • Motion blur penalty using gradient variance detection

Frontend & UXP Improvements

  • Detection method dropdown for silence removal (energy / VAD / auto)
  • Filler backend selector (Whisper / CrisperWhisper)
  • Background removal backend selector (rembg / RVM) with model list update
  • Project media scan debouncing prevents redundant API calls
  • Capability cache resets on disconnect so buttons re-evaluate on reconnect
  • Non-2xx HTTP responses properly surfaced as errors in API layer
  • UXP panel: AbortSignal.timeout() polyfill for older UXP runtimes
  • UXP panel: PProBridge.getProjectItems() for project media browsing
  • ExtendScript: import verification polling (replaces single-check), indentation cleanup

Backend

  • 7 new dependency checks: silero_vad, crisper_whisper, sam2, propainter, otio, deepface, rvm
  • Capabilities reported in /health response (silero_vad, crisper_whisper, otio)
  • New docs: RESEARCH.md, ROADMAP.md (moved to docs/), UXP_MIGRATION.md

Install

Download OpenCut-Setup-1.9.0.exe below — 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.8.0

26 Mar 02:38

Choose a tag to compare

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

25 Mar 05:09

Choose a tag to compare

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

25 Mar 03:46

Choose a tag to compare

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

25 Mar 01:16

Choose a tag to compare

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

24 Mar 21:12

Choose a tag to compare

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

24 Mar 20:20

Choose a tag to compare

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.