github theantipopau/slimarr v2.2.0.0
Slimarr 2.2.0.0

5 hours ago

Slimarr 2.2.0.0

Released 2026-11-04.

This release makes replacements inspectable and reversible, adds Reference
Collections that work without a TMDB key, and verifies the downloaded file's
audio language before the library copy is touched.

Activity change details

Completed replacements now record a structured snapshot of the library file
before and after the swap:

  • resolution, video codec and audio codec
  • bitrate and HDR format
  • source type
  • the release title, group, indexer and selection reasons

Expand a row on Activity to see only the fields that changed. Entries
created before 2.2.0.0 keep their old "details not recorded" state.

Restore original

A replace:completed entry shows Restore original only while the
recycled original still exists and the original path is free.

On confirmation Slimarr:

  1. moves the current library file into the recycle bin,
  2. moves the original back to its recorded path,
  3. re-probes it and updates the movie record,
  4. refreshes Plex,
  5. adds the movie to the existing exclusions.movie_ids list with reason
    restored_by_user, so the next cycle skips it before any search,
  6. writes a new replace:restored Activity entry with the reversal details.

No file is deleted. If the second move fails, the first move is rolled back
and both files are left in place. The release being reverted is also
blacklisted as restored_original, so the next cycle does not immediately
re-grab a different release. The restore confirmation explains that the movie
will be excluded, and the exclusion remains visible and removable under
Settings → Exclusions. Removing the movie ID makes it eligible for
automatic replacement again.

Reference Collections without a TMDB key

Home Theatre and All-Time collections no longer depend on runtime TMDB title
resolution. Shipped seed entries carry pinned imdb_id and tmdb_id, and
membership/protection match Movie.tmdb_id first, then Movie.imdb_id,
populated from Plex GUIDs during the normal scan.

With no TMDB key:

  • collections load and show owned, missing and protected titles;
  • upgrade candidates are identified;
  • Radarr hand-off works by tmdbId;
  • missing titles use a plain title/year placeholder card;
  • custom collections work from TMDB IDs and Plex GUIDs.

A TMDB key is optional and only adds posters/backdrops and the opt-in
reference_collections.all_time.source: tmdb_top_rated list. If that source
is selected without a key, Slimarr falls back to the curated file and warns.

Post-download language verification

Before the original is recycled, Slimarr probes the downloaded file's audio
tracks with the shared normalize_language() helper.

  • No track in the preferred language: reject the release, blacklist it as
    audio_language_mismatch, leave the original untouched, and write a
    replace:rejected Activity entry plus a search diagnostic.
  • All tracks untagged (und or empty): accept, warn, and record
    language unverified in the change details.
  • NAS rule skips probing: skip the check and record the skip.
  • No preferred language configured: skip the check.

Part A fixes shipped alongside

  • Seed files are packaged for Docker, the Windows installer and package.ps1,
    with a startup warning when an enabled collection's seed is missing.
  • Radarr hand-off for a movie already in Radarr updates its quality profile,
    sets monitored=true, and runs a targeted MoviesSearch; it never changes
    the root folder or moves files.
  • The TMDB top-rated refresh only runs when that source is selected and a key
    exists. With the nightly cycle disabled, the fixed fallback runs at 12:45.
  • Disabling protection or a collection warns how many owned titles become
    eligible for shrinking.
  • Custom collection IDs are validated as positive integers and deduplicated.

Release workflow

A new .github/workflows/release.yml builds the Windows installer when a
v*.*.*.* tag is pushed, or when run manually from a tag. It validates that
the tag version matches backend/version.py, builds the frontend and installer
on windows-latest, uses docs/CHANGELOG_v<version>.md as the release body,
and attaches SlimarrSetup-<version>.exe to a GitHub Release using the default
GITHUB_TOKEN with contents: write. Existing CI, Docker publish and Pages
workflows are unchanged; Docker continues to publish on its existing tag
pattern.

Config save safety

Secrets supplied via SLIMARR_* environment variables are no longer written to config.yaml when the config is saved.

Known limitation: Saving the config from Settings or Restore removes YAML comments and unknown keys.

Verification and notes

  • SQLite test suite passes. PostgreSQL is not exercised by this repository's
    test harness and remains untested for this release.
  • The release workflow itself has not been executed in this change; only its
    YAML and build commands were validated locally.

Don't miss a new slimarr release

NewReleases is sending notifications on new releases.