298 Commits

Author SHA1 Message Date
fallenbagel
66130beded fix(settings): persist new settings defaults to disk on startup (#2884) 2026-04-15 16:42:36 +02:00
0xsysr3ll
ff469cb6d7 feat(settings): add blocklist region and language options (#1802) 2026-04-15 16:42:52 +08:00
0xsysr3ll
15b31093c0 fix(auth): resolve Plex OAuth client ID mismatch (#2746) 2026-04-14 18:35:29 +08:00
Gauthier
9c4c674dc9 chore(deps): fix axios security vulnerability (#2872) 2026-04-14 00:19:13 +08:00
fallenbagel
43eff257e1 fix(overseerr-merge): sanitise corrupt quota values during overseerr migration (#2863) 2026-04-12 17:37:32 +02:00
Ludovic Ortega
2432e8dd7b feat(webhook): add imdbid to webhook notification (#2658)
Signed-off-by: Ludovic Ortega <ludovic.ortega@adminafk.fr>
2026-04-08 22:41:42 +02:00
v3DJG6GL
77f2c13cfb feat(notifications): add ntfy markdown formatting (#2602) 2026-04-04 17:51:41 +08:00
fallenbagel
685cb449b1 refactor(watchlistsync): log media request creation after success instead of before (#2790) 2026-04-01 15:07:34 +02:00
fallenbagel
036d000f26 refactor(imageproxy): reduce noisy image cache logging (#2789) 2026-04-01 14:40:14 +02:00
Angelo Olivera
865396fd28 fix(watchlist-sync): handle empty watchlists on PostgreSQL (#2718) 2026-03-23 18:55:40 +05:00
YakGravity
10f23f009d fix(jellyfin-scanner): add TheMovieDb provider fallback for Jellyfin scanner (#2605) 2026-03-17 16:18:43 +01:00
Michael Thomas
36243a0deb chore: upgrade to eslint v9 (#2574) 2026-03-16 21:12:30 +05:00
fallenbagel
6c52a2f3ad fix(settings): serialize settings writes and prevent partial overwrites (#2696) 2026-03-16 11:29:41 +01:00
fallenbagel
0be18968b4 fix: disambiguate tmdb ids by media type across lookups (#2577) 2026-03-14 23:47:21 +05:00
Jerra94
ff4ab21a9e feat(webhook): add jellyfinMediaId and jellyfinUserId to webhook notification (#1959) 2026-03-06 12:04:13 +01:00
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
61e0377361 feat(notifications): add priority setting for ntfy agent (#2306) 2026-03-02 04:37:57 +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
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
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
Gauthier
3eea8ee98e fix(watchlist): remove error log when a media from the watchlist is blacklisted (#2407) 2026-02-12 13:16:56 +05:00
0xsysr3ll
e3dc1c302d fix(webpush): avoid querying push subs with empty user list (#2380) 2026-02-09 15:34:13 +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
0xsysr3ll
62755692e9 fix(availability-sync): fix 4K media availability detection (#2298) 2026-01-23 12:26:07 +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
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
RolliePollie18
15356dfe49 fix(jellyfin-scan): reduce jellyfin API calls during recently added scan (#2205)
* 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>
2025-12-09 22:20:47 +08:00
Gauthier
4e9c94c80f feat: Overseerr to Jellyseerr migration (#2019)
* 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
2025-10-30 19:57:50 +01:00
Ludovic Ortega
b34ca1543a feat: do not enforce TLD on email (#2075)
fix #1846
2025-10-20 17:24:24 +03:00
J. Winters-Brown
f7f00ce361 feat: migrate to validator from email-validator (#2059)
* 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
2025-10-19 22:37:09 +02:00
fallenbagel
0d6bfa18cc fix(download-tracker): reset both service caches when resetting downloads (#2065) 2025-10-17 21:10:02 +02:00
Gauthier
34fcc5d2c7 chore: merge upstream (#2024) 2025-10-08 23:34:31 -04: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
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