Commit Graph

2837 Commits

Author SHA1 Message Date
fallenbagel
0293632b68 fix(mediarequestsubscriber): reset season statuses when a TV request is declined 2026-02-09 19:33:13 +08:00
fallenbagel
a37ee6fb30 fix: exclude current request from pending count during status updates
refactor: more loggssss

fix: pOTENTIAL FIX
2026-02-09 19:33:13 +08:00
fallenbagel
35050f7513 fix(media-request-subscriber): improve error handling and logging in request status updates 2026-02-09 19:33:13 +08:00
fallenbagel
c7d6073b72 fix(media-request-subscriber): better async handling for afterInsert & afterUpdate 2026-02-09 19:33:13 +08:00
fallenbagel
febf82e961 refactor(media-request): remove excessive debug logging 2026-02-09 19:33:13 +08:00
fallenbagel
95a9645019 fix(media-request-subscriber): prevent mediaId nullification from cascade saves
The mediaId FK on `media_request` rows was being set to NULL shortly after insert caused by
`mediaRepository.save(media)` being called with the requests relation loaded which in turn triggered
TypeORM's cascade reconciliation on all loaded request entities, corrupting the FK. This issue must
have even gotten worse when the saves were not being awaited in updateParentStatus which could have
caused race conditions between concurrent subscriber methods (updateParentStatus, sendToSonarr,
sendToRadarr) all firing from afterInsert.

fix #2315
2026-02-09 19:33:13 +08:00
fallenbagel
064b6eab74 refactor(media-request): remove all fixes and enable verbose debug logging 2026-02-09 19:33:12 +08:00
fallenbagel
c1977bb1a9 fix(media-request): update mediaId handling to use RelationId for TypeORM mapping 2026-02-09 19:33:12 +08:00
fallenbagel
c79f2a5e1b fix(media-request): set mediaId explicitly when creating MediaRequest instances 2026-02-09 19:33:12 +08:00
fallenbagel
15b017c52c fix(media-request): resolve mediaId null value using read-only column mapping 2026-02-09 19:33:12 +08:00
fallenbagel
58934d0455 fix(media-request): set mediaId explicitly to resolve TypeORM relation mapping issue 2026-02-09 19:33:12 +08:00
fallenbagel
a0c8c231fd fix: add explicit JoinClumn to MediaRequest media relation
Fixes intermittent NULL mediaId foreign key on media_request records byadding explicit @JoinColumn
decorator to the media relation. Without this,TypeORM's implicit FK mapping was unreliable, causing
orphaned requeststhat would crash the frontend when accessing user profiles. Also removes the
redundant @Column decorator for mediaId which conflicted withthe relation, and removes explicit
mediaId assignments in the constructorwhich are now handled correctly by TypeORM through the
relation.
2026-02-09 19:33:12 +08:00
seerr-weblate-bot
2dac679f1b chore(i18n): update translations from Weblate (#2378)
Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: Oleksandr Yurov <oyurov@icloud.com>
Co-authored-by: 宿命 <331874545@qq.com>
Co-authored-by: lauantaimakkara <a.lj.unma.va.l@googlemail.com>
Co-authored-by: Thadah <thadahdenyse+borgcube@protonmail.com>
Co-authored-by: Filip Zalitchi <nyt.g777@gmail.com>
Co-authored-by: Gökhan GÜRBÜZ <gkhn.gurbuz@hotmail.com>
Co-authored-by: HanaO00 <greenmalkak@gmail.com>
Co-authored-by: sephrat <sephrat.flo@gmail.com>
Co-authored-by: 0xsysr3ll <0xsysr3ll@pm.me>
Co-authored-by: Kyalarys <charli.pn@proton.me>
Co-authored-by: Mikael Wessel <post@mikaelkw.online>
Co-authored-by: Bas <910100490+weblate@proton.me>
Co-authored-by: Senne <senne@is.soms.moe>
Co-authored-by: ugyes <ferenc.bodi@live.com>
Co-authored-by: Kiss-Pusztai Balázs <balazs.movie@gmail.com>
Co-authored-by: NilsKarlssonPyssling <nisse@users.noreply.translate.jellyseerr.dev>
Co-authored-by: Jonas <jonaasjac@gmail.com>
Co-authored-by: Jamal R. <jamal2362@googlemail.com>
Co-authored-by: Christian <christian_thalmann@bluewin.ch>
Co-authored-by: Ulrik J <ulrikj@users.noreply.translate.jellyseerr.dev>
Co-authored-by: Fallenbagel <jellyseerr@borgcube.de>
2026-02-06 21:45:45 +01:00
fallenbagel
faa2c0a005 fix(servarr): add timeout to Radarr/Sonarr API requests to prevent infinite loading (#2375)
* 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
2026-02-06 21:38:21 +01:00
Ludovic Ortega
a0a784b976 docs: add missing migration steps (#2376) 2026-02-06 13:55:46 +01:00
0xsysr3ll
0d270ac871 ci(workflow): validate i18n locale files are synchronized (#2347) 2026-02-05 07:43:18 +01:00
fallenbagel
8fc68c3888 revert(media-request): revert #2316 explicitly setting the mediaId when creating request (#2372)
This just reverts #2316. A further description is not needed. **TYPEORM**, thats all thats needed to
say.
2026-02-04 17:51:59 +01:00
fallenbagel
8b41685b31 chore(deps): upgrade prettier, and tailwind (#2351) 2026-01-29 07:48:34 +01:00
renovate[bot]
5bd31040c0 chore(deps): update dependency pg to v8.17.2 (#2011)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-28 02:58:56 +05:00
renovate[bot]
127a91ca9c ci(actions): update github actions (#2346)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-27 20:27:51 +01:00
renovate[bot]
7d2e24a528 build(docker): update node.js to v22.22.0 (#2057)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-27 20:21:09 +01:00
fallenbagel
ddf347994a chore(deps): update dependencies and fix security vulnerabilities (#2342)
* 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.
2026-01-27 19:00:42 +01:00
fallenbagel
0f7d29624b fix(availability-sync): handle resolution check for single-server setups (#2334)
PR #1543 introduced resolution checking to check 4k from non4k media when users have both server
types configured with the same service. Howerver, this causes false deletions for users with only a
single non4k service when radarr upgrades file to 4k resolution. This fix only applies resolution to
checking when both 4k and non4k servers are configured. Otherwise then if file exists then it counts
as available
2026-01-26 20:58:24 +01:00
fallenbagel
f627a8e9db refactor(api): replace plex-api package with internal implementation (#2335)
Removes plex-api dependency and its type declarations. Then extends the ExternalApi class for
PlexAPI implementation to mimick the exact same old behaviour. This should resolve the security
vulnerabilities in transitive dependencies: form-data(critical), request (moderate, deprecated),
tough-cookie (moderate), xml2js (moderate). Plex-api itself is also no longer maintained.
2026-01-26 20:52:44 +01:00
Gauthier
6031fab3b4 fix(collection): allow re-request of deleted items in a collection (#2339)
Fix an issue where re-requesting an entire collection or some items of a collection is not possible
if these items have been deleted.

fix #1749
2026-01-26 16:15:47 +01:00
fallenbagel
e1d3f29383 chore(deps): update next, openpgp, bcrypt, cypress & eslint (#2336)
* chore(deps): update next, openpgp, bcrypt, cypress & eslint

next: ^14.2.25 → ^14.2.35 (fixes DoS, SSRF, cache key confusion)
openpgp: 5.11.2 → 6.3.0 (v5 EOL, v6 has active security support)
bcrypt: 5.1.0 → 6.0.0 (eliminates vulnerable tar dependency chain)
@types/bcrypt: 5.0.0 → 6.0.0 (matches bcrypt major version)
cypress: 14.1.0 → 14.5.4 (fixes form-data vulnerability)
eslint: 8.35.0 → 8.57.1 (latest supported 8.x release)

No changes in code requireed as all APIs remain compatible

* chore(deps): remove unused @formatjs/swc-plugin-experimental
2026-01-26 16:13:03 +01:00
fallenbagel
f8f90cb903 fix(deps): upgrade typeorm to 0.3.28 to address security vulnerabilities (#2333)
Upgrade typeorm from 0.3.12 to 0.3.28 to resolve multiple security vulnerabilities. Fixes high
severity SQL injection vulnerability in typeorm (CVE present in <0.3.26). Removes Windows-specific
postinstall workaround that's no longer needed.The fix for #478 was a workaround and is now resolved
upstream see (https://github.com/typeorm/typeorm/issues/9766). The issue was specifically with
TypeORM 0.3.12's glob pattern handling on Windows.

fix #478
2026-01-26 09:03:37 +01:00
fallenbagel
65844a2f23 chore(deps): migrate to @seerr-team/react-tailwindcss-datepicker (#2330)
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
2026-01-25 17:09:05 +01:00
0xsysr3ll
62755692e9 fix(availability-sync): fix 4K media availability detection (#2298) 2026-01-23 12:26:07 +01:00
fallenbagel
beba2ea099 fix(mediarequest): explicitly set mediaId when creating request (#2316)
* fix(mediarequest): explicitly set mediaId when creating

Intermittent issue where media_request records were created with mediaId = NULL,causing TypeError
when accessing request.media.tmdbId on the profile page. TypeORM's implicit relation-to-foreign-key
mapping was failing intermittently. This sets the mediaId column explicitly and adds a guard to
check to fail fast if media.id is not populated after save.

fix #2315

* refactor: better logging when media id not found
2026-01-23 14:32:46 +05:00
fallenbagel
88b2e7843f fix(sonarr): re-monitor episodes when re-requesting deleted but monitored seasons (#2312) 2026-01-20 18:34:21 +01:00
fallenbagel
dbd5935ade fix(proxy): configure proxy agent connection limits and IPv4 support (#2303)
* fix: configure axios proxy agent socket limits to prevent connection leaks

Add socket pool configuration to HttpProxyAgent and HttpsProxyAgent to
prevent connection leaks.

fix #2297

* fix(proxy): pass forceIpv4First option to custom proxy agent

* fix(proxy): add connection limits and IPv4 support to undici agents
2026-01-20 12:37:41 +01:00
fallenbagel
bb2120c14d fix(base-scanner): fix PROCESSING status persisting for unmonitored seasons (#2311)
BaseScanner's fallthrough logic was preventing unmonitored seasons from
resetting to UNKNOWN status.

fix #2310
2026-01-18 22:32:57 +05:00
fallenbagel
c9037f77e6 fix(network-settings): convert DNS cache TTL values to numbers (#2299)
This PR ensures DNS cache TTL values are properly converted to numbers before being sent to the
backend.

fix #2294
2026-01-17 13:46:05 +01:00
Brandon Cohen
48631db989 fix: preserve deleted status when processing movies (#2066)
* 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
2026-01-17 06:48:14 +05:00
fallenbagel
ac7c2983d3 fix(pushover): prevent notifications when agent is disabled or unconfigured (#2304) 2026-01-16 22:39:15 +01:00
fallenbagel
767dc529e8 fix(ui): correct season pluralization in RequestItem (#2307)
Fixes incorrect "Seasons" label when only one season is requested.

fix #2263
2026-01-16 22:12:21 +01:00
fallenbagel
448a25e2a4 fix(availability-sync): prevent incorrect season deletion when media server is unreachable (#2302) 2026-01-16 10:47:47 +01:00
fallenbagel
3f35b8c886 fix(ui): correct season pluralisation in RequestCard (#2305)
Fixes incorrect "seasons" label when only one season is requested. The plural form was being used
regardless of the actual count

fix #2263
2026-01-16 09:19:13 +01:00
fallenbagel
d0f029b46e fix(login): add missing keys to PlexLoginButton FormattedMessage children (#2291) 2026-01-12 10:50:33 +01:00
fallenbagel
e0a81038cd fix(plex-settings): fix Plex preset selection not enabling save button (#2289)
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
2026-01-11 19:17:47 +01:00
fallenbagel
4ab919360a fix(setup): fix Plex login not proceeding after authentication (#2290)
Directly fetch and populate SWR cache with user data instead of relying on revalidate() which is
disabled on auth pages since #2213

fix #2288
2026-01-11 18:43:27 +01:00
Someone
adbcf80333 fix(ui): remove duplicate download items in manage slide over (#1916)
* fix(ui): filter duplicate downloads in ManageSlideOver using downloadId

Apply the same logic as PR #927 to deduplicate season pack downloads
in the "Manage Series" slide-over panel.

* Update src/components/ManageSlideOver/index.tsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update src/components/ManageSlideOver/index.tsx

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

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Gauthier <mail@gauthierth.fr>
2026-01-07 16:06:11 +00:00
fallenbagel
f91a26befe fix(servarr): replace spaces in arr user tags with - (#2231)
* fix: sanitize disallowed characters in arr tags

Updates the tag creation to normalize diacritics, replace spaces with hyphens and stip any
non-alphanumeric characters from display name

fix #2229, fix #1897

* refactor: improve display name sanitization in tag creation

* fix: include displayName in user selection for tag migration

* fix(migrator): retrieve all user fields in tag migration

This is a one time migration so performance is neglible. This should trigger the @AfterLoad hooks
which sets the `displayName`
2026-01-06 03:18:06 +08:00
0xsysr3ll
0c95b5ec91 fix(migration): add cleanup step for duplicate push subscriptions before enforcing unique constraint (#2269)
Signed-off-by: 0xsysr3ll <0xsysr3ll@pm.me>
2026-01-05 10:54:31 +01:00
fallenbagel
193d4dc668 docs: temporarily make it clear seerr is not released (#2273) 2026-01-03 04:53:18 +00:00
0xsysr3ll
d0c9afc16e fix(webpush): improve iOS push subscription endpoint cleanup (#2140) 2025-12-31 13:44:45 +01:00
fallenbagel
57d583e1bd refactor(jellyfin-scanner): extend BaseScanner for jellyfin scanner (#2226)
* refactor(jellyfin-scanner): extend BaseScanner for jellyfin scanner

Refactors JellyfinScanner to extend BaseScanner class to align the jellyfin scanner architecture
with the plex scanner and reduce code duplication.

* fix(jellyfin-scanner): add imdbId handling back to fix a regression from original behaviour

* fix: add imdbId assignment for existing media entries

* fix: include imdbId in processed 4k media items and improve 4k detection

* fix(jellyfin-scanner): filter seasons based on settings for special episodes (regression)
2025-12-29 20:05:47 +08:00
samohtxotom
8bbe7864af chore(metadata-settings): add autoDismiss to toast notifications (#2254) 2025-12-27 06:27:12 +08:00
Gauthier
66b4e2c871 chore(issuetemplate): add a checkbox to search for existing issues (#2255) 2025-12-27 06:26:16 +08:00