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, settingURL_BASEbroke 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 MkdocstoZensicalwhich is a ground-up rebuild of theMaterial for Mkdocsby 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 aContentTypeErrorwhen 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_fromand 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_existsnot being corrected toTruewhen trailers already exist on disk but the flag is staleFalse(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_existsbeing incorrectly flipped toTruemid-download when a multi-profile download is in progress. Both the new-trailer detection loop and the reconciliation step now skip the upward correction whenmonitor=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_folderin 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_SCANsetting (env var and General Settings UI) that forces the nextScan Media Foldersrun to scan every folder in full, bypassing the folder-change optimisation. Designed as a one-shot fix for users with staletrailer_existsormedia_existsflags in folders with no recent file-system activity. The setting automatically resets tofalseonce the full scan completes.
Bug Fixes: š
- Fixed a
PermissionErroron container startup whenURL_BASEis set āindex.htmlis now owned byappuserat startup so it can apply the<base href>patch at runtime. - Removed restrictions on the
Downloadbutton in media details page. Previously it was checking fortrailer_exists=falseandyoutube_trailer_idchanged before sending the request - both restrictions removed. - Fixed
trailer_existsnot being reset toFalsewhen a trailer file is deleted externally (outside Trailarr). The files scan now correctly clears the flag ā and resetsmedia_existstoo ā when the media folder is no longer accessible. Related to #486 - Fixed stale
media_existsvalues left over from older versions. The files scan now reconcilesmedia_existsagainst disk after every folder scan, correcting both false-positives and false-negatives. - Fixed
trailer_existsandtrailer_exists-adjacent status updates not preservingDOWNLOADINGstatus. 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 = Falseand an emptymedia_filenameafter a Plex refresh. These fields are now populated from the PlexMedia.Part.filepath 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_fieldsnow compares existing values before committing, eliminating redundant writes on every routine Plex sync. - Plex refresh no longer overwrites
media_filenamefor 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, andArr 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=truelogin 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
Downloadbutton is shown inMedia Detailspage. 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 Folderstask 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
trailarrCLI 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
apschedulerto 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 Tasksnow 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
ScheduledTaskConfigthat 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 thedatabase is locked/busyerrors 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()andpathlib.Pathto 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 15yt-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 Searchsetting in Edit Profile page to clarify that it ignores the youtube id and always searches for trailers. - Added
Retry Countsetting 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 Newbutton in Custom Filters dialog would openAdd Filter Dialogand 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.8and various npm packages. - Dockerfile updated to use
nandyalu/python-ffmpegas the base image to leverage pre-installedffmpegbinaries.
v0.6.7-beta - January 13, 2026
What's New: āØ
- Added
DELETE_CORRUPTED_TRAILERSenvironment variable (default:True) to control whether corrupted trailers should be deleted during the cleanup task. - Updated
URL Basesetting 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 Proxysection 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 Cleanuptask where unverifiable files were being incorrectly marked for deletion. - Fixed
Pytestconfiguration issues causing failures in GitHub Actions.
Other Changes: ā”
- Improved video analysis to skip processing when
ffmpegfails to extract information, preventing potential errors. - Updated Arr data parsing logic to ensure media's
updated_attimestamp 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
Pathfrompathlibfor 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 AuthenticationandFFMPEG Timeoutsettings 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 lockederrors during heavy load. Added retries with exponential backoff for database operations that fail due to locking.
Other Changes: ā”
- Updated
python:aiohttpfrom3.13.2to3.13.3. - Updated
CleanupandScan All Media Folderstasks 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
Filestracking 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.0and various python packages. - Updated SQLModel to
0.0.31. - Updated Angular to
21.0.6and 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.