v0.10.0 - July 19, 2026
What's New: ✨
-
Downloads now drive the download engine — The Download Missing Trailers task no longer relies on the
trailer_existsflag. For every monitored media item it checks which profiles match and which of them already own a download — only genuinely missing ones are downloaded. Existing untracked trailers get claimed instead of re-downloaded, and downloading no longer switches monitoring off behind your back: an item can stay monitored forever without ever being re-downloaded. This structurally fixes the endless re-download loop class of bugs (#591 and friends). During this release cycle the engine also logs aSIGNAL-DISAGREEline whenever the old and new logic would have decided differently — if you spot unexpected downloads or skips, include those lines in your report.⚠️ Profile deletion caveat — downloads are owned by the profile that made them. Deleting a profile whose downloads exist and creating a similar one later means the new profile does not own those downloads and will download its own trailers for matching media. Prefer editing an existing profile over deleting and recreating it. -
Failed downloads back off instead of retrying every run — A trailer that can't be found retries after 1 day, then 2, then 4, capped at weekly, per media + profile. A manual download from Media Details always bypasses the backoff, and any successful download resets it.
-
Notifications via Apprise — Add your favorite services under Settings → Notifications: Discord, Telegram, Slack, email and 100+ more. Each channel picks which events it receives (e.g. a
#trailarr-downloadschannel subscribed to Trailer Downloaded). Discord channels get rich embeds, sent by a Trailarr-branded bot: media title, poster image, a ▶ YouTube link to the trailer, and color-coded events. Other services receive the same details as text (title, year, id, YouTube link), with the poster attached on single-media notifications where the service supports attachments. Bulk operations are batched into a single summarized message, so a library-wide sync won't flood your channel. Apprise URLs are stored write-only and never shown again after saving. A Test button verifies the setup instantly. See the Notifications guide for setup instructions. -
Direct install: smarter CLI and safer updates — The
trailarrCLI gains aversioncommand (shows the installed version and whether an update is available),trailarr update vX.Y.Zto install a specific version, and--forceto reinstall the current one. Updates now exit early when you are already up to date, verify the download against a published SHA-256 checksum, and — if anything fails mid-update — automatically restore the previous version and restart the service instead of leaving a broken install. Fresh installs can be pinned to a release too (TRAILARR_VERSION=v0.9.9before running the install script), and release assets now ship with a.sha256checksum file. -
Version-skipping upgrades are now guarded — Startup fixes are tracked per database, run in order on first boot, and the download task waits for them — so jumping multiple versions (e.g. v0.9.7 → v0.10.0) is safe: whatever the skipped versions fixed simply runs on first boot. Upgrading from versions before download tracking triggers one full disk scan before the first download run to prevent mass re-downloads. And starting an older Trailarr version against a database migrated by a newer one now refuses cleanly with instructions, instead of crashing confusingly (see the new Backup & Restore page).
⚠️ Stop Monitoring is deprecated — downloads are now tracked per profile, so this per-profile option is no longer needed to prevent re-downloads. Its legacy behavior is preserved for now (a successful download from a profile with it enabled marks the media fully satisfied), and it will be removed in an upcoming release.
Bug Fixes: 🐛
-
Play Video dialog no longer shows scrollbars — On wide screens (wider than 1600px) the video in Media Details → Files → Play Video was sized larger than the dialog itself, producing a horizontal scrollbar. The video now always fits the dialog exactly, and very tall videos shrink to fit the screen instead of scrolling.
-
Logs database now reclaims disk space — The daily logs cleanup deleted old log entries but SQLite never returned the freed space, so
logs.dbonly ever grew. The cleanup now purges old entries in a single efficient statement and compacts the database file afterwards (a 13 MB logs file with 50k old entries shrinks to ~0.1 MB in under a second). -
Direct install fixes across all platforms — A batch of fixes for bare-metal (non-Docker) installs:
trailarr updatereplaced the application files but never updated the recorded version, so the UI and startup banner kept showing the old version even though the update succeeded. Since the update runs the previously installed CLI, the display corrects itself starting with the next update after this release — or immediately, by editingAPP_VERSIONin the data directory's.env(e.g./var/lib/trailarr/.envon Linux) and runningtrailarr restart.- Re-running the installer over an existing install no longer silently moves the app to a different port or resets settings you changed (log level, monitor interval, etc.) — it now stops the running service first, keeps your port and settings, and only refreshes application files.
- The install script now finds
uvwhen run withsudoeven though uv is installed per-user in~/.local/bin— previously the most common cause of bogus "uv is not installed" failures. - On Linux,
trailarr updateleft everything exceptbackend/owned by root, which broke URL base support after the first update. Everything is now handed back to thetrailarrservice user. - On macOS, the installer resolved paths against root's home when run with
sudo, placing the data directory and LaunchAgent where the service could never start at login. All paths now resolve against the invoking user's account, and the service loads into that user's launchd session. - Apple Silicon Macs now get native arm64 ffmpeg builds instead of Intel binaries running under Rosetta.
- macOS and Windows installs now use the same isolated Python setup Linux already had, preventing "Failed to import encodings" service startup failures.
- Windows installs now warn that the startup task runs without network credentials (S4U logon) — media on mapped drives or password-protected shares needs a password-based task logon; the docs explain how.
- The service log file (
trailarr.log) now rotates at 5 MB instead of growing forever, and uninstall removes leftover log directories.
-
Configured
PGIDis now preserved for NFS access — Trailarr set the configuredPGIDas the app user's primary group but never added the user to that group's member list, so the group was missing from the process's supplementary groups after startup. On NFS servers that authorize against the supplementary group list, this caused permission errors on group-owned media paths even thoughPUID/PGIDwere configured correctly. The entrypoint now explicitly adds the app user to the configured group, so thePGIDsurvives into the running process. Thanks @d4rk22! (#620)
Other Changes: ⚡
- The docs site now publishes an
llms.txtfile — AI assistants asked to install or troubleshoot Trailarr can start there for accurate, up-to-date commands and links to the right doc pages. - Direct install docs updated and corrected: macOS service commands now use the user's launchd session, Apple Silicon ffmpeg sources added, and the Windows guide no longer incorrectly claims network shares are accessible from the default startup task.