Releases: Domica/CapRust
Release list
CapRust 0.7.0-beta.1 - first beta
First beta of the 0.7 line. A UI polish pass (design tokens,
widget library, feedback states, start-screen redesign), a crash
handler, and a Windows installer.
Install
Windows 10 / 11, 64-bit.
- Download
CapRust-0.7.0-beta.1-win64-setup.exebelow. - Run the wizard. Per-user install by default (no UAC prompt);
pick "Install for all users" if you prefer Program Files. - Launch from the Start Menu.
On first run CapRust offers to download a static FFmpeg build
(~110 MB) if ffmpeg / ffprobe are not on your PATH.
Highlights
- UI polish - design tokens, widget library, loading spinner,
status banners, error toasts, and a redesigned start screen with
a sidebar, New Project modal, and a grid of recent projects with
cached thumbnails. - Crash handler - every uncaught panic writes a report with a
full backtrace to%APPDATA%\CapRust\crashes\. - Windows installer - single
.exewizard, per-user by default,
8 MB compressed download.
See CHANGELOG.md for the full list.
Requirements
- Windows 10 1809 or later (x64)
- ~150 MB free disk space, plus ~110 MB for FFmpeg and more for AI
models if you want auto-captions or narration.
Known issues
- Binary size is 22.3 MB (target was 20). Size optimization will
land in beta.2. - Auto-update check is manual (no silent background updater yet).
- Without code signing, Windows SmartScreen may show a warning;
click "More info" then "Run anyway".
Verify
SHA-256 of the installer is listed under the asset below.
SHA-256: 4DAC4238FC6FB5394B0B999068296D0821F2DF438B0F1B241985271A31CFE457
CapRust 0.6.0-alpha.1 — settings sync, fonts, captions effects
First alpha of the 0.6 line. Settings portability, user-selectable
fonts, and captions parity.
Added
- Settings export/import as JSON. File → Settings → Paths →
Backup. Export writes a versionedSettingsFileenvelope;
import reads it back. Missing fields are defaulted, a newer
format version is refused with a clear message. - Settings auto-sync via cloud folder. Point CapRust at a
folder that Google Drive, OneDrive, Dropbox, Box, iCloud Drive,
Syncthing, or Nextcloud keeps in sync. On every save a snapshot
is written to<folder>/caprust-settings.json. On startup, if
the folder holds a newer snapshot, a modal offers Load them /
Keep local. Transport is the cloud client's folder sync;
CapRust never talks to a cloud API. - User-selectable app font family + size. Settings →
Appearance → Font. Families: Default (egui), Segoe UI, Arial,
Consolas. Size 0.8–1.5× scales the entire UI via
pixels-per-point. No font files bundled; the system font is
read from%WINDIR%\Fonts. - Captions motion + procedural effects parity with text
overlays. Captions clips now carryTextMotion(X/Y/Scale)
andTextEffect(Blink/Pulse/ColorCycle), editable from the
clip properties panel. Same command, same Ctrl+Z semantics as
TextOverlay. - Issue templates for bug reports and feature requests.
- Drift logger. The periodic
preview stateINFO line now
includesaudio_msanddeltafor future sync regressions.
Changed
crates/mcp/Cargo.tomlusesversion.workspace = trueso a
release bump touches one place.
Fixed
- Captions drawtext now respects the clip's motion and effect
instead of hardcoding identity/none.
Known issues
- CLAP bypass toggle is not undoable. Bypass flips the field
in place; Ctrl+Z does not restore it. Remove and add are
undoable as usual. - CLAP scan paths are fixed. Two directories only
(C:\Program Files\Common Files\CLAP,
%APPDATA%\CapRust\plugins). Custom paths in Settings are a
follow-up. - Deferred audio start adds silence at the top of playback.
With a transition in the project, audio begins ~2–3 s after you
press Play, matching when the first frame arrives. Without a
transition the gap is ~370 ms. - Transition easing is stored but not rendered. The
EaseCurveon each clip is preserved in the project file, but
the pinned ffmpeg build (gyan.dev essentials 2026-01-26) does
not supportfade=curve=. Renders emit plain linear fades. - MCP is single-session. No live sync with a running GUI yet.
- No installer yet; download the nightly ZIP and extract it.
- FFmpeg is not bundled. First run offers to download a BtbN
build or to point at an existing install. - Windows only.
- Text overlay rotation is stored in the model but neither
rendered nor exposed in the UI. - YuNet face detection loads and runs but never fires
detections on real frames. SCRFD is the primary detector.
Requirements
- Windows 10/11 x86-64
- ~150 MB free disk (plus ~110 MB if FFmpeg auto-download runs)
- x86-64 CPU with SSE4.2 (baseline, no AVX-512)
- First-run internet access for FFmpeg (unless ffmpeg.exe is
already on PATH)-auto detected.
Tests
257 passing, 8 skipped (6 existing + 2 CLAP tests that require
ZebraHZ on a fixed path).
CapRust 0.5.0-alpha.1 — CLAP plugins, MCP server, xfade drift fix
Added
- CLAP plugin hosting. CapRust scans the two standard CLAP
folders (C:\Program Files\Common Files\CLAPand
%APPDATA%\CapRust\plugins) and lists every.clapbinary in a
new Plugins tab in the asset browser. The scan is feature-gated
behindclapso Linux CI without the CLAP SDK still builds.
Plugin binaries are untrusted code; every load is wrapped in
catch_unwind. - Master plugin chain.
ProjectState.master_plugins: Vec<PluginInstance>. A+on any plugin card adds it to the
chain. A new Master dock tab shows the active chain with
per-instance Bypass and Remove. All mutations go through the
undo stack (AddMasterPluginCommand,RemoveMasterPluginCommand,
SetPluginParamCommand).render_hashincludes the chain so any
change respawns the preview. - CLAP audio processing. The master chain runs on the PCM
reader thread, between the ffmpeg decode and the cpal ring
buffer. Interleaved stereo is deinterleaved to planar, processed
by each plugin in turn, then reinterleaved. Verified against
u-he ZebraHZ 2.9.4 on Windows: loads, activates, and processes
a test sine without NaN. - MCP server.
caprust-mcp.exeis a standalone binary crate.
Line-delimited JSON-RPC 2.0 on stdio; loads a.caprustproject
file and exposes read-only inspection plus mutating tools. 15
tools total:get_project_summary,list_tracks,list_clips,
list_media,add_media,add_clip_to_timeline,move_clip,
split_clip,set_transition,set_clip_volume,
set_clip_speed,set_clip_fade,undo,redo,
save_project. Every mutating tool goes throughUndoStack,
same as the UI. No tokio, no rmcp — 200-line hand-rolled
dispatch. AddMediaCommandin core (was missing for the MCP
add_mediatool to satisfy DIRECTIVES 6).docs/mcp.mdwith a Claude Desktop config template, tool
reference, and known limits.- Drift logger. The periodic
preview stateINFO line now
showsaudio_ms=Some(N) delta=Some(N)— sample-counter position
and the ms distance between playhead and audio. Handy for
future sync regressions.
Fixed
- Xfade audio drift in preview. The audio player started on
the Play click, but the playhead anchors only on the first
consumed video frame. A project without any transition delivered
that frame in ~370 ms, so audio and playhead stayed in step. A
project with an xfade or slide forces ffmpeg to decode both
clips from their beginning to build the blend; the first frame
arrived 2.2–2.4 s later. By then audio was already 2.2–2.4 s
ahead of the playhead, and every sync log showed the same fixed
delta (measured: 2285 ms fade, 2422 ms slide). Fix: audio is now
deferred until the first frame is consumed. Audio and playhead
both start from the same position, soaudio_baselineis near
zero regardless of transition complexity. SetTransitionCommandclamp. The model shifted followers
by the rawtransition_duration_ms; the render clamps to half
of the shorter clip. For a 3000 ms slide on a 4 s clip the model
shifted 3000 ms while the render shortened by 2000 ms, adding a
1000 ms gap after the transition. The model now uses the same
clamp as the render.commands.rsmodule ordering. Doc comment /pub modorder
was fragile; the module list is now always below the doc block.
Changed
crates/mcp/Cargo.tomlswitched from a hardcodedversion
toversion.workspace = true, so a release bump touches one
place.
Known issues
- CLAP bypass toggle is not undoable. Bypass flips the field
in place; Ctrl+Z does not restore it. Remove and add are
undoable as usual. - CLAP scan paths are fixed. Two directories only
(C:\Program Files\Common Files\CLAP,%APPDATA%\CapRust\plugins).
Custom paths in Settings are a follow-up. - Deferred audio start adds silence at the top of playback.
With a transition in the project, audio begins ~2–3 s after you
press Play, matching when the first frame arrives. Without a
transition the gap is ~370 ms. - Transition easing is stored but not rendered. The
EaseCurve
on each clip is preserved in the project file, but the pinned
ffmpeg build (gyan.dev essentials 2026-01-26) does not support
fade=curve=. Renders emit plain linear fades. - MCP is single-session. No live sync with a running GUI yet.
- No installer yet; download the nightly ZIP and extract it.
- FFmpeg is not bundled. First run offers to download a BtbN
build or to point at an existing install. - Windows only.
- Text overlay rotation is stored in the model but neither
rendered nor exposed in the UI. - YuNet face detection loads and runs but never fires
detections on real frames. SCRFD is the primary detector.
CapRust 0.4.0-alpha.2 — transitions, batch undo, UX polish
Second alpha of the 0.4 line. Transitions on the timeline, batch
undo, and UX polish.
Added
- Transition easing. Clips carry
transition_in_easingand
transition_out_easing(bothEaseCurve, default Linear). The
clip properties panel shows an Easing dropdown under any
transition that is present. The render currently emits plain
linear fades because the gyan.dev essentials build we test
against (2026-01-26) rejectsfade=curve=with "Option not
found". The field is stored and preserved for the day we pin a
newer ffmpeg. - Configurable transition duration. New
Clip.transition_duration_ms(default 500) with a 100..3000 ms
slider in the clip properties panel. Applies to both in and out
edges of a clip. - Xfade shifts followers. Attaching an xfade between two
adjacent clips on the same track now moves the follower clip and
every clip after it on that track left by the transition
duration. Removing the transition shifts them back. Changing the
duration shifts by the delta. All in one command so Ctrl+Z
restores the whole batch. Applied inSetTransitionCommandand
SetTransitionDurationCommand. - Timeline overlap shading. Clips that carry an xfade on their
in-edge show an accent-tinted slice with thin diagonal hatching
over the overlap region. The crossfade footprint is visible at a
glance. - Fade-out on the last clip of an xfade run. The earlier
clips' ends are consumed by the next clip's xfade, but the tail
of the run can now fade back to black when its clip has
transition_out == Some("fade"). - MacroCommand. Runs a list of commands as a single undoable
step, with rollback on mid-batch failure. Used by the media bin
batch drop so a 4-clip drop is one Ctrl+Z. - Ctrl+Z / Ctrl+Y / Ctrl+Shift+Z keyboard shortcuts for
undo/redo. Previously only reachable through the timeline
toolbar icons. - App icon embedded in the .exe via winres, runtime window
icon, README header logo. - Material-style egui_dock theme. Tab bar matches the panel
fill, 30px tall, active tab uses an accent wash. Close button
subtle, brightens on hover. - Brighter toasts. Accent border, top highlight line, and a
fill lift so notifications read as elevated.
Fixed
- Media bin multi-select and long-press drag. Ctrl+click
toggles membership, plain click replaces. Holding the primary
button for 500 ms on a card starts a drag; a shorter click only
selects. The X button on a multi-selection removes every
selected item at once. - Batch drag to timeline. Dropping a multi-selection chains
the clips left-to-right at the drop position and selects the
result so a follow-up move or delete acts on the whole batch. - Group move on the timeline. Ctrl+click or marquee selects
multiple clips; dragging one of them moves the entire group by
the same time and track delta in a single undoable step. - Captions and text overlays seek-shift correctly. Their
timeline_start_secnow follows the playhead seek, matching
video and audio. Previously a seek into the middle of a long
project left their enable windows on the original timeline. - Apostrophes in caption text no longer break the preview.
ASCII apostrophe and double quote substitute to U+2019 / U+201C
at render time; both are safe inside a filtergraph single-quoted
value. - Media bin X button clickable on hover. The enclosing drag
source claimed the pointer, so the button vanished mid-click.
Rewritten to use the raw pointer position for visibility and the
raw primary-click edge for the action. - Total render duration accounts for xfade shortening. A
3-second crossfade used to leave a 3-second black tail at the
end of the render because the base and audio bed were sized to
the unshortened sum. - Overlapping clip detection. Run grouping now accepts a
positive overlap equal to the transition duration, not just
butt-joined clips. - Dragging a clip that carries an xfade now removes the
transition with a toast, restoring every follower to its
original position. The user re-adds after the move.
Changed
SetTransitionCommandrewritten: the shift is applied to the
follower clip and every clip after it on the same track.Clipgainedapplied_xfade_shift_msto track the shift the
transition command applied.move_many::MoveManyCommandandmacro_command::MacroCommand
new core modules.VideoEncoderenum (H264/H265/AV1 x CPU/NVENC/AMF) added to
ExportSettingsin the previous alpha; unchanged here.
Known issues
- No installer yet; download the nightly ZIP and extract it.
- FFmpeg is not bundled. First run offers to download a BtbN build
or to point at an existing install. - Windows only.
- Transition easing stored but not rendered on the current ffmpeg
build. Needs a build withfade=curve=support. - Text overlay rotation is stored in the model but neither
rendered nor exposed in the UI. - Preview A/V sync has a residual 100-300 ms lead/lag on some
hardware. Tunable viaCAPRUST_AV_DELAY_MS.
CapRust 0.4.0-alpha.1 — editor interaction pass
Fourth public alpha. Editor interaction pass: media bin multi-select,
group drag on the timeline, and the caption pipeline.
Added
- Media bin multi-select. Ctrl+click toggles membership, plain
click replaces. Selected cards get a thicker accent border. The X
button on a card that belongs to a multi-item selection removes
every selected item at once, with Ctrl+Z restoring the clips that
referenced them. - Long-press drag from the media bin. Holding the primary button
on a card for 500 ms starts a drag; a shorter click only selects.
The card preview badge follows the cursor and shows how many items
are being dragged ("1 clip" / "N clips"). - Batch drag to the timeline. Dropping a multi-selection chains
the items left-to-right at the target drop position, using each
item's duration. The inserted clips come back selected, so a
follow-up move or delete acts on the whole batch. - Group move on the timeline. Ctrl+click or marquee selects
multiple clips; dragging one of them moves the entire group by the
same time and track delta in a single undoable step. Previously a
multi-select drag moved only the clip under the pointer.
Fixed
- Captions and text overlays rendered at the wrong time after a
seek. Video and audio already shifted their timeline_start_sec
by seek_sec and skipped clips before the seek. Captions and text
overlays did not, so a seek into the middle of a long project left
their enable windows on the original timeline. Same seek
arithmetic now applies to both arms. - Apostrophes in caption text broke the preview. Both
\\'and
the shell-style'\\''escape fail on the BtbN / gyan ffmpeg
builds; ffmpeg's filter option parser does not implement
close-reopen semantics. The first leaks the rest of the option
list as a new filter name (the classic 'No such filter: '
error), the second terminates the text value early and renders
fragments of the filtergraph on the frame. Fix: substitute ASCII
apostrophe and double quote with U+2019 / U+201C at render time;
these are not filtergraph special chars and never need escaping. - Media bin X button was unclickable on hover. The button was
only drawn when the card was hovered, but the enclosing
dnd_drag_source claimed the pointer the moment it entered the
card. egui's hover arbitration then reported the card as
not-hovered as soon as the pointer reached the X, so the button
vanished mid-click. Rewrote visibility and hit test against the
raw pointer position. - Every plain click in the media bin started a drag. egui's
dnd_drag_source uses the whole available UI rect as its interact
area, so inside a scrollable grid every click anywhere in the
panel started a drag on the last-registered card. Replaced with
per-cardallocate_exact_size+ manualDragAndDrop::set_payload.
Changed
last_dnd_payload,pending_dropand the timeline drop handler
now carryVec<Uuid>instead of a singleUuid.MediaBinStategainedselected_media: Vec<Uuid>.- New core module
commands::move_manywithMoveManyCommand.
Known issues
- No installer yet; download the nightly ZIP and extract it.
- FFmpeg is not bundled. First run offers to download a BtbN build
or to point at an existing install. - Windows only.
- A batch drop emits one
RippleInsertCommandper item; undo takes
N presses. A follow-up will collapse them into one command. - Text overlay rotation is stored in the model but neither rendered
nor exposed in the UI. - Preview A/V sync has a residual 100-300 ms lead/lag on some
hardware. Tunable viaCAPRUST_AV_DELAY_MS.
CapRust 0.3.0-alpha.1 — audio, seek, hardware encoders
Third public alpha. Audio pipeline rewritten, seek made usable, and
hardware encoders wired in.
Added
- Hardware-accelerated export (NVENC, AMF). The export dialog
probes the running ffmpeg build on first open and offers only the
encoders that actually open on this machine. CPU H.264/H.265/AV1
remain always available. HEVC and AV1 output carry the correct
mp4 tags (hvc1, av01). Measured 5-15x faster on an RTX 2060. - Pre-rendered audio PCM cache. A background ffmpeg process
renders the whole project's audio mix to a stable PCM file in
%TEMP%. The play path prefers this cache over the preview's own
PCM output, so audio survives a preview respawn instead of
restarting on every edit and seek. - Seek optimization in the preview renderer.
plan_from_project
now takes the current playhead and rewrites each input to
-ss/-tso ffmpeg demuxer-seeks instead of decoding from t=0.
A seek into the second half of a 3-minute project goes from 5-10 s
to ~200-500 ms. Projects with transitions fall back to the old
output-side seek. - Missing-media relink flow. On project load, if any media file
is gone, a dialog lists the missing items, offers a folder picker,
and matches files by basename (case-insensitive, depth-capped
scan). The whole batch runs as one undoableRelinkManyCommand. - Media bin shows a red "Missing" badge on cards whose source file
is gone. - Timeline clips without a source file are drawn with a red
diagonal hatch so a broken clip cannot hide under its normal
fill colour. - Paused seek now spawns a one-shot preview render at the new
playhead. Previously a timeline click while paused moved the
playhead but left the old frame on screen and no renderer alive.
Fixed
- Final audio mix was attenuating clips cumulatively. A chain
of N sequentialamixfilters with the defaultnormalize=1
divided the signal by 2 at each stage, so the first clip on a
17-clip project played at roughly 1/2^17 of the last. Replaced
with a singleamixacross all inputs atnormalize=0. The
opening clip is now at full level and a lone m4a no longer plays
~10x louder than video-embedded audio. - Video frame rate and playback stayed silent on a seek past the
first clip. PTS was not reset before the filtergraph's trim, so
the trim saw an empty window and selected zero frames. Reset
before trim in both video and audio chains. RenderPlan::total_duration_secwas zero when a seek was applied
because it had already been derived from the seek-shifted clips;
subtracting again collapsed the base black / silence bed to 0 s.- The 650 ms A/V delay compensation is now skipped on
seek-optimized plans. The fixed value pushed video behind audio
whenever the audio was cache-fed and the video was already
seeked.
Changed
Cargo.lockregenerated; workspace version bumped to
0.3.0-alpha.1.ExportSettings.codec_indexvalues 3..=8 now select NVENC and
AMF variants. 0/1/2 keep their old meaning. Existing projects
load unchanged.
Known issues
- No installer yet; download the nightly ZIP and extract it.
- FFmpeg is not bundled. First run offers to download a BtbN build
(~110 MB) or to point at an existing install. NVENC and AMF
require a build that was compiled with--enable-nvenc/
--enable-amf; the BtbN and gyan.dev builds both satisfy that. - Windows only.
- Text overlay rotation is stored in the model but neither rendered
nor exposed in the UI. - MyMemory translation quality is below DeepL.
- Preview A/V sync has a residual 100-300 ms lead/lag on some
hardware. Tunable viaCAPRUST_AV_DELAY_MS; a UI slider is
planned.
CapRust 0.2.0-alpha.1 — dock layout + captions translation
Second public alpha. Feature additions since 0.1.0-alpha.1:
- Dockable panel layout (egui_dock 0.16) with presets and
persistence. - Captions translation via MyMemory, one Captions track per
language.
Fixes since 0.1.0-alpha.1:
- Preview survives missing source files.
- Speed slider drag debounced (250 ms).
- Audio clips hide the Video tab.
- Video-only blocks hidden on TextOverlay clips.
Changed:
- eframe default-features = false (AccessKit off, egui_dock
mid-frame panic). - Nightly baseline x86-64, no AVX-512.
- Media bin toolbars wrap on narrow zones.
See CHANGELOG.md for the full list."
CapRust 0.1.0-alpha.1 — first public alpha
First public alpha of CapRust — a social-first video editor for Windows. Pre-release: expect rough edges.
Download
- Download
caprust-nightly-win64.zipbelow and extract it anywhere. - Run
caprust-app.exe. - On first launch, click Download FFmpeg (~110 MB) when prompted, or point CapRust at an existing FFmpeg install.
Highlights
- Timeline: magnetic mode, snap, ripple, multi-select, marquee, trim-follow
- Preview: filtergraph-based (same plan as export), auto-refreshes while paused on any edit
- Export: video + audio + xfade sync + caption burn-in, live ETA and size estimate
- Captions: Whisper transcription, per-word progressive reveal, per-clip style (font, position, color, outline, background)
- Text overlays: content editor, motion (x/y/scale), effects (blink/pulse/color-cycle), drag and resize directly in the preview pane
- Effects: 17 built-in
- Audio: fade in/out, volume keyframes, auto-ducking, speed ramp with easing
- AI: auto-reframe (SCRFD), background removal (u2netp), karaoke captions
- i18n: English and Croatian
Known issues
- Installer not yet provided; use the ZIP below
- FFmpeg is not bundled; the first-run prompt downloads it
- Windows only
- Text overlay rotation is stored but not rendered
Requirements
- Windows 10/11 x64
- ~150 MB free disk for FFmpeg, more for models
- Whisper / Piper models download on first use (per feature)