Commit graph

788 commits

Author SHA1 Message Date
0xsysr3ll
3152f727ef
feat(notifications): webhook custom headers (#2230)
Signed-off-by: 0xsysr3ll <0xsysr3ll@pm.me>
2026-03-05 15:23:47 +05:00
fallenbagel
9ec3d585d1
fix(email): correctly classify final MIME header in PGP email encryption (#2618) 2026-03-04 03:17:56 +05:00
fallenbagel
a16d0464a6
fix(issues): update issue timestamp when adding comments (#2616) 2026-03-02 12:35:18 +01:00
Lachlan Wisdom
3557745b62
feat(jellyfin): allow Jellyfin Guids with dashes for import-from-jellyfin endpoint (#2340) 2026-03-02 16:22:33 +05:00
0xsysr3ll
c23117eb6b
feat(requests): mark requests as failed when Radarr/Sonarr unreachable (#2171)
Signed-off-by: 0xsysr3ll <0xsysr3ll@pm.me>
2026-03-02 04:41:27 +05:00
fallenbagel
61e0377361
feat(notifications): add priority setting for ntfy agent (#2306) 2026-03-02 04:37:57 +05:00
0xsysr3ll
001f6b1a34
fix(media): exclude null mediaAddedAt entries (#2607) 2026-03-01 22:51:51 +05:00
fallenbagel
5c34c91257
feat(sonarr): add monitorNewItems option to sonarr settings & modal (#2071) 2026-02-28 02:08:44 +05:00
ventiph
a2d1e1b06f
refactor(notifications): move event from author to title field in Discord Embed (#2119) 2026-02-28 01:48:11 +05:00
Rin
e086081b19
fix(proxy): add path validation guardrail to imageproxy (#2531) 2026-02-28 00:14:05 +05:00
Gauthier
946bdecec5
Merge commit from fork
This PR fixes a security issue where authenticated users could access and modify data belonging to
other users. The isOwnProfileOrAdmin() middleware was missing from several push subscription API
routes. As a result, any authenticated user on the instance could manipulate the userId parameter in
the URL to view or delete the push subscriptions of other users.
2026-02-28 00:58:50 +08:00
fallenbagel
4f089b29d0
Merge commit from fork
Add ownership check to GET /api/v1/user/:id so the full user object(including eager-loaded settings
with notification credentials) is onlyreturned to the user themselves or MANAGE_USERS admins. All
otherauthenticated users receive a stripped response (which is the intended behaviour as
https://github.com/sct/overseerr/pull/3695#issuecomment-1817827774). Also expands
User.filteredFields to strip sensitive fileds to prevent leaking credentials
2026-02-28 00:58:28 +08:00
fallenbagel
4ae2068409
Merge commit from fork
Fix a logic flaw in the jellyfin auth guard that allowed unauthenticated users to register accounts
on Plex-configured instances by authenticating against an attacker-controlled Jellyfin server.
2026-02-28 00:36:17 +08:00
Pierre Spring
10ea21b20f
feat: self-host font for better privacy (#2540) 2026-02-27 10:48:48 +01:00
Kenshin9977
55776ea24f
fix(radarr): trigger search for existing monitored movies without files (#2391) 2026-02-25 15:58:05 +01:00
0xsysr3ll
947f70c3d7
fix(watch-data): use sentinel values to avoid invalid SQL syntax (#2552) 2026-02-23 21:24:48 +01:00
fallenbagel
3bcb4da1e5
feat(servarr-api): make Servarr API request timeout configurable (#2556) 2026-02-23 00:32:31 +01:00
fallenbagel
5013d1d54d
fix(sonarr): use configured metadata provider for season filtering (#2516) 2026-02-22 18:13:39 +01:00
fallenbagel
68f56d2035
fix(jellyfin-scanner): include unmatched seasons in processable seasons (#2538) 2026-02-21 06:51:02 +05:00
fallenbagel
7c60a5c3c5
fix(plex-scanner): add TVDb to TMDB fallback in plex scanner (#2537) 2026-02-20 22:48:52 +01:00
fallenbagel
9da8bb6dea
fix: preserve blocklist on media deletion & optimise watchlist-sync (#2478) 2026-02-18 21:23:50 +01:00
fallenbagel
e0e4b6f512
fix(watchlist-sync): correct permission typo for TV auto requests (#2488) 2026-02-18 15:23:20 +01:00
fallenbagel
c6bcfe0ae4
perf: add missing indexes on all foreign key columns (#2461) 2026-02-17 00:36:55 +08:00
fallenbagel
b499976902
fix(servarr): increase default API timeout from 5000ms to 10000ms (#2442) 2026-02-15 17:19:27 +05:00
Gauthier
bcd8002887
fix: run the blocklist migration last (#2417) 2026-02-14 16:26:03 +01:00
Conlan Kreher
33a5d9a9ac
refactor: rename blacklist to blocklist (#2157)
Signed-off-by: 0xsysr3ll <0xsysr3ll@pm.me>
Co-authored-by: fallenbagel <98979876+Fallenbagel@users.noreply.github.com>
Co-authored-by: 0xsysr3ll <0xsysr3ll@pm.me>
Co-authored-by: gauthier-th <mail@gauthierth.fr>
2026-02-14 14:31:45 +01:00
fallenbagel
15be3d7475
fix(base-scanner): derive media availability from actual season state… (#2412) 2026-02-13 23:05:59 +05:00
fallenbagel
1ed86c14c0
fix(media-request-subscriber): prevent mediald nullification from cascade saves (#2356) 2026-02-13 15:02:22 +05:00
Gauthier
3eea8ee98e
fix(watchlist): remove error log when a media from the watchlist is blacklisted (#2407) 2026-02-12 13:16:56 +05:00
fallenbagel
4f7819f028
fix: add IF EXISTS to SQLite migration DROP INDEX statements (#2398) 2026-02-10 14:25:36 +01:00
0xsysr3ll
e3dc1c302d
fix(webpush): avoid querying push subs with empty user list (#2380) 2026-02-09 15:34:13 +01:00
fallenbagel
a44a3b1e14
perf: add database indexes & minor frontend/backend improvements (#2396) 2026-02-09 17:06:53 +05: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
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
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
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
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
448a25e2a4
fix(availability-sync): prevent incorrect season deletion when media server is unreachable (#2302) 2026-01-16 10:47:47 +01: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
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