Removed redundant Plex user discovery logic that applies to all media servers currently. This is now
handled explicitly via linked accounts settings page. Also changed the successful logout log level
from info to debug since its routine behaviour
* fix(jellyfin scanner): reduce jellyfin API calls during recently added scan
Significantly reduce number of API calls, addressing CPU spikes on Jellyfin 10.10+ servers.- Move
getSeasons() call outside the seasons loop (N calls to 1)- Request MediaSources via getEpisodes()
field parameter instead of individual getItemData() calls per episode (N calls to 1 per season)
Performance improvements (tested on library with 12 TV shows):- Scan duration: 43.7s to 9.1s - Peak
CPU: 277% to 115% - CPU spike duration: 36s to 2s Functionality is unchanged, all availability
statuses identicalbefore and after.
* fix: add getEpisodes overloads to remove unsafe type assertion
* refactor(jellyfin): use generics instead of overloads
---------
Co-authored-by: patrick-acland <patrick.acland@kraken.tech>
Replace X-Emby-Authorization with Authorization header to fix authentication failures when users
have <EnableLegacyAuthorization>false</EnableLegacyAuthorization> in their Jellyfin system.xml.
* feat: add Overseerr migration
* refactor: rename to Seerr
* refactor: more rename to Seerr
* feat: update the value of the MediaStatus.DELETED enum
* fix: add more details in migration logs
* fix: replace .update by .save for TypeORM hooks
* fix: add fake migration to skip the duplicated UpdateWebPush migration
* fix: rewrite the AddUserAvatarCacheFields migration for Overseerr merge
* fix: replace jellyseerr migrations with a dedicated one for overseerr
* fix: update overseerr migration
* fix: update overseerr migration
* fix: remove irrelevant changes
* fix: typos
* docs: update jsdoc comment
* docs: update seerr description
* docs: fix the contributing.md link
* fix: remove unwanterd change on postgres dev datasource
* docs: add latest tag to docker image
* fix: migrate old deleted status for 4k media
* fix: update Seerr version check
* fix: include video content in the blacklisted tags processing job
Modified the “blacklisted tags” job to include adult & video content, this correctly blacklists more
adult films that were always missed, even if they had the tag.
* refactor: remove dead code
* refactor: remove redundant explicit arguments
This PR fixes an issue where removing 4K movies from Radarr failed when multiple Radarr instances were configured. The backend was misparsing boolean query parameters and using string slugs instead of TMDB IDs. The fix ensures that the correct 4K Radarr instance is targeted and that TMDB IDs are used for movie removal.
Signed-off-by: 0xsysr3ll <0xsysr3ll@pm.me>
* refactor(adds package): this adds the validator package and removes email-validator from dependencys
* refactor(auth.ts and email.ts): migrates from EmailValidator to validator
* 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
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
* 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
* 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
* 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>
* fix(MediaRequestSubscriber): use event manager to get fresh media state for MEDIA_AVAILABLE notifications
* refactor(MediaRequestSubscriber): streamline media availability notifications
* 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