You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add folder_location and folder_location.not Plex search attributes for movie, show, and track-level music smart collections and Plex searches, using the root folders configured on the Plex library.
Add --timings/--timing (KOMETA_TIMINGS/KOMETA_TIMING) runtime support for diagnosing slow runs. When enabled, network calls, cache lookups, and major per-collection/per-library phases are timed; a summary prints to the log at the end of the run and a full per-source/per-library breakdown is exported as JSON/CSV to the logs directory. Disabled by default, with negligible overhead when off. Also adds an optional KOMETA_PROFILE=pyinstrument environment variable for deeper single-run profiling, writing an HTML report to the logs directory.
Add TVDB ID support to YamTrack builder, enabling import of TVDB show IDs from YamTrack lists and tracked pages alongside existing TMDb support.
Fixed
Send IMDb's web client identifier with GraphQL requests so imdb_search and IMDb-backed defaults are not rejected with HTTP 403; report HTTP and non-JSON GraphQL responses as contextual IMDb errors instead of uncaught JSON decoding tracebacks. #3444
Report IMDb chart GraphQL and HTML fallback failures as contextual IMDb errors instead of raising IndexError when the fallback page does not contain __NEXT_DATA__ chart data. #3446
Batch collection and playlist item_label, item_label.remove, item_label.sync, and non_item_remove_label updates through Plex multi-edit requests, grouped by library and media type and split by plex_bulk_edit_batch_size, instead of sending one label request per item.
Fail Letterboxd collection validation when a configured list or watchlist cannot be loaded, preventing sync mode from emptying an existing collection after a blocked or unavailable source request.
Treat TMDb connection failures, timeouts, HTTP 408/429/5xx, and backend-unavailable responses as transient service failures: retry discovery, pagination, item requests, and lazy object hydration consistently; emit concise retry warnings instead of tracebacks; and surface exhausted retries as a service-unavailable error.
Add the affected URL and HTTP status to exhausted empty TVDb response warnings; limit empty documents to three attempts with short exponential delays while retaining six attempts and the existing delay for other transient failures; and open a run-scoped circuit after two distinct URLs exhaust retries so a systemic TVDb outage does not generate thousands of requests and hours of retry delays.
Stop ntfy from sending an access-test notification whenever Kometa initializes the ntfy client.
Restore per-item label removal when deleting smart-label collections, preventing an AttributeError from the removed batch_edit_tags API.
Dispatch the configured delete webhook after every successful Kometa-managed collection or playlist deletion instead of only for delete_not_scheduled and delete_playlist; suppress the event for playlist sync's internal delete-and-recopy step. #3420
Add a per-library mass image-operation summary grouped by operation, source, image type, media level, and result while retaining per-item success messages, and collapse repeated No Reset Image Found warnings by image type in the end-of-run summary.
modules/plex.py: standardize Plex API retry handling so known 400/404/401 responses and Kometa Failed exceptions remain terminal, while exhausted transient retries re-raise their underlying exception instead of becoming opaque RetryError; collection move failures also include the item title and original Plex response, and query_collection/get_actor_id convert terminal Plex responses into contextual Kometa errors.
Added Drop-in replacement for the jikan api as it is being deprecated
Propagate the exit code from the worker process so --validate (and other runs) return a non-zero status on failure. Previously start() ran inside a ProcessPoolExecutor whose result was never retrieved, so a sys.exit(1) from a failed validation was swallowed and the parent always exited 0, breaking CI usage.
Fix the startup requirements version check so each package is compared against its own pinned requirement. Previously v1/v2 leaked between loop iterations and the package name lookup was case-sensitive, causing bogus messages such as GitPython version: 3.1.55 does not match expected: 1.4.14, where the expected value came from an unrelated package.
Resolve movie folder paths using the path style reported by the media server rather than the platform Kometa runs on. A Linux or Docker install pointed at a Plex server on Windows received paths such as P:\Movies\Title\file.mkv, which os.path.dirname reduced to an empty string, logging Plex Error: No location found for every movie and silently disabling add_existing, upgrade_existing, monitor_existing, item_radarr_tag, and item_sonarr_tag.
Fix streaming Defaults to more consistently use regional variants of Amazon, and stop trying to use Originals lists that do not exist
Changed
Replace the vague Input Failed error emitted when Trakt requires authorization in a non-interactive environment with an actionable Trakt-specific message, and include the failed token-refresh HTTP response in debug logs.