Releases: Merluzzo93/cupcat
Release list
CupCat 1.10.0 β subtitles behave like subtitles, and the handoff takes your notes with it
π§ CupCat 1.10.0 β subtitles behave like subtitles, and the handoff takes your notes with it
Free, local, AI-native video editing for Windows. Download CupCat_1.10.0_x64-setup.exe below.
Already running CupCat? It updates itself next time you open it, fetching only what changed.
Text that survives the render
Three different programs draw the text in CupCat: your browser draws the preview, and two different
renderers draw the finished file. They did not agree, and the preview was the one telling the truth.
- A long caption ran off both edges of the exported video. A spoken sentence was drawn as one
straight run of text β measured at 1276 pixels across a 1280-pixel frame, touching both sides β
while the preview had been wrapping it neatly inside its box the whole time. CupCat now decides
the line breaks itself, reading the real letter widths out of the font you picked, and writes them
into the text so every renderer draws the same lines. Checked against real renders across eight
typefaces: the predicted width is within 1.26% of the ink, and always errs on the safe side. - Captions got subtitle discipline. At most two lines on screen, and a sentence too long for two
becomes two captions sharing its moment β what a subtitler would do β instead of shrinking or
spilling. - A line break you typed is a line break you get. Text written on two lines played as two lines
and exported as one, because the export flattened every newline into a space before either
renderer saw it. Titles, cards and hand-written subtitles now come out exactly as they look while
you are editing. - Text on more than one line is aligned properly. The second line of a centred caption used to
hang off to the left of the first instead of sitting under the middle of it (measured: line
centres at 300 and 640 on a 1280 frame), and left- or right-aligned text was drawn in the middle
of the frame whatever you had chosen.
The handoff to Premiere, Final Cut and Resolve carries what CupCat knows
- Your markers go with the edit. The chapters CupCat finds and anything you marked yourself used
to stop at CupCat's door: the XML carried the cuts and nothing else, so whoever opened the project
in another program had to find all those points again. They now travel in both XML formats, at the
right frame, with their names. - And your subtitles go with it, as a standard
.srtwritten next to the XML. Nothing to retype,
nothing to re-transcribe, and it costs no extra time β they are the captions already on your
timeline.
Under it
- A new reader for font metrics, checked against what ffmpeg actually draws rather than assumed.
- 813 tests, all passing. Every one of the files in the update manifest was checked byte for byte
against the installer that carries them.
Full licence notices for every bundled engine are in NOTICE.md. CupCat is GPL-3.0-or-later.
Releases are built by a public workflow
on GitHub-hosted runners β see the code signing policy.
CupCat 1.9.0 β rebuild an edit you like, and play it backwards
π§ CupCat 1.9.0 β rebuild an edit you like, and play it backwards
The free, local, AI-native video editor for Windows. Claude edits your timeline; almost everything
runs offline on your PC. No credits, no watermark, no account.
Install
- Download
CupCat_1.9.0_x64-setup.exebelow and run it. - It's self-contained β every local engine (ffmpeg, Whisper, Piper, sherpa-onnx, YuNet) is bundled. No preinstalls, no Python.
- To use the AI assistant (in-app chat or MCP), sign in to Claude Code on the same machine.
- To generate media, sign in to Higgsfield (
higgsfield auth login).
Already running CupCat? It updates itself and downloads only what changed β from 1.8.1 that is
3 files, 113 MB, not the 990 MB installer.
New
Show CupCat a video you like and it rebuilds that edit with your own footage. It reads the
finished video the way an editor would: where every cut falls, how long each shot runs, the tempo of
the music, how many cuts sit exactly on a beat, and the moment the track opens up. Then it lays your
clips into that shape β the liveliest ones on the loudest moments, the calm ones on the quiet
moments β and tells you, shot by shot, why each clip went where it did. Ask without giving it any
footage and you get the reading on its own, which is the answer to "how is this edited?".
It can bring the music along, too. The cuts of a montage were made for a particular track, so
CupCat can put the reference's own audio underneath the rebuild; without it, cuts on the beat land
on nothing. And a shot longer than any clip you own is filled with more than one β what a human
editor does β said plainly in the plan, so a rebuild never contains a clip stretched past its own
ending.
Videos can now be played backwards. The rewind, the boomerang, the pour-it-back trick β with
the sound reversed too. Long or 4K files are rendered in pieces automatically, so this works on the
two-minute clip and not only on the ten-second one: the obvious way to do it needs about 5 GB of
memory per minute of 1080p.
Under the hood
- The rules that decide which cut is real, what counts as a drop and which clip belongs where are
covered by 35 tests, because they are judgement calls. Two of them exist because a test found the
obvious version wrong: a lone shot always drew the calmest clip whatever its energy, and a
21.5-second shot was being filled with a 17-second clip β four and a half seconds of nothing. - Reversal is checked against a real file rather than assumed: the reversed video's last frame is a
perfect match (SSIM 1.000000) for the source's first, and its loudness envelope correlates 0.9999
with the source's played backwards. - A test now checks that every tool CupCat advertises is one it can actually run. Declaring a tool
and handling it are two edits in two files with nothing linking them; forget the second and the
assistant offers something that answers "unknown tool". - 761 tests, all passing. 131 tools. Every one of the 406 files in the update manifest was checked
byte for byte against the installer that carries them.
Full licence notices for every bundled engine are in NOTICE.md. CupCat is GPL-3.0-or-later.
Releases are built by a public workflow
on GitHub-hosted runners β see the code signing policy.
π§ Also on this page: the 1.9.1 update
1.9.1 has no release page of its own β it adds no new capability, so it is published here instead:
CupCat_1.9.1_x64-setup.exe below is the one to download. Already running 1.9.0? CupCat updates
itself next time you open it, fetching 113 MB rather than the whole 1.5 GB.
- A zoom or push-in came out BLACK in the exported file, while the preview showed it perfectly the
whole time. If your video had a punch-in, everything from that moment on was a black screen with the
subtitles still readable on top. In the last step of rendering the zoomed shot lost its place on the
timeline and was drawn before its own moment arrived. Fixed, and covered by a test so it cannot come
back quietly. - CupCat can now tell you which voices it has, before you spend anything. There was no way to ask:
the only way to learn that a voice name was wrong was to pay for the audio and read the error. One
free question now lists the offline voices and every voice on your Higgsfield account with the exact
identifier each one needs β and says plainly when what you asked for is not among the bundled ones. - The intro/outro card works again on a project that has a voice track. It was putting its backdrop
on whichever track happened to be at the top, and failed outright when that was audio. - A title and its subtitle no longer print on top of each other. Asking for a line at a given height
worked one way of writing it and was silently ignored the other.
CupCat 1.8.0
π§ CupCat 1.8.0 β cameras, voices, sounds
The free, local, AI-native video editor for Windows. Claude edits your timeline; almost everything
runs offline on your PC. No credits, no watermark, no account.
Install
- Download
CupCat_1.8.1_x64-setup.exebelow and run it. - It's self-contained β every local engine (ffmpeg, Whisper, Piper, sherpa-onnx, YuNet) is bundled. No preinstalls, no Python.
- To use the AI assistant (in-app chat or MCP), sign in to Claude Code on the same machine.
- To generate media, sign in to Higgsfield (
higgsfield auth login).
Already running CupCat? It updates itself and downloads only what changed.
New
Filmed a conversation with two or three cameras? CupCat can cut it for you. Tell it who is who,
and it builds the edit: it stays on whoever is speaking, holds a shot long enough not to feel
twitchy, and when two people talk at once it either goes wide or puts them side by side on screen.
Ask for a preview first and you get the plan β every shot, when it starts, and why that camera β
before a single clip moves.
Each voice now comes from where its owner is standing. On a fixed camera, CupCat looks at the
picture to find where each person is, then places their lines across the stereo image to match.
Anyone it cannot find twice in agreement is left in the centre rather than moved on a guess, and it
tells you who.
Ask for a cover and CupCat looks at the frames instead of grabbing one. It measures every
candidate for focus β which is what rejects the motion-blurred ones β plus exposure and contrast,
skips anything sitting on a cut, then checks the shortlist for a readable face.
Subtitles can now name what is HEARD, not only what is said. (applause), (laughter), (siren),
(dog barking) β the half of subtitling every accessibility standard requires and no consumer editor
generates. It runs on your machine, and it is deliberately reluctant: silent where it mostly hears
speech, blind to anything running under the whole recording, and quick to drop a lone uncertain
guess. On an interview it finds nothing, which is the correct answer.
Fixed
Blurring faces works. It did not before, and it failed in three separate ways. The face detector
CupCat ships had never once run β a file was missing beside it, so every request quietly fell back
to something weaker, which also means auto-reframe has been framing on brightness rather than on
people. On top of that the blur itself failed outright on any real clip: some patches reached past
the edge of the frame, and the instructions describing a moving face grew longer than the video
engine can read. All three are fixed and proven on real footage β thirty-six faces covered across
four minutes.
Speech is read once, in the language it was spoken. Placing a video puts two things on the
timeline β the picture and its sound β and CupCat read both, so every sentence appeared twice.
Separately, the transcriber defaulted to English rather than listening first, so Italian speech came
back labelled English and chapter titles were written in English over Italian.
Everything on screen is in your language, the What's-new card included. A test now fails the
build if a new English-only string slips in.
Under the hood
- New bundled engine: sherpa-onnx audio tagging with the CED-tiny AudioSet model (Apache-2.0, 6 MB).
- The ONNX Runtime the face detector needs is now shipped beside it. It never was, so Windows resolved a stray system copy from another program and the detector failed on every call.
- yt-dlp updated to 2026.07.04, so importing from a link keeps working.
- Transcripts cached by an older CupCat are retired on first use: they were decoded as English, and the fix would otherwise never reach them.
- Updating in place asks for 10 files / 168 MB from 1.7.29, not the 1.5 GB installer. Every one of the 406 files in the manifest was verified byte for byte against the installer that carries them.
- 716 tests, all passing.
Full licence notices for every bundled engine are in NOTICE.md. CupCat is GPL-3.0-or-later.
π§ Also on this page: the 1.8.1 update
1.8.1 has no release page of its own β it changes nothing you can see, so it is published here
instead, and the installer above is already 1.8.1. Already running 1.8.0? CupCat updates itself next
time you open it: 12 files, 164 MB, not the whole 989 MB installer.
- About 100 MB less on your disk. One bundled tool was shipped wrapped in a runtime it never
needed β 98 MB where the official build is 9 β and four copies of the same library turned out to be
four different builds. Same features, less weight. - A missing file came back. A speech-synthesis data file had gone astray between its source and the
installer, quietly, some releases ago. - Face blurring loads its ONNX runtime from its own folder, by name rather than by luck. It was
reaching into the diarization folder for it. - Every bundled engine is now rebuilt from a pinned source with a checksum, and releases are built
by a public workflow
on GitHub-hosted runners rather than on one laptop β so what is inside the installer can be verified
instead of trusted. That is also the groundwork for code signing: see the
code signing policy.
Build inputs β ffmpeg mirror (2026-07)
Build inputs, not a CupCat release. Nothing here is meant to be downloaded by hand.
tools/sidecars/fetch.ts assembles the bundled engines from pinned upstream sources. Every one of them
has a stable upstream URL except ffmpeg: BtbN prunes dated builds after about a month, and the exact
build CupCat ships β N-125444-g6d72600a30-20260703 β no longer exists there. Pointing the build at
their rolling "latest" instead would mean every CI run could produce a different editor, so the two
binaries are mirrored here byte for byte.
| asset | sha256 |
|---|---|
ffmpeg-N-125444-g6d72600a30-20260703.exe |
95aee5e6cb047c87a60f01a0968207d6e2bd5819f20bc41c8261c3aceff941ec |
ffprobe-N-125444-g6d72600a30-20260703.exe |
3d5c036b51929f95ee7328a64ac93ffff7d066624a4b9a53660ce7ba8f3e7488 |
GPL-3.0 static builds by BtbN, Β© the FFmpeg project.
Corresponding source: git.ffmpeg.org/ffmpeg.git at commit 6d72600a30, configured as reported by
ffmpeg -version (--enable-gpl --enable-version3, --extra-version=20260703).
Marked as a prerelease so it never appears as the latest release: CupCat's in-app updater reads
releases/latest, and build inputs must never be offered to it.
CupCat 1.7.29
Installing over an older CupCat works, and reports reach the developer
"Error opening file for writing: cupcat-bridge.exe" during an install is fixed, and it was CupCat's
fault twice over. The editor engine is a second program, and when CupCat is force-closed β which is
what an installer does β it never gets to stop it. The engine was left running with no window to
serve, holding its own file open; the installer then could not overwrite that file and stopped
halfway, leaving the app from one version beside the engine from another.
Now the engine stops by itself the moment CupCat is gone, and the installer closes any engine still
lingering from an older version before it writes anything. Verified against the real failure: an
orphaned older engine holding the file β confirmed unwritable β and this installer completes, replaces
it, and leaves nothing behind.
You can send a report straight from CupCat. Feedback has always built a file on your disk and left
you to send it; there is now a tick-box to hand it to the developer directly. It is off unless you
turn it on, and it says plainly what goes: your description, the log, the project, and a picture of
your whole screen. If sending fails, the file is still on your disk and CupCat says so.
A fresh install no longer looks out of date to itself. The checksums published with a release
described a build of the app that differed, byte for byte, from the one inside the installer. They are
now taken from the installer itself, which is the only copy that matters.
CupCat 1.7.28
Dead air you can see, and the card that says what changed
CupCat can now find dead air by LOOKING, not only by listening. Removing pauses has always meant
hearing them, which leaves out every kind of footage with no speech in it β a screen recording, a
locked-off camera, a phone left running on a tripod, timelapse, b-roll. Ask to tighten one of those
and it now finds the stretches where the picture stops changing and cuts them the same way. On a
speaker it only cuts where the picture is still and nobody is talking: a motionless picture is
also what a person looks like sitting still mid-sentence.
The sensitivity was chosen by measurement. On 32 minutes of real handheld footage the default
correctly finds nothing to cut; on the same footage with a frame held it finds exactly the held part;
and a slow pan is still read as movement, which is where a looser setting starts eating good footage.
The "What's new" card no longer goes missing after an update. It asked the engine which version
was running exactly once, the moment the window appeared β and after an update in place the app
restarts, so the window is ready before the engine is. The question fell into the void, the card gave
up, and the one release nobody was told about was the one that had just installed itself.
A small fix no longer needs a release of its own. CupCat reads the version from what a release
contains rather than from its name, so a one-line fix can reach everyone already running it without a
new download page appearing. Releases are for the updates worth reading about.
CupCat 1.7.27
The update that proves the last one
This is the first update where 1.7.26's port fix can actually do its job. The fix belongs to the
engine that hands over, not the one that arrives β so the update carrying it could not benefit from
it: 1.7.25 handed over to 1.7.26 using 1.7.25's code, and still left its port bound. Worth knowing for
any future fix to the handoff: it always takes effect one update later than it ships.
Verified beforehand against the engine as installed: handing off, it now reports
BOUND β the port was released, where the previous one reported HELD.
While an update downloads, it now says what it is fetching β "the editor engine", "the app" β
instead of a filename that means something to us and nothing to you.
CupCat 1.7.26
After an update, CupCat comes back working
An update no longer comes back to "lost contact with the engine". The update itself finished
correctly β the right files, checked, in the right place β but the new engine could not start,
because its port was still held by the engine that had just exited.
On Windows a child process inherits its parent's open sockets, and the engine has two descendants
across an update: the helper that performs the swap, and the CupCat that helper starts. So the port
stayed bound on behalf of a process that no longer existed β the TCP table named an owning process
that was gone β and only closing CupCat by hand cleared it.
The engine now closes its port before handing over. Nothing left open is nothing to inherit.
Reproduced before fixing, with a stand-in app that tries to take the port back after the handoff:
the previous engine reported HELD β Is port 19893 in use?, this one reports BOUND β the port was released.
CupCat 1.7.25
You can read what an update contains before installing it
The update notice now shows what changes. The release notes were already being fetched and then
thrown away, so the only honest answer to "what am I about to install?" was to go and read this page.
Press Cosa cambia in the notice and they are there.
And this update installed itself β downloading only the two files that actually differ, about
112 MB against a 1.4 GB installer, leaving the speech model, ffmpeg and the voices exactly where they
were.
CupCat 1.7.24
CupCat opens again when there is an update waiting
A published update no longer opens CupCat to a black window. The update notice asked React for one
more piece of state than the render before it β legal-looking code that throws the instant a notice
appears, and a throw with nothing to catch it empties the whole window. So CupCat worked perfectly
until something newer existed, and then opened black for everyone. Measured on the affected build:
the same binary drew its full interface when the update check was pointed at an address that does not
answer, and drew nothing when a release was there.
A part of the interface failing can no longer take the window with it. Whatever breaks, the window
stays, says what happened and offers to reload. A black window has now had two unrelated causes; this
closes the class rather than the case.
CupCat keeps checking for updates while it is open, instead of only at startup.
Carries everything from 1.7.22: updates that install themselves, downloading only what changed.