Skip to content

v2.4.0

Choose a tag to compare

@github-actions github-actions released this 05 Sep 02:38
· 104 commits to main since this release

[2.4.0] - 2026-09-05

Cutting gets comfortable: shares queue up and can be cancelled, every clip
has a picture, the Nextcloud quota sits in the header, a fast copy mode
skips the re-encode, the GPU decodes where it can, and the page hears about
changes the moment they happen.

Added

  • Shares queue up instead of answering "a share is already running": the
    Share button stays usable, the card shows the place in the queue, and the
    next job starts as soon as the running one ends (position in the
    answer and the job, queue in GET /api/clips).
  • Cancel a share: POST /api/jobs/<id>/cancel and the Cancel button on the
    progress card. Waiting jobs leave the queue at once; a running encode or
    upload is stopped and its partial output removed.
  • Thumbnails: every clip shows a picture from 10 s before its end in the
    list and as the player poster (thumb on the clip, GET /media/<base>.jpg).
  • The Nextcloud quota in the header ("Nextcloud 63 %", yellow from 80 %,
    red from 95 %), refreshed in the background (config.quota).
  • Fast copy: a share mode that keeps the OBS video stream instead of
    re-encoding (keyframe-accurate, mode: copy, actualStart in the job).
    The choice is remembered in the browser; the default stays H.264.
  • GPU decoding: the encoder detection now tries the full GPU path of each
    vendor with a real clip (AMD d3d11va, NVIDIA cuda with scale_cuda,
    Intel qsv) and falls back to software decoding per share when it fails.
    On an AMD card the AV1 decode moves off the CPU (13 s instead of 42 s CPU
    time for 30 s of 1440p60). hwaccel gains auto (the default) and none.
  • replaycut bench: encodes part of the newest clip with every profile and
    prints wall time, CPU time and speed.
  • The page listens to GET /api/events (Server-Sent Events) instead of
    asking every 3 s: changes show up at once, an idle page costs nothing,
    and a restart no longer waits for open connections. Polling stays as the
    fallback.
  • The title field suggests the recording day and time as a placeholder;
    Enter on the empty field takes it.
  • A keyboard shortcut list behind the "?" button and the "?" key.

Changed

  • Contract: a second POST /api/share while a job runs answers 202 with a
    queue position (409 only for the same cut twice).

Fixed

  • "Update now" on a release that has no signature yet ends in an error
    ("not signed yet") instead of waiting forever.