Skip to content

v0.8.1: fixes from the issue tracker

Latest

Choose a tag to compare

@HelpFreedom HelpFreedom released this 06 Nov 16:44

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) the adelay filter 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 with concat, which is
    sample-exact where adelay rounded 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, and kadr_export told 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 /tmp is 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 with pip 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-timeline gained 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-labels on 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.