* fix(servarr): add timeout to Radarr/Sonarr API requests to prevent infinite loading
Adds a 5-second timeout to all Radarr/Sonarr API requests and displays a warning banner when
services are unreachable. This prevents the Recent Requests section and request list pages from
hanging indefinitely when a configured service has connection issues.
fix#2374
* fix(requests): only show service error banner to users with advanced permissions
* chore(deps): update dependencies and fix security vulnerabilities
Update TypeScript 4.9 → 5.4. Update Zod 3 → 4. Update nodemailer 6 → 7. Update @typescript-eslint
packages to v7. Update xml2js, undici, lodash, axios, swr, winston- Add pnpm.overrides for
transitive dependency vulnerabilities
* chore: fix import ordering for TypeScript 5.4 compatibility
prettier-plugin-organize-imports behaves differently with TypeScript 5.4 vs 4.9, causing CI
formatting checks to fail. This reformats imports to match the ordering expected by the plugin with
the upgraded TS version.
Migrates from `react-tailwindcss-datepicker-sct` to `@seerr-team/react-tailwindcss-datepicker`, our
own fork published on npm. This fork includes a fix for keyboard input not working in single date
mode (typing a date and pressing enter now properly applies the filter).
fix#1585
* 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
* fix: add download progress for deleted badge
fix: check if not processing first for movies
* fix: add season pack change
Uses setValues instead of setFieldValue calls to properly trigger the validation and also added a
validateOnMOunt to ensure form validity is checked on initial render.
fix#2287
* 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
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>
* 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
The port of the proxy settings was saved as a string instead of a number, causing the API to throw
an error and making it impossible to save the network settings.
* fix: remove a console warning
* fix: Adds id attribute to select element for accessibility
Fixes label association by adding missing id attribute to the select dropdown, ensuring proper accessibility compliance and screen reader functionality.
* feat(requests): add user's avatar in front of Requested/Last Modified by
* refactor(requests): wrap both the avatar and the username in Link
* fix(requests): remove unnecessary margin between avatar and username
* 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>
This PR fixes a client-side TypeError in the "Recently Watched" section of user profiles. The issue occurred when recentlyWatched was undefined. The fix adds optional chaining (?.) to prevent the app from crashing.
Signed-off-by: 0xsysr3ll <0xsysr3ll@pm.me>
* 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