Commit Graph

745 Commits

Author SHA1 Message Date
OwsleyJr
0c326b7ccc fix: add download progress for deleted badge
fix: check if not processing first for movies
2025-10-08 00:04:06 -04:00
OwsleyJr
f61694d62d fix: prevent the delete status from changing unless a new request is made"
refactor: remove parent remove change until later date

refactor: remove console log
2025-10-08 00:04:06 -04:00
Brandon Cohen
a767f95aaf fix: better handling for active webpush subscription (#4146)
fix: remove yarn from package manager

fix: update openapi yml
2025-10-08 00:04:06 -04:00
fallenbagel
b383bbcdc1 refactor(MediaRequest): consolidate lifecycle hooks into subscriber & restrict cascade to prevent recursion (#4124)
* fix(mediarequest entity): narrow cascade to insert & remove to prevent hook recursion

Restrict cascade options on the MediaRequest→Media relation to only `insert` and `remove`to avoid
nested subscriber/AfterUpdate recursion when saving entities.

* fix(mediarequest): move methods modifying MediaRequest to its Subscriber

* fix(mediasubscriber): use event.manager for parent media updates on remove

Replace `getRepository(Media)` calls with `event.manager` in the `afterRemove` hook so that
parent-media status resets run within the same transaction/QueryRunner (important for postgresql.
Doesnt affect sqlite).

* refactor(mediasubscriber): make afterInsert and afterUpdate async and await internal operations

This should prevent unhandled promise rejections and ensure sequential execution of lifecycle
actions

---------

Co-authored-by: Gauthier <mail@gauthierth.fr>
2025-10-08 00:04:05 -04:00
Brandon Cohen
4fb5c62284 fix: filter specials from modal all seasons and watchlist (#4108)
* fix: filter specials from modal all seasons and watchlist

* fix: skip specials when marking available

* fix: edge case where specials were marked as completed
2025-10-08 00:04:05 -04:00
Brandon Cohen
f6824238f9 fix: handle partial seasons more reliably (#4116)
refactor: remove matchingOldSeason variable
2025-10-08 00:04:05 -04:00
Brandon Cohen
63b0af8dfe fix: handle currently available non-completed media (#4115)
* fix: check media status has changed before modifying request

fix: refactor: code cleanup

* fix: manually load database entity seasons
2025-10-08 00:04:05 -04:00
Brandon Cohen
802680b08f fix: correct notification sending for wrong status (#4113) 2025-10-08 00:04:05 -04:00
Brandon Cohen
706b5ed779 fix: correct edge case with deletion not updating requests (#4110) 2025-10-08 00:04:05 -04:00
Brandon Cohen
214ccf5572 fix: availability sync requests (#3460)
* fix: modified media status handling when media has been deleted

fix: requests will now be updated to completed on scan

fix: modified components to display deleted as a status

fix: corrected media status switching away from deleted

fix: modified components to display deleted as a status

fix: corrected media status switching away from deleted

fix: base scanner will set requests to completed correctly

fix: mark available button correctly sets requests as completed

fix: status will now stay deleted after declined request

refactor: request completion handling moved to entity

fix: prevented notifications from sending to old deleted requests

refactor: cleaned up code and added more detail to logs

refactor: updated to reflect latest availability sync changes

* fix: fetch requests only if necessary in db and remove unneeded code

* fix: update request button logic to accomodate specials

fix: remove completed filtering in tv details

* fix: correctly set seasons status when using the manual button

* refactor: improve reliability of season request completion

refactor: remove seasonrequest code

* fix: send notification for 4k movies

fix: same for shows

* feat: add completed filter to requests list

refactor: correct label
2025-10-08 00:04:05 -04:00
Brandon Cohen
e9d4aa379a fix: correct specials affecting availability status (#4092)
* fix: remove specials affecting availability status

* refactor: add comments for scanner
2025-10-08 00:04:05 -04:00
Andrew Kennedy
48887e52f0 fix(servarr): merge series tags instead of overwriting them (#4019)
* Merge series tags instead of overwriting when adding a series that already exists

Currently, a request coming in for a series that already exists in sonarr nukes the tags in sonarr for the series in favor of the tags coming from overseerr. This change merges the two lists of tags and deduplicates them before sending them to sonarr.

* fix(servarr api): merge request media tags with servarr instead of overwriting

---------

Co-authored-by: Danshil Kokil Mungur <me@danshilm.com>
2025-10-08 00:03:50 -04:00
Brandon Cohen
a1470d9a6d fix: update migration script (#4065)
* fix: update migration script

fix: remove insert for new entities

* fix: correct migration name

* fix: correct name inside migration
2025-10-08 00:03:50 -04:00
Brandon Cohen
ba9121d3b9 fix: manage webpush notifications (#4059) 2025-10-08 00:03:50 -04:00
Brandon Cohen
33c2538845 Revert "fix: improved web push management (#3421)" (#4058) 2025-10-08 00:03:49 -04:00
Brandon Cohen
48aa68511b fix: improved web push management (#3421)
refactor: organized placement of new button + added comments

fix: added api routes for push registration

fix: modified get request to confirm key identity

fix: added back notification types to always show

feat: added a manageable device list

refactor: modified device list to make it mobile friendly

fix: correct typo for enabling notifications
2025-10-08 00:03:49 -04:00
Ahmed Siddiqui
6c075e9cb5 feat: add support for requesting "Specials" for TV Shows (#3724)
* feat: add support for requesting "Specials" for TV Shows

This commit is responsible for adding support in Overseerr for requesting "Special" episodes for TV
Shows. This request has become especially pertinent when you consider shows like "Doctor Who". These
shows have Specials that are critical to understanding the plot of a TV show.

fix #779

* chore(yarn.lock): undo inappropriate changes to yarn.lock

I was informed by @sct in a comment on the #3724 PR that it was not appropriate to commit the
changes that ended up being made to the yarn.lock file. This commit is responsible, then, for
undoing the changes to the yarn.lock file that ended up being submitted.

* refactor: change loose equality to strict equality

I received a comment from OwsleyJr pointing out that we are using loose equality when we could
alternatively just be using strict equality to increase the robustness of our code. This commit
does exactly that by squashing out previous usages of loose equality in my commits and replacing
them with strict equality

* refactor: move 'Specials' string to a global message

Owsley pointed out that we are redefining the 'Specials' string multiple times throughout this PR.
Instead, we can just move it as a global message. This commit does exactly that. It squashes out and
previous declarations of the 'Specials' string inside the src files, and moves it directly to the
global messages file.
2025-10-08 00:03:33 -04:00
Damien Fajole
ca860d62e7 feat(plex): refresh token schedule (#3875)
* feat: refresh token schedule

fix #3861

* fix(i18n): add i18n message

* refactor(plextv): use randomUUID crypto instead custom function
2025-10-08 00:03:33 -04:00
Max T. Kristiansen
f8212926d2 feat(watchlist): Cache watchlist requests with matching E-Tags (#3901)
* perf(watchlist): add E-Tag caching to Plex watchlist requests

* refactor(watchlist): increase frequency of watchlist requests

* fix: sync watchlist every 3 min instead of 3 sec
2025-10-08 00:03:32 -04:00
Joseph Risk
4a06f316e6 fix: api language query parameter (#3720) 2025-10-08 00:02:34 -04:00
Isaac M
3e6884859d feat(pushover): attach image to pushover notification payload (#3701) 2025-10-08 00:02:33 -04:00
Ryan Cohen
3de457f5bb docs: update docs links to docs.seerr.dev (#1990) [skip ci] 2025-10-07 16:48:51 +00:00
TheCatLady
2e2d2a031b chore: rename Jellyseerr -> Seerr, part 1 (#1984)
* chore: rename Jellyseerr -> Seerr, part 1

* chore: update Jellyfin bot name
2025-10-06 15:22:36 -07:00
Ludovic Ortega
166e2404b2 chore: remove unused files (#1966)
* chore: removed unused files

Signed-off-by: Ludovic Ortega <ludovic.ortega@adminafk.fr>

* chore: remove cypress deprecated config option

Signed-off-by: Ludovic Ortega <ludovic.ortega@adminafk.fr>

* chore: remove deprecated log file

Signed-off-by: Ludovic Ortega <ludovic.ortega@adminafk.fr>

---------

Signed-off-by: Ludovic Ortega <ludovic.ortega@adminafk.fr>
2025-10-06 14:50:38 -04:00
Gauthier
f2bd0abcd8 fix(api): add a migration script to rename *arr tags with spaces (#1946)
* fix(api): add a migration script to rename *arr tags with spaces

This PR adds a migration script that will run at the startup of the app to remove the spaces from
the *arr tags of Jellyseerr.

fix #1897
re #1913
re https://github.com/Radarr/Radarr/issues/11251

* fix: add error message to logs
2025-10-01 11:42:10 +02:00
ale183
b209e7fdf9 feat: add anidb support to jellyfin scanner (#1533)
* feat: anidb on jellyfin scanner

* fix: handle 4k movies if the provider is anidb

* fix: add nullish coalescing for anidbId

* Update server/lib/scanners/jellyfin/index.ts

Co-authored-by: Gauthier <mail@gauthierth.fr>

* fix: await getEpisodes call in JellyfinScanner to handle async behavior

---------

Co-authored-by: Gauthier <mail@gauthierth.fr>
2025-09-25 19:04:42 +05:00
0xsysr3ll
c024799dae feat(api): add completed count to request count API (#1824) 2025-09-24 14:03:33 +02:00
Gauthier
837629ec47 fix(api): remove spaces from tags in *arr (#1913)
This PR removes the spaces in the tags sent to *arr when the Tag Requests option is enabled. Spaces
in tags are an unintended behavior and are not longer supported.

fix #1897
2025-09-24 10:24:12 +05:00
Gauthier
328517cc0a fix(watchlist): handle undefined Guid for Plex watchlist metadata (#1914) 2025-09-21 20:46:29 +05:00
fallenbagel
9e737576de fix(dnscaching): check dnsCache before init & support forceipv4 with caching (#1910)
* fix: ensure dnsCache is checked for when its enabled before initialization

previously dnsCache was being initialized even if it was disabled because the previous check was
always returning truthy.

fix #1857

* chore: update dns-caching to 0.2.6

This will allow dns-caching to respect forceIpv4 flag.

* chore: update dns-caching to 0.2.7
2025-09-18 16:30:42 +05:00
0xsysr3ll
cd479d0d17 feat(api): add excludeKeywords parameter to discovery queries (#1908)
Signed-off-by: 0xsysr3ll <0xsysr3ll@pm.me>
2025-09-17 03:32:39 +08:00
Gauthier
e9f2f4490f fix(api): catch error when watchlist item doesn't exist anymore (#1907) 2025-09-16 15:42:41 +02:00
0xsysr3ll
17172e93f9 feat(webhook): add support for dynamic placeholders in webhook URL (#1491)
* feat(wehbook): add support for dynamic placeholders in webhook URL

* refactor(webhook): rename supportPlaceholders to supportVariables and update related logic

Signed-off-by: 0xsysr3ll <0xsysr3ll@pm.me>

* feat(i18n): add missing translations

Signed-off-by: 0xsysr3ll <0xsysr3ll@pm.me>

* refactor(notifications): simplify webhook URL validation logic

Signed-off-by: 0xsysr3ll <0xsysr3ll@pm.me>

* fix: wrong docs url

Co-authored-by: Gauthier <mail@gauthierth.fr>

* fix: update webhook documentation URL to point to Jellyseerr

Signed-off-by: 0xsysr3ll <0xsysr3ll@pm.me>

---------

Signed-off-by: 0xsysr3ll <0xsysr3ll@pm.me>
Co-authored-by: Gauthier <mail@gauthierth.fr>
2025-09-10 17:20:58 +08:00
THOMAS B
4878722030 fix(tvdb): respect display language when fetching metadata (#1889)
* fix(tvdb): respect display language when fetching metadata

* refactor(tvdb): use seasons translation

* refactor(tvdb): limit while loop

* fix(tvdb): fix translation with '-'

* refactor(tvdb): remove logs

* style(tvdb): remove useless logs

* refactor(tvdb): simplify wanted translation condition

* refactor(languages): move AvailableLocale  from context to types
2025-09-08 20:20:21 +08:00
Ishan Jain
479be0daeb feat(notifications): make embedded posters optional (#1364)
* feat(notifications): make images optional

* fix(notifications): added en i18n config

* fix: prettify

* fix(notifications): added embedImage support for ntfy

* fix(frontend): update embedImage on form state change and submission

* fix(locale): updated locale for embedImage

* fix: renamed embedImage to embedPoster
2025-09-08 14:11:31 +02:00
THOMAS B
6245dae3b3 fix(tvdb): return specials seasons (#1894) 2025-09-08 10:49:26 +02:00
0xsysr3ll
13fe4c890b feat(issue): add issue description preview (#1881)
* feat(issue): add issue description preview

This PR adds a description preview to the issues list page, allowing users to quickly view issue details without navigating to individual issue pages.

Signed-off-by: 0xsysr3ll <0xsysr3ll@pm.me>

* fix(issue): remove unnecessary user join

Signed-off-by: 0xsysr3ll <0xsysr3ll@pm.me>

---------

Signed-off-by: 0xsysr3ll <0xsysr3ll@pm.me>
2025-09-04 10:24:08 +02:00
THOMAS B
22b2824441 feat: add tvdb indexer (#899)
* feat(tvdb): get tv seasons/episodes with tvdb

* fix: fix rate limiter index tvdb indexer

* fix(usersettings): remove unused column tvdbtoken

* refactor(tvdb): replace tvdb api by skyhook

* fix: error during get episodes

* fix: error if tmdb poster is null

* refactor: clean tvdb indexer code

* fix: wrong language with tmdb indexer

* style: replace avalaible to available

* style: tvdb.login to tvdb.test

* fix(test): fix  discover test

* fix(test): wrong url tv-details

* test(tvdb): add tvdb tests

* style(tvdb): rename pokemon to correct tv show

* refactor(indexer): remove unused getSeasonIdentifier method

* refactor(settings): replace tvdb object to boolean type

* refactor(tmdb): reduce still path condition

* test(tvdb): change 'use' to 'tvdb' condition check

* fix(tmdb): fix build

fix build after rebase

* fix(build): revert package.json

* fix(tvdb): ensure that seasons contain data

* refactor(swagger): fix /tvdb/test response

* fix(scanner): add tvdb indexer for scanner

* refactor(tvdb): remove skyhook api

* refactor(tvdb): use tvdb api

* fix(tvdb): rename tvdb to medatada

* refactor(medata): add tvdb settings

* refactor(metadata): rewrite metadata settings

* refactor(metadata): refactor metadata routes

* refactor(metadata): remove french comments

* refactor(metadata): refactor tvdb api calls

* style(prettier): run prettier

* fix(scanner): fix jellyfin scanner with tvdb provider

* fix(scanner): fix plex scanner tvdb provider

* style(provider): change provider name in info section

* style(provider): full provider name in select

* style(provider): remove french comment

* fix(tests): fix all cypress tests

* refactor(tvdb): fix apikey

* refactor(tmdb): apply prettier

* refactor(tvdb): remove logger info

* feat(metadata): replace fetch with axios for API calls

* feat(provider): replace indexer by provider

* fix(tests): fix cypress test

* chore: add project-wide apikey for tvdb

* chore: add correct application-wide key

* fix(test): fix test with default provider tmdb anime

* style(cypress): fix anime name variable

* chore(i18n): remove french translation + apply i18n:extract

* style(wording): standardize naming to "Metadata Provider" in UI text

* docs(comments): translate from French to English

* refactor(tvdb): remove unnecessary try/catch block

* feat(i18n): add missing translations

* fix(scanner): correct metadata provider ID from Tmdb to Tvdb

* style(settings): clarify navigation label from "Metadata" to "Metadata Providers"

* style(logs): update error log label from "Metadata" to "MetadataProvider"

* refactor(tvdb): replace indexer by metadata providers

* refactor(settings): remove metadata providers logo

* fix(config): restore missing config/db/.gitkeep file

---------

Co-authored-by: TOomaAh <ubuntu@PC>
Co-authored-by: fallenbagel <98979876+Fallenbagel@users.noreply.github.com>
2025-09-02 22:40:47 +02:00
Gauthier
368ecf8771 fix(dnscaching): display stats for DNS caching (#1858)
* fix(dnscaching): display stats for DNS caching

* fix: add missing translation
2025-08-20 17:32:59 +08:00
Georgy
d3fd5028dc feat: add IMDb rating votes count in tooltip (#1696)
* feat: add IMDb rating votes count in tooltip

* feat: add IMDb rating votes count in tooltip

* feat: add IMDb rating votes count in tooltip
2025-08-19 22:26:42 +02:00
fallenbagel
b4adfd2ffa feat: dns caching manager (#1294)
* feat(dns): implement dns caching

* feat: simple implementation of dnscaching

* feat: dynamic ttl which is revalidated while using stale dns cache

This is done as tmdb ttl is very less like 40 seconds so to make sure
any issues wont be caused due to cached dns (previously we were caching
for 5 minutes no matter what ttl)

* feat(dns): improve DNS cache with multi-strategy fallback system

- multiple DNS resolution strategie
- graceful fallbacks between IPv6 and IPv4 addresses
- network error reporting in fetch fix
- compatibility with cypress testing (I HOPE)

* fix: typos

* feat: dns cache stats in jobs & cache page (and cleanup)

* feat(networksettings): cache dns off by default

* feat: make dnsCache optional and enable-able through network settings

* chore(i18n): extract translation keys

* test(cypress): fix cypress testing

* feat(dnscache): dns cache entries are now flushable

* style(cypress): run prettier

* chore(cypresssettings): git ignore cypress json settings

* chore: ignore cypress/config/settings.json

* fix(dnscache): use entry specific hits and misses not global

* refactor: clean up console logs

* fix(dnscache): fix miss counter

* feat(dnscache): global stats

* chore(i18n): extract translation keys

* refactor: use date-fns for formatting age and remove useless code

* refactor: remove cypress testing options in dnsCacheManager

* refactor: remove console logs

* refactor: removed useless condition when its always truthy

* fix: remove FetchAPI-related code

* fix: remove old ipv4first setting

* refactor: use our own dns-caching package instead

* fix: correct dns-caching module configuration

* fix: correct dns-caching module configuration

* fix: remove useless lru-cache dependency

* fix: update dns-caching to v0.2.0

* fix: add env variable for min/max ttl & update dns-caching

* fix: update dns-caching package

* fix: add force min/max TTL in network settings

* docs: add docs for dns caching

---------

Co-authored-by: Gauthier <mail@gauthierth.fr>
2025-08-20 03:02:21 +08:00
0xsysr3ll
17d4f13afe fix(api): update Plex Watchlist URL (#1847) 2025-08-15 03:57:30 +08:00
0xsysr3ll
3292f11308 fix(MediaRequestSubscriber): use event manager to get fresh media state for MEDIA_AVAILABLE notifications (#1825)
* fix(MediaRequestSubscriber): use event manager to get fresh media state for MEDIA_AVAILABLE notifications

* refactor(MediaRequestSubscriber): streamline media availability notifications
2025-08-10 21:33:06 +02:00
0xsysr3ll
e02ee24f70 fix(media): update delete media file logic to include is4k parameter (#1832)
* fix(media): update delete media file logic to include is4k parameter

* fix(media): revert to MANAGE_REQUESTS permission
2025-08-05 11:42:11 +02:00
0xsysr3ll
ca1686425b fix(blacklist): handle invalid keywords gracefully (#1815)
* fix(blacklist): handle invalid keywords gracefully

* fix(blacklist): only remove keywords on 404 errors

* fix(blacklist): remove non-null assertion and add proper type annotation

* refactor(blacklist): return null instead of 404 for missing keywords

* fix(blacklist): add type annotation for validKeywords

* fix(selector): update type annotation for validKeywords
2025-08-01 11:03:22 +02:00
Gauthier
e98f31e66c fix(proxy): initialize image proxies after the proxy is set up (#1794)
The ImageProxy for TMDB and TheTVDB were initialized before the proxy settings were set up, so they
were ignoring the proxy settings.

fix #1787
2025-07-24 10:33:53 +02:00
Gauthier
75a7279ea2 fix(proxy): modify the registration of the axios interceptors (#1791)
The previous way of adding Axios interceptors added a new interceptor each time, causing lags after
a while because of all the duplicate interceptors added.

fix #1787
2025-07-20 11:33:16 +02:00
ionred
510108f9bb fix: remove LunaSea (#1759)
* refactor(lunasea-removal): remove LunaSea

fixes #1756

* chore(localization): undo localization changes in favor of weblate
2025-07-09 16:03:06 +02:00
0xsysr3ll
8c43db2abf fix(gotify): notifications blocked when priority set to 0 (#1763)
This PR fixes an issue where Gotify notifications would not be sent when the priority was configured to 0.
2025-07-04 22:25:18 +02:00
Gauthier
b83367cbf2 fix(proxy): apply all proxy settings to Axios (#1741) 2025-06-25 22:40:24 +08:00