Skip to content

2026

v0.9.5-beta - May 13, 2026

What's New: ✨

  • None in this release. You can skip this release as this is only for fixes related to Direct Install and Self Install scripts - No changes to app runtime, docker users have no real changes.

Bug Fixes: šŸ›

  • Fixed direct install scripts failing on Linux when run via curl | sh. Minor polish to console output during installation to show cleaner, correctly ordered messages.

Other Changes: ⚔

  • None in this release.

v0.9.4-beta - May 10, 2026

What's New: ✨

  • Refactored most of the frontend to fix some issues that were overlooked when updates were made to relevant logic in backend; and overhauled the UI styling to ensure everything is consistent.
  • Added Expanded and Table views in media pages with an option to select fields to display. Fixes #306.
  • Added Allowed Uploader IDs setting to Trailer Profiles — restrict trailer searches to specific YouTube channels by providing a comma-separated list of uploader handles (e.g. @WarnerBrosPictures) or channel IDs. Leave empty to allow all channels. See Search Settings for details. Fixes #59.

Bug Fixes: šŸ›

  • Fixed trailer search downloading vertical videos (YouTube Shorts). The search filter now rejects any result whose URL contains /shorts/, which yt-dlp sets at search time for Shorts content. Fixes #468.

Other Changes: ⚔

  • Updated Python and npm packages to latest versions.
  • Improved URL_BASE / reverse-proxy support — Trailarr now serves the frontend correctly at both the local URL (http://your-ip:7889/) and the sub-directory URL (https://mydomain.com/trailarr/) simultaneously. Previously, setting URL_BASE broke direct local access. If you use a reverse proxy with a sub-directory setup, please review your configuration to ensure the recommended headers (X-Forwarded-For, X-Forwarded-Proto, X-Forwarded-Host, X-Forwarded-Prefix) are forwarded correctly — see the Reverse Proxy Configuration docs for updated examples.

v0.9.3-beta - May 08, 2026

What's New: ✨

  • Refresh Plex Trailer Flags Task — New weekly task that caches whether Plex already has a trailer for each media item, eliminating repeated Plex API calls during every download run. See Tasks for details.
  • Plex refresh summary log — The Plex connection refresh now logs a single summary line at completion: how many library sections were scanned (vs total), and how many media items were added, updated, or newly linked. Example: Plex refresh complete for 'My Plex': 2/5 sections scanned, 12 added, 847 updated, 3 newly linked.
  • Plex section skip detection — Library sections whose root folders don't match any configured path mapping are now detected and skipped up front with a single log line per section, instead of logging one line per media item in that section.
  • Docs - Switched docs from Material for Mkdocs to Zensical which is a ground-up rebuild of the Material for Mkdocs by the same team. Refactored docs to make them work with Zensical.

Bug Fixes: šŸ›

  • Fixed Tasks page showing stale data after navigating away and back. The tasks data is now refreshed on every visit to the Tasks page, so completed or running tasks are always reflected immediately on return.
  • Fixed WebSocket connection and API calls failing when WebUI authentication is disabled. The WebSocket was connecting before the backend had a chance to set the session cookie, causing an immediate 401 rejection with no reconnect. The connection is now established only after the auth check confirms the session cookie is in place.
  • Fixed Plex library scan request failing after a trailer is downloaded. Plex's scan endpoint returns 200 text/html (not JSON), which caused a ContentTypeError when the code tried to parse the response as JSON. The scan now checks only the HTTP status code and ignores the response body. Fixes #557.
  • Fixed the download missing trailers task sleeping between downloads even when a trailer was skipped (e.g. Plex already has a trailer). The sleep (120–660 seconds) is now only applied after an actual download attempt, not on skips. Fixes #558.

Other Changes: ⚔

  • Centralised all path-mapping logic (subpath matching, path remapping, trailing-slash normalisation) into a single shared utility module used by all connection managers and the database layer. Fixes silent mapping failures when path_from and incoming paths use different separators (e.g. backslash vs forward slash on Windows), false-positive matches against sibling directories, and missing trailing-slash normalisation for Windows UNC paths (\\server\share).

v0.9.2-beta - May 06, 2026

What's New: ✨

  • Improved Search — Search is now instant (client-side, no API call). Results include the connection name so the same title from different connections (e.g. Radarr + Plex) can be told apart. Search now supports bracket filter syntax for precise lookups — see Search Documentation for details:
    • [id=<number>] — exact Trailarr ID match (e.g. [id=2])
    • [YYYY] (4 digits) — exact year match (e.g. [2026])
    • [anything else] — searches language, IMDb ID, TXDB ID, Studio, YouTube ID (e.g. [tt0133093], [Warner])
    • Multiple brackets are AND'd together: z [2026] [english] returns titles containing "z", year 2026, language English.
  • Toast Notification Improvements — Toast messages now show a type icon (āœ“ success, ⚠ error, ℹ info), a close button to dismiss immediately, and a progress bar that depletes over 3 seconds. Hovering over the toast will pause timer and show an option to pin it open (hides the progress bar) until manually closed.
  • Latest Jobs Only - Tasks page now only displays the latest job for scheduled tasks.

Bug Fixes: šŸ›

  • Fixed trailer_exists not being corrected to True when trailers already exist on disk but the flag is stale False (e.g. after a manual file copy or an app restart). The files scan now reconciles the flag upward as well as downward.
  • Fixed trailer_exists being incorrectly flipped to True mid-download when a multi-profile download is in progress. Both the new-trailer detection loop and the reconciliation step now skip the upward correction when monitor=True, preventing a race condition where setting the flag early would force monitoring off and cancel pending profile downloads.
  • Fixed several UI typos: Minuimum → Minimum, Maximun → Maximum, seperate → separate, atmost → at most, atleast → at least, Youtube → YouTube.

Other Changes: ⚔

  • Refactored scan_media_folder in the files scan task into focused helpers (_handle_folder_gone, _process_trailer_changes) so flag reconciliation logic is consolidated in one place.
  • Updated Search documentation to document the bracket filter syntax.
  • Updated Python and npm packages to latest versions.
  • Moved notifications into it's own component to keep the app component simple.

v0.9.1-beta - May 04, 2026

What's New: ✨

  • Force Full Files Scan — New FILES_FULL_SCAN setting (env var and General Settings UI) that forces the next Scan Media Folders run to scan every folder in full, bypassing the folder-change optimisation. Designed as a one-shot fix for users with stale trailer_exists or media_exists flags in folders with no recent file-system activity. The setting automatically resets to false once the full scan completes.

Bug Fixes: šŸ›

  • Fixed a PermissionError on container startup when URL_BASE is set — index.html is now owned by appuser at startup so it can apply the <base href> patch at runtime.
  • Removed restrictions on the Download button in media details page. Previously it was checking for trailer_exists=false and youtube_trailer_id changed before sending the request - both restrictions removed.
  • Fixed trailer_exists not being reset to False when a trailer file is deleted externally (outside Trailarr). The files scan now correctly clears the flag — and resets media_exists too — when the media folder is no longer accessible. Related to #486
  • Fixed stale media_exists values left over from older versions. The files scan now reconciles media_exists against disk after every folder scan, correcting both false-positives and false-negatives.
  • Fixed trailer_exists and trailer_exists-adjacent status updates not preserving DOWNLOADING status. Resetting the flag while a download is in progress no longer clobbers the active download status.
  • Fixed Plex-only media items (no Radarr/Sonarr backing) always having media_exists = False and an empty media_filename after a Plex refresh. These fields are now populated from the Plex Media.Part.file path on creation and kept in sync on subsequent refreshes.

Other Changes: ⚔

  • Plex connection refresh no longer writes to the database when nothing has changed. update_plex_fields now compares existing values before committing, eliminating redundant writes on every routine Plex sync.
  • Plex refresh no longer overwrites media_filename for Arr-linked media items. Only Plex-only rows (arr_id = 0) have their filename updated by Plex, preventing a circular overwrite loop between Arr and Plex refreshes.
  • Minor changes to the media card to ensure the animations are subtle but noticeable.
  • Some more polishing and minor updates to the direct install script for Windows.

v0.9.0-beta - April 30, 2026

What's New: ✨

  • Plex Integration — Trailarr can now connect to your Plex Media Server! Adding a Plex connection enables:
    • Automatic media linking — Trailarr matches your Radarr/Sonarr media to the corresponding Plex library entries and keeps them in sync.
    • Plex trailer detection — Trailarr checks whether Plex already has a remote trailer for a media item. Internet-sourced trailers are counted; locally added file trailers are excluded.
    • Skip if Plex trailer — New profile setting to skip downloading a trailer if Plex already has one at or above a configurable resolution threshold (480p–2160p, default 1080p).
    • Notify Plex — New profile setting to trigger a Plex library scan after a trailer is downloaded, so it appears in Plex immediately.
    • See Plex Connection Setup to get started, and the Plex profile settings reference for configuration details.
  • New Events — New event types are tracked for Plex-linked media: Plex Linked, Plex Unlinked, Plex Scan Triggered, Arr Linked, and Arr Unlinked. See the Events page for details.
  • Plex trailer status on Media Details — When a Plex connection is configured, the media details page shows whether Plex already has a trailer for that item.
  • Media-Deails Page > Download Button - Removed restrictions on when the Download button is shown as we now support multiple trailers download.
  • Media-Deails Page > Delete Button - Removed as this was deleting the first trailer file found in the media folder - ambiguous when a media has multiple trailers. Use the delete option from the files section instead.
  • Batch Edit > Delete - This now shows a confirmation dialog before deleting, and deletes all trailers of that media item.
  • New Login Page - Instead of a browser login, frontend now has a dedicated login page, along with some improvements to how authentication is handled. Logout button was always a bit flaky - this has been fixed. When WEBUI_DISABLE_AUTH=true login page is skipped and logout button is hidden.

Bug Fixes: šŸ›

  • Fixed an issue related to changing files ownership of app files which was causing issues on Proxmox. Fixes #539.
  • Added a check for file size less than 100 MB to be considered a trailer - helps when media title has trailer in it. Thanks to @Josh on Discord for the idea.
  • Removed restrictions on when Download button is shown in Media Details page. Fixes #486.
  • Fixed an issue which prevented loading more than 50 items (on scroll event not triggered) on large screens. Fixes #546.

Other Changes: ⚔

  • Faster Files Scan for large libraries — The Scan Media Folders task now checks folder modification times before doing a full recursive scan. If neither the media folder nor any of its immediate subdirectories (e.g., Trailers/) have changed since the last scan, the folder is skipped entirely. User-initiated scans always run in full. This significantly reduces scan time for large libraries where most folders are unchanged between runs.
  • Direct Installation — The direct install scripts have been overhauled and now fully support Linux, macOS, and Windows. Includes a native system service on each platform (systemd / launchd / Task Scheduler), GPU hardware acceleration (NVIDIA, Intel, AMD), and a trailarr CLI for managing the service. A new Build and Install guide has also been added for users who want to set up each step manually.

Existing Direct Install users

If you installed Trailarr using direct install previously, please uninstall and reinstall to pick up all the fixes and improvements. Your data will not be lost — when prompted during uninstall, choose to keep the data directory, then run the installer again. It will detect and reuse your existing configuration and database.

  • Updated relevant documentation pages to reflect new Plex features.

v0.8.0-beta - April 10, 2026

What's New: ✨

  • Switched background tasks from apscheduler to quiv that supports task cancellation. Made most tasks gracefully cancellable - meaning they will stopped at a reasonable stopping point during the task flow when cancellation is requested.
  • Tasks page has been updated to a new layout; Scheduled Tasks now have 3 actions: Run now, Pause/Resume, and Edit.
    • Run now: will run the task immediately
    • Pause/Resume: running tasks can be temporarily paused, and later resumed.
    • Edit: tasks can be configured to change their name, interval, and delay (delay can be used to adjust task run order).
  • Job Queue: jobs show a stop button while it is running, and can be used to gracefully stop.
  • Added a new database model for ScheduledTaskConfig that saves the task config and persists changes when edited.

Bug Fixes: šŸ›

  • The last update for database read/write sessions with locks and improved tasks should fix the issue of long running tasks. Fixes #483.

Other Changes: ⚔

  • Updated various Python and npm packages to latest versions.
  • Some layout changes in Events and Logs pages to make them consistent with page style.

v0.7.2-beta - April 05, 2026

What's New: ✨

  • Made database handling robust to reduce locking errors. Separated database sessions into read and write sessions - with threading.Lock() for write sessions so that only 1 write is permitted at any given time. This should reduce the database is locked/busy errors in most cases. Related to #483.

Bug Fixes: šŸ›

  • File naming now uses the actual downloaded file resolution, video codec and audio codec rather than relying on the profile options. Fixes #492.

Other Changes: ⚔

  • Refactored the trailer download and related code to use Python tempfile.gettempdir() and pathlib.Path to ensure it works on any platform - for future direct installations.
  • Added tests for trailer download flow (verification, media analysis, renaming, etc.,).

v0.7.1-beta - April 04, 2026

What's New: ✨

  • Added --sleep-subtitles 15 yt-dlp option to sleep for 15 seconds before subtitles download. Fixes #482.

Bug Fixes: šŸ›

  • Fixed minor layout issues in Logs to ensure consistency and visibility.

Other Changes: ⚔

  • Updated various Python and npm packages to latest versions.

v0.7.0-beta - February 11, 2026

What's New: ✨

  • Added Events Tracking System to track media lifecycle events. Events are automatically created for:
    • Media Added - When a new media item is added from a connection refresh.
    • Monitor Changed - When monitoring status changes for a media item.
    • YouTube ID Changed - When the YouTube trailer ID is updated.
    • Trailer Detected - When an existing trailer is found on disk.
    • Trailer Downloaded - When a trailer is successfully downloaded.
    • Trailer Deleted - When a trailer file is deleted.
    • Download Skipped - When a trailer download is skipped (e.g., no results found).
  • New Events Page in the web UI to view all events with:
    • Filtering by event type (All Events, Media Added, Monitor Changed, etc.).
    • Filtering by event source (All Sources, User, System).
    • Search/filter functionality to find specific events.
    • Infinite scroll with automatic loading of more events.
  • Media Events Section added to Media Details page showing recent events for that media item.
  • New Events API endpoints for retrieving events with optional filtering by event type, source, and media ID.
  • Redesigned Logs Page to match the new Events page design:
    • Cleaner row-based layout with log level icons and color coding.
    • Log level badge, filename:lineno, and timestamp displayed as metadata.
    • Traceback Dialog - Click the exception icon to view traceback details in a modal dialog instead of inline expansion.
    • Media link arrow for logs with associated media items.

Bug Fixes: šŸ›

  • None in this release.

Other Changes: ⚔

  • Events are stored in the database and can be queried via the API.
  • Updated logs page styling to be consistent with events page for a unified look and feel.
  • Various backend improvements for event tracking and database operations.

v0.6.10-beta - February 07, 2026

What's New: ✨

  • Updated the description of Always Search setting in Edit Profile page to clarify that it ignores the youtube id and always searches for trailers.
  • Added Retry Count setting in Edit Profile page to control the number of retry attempts for downloading trailers.

Bug Fixes: šŸ›

  • None in this release.

Other Changes: ⚔

  • Updated multiple npm packages to latest versions.
  • Updated multiple python packages to latest versions.
  • Updated relevant documentation pages to reflect new changes and features.

v0.6.9-beta - January 14, 2026

What's New: ✨

  • None in this release.

Bug Fixes: šŸ›

  • Fixed an issue where clicking on Add New button in Custom Filters dialog would open Add Filter Dialog and close immediately.

Other Changes: ⚔

  • Updated Reverse Proxy documentation to improve clarity.

v0.6.8-beta - January 14, 2026

What's New: ✨

  • Web UI will now remember the scroll position when navigating to a previous page, providing a smoother user experience.

Bug Fixes: šŸ›

  • Fixed an issue with Web UI not loading when visiting http://<server-ip>:<port> without a URL base set.

Other Changes: ⚔

  • Updated Angular to 21.0.8 and various npm packages.
  • Dockerfile updated to use nandyalu/python-ffmpeg as the base image to leverage pre-installed ffmpeg binaries.

v0.6.7-beta - January 13, 2026

What's New: ✨

  • Added DELETE_CORRUPTED_TRAILERS environment variable (default: True) to control whether corrupted trailers should be deleted during the cleanup task.
  • Updated URL Base setting to ensure it always starts with a / and doesn't end with a / for consistency, and a default formatter that enforces this behavior. Eg: trailarr, trailarr/ or /trailarr/ becomes /trailarr.
  • Made changes to the app to better support running behind reverse proxies.
  • Added a Reverse Proxy section in the documentation with common configurations for Nginx, Apache, Caddy, and Traefik.
  • Download button in logs now downloads all filtered logs (not just the visible ones) including tracebacks, sorted by date time in ascending order.

Bug Fixes: šŸ›

  • Fixed an issue in the Trailer Cleanup task where unverifiable files were being incorrectly marked for deletion.
  • Fixed Pytest configuration issues causing failures in GitHub Actions.

Other Changes: ⚔

  • Improved video analysis to skip processing when ffmpeg fails to extract information, preventing potential errors.
  • Updated Arr data parsing logic to ensure media's updated_at timestamp is only modified when there are actual changes to the media item and avoid unnecessary updates. Also, improves performance by reducing redundant database writes.
  • Updated the image downloader to use Path from pathlib for better path manipulations.
  • Updated project documentation and developer instructions.

v0.6.6-beta - January 09, 2026

What's New: ✨

  • Downloads in Media Details page now indicate if the relevant file is missing on disk.
  • Logs filtering will now include searching in tracebacks as well, and also does searches on the backend. Downloaded logs will be sorted by date time in ascending order for easier analysis.
  • Added options for Disable WebUI Authentication and FFMPEG Timeout settings to General Settings. Fixes #425.

Bug Fixes: šŸ›

  • Fixed an issue that was setting media items to monitored when all trailers were deleted for that media.
  • Fixed an issue that could cause database is locked errors during heavy load. Added retries with exponential backoff for database operations that fail due to locking.

Other Changes: ⚔

  • Updated python:aiohttp from 3.13.2 to 3.13.3.
  • Updated Cleanup and Scan All Media Folders tasks to not change media monitoring status when trailers are deleted.
  • Refactored some backend logic related to media status updates.
  • Updated relevant documentation pages to reflect new changes and features.
  • Fixed docstring formatting in Swagger UI for better readability, and marked some endpoints as deprecated that are not being used/maintained anymore.

v0.6.5-beta - January 04, 2026

What's New: ✨

  • Added Files tracking to media items. These are used to display the files and folders associated with each media item in the UI.
  • With the help of newly added files tracking, 2 new options for filters were introduced (Fixes #420):
    • Has File - Indicates whether the media item has a specified file.
    • Has Folder - Indicates whether the media item has a specified folder.
  • Logs now show a button to open the relevant media item directly from the log entry.

Bug Fixes: šŸ›

  • None in this release.

Other Changes: ⚔

  • Updated FastAPI to 0.128.0 and various python packages.
  • Updated SQLModel to 0.0.31.
  • Updated Angular to 21.0.6 and various npm packages.
  • This update includes various other minor improvements and optimizations.
    • Backend now uses generators for streaming large query results to reduce memory usage.
    • Updated models to save the datetime values in UTC format to avoid timezone issues.
    • Increased database connection pool size to improve performance under load.
    • Introduced new database queries that returns raw dictionaries instead of ORM models for better performance in certain scenarios, especially for newly added files models.
    • Frontend now uses the newly added raw dictionary queries for media items, downloads, and files to improve performance.
    • Angular Frontend is now completely zoneless, improving performance and reducing change detection cycles.
  • Updated Dockerfile to build Frontend static files and copy to final image. Removed the static build files from repository to reduce clutter.
  • Update Github Actions workflows to use latest actions versions.
  • Updated relevant documentation pages to reflect new changes and features.
  • Added some animations and view transitions to media cards and details for a smoother experience.