History#

0.2.0 (2026-08-09): Big overhaul#

Breaking changes:

  • Everything is muxed to mkv (fixes recurring failures on avi/wmv/flv/mp4 sources: subtitle conversion, no more codec/container mismatches). Files already compliant are never touched.

  • The per-directory .keep files (dill) are replaced by a central JSON failure log under the user data dir; run rcomp cleanup once to remove old .keep.

  • The CLI is now a command group: rcomp TARGET still works (routed to rcomp run), plus rcomp config, rcomp cleanup, rcomp remote status, rcomp remote purge. Booleans are real flags (--replace/--no-replace).

  • Python >= 3.11; packaging moved from Poetry to uv + hatchling.

New:

  • Persistent preferences: TOML file (rcomp config --init), named presets, resolution order defaults < config < preset < explicit flags.

  • Quality options exposed: --crf, --ffmpeg-preset, free --codec choice, --height 0 to disable downscaling.

  • Robust remote: single SSH connection per batch, .rcomp workspace created automatically, ffmpeg checked at connection, all file operations over SFTP (Windows servers now supported), patient reconnection with re-attachment to the orphan encode after a connection loss.

  • Automatic local mode when the hostname resolves to this machine.

  • Workspace inspection and purge (rcomp remote status / purge), plus a conservative auto-purge (7 days) at connection time.

  • Progress bars (tqdm) fed by ffmpeg -progress, proper logging with --verbose/--quiet, end-of-batch summary; a failing file no longer stops the batch (with a circuit breaker after repeated failures).

  • Rotation-aware sizing: height caps the display definition (short side), so phone portrait videos are no longer over-shrunk.

  • Encoder availability checked at connection time (a build without libx265 fails with a clear message instead of per-file errors), and remote_ffmpeg config key for servers whose non-interactive PATH misses ffmpeg.

  • rcomp failures lists and clears the failure log; one debug log file is written per run (parallel-run safe), old ones purged after 30 days; the failure log merges on save so parallel batches no longer overwrite each other’s entries.

  • Odd-dimension sources (e.g. 360x221 msmpeg4 rips) are cropped by one pixel instead of crashing the x265 open; PowerShell’s trailing-backslash quoting accident on path arguments is repaired; default extensions now include .mov, .mpg, .mpeg, .m2ts, .mts and .3gp.

  • Interlaced sources (DVD, AVCHD 1080i…) are deinterlaced automatically (bwdif, driven by the probed field order) when they get transcoded.

  • -D user@alias destinations are accepted; a server refusing SFTP (Synology ships with the service disabled) now yields a clear message with the remedy instead of a raw paramiko traceback; remote_workdir and remote_workdir_sftp config keys for servers where the shell and SFTP see different trees (Synology chroots SFTP into the share tree: pair the default .rcomp with remote_workdir_sftp = "/home/.rcomp").

  • Many bug fixes: crash after a failed compression, unchecked replacement of sources in the default mode, POSIX-only local probe, scale idiom, ssh config Port ignored, paramiko output deadlock on long encodes…

0.1.5 (2025-02-21): Local mode added#

  • Set hostname to local to use local ffmpeg

  • Other default extensions added

0.1.4 (2025-02-01): Default extensions expanded#

  • TODO: add cli interface for extensions

0.1.3 (2024-12-16): New working directory#

  • Default server working directory switched to .rcomp

  • Update dependencies

0.1.1 (2024-03-30): Increased timeout#

  • The three timeout parameters of Paramiko have been increased.

0.1.0 (2024-03-22): First release#

  • First release on PyPI.