Releases: smb-org/MatteLoop
Release list
MatteLoop v0.4.1
The crash listed as a known issue in 0.4.0 is fixed — along with a second one nobody had reported, found while looking for the first.
Updating
A 0.4.0 installation offers this release by itself: it checks at startup, downloads in the background, and installs when you quit. Nothing to do by hand. Coming from 0.3.0 or earlier, download below and install as before — from 0.4.0 onwards MatteLoop updates itself.
What is new
Quitting no longer ends in a crash report. Quitting while work was still running let Qt destroy a thread that had not stopped yet, and Qt aborts the process when that happens. Shutdown now waits a bounded five seconds for each worker; if one outlives that, MatteLoop records it in the log and exits cleanly instead of aborting. A clean shutdown is never shortened, and no worker is ever killed mid-frame — the wait for a model download, which had no limit at all, is now bounded too, so a stalled download can no longer turn Quit into a silent hang (#142).
The segmentation runtime's telemetry is switched off. ONNX Runtime ships with Microsoft's telemetry SDK compiled in, which collected diagnostic information about the machine at startup and sent it on. MatteLoop now switches it off before the runtime starts, so nothing is gathered and nothing is sent (#145). The same SDK was behind a second crash at quit, which goes away with it.
Diagnostic entries written by earlier versions stay in the runtime's own local store. With the switch in place nothing new is added and nothing is uploaded.
On Windows the runtime writes a single startup entry to Windows' own event tracing before anything can intervene. It records version numbers and similar build details rather than anything identifying the machine, and whether it goes any further is governed by your Windows diagnostic data settings. Everything after startup is switched off there too, and the README now describes this per platform.
Windows shows the application's own name. The title bar read MatteLoop 0.4.0 - MatteLoop; it now reads it once. The file properties showed a product name of matteloop and a description of matteloop.exe, both derived from the filename; they now carry the application's name, a description and a licence line (#133).
Installing
The builds are unsigned by decision, so both systems warn on first launch:
- Windows — SmartScreen: choose More info, then Run anyway.
- macOS — the first launch is refused. Open System Settings → Privacy & Security, find the message naming MatteLoop, and choose Open Anyway. Move the application to your Applications folder before launching it; an app left in Downloads may run from a read-only copy and then cannot update itself.
~/Applicationsworks just as well and is the better choice without administrator rights.
MatteLoop never needs administrator rights to update itself. If such a prompt ever appears, the application is installed somewhere you cannot write: cancel it and install the new version by hand.
Assets
MatteLoop-v0.4.1-macos-arm64.zip for macOS 15+ on Apple Silicon; MatteLoop-v0.4.1-windows-x64-Setup.exe or MatteLoop-v0.4.1-windows-x64.zip for Windows x64. The .nupkg packages and releases.*.json feeds are what the updater reads — you do not need to download them.
The MatteLoop-*-sources-* archives are the complete corresponding sources for the LGPL libraries (FFmpeg, libwebp, Qt) inside the application, published here as their licences require. They are not needed to run MatteLoop.
MatteLoop v0.4.0
MatteLoop can now update itself. This is the first release that can, and the last one you have to install by hand.
Updating from 0.3.0 — once, manually
A 0.3.0 installation has no updater and cannot reach this release on its own. Download it here and install it as you did before; from 0.4.0 onwards the application offers new versions itself. Your settings, model weights, cuts and exports are untouched — none of them live inside the application.
What is new
In-app updates. MatteLoop checks once at startup for a newer release and offers it in a dialog: the version, the download size, and one button. Dismiss it and a small arrow appears beside the gear, which reopens the offer whenever you want it. The download runs in the background and the update is applied when you quit, so nothing interrupts a preview, a render or a rebuild — if work is still running, the install is deferred rather than forced, and the downloaded package waits for the next launch.
Preferences carries a switch for the startup check and a manual Check for updates at any time.
A beta channel. Also in Preferences. Betas are ordinary releases marked as prereleases: a stable installation never sees them, and switching back leaves you where you are until a stable release overtakes it. There are no downgrades.
Windows gets an installer. MatteLoop-v0.4.0-windows-x64-Setup.exe installs to your user profile, adds a Start-menu entry, and updates itself in place. The portable archive is still there for anyone who prefers a folder — and it now extracts to MatteLoop-v0.4.0-windows-x64\, so two downloads no longer look identical (#134).
Correct launch instructions. The old advice to right-click and choose Open has not worked since macOS 15, which is the oldest version this project supports. See below for what actually works.
Installing
The builds are unsigned by decision, so both systems warn on first launch:
- Windows — SmartScreen: choose More info, then Run anyway.
- macOS — the first launch is refused. Open System Settings → Privacy & Security, find the message naming MatteLoop, and choose Open Anyway. Move the application to your Applications folder before launching it; an app left in Downloads may run from a read-only copy and then cannot update itself.
~/Applicationsworks just as well and is the better choice without administrator rights.
MatteLoop never needs administrator rights to update itself. If such a prompt ever appears, the application is installed somewhere you cannot write: cancel it and install the new version by hand.
Known issue
Quitting the application while work is still running can end in a crash report if that work does not stop within five seconds. Nothing is lost — it happens after you have asked to quit, once shutdown has done everything it can. It predates this release and is tracked in #142.
Assets
MatteLoop-v0.4.0-macos-arm64.zip for macOS 15+ on Apple Silicon; MatteLoop-v0.4.0-windows-x64-Setup.exe or MatteLoop-v0.4.0-windows-x64.zip for Windows x64. The .nupkg packages and releases.*.json feeds are what the updater reads — you do not need to download them.
The MatteLoop-*-sources-* archives are the complete corresponding sources for the LGPL libraries (FFmpeg, libwebp, Qt) inside the application, published here as their licences require. They are not needed to run MatteLoop.
MatteLoop v0.3.0
MatteLoop 0.3.0
The first release with an application-level settings surface, a German
interface, and a consistent answer to the question "does the window tell me the
truth?" — which, in several places, it did not.
Twenty-six issues closed since 0.2.1.
New
A Preferences surface. MatteLoop had no application chrome at all: no menu
bar, no toolbar, not a single action. A narrow gear button now sits beside
Render Video and opens Preferences, reachable with Cmd+, / Ctrl+, and never
disabled — preferences stay available while a render runs and before any video
is loaded. (#50)
A German interface. Every user-visible string is translated, with English as
the primary language and German as the second. Number and date formatting
follows the selected interface language rather than the system locale, so an
English interface on a German machine no longer reads 6,042 s inside English
labels. The choice is in Preferences and applies at the next start, together
with the locale, so words and numbers can never disagree. (#49, #108)
Compute acceleration moved to Preferences. It describes this machine's
graphics hardware and is identical for every clip, but it sat in the
Segmentation section between Model and Edge treatment, where it read like a
creative decision. Edge treatment stays in the inspector, because it changes
what the render produces and depends on the clip. (#85)
Replace the open clip by dropping a video on the window. Previously a drop
worked only when nothing was open; once a clip was loaded the same gesture was
silently ignored, with no highlight and no message. The drop now goes through
exactly the same confirmation as the button. (#88)
Reset the render parameters to their defaults. #27 fixed the bug where
scrolling the inspector changed whatever field the pointer passed over; the
damage it left could not be undone, and an fps of 11 or an alpha threshold of
0.4 that nobody chose followed the user into every later session. Validation
could not rescue that: those are legal values inside their ranges. (#56, #110)
Clear the output directory. Until now a directory chosen once could not be
returned to the source folder from the interface at all. (#50, #110)
Work is no longer destroyed without asking
- Deleting a saved cut set removed it immediately — its segmented frames and
its saved transform with it, including externally edited frames that
re-running segmentation cannot reconstruct. Now one confirmation for every
deletion, identifying the set and naming what recreating it costs. (#59) - Replacing the source, or closing the window, discarded unsaved transform
edits with no warning. Both paths now ask. (#67) - Rebuilding the open cut could overwrite edits made while the reuse probe
was still running, and switching cut sets bypassed the confirmation
entirely. (#107)
The interface no longer states what is not true
- A failed render closed its dialog and left the previous Render complete
banner on screen, pointing at the older file. After minutes of unattended
work, the window asserted success. (#61) - Zero meant the opposite of zero: Maximum size showed
0.000 MiBwhere
zero means no limit, and told a screen reader the same wrong thing. (#65) - Manage Workspaces was always enabled and did nothing without a video open
— no dialog, no message, no reason. (#89) - Reset and Clear looked available while doing nothing, and Reset blamed the
wrong section for invalidating the preview. (#110) - The repair advice named a Windows-only package on every platform, so a
macOS user with a broken runtime was handed a command that reinstalls
nothing. (#109)
Correctness
- A render could target the wrong source. A delayed cut-reuse probe could
finish after the source had been replaced, and the job then ran the previous
video's file under the new video's identity. Requests now carry the source
they were built from and are refused if it changed. (#60) - The result player could disagree with the file an export would produce —
a restored trim ignored on first load, a paused result vanishing, external
edits framed by obsolete bounds, and a preview that cropped the very cutout it
exists to let you judge. (#63) - A lost segmentation child was reused forever. After a crash, every retry
failed instantly against the dead process until the model or provider changed
or the application restarted. (#62) - Cancelling took effect promptly. Quitting during stalled inference hung
for about two minutes; a stalled download ignored Cancel for up to a minute;
a cancelled encode kept writing frames. (#64, #62, #111)
Platform
- Every Transform field was invisible in the running application. Under the
macOS style a form without an explicit growth policy gives a compact field
zero pixels, so trim, crop and resize could not be typed into at all — while
the tests and the generated screenshots, which run under Fusion, showed
277-pixel fields nobody had. The screenshots are now captured under the style
that ships. (#79) - The bundle reports its own version. Every release so far shipped
CFBundleShortVersionString = 1.0, carried noCFBundleVersion, used a bare
matteloopas its identifier, and the Windows executable had no version
resource at all. The window title said nothing either — empty on macOS. All of
it now derives from one value, written before the bundle is signed. (#75) - Qt's own dialog buttons are translated in the packaged application, which
needed the Qt catalogues to actually be in the bundle — on both platforms,
whose layouts differ. (#108)
Build and supply chain
- Every GitHub Action is pinned to a commit hash and kept current by Dependabot;
one pin already referenced a commit GitHub no longer resolves. Every CI run is
locked, and the uv version itself is pinned. (#117) - The media-stack build tools install from a hash-verified lockfile. This was
the one path where an unpinned transitive dependency could run code on the
runner that produces the artifact users download. (#119) - The packaged entrypoint no longer
execs a payload derived from its
arguments. (#118) - The guardrail ratchet no longer freezes modules that are nowhere near the
line budget. (#58)
Known limitations
CFBundleVersionis still absent on macOS: Nuitka does not write it, and
adding it after the build invalidates the ad-hoc signature, which macOS then
reports as a damaged application. It matters only for updater frameworks that
compare it. (#75, #74)- With the output directory inside a cloud-synced folder such as OneDrive, a
render can fail withframe … changed while it was read: the working set
currently lives inside the output directory, where a sync client rewrites it.
Choose a local directory until #106 lands. - On Windows the title bar reads the product name twice —
MatteLoop 0.3.0 - MatteLoop— because the window title and the application display name are
both set, and Windows composes them. The executable's Product name and
description are still Nuitka's defaults. Cosmetic, and tracked in #133.
Getting it open
These builds are unsigned, by decision, so both systems warn on first launch.
The warning is about the missing signature, not about the download.
- Windows — SmartScreen: More info, then Run anyway.
- macOS 15+ — open System Settings → Privacy & Security, find the
message naming MatteLoop, and choose Open Anyway. The old right-click
Open gesture no longer produces an override on any macOS this project
supports.
The MatteLoop-*-sources-* archives are the complete corresponding sources for
the LGPL libraries inside the application — FFmpeg, libwebp and Qt — published
here as their licences require. They are not needed to run MatteLoop.
MatteLoop v0.2.1
The first 0.2 release with installable bundles. v0.2.0 was tagged, but its
build stopped before the upload, so nothing was ever published under that
number. The application here is that tag, unchanged.
What is new since 0.1.2
A transform stage for the finished cut. Trim it, crop it for output, resize
it, and watch the result loop on screen before rendering. The stored frames are
never touched — the transform is a spec applied at encode time, so it can be
changed and judged as often as you like without segmenting again.
GPU segmentation on Windows. The bundle ships ONNX Runtime with DirectML,
which reaches NVIDIA, AMD and Intel through DirectX 12. A card that cannot
create or run a session falls back to the CPU instead of failing the job.
matteloop --providers reports what the runtime actually offers, so a report
about missing acceleration carries evidence.
A new model namespace. Weights now come from rembg 2.0.75, which invalidates
every previously downloaded file. Weights left under the old namespace are shown
as outdated and can be deleted, or re-downloaded as a cancellable batch that
removes each old copy only once its replacement has been verified.
Three defects worth naming. A segmentation child that failed while preparing
exited silently, so the parent reported a closed pipe instead of the real error.
Every confirmation dialog was read as a refusal, because Qt returns an int and
the code compared identity — nothing could be deleted at all. And the overall
render progress ignored the post-process stage, freezing the rate and the
remaining time for a third of every run.
Known issue on Windows: downloading a model can kill the application
Because the model namespace moved, every model has to be fetched again. On
Windows that download can end the process with an access violation: no dialog,
no log line, and no model, so Preview and Render stay unavailable. Retrying
resumes the transfer where it stopped, so repeated attempts do get through
eventually. This is not fixed in this release — it is tracked in #32.
Installing
Unsigned builds. Windows warns via SmartScreen and macOS needs a right-click
Open on first launch.
The MatteLoop-*-sources-* archives are the complete corresponding sources for
the LGPL libraries (FFmpeg, libwebp, Qt) inside the application, published here
as required by their licences. They are not needed to run MatteLoop.