Skip to content

v0.5.2

Choose a tag to compare

@github-actions github-actions released this 11 May 22:19
· 304 commits to main since this release

Fixed

  • HEVC→HEVC re-encodes leaving newly-converted files showing as NEW in the Scanner. Reproduced on a Farscape Season 2 re-encode pass that only changed audio (DTS-HD MA → EAC3, video stream d3g-tagged HEVC pass-through). Root cause: the audio-codec-rename path at queue.py:2242+ (which renames the on-disk file when the audio codec marker in the filename changes — e.g. …DTSHDMA.mkv…EAC3.mkv) only updated scan_results.file_path, leaving converted=0. The late post-conversion update site then ran its already_correct check (introduced in v0.3.137 to skip duplicate work), which looks for converted=1 on the row at the new path — found converted=0, returned False, fell into the destructive DELETE+UPDATE pattern. The DELETE wiped the freshly-renamed row at the new path, the UPDATE matched 0 rows (original file_path no longer existed in scan_results), and the watcher's next sweep re-INSERTed the row as is_new=1, new_detected_at=now. Net symptom: row showing converted=1, is_new=1, new_detected_at=recent — three fields in an internally inconsistent state. Fix: (1) audio-rename UPDATE now also sets converted=1, is_new=0, new_detected_at=NULL parallel to the early/late update sites; (2) late-update site's already_correct check is now more permissive — also accepts "row exists at new path AND no row at old path" (rename happened upstream regardless of converted flag) before falling into destructive DELETE+UPDATE; (3) one-shot heal migration _v0_5_2_audio_rename_destructive_heal clears is_new + new_detected_at and sets converted=1 on any scan_results row matching a successful completed conversion job (drops v0.3.137 heal's original_file_path != file_path constraint, since audio-rename code paths may not persist original_file_path reliably; the v0.3.137 heal was one-shot so post-v0.3.137 conversions weren't caught either way).

Docker images

Pinned to this release:

docker pull ghcr.io/i-ial9000/shrinkerr:0.5.2         # portable (amd64 + arm64, CPU)
docker pull ghcr.io/i-ial9000/shrinkerr:0.5.2-nvenc   # x86_64 + NVIDIA GPU (NVENC)
docker pull ghcr.io/i-ial9000/shrinkerr:0.5.2-edge    # as above but ffmpeg master
docker pull ghcr.io/i-ial9000/shrinkerr:0.5.2-edge-nvenc

Floating tags (:latest, :edge, :nvenc, :edge-nvenc) track the most recent release of each lineage.