Skip to content

Releases: 1mrnewton/cutlass

alpha-0.7.0

Choose a tag to compare

@github-actions github-actions released this 22 Jul 21:18
22437e2

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

Choose a tag to compare

@github-actions github-actions released this 19 Jul 17:35
3029921

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 .cube LUTs. 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

Choose a tag to compare

@github-actions github-actions released this 16 Jul 23:49
bf8fac9

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 .cube LUT 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 .cutlass into
    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

Choose a tag to compare

@github-actions github-actions released this 21 Jun 11:15

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.

alpha-0.5.2

Choose a tag to compare

@github-actions github-actions released this 21 Jun 10:24

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

Choose a tag to compare

@github-actions github-actions released this 21 Jun 06:53

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

Choose a tag to compare

@1mrnewton 1mrnewton released this 20 Jun 10:13

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.volume is 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_at evaluates 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. volume joins 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 a set_clip_pitch command, 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. The duck flow 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 duck agent 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 undoable SetClipDenoise command and a set_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. A detect_beats agent 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 endpoints

Known 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 packages cutlass-ui.exe + the bundled FFmpeg DLLs + licenses
    into a single Setup.exe (Program Files install, Start-menu shortcut,
    uninstaller, optional desktop icon); the portable .zip still 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_NCCALCSIZE reclaims the
    caption strip, WM_NCHITTEST re-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...
Read more