From 12986990aed6f2740eba3db4add6b5c1af863788 Mon Sep 17 00:00:00 2001
From: Fallenbagel <98979876+Fallenbagel@users.noreply.github.com>
Date: Tue, 16 Apr 2024 01:21:45 +0500
Subject: [PATCH] Merge origin/develop into main (#716)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* fix(i18n): fixed jellyfin jobs
* feat: translations update from Hosted Weblate (#3258)
* feat(lang): translated using Weblate (Korean)
Currently translated at 100.0% (1233 of 1233 strings)
feat(lang): translated using Weblate (Korean)
Currently translated at 100.0% (1233 of 1233 strings)
feat(lang): translated using Weblate (Korean)
Currently translated at 11.2% (139 of 1233 strings)
feat(lang): translated using Weblate (Korean)
Currently translated at 11.3% (139 of 1226 strings)
feat(lang): translated using Weblate (Korean)
Currently translated at 7.8% (96 of 1226 strings)
feat(lang): translated using Weblate (Korean)
Currently translated at 7.4% (91 of 1226 strings)
feat(lang): translated using Weblate (Korean)
Currently translated at 1.7% (21 of 1226 strings)
feat(lang): added translation using Weblate (Korean)
Co-authored-by: Developer J
Co-authored-by: Hosted Weblate
Co-authored-by: sct
Co-authored-by: 김상구 (Studio)
Co-authored-by: 최효근
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/ko/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Greek)
Currently translated at 100.0% (1234 of 1234 strings)
feat(lang): translated using Weblate (Greek)
Currently translated at 100.0% (1233 of 1233 strings)
feat(lang): translated using Weblate (Greek)
Currently translated at 100.0% (1233 of 1233 strings)
feat(lang): translated using Weblate (Greek)
Currently translated at 100.0% (1233 of 1233 strings)
Co-authored-by: BeardedWatermelon
Co-authored-by: Hosted Weblate
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/el/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Serbian)
Currently translated at 49.7% (608 of 1222 strings)
Co-authored-by: Dzonkins
Co-authored-by: Hosted Weblate
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/sr/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Spanish)
Currently translated at 100.0% (1234 of 1234 strings)
feat(lang): translated using Weblate (Spanish)
Currently translated at 100.0% (1233 of 1233 strings)
feat(lang): translated using Weblate (Spanish)
Currently translated at 100.0% (1228 of 1228 strings)
feat(lang): translated using Weblate (Spanish)
Currently translated at 100.0% (1226 of 1226 strings)
feat(lang): translated using Weblate (Spanish)
Currently translated at 100.0% (1224 of 1224 strings)
feat(lang): translated using Weblate (Spanish)
Currently translated at 100.0% (1223 of 1223 strings)
feat(lang): translated using Weblate (Spanish)
Currently translated at 100.0% (1222 of 1222 strings)
feat(lang): translated using Weblate (Spanish)
Currently translated at 100.0% (1222 of 1222 strings)
Co-authored-by: Angel
Co-authored-by: Hosted Weblate
Co-authored-by: gallegonovato
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/es/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Romanian)
Currently translated at 33.0% (408 of 1234 strings)
feat(lang): translated using Weblate (Romanian)
Currently translated at 29.7% (367 of 1234 strings)
feat(lang): translated using Weblate (Romanian)
Currently translated at 27.9% (345 of 1234 strings)
feat(lang): translated using Weblate (Romanian)
Currently translated at 27.8% (344 of 1233 strings)
feat(lang): translated using Weblate (Romanian)
Currently translated at 27.6% (339 of 1226 strings)
feat(lang): translated using Weblate (Romanian)
Currently translated at 27.4% (337 of 1226 strings)
feat(lang): translated using Weblate (Romanian)
Currently translated at 22.8% (279 of 1223 strings)
Co-authored-by: Bunduc Dragos
Co-authored-by: DragoPrime
Co-authored-by: Hosted Weblate
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/ro/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Russian)
Currently translated at 100.0% (1223 of 1223 strings)
feat(lang): translated using Weblate (Russian)
Currently translated at 87.4% (1069 of 1223 strings)
Co-authored-by: Hosted Weblate
Co-authored-by: Kirill Zhukov
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/ru/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Danish)
Currently translated at 100.0% (1233 of 1233 strings)
feat(lang): translated using Weblate (Danish)
Currently translated at 100.0% (1226 of 1226 strings)
feat(lang): translated using Weblate (Danish)
Currently translated at 100.0% (1222 of 1222 strings)
feat(lang): translated using Weblate (Danish)
Currently translated at 100.0% (1222 of 1222 strings)
Co-authored-by: Anders Ecklon
Co-authored-by: Emil Nymann
Co-authored-by: Hosted Weblate
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/da/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Hungarian)
Currently translated at 86.3% (1055 of 1222 strings)
Co-authored-by: Hosted Weblate
Co-authored-by: ZsiGiT
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/hu/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Dutch)
Currently translated at 99.4% (1226 of 1233 strings)
feat(lang): translated using Weblate (Dutch)
Currently translated at 100.0% (1226 of 1226 strings)
feat(lang): translated using Weblate (Dutch)
Currently translated at 100.0% (1224 of 1224 strings)
feat(lang): translated using Weblate (Dutch)
Currently translated at 100.0% (1223 of 1223 strings)
feat(lang): translated using Weblate (Dutch)
Currently translated at 100.0% (1222 of 1222 strings)
Co-authored-by: Bas
Co-authored-by: COTMO
Co-authored-by: Hosted Weblate
Co-authored-by: Kobe
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/nl/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Portuguese (Brazil))
Currently translated at 99.6% (1229 of 1233 strings)
feat(lang): translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (1228 of 1228 strings)
feat(lang): translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (1226 of 1226 strings)
feat(lang): translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (1224 of 1224 strings)
feat(lang): translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (1223 of 1223 strings)
feat(lang): translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (1222 of 1222 strings)
feat(lang): translated using Weblate (Portuguese (Brazil))
Currently translated at 99.2% (1213 of 1222 strings)
feat(lang): translated using Weblate (Portuguese (Brazil))
Currently translated at 99.1% (1212 of 1222 strings)
feat(lang): translated using Weblate (Portuguese (Brazil))
Currently translated at 99.1% (1212 of 1222 strings)
Co-authored-by: Hosted Weblate
Co-authored-by: Mateus
Co-authored-by: Rafael Vieira
Co-authored-by: Tijuco
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/pt_BR/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Czech)
Currently translated at 100.0% (1233 of 1233 strings)
feat(lang): translated using Weblate (Czech)
Currently translated at 99.7% (1223 of 1226 strings)
feat(lang): translated using Weblate (Czech)
Currently translated at 100.0% (1223 of 1223 strings)
feat(lang): translated using Weblate (Czech)
Currently translated at 96.4% (1179 of 1222 strings)
feat(lang): translated using Weblate (Czech)
Currently translated at 89.1% (1090 of 1222 strings)
Co-authored-by: Hosted Weblate
Co-authored-by: Marek
Co-authored-by: Smexhy
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/cs/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Arabic)
Currently translated at 100.0% (1234 of 1234 strings)
feat(lang): translated using Weblate (Arabic)
Currently translated at 100.0% (1234 of 1234 strings)
feat(lang): translated using Weblate (Arabic)
Currently translated at 100.0% (1233 of 1233 strings)
feat(lang): translated using Weblate (Arabic)
Currently translated at 100.0% (1233 of 1233 strings)
feat(lang): translated using Weblate (Arabic)
Currently translated at 100.0% (1233 of 1233 strings)
Co-authored-by: Fhd-pro
Co-authored-by: Hosted Weblate
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/ar/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (1222 of 1222 strings)
Co-authored-by: Hosted Weblate
Co-authored-by: ssantos
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/pt_PT/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (German)
Currently translated at 99.9% (1233 of 1234 strings)
feat(lang): translated using Weblate (German)
Currently translated at 99.5% (1228 of 1234 strings)
feat(lang): translated using Weblate (German)
Currently translated at 99.5% (1227 of 1233 strings)
feat(lang): translated using Weblate (German)
Currently translated at 100.0% (1226 of 1226 strings)
feat(lang): translated using Weblate (German)
Currently translated at 100.0% (1224 of 1224 strings)
feat(lang): translated using Weblate (German)
Currently translated at 95.9% (1172 of 1222 strings)
feat(lang): translated using Weblate (German)
Currently translated at 95.9% (1172 of 1222 strings)
feat(lang): translated using Weblate (German)
Currently translated at 94.7% (1158 of 1222 strings)
Co-authored-by: Ben
Co-authored-by: Furkan Çakar
Co-authored-by: Hosted Weblate
Co-authored-by: Juli
Co-authored-by: Leo Schultheiss
Co-authored-by: inkarnation <94744834+inkarnation@users.noreply.github.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/de/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Swedish)
Currently translated at 100.0% (1234 of 1234 strings)
feat(lang): translated using Weblate (Swedish)
Currently translated at 100.0% (1234 of 1234 strings)
feat(lang): translated using Weblate (Swedish)
Currently translated at 99.6% (1229 of 1233 strings)
feat(lang): translated using Weblate (Swedish)
Currently translated at 100.0% (1228 of 1228 strings)
feat(lang): translated using Weblate (Swedish)
Currently translated at 100.0% (1226 of 1226 strings)
feat(lang): translated using Weblate (Swedish)
Currently translated at 90.0% (1104 of 1226 strings)
feat(lang): translated using Weblate (Swedish)
Currently translated at 90.0% (1101 of 1222 strings)
Co-authored-by: Hosted Weblate
Co-authored-by: Luna Jernberg
Co-authored-by: Shjosan
Co-authored-by: Topfield99
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/sv/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Lithuanian)
Currently translated at 58.7% (725 of 1233 strings)
feat(lang): translated using Weblate (Lithuanian)
Currently translated at 58.6% (719 of 1226 strings)
feat(lang): translated using Weblate (Lithuanian)
Currently translated at 51.0% (624 of 1222 strings)
feat(lang): translated using Weblate (Lithuanian)
Currently translated at 43.9% (537 of 1222 strings)
Co-authored-by: Hosted Weblate
Co-authored-by: PovilasID
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/lt/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Catalan)
Currently translated at 100.0% (1226 of 1226 strings)
feat(lang): translated using Weblate (Catalan)
Currently translated at 100.0% (1224 of 1224 strings)
feat(lang): translated using Weblate (Catalan)
Currently translated at 100.0% (1224 of 1224 strings)
feat(lang): translated using Weblate (Catalan)
Currently translated at 100.0% (1223 of 1223 strings)
feat(lang): translated using Weblate (Catalan)
Currently translated at 99.5% (1217 of 1223 strings)
feat(lang): translated using Weblate (Catalan)
Currently translated at 99.4% (1216 of 1223 strings)
feat(lang): translated using Weblate (Catalan)
Currently translated at 98.6% (1207 of 1223 strings)
feat(lang): translated using Weblate (Catalan)
Currently translated at 97.2% (1189 of 1223 strings)
feat(lang): translated using Weblate (Catalan)
Currently translated at 94.3% (1154 of 1223 strings)
Co-authored-by: Hosted Weblate
Co-authored-by: Maite Guix
Co-authored-by: dtalens
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/ca/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Croatian)
Currently translated at 89.9% (1103 of 1226 strings)
Co-authored-by: Bruno Ševčenko
Co-authored-by: Hosted Weblate
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/hr/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Italian)
Currently translated at 92.2% (1138 of 1233 strings)
feat(lang): translated using Weblate (Italian)
Currently translated at 88.5% (1092 of 1233 strings)
feat(lang): translated using Weblate (Italian)
Currently translated at 85.8% (1058 of 1233 strings)
feat(lang): translated using Weblate (Italian)
Currently translated at 86.0% (1052 of 1223 strings)
feat(lang): translated using Weblate (Italian)
Currently translated at 83.2% (1017 of 1222 strings)
Co-authored-by: Francesco
Co-authored-by: Gian Marco Cinalli
Co-authored-by: Hosted Weblate
Co-authored-by: Mirco Cau
Co-authored-by: eggermn
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/it/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (1233 of 1233 strings)
feat(lang): translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (1226 of 1226 strings)
feat(lang): translated using Weblate (Chinese (Simplified))
Currently translated at 99.9% (1225 of 1226 strings)
feat(lang): translated using Weblate (Chinese (Simplified))
Currently translated at 99.9% (1225 of 1226 strings)
feat(lang): translated using Weblate (Chinese (Simplified))
Currently translated at 99.8% (1224 of 1226 strings)
feat(lang): translated using Weblate (Chinese (Simplified))
Currently translated at 99.9% (1223 of 1224 strings)
feat(lang): translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (1222 of 1222 strings)
feat(lang): translated using Weblate (Chinese (Simplified))
Currently translated at 98.0% (1198 of 1222 strings)
feat(lang): translated using Weblate (Chinese (Simplified))
Currently translated at 96.7% (1182 of 1222 strings)
Co-authored-by: Hosted Weblate
Co-authored-by: Jassy lin
Co-authored-by: anpplex
Co-authored-by: kx
Co-authored-by: lkw123
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/zh_Hans/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (French)
Currently translated at 100.0% (1234 of 1234 strings)
feat(lang): translated using Weblate (French)
Currently translated at 100.0% (1233 of 1233 strings)
feat(lang): translated using Weblate (French)
Currently translated at 99.9% (1225 of 1226 strings)
feat(lang): translated using Weblate (French)
Currently translated at 100.0% (1224 of 1224 strings)
feat(lang): translated using Weblate (French)
Currently translated at 100.0% (1223 of 1223 strings)
feat(lang): translated using Weblate (French)
Currently translated at 100.0% (1222 of 1222 strings)
feat(lang): translated using Weblate (French)
Currently translated at 100.0% (1222 of 1222 strings)
feat(lang): translated using Weblate (French)
Currently translated at 99.5% (1216 of 1222 strings)
feat(lang): translated using Weblate (French)
Currently translated at 99.5% (1216 of 1222 strings)
feat(lang): translated using Weblate (French)
Currently translated at 99.5% (1216 of 1222 strings)
feat(lang): translated using Weblate (French)
Currently translated at 100.0% (1222 of 1222 strings)
Co-authored-by: Hordo
Co-authored-by: Hosted Weblate
Co-authored-by: Mathieu
Co-authored-by: Maxent
Co-authored-by: Rémi Guerrero
Co-authored-by: Sulli
Co-authored-by: Symness
Co-authored-by: Valentin
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/fr/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Chinese (Traditional))
Currently translated at 99.7% (1219 of 1222 strings)
feat(lang): translated using Weblate (Chinese (Traditional))
Currently translated at 89.6% (1095 of 1222 strings)
Co-authored-by: Hosted Weblate
Co-authored-by: 주서현
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/zh_Hant/
Translation: Overseerr/Overseerr Frontend
---------
Co-authored-by: Developer J
Co-authored-by: sct
Co-authored-by: 김상구 (Studio)
Co-authored-by: 최효근
Co-authored-by: BeardedWatermelon
Co-authored-by: Dzonkins
Co-authored-by: Angel
Co-authored-by: gallegonovato
Co-authored-by: Bunduc Dragos
Co-authored-by: DragoPrime
Co-authored-by: Kirill Zhukov
Co-authored-by: Anders Ecklon
Co-authored-by: Emil Nymann
Co-authored-by: ZsiGiT
Co-authored-by: Bas
Co-authored-by: COTMO
Co-authored-by: Kobe
Co-authored-by: Mateus
Co-authored-by: Rafael Vieira
Co-authored-by: Tijuco
Co-authored-by: Marek
Co-authored-by: Smexhy
Co-authored-by: Fhd-pro
Co-authored-by: ssantos
Co-authored-by: Ben
Co-authored-by: Furkan Çakar
Co-authored-by: Juli
Co-authored-by: Leo Schultheiss
Co-authored-by: inkarnation <94744834+inkarnation@users.noreply.github.com>
Co-authored-by: Luna Jernberg
Co-authored-by: Shjosan
Co-authored-by: Topfield99
Co-authored-by: PovilasID
Co-authored-by: Maite Guix
Co-authored-by: dtalens
Co-authored-by: Bruno Ševčenko
Co-authored-by: Francesco
Co-authored-by: Gian Marco Cinalli
Co-authored-by: Mirco Cau
Co-authored-by: eggermn
Co-authored-by: Jassy lin
Co-authored-by: anpplex
Co-authored-by: kx
Co-authored-by: lkw123
Co-authored-by: Hordo
Co-authored-by: Mathieu
Co-authored-by: Maxent
Co-authored-by: Rémi Guerrero
Co-authored-by: Sulli
Co-authored-by: Symness
Co-authored-by: Valentin
Co-authored-by: 주서현
* feat: add Peacock to Network Slider (#3545)
* feat: add tooltips to tautulli avatars (#3601)
* named service inside docker-compose.yml
* Fix permissions on ManageSliderOver
Previously, would cause a 403 error when a non-admin user opened a movie/series page
* feat: add ko language (#3619)
* style: fix prettier errors
* Update de.json
Added a german translation for
"components.Discover.RecentlyAddedSlider.recentlyAdded": "Recently Added",
* feat: select default seriesType for anime (#3627)
* feat: select default seriesType for anime
Added flexibility to set default anime series type in service settings. Now you can choose
'standard' for anime if you prefer it, making it easier to use features like searching for season
packs on Sonarr.
fix #3626
* feat: extracted translations
* feat: standard series type selector (#3628)
* feat: added a standard series type selector
* fix: moved series type property to correct interface
* feat(notif): add Pushover sound options (#2403)
Co-authored-by: Danshil Kokil Mungur
* chore: specify files/directories to exclude from git archives (#2184)
Co-authored-by: Danshil Kokil Mungur
* feat: update SameSite policy of session cookie to Lax (#3650)
* update session cookie samesite policy to lax
* set cookie samesite policy based on csrf protection setting
* fix: resolved issue with region selector and all regions value (#3652)
* docs: add RemiRigal as a contributor for code (#3653) [skip ci]
* docs: update README.md
* docs: update .all-contributorsrc
---------
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
* fix: request watchlist items sequentially to prevent bypassing quota (#3667)
* build: update node to 20.9 (#3668)
* build: do not link python for arm (#3670)
* docs: adds jellyseerr commit links
Adds jellyseerr commit links to Fallenbagel. TODO: add other contributors of jellyseerr into the
list
* update emoji for jellyseerr contributor
* Too many jellyfishes
* build: update docker ubuntu images to 22.04 (#3671)
* build: use node 18 (#3675)
* build: add global node-gyp for arm (#3676)
* build: correct node version in snapcraft (#3678)
* chore(translations): fixed watchlist translation so its generic for all media servers
* revert(jellyfinapi): reverts #450 as it broke library sync support for local accounts using LDAP
Reverted #450 which addressed the issue where the automatic grouping enabled libraries were not
functioning correctly. The previous fix inadvertently caused a bug for Jellyfin LDAP users,
preventing library syncing with a 401 error. Reverting this change temporarily until support for
automatic library grouping can be re-implemented
fix #489
* fix(langcode): fixes the ukranian language code
This changes the ukranian language code from ua to uk to fit to ISO 639-1 format that the tmdb api
uses.
fix #504
* fix(jellyfinlogin): use externalHostname if set for forgetpassword link
Implemented dynamic URL generation for the 'Forgot Password' feature. If jellyfin external hostname
is set, the URL is generated based on it; otherwise, jellyfin hostname is used as the base URL. The
URL includes additional parameters to handle emby support.
fix #199, fix #424, re #212
* ci(build): changes the base of the snap build to fix compatibility issues with GLIBC version
Changes base to core20 in an attempt to fix the error `node: /lib/x86_64-linux-gnu/libc.so.6:
version `GLIBC_2.28' not found (required by node)` during snap builds
* build(snap): changes node-js plugin to npm plugin for Core20
In an attempt to fix version compatibility of `GLIBC_2.28` base was upgraded from core18 to core20.
Node-js plugin was deprecated for core20 and instead npm plugin has to be used. As npm plugin cannot
specify the package manager to use, yarn is now installed globally during the override-build phase.
* build(snap): fix path for the build-environment
* build(snap): use nil package and try to setup node in override-build step
* build(snap): add yarn install before yarn build
* build(snap): add frozen-lockfile and increase network timeout for yarn install
* build(snap): remove `rm .gitbook.yaml` line to fix snap builds
* fix(watchlist): discover local watchlist item display and profile local watchlist slider visibility
Previously when you expand the `Your Watchlist` slider from the discover page to see all your
watchlist items, you only see the first 20 items. This commit fixes that so you can see all your
local watchlist items when you expand that slider. In addition, this commit also fixes the visiblity
of profile watchlist slider for local watchlists
* refactor: cleans up local watchlist logic and fixes translation extractions
* fix: fix the translations for watchlist permissions and userSettings page
* docs: [skip ci] change contributor settings to add both upstream and downstream contributors
This commit changes the contributorrc for allcontributors bot so we can add both overseerr and
jellyseerr contributors to the list
* docs: update README to accomodate both upstream and downstream contributor list seperately
* docs: [skip ci] add in current project allcontributors only
As allcontributors bot does not support having two lists of allcontributors seperately,
unfortunately had to remove upstream contributors from the .all-contributorsrc. However, they will
be added manually by @Fallenbagel to the README.md
* docs: [skip ci] removed contributor block so all-contributors can handle it
* docs: update README.md
* docs: update .all-contributorsrc
* docs: update README.md
* docs: update .all-contributorsrc
* chore: [skip ci] added skipCi to all-contributorsrc temporarily
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
* Add more detailed installation instructions
* Update README.md
* ci(build): implement github repository container images
fix #370
* ci(build): hard-coded repository owner name for lowercase naming
* build: revert the hardcoded tag
* ci: github repository container lowercase tag
* update .github folder templates
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
* Adding Jellyfin Setting for Custom "Forgot Password" URL
Adding Jellyfin Setting for Custom "Forgot Password" URL. Useful in cases where you are using a custom authentication provider such as the LDAP plugin, Authelia, lldap, or any other external auth scheme with its own password reset page.
* Making the new setting optional
* Fixing code formatting, prettier
* fix(watchlist): added missing prop for watchlist item removal button in watchlist page
This fix resolves a Watchlist page bug where the isAddedToWatchlist prop was missing.
Without this prop, the removal button for watchlist items was absent. In this fix, the
isAddedToWatchlist prop is re-added and set to true, allowing users to remove items from
their local watchlist directly on the Watchlist page.
* fix: ensure watchlist updates are immediately reflected
This fix addresses an issue on the Watchlist page where changes to the watchlist were not
immediately reflected. Previously, after removing an item from the watchlist, the update
required a full page reload or revalidating upon focusing the window or tab. With this fix,
the watchlist now correctly mutates and updates in real-time, providing a seamless user
experience.
* fix: correct width issue in datepicker of filterSliderOver
This commit addresses a rendering issue with the date picker component.
The problem was traced back to a misconfiguration in the tailwindcss settings, resulting in an
incorrect width for the popup.
fix #415
* refactor: jellyfin scan jobs moved from server/jobs to server/libs/scanners
* fix: disable seasonfolder option in sonarr for jellyfin/Emby users
This disables seasonfolder option in sonarr for jellyfin/emby users as physical seasonFolders are
necessary as virtualFolders are ignored since #126
fix #575
* refactor: clean out commented code
* docs: reverted two unrelated files to its develop branch state
* fix: fix german translation for "components.Discover.FilterSlideover.tmdbuservotecount"
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
* Link related projects in README.md
* Add more badges and weblate status
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
* update weblate link
* move weblate details to contributing.md
* add translation percentage badge
* update discord badge
* docs: fix weblate link
* feat: added Letterboxd links for the external link blocks for movies
* ci(preview): added arm support for preview tags
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
* fix(jellyfin.ts): process virtual seasons if they have non virtual episodes (#639)
All seasons are processed now, but those without any episodes are filtered out again as unavailable.
This fixes in issue where jellyfin reports all seasons as virtual
* feat(job): media availability support for jellyfin/emby (#522)
* feat(job): media availability support for jellyfin/emby
This refactors the media availability job to support jellyfin/emby for media removal automatically.
Needs further testing on 4k items (as I have not yet tested with 4k), however, non-4k items work as
intended.
fix #406, fix #193, fix #516, fix #362, fix #84
* fix(availabilitysync): use the correct 4k jellyfinMediaId
* fix: season mapping for plex
Fixes a bug introduced with this PR where media availability sync job removed the seasons from all
series even when those seasons existed
* refactor: jellyfin authentication and add gravatar for missing avatars of jellyfin users (#664)
* refactor: jellyfin authentication
This refactor standardizes the authentication approach in Jellyfin to mirror the method employed in
Plex authentication for consistency
* feat: use gravatar for jellyfin users' with missing jellyfin avatars
* Fixed a typo (#654)
Just a simple typo fix.
* docs: add trackmastersteve as a contributor for doc (#665)
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
---------
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
* fix: typos on readme (#655)
* Fix typo
* Apply suggestions
* Apply suggestions
---------
Co-authored-by: Fallenbagel <98979876+Fallenbagel@users.noreply.github.com>
* fix(embyauth): remove the accidentally added mediaServerType change code from another PR (#684)
Accidentally added the mediaServerType change code from another feature branch/PR during the auth
logic refactor that broke emby logins.
* fix(jellyfinscanner): conditionally assign the jellyfinMediaId and jellyfinMediaId4k (#686)
Previously `jellyfinMediaId4k` was being assigned even if 4k server was not setup or even if 4k
content were not present. This fixes it by conditionally assigning the jellyfinMediaId and
JellyfinMediaId4k
fix #681
* feat: check if first jellyfin user is admin (#635)
* feat: merge check if first jellyfin user is admin
re #610
* refactor(i18n): extract admin error message into en locale
---------
Co-authored-by: fallenbagel <98979876+Fallenbagel@users.noreply.github.com>
* refactor(i18n): change the user-facing identity of the application in i18n (#703)
* fix: nullable type for jellyfinMediaId(4k) (#702)
The jellyfinMediaId(4k) properties were inferred as string | undefined, causing them to be set to
undefined when assigning null. This prevented the media from being saved correctly to the SQLite
database, as it doesn't accept undefined values. This resolves the availabilitySync job issue where
the "play on" button wasn't being removed for all media server types.
fix #668
* fix(jellyfinapi): refactors jellyfin library sync to support automatic grouping and collections (#700)
* fix(jellyfinapi): refactors jellyfin library sync to support automatic grouping and collections
Previously, #450 added support for automatic library grouping. However, some users reported that
they were getting a 401 when using custom authentication such as LDAP. Therefore, that PR was
reverted (#524). This PR adds back the support for automatic library grouping for jellyfin
authentication users using the endpoint `/Library/MediaFolders` and fallsback to User views endpoint
if they're unable to sync the libraries (some, not all LDAP users had issues. Some reported that it
worked despite having custom authentication). Once it falls back to user views endpoint for syncing,
now it will detect if automatic grouping is enabled giving a warning that its not supported when
using some custom authentication methods. This PR also fixed collection syncing by expanding the
boxsets when syncing.
fix #256, fix #489, re #450, #524, fix #515, fix #474, fix #473
* refactor(i18n): adds the suffix "jellyfin" to jellyfin library sync message keys
* refactor(i18n): extract translation keys
* refactor: remove console logs
* refactor: remove more console logs
* refactor: apply review suggestions
* chore: fix prettier failing on .github file
* feat: jellyseerr makeover (#715)
---------
Co-authored-by: Daniel Fendrich
Co-authored-by: Weblate (bot)
Co-authored-by: Developer J
Co-authored-by: sct
Co-authored-by: 김상구 (Studio)
Co-authored-by: 최효근
Co-authored-by: BeardedWatermelon
Co-authored-by: Dzonkins
Co-authored-by: Angel
Co-authored-by: gallegonovato
Co-authored-by: Bunduc Dragos
Co-authored-by: DragoPrime
Co-authored-by: Kirill Zhukov
Co-authored-by: Anders Ecklon
Co-authored-by: Emil Nymann
Co-authored-by: ZsiGiT
Co-authored-by: Bas
Co-authored-by: COTMO
Co-authored-by: Kobe
Co-authored-by: Mateus
Co-authored-by: Rafael Vieira
Co-authored-by: Tijuco
Co-authored-by: Marek
Co-authored-by: Smexhy
Co-authored-by: Fhd-pro
Co-authored-by: ssantos
Co-authored-by: Ben
Co-authored-by: Furkan Çakar
Co-authored-by: Juli
Co-authored-by: Leo Schultheiss
Co-authored-by: inkarnation <94744834+inkarnation@users.noreply.github.com>
Co-authored-by: Luna Jernberg
Co-authored-by: Shjosan
Co-authored-by: Topfield99
Co-authored-by: PovilasID
Co-authored-by: Maite Guix
Co-authored-by: dtalens
Co-authored-by: Bruno Ševčenko
Co-authored-by: Francesco
Co-authored-by: Gian Marco Cinalli
Co-authored-by: Mirco Cau
Co-authored-by: eggermn
Co-authored-by: Jassy lin
Co-authored-by: anpplex
Co-authored-by: kx
Co-authored-by: lkw123
Co-authored-by: Hordo
Co-authored-by: Mathieu
Co-authored-by: Maxent
Co-authored-by: Rémi Guerrero
Co-authored-by: Sulli
Co-authored-by: Symness
Co-authored-by: Valentin
Co-authored-by: 주서현
Co-authored-by: Jean Beauchamp
Co-authored-by: Ryan Cohen
Co-authored-by: Eduardo
Co-authored-by: Rick Luiken
Co-authored-by: Br33ce <124933490+Br33ce@users.noreply.github.com>
Co-authored-by: Brandon Cohen
Co-authored-by: TheCatLady <52870424+TheCatLady@users.noreply.github.com>
Co-authored-by: Danshil Kokil Mungur
Co-authored-by: RemiRigal
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
Co-authored-by: Athfan Khaleel
Co-authored-by: Derek Paschal
Co-authored-by: mdll23
Co-authored-by: Janek
Co-authored-by: Danish Humair
Co-authored-by: Aleksa Siriški <31509435+aleksasiriski@users.noreply.github.com>
Co-authored-by: InvalidArgumentException <150857901+InvalidArgumentException@users.noreply.github.com>
Co-authored-by: Stephen Harris
Co-authored-by: Gauvino <68083474+Gauvino@users.noreply.github.com>
---
.all-contributorsrc | 1098 ++------
.gitattributes | 21 +
.github/FUNDING.yml | 3 +-
.github/ISSUE_TEMPLATE/bug.yml | 4 +-
.github/ISSUE_TEMPLATE/config.yml | 2 +-
.github/ISSUE_TEMPLATE/enhancement.yml | 2 +-
.github/workflows/ci.yml | 14 +-
.github/workflows/preview.yml | 4 +-
.github/workflows/release.yml | 6 +-
.github/workflows/snap.yaml | 6 +-
CONTRIBUTING.md | 8 +-
Dockerfile | 16 +-
Dockerfile.local | 2 +-
README.md | 320 ++-
cypress/config/settings.cypress.json | 262 +-
docker-compose.yml | 2 +-
overseerr-api.yml | 35 +
public/android-chrome-192x192.png | Bin 26960 -> 17455 bytes
public/android-chrome-192x192_maskable.png | Bin 23752 -> 14087 bytes
public/android-chrome-512x512.png | Bin 78083 -> 61449 bytes
public/android-chrome-512x512_maskable.png | Bin 63879 -> 51242 bytes
public/apple-splash-1125-2436.jpg | Bin 82733 -> 36532 bytes
public/apple-splash-1136-640.jpg | Bin 19385 -> 13750 bytes
public/apple-splash-1170-2532.jpg | Bin 27997 -> 38566 bytes
public/apple-splash-1179-2556.jpg | Bin 0 -> 38849 bytes
public/apple-splash-1242-2208.jpg | Bin 27210 -> 38148 bytes
public/apple-splash-1242-2688.jpg | Bin 30713 -> 41658 bytes
public/apple-splash-1284-2778.jpg | Bin 32468 -> 43804 bytes
public/apple-splash-1290-2796.jpg | Bin 0 -> 44046 bytes
public/apple-splash-1334-750.jpg | Bin 20293 -> 16663 bytes
public/apple-splash-1488-2266.jpg | Bin 0 -> 45479 bytes
public/apple-splash-1536-2048.jpg | Bin 31881 -> 44983 bytes
public/apple-splash-1620-2160.jpg | Bin 118381 -> 48109 bytes
public/apple-splash-1640-2360.jpg | Bin 0 -> 50740 bytes
public/apple-splash-1668-2224.jpg | Bin 121716 -> 50269 bytes
public/apple-splash-1668-2388.jpg | Bin 37970 -> 51864 bytes
public/apple-splash-1792-828.jpg | Bin 115683 -> 19348 bytes
public/apple-splash-2048-1536.jpg | Bin 140893 -> 43077 bytes
public/apple-splash-2048-2732.jpg | Bin 156288 -> 66291 bytes
public/apple-splash-2160-1620.jpg | Bin 160891 -> 46400 bytes
public/apple-splash-2208-1242.jpg | Bin 156237 -> 34459 bytes
public/apple-splash-2224-1668.jpg | Bin 162150 -> 48156 bytes
public/apple-splash-2266-1488.jpg | Bin 0 -> 42525 bytes
public/apple-splash-2360-1640.jpg | Bin 0 -> 48085 bytes
public/apple-splash-2388-1668.jpg | Bin 164664 -> 49395 bytes
public/apple-splash-2436-1125.jpg | Bin 155760 -> 31368 bytes
public/apple-splash-2532-1170.jpg | Bin 168087 -> 33350 bytes
public/apple-splash-2556-1179.jpg | Bin 0 -> 33381 bytes
public/apple-splash-2688-1242.jpg | Bin 174356 -> 36176 bytes
public/apple-splash-2732-2048.jpg | Bin 190967 -> 63906 bytes
public/apple-splash-2778-1284.jpg | Bin 179484 -> 38042 bytes
public/apple-splash-2796-1290.jpg | Bin 0 -> 38236 bytes
public/apple-splash-640-1136.jpg | Bin 43795 -> 16552 bytes
public/apple-splash-750-1334.jpg | Bin 50487 -> 20208 bytes
public/apple-splash-828-1792.jpg | Bin 16344 -> 24281 bytes
public/apple-touch-icon.png | Bin 25030 -> 12747 bytes
public/badge-128x128.png | Bin 14745 -> 8722 bytes
public/favicon-16x16.png | Bin 3571 -> 821 bytes
public/favicon-32x32.png | Bin 4945 -> 2116 bytes
public/favicon.ico | Bin 9262 -> 15406 bytes
public/images/overseerr_poster_not_found.png | Bin 133446 -> 62521 bytes
...overseerr_poster_not_found_logo_center.png | Bin 125478 -> 54094 bytes
.../overseerr_poster_not_found_logo_top.png | Bin 124352 -> 54094 bytes
public/logo_full.png | Bin 90989 -> 13036 bytes
public/logo_full.svg | 254 +-
public/logo_stacked.svg | 209 +-
public/offline.html | 4 +-
public/os_icon.svg | 163 +-
public/os_logo_filled.png | Bin 12928 -> 7377 bytes
public/os_logo_square.png | Bin 12928 -> 7377 bytes
public/preview.jpg | Bin 1814995 -> 140584 bytes
public/sw.js | 74 +-
server/api/jellyfin.ts | 97 +-
server/api/pushover.ts | 56 +
server/entity/Media.ts | 8 +-
server/entity/MediaRequest.ts | 2 +-
server/entity/UserSettings.ts | 3 +
server/index.ts | 2 +-
server/interfaces/api/settingsInterfaces.ts | 2 +
.../interfaces/api/userSettingsInterfaces.ts | 1 +
server/job/schedule.ts | 41 +-
server/lib/availabilitySync.ts | 500 +++-
server/lib/notifications/agents/pushover.ts | 2 +
.../scanners/jellyfin}/index.ts | 27 +-
server/lib/settings.ts | 18 +-
server/lib/watchlistsync.ts | 146 +-
.../1697393491630-AddUserPushoverSound.ts | 31 +
server/routes/auth.ts | 167 +-
server/routes/discover.ts | 2 +-
server/routes/index.ts | 26 +
server/routes/settings/index.ts | 28 +-
server/routes/user/index.ts | 43 +-
server/routes/user/usersettings.ts | 27 +-
snap/snapcraft.yaml | 31 +-
src/assets/services/letterboxd.svg | 20 +
src/components/Common/ListView/index.tsx | 4 +
.../Discover/DiscoverWatchlist/index.tsx | 2 +
.../Discover/NetworkSlider/index.tsx | 6 +
src/components/ExternalLinkBlock/index.tsx | 11 +
src/components/Layout/VersionStatus/index.tsx | 4 +-
src/components/Login/JellyfinLogin.tsx | 21 +-
src/components/ManageSlideOver/index.tsx | 34 +-
src/components/PermissionEdit/index.tsx | 27 +-
src/components/RegionSelector/index.tsx | 8 +-
.../NotificationsPushover/index.tsx | 36 +-
.../Notifications/NotificationsTelegram.tsx | 2 +-
.../NotificationsWebPush/index.tsx | 2 +-
.../Settings/SettingsAbout/index.tsx | 53 +-
src/components/Settings/SettingsBadge.tsx | 2 +-
src/components/Settings/SettingsJellyfin.tsx | 81 +-
.../Settings/SettingsJobsCache/index.tsx | 10 +-
.../Settings/SettingsMain/index.tsx | 4 +-
src/components/Settings/SettingsPlex.tsx | 6 +-
.../Settings/SettingsUsers/index.tsx | 13 +-
src/components/Settings/SonarrModal/index.tsx | 72 +-
src/components/TitleCard/TmdbTitleCard.tsx | 4 +
src/components/TitleCard/index.tsx | 5 +
.../UserNotificationsPushover.tsx | 32 +
src/components/UserProfile/index.tsx | 41 +-
src/context/LanguageContext.tsx | 11 +-
src/hooks/useDiscover.ts | 4 +-
src/i18n/locale/ar.json | 381 ++-
src/i18n/locale/ca.json | 198 +-
src/i18n/locale/cs.json | 340 ++-
src/i18n/locale/da.json | 270 +-
src/i18n/locale/de.json | 586 +++--
src/i18n/locale/el.json | 555 ++++-
src/i18n/locale/en.json | 42 +-
src/i18n/locale/es.json | 2000 ++++++++-------
src/i18n/locale/fr.json | 2214 ++++++++---------
src/i18n/locale/hr.json | 883 ++++++-
src/i18n/locale/hu.json | 4 +-
src/i18n/locale/it.json | 138 +-
src/i18n/locale/ko.json | 1236 +++++++++
src/i18n/locale/lt.json | 198 +-
src/i18n/locale/nl.json | 144 +-
src/i18n/locale/pt_BR.json | 233 +-
src/i18n/locale/pt_PT.json | 418 +++-
src/i18n/locale/ro.json | 179 +-
src/i18n/locale/ru.json | 267 +-
src/i18n/locale/sr.json | 35 +-
src/i18n/locale/sv.json | 238 +-
src/i18n/locale/{ua.json => uk.json} | 2 +-
src/i18n/locale/zh_Hans.json | 221 +-
src/i18n/locale/zh_Hant.json | 131 +-
src/pages/_app.tsx | 6 +-
tailwind.config.js | 1 -
147 files changed, 10855 insertions(+), 4349 deletions(-)
create mode 100644 public/apple-splash-1179-2556.jpg
create mode 100644 public/apple-splash-1290-2796.jpg
create mode 100644 public/apple-splash-1488-2266.jpg
create mode 100644 public/apple-splash-1640-2360.jpg
create mode 100644 public/apple-splash-2266-1488.jpg
create mode 100644 public/apple-splash-2360-1640.jpg
create mode 100644 public/apple-splash-2556-1179.jpg
create mode 100644 public/apple-splash-2796-1290.jpg
create mode 100644 server/api/pushover.ts
rename server/{job/jellyfinsync => lib/scanners/jellyfin}/index.ts (97%)
create mode 100644 server/migration/1697393491630-AddUserPushoverSound.ts
create mode 100644 src/assets/services/letterboxd.svg
create mode 100644 src/i18n/locale/ko.json
rename src/i18n/locale/{ua.json => uk.json} (99%)
diff --git a/.all-contributorsrc b/.all-contributorsrc
index b5166196..bd0f0f18 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -4,668 +4,72 @@
],
"imageSize": 100,
"commit": false,
+ "badgeTemplate": "
-orange.svg\"/>",
+ "contributorsPerLine": 7,
+ "projectName": "jellyseerr",
+ "projectOwner": "Fallenbagel",
+ "repoType": "github",
+ "repoHost": "https://github.com",
+ "skipCi": true,
+ "commitConvention": "angular",
+ "commitType": "docs",
"contributors": [
{
- "login": "sct",
- "name": "sct",
- "avatar_url": "https://avatars1.githubusercontent.com/u/234213?v=4",
- "profile": "https://sct.dev",
+ "login": "Fallenbagel",
+ "name": "Fallenbagel",
+ "avatar_url": "https://avatars.githubusercontent.com/u/98979876?v=4",
+ "profile": "https://github.com/Fallenbagel",
"contributions": [
"code",
- "design",
- "ideas"
+ "maintenance"
]
},
{
- "login": "azoitos",
- "name": "Alex Zoitos",
- "avatar_url": "https://avatars2.githubusercontent.com/u/26529049?v=4",
- "profile": "https://github.com/azoitos",
- "contributions": [
- "code"
- ]
- },
- {
- "login": "OwsleyJr",
- "name": "Brandon Cohen",
- "avatar_url": "https://avatars3.githubusercontent.com/u/8635678?v=4",
- "profile": "https://github.com/OwsleyJr",
- "contributions": [
- "code",
- "doc"
- ]
- },
- {
- "login": "Ahreluth",
- "name": "Ahreluth",
- "avatar_url": "https://avatars2.githubusercontent.com/u/75682440?v=4",
- "profile": "https://github.com/Ahreluth",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "KovalevArtem",
- "name": "KovalevArtem",
- "avatar_url": "https://avatars0.githubusercontent.com/u/36500228?v=4",
- "profile": "https://github.com/KovalevArtem",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "GiyomuWeb",
- "name": "GiyomuWeb",
- "avatar_url": "https://avatars0.githubusercontent.com/u/62489209?v=4",
- "profile": "https://github.com/GiyomuWeb",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "angrycuban13",
- "name": "Angry Cuban",
- "avatar_url": "https://avatars3.githubusercontent.com/u/39564898?v=4",
- "profile": "https://github.com/angrycuban13",
- "contributions": [
- "doc"
- ]
- },
- {
- "login": "jvennik",
- "name": "jvennik",
- "avatar_url": "https://avatars3.githubusercontent.com/u/6672637?v=4",
- "profile": "https://github.com/jvennik",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "darknessgp",
- "name": "darknessgp",
- "avatar_url": "https://avatars0.githubusercontent.com/u/1521243?v=4",
- "profile": "https://github.com/darknessgp",
- "contributions": [
- "code"
- ]
- },
- {
- "login": "saltydk",
- "name": "salty",
- "avatar_url": "https://avatars1.githubusercontent.com/u/6587950?v=4",
- "profile": "https://github.com/saltydk",
- "contributions": [
- "infra"
- ]
- },
- {
- "login": "Shutruk",
- "name": "Shutruk",
- "avatar_url": "https://avatars2.githubusercontent.com/u/9198633?v=4",
- "profile": "https://github.com/Shutruk",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "krystiancharubin",
- "name": "Krystian Charubin",
- "avatar_url": "https://avatars2.githubusercontent.com/u/17775600?v=4",
- "profile": "https://github.com/krystiancharubin",
- "contributions": [
- "design"
- ]
- },
- {
- "login": "kieron",
- "name": "Kieron Boswell",
- "avatar_url": "https://avatars2.githubusercontent.com/u/8655212?v=4",
- "profile": "https://github.com/kieron",
- "contributions": [
- "code"
- ]
- },
- {
- "login": "samwiseg0",
- "name": "samwiseg0",
- "avatar_url": "https://avatars1.githubusercontent.com/u/2241731?v=4",
- "profile": "https://github.com/samwiseg0",
- "contributions": [
- "question",
- "infra"
- ]
- },
- {
- "login": "ecelebi29",
- "name": "ecelebi29",
- "avatar_url": "https://avatars2.githubusercontent.com/u/8337120?v=4",
- "profile": "https://github.com/ecelebi29",
- "contributions": [
- "code",
- "doc"
- ]
- },
- {
- "login": "mmozeiko",
- "name": "Mārtiņš Možeiko",
- "avatar_url": "https://avatars3.githubusercontent.com/u/1665010?v=4",
- "profile": "https://github.com/mmozeiko",
- "contributions": [
- "code"
- ]
- },
- {
- "login": "mazzetta86",
- "name": "mazzetta86",
- "avatar_url": "https://avatars2.githubusercontent.com/u/45591560?v=4",
- "profile": "https://github.com/mazzetta86",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "Panzer1119",
- "name": "Paul Hagedorn",
- "avatar_url": "https://avatars1.githubusercontent.com/u/23016343?v=4",
- "profile": "https://github.com/Panzer1119",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "Shagon94",
- "name": "Shagon94",
- "avatar_url": "https://avatars3.githubusercontent.com/u/9140783?v=4",
- "profile": "https://github.com/Shagon94",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "sebstrgg",
- "name": "sebstrgg",
- "avatar_url": "https://avatars3.githubusercontent.com/u/27026694?v=4",
- "profile": "https://github.com/sebstrgg",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "danshilm",
- "name": "Danshil Mungur",
- "avatar_url": "https://avatars2.githubusercontent.com/u/20923978?v=4",
- "profile": "https://github.com/danshilm",
- "contributions": [
- "code",
- "doc"
- ]
- },
- {
- "login": "doob187",
- "name": "doob187",
- "avatar_url": "https://avatars1.githubusercontent.com/u/60312740?v=4",
- "profile": "https://github.com/doob187",
- "contributions": [
- "infra"
- ]
- },
- {
- "login": "johnpyp",
- "name": "johnpyp",
- "avatar_url": "https://avatars2.githubusercontent.com/u/20625636?v=4",
- "profile": "https://github.com/johnpyp",
- "contributions": [
- "code"
- ]
- },
- {
- "login": "ankarhem",
- "name": "Jakob Ankarhem",
- "avatar_url": "https://avatars1.githubusercontent.com/u/14110063?v=4",
- "profile": "https://github.com/ankarhem",
- "contributions": [
- "doc",
- "code",
- "translation"
- ]
- },
- {
- "login": "jayesh100",
- "name": "Jayesh",
- "avatar_url": "https://avatars1.githubusercontent.com/u/8022175?v=4",
- "profile": "https://github.com/jayesh100",
- "contributions": [
- "code"
- ]
- },
- {
- "login": "flying-sausages",
- "name": "flying-sausages",
- "avatar_url": "https://avatars1.githubusercontent.com/u/23618693?v=4",
- "profile": "https://github.com/flying-sausages",
- "contributions": [
- "doc"
- ]
- },
- {
- "login": "hirenshah",
- "name": "hirenshah",
- "avatar_url": "https://avatars2.githubusercontent.com/u/418112?v=4",
- "profile": "https://github.com/hirenshah",
- "contributions": [
- "doc"
- ]
- },
- {
- "login": "TheCatLady",
- "name": "TheCatLady",
- "avatar_url": "https://avatars0.githubusercontent.com/u/52870424?v=4",
- "profile": "https://github.com/TheCatLady",
- "contributions": [
- "code",
- "translation",
- "doc"
- ]
- },
- {
- "login": "chriscpritchard",
- "name": "Chris Pritchard",
- "avatar_url": "https://avatars1.githubusercontent.com/u/1839074?v=4",
- "profile": "https://github.com/chriscpritchard",
- "contributions": [
- "code",
- "doc"
- ]
- },
- {
- "login": "Tamberlox",
- "name": "Tamberlox",
- "avatar_url": "https://avatars3.githubusercontent.com/u/56069014?v=4",
- "profile": "https://github.com/Tamberlox",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "hmnd",
- "name": "David",
- "avatar_url": "https://avatars.githubusercontent.com/u/12853597?v=4",
- "profile": "https://hmnd.io",
- "contributions": [
- "code"
- ]
- },
- {
- "login": "douglasparker",
- "name": "Douglas Parker",
- "avatar_url": "https://avatars.githubusercontent.com/u/18235822?v=4",
- "profile": "https://www.douglas-parker.com",
- "contributions": [
- "doc"
- ]
- },
- {
- "login": "dancarter",
- "name": "Daniel Carter",
- "avatar_url": "https://avatars.githubusercontent.com/u/4387516?v=4",
- "profile": "https://github.com/dancarter",
- "contributions": [
- "code"
- ]
- },
- {
- "login": "NuroDev",
- "name": "nuro",
- "avatar_url": "https://avatars.githubusercontent.com/u/4991309?v=4",
- "profile": "https://nuro.dev",
- "contributions": [
- "doc"
- ]
- },
- {
- "login": "onedr0p",
- "name": "ᗪєνιη ᗷυнʟ",
- "avatar_url": "https://avatars.githubusercontent.com/u/213795?v=4",
- "profile": "https://github.com/onedr0p",
- "contributions": [
- "infra"
- ]
- },
- {
- "login": "JonnyWong16",
- "name": "JonnyWong16",
- "avatar_url": "https://avatars.githubusercontent.com/u/9099342?v=4",
- "profile": "https://github.com/JonnyWong16",
- "contributions": [
- "doc"
- ]
- },
- {
- "login": "Roxedus",
- "name": "Roxedus",
- "avatar_url": "https://avatars.githubusercontent.com/u/7110194?v=4",
- "profile": "https://github.com/Roxedus",
- "contributions": [
- "doc"
- ]
- },
- {
- "login": "WoisWoi",
- "name": "WoisWoi",
- "avatar_url": "https://avatars.githubusercontent.com/u/75491231?v=4",
- "profile": "https://github.com/WoisWoi",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "HubDuck",
- "name": "HubDuck",
- "avatar_url": "https://avatars.githubusercontent.com/u/77843475?v=4",
- "profile": "https://github.com/HubDuck",
+ "login": "seanzhang98",
+ "name": "Sean",
+ "avatar_url": "https://avatars.githubusercontent.com/u/34902361?v=4",
+ "profile": "https://github.com/seanzhang98",
"contributions": [
"translation",
- "doc"
+ "code"
]
},
{
- "login": "costaht",
- "name": "costaht",
- "avatar_url": "https://avatars.githubusercontent.com/u/50637431?v=4",
- "profile": "https://github.com/costaht",
- "contributions": [
- "doc",
- "translation"
- ]
- },
- {
- "login": "Shjosan",
- "name": "Shjosan",
- "avatar_url": "https://avatars.githubusercontent.com/u/20847626?v=4",
- "profile": "https://github.com/Shjosan",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "kobaubarr",
- "name": "kobaubarr",
- "avatar_url": "https://avatars.githubusercontent.com/u/28481522?v=4",
- "profile": "https://github.com/kobaubarr",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "notorius28",
- "name": "Ricardo González",
- "avatar_url": "https://avatars.githubusercontent.com/u/1621513?v=4",
- "profile": "https://github.com/notorius28",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "Torkiliuz",
- "name": "Torkil",
- "avatar_url": "https://avatars.githubusercontent.com/u/460764?v=4",
- "profile": "http://torkili.uz",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "JagandeepBrar",
- "name": "Jagandeep Brar",
- "avatar_url": "https://avatars.githubusercontent.com/u/3048295?v=4",
- "profile": "https://www.jagandeepbrar.io",
- "contributions": [
- "doc"
- ]
- },
- {
- "login": "dtalens",
- "name": "dtalens",
- "avatar_url": "https://avatars.githubusercontent.com/u/6631832?v=4",
- "profile": "http://dtalens.com",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "acortelyou",
- "name": "Alex Cortelyou",
- "avatar_url": "https://avatars.githubusercontent.com/u/1689668?v=4",
- "profile": "https://github.com/acortelyou",
+ "login": "notfakie",
+ "name": "notfakie",
+ "avatar_url": "https://avatars.githubusercontent.com/u/103784113?v=4",
+ "profile": "https://github.com/notfakie",
"contributions": [
"code"
]
},
{
- "login": "jonocairns",
- "name": "Jono Cairns",
- "avatar_url": "https://avatars.githubusercontent.com/u/182836?v=4",
- "profile": "https://nz.linkedin.com/in/jonocairns",
+ "login": "Jumail",
+ "name": "Mohamed Jumail",
+ "avatar_url": "https://avatars.githubusercontent.com/u/7672055?v=4",
+ "profile": "https://github.com/Jumail",
+ "contributions": [
+ "review"
+ ]
+ },
+ {
+ "login": "jsl9208",
+ "name": "Shilong Jiang",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4048787?v=4",
+ "profile": "https://www.heywhale.com",
"contributions": [
"code"
]
},
{
- "login": "DJScias",
- "name": "DJScias",
- "avatar_url": "https://avatars.githubusercontent.com/u/439655?v=4",
- "profile": "https://scias.net/",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "Dabu-dot",
- "name": "Dabu-dot",
- "avatar_url": "https://avatars.githubusercontent.com/u/52525576?v=4",
- "profile": "https://github.com/Dabu-dot",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "Jabster28",
- "name": "Jabster28",
- "avatar_url": "https://avatars.githubusercontent.com/u/29015942?v=4",
- "profile": "https://github.com/Jabster28",
+ "login": "boring-dragon",
+ "name": "Boring Dragon",
+ "avatar_url": "https://avatars.githubusercontent.com/u/28459081?v=4",
+ "profile": "https://jinas.me",
"contributions": [
"code"
]
},
- {
- "login": "littlerooster",
- "name": "littlerooster",
- "avatar_url": "https://avatars.githubusercontent.com/u/83890654?v=4",
- "profile": "https://github.com/littlerooster",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "dphildebrandt",
- "name": "Dustin Hildebrandt",
- "avatar_url": "https://avatars.githubusercontent.com/u/154459?v=4",
- "profile": "https://github.com/dphildebrandt",
- "contributions": [
- "code"
- ]
- },
- {
- "login": "Generator",
- "name": "Bruno Guerreiro",
- "avatar_url": "https://avatars.githubusercontent.com/u/44146?v=4",
- "profile": "https://github.com/Generator",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "iceHtwoO",
- "name": "Alexander Neuhäuser",
- "avatar_url": "https://avatars.githubusercontent.com/u/27020492?v=4",
- "profile": "https://github.com/iceHtwoO",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "liviokanone",
- "name": "Livio",
- "avatar_url": "https://avatars.githubusercontent.com/u/37431541?v=4",
- "profile": "http://www.unext.co.jp",
- "contributions": [
- "design"
- ]
- },
- {
- "login": "tangentThought",
- "name": "tangentThought",
- "avatar_url": "https://avatars.githubusercontent.com/u/25516090?v=4",
- "profile": "https://github.com/tangentThought",
- "contributions": [
- "code"
- ]
- },
- {
- "login": "nicospz",
- "name": "Nicolás Espinoza",
- "avatar_url": "https://avatars.githubusercontent.com/u/31373060?v=4",
- "profile": "https://github.com/nicospz",
- "contributions": [
- "code"
- ]
- },
- {
- "login": "sootylunatic",
- "name": "sootylunatic",
- "avatar_url": "https://avatars.githubusercontent.com/u/36486087?v=4",
- "profile": "https://github.com/sootylunatic",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "JoKerIsCraZy",
- "name": "JoKerIsCraZy",
- "avatar_url": "https://avatars.githubusercontent.com/u/47474211?v=4",
- "profile": "https://github.com/JoKerIsCraZy",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "GoByeBye",
- "name": "Daddie0",
- "avatar_url": "https://avatars.githubusercontent.com/u/33762262?v=4",
- "profile": "https://daddie.dev",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "Simoneu01",
- "name": "Simone",
- "avatar_url": "https://avatars.githubusercontent.com/u/43807696?v=4",
- "profile": "http://ungaro.me",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "adan89lion",
- "name": "Seohyun Joo",
- "avatar_url": "https://avatars.githubusercontent.com/u/6585644?v=4",
- "profile": "https://github.com/adan89lion",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "ty4ko",
- "name": "Sergey",
- "avatar_url": "https://avatars.githubusercontent.com/u/21213535?v=4",
- "profile": "https://github.com/ty4ko",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "skafte1990",
- "name": "Shaaft",
- "avatar_url": "https://avatars.githubusercontent.com/u/31465453?v=4",
- "profile": "https://github.com/skafte1990",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "sr093906",
- "name": "sr093906",
- "avatar_url": "https://avatars.githubusercontent.com/u/8369201?v=4",
- "profile": "https://github.com/sr093906",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "Nackophilz",
- "name": "Nackophilz",
- "avatar_url": "https://avatars.githubusercontent.com/u/61667226?v=4",
- "profile": "https://github.com/Nackophilz",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "schambers",
- "name": "Sean Chambers",
- "avatar_url": "https://avatars.githubusercontent.com/u/31563?v=4",
- "profile": "https://github.com/schambers",
- "contributions": [
- "code"
- ]
- },
- {
- "login": "deniscerri",
- "name": "deniscerri",
- "avatar_url": "https://avatars.githubusercontent.com/u/64997243?v=4",
- "profile": "https://github.com/deniscerri",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "tomgacz",
- "name": "tomgacz",
- "avatar_url": "https://avatars.githubusercontent.com/u/14138209?v=4",
- "profile": "https://github.com/tomgacz",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "Andersborrits",
- "name": "Andersborrits",
- "avatar_url": "https://avatars.githubusercontent.com/u/29452218?v=4",
- "profile": "https://github.com/Andersborrits",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "Maxentr",
- "name": "Maxent",
- "avatar_url": "https://avatars.githubusercontent.com/u/67283154?v=4",
- "profile": "http://maxentrouault.fr",
- "contributions": [
- "translation"
- ]
- },
{
"login": "sambartik",
"name": "Samuel Bartík",
@@ -676,238 +80,248 @@
]
},
{
- "login": "frank-cywong",
- "name": "Chun Yeung Wong",
- "avatar_url": "https://avatars.githubusercontent.com/u/90653148?v=4",
- "profile": "https://github.com/frank-cywong",
+ "login": "CyferShepard",
+ "name": "Thegan Govender",
+ "avatar_url": "https://avatars.githubusercontent.com/u/24864904?v=4",
+ "profile": "https://github.com/CyferShepard",
"contributions": [
"code"
]
},
{
- "login": "TheMeanCanEHdian",
- "name": "TheMeanCanEHdian",
- "avatar_url": "https://avatars.githubusercontent.com/u/16025103?v=4",
- "profile": "https://github.com/TheMeanCanEHdian",
- "contributions": [
- "code"
- ]
- },
- {
- "login": "Gylesie",
- "name": "Gylesie",
- "avatar_url": "https://avatars.githubusercontent.com/u/86306812?v=4",
- "profile": "https://github.com/Gylesie",
- "contributions": [
- "code"
- ]
- },
- {
- "login": "Fhd-pro",
- "name": "Fhd-pro",
- "avatar_url": "https://avatars.githubusercontent.com/u/82862079?v=4",
- "profile": "https://github.com/Fhd-pro",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "PovilasID",
- "name": "PovilasID",
- "avatar_url": "https://avatars.githubusercontent.com/u/396243?v=4",
- "profile": "https://github.com/PovilasID",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "byakurau",
- "name": "byakurau",
- "avatar_url": "https://avatars.githubusercontent.com/u/1811683?v=4",
- "profile": "https://github.com/byakurau",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "miknii",
- "name": "miknii",
- "avatar_url": "https://avatars.githubusercontent.com/u/109232569?v=4",
- "profile": "https://github.com/miknii",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "Eclipseop",
- "name": "Mackenzie",
- "avatar_url": "https://avatars.githubusercontent.com/u/5846213?v=4",
- "profile": "https://github.com/Eclipseop",
- "contributions": [
- "code"
- ]
- },
- {
- "login": "s0up4200",
- "name": "soup",
- "avatar_url": "https://avatars.githubusercontent.com/u/18177310?v=4",
- "profile": "https://github.com/s0up4200",
+ "login": "jab416171",
+ "name": "jab416171",
+ "avatar_url": "https://avatars.githubusercontent.com/u/345752?v=4",
+ "profile": "https://github.com/jab416171",
"contributions": [
"doc"
]
},
{
- "login": "ceptonit",
- "name": "ceptonit",
- "avatar_url": "https://avatars.githubusercontent.com/u/12678743?v=4",
- "profile": "https://github.com/ceptonit",
+ "login": "NicolaiVdS",
+ "name": "Nicolai Van der Storm",
+ "avatar_url": "https://avatars.githubusercontent.com/u/5257222?v=4",
+ "profile": "https://nvds.be",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "Smexhy",
+ "name": "Smexhy",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4880625?v=4",
+ "profile": "https://github.com/Smexhy",
+ "contributions": [
+ "translation"
+ ]
+ },
+ {
+ "login": "dd060606",
+ "name": "dd060606",
+ "avatar_url": "https://avatars.githubusercontent.com/u/58089504?v=4",
+ "profile": "https://dd06-dev.fr",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "darmiel",
+ "name": "Daniel",
+ "avatar_url": "https://avatars.githubusercontent.com/u/71837281?v=4",
+ "profile": "https://qwer.tz",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "undone37",
+ "name": "undone37",
+ "avatar_url": "https://avatars.githubusercontent.com/u/10513808?v=4",
+ "profile": "https://github.com/undone37",
+ "contributions": [
+ "translation"
+ ]
+ },
+ {
+ "login": "CheChu10",
+ "name": "Chechu García",
+ "avatar_url": "https://avatars.githubusercontent.com/u/32913133?v=4",
+ "profile": "https://github.com/CheChu10",
+ "contributions": [
+ "translation"
+ ]
+ },
+ {
+ "login": "DimitriDR",
+ "name": "Dimitri",
+ "avatar_url": "https://avatars.githubusercontent.com/u/56969769?v=4",
+ "profile": "https://github.com/DimitriDR",
+ "contributions": [
+ "translation"
+ ]
+ },
+ {
+ "login": "andrey4korop",
+ "name": "andrey4korop",
+ "avatar_url": "https://avatars.githubusercontent.com/u/24610708?v=4",
+ "profile": "https://github.com/andrey4korop",
+ "contributions": [
+ "code",
+ "translation"
+ ]
+ },
+ {
+ "login": "GeoffreyCoulaud",
+ "name": "Geoffrey Coulaud",
+ "avatar_url": "https://avatars.githubusercontent.com/u/20744730?v=4",
+ "profile": "https://geoffrey-coulaud.fr",
+ "contributions": [
+ "translation"
+ ]
+ },
+ {
+ "login": "Pikachu920",
+ "name": "Pikachu920",
+ "avatar_url": "https://avatars.githubusercontent.com/u/28607612?v=4",
+ "profile": "https://github.com/Pikachu920",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "yalagin",
+ "name": "Maxim Yalagin",
+ "avatar_url": "https://avatars.githubusercontent.com/u/12879142?v=4",
+ "profile": "https://github.com/yalagin",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "jeaboswell",
+ "name": "Jesse Boswell",
+ "avatar_url": "https://avatars.githubusercontent.com/u/11653068?v=4",
+ "profile": "https://github.com/jeaboswell",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "d-fendrich",
+ "name": "d-fendrich",
+ "avatar_url": "https://avatars.githubusercontent.com/u/27904138?v=4",
+ "profile": "https://github.com/d-fendrich",
+ "contributions": [
+ "translation"
+ ]
+ },
+ {
+ "login": "davidfdezalcoba",
+ "name": "David Fernández Alcoba",
+ "avatar_url": "https://avatars.githubusercontent.com/u/15996018?v=4",
+ "profile": "https://github.com/davidfdezalcoba",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "Gauvino",
+ "name": "Gauvino",
+ "avatar_url": "https://avatars.githubusercontent.com/u/68083474?v=4",
+ "profile": "https://github.com/Gauvino",
+ "contributions": [
+ "translation"
+ ]
+ },
+ {
+ "login": "EthanArmbrust",
+ "name": "EthanArmbrust",
+ "avatar_url": "https://avatars.githubusercontent.com/u/22754714?v=4",
+ "profile": "https://github.com/EthanArmbrust",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "SirMartin",
+ "name": "Eduardo",
+ "avatar_url": "https://avatars.githubusercontent.com/u/854646?v=4",
+ "profile": "http://www.piribisoft.com",
"contributions": [
"doc"
]
},
{
- "login": "aedelbro",
- "name": "aedelbro",
- "avatar_url": "https://avatars.githubusercontent.com/u/36162221?v=4",
- "profile": "https://github.com/aedelbro",
+ "login": "RickLuiken",
+ "name": "RickLuiken",
+ "avatar_url": "https://avatars.githubusercontent.com/u/34110371?v=4",
+ "profile": "https://github.com/RickLuiken",
"contributions": [
"code"
]
},
{
- "login": "lunks",
- "name": "Pedro Nascimento",
- "avatar_url": "https://avatars.githubusercontent.com/u/91118?v=4",
- "profile": "http://twitter.com/lunks/",
+ "login": "Br33ce",
+ "name": "Br33ce",
+ "avatar_url": "https://avatars.githubusercontent.com/u/124933490?v=4",
+ "profile": "https://github.com/Br33ce",
+ "contributions": [
+ "translation"
+ ]
+ },
+ {
+ "login": "athphane",
+ "name": "Athfan Khaleel",
+ "avatar_url": "https://avatars.githubusercontent.com/u/13810742?v=4",
+ "profile": "https://athfan.com",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "mdll23",
+ "name": "Michael Dallinger",
+ "avatar_url": "https://avatars.githubusercontent.com/u/142844478?v=4",
+ "profile": "https://github.com/mdll23",
+ "contributions": [
+ "translation"
+ ]
+ },
+ {
+ "login": "xeruf",
+ "name": "Janek",
+ "avatar_url": "https://avatars.githubusercontent.com/u/13354331?v=4",
+ "profile": "https://github.com/xeruf",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "aleksasiriski",
+ "name": "Aleksa Siriški",
+ "avatar_url": "https://avatars.githubusercontent.com/u/31509435?v=4",
+ "profile": "https://aleksasiriski.dev",
+ "contributions": [
+ "infra"
+ ]
+ },
+ {
+ "login": "Danish-H",
+ "name": "Danish Humair",
+ "avatar_url": "https://avatars.githubusercontent.com/u/121830048?v=4",
+ "profile": "http://danishhumair.com",
"contributions": [
"code"
]
},
{
- "login": "owenvoke",
- "name": "Owen Voke",
- "avatar_url": "https://avatars.githubusercontent.com/u/1899334?v=4",
- "profile": "https://voke.dev",
+ "login": "trackmastersteve",
+ "name": "Stephen Harris",
+ "avatar_url": "https://avatars.githubusercontent.com/u/16858514?v=4",
+ "profile": "https://arm0.red",
"contributions": [
- "code"
- ]
- },
- {
- "login": "Nimelrian",
- "name": "Sebastian K",
- "avatar_url": "https://avatars.githubusercontent.com/u/8960836?v=4",
- "profile": "https://github.com/Nimelrian",
- "contributions": [
- "code"
- ]
- },
- {
- "login": "jariz",
- "name": "jariz",
- "avatar_url": "https://avatars.githubusercontent.com/u/1415847?v=4",
- "profile": "https://github.com/jariz",
- "contributions": [
- "code"
- ]
- },
- {
- "login": "Alexays",
- "name": "Alex",
- "avatar_url": "https://avatars.githubusercontent.com/u/13947260?v=4",
- "profile": "https://arouillard.fr",
- "contributions": [
- "code"
- ]
- },
- {
- "login": "Zebebles",
- "name": "Zeb Muller",
- "avatar_url": "https://avatars.githubusercontent.com/u/11425451?v=4",
- "profile": "https://github.com/Zebebles",
- "contributions": [
- "code"
- ]
- },
- {
- "login": "SMores",
- "name": "Shane Friedman",
- "avatar_url": "https://avatars.githubusercontent.com/u/5354254?v=4",
- "profile": "http://smoores.dev",
- "contributions": [
- "code"
- ]
- },
- {
- "login": "IzaacJ",
- "name": "Izaac Brånn",
- "avatar_url": "https://avatars.githubusercontent.com/u/711323?v=4",
- "profile": "https://izaacj.me",
- "contributions": [
- "code"
- ]
- },
- {
- "login": "SalmanTariq",
- "name": "Salman Tariq",
- "avatar_url": "https://avatars.githubusercontent.com/u/13284494?v=4",
- "profile": "https://github.com/SalmanTariq",
- "contributions": [
- "code"
- ]
- },
- {
- "login": "andrew-kennedy",
- "name": "Andrew Kennedy",
- "avatar_url": "https://avatars.githubusercontent.com/u/2387159?v=4",
- "profile": "https://github.com/andrew-kennedy",
- "contributions": [
- "code"
- ]
- },
- {
- "login": "Fallenbagel",
- "name": "Fallenbagel",
- "avatar_url": "https://avatars.githubusercontent.com/u/98979876?v=4",
- "profile": "https://github.com/Fallenbagel",
- "contributions": [
- "code"
- ]
- },
- {
- "login": "scorp200",
- "name": "Anton K. (ai Doge)",
- "avatar_url": "https://avatars.githubusercontent.com/u/9427639?v=4",
- "profile": "http://aidoge.xyz",
- "contributions": [
- "code"
- ]
- },
- {
- "login": "marcofaggian",
- "name": "Marco Faggian",
- "avatar_url": "https://avatars.githubusercontent.com/u/19221001?v=4",
- "profile": "https://marcofaggian.com",
- "contributions": [
- "code"
- ]
- },
- {
- "login": "nemchik",
- "name": "Eric Nemchik",
- "avatar_url": "https://avatars.githubusercontent.com/u/725456?v=4",
- "profile": "http://nemchik.com/",
- "contributions": [
- "code"
+ "doc"
]
}
- ],
- "badgeTemplate": "
-orange.svg\"/>",
- "contributorsPerLine": 7,
- "projectName": "overseerr",
- "projectOwner": "sct",
- "repoType": "github",
- "repoHost": "https://github.com",
- "skipCi": false,
- "commitConvention": "angular",
- "commitType": "docs"
+ ]
}
diff --git a/.gitattributes b/.gitattributes
index 2883a5d2..eb5d2314 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -24,3 +24,24 @@
*.woff binary
*.pyc binary
*.pdf binary
+
+#
+## Theses files/directories should be excluded from git archives
+#
+
+.husky export-ignore
+.vscode export-ignore
+docs export-ignore
+
+.git* export-ignore
+*ignore export-ignore
+*.md export-ignore
+
+.all-contributorsrc export-ignore
+.editorconfig export-ignore
+Dockerfile.local export-ignore
+docker-compose.yml export-ignore
+stylelint.config.js export-ignore
+
+public/os_logo_filled.png export-ignore
+public/preview.jpg export-ignore
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
index 6b2dc700..6e08dfb2 100644
--- a/.github/FUNDING.yml
+++ b/.github/FUNDING.yml
@@ -1,2 +1 @@
-github: [sct]
-patreon: overseerr
+github: [Fallenbagel]
diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml
index 9bfffb24..a98da750 100644
--- a/.github/ISSUE_TEMPLATE/bug.yml
+++ b/.github/ISSUE_TEMPLATE/bug.yml
@@ -19,7 +19,7 @@ body:
id: version
attributes:
label: Version
- description: What version of Overseerr are you running? (You can find this in Settings → About → Version.)
+ description: What version of Jellyseerr are you running? (You can find this in Settings → About → Version.)
validations:
required: true
- type: textarea
@@ -87,5 +87,5 @@ body:
label: Code of Conduct
description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/fallenbagel/jellyseerr/blob/develop/CODE_OF_CONDUCT.md)
options:
- - label: I agree to follow Overseerr's Code of Conduct
+ - label: I agree to follow Jellyseerr's Code of Conduct
required: true
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
index 13a68495..3cce2bb4 100644
--- a/.github/ISSUE_TEMPLATE/config.yml
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -2,7 +2,7 @@ blank_issues_enabled: false
contact_links:
- name: 💬 Support via Discord
url: https://discord.gg/ckbvBtDJgC
- about: Chat with other users and the Overseerr dev team
+ about: Chat with other users and the Jellyseerr dev team
- name: 💬 Support via GitHub Discussions
url: https://github.com/fallenbagel/jellyseerr/discussions
about: Ask questions and discuss with other community members
diff --git a/.github/ISSUE_TEMPLATE/enhancement.yml b/.github/ISSUE_TEMPLATE/enhancement.yml
index aee47359..35a7adbd 100644
--- a/.github/ISSUE_TEMPLATE/enhancement.yml
+++ b/.github/ISSUE_TEMPLATE/enhancement.yml
@@ -33,5 +33,5 @@ body:
label: Code of Conduct
description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/fallenbagel/jellyseerr/blob/develop/CODE_OF_CONDUCT.md)
options:
- - label: I agree to follow Overseerr's Code of Conduct
+ - label: I agree to follow Jellyseerr's Code of Conduct
required: true
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 0d117c4e..9734a65a 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -12,8 +12,8 @@ jobs:
test:
name: Lint & Test Build
if: github.event_name == 'pull_request'
- runs-on: ubuntu-20.04
- container: node:16.17-alpine
+ runs-on: ubuntu-22.04
+ container: node:18.18-alpine
steps:
- name: Checkout
uses: actions/checkout@v3
@@ -31,7 +31,7 @@ jobs:
build_and_push:
name: Build & Publish Docker Images
if: github.ref == 'refs/heads/develop' && !contains(github.event.head_commit.message, '[skip ci]')
- runs-on: ubuntu-20.04
+ runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v3
@@ -50,6 +50,11 @@ jobs:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
+ - name: Set lower case owner name
+ run: |
+ echo "OWNER_LC=${OWNER,,}" >>${GITHUB_ENV}
+ env:
+ OWNER: ${{ github.repository_owner }}
- name: Build and push
uses: docker/build-push-action@v3
with:
@@ -61,12 +66,13 @@ jobs:
COMMIT_TAG=${{ github.sha }}
tags: |
fallenbagel/jellyseerr:develop
+ ghcr.io/${{ env.OWNER_LC }}/jellyseerr:develop
discord:
name: Send Discord Notification
needs: build_and_push
if: always() && github.event_name != 'pull_request' && !contains(github.event.head_commit.message, '[skip ci]')
- runs-on: ubuntu-20.04
+ runs-on: ubuntu-22.04
steps:
- name: Get Build Job Status
uses: technote-space/workflow-conclusion-action@v3
diff --git a/.github/workflows/preview.yml b/.github/workflows/preview.yml
index 3797936a..600551f0 100644
--- a/.github/workflows/preview.yml
+++ b/.github/workflows/preview.yml
@@ -8,7 +8,7 @@ on:
jobs:
build_and_push:
name: Build & Publish Docker Preview Images
- runs-on: ubuntu-20.04
+ runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v3
@@ -29,7 +29,7 @@ jobs:
with:
context: .
file: ./Dockerfile
- platforms: linux/amd64
+ platforms: linux/amd64,linux/arm64,linux/arm/v7
push: true
build-args: |
COMMIT_TAG=${{ github.sha }}
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 94ba679b..449b3e74 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -5,7 +5,7 @@ on: workflow_dispatch
jobs:
semantic-release:
name: Tag and release latest version
- runs-on: ubuntu-20.04
+ runs-on: ubuntu-22.04
env:
HUSKY: 0
steps:
@@ -38,7 +38,7 @@ jobs:
build-snap:
name: Build Snap Package (${{ matrix.architecture }})
needs: semantic-release
- runs-on: ubuntu-20.04
+ runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
@@ -94,7 +94,7 @@ jobs:
name: Send Discord Notification
needs: semantic-release
if: always()
- runs-on: ubuntu-20.04
+ runs-on: ubuntu-22.04
steps:
- name: Get Build Job Status
uses: technote-space/workflow-conclusion-action@v3
diff --git a/.github/workflows/snap.yaml b/.github/workflows/snap.yaml
index 9c5b143b..0aaa9a65 100644
--- a/.github/workflows/snap.yaml
+++ b/.github/workflows/snap.yaml
@@ -8,7 +8,7 @@ on:
jobs:
jobs:
name: Job Check
- runs-on: ubuntu-20.04
+ runs-on: ubuntu-22.04
if: "!contains(github.event.head_commit.message, '[skip ci]')"
steps:
- name: Cancel Previous Runs
@@ -19,7 +19,7 @@ jobs:
build-snap:
name: Build Snap Package (${{ matrix.architecture }})
needs: jobs
- runs-on: ubuntu-20.04
+ runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
@@ -69,7 +69,7 @@ jobs:
name: Send Discord Notification
needs: build-snap
if: always() && !contains(github.event.head_commit.message, '[skip ci]')
- runs-on: ubuntu-20.04
+ runs-on: ubuntu-22.04
steps:
- name: Get Build Job Status
uses: technote-space/workflow-conclusion-action@v3
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 96e67c8a..5b403206 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,4 +1,4 @@
-# Contributing to Overseerr
+# Contributing to Jellyseerr
All help is welcome and greatly appreciated! If you would like to contribute to the project, the following instructions should get you started...
@@ -17,7 +17,7 @@ All help is welcome and greatly appreciated! If you would like to contribute to
1. [Fork](https://help.github.com/articles/fork-a-repo/) the repository to your own GitHub account and [clone](https://help.github.com/articles/cloning-a-repository/) it to your local device:
```bash
- git clone https://github.com/YOUR_USERNAME/overseerr.git
+ git clone https://github.com/YOUR_USERNAME/jellyseerr.git
cd overseerr/
```
@@ -97,9 +97,9 @@ When adding new UI text, please try to adhere to the following guidelines:
## Translation
-We use [Weblate](https://hosted.weblate.org/engage/overseerr/) for our translations, and your help with localizing Overseerr would be greatly appreciated! If your language is not listed below, please [open a feature request](https://github.com/fallenbagel/jellyseerr/issues/new/choose).
+We use [Weblate](https://jellyseerr.borgcube.de/projects/jellyseerr/jellyseerr-frontend/) for our translations, and your help with localizing Overseerr would be greatly appreciated! If your language is not listed below, please [open a feature request](https://github.com/fallenbagel/jellyseerr/issues/new/choose).
-
+
## Attribution
diff --git a/Dockerfile b/Dockerfile
index 851ba472..270155ed 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,4 +1,4 @@
-FROM node:16.17-alpine AS BUILD_IMAGE
+FROM node:18.18-alpine AS BUILD_IMAGE
WORKDIR /app
@@ -7,10 +7,11 @@ ENV TARGETPLATFORM=${TARGETPLATFORM:-linux/amd64}
RUN \
case "${TARGETPLATFORM}" in \
- 'linux/arm64' | 'linux/arm/v7') \
- apk add --no-cache python3 make g++ && \
- ln -s /usr/bin/python3 /usr/bin/python \
- ;; \
+ 'linux/arm64' | 'linux/arm/v7') \
+ apk update && \
+ apk add --no-cache python3 make g++ gcc libc6-compat bash && \
+ yarn global add node-gyp \
+ ;; \
esac
COPY package.json yarn.lock ./
@@ -33,7 +34,10 @@ RUN touch config/DOCKER
RUN echo "{\"commitTag\": \"${COMMIT_TAG}\"}" > committag.json
-FROM node:16.17-alpine
+FROM node:18.18-alpine
+
+# Metadata for Github Package Registry
+LABEL org.opencontainers.image.source="https://github.com/Fallenbagel/jellyseerr"
WORKDIR /app
diff --git a/Dockerfile.local b/Dockerfile.local
index 39e0534f..7efa68b5 100644
--- a/Dockerfile.local
+++ b/Dockerfile.local
@@ -1,4 +1,4 @@
-FROM node:16.17-alpine
+FROM node:18.18-alpine
COPY . /app
WORKDIR /app
diff --git a/README.md b/README.md
index 86f20ca0..f07ac5e3 100644
--- a/README.md
+++ b/README.md
@@ -2,23 +2,28 @@
-
+
+
+
+
+
+
-
+
-**Jellyseerr** is a free and open source software application for managing requests for your media library. It is a a fork of Overseerr built to bring support for Jellyfin & Emby media servers!
+**Jellyseerr** is a free and open source software application for managing requests for your media library.
+It is a fork of [Overseerr](https://github.com/sct/overseerr) built to bring support for [Jellyfin](https://github.com/jellyfin/jellyfin) & [Emby](https://github.com/MediaBrowser/Emby) media servers!
_The original Overseerr team have been busy and Jellyfin/Emby support aren't on their roadmap, so we started this project as we wanted to bring the Overseerr experience to the Jellyfin/Emby Community!_
## Current Features
-- Full Jellyfin/Emby/Plex integration. Authenticate and manage user access with Jellyfin/Emby/Plex!
-- Supports Movies, Shows, Mixed Libraries!
+- Full Jellyfin/Emby/Plex integration including authentication with user import & management
+- Supports Movies, Shows and Mixed Libraries
- Ability to change email addresses for smtp purposes
-- Ability to import all jellyfin/emby users
- Easy integration with your existing services. Currently, Jellyseerr supports Sonarr and Radarr. More to come!
- Jellyfin/Emby/Plex library scan, to keep track of the titles which are already available.
- Customizable request system, which allows users to request individual seasons or movies in a friendly, easy-to-use interface.
@@ -27,7 +32,7 @@ _The original Overseerr team have been busy and Jellyfin/Emby support aren't on
- Support for various notification agents.
- Mobile-friendly design, for when you need to approve requests on the go!
- (Upcoming Features include: Multiple Server Instances, Music Support, and much more!)
+ (Upcoming Features include: Multiple Server Instances, and much more!)
With more features on the way! Check out our [issue tracker](https://github.com/fallenbagel/jellyseerr/issues) to see the features which have already been requested.
@@ -35,72 +40,73 @@ With more features on the way! Check out our [issue tracker](https://github.com/
#### Pre-requisite (Important)
-_*On Jellyfin/Emby, ensure the `settings > Home > Automatically group content from the following folders into views such as 'Movies', 'Music' and 'TV'` is turned off*_
+_*On Jellyfin/Emby, ensure the `Settings > Home > Automatically group content from the following folders into views such as 'Movies', 'Music' and 'TV'` is turned off*_
-### Launching Jellyseerr using Docker
+### Launching Jellyseerr using Docker (Recommended)
-Check out our dockerhub for instructions on how to install and run Jellyseerr:
+Check out our docker hub for instructions on how to install and run Jellyseerr:
https://hub.docker.com/r/fallenbagel/jellyseerr
-### Launching Jellyseerr manually:
+### Building from source (ADVANCED):
#### Windows
Pre-requisites:
-- Nodejs (atleast LTS version)
-- Yarn
-- Download the source code from the github (Either develop branch or main for stable)
+- Nodejs [v18](https://nodejs.org/download/release/v18.18.2)
+- [Yarn](https://classic.yarnpkg.com/lang/en/docs/install)
+- Download/git clone the source code from the github (Either develop branch or main for stable)
-```bash
+```cmd
npm i -g win-node-env
-yarn install
+set CYPRESS_INSTALL_BINARY=0
+yarn install --frozen-lockfile --network-timeout 1000000
yarn run build
yarn start
```
+(You can use task scheduler to run a bat script with `@echo off` and `yarn start` to run jellyseerr in the background)
+
+_To set env variables such as `JELLYFIN_TYPE=emby` create a file called `.env` in the root directory of jellyseerr_
+
#### Linux
-Pre-requisites:
+**Pre-requisites:**
-- Nodejs (atleast LTS version)
-- Yarn
+- Nodejs [v18](https://nodejs.org/en/download/package-manager)
+- [Yarn](https://classic.yarnpkg.com/lang/en/docs/install) (on Debian based distros, the package manager provided `yarn` is different and is a package called cmdlet. You can remove that using `apt-remove cmdlet` then install yarn using `npm install -g yarn`)
- Git
+**Steps:**
+
+1. Assuming you want the root folder for the jellyseerr source code to be cloned to `/opt`
+
+```bash
+cd /opt
+```
+
+2. Then execute the following commands to clone and checkout to the stable version
+
```bash
git clone https://github.com/Fallenbagel/jellyseerr.git && cd jellyseerr
-git checkout main #if you want to run stable instead of develop
-yarn install
-yarn run build
-yarn start
+git checkout main
```
-_Systemd-service:_
+3. Then install the dependencies and build the dist
+
+```bash
+CYPRESS_INSTALL_BINARY=0 yarn install --frozen-lockfile --network-timeout 1000000
+yarn run build
+```
+
+4. Now you can start jellyseerr using `yarn start` and opening http://localhost:5055 in your browser.
+
+5. If you want to run jellyseerr as a _Systemd-service:_
- assuming jellyseerr was cloned to `/opt/`
- and the environmentfile is located at `/etc/jellyseerr`
+- first create the environment file at `/etc/jellyseerr/jellyseerr.conf`
-service:
-
-```
-[Unit]
-Description=Jellyseerr Service
-Wants=network-online.target
-After=network-online.target
-
-[Service]
-EnvironmentFile=/etc/jellyseerr/jellyseerr.conf
-Environment=NODE_ENV=production
-Type=exec
-Restart=on-failure
-WorkingDirectory=/opt/jellyseerr
-ExecStart=/root/.nvm/versions/node/v18.7.0/bin/node dist/index.js
-
-[Install]
-WantedBy=multi-user.target
-```
-
-Environmentfile:
+Environment file:
```
# Jellyseerr's default port is 5055, if you want to use both, change this.
@@ -114,9 +120,34 @@ PORT=5055
# JELLYFIN_TYPE=emby
```
+- Then run the command `which node` to find your node path (assuming it's at `/usr/bin/node`)
+- Then create the service file using `sudo systemctl edit jellyseerr.service` or creating and editing a file at `/etc/systemd/system/jellyseerr.service`
+
+Service file contents:
+
+```
+[Unit]
+Description=Jellyseerr Service
+Wants=network-online.target
+After=network-online.target
+
+[Service]
+EnvironmentFile=/etc/jellyseerr/jellyseerr.conf
+Environment=NODE_ENV=production
+Type=exec
+Restart=on-failure
+WorkingDirectory=/opt/jellyseerr
+ExecStart=/usr/bin/node dist/index.js
+
+[Install]
+WantedBy=multi-user.target
+```
+
### Packages:
Archlinux: [AUR](https://aur.archlinux.org/packages/jellyseerr)
+Nixpkg: [Nixpkg](https://search.nixos.org/packages?channel=unstable&show=jellyseerr)
+Snap: [Snap](https://snapcraft.io/jellyseerr)
## Preview
@@ -146,4 +177,199 @@ You can help improve Jellyseerr too! Check out our [Contribution Guide](https://
## Contributors ✨
-Thanks goes to all wonderful people who contributed directly to Jellyseerr and Overseerr.
+Thanks goes to these wonderful people from Overseerr ([emoji key](https://allcontributors.org/docs/en/emoji-key)) and all those that contributed directly to Jellyseerr:
+
+### Jellyseerr Contributors ✨
+
+
+
+
+
+
+
+
+
+
+
+### Overseerr Contributors ✨
+
+
diff --git a/cypress/config/settings.cypress.json b/cypress/config/settings.cypress.json
index bb7b661b..7a4bbef5 100644
--- a/cypress/config/settings.cypress.json
+++ b/cypress/config/settings.cypress.json
@@ -3,147 +3,147 @@
"vapidPrivate": "tmnslaO8ZWN6bNbSEv_rolPeBTlNxOwCCAHrM9oZz3M",
"vapidPublic": "BK_EpP8NDm9waor2zn6_S28o3ZYv4kCkJOfYpO3pt3W6jnPmxrgTLANUBNbbyaNatPnSQ12De9CeqSYQrqWzHTs",
"main": {
- "apiKey": "testkey",
- "applicationTitle": "Overseerr",
- "applicationUrl": "",
- "csrfProtection": false,
- "cacheImages": false,
- "defaultPermissions": 32,
- "defaultQuotas": {
- "movie": {},
- "tv": {}
- },
- "hideAvailable": false,
- "localLogin": true,
- "newPlexLogin": true,
- "region": "",
- "originalLanguage": "",
- "trustProxy": false,
- "partialRequestsEnabled": true,
- "locale": "en"
+ "apiKey": "testkey",
+ "applicationTitle": "Overseerr",
+ "applicationUrl": "",
+ "csrfProtection": false,
+ "cacheImages": false,
+ "defaultPermissions": 32,
+ "defaultQuotas": {
+ "movie": {},
+ "tv": {}
+ },
+ "hideAvailable": false,
+ "localLogin": true,
+ "newPlexLogin": true,
+ "region": "",
+ "originalLanguage": "",
+ "trustProxy": false,
+ "partialRequestsEnabled": true,
+ "locale": "en"
},
"plex": {
- "name": "Seerr",
- "ip": "192.168.1.1",
- "port": 32400,
- "useSsl": false,
- "libraries": [
- {
- "id": "1",
- "name": "Movies",
- "enabled": true,
- "type": "movie"
- }
- ],
- "machineId": "test"
+ "name": "Seerr",
+ "ip": "192.168.1.1",
+ "port": 32400,
+ "useSsl": false,
+ "libraries": [
+ {
+ "id": "1",
+ "name": "Movies",
+ "enabled": true,
+ "type": "movie"
+ }
+ ],
+ "machineId": "test"
},
"tautulli": {},
"radarr": [],
"sonarr": [],
"public": {
- "initialized": true
+ "initialized": true
},
"notifications": {
- "agents": {
- "email": {
- "enabled": false,
- "options": {
- "emailFrom": "",
- "smtpHost": "",
- "smtpPort": 587,
- "secure": false,
- "ignoreTls": false,
- "requireTls": false,
- "allowSelfSigned": false,
- "senderName": "Overseerr"
- }
- },
- "discord": {
- "enabled": false,
- "types": 0,
- "options": {
- "webhookUrl": "",
- "enableMentions": true
- }
- },
- "lunasea": {
- "enabled": false,
- "types": 0,
- "options": {
- "webhookUrl": ""
- }
- },
- "slack": {
- "enabled": false,
- "types": 0,
- "options": {
- "webhookUrl": ""
- }
- },
- "telegram": {
- "enabled": false,
- "types": 0,
- "options": {
- "botAPI": "",
- "chatId": "",
- "sendSilently": false
- }
- },
- "pushbullet": {
- "enabled": false,
- "types": 0,
- "options": {
- "accessToken": ""
- }
- },
- "pushover": {
- "enabled": false,
- "types": 0,
- "options": {
- "accessToken": "",
- "userToken": ""
- }
- },
- "webhook": {
- "enabled": false,
- "types": 0,
- "options": {
- "webhookUrl": "",
- "jsonPayload": "IntcbiAgICBcIm5vdGlmaWNhdGlvbl90eXBlXCI6IFwie3tub3RpZmljYXRpb25fdHlwZX19XCIsXG4gICAgXCJldmVudFwiOiBcInt7ZXZlbnR9fVwiLFxuICAgIFwic3ViamVjdFwiOiBcInt7c3ViamVjdH19XCIsXG4gICAgXCJtZXNzYWdlXCI6IFwie3ttZXNzYWdlfX1cIixcbiAgICBcImltYWdlXCI6IFwie3tpbWFnZX19XCIsXG4gICAgXCJ7e21lZGlhfX1cIjoge1xuICAgICAgICBcIm1lZGlhX3R5cGVcIjogXCJ7e21lZGlhX3R5cGV9fVwiLFxuICAgICAgICBcInRtZGJJZFwiOiBcInt7bWVkaWFfdG1kYmlkfX1cIixcbiAgICAgICAgXCJ0dmRiSWRcIjogXCJ7e21lZGlhX3R2ZGJpZH19XCIsXG4gICAgICAgIFwic3RhdHVzXCI6IFwie3ttZWRpYV9zdGF0dXN9fVwiLFxuICAgICAgICBcInN0YXR1czRrXCI6IFwie3ttZWRpYV9zdGF0dXM0a319XCJcbiAgICB9LFxuICAgIFwie3tyZXF1ZXN0fX1cIjoge1xuICAgICAgICBcInJlcXVlc3RfaWRcIjogXCJ7e3JlcXVlc3RfaWR9fVwiLFxuICAgICAgICBcInJlcXVlc3RlZEJ5X2VtYWlsXCI6IFwie3tyZXF1ZXN0ZWRCeV9lbWFpbH19XCIsXG4gICAgICAgIFwicmVxdWVzdGVkQnlfdXNlcm5hbWVcIjogXCJ7e3JlcXVlc3RlZEJ5X3VzZXJuYW1lfX1cIixcbiAgICAgICAgXCJyZXF1ZXN0ZWRCeV9hdmF0YXJcIjogXCJ7e3JlcXVlc3RlZEJ5X2F2YXRhcn19XCJcbiAgICB9LFxuICAgIFwie3tpc3N1ZX19XCI6IHtcbiAgICAgICAgXCJpc3N1ZV9pZFwiOiBcInt7aXNzdWVfaWR9fVwiLFxuICAgICAgICBcImlzc3VlX3R5cGVcIjogXCJ7e2lzc3VlX3R5cGV9fVwiLFxuICAgICAgICBcImlzc3VlX3N0YXR1c1wiOiBcInt7aXNzdWVfc3RhdHVzfX1cIixcbiAgICAgICAgXCJyZXBvcnRlZEJ5X2VtYWlsXCI6IFwie3tyZXBvcnRlZEJ5X2VtYWlsfX1cIixcbiAgICAgICAgXCJyZXBvcnRlZEJ5X3VzZXJuYW1lXCI6IFwie3tyZXBvcnRlZEJ5X3VzZXJuYW1lfX1cIixcbiAgICAgICAgXCJyZXBvcnRlZEJ5X2F2YXRhclwiOiBcInt7cmVwb3J0ZWRCeV9hdmF0YXJ9fVwiXG4gICAgfSxcbiAgICBcInt7Y29tbWVudH19XCI6IHtcbiAgICAgICAgXCJjb21tZW50X21lc3NhZ2VcIjogXCJ7e2NvbW1lbnRfbWVzc2FnZX19XCIsXG4gICAgICAgIFwiY29tbWVudGVkQnlfZW1haWxcIjogXCJ7e2NvbW1lbnRlZEJ5X2VtYWlsfX1cIixcbiAgICAgICAgXCJjb21tZW50ZWRCeV91c2VybmFtZVwiOiBcInt7Y29tbWVudGVkQnlfdXNlcm5hbWV9fVwiLFxuICAgICAgICBcImNvbW1lbnRlZEJ5X2F2YXRhclwiOiBcInt7Y29tbWVudGVkQnlfYXZhdGFyfX1cIlxuICAgIH0sXG4gICAgXCJ7e2V4dHJhfX1cIjogW11cbn0i"
- }
- },
- "webpush": {
- "enabled": false,
- "options": {}
- },
- "gotify": {
- "enabled": false,
- "types": 0,
- "options": {
- "url": "",
- "token": ""
- }
+ "agents": {
+ "email": {
+ "enabled": false,
+ "options": {
+ "emailFrom": "",
+ "smtpHost": "",
+ "smtpPort": 587,
+ "secure": false,
+ "ignoreTls": false,
+ "requireTls": false,
+ "allowSelfSigned": false,
+ "senderName": "Overseerr"
+ }
+ },
+ "discord": {
+ "enabled": false,
+ "types": 0,
+ "options": {
+ "webhookUrl": "",
+ "enableMentions": true
+ }
+ },
+ "lunasea": {
+ "enabled": false,
+ "types": 0,
+ "options": {
+ "webhookUrl": ""
+ }
+ },
+ "slack": {
+ "enabled": false,
+ "types": 0,
+ "options": {
+ "webhookUrl": ""
+ }
+ },
+ "telegram": {
+ "enabled": false,
+ "types": 0,
+ "options": {
+ "botAPI": "",
+ "chatId": "",
+ "sendSilently": false
+ }
+ },
+ "pushbullet": {
+ "enabled": false,
+ "types": 0,
+ "options": {
+ "accessToken": ""
+ }
+ },
+ "pushover": {
+ "enabled": false,
+ "types": 0,
+ "options": {
+ "accessToken": "",
+ "userToken": ""
+ }
+ },
+ "webhook": {
+ "enabled": false,
+ "types": 0,
+ "options": {
+ "webhookUrl": "",
+ "jsonPayload": "IntcbiAgICBcIm5vdGlmaWNhdGlvbl90eXBlXCI6IFwie3tub3RpZmljYXRpb25fdHlwZX19XCIsXG4gICAgXCJldmVudFwiOiBcInt7ZXZlbnR9fVwiLFxuICAgIFwic3ViamVjdFwiOiBcInt7c3ViamVjdH19XCIsXG4gICAgXCJtZXNzYWdlXCI6IFwie3ttZXNzYWdlfX1cIixcbiAgICBcImltYWdlXCI6IFwie3tpbWFnZX19XCIsXG4gICAgXCJ7e21lZGlhfX1cIjoge1xuICAgICAgICBcIm1lZGlhX3R5cGVcIjogXCJ7e21lZGlhX3R5cGV9fVwiLFxuICAgICAgICBcInRtZGJJZFwiOiBcInt7bWVkaWFfdG1kYmlkfX1cIixcbiAgICAgICAgXCJ0dmRiSWRcIjogXCJ7e21lZGlhX3R2ZGJpZH19XCIsXG4gICAgICAgIFwic3RhdHVzXCI6IFwie3ttZWRpYV9zdGF0dXN9fVwiLFxuICAgICAgICBcInN0YXR1czRrXCI6IFwie3ttZWRpYV9zdGF0dXM0a319XCJcbiAgICB9LFxuICAgIFwie3tyZXF1ZXN0fX1cIjoge1xuICAgICAgICBcInJlcXVlc3RfaWRcIjogXCJ7e3JlcXVlc3RfaWR9fVwiLFxuICAgICAgICBcInJlcXVlc3RlZEJ5X2VtYWlsXCI6IFwie3tyZXF1ZXN0ZWRCeV9lbWFpbH19XCIsXG4gICAgICAgIFwicmVxdWVzdGVkQnlfdXNlcm5hbWVcIjogXCJ7e3JlcXVlc3RlZEJ5X3VzZXJuYW1lfX1cIixcbiAgICAgICAgXCJyZXF1ZXN0ZWRCeV9hdmF0YXJcIjogXCJ7e3JlcXVlc3RlZEJ5X2F2YXRhcn19XCJcbiAgICB9LFxuICAgIFwie3tpc3N1ZX19XCI6IHtcbiAgICAgICAgXCJpc3N1ZV9pZFwiOiBcInt7aXNzdWVfaWR9fVwiLFxuICAgICAgICBcImlzc3VlX3R5cGVcIjogXCJ7e2lzc3VlX3R5cGV9fVwiLFxuICAgICAgICBcImlzc3VlX3N0YXR1c1wiOiBcInt7aXNzdWVfc3RhdHVzfX1cIixcbiAgICAgICAgXCJyZXBvcnRlZEJ5X2VtYWlsXCI6IFwie3tyZXBvcnRlZEJ5X2VtYWlsfX1cIixcbiAgICAgICAgXCJyZXBvcnRlZEJ5X3VzZXJuYW1lXCI6IFwie3tyZXBvcnRlZEJ5X3VzZXJuYW1lfX1cIixcbiAgICAgICAgXCJyZXBvcnRlZEJ5X2F2YXRhclwiOiBcInt7cmVwb3J0ZWRCeV9hdmF0YXJ9fVwiXG4gICAgfSxcbiAgICBcInt7Y29tbWVudH19XCI6IHtcbiAgICAgICAgXCJjb21tZW50X21lc3NhZ2VcIjogXCJ7e2NvbW1lbnRfbWVzc2FnZX19XCIsXG4gICAgICAgIFwiY29tbWVudGVkQnlfZW1haWxcIjogXCJ7e2NvbW1lbnRlZEJ5X2VtYWlsfX1cIixcbiAgICAgICAgXCJjb21tZW50ZWRCeV91c2VybmFtZVwiOiBcInt7Y29tbWVudGVkQnlfdXNlcm5hbWV9fVwiLFxuICAgICAgICBcImNvbW1lbnRlZEJ5X2F2YXRhclwiOiBcInt7Y29tbWVudGVkQnlfYXZhdGFyfX1cIlxuICAgIH0sXG4gICAgXCJ7e2V4dHJhfX1cIjogW11cbn0i"
+ }
+ },
+ "webpush": {
+ "enabled": false,
+ "options": {}
+ },
+ "gotify": {
+ "enabled": false,
+ "types": 0,
+ "options": {
+ "url": "",
+ "token": ""
+ }
+ }
}
- }
},
"jobs": {
- "plex-recently-added-scan": {
- "schedule": "0 */5 * * * *"
- },
- "plex-full-scan": {
- "schedule": "0 0 3 * * *"
- },
- "radarr-scan": {
- "schedule": "0 0 4 * * *"
- },
- "sonarr-scan": {
- "schedule": "0 30 4 * * *"
- },
- "download-sync": {
- "schedule": "0 * * * * *"
- },
- "download-sync-reset": {
- "schedule": "0 0 1 * * *"
- }
+ "plex-recently-added-scan": {
+ "schedule": "0 */5 * * * *"
+ },
+ "plex-full-scan": {
+ "schedule": "0 0 3 * * *"
+ },
+ "radarr-scan": {
+ "schedule": "0 0 4 * * *"
+ },
+ "sonarr-scan": {
+ "schedule": "0 30 4 * * *"
+ },
+ "download-sync": {
+ "schedule": "0 * * * * *"
+ },
+ "download-sync-reset": {
+ "schedule": "0 0 1 * * *"
+ }
}
- }
+}
diff --git a/docker-compose.yml b/docker-compose.yml
index 835bbf29..91b76e1e 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,6 +1,6 @@
version: '3'
services:
- overseerr:
+ jellyseerr:
build:
context: .
dockerfile: Dockerfile.local
diff --git a/overseerr-api.yml b/overseerr-api.yml
index b712d7c8..7a7ea490 100644
--- a/overseerr-api.yml
+++ b/overseerr-api.yml
@@ -368,6 +368,9 @@ components:
externalHostname:
type: string
example: 'http://my.jellyfin.host'
+ jellyfinForgotPasswordUrl:
+ type: string
+ example: 'http://my.jellyfin.host/web/index.html#!/forgotpassword.html'
adminUser:
type: string
example: 'admin'
@@ -1351,6 +1354,8 @@ components:
type: string
userToken:
type: string
+ sound:
+ type: string
GotifySettings:
type: object
properties:
@@ -1786,6 +1791,9 @@ components:
pushoverUserKey:
type: string
nullable: true
+ pushoverSound:
+ type: string
+ nullable: true
telegramEnabled:
type: boolean
telegramBotUsername:
@@ -3083,6 +3091,33 @@ paths:
responses:
'204':
description: Test notification attempted
+ /settings/notifications/pushover/sounds:
+ get:
+ summary: Get Pushover sounds
+ description: Returns valid Pushover sound options in a JSON array.
+ tags:
+ - settings
+ parameters:
+ - in: query
+ name: token
+ required: true
+ schema:
+ type: string
+ nullable: false
+ responses:
+ '200':
+ description: Returned Pushover settings
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ type: object
+ properties:
+ name:
+ type: string
+ description:
+ type: string
/settings/notifications/gotify:
get:
summary: Get Gotify notification settings
diff --git a/public/android-chrome-192x192.png b/public/android-chrome-192x192.png
index d45f2f6cb952c1286448d56e89ddc0f295cf3100..6b9a1caf86cf5dd1248aa00448525367775c7d9e 100644
GIT binary patch
literal 17455
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