Releases: 1mrnewton/cutlass
Release list
alpha-0.7.0
Changelog
Notes for the latest release. For previous releases, see the
GitHub releases page.
alpha-0.7.0 — 2026-07-22
Added
-
Blend modes. Every visual clip has a blend mode dropdown (multiply,
screen, overlay, darken, lighten, and friends) composited on the GPU. -
Layer styles. Drop shadow, glow, outline, and background plate on any
visual clip — video, text, shapes, stickers. Every style property is
animatable, with live preview while dragging sliders. -
Keyframe graph editor. A drawer under the timeline plots parameter
curves; drag keyframes, insert and delete them, and shape segment easing
with bezier handles. -
Motion paths. Position keyframes take spatial bezier tangents, so
clips travel curves instead of straight lines. The path draws on the
preview canvas with draggable points and tangent handles. -
Motion blur. Per-clip motion blur supersamples animated transforms
in the compositor. -
Per-character text animation. Character-cascade presets rendered
through a new GPU glyph atlas with an instanced text pipeline, plus
speed / intensity / stagger knobs on all animation presets. -
Mask and chroma key inspectors. Clip masks gained animatable geometry
(position, size, rotation, roundness); mask and chroma sections are now
editable in the clip inspector. -
Six new color adjust sliders. Tint, hue, highlights, shadows,
sharpness, and vignette, alongside the existing grade controls. -
Animatable crop. Crop rectangles interpolate between keyframes.
-
Per-axis scale. Scale X and Y independently from the transform
inspector (old uniform-scale projects load unchanged). -
Audio pan. Animatable constant-power pan in the shared preview /
export mixer. -
More easing. Hold (step) easing, plus named presets: snappy,
overshoot, anticipate, bounce, elastic, and back. -
Typed effect parameters. Effects can take color and vec2 parameters
(not just scalars), with new duotone and color-overlay effect passes.
Changed
-
Almost everything is keyframable. Text style metrics, filter / LUT /
adjust intensities, mask and chroma settings, and layer styles all route
through the same keyframe system, with keyframe controls in every
inspector row and full coverage on the AI wire. -
AI setup is provider-based. Configure any OpenAI-compatible provider
(key, base URL, model) in settings; the old cloud account flow is gone. -
Text backgrounds animate. The text background card (color, padding,
radius, opacity) is animatable and rendered in preview and export.
alpha-0.6.1
Changelog
Notes for the latest release. For previous releases, see the
GitHub releases page.
alpha-0.6.1 — 2026-07-19
Added
-
Text stroke, background, and shadow. Title and caption clips render
outline, fill plate, and drop shadow in preview and export, with live
inspector sliders for the effect metrics. -
Text layout controls. Wrap, letter tracking, font weight, and canvas
alignment are honored when resolving and compositing text layers. -
Custom
.cubeLUTs. Browse and apply your own LUT files from the look
inspector, alongside the bundled starter pack. -
Desktop icon set. Lucide/Tabler icons wired across the editor chrome,
plus a generated SVG set for timeline and toolbar actions (add, select,
undo/redo, split, delete, marker, crop, reverse, transcript, AI tools,
audio enhance, and related placeholders).
Changed
-
Timeline playhead auto-scroll. The timeline keeps the playhead in view
while playing. -
Editor shell polish. Pane clamping, lighter panel headers, inspector
tab type, and scroll views that no longer steal drag gestures from
controls. -
Preview text transforms. Text stays visible while transforming on the
canvas. -
Slint 1.17 and wgpu 29. Desktop and compositor dependency bump.
alpha-0.6.0
Changelog
Notes for the latest release. For previous releases, see the
GitHub releases page.
alpha-0.6.0 — 2026-07-16
Added
-
AI editing agent. Describe edits in natural language and Cutlass applies
them as structured, undo-friendly timeline commands. The agent can inspect
footage, build timelines from an empty project, import approved media,
duplicate clips, reorder effect chains, and run managed background jobs.
Conversations are stored per project with chat switching and history
controls; OpenAI Responses transport streams reasoning summaries into the
transcript. Configure the provider (including Responses) under Settings. -
Windows support. Native Media Foundation decode and encode — hardware-
accelerated H.264/AAC round-trips, GPU frame import into the compositor, and
a full Windows desktop build path alongside macOS. -
Mobile apps. An iOS/macOS SwiftUI editor (timeline, preview, media
picker, export) backed by the shared engine, plus an Android native/JNI
foundation with on-device engine smoke tests. The Compose editor UI remains
a follow-up. -
Python bindings (
cutlass-py). A MoviePy-style track-first API over the
engine — import media, edit tracks/clips, sample frames, and export — on
PyPI as a pre-release (pip install --pre cutlass-py). -
CapCut-style timeline lanes. A permanent main video track with lane-zone
rules (audio → main → overlays → text), move/rename track actions, pinned
lanes, and timeline UX parity for zoom, markers, and transitions. -
Stickers and look animations. Bundled sticker assets with animated
GIF/APNG/WebP playback, Lottie stickers from the Library, and catalog
entrance/exit/combo animations sampled at resolve time — with an animation
inspector on desktop. -
Color grades, filters, masks, effects, and transitions. Per-clip filter
presets and manual adjustments, masks and chroma key, clip effect/transition
chains, and lane-level effect/filter/adjustment passes — shared between
preview and export. -
3D LUTs. Apply
.cubeLUT grades from the look inspector, with a
starter pack included; preview and export share the same compositor path. -
Export audio DSP. Varispeed resampling for retimed clips and RNNoise
denoise on flagged clips during export. -
Preview proxies and smoother scrubbing. CapCut-style background H.264
proxies for interactive preview, plus adaptive seek windows, frame caching,
and speculative next-tick render so scrubbing stays responsive. Full-
quality decode still runs for export. -
Cloud accounts and Library catalogs. Sign in via Settings → Account
(device authorization against cutlass.sh). Browse stock media, stickers,
SFX, text presets, and templates; AI image/video/TTS generation surfaces
with BYOK-or-managed routing. Drop files from the OS onto the timeline. -
Extract audio. Pull a video clip's embedded audio onto a linked audio-
lane companion — undoable like any other edit. -
Freeze frames and clip tools. Insert atomic freeze frames; duplicate
complete clips, unlink linked groups, and clear beats with reversible
engine actions. -
Media analysis and transcription. Deterministic shot/moment indexing
with on-disk cache, Whisper-based transcription (cancellable model install),
and Settings controls for analysis and AI model cache locations.
Changed
- App-owned projects with continuous auto-save (CapCut-style). Cutlass now
owns every project: each one auto-saves on every edit, so there's no manual
save and a clean exit never loses work. The launch screen is a project
gallery — reopen or delete past projects — and the title bar renames the
current project inline. Open file… imports an external.cutlassinto
your projects; Export renders an.mp4.
Removed
- Manual Save As, Open Recent, and the unsaved-changes / crash-recovery
prompts — there's nothing to lose now that edits save continuously. - The General settings pane (the autosave on/off + interval controls):
auto-save is always on and needs no tuning.
alpha-0.5.3
Changelog
Notes for the latest release. For previous releases, see the
GitHub releases page.
alpha-0.5.3 — 2026-06-21
Added
-
Settings screen. A new in-app Settings dialog, reachable from the
title-bar gear (or the Cutlass menu on macOS), with four sections:- AI provider — set the assistant's endpoint, model, and API key (a
literal or read from an environment variable) without hand-editing a file,
with a one-click Test connection. - Appearance — switch between the Graphite, Ember, and Dark blue themes,
applied instantly. - General — turn autosave on or off and set how often it runs.
- Cache — see the frame cache location and on-disk size, reveal it in
your file browser, and set the disk budget.
Settings are saved to
~/.cutlass/config.toml, preserving any comments and
hand-edits already in the file. - AI provider — set the assistant's endpoint, model, and API key (a
alpha-0.5.2
Changelog
Notes for the latest release. For previous releases, see the
GitHub releases page.
alpha-0.5.2 — 2026-06-21
Fixed
- Huge memory leak when importing video. Every demux pass leaked the packets
it read, so opening a clip leaked hundreds of MB to several GB that was never
reclaimed — even after deleting the clip and its media. A single long,
high-bitrate source could push RAM past 4 GB. All decode paths (video, audio,
keyframe and MP3 indexing) now free packets as they go. - Bounded preview decoder memory. Per-clip decoders are released as soon as a
clip leaves the timeline (delete, split, trim, undo) instead of living until
the project is swapped, with an LRU cap as a backstop. Software decode now also
sizes its worker threads to the frame, so a high-resolution source no longer
scales RAM with CPU core count (e.g. ~680 MB → ~245 MB for a 3200×2400 clip on
an 18-core machine). - Windows: the AI assistant config is found again. Its path now resolves from
the user's home directory.
alpha-0.5.1
Changelog
Notes for the latest release. For previous releases, see the
GitHub releases page.
alpha-0.5.1 — 2026-06-21
Fixed
- Windows: no longer crashes on launch / needs admin. Cache, autosave, and
recent projects now live in the per-user OS directories (%LOCALAPPDATA%/
%APPDATA%) instead of the read-only install folder. Fixes the same latent
path bug on macOS/Linux too (data moves to the standard OS locations).
alpha-0.5.0
Changelog
[Unreleased]
[alpha-0.5.0] — 2026-06-20
The audio alpha (M8): sound that doesn't need a DAW round-trip. Clip
volume becomes a keyframable envelope, fades are corner handles, retimed
clips finally play (pitch-corrected) — including speed ramps — music ducks
itself under narration, clips can be denoised and beat-detected, the
playhead chirps while you scrub, and MP3 seeks land sample-close. Preview
and export agree on every one, and each edit is a single undo.
Volume envelopes (M8 Phase 1)
- Clip volume is now a keyframable envelope.
Clip.volumeis a
Param<f32>(the M2 keyframe type), so the gain can ride eased keyframes
across a clip, not just sit at a constant. Backward-compatible on disk: a
constant still serializes as the bare value ("volume": 0.8,
byte-identical to pre-M8 saves) and only an animated clip writes the
{"kf":[...]}form — old projects load unchanged. - Both mixers sample the envelope per sample-frame. A shared
audio_gain_atevaluates the envelope and multiplies the fades on top;
each mixer rebases the clip-relative tick keyframes into sample frames
once per span so the hot per-sample lookup stays an O(log k) compare. The
unity fast path (constant 1.0, no fades) still skips the gain loop. - Inspector + on-clip UI. A keyframe diamond on the Volume row reads the
gain at the playhead and adds/removes a point; the slider sculpts the
keyframe on an animated clip or sets the flat level on a constant one. The
gain curve is drawn over the waveform with a dot per keyframe, and a
timeline envelope chip marks an animated clip. - Agent vocabulary.
volumejoins the agent's keyframe tools so a
prompt like "fade the music down under the voice" writes a real envelope.
Fades as corner handles (M8 Phase 2)
- Fades preserve automation.
set_clip_audio's volume is now optional:
setting a flat level flattens the envelope (the basic slider), while a
fade-only edit keeps the gain (constant or keyframed) and just moves the
ramps — so "fade the music out" past a keyframed clip no longer wipes it. - Drag the corners. Grab the top corners of a selected audio clip to set
fade-in (left) / fade-out (right) — a darkening triangle with a grab dot
per ramp, committed as one envelope-preserving edit on release.
Varispeed audio (M8 Phase 3)
- Retimed clips play again. Both mixers drop the "audio mutes while
retimed" rule and render speed ≠ 1× and reversed clips through an offline
per-span time-stretch (signalsmith-stretch, MIT) that is computed once,
cached, and served 1:1 — so preview and export use identical samples and
reverse is a buffered flip. - Pitch lock.
Clip.preserve_pitch(serde-default true) drives the
transpose: pitch-corrected stretch by default, pitch-follows-speed
("chipmunk") when off, via aset_clip_pitchcommand, a "Keep pitch"
switch in the Speed inspector (flips the whole A/V link group), and an
agent tool. - Speed ramps too. A time-varying render warps the audio along the same
normalized curve the picture uses, so velocity ramps stay in sync and
preview matches export.
Audio ducking (M8 Phase 4)
- Auto-lower music under speech. A sidechain analysis band-passes the
voice (300–3400 Hz), follows its RMS, and turns it into a
threshold/attack/release gain-reduction curve, thinned to the few points a
volume envelope needs. Theduckflow writes the result as ordinary
volume keyframes on each music clip — dipped onto the clip's own level,
not overwritten — so the ducking is inspectable and editable after the
fact, and both mixers duck identically with no extra plumbing. One undo. - Two ways in. A
duckagent tool ("duck the music under the
narration"), and a CapCut-style UI: tag a lane as the voice with a "V"
toggle in the track header, then hit "Duck under voice" in a music
clip's audio inspector.
Noise reduction (M8 Phase 5)
- One-click denoise. A "Reduce noise" toggle runs a clip's audio through
RNNoise (nnnoiseless, a pure-Rust port — no C binding, no model file to
ship) to suppress steady background noise (hiss, hum, room tone) while
keeping speech. Like varispeed it's an offline per-span render, computed
once and cached, so preview and export are bit-identical; denoise also
stacks on top of a retimed clip's stretched audio. - Model + agent.
Clip.denoise(media clips only, absent from saves
when off) with an undoableSetClipDenoisecommand and aset_denoise
agent tool that steers a video-lane target to its linked audio companion.
Beat detection & snap (M8 Phase 6)
- Find the beats. A local spectral-flux onset detector marks the beats
on an audio clip; "Detect beats" / "Re-detect" / "Clear" live in the
audio inspector and the markers draw as ticks along the clip's bottom edge.
Beats are stored in source ticks, so they ride the content through trims
and splits. - Snap to them. The timeline magnet snaps clip edges onto a clip's beat
ticks, alongside the existing edge / playhead candidates — the substrate
for agent and M9 beat-sync. Adetect_beatsagent tool drives it from a
prompt.
Smaller audio wins
- Audio scrub bursts (M8 Phase 7). Dragging the playhead while paused
now chirps a short (~85 ms) audio burst from the scrubbed position, so you
can hear where you are. The burst never advances the transport — the drag
drives the playhead, not the clock — and the newest position always wins. - MP3 frame-exact seek (M8 Phase 8). A lazily-built, byte-exact MP3 seek
index re-anchors each mid-stream seek from the true frame offset instead of
FFmpeg's estimated PTS, killing the tens-of-ms MP3 seek error noted in the
previous alpha. MP4/AAC was already sample-accurate.
Embedded video audio
- Video clips keep their soundtrack. Like CapCut, a video clip on a video
lane carries its own audio — no forced split onto a separate audio track.
Export mixes embedded video-lane audio; volume, fades, and denoise edits
route to the clip that actually carries sound, and the agent vocabulary
(tool schema v19) steers the same way. - Waveform on video. Clips with embedded audio draw a waveform band along
the bottom edge of the clip body.
Media pipeline
- Non-standard YUV inputs. Sources tagged
yuvj420p(and other
non-standard pixel layouts FFmpeg reports) decode and composite correctly
instead of washing out or mis-ranging. - Full-range YUV on GPU. A dedicated full-range YUV path in the
compositor keeps JPEG-style full-swing sources from looking crushed next to
limited-range media.
Fixed
- Export with stacked same-source clips. Overlapping clips pointing at the
same media no longer re-decode every frame from scratch (#10). - Headless export without CUDA. When NVENC is listed but CUDA is absent
(typical Linux CI), encoder open now falls through to libx264 instead of
failing with "Operation not permitted".
Downloads
| Platform | Artifact |
|---|---|
| Windows (x64 / arm64) | Cutlass-*-windows-*-Setup.exe — run the installer; or the portable Cutlass-*-windows-*.zip |
| macOS (Apple Silicon / Intel) | Cutlass-*-macos-arm64.zip / Cutlass-*-macos-x86_64.zip — unzip, drag Cutlass.app to Applications. First launch: right-click → Open (not notarized). See INSTALL-macos.txt. |
| Linux (x86_64) | Cutlass-*-linux-x86_64.tar.gz — extract and run ./cutlass-ui; requires FFmpeg |
Using the AI agent
The agent needs an LLM endpoint — none is bundled. Point
~/.cutlass/config.toml at any OpenAI-compatible server, local or cloud:
[ai]
base_url = "http://localhost:11434/v1" # e.g. Ollama
model = "qwen2.5:14b"
# api_key = "sk-..." # for cloud endpointsKnown limitations
- Crop is numeric-only — no draggable crop-handles mode in the
preview yet. - Agent quality tracks the model you give it — small local models
may tool-call poorly; dry-run mode previews every plan before it
touches the timeline. - Alpha stability — crashes and UI polish gaps are expected; please
file issues.
[alpha-0.4.0] — 2026-06-15
The Windows & performance alpha: Windows joins macOS and Linux with
real double-click installers (both x64 and arm64), preview gets
dramatically faster on high-resolution footage, and the library learns
to delete media — referenced sources cascade their clips away in a
single undo.
Windows support
- Real installers, not just portable archives. A new Inno Setup
build packagescutlass-ui.exe+ the bundled FFmpeg DLLs + licenses
into a singleSetup.exe(Program Files install, Start-menu shortcut,
uninstaller, optional desktop icon); the portable.zipstill ships
alongside it. Both Windows and macOS now build native artifacts for
each architecture in CI — Windows x86_64 + arm64, macOS Apple Silicon- Intel.
- Native Windows window frame. The macOS custom-title-bar approach is
generalized to Windows: keep the OS-drawn frame (native resize, Aero
snap, drop shadow, rounded corners) and only suppress the caption so
the custom Slint title bar shows through (WM_NCCALCSIZEreclaims the
caption strip,WM_NCHITTESTre-adds the top resize band). Linux/BSD,
which have no "frame minus titlebar" mode, stay fully frameless. - Export fixed on stock Windows FFmpeg. LGPL FFmpeg builds ship no
libx264, so the old fallback could pick a hardware-surface-only encoder
(e.g.h264_d3d12va) that rejects the pipeline's software frames and
surfaced as "failed to open media". Encoder selection is now
format-aware: prefer software libx264/libopenh264, otherwise fall back
to a CPU-frame-capable hardware encoder (Media Foundation, then
NVENC/AMF/QSV) and feed it NV12 — a surface-only encoder is never handed
to the software pipeline.
Faster preview
- **Previ...