Repository navigation
A release of repairs, almost all of them reported by people who use Kadr. Every
report below was reproduced on a Linux machine first (Arch, ffmpeg 9.0.2, a
Wayland session on an Intel + NVIDIA laptop), and every fix comes with a test
that failed before it and passes after. The code in the pull requests was read
as an idea rather than merged as it was, so credit for finding each problem
goes to the people named next to it — thank you.
The export sounds and looks like the timeline again
- Audio clips land where they are on the timeline. On recent ffmpeg
(9.0.2 measured, 8.1 reported) theadelayfilter sometimes lost its delay,
and a clip from 9 s played at 0:00 while its own place stayed silent; for a
sped-up clip it happened every time. Each clip is now preceded by exactly
the right number of samples of silence, joined withconcat, which is
sample-exact whereadelayrounded to a millisecond. Reported by @nxthab
(#47), @dvgmdvgm (#23, #41) and @progerWolf (#17). - Transparent fragments composite correctly on ffmpeg 8 and newer. The
packed alpha intermediate compressed the matte twice — fully opaque pixels
came out at ~92 %, so the layer under every transparent fragment showed
through — and its colour conversion was off by up to 2.5 levels, turning
neutral grey slightly green. The matte now round-trips exactly, colour lands
within a level, and old cached intermediates are rebuilt. Reported by
@nxthab (#48) and @progerWolf (#17). - Gain keyframes reach the exported file. The export used a clip's gain at
its first instant for the whole clip; it now follows the same curve the
preview plays — linear, eased, hold or smooth. Reported by @dvgmdvgm (#41). - Very fast and very slow clips keep their length. Clip speed goes from
0.02× to 100×, but the audio stretch was clamped to 0.25–8×, so a 20× clip's
sound ran 2.5 times past the clip and a 0.1× clip's stopped early. The sound
of a stretched clip now lasts exactly as long as the clip. Reported by
@dvgmdvgm (#41).
Failures that surface instead of looking like success
- A failed export fails. When the final ffmpeg pass (audio mix and mux)
failed, the export still resolved as done, andkadr_exporttold the agent a
file had been written when there was none. It now fails, with ffmpeg's
reason and the place where the rendered video was kept. Reported by
@SilentAutomaton (#27) and @DaSh-More (#43). - A cancelled export is quiet and leaves nothing behind. Cancelling used to
file three failures in the session log and left the partial video in the
temporary folder. - Intermediate video is written next to the output, not into
/tmp. On
many Linux systems/tmpis RAM; a long 4K export's intermediate (about
300 MB per minute) overflowed it or held gigabytes of memory while it ran. A
folder that cannot be written falls back to the temporary folder. Reported
by @progerWolf (#17). - An effect without parameters no longer blanks the window, and a
keyframe with a missing or unknown easing no longer blacks the frame —
both could arrive from a script or a project written elsewhere. Reported by
@murich (#15) and @progerWolf (#17).
Linux
- The Claude panel starts on systems without
/bin/bash(NixOS, Guix): its
watchdog runs under/bin/sh. Reported by @Peloxerat (#50). - No black window on Wayland with an NVIDIA card. The environment that lets
Kadr render on a discrete NVIDIA card broke a Wayland window outright
(eglCreateImage failed, the GPU process dying over and over). It is now set
only for an X11 window; the discrete card is offered there as before.
Reported by @DaSh-More (#44). - Closing the editor ends the app even while hidden fragment-capture
windows are open (they kept a windowless process alive), and a capture
page that failed to load can be retried (every retry used to be a silent
no-op). Reported by @dvgmdvgm (#42) and @murich (#14). - Speech-to-text install: faster-whisper 1.2.1, still the latest release,
does not work with PyAV 19. Install it withpip install faster-whisper "av<19"; a transcription that fails this way now says so. Reported by
@OlegTix (#46).
Timeline and panels
- Edge tips on short clips share the clip. With tips on both ends of a clip
shorter than both together — common in a cut to the beat — the out tip never
played. They now share the clip in proportion and meet exactly; tips that fit
are untouched. Reported by @SilentAutomaton (#28). - The clip menu's «Delete clip» deletes the selection it was opened on, a
group of clips dragged past zero stops there with its spacing intact, and a
drag the system cancels (touch, pen) ends instead of following the pointer.
Reported by @dvgmdvgm (#24). - The layout stays put when the interface language changes. The controls
hint in the timeline toolbar wrapped and made the toolbar up to 222 px tall in
a narrow window; it is one line now. The animation and motion editors no
longer scroll sideways in a narrow side panel. Reported by @SilentAutomaton
(#26).
Verification
All on Linux (Arch, ffmpeg 9.0.2, Electron 42).
- New checks, pure node with the installed ffmpeg:
check-packed-alpha
(the matte round-trips exactly),check-audio-placement(every clip on its
sample, over many runs, WAV and an A/V MP4 at an in-point),
check-gain-keys(gain curves and speeds through both mix paths),
check-ozone.check-timelinegained the edge-tip cases. - New app suites: e2e54 (a failed mux, a cancel), e2e55 (capture windows),
e2e56 (selection gestures). e2e51 now refuses to run over an open project, as
its header always said (#32, @SilentAutomaton). - Regression: e2e4, 5, 6, 8, 9, 11, 12, 15, 22, 23 (real transcription), 24,
28, 31, 32, 33, 34, 35, 40, 51, 52, 53 and the other node checks pass. Two
older failures in e2e7 and e2e10, an intermittent one in e2e51 and
check-sfx-labelson ffmpeg 9 are unchanged from v0.8.0 and not caused by
this release. - Not tested, because there is no Windows or macOS machine to test on: the
Windows and macOS pull requests stay open for anyone who can.