* Make a (shallow) copy of radarr/sonarr tags into a request before adding user tags
* Undo random formatting changes
* more undoing formatting changes
* Fix undefined case.
* Prettier format
* feat: auto tagging requested media with username
Relating to discussion: https://github.com/sct/overseerr/discussions/3313
Adding an option to the Radarr and Sonarr service to enable automatic tagging
with the username requesting the media.
Current format, to reduce tag clutter if a user changes displayname:
`[user.id] - [user.displayName]`
* fix: modified new secondary tip language
---------
Co-authored-by: Brandon Cohen <brandon@z3hn.dev>
* refactor: decoupled PTR by removing import and creating new touch logic
* fix: overscroll behavior on mobile is now prevented on the y axis
* feat: added shadow effects to icon
* fix: modified cypress test
* fix: added better scroll lock functionality
* fix: hide icon if scroll value is negative
* fix: changed to allow usage on all touch devices
* fix: added extra check for unmonitored movies in radarr
* feat: created new radarr/sonarr routes to grab existing series data
* refactor: updated job routes to check by external service id
* fix: season check will now also look at episode file count
* feat: add availability synchronization job
fix#377
* fix: feedback on PR
* perf: use pagination for Media Availability Synchronization job
The original approach loaded all media items from the database at once. With large libraries, this
could lead to performance issues. We're now using a paginated approach with a page size of 50.
* feat: updated the availability sync to work with 4k
* fix: corrected detection of media in plex
* refactor: code cleanup and minimized unnecessary calls
* fix: if media is not found, media check will continue
* fix: if non-4k or 4k show media is updated, seasons and request is now properly updated
* refactor: consolidated media updater into one function
* fix: season requests are now removed if season has been deleted
* refactor: removed joincolumn
* fix: makes sure we will always check radarr/sonarr to see if media exists
* fix: media will now only be updated to unavailable and deletion will be prevented
* fix: changed types in Media entity
* fix: prevent season deletion in preference of setting season to unknown
---------
Co-authored-by: Jari Zwarts <jari@oberon.nl>
Co-authored-by: Sebastian Kappen <sebastian@kappen.dev>
* fix(ui): remove opacity classes from transition enter and leave props
The flickering was caused by the opacity classes in the `leave` prop to take effect as the
transition ends; when the `leaveTo` prop classes are no longer applied, but the `leave` prop classes
are still applied.
* fix(ui): resolve transition issues for all components
1. Remove opacity classes from `enter` and `leave` props
2. Fix some class name typos
3. Remove transform classes since those are automatically applied as from TailwindCSS v3.0
4. Narrow down `transition` classes to only the properties being transitioned in Transition components
* fix: added a refresh interval if download status is in progress
* refactor: switched to a function instead of useEffect
* feat: added editable download sync schedule
CDNs such as Cloudflare bypass their cache if cookies are set in the response.
clearCookies
middleware removes the header before imageproxy serves the image.
* fix(build): use env variable to login with snapcraft 7
* refactor(build): replace deprecated set-output command in GHA
* fix(build): use correct environment variable for output
* style(build): run prettier
* docs(installation): add PORT env variable to Docker CLI & Docker Compose examples
* docs(installation): fix typo
* docs(installation): clarify hint about named volumes for windows installation example
* fix: series would show an empty season on season list or tv request modal
* fix: request more would show even if all requestable seasons are already requested
* fix: will check if request or season length is longer
* fix(deps): update dependency @heroicons/react to v2
* fix: update imports and fix icon name changes for heroicons
* fix: also update MiniStatusBadge to use new check icon
* fix: update last place with old import
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: sct <ryan@sct.dev>
* fix(ui): hide available media on person page
* fix(ui): set correct label for image cache settings
* fix(ui): disable status badge tooltip for collections
* fix(ui): replace empty space when no episodes in season
* fix: suggested changes
* fix(jobs): set watchlist sync to short interval
* chore: run i18n:extract
* fix: suggested changes
The updated `next.js` dependency has a new regex match in the code for `/^\/_next\/data\//`.
This `sub_filter` creates invalid regex `/^\/overseerr/_next\/data\//`
```nginx
sub_filter '/_next' '/$app/_next';
```
It needs to be updated to substitute the correct the regex `/^\/overseerr\/_next\/data\//`
```nginx
sub_filter '\/_next' '\/$app\/_next';
sub_filter '/_next' '/$app/_next';
```
if all seasons are requested for a TV show, show each indivdual season badge. This prevents the
admin from needing to open a second tab / navigate to see how many seasons / what seasons have been
requested.
* feat(logs): add search filter
* refactor(logs): move loading spinner inside log viewer
Inputting text in the search bar on the logs page would refresh the page
losing focus on the search bar.
This moves the loading spinner inside the log viewer, so that it is not
as disruptive as it would
* fix(logs): escape string for search filter
* chore: rebase
* fix(logs): suggested changes
* feat: pull down to refresh functionality
Custom pull down to refresh added to replace the default browser pull down to refresh. This will
allow you to manually reload the page if you are using it as a PWA.
* test: update test to check api call correctly
changed api call for test and made sure it pulls down all the way to trigger refresh
* fix: changed positioning of pull to refresh
Refresh indicator now has absolute positioning and will prevent the top edge from pulling down.
* fix(jobs): reset job schedule edit modal values when closed
* feat(jobs): show job's current frequency
* fix(jobs): reset job schedule edit modal values when cancelled
* chore: rebase
* refactor(jobs): use reducer instead of several react states
* fix(jobs): reset modal state when opening instead of closing the modal
This prevents the modal state from glitching when saving/closing the modal
* feat(jobs): parse job schedule cron string
unavailable locale will fallback to english
* feat(lang): translated using Weblate (French)
Currently translated at 99.4% (1067 of 1073 strings)
feat(lang): translated using Weblate (French)
Currently translated at 97.1% (1040 of 1071 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Mathieu <math_du_88@yahoo.fr>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/fr/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Portuguese (Brazil))
Currently translated at 99.2% (1063 of 1071 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Tijuco <sendtomy@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/pt_BR/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Chinese (Traditional))
Currently translated at 99.8% (1083 of 1085 strings)
feat(lang): translated using Weblate (Chinese (Traditional))
Currently translated at 99.6% (1081 of 1085 strings)
feat(lang): translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (1073 of 1073 strings)
feat(lang): translated using Weblate (Chinese (Traditional))
Currently translated at 99.4% (1067 of 1073 strings)
feat(lang): translated using Weblate (Chinese (Traditional))
Currently translated at 99.5% (1066 of 1071 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/zh_Hant/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (German)
Currently translated at 100.0% (1073 of 1073 strings)
feat(lang): translated using Weblate (German)
Currently translated at 100.0% (1073 of 1073 strings)
feat(lang): translated using Weblate (German)
Currently translated at 99.6% (1067 of 1071 strings)
Co-authored-by: Ben <ben.david.wallner@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/de/
Translation: Overseerr/Overseerr Frontend
Co-authored-by: Mathieu <math_du_88@yahoo.fr>
Co-authored-by: Tijuco <sendtomy@protonmail.com>
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Co-authored-by: Ben <ben.david.wallner@gmail.com>
* feat(perms): add new permission for viewing recently added media
* test: update login test to check for Trending instead of Recently Added
* fix: avoid conflict with new watchlist perms
The delete user modal will now show the user that is being deleted and the delete button will now
ask you to confirm deletion similar to the delete request button.
* build(snap): try re-enabling snap workflow
* build: try adding a safe directory exception?
* build(snap): disable cypress binary install
* build(snap): add yarnrc to force frozen lockfile and timeout arguments
* build(snap): add back in release snap workflow
* build(snap): revert back to only running on dev branch
* fix: fixed recommendations page causing infinite network requests to tmdb api
TMDB API would only return 40 results and the recommendations page expected more. This would cause
an infinite amount of network requests. I set a limit specifically for this solving the problem.
fix#2710
* fix(tautulli): fetch additional user history as necessary to return 20 unique media
* refactor: rename var for clarity
* refactor: make single DB query for recently watched media
* fix: resolve query builder weirdness
* refactor: use find instead of qb
* refactor: minor refactor
* fix: also find 4K rating keys
* feat: if local sign-in disabled, verify Plex server access during auth for existing users
* fix: disable local/password login by default
* fix: set localLogin to disabled in getInitialProps
* fix: verify Plex server access on local logins as well
* feat(lang): translated using Weblate (Japanese)
Currently translated at 46.5% (485 of 1041 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/ja/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Albanian)
Currently translated at 100.0% (1041 of 1041 strings)
feat(lang): translated using Weblate (Albanian)
Currently translated at 100.0% (1041 of 1041 strings)
feat(lang): translated using Weblate (Albanian)
Currently translated at 100.0% (1041 of 1041 strings)
feat(lang): translated using Weblate (Albanian)
Currently translated at 100.0% (1041 of 1041 strings)
feat(lang): translated using Weblate (Albanian)
Currently translated at 100.0% (1041 of 1041 strings)
feat(lang): translated using Weblate (Albanian)
Currently translated at 62.6% (652 of 1041 strings)
feat(lang): translated using Weblate (Albanian)
Currently translated at 50.7% (528 of 1041 strings)
feat(lang): translated using Weblate (Albanian)
Currently translated at 16.3% (170 of 1041 strings)
feat(lang): added translation using Weblate (Albanian)
Co-authored-by: Denis Çerri <deniscerri3@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Co-authored-by: sct <sctsnipe@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/sq/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (French)
Currently translated at 100.0% (1041 of 1041 strings)
feat(lang): translated using Weblate (French)
Currently translated at 100.0% (1041 of 1041 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Nackophilz <zrv4flra@anonaddy.me>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/fr/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Polish)
Currently translated at 100.0% (1041 of 1041 strings)
feat(lang): translated using Weblate (Polish)
Currently translated at 100.0% (1041 of 1041 strings)
feat(lang): translated using Weblate (Polish)
Currently translated at 100.0% (1041 of 1041 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Co-authored-by: tomgacz <tomgacz@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/pl/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (1041 of 1041 strings)
feat(lang): translated using Weblate (Portuguese (Brazil))
Currently translated at 98.5% (1026 of 1041 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Tijuco <sendtomy@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/pt_BR/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Italian)
Currently translated at 100.0% (1041 of 1041 strings)
feat(lang): translated using Weblate (Italian)
Currently translated at 99.8% (1039 of 1041 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Simone Chiavaccini <mazzetta86@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/it/
Translation: Overseerr/Overseerr Frontend
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Co-authored-by: Denis Çerri <deniscerri3@gmail.com>
Co-authored-by: sct <sctsnipe@gmail.com>
Co-authored-by: Nackophilz <zrv4flra@anonaddy.me>
Co-authored-by: tomgacz <tomgacz@gmail.com>
Co-authored-by: Tijuco <sendtomy@protonmail.com>
Co-authored-by: Simone Chiavaccini <mazzetta86@gmail.com>
* feat(lang): translated using Weblate (Serbian)
Currently translated at 49.9% (518 of 1038 strings)
feat(lang): translated using Weblate (Serbian)
Currently translated at 47.3% (492 of 1038 strings)
Co-authored-by: Dalibor Radovanović <darkobg@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/sr/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (German)
Currently translated at 100.0% (1038 of 1038 strings)
feat(lang): translated using Weblate (German)
Currently translated at 100.0% (1038 of 1038 strings)
Co-authored-by: Ben <ben.david.wallner@gmail.com>
Co-authored-by: Ben Wallner <ben.david.wallner@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/de/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (1038 of 1038 strings)
feat(lang): translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (1038 of 1038 strings)
feat(lang): translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (1038 of 1038 strings)
feat(lang): translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (1038 of 1038 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: exentler <gurandsrud@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/nb_NO/
Translation: Overseerr/Overseerr Frontend
Co-authored-by: Dalibor Radovanović <darkobg@gmail.com>
Co-authored-by: Ben <ben.david.wallner@gmail.com>
Co-authored-by: exentler <gurandsrud@gmail.com>
* feat: media/user watch history data via Tautulli
* fix(frontend): only display slideover cog button if there is media to manage
* fix(lang): tweak permission denied messages
* refactor: reorder Media section in slideover
* refactor: use new Tautulli stats API
* fix(frontend): do not attempt to fetch data when user lacks req perms
* fix: remove unneccessary get_user requests
* feat(frontend): display user avatars
* feat: add external URL setting
* feat: add play counts for past week/month
* fix(lang): tweak strings
Co-authored-by: Ryan Cohen <ryan@sct.dev>
* feat(frontend): open media management slideover on status badge click
* fix(frontend): use Link component for in-app badge links
* fix: check for query param value of '1'
* fix: correct query param check
* fix: available badges should still link to Plex
* build(deps): bump dependencies
* build(deps): bump next to 12.0.8
* build(deps): bump swr to 1.1.2
* build(deps): bump more dependencies
* build(deps): bump husky to 7.0.4
* fix: remove user list button outlines
* build(deps): bump dependencies again
* build(deps): bump dependencies once more
* docs(contrib): clarify when to squash commits
* docs(support): ask for more details when requesting support
* docs(install): specify more container details
* docs(contrib): suggested changes
* fix(notif): show event in pop up notification for slack
fix#2408
* fix(notifs): suggested changes
* fix(notif): add fallback text to slack embed builder
Co-authored-by: Ryan Cohen <ryan@sct.dev>
* fix(frontend): theme-color meta tag
* fix(frontend): add theme-color to offline.html
* fix(frontend): reorder application-name meta tag instead
* fix(lang): regenerate strings
* refactor: optimize Trakt logo SVG
* feat(api): allow importing of only selected Plex users
* feat(frontend): modal for importing Plex users
* feat: add alert if 'Enable New Plex Sign-In' setting is enabled
* refactor: fetch all existing Plex users in a single DB query
Co-authored-by: Ryan Cohen <ryan@sct.dev>
* feat(search): search by id
This adds the ability to search by ID (starting with TMDb ID).
Since there doesn't seem to be way of searching across movies, tv and persons,
I have to search through all 3 and use the first one in the order: movie -> tv -> person
Searching by ID is triggered using a 'prefix' just like in the *arrs.
* fix: missed some refactoring
* feat(search): use locale language
* feat(search): search using imdb id
* feat(search): search using tvdb id
* fix: alias type import
* fix: missed some refactoring
* fix(search): account for id being a string
* feat(search): account for movies/tvs/persons with the same id
* feat(search): remove non-null assertion
Co-authored-by: Ryan Cohen <ryan@sct.dev>
* fix: order collection parts by release date
* feat(frontend): add posters & release years to collection request modal
* fix(frontend): wrap movie titles in collection request modal
* feat(ui): allow admins to edit & accept request from request modal
This changes the "Edit Request" button in the advanced request modal to "Edit & Accept Request"
since the only thing an admin would do next is to accept the request.
The button would stay the same for users without the manage request permissions;
users who are editing their own requests or requesting content.
* feat(ui): suggested changes
* feat: add quotas, advanced options, and toggles to collection request modal
* fix: use correct requiredquota strings
* refactor: clean up collection part request status logic
* revert: undo changes to effect dependencies
* fix(lang): tweak TV request modal request button strings
* fix: don't try to fetch other users' quotas without MANAGE_USERS perm
* feat(lang): translated using Weblate (Catalan)
Currently translated at 100.0% (992 of 992 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: dtalens <databio@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/ca/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Danish)
Currently translated at 99.1% (984 of 992 strings)
feat(lang): translated using Weblate (Danish)
Currently translated at 99.1% (984 of 992 strings)
feat(lang): translated using Weblate (Danish)
Currently translated at 99.1% (984 of 992 strings)
feat(lang): translated using Weblate (Danish)
Currently translated at 90.7% (900 of 992 strings)
feat(lang): translated using Weblate (Danish)
Currently translated at 88.9% (882 of 992 strings)
feat(lang): translated using Weblate (Danish)
Currently translated at 72.1% (716 of 992 strings)
feat(lang): translated using Weblate (Danish)
Currently translated at 56.9% (565 of 992 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Simon Thyregod <p2v2w8ar@simon.thyregod.eu>
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/da/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Chinese (Simplified))
Currently translated at 90.7% (900 of 992 strings)
feat(lang): translated using Weblate (Chinese (Simplified))
Currently translated at 90.6% (899 of 992 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Jassy lin <linjiaxinme@gmail.com>
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/zh_Hans/
Translation: Overseerr/Overseerr Frontend
Co-authored-by: dtalens <databio@gmail.com>
Co-authored-by: Simon Thyregod <p2v2w8ar@simon.thyregod.eu>
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Co-authored-by: Jassy lin <linjiaxinme@gmail.com>
* fix(api): fix requestedBy logic in request edits
* fix(frontend): do not display empty advanced request options box
* fix(frontend): set max height on modal backdrop
* fix: users should always be able to view their own issues
* fix: apply route guards to issues pages instead
* fix(api): only allow users w/ issue perms to edit comments / delete issues
* fix(frontend): more issues-related fixes
* fix: permission VIEW_ISSUES is also sufficient for viewing issues in slideover
* fix(frontend): only display issue notif types user is eligible to receive
* fix: don't display issues block in slideover if no open issues
* fix: move year out of link in issue details header
* fix: use 'view' global string for issue block button
* fix: issue/request/user list sort options
* feat(notif): add Pushbullet and Pushover agents to user notification settings
* docs(notif): add "hint" about user notifications to Pushbullet and Pushover pages
* fix: regenerate DB migration
* fix(lang): string edits
* fix: correct notif type ordering
* fix(lang): a few more edits
* fix(frontend): align & wrap media attributes properly
* fix(lang): use consistent cache names
* fix(email): do not attempt to display logo if app URL not configured
* fix(email): prevent Gmail from turning usernames with periods into hyperlinks
* fix(email): fix(email): use displayName instead of username/plexUserName and improve Gmail link fix
* feat(ui): link processing/requested status badges to service URL where available
* refactor: add URL prop to Badge component
* fix(css): tweak font weight of media rating values and request card link hover effect
* fix: only set StatusBadge serviceUrl for admins
* feat(servarr): auto fill base url when testing service if missing
This will fill the base URL of the *arr service only if it's missing and the base URL hasn't been
provided beforehand
* fix(servarr): replace redundant check
* fix(servarr): suggested changes
* feat: dynamically fetch login screen backdrop images
* fix: remove media check from backdrops endpoint
* fix: remove mapping and work with TMDb data directly
* feat(jobs): backend implementation
* feat(jobs): initial frontend implementation
* feat(jobs): store job settings as Record
* feat(jobs): use heroicons/react instead of inline svgs
* feat(jobs): use presets instead of cron expressions
* feat(jobs): ran `yarn i18n:extract`
* feat(jobs): suggested changes
- use job ids in settings
- add intervalDuration to jobs to allow choosing only minutes or hours for the job schedule
- move job schedule defaults to settings.json
- better TS types for jobs in settings cache component
- make suggested changes to wording
- plural form for label when job schedule can be defined in minutes
- add fixed job interval duration
- add predefined interval choices for minutes and hours
- add new schema for job to overseerr api
* feat(jobs): required change for CI to not fail
* feat(jobs): suggested changes
* fix(jobs): revert offending type refactor
* docs: improve Docker documentation
* docs: suggested changes
* docs: minor formatting changes
* docs: add Doplarr to list of third-party integrations
* docs: rename docker run tab
* docs: add link to official Docker CLI docs
* docs: minor edits
* feat: display release dates for theatrical, digital, and physical release types
* fix(ui): use disc icon for physical release
* style: reformat to make new version of Prettier happy
* fix(quota): block multi-season requests that would exceed a user's quota
* fix(docs): add missing request user option to API docs
Co-authored-by: sct <ryan@sct.dev>
* refactor(ui): add prev/next button icons
* refactor(ui): use mail icon instead of at symbol icon for email
* refactor(ui): use ↻ symbol instead of ⤾ for reload button
* refactor(ui): add missing icons to password reset pages
* refactor(ui): add icons for save & test buttons
Co-authored-by: sct <ryan@sct.dev>
* refactor(ui): tweak styling of sidebar & user profile quota display
* refactor(ui): adjust sidebar gradient to match theme color
Co-authored-by: sct <ryan@sct.dev>
* fix: check that application URL and email agent are configured for password reset/generation
* refactor: reverse flex direction instead of conditionally changing justify
* docs(installation): spelling "Community" Unraid
Spelling correction for Community in the Unraid Installation section.
* docs(slack): Grammar correction
Double full stop corrected.
Co-authored-by: TheCatLady <52870424+TheCatLady@users.noreply.github.com>
typeorm 0.2.34 introduced a bug with relations causing typeorm to think relations are loaded that
arent. will look back at updating this in future versions.
* feat: allow users to select notification types
* fix(ui): display personal notification types before management types
* fix: update allRequestsAutoApproved check to account for new REQUEST_MOVIE & REQUEST_TV perms
* fix(ui): do not display Discord notif type selector if user not eligible for any types
* refactor(ui): remove unnecessary 'enabled' checkboxes from user notif settings
* fix(ui): correct checkbox behavior
* fix: add missing return type on hasNotificationType
* refactor: remove unused isValid prop in NotificationsWebPush
* fix(ui): use SensitiveInput for users' public PGP keys
* fix(ui): add missing tip/hint for email encryption setting
* refactor(svg): use the new Discord logo
* revert(api): undo breaking change removing discordEnabled from UserSettingsNotificationsResponse
* fix(lang): update notification type descriptions for clarity
* fix(telegram): do not send users notifications of their own auto-approved requests
* fix(plex): do not fail to import Plex users when Plex Home has managed users
* fix: default display name to email when user has no username
also, do not set username or plexUsername when it is the same as the user's email address
* fix(ui): user display name placeholder should reflect fallback logic if username is not set
* fix(ui): hide email addresses of other users if logged-in user does not have Manage Users permission
* fix: always set Plex username even if same as user's email
* fix: remove unnecessary permission check
* fix: transform email addresses to lowercase
* feat(lang): add Greek & Polish display languages
Also:
* rename zh-TW display language to 繁體中文
* fix plurality of AvailableLocale type name
* consistently use 'en' as fallback/default language
* revert(lang): remove Polish display language due to lack of translation activity
* feat(ui): add additional request card buttons
* feat(ui): add year to request list items & request cards
* fix(ui): do not show edit button conditionally, and don't hide modifiedBy user
* revert: do not unhide season list for reg users on mobile
* feat(plex): add support for custom Plex Web App URLs
* refactor: clean up Yup validation in *arr modals & email settings
* fix(lang): change Web App URL tip
* fix: remove web app URL validation and add 'Advanced' badge
* fix(locale): default user locale should be the server setting
* fix(db): fix user settings migration
* fix(db): set default locale to empty string
* revert: revert change to usersettings.ts
* ci: revert actions/cache version change and install GNU tar
* ci: do not potentially destroy Docker cache while building preview images
* build(docker): refactor Dockerfile to cache node_modules
* ci: remove Next.js caching
* build(docker): don't break arm builds
* fix: correctly fall back to English name in LanguageSelector
* refactor: clean up language sort & name logic
* refactor: also clean up region sort & name logic
* refactor: use arrow functions
* feat(lang): translated using Weblate (French)
Currently translated at 97.3% (840 of 863 strings)
feat(lang): translated using Weblate (French)
Currently translated at 96.4% (832 of 863 strings)
feat(lang): translated using Weblate (French)
Currently translated at 96.4% (832 of 863 strings)
feat(lang): translated using Weblate (French)
Currently translated at 96.1% (830 of 863 strings)
feat(lang): translated using Weblate (French)
Currently translated at 96.1% (830 of 863 strings)
feat(lang): translated using Weblate (French)
Currently translated at 96.0% (829 of 863 strings)
feat(lang): translated using Weblate (French)
Currently translated at 96.0% (829 of 863 strings)
feat(lang): translated using Weblate (French)
Currently translated at 95.7% (826 of 863 strings)
feat(lang): translated using Weblate (French)
Currently translated at 95.7% (826 of 863 strings)
feat(lang): translated using Weblate (French)
Currently translated at 95.3% (823 of 863 strings)
feat(lang): translated using Weblate (French)
Currently translated at 95.3% (823 of 863 strings)
feat(lang): translated using Weblate (French)
Currently translated at 95.2% (822 of 863 strings)
feat(lang): translated using Weblate (French)
Currently translated at 95.2% (822 of 863 strings)
feat(lang): translated using Weblate (French)
Currently translated at 95.1% (821 of 863 strings)
feat(lang): translated using Weblate (French)
Currently translated at 95.1% (821 of 863 strings)
feat(lang): translated using Weblate (French)
Currently translated at 95.0% (820 of 863 strings)
feat(lang): translated using Weblate (French)
Currently translated at 95.0% (820 of 863 strings)
Co-authored-by: Dabu <clarissy.andrea@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Mathieu <math_du_88@yahoo.fr>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/fr/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Italian)
Currently translated at 95.8% (827 of 863 strings)
Co-authored-by: Simone Chiavaccini <mazzetta86@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/it/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (863 of 863 strings)
Co-authored-by: Marcos <silvamarcos1919@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/pt_PT/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Japanese)
Currently translated at 39.6% (342 of 863 strings)
Co-authored-by: TheCatLady <52870424+TheCatLady@users.noreply.github.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/ja/
Translation: Overseerr/Overseerr Frontend
Co-authored-by: Dabu <clarissy.andrea@gmail.com>
Co-authored-by: Mathieu <math_du_88@yahoo.fr>
Co-authored-by: Simone Chiavaccini <mazzetta86@gmail.com>
Co-authored-by: Marcos <silvamarcos1919@outlook.com>
Co-authored-by: TheCatLady <52870424+TheCatLady@users.noreply.github.com>
* refactor(css): add global classes for common icon types
* refactor(css): target child SVGs instead of creating new icon classes
* fix: fix ButtonWithDropdown style class spacing
* fix: set editRequest attribute for RequestModal
* fix: remove now-unneeded conditional
* fix(ui): only show 'View Request' for user's own requests if they don't have MANAGE_REQUESTS perm
* fix(ui): show edit button on request list for own requests & 'View Request' button on series pages
* fix(ui): do not show 'Request More' if user already has a pending request
* fix: address PR comments
* fix(lang): edit usercreatedfaileexisting string & generate translation key
* fix: users should always be able to view/edit their own requests even if their perms have changed
also fixed capitalization of 'Signing In...' string
* fix(notif): include year in notifications
* fix(lang): fix shared overwritten strings
* fix: check if email agent is actually enabled when generating passwords
* fix(ui): hide alert when email notifs are already configured
* fix(ui): disable instead of hide checkbox
* fix: determine if email notifications are enabled via user settings endpoint
* refactor(ui): improved alerts for services settings & removed alert titles
* fix(ui): set styling of alert links to be consistent w/ others
* fix(ui): clarify appropriate 4K setting when user has not configured a default non-4K server
* fix: remove unused var/eslint-disable & correct string
* refactor(ui): add tabs to user notification settings
* feat(notif): allow users to enable/disable specific agents
* fix(ui): only enforce required fields when agent is enabled
* fix(ui): hide unavailable notification agents
* feat(notif): mention admin users for admin Discord notifications
* fix(ui): modify styling of PGP key textareas to suit expected input
* fix(notif): mention all admins when there are multiple and fix rebase error
* fix: add missing form values, and fix Yup validation
* refactor: reduce repeated logic/code in email notif agent
* refactor: move 'Notification Types' label into NotificationTypeSelector component
* fix(email): correct inconsistencies in email template formatting
* refactor: use bitfields for storing user-enabled notif agent types
* feat: improve notification agent logging
* fix(ui): mark string fields as nullable so empty values are not type errors
* fix: add validation for PGP-related inputs
* fix: correctly fetch user in user settings & log mentioned IDs for Discord notifs
* fix(ui): fix mobile nav dropdown text & add hover effect to button-style tabs
* fix(notif): process admin email notifications asynchronously
* fix(logging): log name of notification type instead of its enum value
* fix: mark required fields and pass all user settings values to API
* fix(frontend): call mutate after changing email/Discord/Telegram global notif settings
* refactor: get global notif settings from relevant API endpoints instead of adding to public settings
* fix(notif): fall back to email notifications being enabled (default) if user settings do not exist
* fix(notif): do not set notifyUser for MEDIA_PENDING or MEDIA_AUTO_APPROVED
* fix: expose notif enabled settings in user notif endpoints & remove global enable notif setting
* fix(notif): remove unnecessary allowed_mentions object from Discord payload
* fix(notif): use form values for email test notification
* fix: make suggested changes and regenerate DB migration
* fix: loosen validation of PGP keys
* fix: fix user profile settings routes
* fix: remove route guard from profile pages
this commit removes the local cache option for the settings page. The feature will still function
but must be manually enabled in the `settings.json` file. We will add it back in later after
resolving the current outstanding issues.
* feat(ui): add user requests page
* fix: return error if user attempts to fetch another user's requests without adequate perms
* fix(ui): make user name on request page link back to user profile
* feat(ui): link user request count to their filtered request list view
* fix(frontend): only display user requests on profiles if current user has adequate perms
* fix: use 'all' filter for user-filtered request list
* fix(frontend): pass userId to router.push()
* fix: do not pass userId in query for non-user-filtered requests page
* fix(frontend): also allow REQUEST_VIEW perm through route guard
* fix(frontend): only link request count to user request list if current user has required perms
* fix(frontend): 'Recent Requests' slider should link to request list w/ same filter
* fix(frontend): use 'all' instead of 'unavailable' filter for recent requests slider
* refactor: use enum for request list filter
* fix(ui): restore saved states of quota override checkboxes
* fix: check if value is undefined or null, not just truthy
Co-authored-by: sct <ryan@sct.dev>
* feat(ui): display movie/series original title
* fix(ui): remove extra margin when tagline is missing
* fix(ui): simply don't show overview when unavailable
* fix(ui): overview heading color should match that of sliders
* fix: revert overview removal on movie/series detail pages
* feat(quotas): rebased
* feat: add getQuota() method to User entity
* feat(ui): add default quota setting options
* feat: user quota settings
* feat: quota display in request modals
* fix: only show user quotas on own profile or with manage users permission
* feat: add request progress circles to profile page
* feat: add migration
* fix: add missing restricted field to api schema
* fix: dont show auto approve message for movie request when restricted
* fix(lang): change enable checkbox langauge to "enable override"
Co-authored-by: Jakob Ankarhem <jakob.ankarhem@outlook.com>
Co-authored-by: TheCatLady <52870424+TheCatLady@users.noreply.github.com>
* fix: fetch localized person details from TMDb
* feat: include DOB, hometown, and alternate names on person detail pages
* fix: remove unnecessary ternary operator
* fix(ui): don't display AKA when empty
* fix(lang): 'scan plex libraries' should actually be 'sync'
* fix(lang): also fix user import string in case of no imported users
* fix(lang): remove unused 'User Rating' strings
* fix: do not allow editing of user settings under certain conditions
* feat(lang): generate translation keys for new strings
* refactor: modify owner check for clarity
* fix(ui): hide buttons where appropriate and add missing translation string
* feat(lang): translated using Weblate (German)
Currently translated at 100.0% (789 of 789 strings)
feat(lang): translated using Weblate (German)
Currently translated at 99.0% (769 of 776 strings)
feat(lang): translated using Weblate (German)
Currently translated at 100.0% (769 of 769 strings)
feat(lang): translated using Weblate (German)
Currently translated at 99.8% (768 of 769 strings)
Co-authored-by: Andreas Fenz <fenz.andreas@hotmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: J. Lavoie <j.lavoie@net-c.ca>
Co-authored-by: Marcos <silvamarcos1919@outlook.com>
Co-authored-by: Paul Hagedorn <panzer1119@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/de/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (French)
Currently translated at 100.0% (789 of 789 strings)
feat(lang): translated using Weblate (French)
Currently translated at 99.2% (783 of 789 strings)
feat(lang): translated using Weblate (French)
Currently translated at 100.0% (782 of 782 strings)
feat(lang): translated using Weblate (French)
Currently translated at 99.7% (779 of 781 strings)
feat(lang): translated using Weblate (French)
Currently translated at 99.4% (772 of 776 strings)
feat(lang): translated using Weblate (French)
Currently translated at 100.0% (769 of 769 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: J. Lavoie <j.lavoie@net-c.ca>
Co-authored-by: Marcos <silvamarcos1919@outlook.com>
Co-authored-by: Mathieu VERMEEREN <mathieu.vermeeren@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/fr/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (789 of 789 strings)
feat(lang): translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (769 of 769 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Marcos <silvamarcos1919@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/pt_PT/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (789 of 789 strings)
feat(lang): translated using Weblate (Portuguese (Brazil))
Currently translated at 99.2% (770 of 776 strings)
feat(lang): translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (769 of 769 strings)
feat(lang): translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (761 of 761 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Tijuco <sendtomy@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/pt_BR/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Dutch)
Currently translated at 100.0% (789 of 789 strings)
feat(lang): translated using Weblate (Dutch)
Currently translated at 99.4% (785 of 789 strings)
feat(lang): translated using Weblate (Dutch)
Currently translated at 99.4% (778 of 782 strings)
feat(lang): translated using Weblate (Dutch)
Currently translated at 99.8% (780 of 781 strings)
feat(lang): translated using Weblate (Dutch)
Currently translated at 100.0% (769 of 769 strings)
feat(lang): translated using Weblate (Dutch)
Currently translated at 100.0% (769 of 769 strings)
feat(lang): translated using Weblate (Dutch)
Currently translated at 100.0% (761 of 761 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Kobe <kobaubarr@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/nl/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (789 of 789 strings)
feat(lang): translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (789 of 789 strings)
feat(lang): translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (789 of 789 strings)
feat(lang): translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (782 of 782 strings)
feat(lang): translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (781 of 781 strings)
feat(lang): translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (781 of 781 strings)
feat(lang): translated using Weblate (Chinese (Traditional))
Currently translated at 99.3% (776 of 781 strings)
feat(lang): translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (776 of 776 strings)
feat(lang): translated using Weblate (Chinese (Traditional))
Currently translated at 99.8% (775 of 776 strings)
feat(lang): translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (769 of 769 strings)
feat(lang): translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (769 of 769 strings)
feat(lang): translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (763 of 763 strings)
feat(lang): translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (761 of 761 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: TheCatLady <doris.houng@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/zh_Hant/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Italian)
Currently translated at 100.0% (789 of 789 strings)
feat(lang): translated using Weblate (Italian)
Currently translated at 97.8% (772 of 789 strings)
feat(lang): translated using Weblate (Italian)
Currently translated at 99.2% (770 of 776 strings)
feat(lang): translated using Weblate (Italian)
Currently translated at 100.0% (761 of 761 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: J. Lavoie <j.lavoie@net-c.ca>
Co-authored-by: Simone Chiavaccini <mazzetta86@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/it/
Translation: Overseerr/Overseerr Frontend
Co-authored-by: Andreas Fenz <fenz.andreas@hotmail.com>
Co-authored-by: J. Lavoie <j.lavoie@net-c.ca>
Co-authored-by: Marcos <silvamarcos1919@outlook.com>
Co-authored-by: Paul Hagedorn <panzer1119@gmail.com>
Co-authored-by: Mathieu VERMEEREN <mathieu.vermeeren@gmail.com>
Co-authored-by: Tijuco <sendtomy@protonmail.com>
Co-authored-by: Kobe <kobaubarr@gmail.com>
Co-authored-by: TheCatLady <doris.houng@gmail.com>
Co-authored-by: Simone Chiavaccini <mazzetta86@gmail.com>
* feat(ui): display "Owner" role instead of "Admin" for user ID 1
Also add role to user settings page, and fix the missing "Account Type" string and use the same
verbiage on the user list page
* feat(lang): generate translation keys
* fix: utilize hasPermission returned by useUser instead of importing from server/lib/permissions
* feat(lang): translated using Weblate (French)
Currently translated at 93.8% (698 of 744 strings)
feat(lang): translated using Weblate (French)
Currently translated at 94.5% (697 of 737 strings)
feat(lang): translated using Weblate (French)
Currently translated at 100.0% (681 of 681 strings)
feat(lang): translated using Weblate (French)
Currently translated at 99.8% (680 of 681 strings)
feat(lang): translated using Weblate (French)
Currently translated at 99.7% (668 of 670 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: J. Lavoie <j.lavoie@net-c.ca>
Co-authored-by: NGVICIOUS <giyomu1@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/fr/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (742 of 742 strings)
feat(lang): translated using Weblate (Portuguese (Portugal))
Currently translated at 99.8% (743 of 744 strings)
feat(lang): translated using Weblate (Portuguese (Portugal))
Currently translated at 98.7% (728 of 737 strings)
feat(lang): translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (681 of 681 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Marcos <silvamarcos1919@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/pt_PT/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (745 of 745 strings)
feat(lang): translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (744 of 744 strings)
feat(lang): translated using Weblate (Portuguese (Brazil))
Currently translated at 99.8% (743 of 744 strings)
feat(lang): translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (744 of 744 strings)
feat(lang): translated using Weblate (Portuguese (Brazil))
Currently translated at 99.8% (736 of 737 strings)
feat(lang): translated using Weblate (Portuguese (Brazil))
Currently translated at 99.8% (736 of 737 strings)
feat(lang): translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (737 of 737 strings)
feat(lang): translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (681 of 681 strings)
feat(lang): translated using Weblate (Portuguese (Brazil))
Currently translated at 98.3% (670 of 681 strings)
feat(lang): translated using Weblate (Portuguese (Brazil))
Currently translated at 98.0% (668 of 681 strings)
feat(lang): translated using Weblate (Portuguese (Brazil))
Currently translated at 97.9% (667 of 681 strings)
feat(lang): translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (673 of 673 strings)
feat(lang): translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (670 of 670 strings)
feat(lang): translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (668 of 668 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: J. Lavoie <j.lavoie@net-c.ca>
Co-authored-by: Marcos <silvamarcos1919@outlook.com>
Co-authored-by: Tijuco <sendtomy@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/pt_BR/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Dutch)
Currently translated at 100.0% (742 of 742 strings)
feat(lang): translated using Weblate (Dutch)
Currently translated at 99.8% (743 of 744 strings)
feat(lang): translated using Weblate (Dutch)
Currently translated at 100.0% (744 of 744 strings)
feat(lang): translated using Weblate (Dutch)
Currently translated at 99.8% (736 of 737 strings)
feat(lang): translated using Weblate (Dutch)
Currently translated at 100.0% (737 of 737 strings)
feat(lang): translated using Weblate (Dutch)
Currently translated at 100.0% (681 of 681 strings)
feat(lang): translated using Weblate (Dutch)
Currently translated at 100.0% (673 of 673 strings)
feat(lang): translated using Weblate (Dutch)
Currently translated at 100.0% (670 of 670 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Kobe <kobaubarr@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/nl/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Chinese (Traditional))
Currently translated at 97.4% (726 of 745 strings)
feat(lang): translated using Weblate (Chinese (Traditional))
Currently translated at 97.0% (722 of 744 strings)
feat(lang): translated using Weblate (Chinese (Traditional))
Currently translated at 97.0% (722 of 744 strings)
feat(lang): translated using Weblate (Chinese (Traditional))
Currently translated at 96.5% (718 of 744 strings)
feat(lang): translated using Weblate (Chinese (Traditional))
Currently translated at 96.2% (716 of 744 strings)
feat(lang): translated using Weblate (Chinese (Traditional))
Currently translated at 95.9% (712 of 742 strings)
feat(lang): translated using Weblate (Chinese (Traditional))
Currently translated at 95.1% (701 of 737 strings)
feat(lang): translated using Weblate (Chinese (Traditional))
Currently translated at 95.1% (701 of 737 strings)
feat(lang): translated using Weblate (Chinese (Traditional))
Currently translated at 96.1% (655 of 681 strings)
feat(lang): translated using Weblate (Chinese (Traditional))
Currently translated at 95.8% (653 of 681 strings)
feat(lang): translated using Weblate (Chinese (Traditional))
Currently translated at 96.4% (646 of 670 strings)
feat(lang): translated using Weblate (Chinese (Traditional))
Currently translated at 96.4% (644 of 668 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: TheCatLady <52870424+TheCatLady@users.noreply.github.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/zh_Hant/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Italian)
Currently translated at 100.0% (745 of 745 strings)
feat(lang): translated using Weblate (Italian)
Currently translated at 95.0% (707 of 744 strings)
feat(lang): translated using Weblate (Italian)
Currently translated at 90.5% (667 of 737 strings)
feat(lang): translated using Weblate (Italian)
Currently translated at 100.0% (681 of 681 strings)
feat(lang): translated using Weblate (Italian)
Currently translated at 100.0% (681 of 681 strings)
feat(lang): translated using Weblate (Italian)
Currently translated at 98.5% (671 of 681 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: J. Lavoie <j.lavoie@net-c.ca>
Co-authored-by: Simone Chiavaccini <mazzetta86@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/it/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Russian)
Currently translated at 41.2% (281 of 681 strings)
feat(lang): translated using Weblate (Russian)
Currently translated at 37.4% (255 of 681 strings)
Co-authored-by: Artem <KovalevArtem.ru@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/ru/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (English)
Currently translated at 100.0% (744 of 744 strings)
feat(lang): translated using Weblate (English)
Currently translated at 100.0% (737 of 737 strings)
feat(lang): translated using Weblate (English)
Currently translated at 100.0% (737 of 737 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: TheCatLady <52870424+TheCatLady@users.noreply.github.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/en/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Spanish)
Currently translated at 59.4% (405 of 681 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Marcos <silvamarcos1919@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/es/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (German)
Currently translated at 100.0% (742 of 742 strings)
feat(lang): translated using Weblate (German)
Currently translated at 100.0% (744 of 744 strings)
feat(lang): translated using Weblate (German)
Currently translated at 99.3% (739 of 744 strings)
feat(lang): translated using Weblate (German)
Currently translated at 99.8% (736 of 737 strings)
feat(lang): translated using Weblate (German)
Currently translated at 100.0% (737 of 737 strings)
feat(lang): translated using Weblate (German)
Currently translated at 100.0% (681 of 681 strings)
feat(lang): translated using Weblate (German)
Currently translated at 98.5% (671 of 681 strings)
feat(lang): translated using Weblate (German)
Currently translated at 100.0% (670 of 670 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: J. Lavoie <j.lavoie@net-c.ca>
Co-authored-by: Marcos <silvamarcos1919@outlook.com>
Co-authored-by: Paul Hagedorn <panzer1119@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/de/
Translation: Overseerr/Overseerr Frontend
Co-authored-by: J. Lavoie <j.lavoie@net-c.ca>
Co-authored-by: NGVICIOUS <giyomu1@gmail.com>
Co-authored-by: Marcos <silvamarcos1919@outlook.com>
Co-authored-by: Tijuco <sendtomy@protonmail.com>
Co-authored-by: Kobe <kobaubarr@gmail.com>
Co-authored-by: TheCatLady <52870424+TheCatLady@users.noreply.github.com>
Co-authored-by: Simone Chiavaccini <mazzetta86@gmail.com>
Co-authored-by: Artem <KovalevArtem.ru@gmail.com>
Co-authored-by: Paul Hagedorn <panzer1119@gmail.com>
* fix(frontend): request and cog button would be misaligned without play on plex/watch trailer button
* fix(frontend): request and cog button would be misaligned without play on plex/watch trailer button
* Update src/components/TvDetails/index.tsx
Co-authored-by: TheCatLady <52870424+TheCatLady@users.noreply.github.com>
* fix(frontend): removed z-index from buttonWithDropdown div
Co-authored-by: TheCatLady <52870424+TheCatLady@users.noreply.github.com>
* build(snap): Disable arm64 snap build.
* build(snap): Add cancel workflow
* docs(issues): Close invalid issues.
* build(snap): Move if to the first job
this includes an update to husky v5. we currently cant use commitizen with it but that
was causing a ton of issues anyways. so lets try without it for some time.
* feat(lang): translated using Weblate (Chinese (Traditional))
Currently translated at 96.2% (643 of 668 strings)
feat(lang): translated using Weblate (Chinese (Traditional))
Currently translated at 96.1% (642 of 668 strings)
feat(lang): translated using Weblate (Chinese (Traditional))
Currently translated at 94.9% (634 of 668 strings)
feat(lang): translated using Weblate (Chinese (Traditional))
Currently translated at 94.8% (626 of 660 strings)
feat(lang): translated using Weblate (Chinese (Traditional))
Currently translated at 94.8% (626 of 660 strings)
feat(lang): translated using Weblate (Chinese (Traditional))
Currently translated at 93.3% (616 of 660 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: TheCatLady <doris.houng@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/zh_Hant/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Italian)
Currently translated at 100.0% (668 of 668 strings)
feat(lang): translated using Weblate (Italian)
Currently translated at 91.3% (610 of 668 strings)
feat(lang): translated using Weblate (Italian)
Currently translated at 90.1% (602 of 668 strings)
feat(lang): translated using Weblate (Italian)
Currently translated at 84.1% (562 of 668 strings)
feat(lang): translated using Weblate (Italian)
Currently translated at 66.8% (441 of 660 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: J. Lavoie <j.lavoie@net-c.ca>
Co-authored-by: Simone Chiavaccini <mazzetta86@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/it/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (English)
Currently translated at 100.0% (660 of 660 strings)
feat(lang): translated using Weblate (English)
Currently translated at 100.0% (660 of 660 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: TheCatLady <doris.houng@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/en/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (French)
Currently translated at 99.7% (666 of 668 strings)
feat(lang): translated using Weblate (French)
Currently translated at 99.5% (657 of 660 strings)
feat(lang): translated using Weblate (French)
Currently translated at 98.9% (653 of 660 strings)
feat(lang): translated using Weblate (French)
Currently translated at 98.9% (653 of 660 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: J. Lavoie <j.lavoie@net-c.ca>
Co-authored-by: K. Herbert <herbert.ka@mailo.com>
Co-authored-by: Marcos <silvamarcos1919@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/fr/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Hungarian)
Currently translated at 48.1% (318 of 660 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: zsmbrvr <easy90rider@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/hu/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (668 of 668 strings)
feat(lang): translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (660 of 660 strings)
feat(lang): translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (660 of 660 strings)
feat(lang): translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (646 of 646 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Marcos <silvamarcos1919@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/pt_PT/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (668 of 668 strings)
feat(lang): translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (660 of 660 strings)
feat(lang): translated using Weblate (Portuguese (Brazil))
Currently translated at 98.9% (653 of 660 strings)
feat(lang): translated using Weblate (Portuguese (Brazil))
Currently translated at 98.9% (653 of 660 strings)
feat(lang): translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (646 of 646 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Marcos <silvamarcos1919@outlook.com>
Co-authored-by: Tijuco <sendtomy@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/pt_BR/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Swedish)
Currently translated at 97.7% (653 of 668 strings)
feat(lang): translated using Weblate (Swedish)
Currently translated at 82.5% (545 of 660 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Jakob Ankarhem <jakob.ankarhem@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/sv/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (German)
Currently translated at 100.0% (668 of 668 strings)
feat(lang): translated using Weblate (German)
Currently translated at 98.9% (661 of 668 strings)
feat(lang): translated using Weblate (German)
Currently translated at 98.0% (647 of 660 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: J. Lavoie <j.lavoie@net-c.ca>
Co-authored-by: K. Herbert <herbert.ka@mailo.com>
Co-authored-by: Paul Hagedorn <panzer1119@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/de/
Translation: Overseerr/Overseerr Frontend
* feat(lang): translated using Weblate (Dutch)
Currently translated at 100.0% (668 of 668 strings)
feat(lang): translated using Weblate (Dutch)
Currently translated at 100.0% (668 of 668 strings)
feat(lang): translated using Weblate (Dutch)
Currently translated at 99.1% (662 of 668 strings)
feat(lang): translated using Weblate (Dutch)
Currently translated at 100.0% (660 of 660 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Kobe <kobaubarr@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/nl/
Translation: Overseerr/Overseerr Frontend
Co-authored-by: TheCatLady <doris.houng@gmail.com>
Co-authored-by: J. Lavoie <j.lavoie@net-c.ca>
Co-authored-by: Simone Chiavaccini <mazzetta86@gmail.com>
Co-authored-by: K. Herbert <herbert.ka@mailo.com>
Co-authored-by: Marcos <silvamarcos1919@outlook.com>
Co-authored-by: zsmbrvr <easy90rider@gmail.com>
Co-authored-by: Tijuco <sendtomy@protonmail.com>
Co-authored-by: Jakob Ankarhem <jakob.ankarhem@outlook.com>
Co-authored-by: Paul Hagedorn <panzer1119@gmail.com>
Co-authored-by: Kobe <kobaubarr@gmail.com>
'plugin:@typescript-eslint/recommended',// Uses the recommended rules from the @typescript-eslint/eslint-plugin
'prettier/@typescript-eslint',// Uses eslint-config-prettier to disable ESLint rules from @typescript-eslint/eslint-plugin that would conflict with prettier
'plugin:prettier/recommended',// Enables eslint-plugin-prettier and displays prettier errors as ESLint errors. Make sure this is always the last configuration in the extends array.
Thanks for taking the time to fill out this bug report!
Please note that we use GitHub issues exclusively for bug reports and feature requests. For support requests, please use our other support channels to get help.
- type:textarea
id:description
attributes:
label:Description
description:Please provide a clear and concise description of the bug or issue.
validations:
required:true
- type:input
id:version
attributes:
label:Version
description:What version of Overseerr are you running? (You can find this in Settings → About → Version.)
validations:
required:true
- type:textarea
id:repro-steps
attributes:
label:Steps to Reproduce
description:Please tell us how we can reproduce the undesired behavior.
placeholder:|
1. Go to [...]
2. Click on [...]
3. Scroll down to [...]
4. See error in [...]
validations:
required:true
- type:textarea
id:screenshots
attributes:
label:Screenshots
description:If applicable, please provide screenshots depicting the problem.
- type:textarea
id:logs
attributes:
label:Logs
description:Please copy and paste any relevant log output. (This will be automatically formatted into code, so no need for backticks.)
Thanks for taking the time to fill out this feature request!
Please note that we use GitHub issues exclusively for bug reports and feature requests. For support requests, please use our other support channels to get help.
- type:textarea
id:description
attributes:
label:Description
description:Is your feature request related to a problem? If so, please provide a clear and concise description of the problem; e.g., "I'm always frustrated when [...]."
validations:
required:true
- type:textarea
id:desired-behavior
attributes:
label:Desired Behavior
description:Provide a clear and concise description of what you want to happen.
validations:
required:true
- type:textarea
id:additional-context
attributes:
label:Additional Context
description:Provide any additional information or screenshots that may be relevant or helpful.
- type:checkboxes
id:terms
attributes:
label:Code of Conduct
description:By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/sct/overseerr/blob/develop/CODE_OF_CONDUCT.md)
options:
- label:I agree to follow Overseerr's Code of Conduct
* added a refresh interval if download status is in progress ([#3275](https://github.com/sct/overseerr/issues/3275)) ([1e2c6f4](https://github.com/sct/overseerr/commit/1e2c6f46ab66c836f321b5d8e34f1e8124c0b542))
* adjust the plex watchlist sync schedule to have fuzziness ([#3502](https://github.com/sct/overseerr/issues/3502)) ([2c3f533](https://github.com/sct/overseerr/commit/2c3f5330764492e1323afd2d1f25e28ad78a2f2f))
* **build:** increase threshold for amount of data to be fetched when SSR'ing ([#3320](https://github.com/sct/overseerr/issues/3320)) ([d7b83d2](https://github.com/sct/overseerr/commit/d7b83d22cee3d20db564cc0564d42802b02327e3))
* corrected initial fallback data load on details page ([#3395](https://github.com/sct/overseerr/issues/3395)) ([4bd8764](https://github.com/sct/overseerr/commit/4bd87647d0551c20e13589a62690a6f3e5ad8ff7))
* correctly load series fallback modal with sonarr v4 ([#3451](https://github.com/sct/overseerr/issues/3451)) ([e051b1d](https://github.com/sct/overseerr/commit/e051b1dfea9c9320cc9dd420c475ae74cff0d901))
* **deps:** update all non-major dependencies ([#3223](https://github.com/sct/overseerr/issues/3223)) ([f5191ad](https://github.com/sct/overseerr/commit/f5191aded680357522a65bbdcc40d162b8fbf594))
* error deleting users with over 1000 requests ([#3376](https://github.com/sct/overseerr/issues/3376)) ([ac77b03](https://github.com/sct/overseerr/commit/ac77b037d5fb0c54f5edf4b29d04adb57aef388f))
* fixes RT ratings for tv shows ([#3492](https://github.com/sct/overseerr/issues/3492)) ([04fbd00](https://github.com/sct/overseerr/commit/04fbd00d4ac29045592588ef8b664d1916991e37)), closes [#3491](https://github.com/sct/overseerr/issues/3491)
* **genreselector:** fix searching in Genre filter ([#3468](https://github.com/sct/overseerr/issues/3468)) ([d7fa35e](https://github.com/sct/overseerr/commit/d7fa35e066cf371797aaa46ca464aa531ba8fb35))
* handle search results with collections ([#3393](https://github.com/sct/overseerr/issues/3393)) ([70b1540](https://github.com/sct/overseerr/commit/70b1540ae23e83e01013856a9e06ad39e600922d))
* improved handling of edge case that could cause availability sync to fail ([#3497](https://github.com/sct/overseerr/issues/3497)) ([d0836ce](https://github.com/sct/overseerr/commit/d0836ce0efd55fccf2546087a0c4f94f7cb2e82a))
* lock body scroll when using webkit ([#3399](https://github.com/sct/overseerr/issues/3399)) ([c27f960](https://github.com/sct/overseerr/commit/c27f96096ac8cc6c387f9d1dde5b263576ac2132))
* logger was set to info for the wrong logs ([#3354](https://github.com/sct/overseerr/issues/3354)) ([c36a4ba](https://github.com/sct/overseerr/commit/c36a4ba2b8df05873f5dfd0946a9bc3dc4ecfd1d))
* make a (shallow) copy of radarr/sonarr tags into a request before adding user tags ([#3485](https://github.com/sct/overseerr/issues/3485)) ([48f7666](https://github.com/sct/overseerr/commit/48f76662d5c08156f1da3f47e216c5f02668f64b))
* remove unnecessary parenthesis from api key generation ([#3336](https://github.com/sct/overseerr/issues/3336)) ([6bd3f01](https://github.com/sct/overseerr/commit/6bd3f015d65507efca60279007bd2b86ee860643))
* **ui:** corrected issues icon color ([#3498](https://github.com/sct/overseerr/issues/3498)) ([c1a47bd](https://github.com/sct/overseerr/commit/c1a47bd9de332cb4925974690f5a33448b5cc2e6))
* **ui:** corrected mobile menu spacing in collection details ([#3432](https://github.com/sct/overseerr/issues/3432)) ([77a33cb](https://github.com/sct/overseerr/commit/77a33cb74d744bb747b791785799b632af8c7862))
* **ui:** hide mini status badge if non-4K media status is unknown ([#3346](https://github.com/sct/overseerr/issues/3346)) ([50f06da](https://github.com/sct/overseerr/commit/50f06dabbffc693f0843584a64d1d96e77982820))
* **ui:** hide search bar behind slideover when opened ([#3348](https://github.com/sct/overseerr/issues/3348)) ([b3882de](https://github.com/sct/overseerr/commit/b3882de8930a70adb2f93a27be6370bfa1826587))
* **ui:** prevent title cards from flickering when quickly hovering across them ([#3349](https://github.com/sct/overseerr/issues/3349)) ([eb5502a](https://github.com/sct/overseerr/commit/eb5502a16f86e37a933f6beca0678c2d228e77d5))
* **watchlist:** correctly load more than 20 watchlist items ([#3351](https://github.com/sct/overseerr/issues/3351)) ([af880a6](https://github.com/sct/overseerr/commit/af880a6c839794b34bddcd7e0fe56353aa48ba36))
* auto tagging requested media with username ([#3338](https://github.com/sct/overseerr/issues/3338)) ([24f268b](https://github.com/sct/overseerr/commit/24f268b6cb67d9a8d8675cd6e09dd83a7f499add))
* **discover:** support filtering by tmdb user vote count on discover page ([#3407](https://github.com/sct/overseerr/issues/3407)) ([aa84977](https://github.com/sct/overseerr/commit/aa849776809dfe891e67ff4db6861ef44df1a774))
* full title of download item on hover with tooltip ([#3296](https://github.com/sct/overseerr/issues/3296)) ([33e7691](https://github.com/sct/overseerr/commit/33e7691b94d7d369a0a1410e434850bc51e5572e))
### Performance Improvements
* **imageproxy:** do not set cookies to image proxy so CDNs can cache images ([#3332](https://github.com/sct/overseerr/issues/3332)) ([966639d](https://github.com/sct/overseerr/commit/966639df430d32f6bfebdb16314dc4590d21caf8))
* **snapcraft:** use the correct config folder for image cache ([#3302](https://github.com/sct/overseerr/issues/3302)) ([c93467b](https://github.com/sct/overseerr/commit/c93467b3acf2c256324297e7e8f21e9944005dd4))
* **ui:** correct range slider styling in chrome ([#3299](https://github.com/sct/overseerr/issues/3299)) ([d954328](https://github.com/sct/overseerr/commit/d9543289111d72245564d25d300a71b0ea3954ba))
* pass in library type when scanning recently added items ([#3287](https://github.com/sct/overseerr/issues/3287)) ([8942eb8](https://github.com/sct/overseerr/commit/8942eb8b7c4fa1d16aa2e72e8ba7120a653c9aa2))
* **ui:** air date will use UTC for timezone ([#3297](https://github.com/sct/overseerr/issues/3297)) ([3e43586](https://github.com/sct/overseerr/commit/3e43586acc0804c3fff524509caa890a104e132b))
* **ui:** show 5 icons when possible on mobile menu ([#3298](https://github.com/sct/overseerr/issues/3298)) ([7040da1](https://github.com/sct/overseerr/commit/7040da1334f6d18e19a494c73caa17f7df552dfe))
* **ui:** style range thumbs correctly for firefox ([#3294](https://github.com/sct/overseerr/issues/3294)) ([9d10e6a](https://github.com/sct/overseerr/commit/9d10e6a88c0996671f1d9d20792e1930dbc82329))
* **build:** update usage of publish snap action ([#3272](https://github.com/sct/overseerr/issues/3272)) ([51b05cd](https://github.com/sct/overseerr/commit/51b05cd8fbb5d332807d8c00b2ffb7b10c3d0179))
* multiple genre filtering now works ([#3282](https://github.com/sct/overseerr/issues/3282)) ([5076938](https://github.com/sct/overseerr/commit/507693881b939819413f0959df5ef6b7a357eb5c))
* **ui:** series first air date sorting ([#3283](https://github.com/sct/overseerr/issues/3283)) ([374c78c](https://github.com/sct/overseerr/commit/374c78c989cc86bb144a954a91d5d183c4b591c0))
* correctly check mobile menu permissions ([#3271](https://github.com/sct/overseerr/issues/3271)) ([f4a22dc](https://github.com/sct/overseerr/commit/f4a22dc437404558f301ccfc195cf0a300dd1ff2))
* add bg-opacity to in-progress status badges ([#3190](https://github.com/sct/overseerr/issues/3190)) ([68223f4](https://github.com/sct/overseerr/commit/68223f4b1e98b01825516dcba39cbb2d3df31a70))
* added download status and title to request card/item error components ([#3186](https://github.com/sct/overseerr/issues/3186)) ([3309f77](https://github.com/sct/overseerr/commit/3309f77aa4be1d70b27693531c119a8e26822518))
* arrow icons were misplaced on mobile in slider edit ([#3260](https://github.com/sct/overseerr/issues/3260)) ([d328485](https://github.com/sct/overseerr/commit/d328485161b9cae6a70ef0713b4878207bc6015e))
* changed overflow scroll to only if necessary ([#3184](https://github.com/sct/overseerr/issues/3184)) ([27feeea](https://github.com/sct/overseerr/commit/27feeea69121336557deda1f32b65a5daa146f82))
* convert genre/studio to string in create slider ([#3201](https://github.com/sct/overseerr/issues/3201)) ([93afead](https://github.com/sct/overseerr/commit/93afead92e497f2e5bce67a34fffdaa08d20c7f2))
* correct checkbox position (again) for slider edits ([#3227](https://github.com/sct/overseerr/issues/3227)) ([3ba6df1](https://github.com/sct/overseerr/commit/3ba6df1a41c084c4a6a90354338047623abef521))
* correct grid sizing for webkit on streaming services ([#3248](https://github.com/sct/overseerr/issues/3248)) ([6fd11cf](https://github.com/sct/overseerr/commit/6fd11cf4254e1a19310592bec78a6de52bc073a8))
* correct issue detail bottom padding on mobile displays ([#3268](https://github.com/sct/overseerr/issues/3268)) ([3db010b](https://github.com/sct/overseerr/commit/3db010b9eaec62aa08d973a61caf1801471bbf3e))
* correct link to correct keyword results for series ([#3208](https://github.com/sct/overseerr/issues/3208)) ([4e9be7a](https://github.com/sct/overseerr/commit/4e9be7a3f7304ee7be5ee6fd34b1ea8f6c0cf399))
* correct spacing between sliders ([#3225](https://github.com/sct/overseerr/issues/3225)) ([62e2de7](https://github.com/sct/overseerr/commit/62e2de70bf37b72d5f63370b662d4103a642775b))
* correctly restore selected streaming service filters ([#3249](https://github.com/sct/overseerr/issues/3249)) ([154f3e7](https://github.com/sct/overseerr/commit/154f3e72efbf0b663358b3029156f54516f01a2f))
* create shared class to add bottom spacing ([#3269](https://github.com/sct/overseerr/issues/3269)) ([5d1c6f7](https://github.com/sct/overseerr/commit/5d1c6f706555613d97ed9e61d8b665543c2f239b))
* **deps:** update dependency @heroicons/react to v2 ([#2970](https://github.com/sct/overseerr/issues/2970)) ([dd48d59](https://github.com/sct/overseerr/commit/dd48d59b20e2d1800ea30912116f4a4f1bb7928f))
* **deps:** update dependency axios to v1 ([#3202](https://github.com/sct/overseerr/issues/3202)) ([421029e](https://github.com/sct/overseerr/commit/421029ebab66c9a6622ba47e56d7f6473524cce4))
* **deps:** update dependency swr to v2 ([#3212](https://github.com/sct/overseerr/issues/3212)) ([7b6db50](https://github.com/sct/overseerr/commit/7b6db50ae55b1fc60d19a5cff62dd46bb989fa51))
* **experimental:** use new RT API (sorta) ([#3179](https://github.com/sct/overseerr/issues/3179)) ([357cab8](https://github.com/sct/overseerr/commit/357cab87ac7752b8e119b51c938b343c661d83c2))
* improve small screen layout for discover editing ([#3221](https://github.com/sct/overseerr/issues/3221)) ([d23b213](https://github.com/sct/overseerr/commit/d23b2132de05f072f7f9daad83d81421d747cf99))
* include new package calendar css in build ([#3235](https://github.com/sct/overseerr/issues/3235)) ([c2a1a20](https://github.com/sct/overseerr/commit/c2a1a20a3bb20039a1936c7fe0ecb9e8311a0aea))
* issues with issues ([#3267](https://github.com/sct/overseerr/issues/3267)) ([fd21971](https://github.com/sct/overseerr/commit/fd219717c01c558814d7a80de6304272b5a7944e))
* prevent double encode if we are on /search endpoint ([#3238](https://github.com/sct/overseerr/issues/3238)) ([a343f8a](https://github.com/sct/overseerr/commit/a343f8ad915491a9c81512c7e541a1dac8906025))
* **request:** approve request when retrying request ([#3234](https://github.com/sct/overseerr/issues/3234)) ([b515701](https://github.com/sct/overseerr/commit/b5157010c46cd9083993d5ee0172007b83d631da))
* **request:** mark request as approved if media is already available when retrying failed request ([#3244](https://github.com/sct/overseerr/issues/3244)) ([cb65074](https://github.com/sct/overseerr/commit/cb650745f6a33e69391a633e6d272831f314e098))
* restore border to ghost button and fix discover slider visibility toggle position ([#3226](https://github.com/sct/overseerr/issues/3226)) ([2eebb7f](https://github.com/sct/overseerr/commit/2eebb7fd3941b34fe9472aaf9d28265df8cce311))
* restore status badges on titles on actors page when hide available media enabled ([#3206](https://github.com/sct/overseerr/issues/3206)) ([9d3446d](https://github.com/sct/overseerr/commit/9d3446d370499c3251159393e5c791b01225e05c))
* screen would zoom on mobile if date picker input was selected ([#3241](https://github.com/sct/overseerr/issues/3241)) ([3aefddd](https://github.com/sct/overseerr/commit/3aefddd48834d86150d5f5cceb2d08af3a78847b))
* series displayed an empty season with series list/request modal ([#3147](https://github.com/sct/overseerr/issues/3147)) ([2179637](https://github.com/sct/overseerr/commit/2179637d437999290eaa4152f6f37c71fc3d8ba3))
* tooltip shows properly if not in progress ([#3185](https://github.com/sct/overseerr/issues/3185)) ([6face8c](https://github.com/sct/overseerr/commit/6face8cc4564b978fb98af32659b326d8c5cede8))
* update StatusBadgeMini to shrink on title cards (and remove ring) ([#3210](https://github.com/sct/overseerr/issues/3210)) ([042a1a9](https://github.com/sct/overseerr/commit/042a1a950fdd4d4a61edf4bc19657f9b7a526da8))
* discover slider edit arrow buttons for reordering ([#3259](https://github.com/sct/overseerr/issues/3259)) ([da00d45](https://github.com/sct/overseerr/commit/da00d454e17e8b00d04f6e26f6dd5153ed6ced81))
* **lang:** translations update from Hosted Weblate ([#3030](https://github.com/sct/overseerr/issues/3030)) ([0d8b390](https://github.com/sct/overseerr/commit/0d8b390b678731e76bd1f0f8a0a4952c11e77f4d))
* new mobile menu ([#3251](https://github.com/sct/overseerr/issues/3251)) ([fcbca17](https://github.com/sct/overseerr/commit/fcbca1722f31f32633a57bc5048f46c9da057d87))
* translations update from Hosted Weblate ([#3218](https://github.com/sct/overseerr/issues/3218)) ([5940ff7](https://github.com/sct/overseerr/commit/5940ff7f5f62eed9ac5aa6f02803418aaa09813a))
* **ui:** add episode number to front of episode name in season details ([#3086](https://github.com/sct/overseerr/issues/3086)) ([a672b32](https://github.com/sct/overseerr/commit/a672b324ec391a20f6f3a1daed82a8d276a52c2c))
* **ui:** request card progress bar ([#3123](https://github.com/sct/overseerr/issues/3123)) ([03853a1](https://github.com/sct/overseerr/commit/03853a1b9155c8a2153c8885022a74619af1bc15))
* **api:** handle auth for accounts where the plex id may have been set to null ([#3125](https://github.com/sct/overseerr/issues/3125)) ([15e2469](https://github.com/sct/overseerr/commit/15e246929bdbc2b7b5bdab7a84bd7882b79d5cb1))
* added deep links to issues and status badges ([#3065](https://github.com/sct/overseerr/issues/3065)) ([bfe56c3](https://github.com/sct/overseerr/commit/bfe56c347073001795b1c3e917eb7a5afcc4462c))
* remove backdrop-blur class from warning buttons ([#3037](https://github.com/sct/overseerr/issues/3037)) ([430b1ab](https://github.com/sct/overseerr/commit/430b1ab871f8e3eefbebb37c74aa1ce3f0862efe))
* sidebar close button placement when using PWA ([#3045](https://github.com/sct/overseerr/issues/3045)) ([21d20fd](https://github.com/sct/overseerr/commit/21d20fdfd61b7a5a2ec265d420aec103b1430a06))
* **ui:** hide null dates in episodes list ([#3035](https://github.com/sct/overseerr/issues/3035)) ([7404d68](https://github.com/sct/overseerr/commit/7404d68143e830df73b9d2779a6d7ea65bc9fd4f))
* **ui:** minor fixes ([#3036](https://github.com/sct/overseerr/issues/3036)) ([f5c2fc1](https://github.com/sct/overseerr/commit/f5c2fc1c209b2d04f0e39a97d8b65bcac00667dc))
* update API docs to allow 'all' seasons value ([#3073](https://github.com/sct/overseerr/issues/3073)) ([1dfa943](https://github.com/sct/overseerr/commit/1dfa9431a95e7e2a1843746c2473d8a06f03e184))
* **api:** add rate limiter to TMDb requests to hopefully deal with 429s ([#2881](https://github.com/sct/overseerr/issues/2881)) ([aed1409](https://github.com/sct/overseerr/commit/aed1409f29d5b6360e87381d78dfeb4cc86d6fc6)), closes [#2853](https://github.com/sct/overseerr/issues/2853)
* **api:** ignore filter if unset in media route ([#2647](https://github.com/sct/overseerr/issues/2647)) ([a6c1f3f](https://github.com/sct/overseerr/commit/a6c1f3f7ce498e32817cc8c74d439e8d99d6fbf4))
* **api:** lookup shows using english title only ([#2911](https://github.com/sct/overseerr/issues/2911)) ([004e1bb](https://github.com/sct/overseerr/commit/004e1bb17e14bef1697b6b993f6ff92b77cdaeb4)), closes [#2801](https://github.com/sct/overseerr/issues/2801)
* **api:** use correct path param type in openapi spec ([#2834](https://github.com/sct/overseerr/issues/2834)) ([6cd0c9b](https://github.com/sct/overseerr/commit/6cd0c9b2c81db2728ce09a9bc273a9aee366acbc))
* check perms to view watchlist slider on user profile ([#2980](https://github.com/sct/overseerr/issues/2980)) ([5d73bc2](https://github.com/sct/overseerr/commit/5d73bc22389a2606ecc630f88b6ec2328f690975))
* clicking outside modal closes modal again ([#2984](https://github.com/sct/overseerr/issues/2984)) ([1a00532](https://github.com/sct/overseerr/commit/1a0053221b58d198bdcca0249fcd76226122c6a2))
* compatibility issue with safari ([#3019](https://github.com/sct/overseerr/issues/3019)) ([e486623](https://github.com/sct/overseerr/commit/e486623310b1c0de12a5b38bf934543fde250c37))
* correct safe margin for slideover ([#2977](https://github.com/sct/overseerr/issues/2977)) ([23409e6](https://github.com/sct/overseerr/commit/23409e6f2ffb060e7914db28375e141a6087ddfa))
* correct spacing on season header badges ([#2983](https://github.com/sct/overseerr/issues/2983)) ([c4aa08f](https://github.com/sct/overseerr/commit/c4aa08f5f0bcc856e993416936cc74e4db6aed5d))
* do not display 'Request More' button if no requestable seasons ([#2998](https://github.com/sct/overseerr/issues/2998)) ([23f93e3](https://github.com/sct/overseerr/commit/23f93e311d3c4ed413b2fabca520b5c97869c9b8))
* failure to load SearchByNameModal ([#3000](https://github.com/sct/overseerr/issues/3000)) ([410ad0d](https://github.com/sct/overseerr/commit/410ad0d4b40e2ae3ca315a9c808a886ab2c7bf2d))
* **frontend:** better request/media cards for items without valid TMDb IDs ([#2181](https://github.com/sct/overseerr/issues/2181)) ([9bc1f89](https://github.com/sct/overseerr/commit/9bc1f8977707f2d3383a7af8efa0521ced096777))
* issues and login page still had incorrect animations ([#2979](https://github.com/sct/overseerr/issues/2979)) ([095048d](https://github.com/sct/overseerr/commit/095048d94af28f25f88f956aba8e01d1199082f3))
* **lang:** correct capitalization of 'TMDB' ([#2953](https://github.com/sct/overseerr/issues/2953)) ([9021696](https://github.com/sct/overseerr/commit/9021696cf085bd6387701811e64466e14893d1db))
* **lang:** manage movie -> manage series ([#2963](https://github.com/sct/overseerr/issues/2963)) ([f5e6b62](https://github.com/sct/overseerr/commit/f5e6b620c133e38cf18978a619d3d4757bbab755))
* log level value should not be case sensitive ([#2913](https://github.com/sct/overseerr/issues/2913)) ([6428b8d](https://github.com/sct/overseerr/commit/6428b8d4195c736a384441a761a746a35a3ad009))
* manual browser refresh would redirect to home on search page ([#2692](https://github.com/sct/overseerr/issues/2692)) ([b287839](https://github.com/sct/overseerr/commit/b2878390b486e338151f26a2354711147012f88e)), closes [#2683](https://github.com/sct/overseerr/issues/2683)
* new status indicators added to series list on mobile ([#3024](https://github.com/sct/overseerr/issues/3024)) ([407af32](https://github.com/sct/overseerr/commit/407af32d32a30d23ee14a9ff763cb4aa582d3ede))
* **plex:** add container-size header to recently added api call ([#3023](https://github.com/sct/overseerr/issues/3023)) ([d8da5cb](https://github.com/sct/overseerr/commit/d8da5cbe9d0700e02cbece70caf9103bc5376505))
* **recommendations:** only load more titles if there can be more than 40 ([#2749](https://github.com/sct/overseerr/issues/2749)) ([14519ef](https://github.com/sct/overseerr/commit/14519ef5559038b0d9d037a2bdc5d98e63c9db6f)), closes [#2710](https://github.com/sct/overseerr/issues/2710)
* **search:** use correct param to filter movies by year ([#2727](https://github.com/sct/overseerr/issues/2727)) ([1054b4e](https://github.com/sct/overseerr/commit/1054b4e2d7262d841fa83cde624f1138ad7bd23a))
* settings log modal when closing ([#2985](https://github.com/sct/overseerr/issues/2985)) ([4d56320](https://github.com/sct/overseerr/commit/4d563208709fe581ef6bf475e969197d586d907b))
* **ui:** don't show 0 playcount in slideover ([#2714](https://github.com/sct/overseerr/issues/2714)) ([29be659](https://github.com/sct/overseerr/commit/29be6595125017700eccb34d33a0e852f23c97ba))
* **ui:** remove 'all' badge from request cards ([#2992](https://github.com/sct/overseerr/issues/2992)) ([5c01313](https://github.com/sct/overseerr/commit/5c01313cc4c8277de398124848b4481a2b0080b3))
* update Discord ID regex to include 19 digit IDs ([#2860](https://github.com/sct/overseerr/issues/2860)) ([9da8461](https://github.com/sct/overseerr/commit/9da84612254fe0c36b38bc49184cc1fc52ff6212))
* use fallbackData to prepare user data during SSR ([#2968](https://github.com/sct/overseerr/issues/2968)) ([6e60a27](https://github.com/sct/overseerr/commit/6e60a275c7c2451beb1922d66eaa6c5411d36c3d))
* use image.tmdb.org for setup/login backdrop images ([#2966](https://github.com/sct/overseerr/issues/2966)) ([3b26338](https://github.com/sct/overseerr/commit/3b2633812b5ca8cde010b3f8c2ea9a8646b33e1d))
* username will not show undefined on cancel or delete ([#2982](https://github.com/sct/overseerr/issues/2982)) ([b925857](https://github.com/sct/overseerr/commit/b925857dfa27483558eab24bc5f20f654e294a08))
* watch data not required to show Tautulli button ([#2976](https://github.com/sct/overseerr/issues/2976)) ([dd28200](https://github.com/sct/overseerr/commit/dd282000407ae9656640f38561a104916d12571a))
### Features
* add 20th Century Studios to Studio Slider ([#2288](https://github.com/sct/overseerr/issues/2288)) ([b33956e](https://github.com/sct/overseerr/commit/b33956e6b85b2c2fc12e23951c06f36e009fb627))
* **discover:** add Paramount+ to network slider ([#2608](https://github.com/sct/overseerr/issues/2608)) ([1d00229](https://github.com/sct/overseerr/commit/1d00229a485bb2b376e9f63b52c70c7719f5f023))
* **frontend:** a few more tooltips ([#2972](https://github.com/sct/overseerr/issues/2972)) ([815d709](https://github.com/sct/overseerr/commit/815d709bcfa4cca1528cc697defe9cd773ea0089))
* **frontend:** add more tooltips ([#2961](https://github.com/sct/overseerr/issues/2961)) ([950b171](https://github.com/sct/overseerr/commit/950b1712b7449dc48a9c1589950907dd581f069a))
* improved user dropdown ([#2969](https://github.com/sct/overseerr/issues/2969)) ([67f3a38](https://github.com/sct/overseerr/commit/67f3a3829e2f629e72ec3c32b042be2ef08c38e9))
* **jobs:** show current job frequency in edit modal ([#3008](https://github.com/sct/overseerr/issues/3008)) ([99fc9a2](https://github.com/sct/overseerr/commit/99fc9a2da01b1628d5f849ce56f016c0ab26c3db))
* **lang:** add Arabic and Lithuanian display languages ([#2916](https://github.com/sct/overseerr/issues/2916)) ([3db3044](https://github.com/sct/overseerr/commit/3db3044210316817144ecacd81be97f159d0df2b))
* **lang:** translations update from Hosted Weblate ([#2659](https://github.com/sct/overseerr/issues/2659)) ([e939dc6](https://github.com/sct/overseerr/commit/e939dc678e124bd1f630c98d1d4927dba6372af5))
* **lang:** translations update from Hosted Weblate ([#2915](https://github.com/sct/overseerr/issues/2915)) ([a0301e2](https://github.com/sct/overseerr/commit/a0301e2d83b2fca07f69a2c274d4745edef6d0cd))
* **lang:** translations update from Hosted Weblate ([#2958](https://github.com/sct/overseerr/issues/2958)) ([29ab178](https://github.com/sct/overseerr/commit/29ab178fb0048c055a86bc40f7b47117903a3b2c))
* **lang:** translations update from Hosted Weblate ([#2971](https://github.com/sct/overseerr/issues/2971)) ([2950cf4](https://github.com/sct/overseerr/commit/2950cf4438e2d10a9c0543a848519a113527fe91))
* **lang:** translations update from Hosted Weblate ([#2999](https://github.com/sct/overseerr/issues/2999)) ([8672869](https://github.com/sct/overseerr/commit/867286996b805fefd3c16f2a1a05d5f2c10daced))
* **lang:** translations update from Hosted Weblate ([#3006](https://github.com/sct/overseerr/issues/3006)) ([611ceeb](https://github.com/sct/overseerr/commit/611ceeb5f49ec4760f157eafb03b2dae465d476e))
* **lang:** translations update from Hosted Weblate ([#3014](https://github.com/sct/overseerr/issues/3014)) ([3d458dd](https://github.com/sct/overseerr/commit/3d458dd2fdc8807f09af8b4c29bed794b3886f0f))
* **lang:** translations update from Hosted Weblate ([#3026](https://github.com/sct/overseerr/issues/3026)) ([16cb53f](https://github.com/sct/overseerr/commit/16cb53f703a6c42b99aa776515f90b3ed153b382))
* **manage slideover:** show more request override details ([#2772](https://github.com/sct/overseerr/issues/2772)) ([90095bb](https://github.com/sct/overseerr/commit/90095bb18548dfd663a78df1908c40dbf2f99faf))
* **notif:** auto-request notif type ([#2956](https://github.com/sct/overseerr/issues/2956)) ([6c0fd40](https://github.com/sct/overseerr/commit/6c0fd408779bc084698499bca861d042cd735d77))
* **perms:** add new permission for viewing recently added media ([#2129](https://github.com/sct/overseerr/issues/2129)) ([a12697b](https://github.com/sct/overseerr/commit/a12697b06143e9a9c5c240c104faabdf2096ffd3))
* plex deep links for iOS devices ([#2680](https://github.com/sct/overseerr/issues/2680)) ([575da30](https://github.com/sct/overseerr/commit/575da306b03eea3561de8d7dbe1b4b69674c7b2b))
* pull down to refresh ([#2908](https://github.com/sct/overseerr/issues/2908)) ([87825a0](https://github.com/sct/overseerr/commit/87825a0e058162e82634503c81deeff1a59634e5))
* restore option to cache and optimize images locally ([#2964](https://github.com/sct/overseerr/issues/2964)) ([507227a](https://github.com/sct/overseerr/commit/507227aa496a60d1f46ce1a34c13bb162edc4bb6))
* season/episode list on series details ([#2967](https://github.com/sct/overseerr/issues/2967)) ([8a2acb7](https://github.com/sct/overseerr/commit/8a2acb7f2bbe91feb3c6ee45c2066e3a036b83f9))
* show alert/prompt when settings changes require restart ([#2401](https://github.com/sct/overseerr/issues/2401)) ([f3e56da](https://github.com/sct/overseerr/commit/f3e56da3b719285095a59d5a0e822087e095b709))
* tooltip foundation ([#2950](https://github.com/sct/overseerr/issues/2950)) ([16545ee](https://github.com/sct/overseerr/commit/16545eec225ce942b55935019185a94e471fb93b))
* **ui:** revalidate requests slider on discover page ([#2818](https://github.com/sct/overseerr/issues/2818)) ([91e0928](https://github.com/sct/overseerr/commit/91e0928aa0e1353431754750095cb64b93348c21))
* user delete modal shows username and requires confirmation ([#2779](https://github.com/sct/overseerr/issues/2779)) ([36d17fe](https://github.com/sct/overseerr/commit/36d17fed6e4e1ca651a4e29f087b2abb53f794cf))
* view other users' watchlists ([#2959](https://github.com/sct/overseerr/issues/2959)) ([0839718](https://github.com/sct/overseerr/commit/0839718806a04ee094445dd7276bba7f49424ab7))
* add Discord ID setting to general user settings page ([#2406](https://github.com/sct/overseerr/issues/2406)) ([eff665e](https://github.com/sct/overseerr/commit/eff665ef4b688aac881408790304b77bd9a31ddb))
* **css:** rename form-input to form-input-area ([#2613](https://github.com/sct/overseerr/issues/2613)) ([086f0b6](https://github.com/sct/overseerr/commit/086f0b6ce23f607d20c2cec3c73b2e4d1ce9b426))
* **email:** enclose PGP encryption logic in try/catch ([#2519](https://github.com/sct/overseerr/issues/2519)) ([a76b608](https://github.com/sct/overseerr/commit/a76b608ab796944c0c660e3296a7aca6615d69f3))
* **frontend:** disable autocomplete on search field ([#2592](https://github.com/sct/overseerr/issues/2592)) ([82d1617](https://github.com/sct/overseerr/commit/82d16177bf763fe8097b4aae326793e3e21e847d))
* **frontend:** theme-color meta tag ([#2420](https://github.com/sct/overseerr/issues/2420)) ([ff28c9b](https://github.com/sct/overseerr/commit/ff28c9bfebf4a930e2542ee3b3c35f8af4e1b97e))
* **frontend:** various fixes ([#2524](https://github.com/sct/overseerr/issues/2524)) ([c3dbd0d](https://github.com/sct/overseerr/commit/c3dbd0d6913946e0e1b5308edfbb5ca744740223))
* **lang:** rename 'Media' notification types for clarity ([#2400](https://github.com/sct/overseerr/issues/2400)) ([399b037](https://github.com/sct/overseerr/commit/399b0379186ed34dcc436bd95330fd1a05fef4b3))
* **lang:** translations update from Hosted Weblate ([#2625](https://github.com/sct/overseerr/issues/2625)) ([19cdedd](https://github.com/sct/overseerr/commit/19cdedd2a6656b1a852e1cc653bbdb140e978b51))
* **lang:** translations update from Hosted Weblate ([#2639](https://github.com/sct/overseerr/issues/2639)) ([418a533](https://github.com/sct/overseerr/commit/418a533588bbbdbbbb4caee1ef91d57c1ca35717))
* **logs:** handle log message nested extra properties ([#2459](https://github.com/sct/overseerr/issues/2459)) ([d777940](https://github.com/sct/overseerr/commit/d7779408d162949b2eafcacefc8eabe53fae229f))
* **notif:** show event in pop up notification for slack ([#2413](https://github.com/sct/overseerr/issues/2413)) ([d4438c8](https://github.com/sct/overseerr/commit/d4438c82e3753c9b29b6269ad406d263b3fcef4c)), closes [#2408](https://github.com/sct/overseerr/issues/2408)
* **plex:** correctly generate uuid for safari ([#2614](https://github.com/sct/overseerr/issues/2614)) ([d06f2cd](https://github.com/sct/overseerr/commit/d06f2cdb08bfa6f05cf7cec2c408a258fa926b09))
* **plex:** find TV series in addition to movies from IMDb IDs ([#1830](https://github.com/sct/overseerr/issues/1830)) ([30644f6](https://github.com/sct/overseerr/commit/30644f65ea2e8437676422ae0b083c642a836887))
* **plex:** include 'Overseerr' in X-Plex-Device-Name header ([#2635](https://github.com/sct/overseerr/issues/2635)) ([d4f9650](https://github.com/sct/overseerr/commit/d4f9650cd07704a97f8b591b7de7351c1e85b825))
* **plex:** use unique client identifier ([#2602](https://github.com/sct/overseerr/issues/2602)) ([648b346](https://github.com/sct/overseerr/commit/648b346cbe5a941c7e1ec4ddfb276fb0e27ed502))
* **plex:** user import ([#2442](https://github.com/sct/overseerr/issues/2442)) ([86dff12](https://github.com/sct/overseerr/commit/86dff12cdeef6dca92527dd31757a3a4c7f921bf))
* **radarr:** correctly check for existing movies ([#2490](https://github.com/sct/overseerr/issues/2490)) ([5d4b06b](https://github.com/sct/overseerr/commit/5d4b06bbcc6cf6d328f6b4a86c4c0f9b0f3aff3e))
* **requests:** check for existing media of same type when requesting ([#2445](https://github.com/sct/overseerr/issues/2445)) ([eb9ca2e](https://github.com/sct/overseerr/commit/eb9ca2e86f3be3f4ff8ee2e7c4aecdf337d8976d))
* **sonarr:** monitor existing series upon request approval ([#2553](https://github.com/sct/overseerr/issues/2553)) ([aa062d9](https://github.com/sct/overseerr/commit/aa062d921c425d4b64bfdb28a5f102b0c92f7d87))
* **sonarr:** only scan seasons that exist in TMDb ([#2523](https://github.com/sct/overseerr/issues/2523)) ([6168185](https://github.com/sct/overseerr/commit/61681857b123802aaeff02a8f61b1ba046c5d333))
* **tautulli:** fetch additional user history as necessary to return 20 unique media ([#2446](https://github.com/sct/overseerr/issues/2446)) ([7d19de6](https://github.com/sct/overseerr/commit/7d19de6a4af6297be18140ca59402b40f7bbb30b))
### Features
* **about:** show config directory ([#2600](https://github.com/sct/overseerr/issues/2600)) ([0c7373c](https://github.com/sct/overseerr/commit/0c7373c7e89a4ff717efaa7d6a5854f7ccd6a8d3))
* **frontend:** open media management slideover on status badge click ([#2407](https://github.com/sct/overseerr/issues/2407)) ([1f5785d](https://github.com/sct/overseerr/commit/1f5785d6c53b2ca2da67a8ccee72165c052c61a1))
* **lang:** add Albanian display language ([#2605](https://github.com/sct/overseerr/issues/2605)) ([3d32462](https://github.com/sct/overseerr/commit/3d32462f50b4ced0d9205b79003c35d6d1c948a3))
* **lang:** translations update from Hosted Weblate ([#2379](https://github.com/sct/overseerr/issues/2379)) ([bd93168](https://github.com/sct/overseerr/commit/bd93168ba1ed650baf4024569bb6a76811a99820))
* **lang:** translations update from Hosted Weblate ([#2389](https://github.com/sct/overseerr/issues/2389)) ([d2241a4](https://github.com/sct/overseerr/commit/d2241a41877d126a802fc53c925d258af31f34fd))
* **lang:** translations update from Hosted Weblate ([#2404](https://github.com/sct/overseerr/issues/2404)) ([1b29b15](https://github.com/sct/overseerr/commit/1b29b15d7c9a7ec918cb59116d60e1ae2e797dc4))
* **lang:** translations update from Hosted Weblate ([#2405](https://github.com/sct/overseerr/issues/2405)) ([879df20](https://github.com/sct/overseerr/commit/879df20022c8c5d9b32858ac5499d3e4369fc064))
* **lang:** translations update from Hosted Weblate ([#2414](https://github.com/sct/overseerr/issues/2414)) ([88536b1](https://github.com/sct/overseerr/commit/88536b1f9d6e8c1a11e1adf91b85bab4f34b751c))
* **lang:** translations update from Hosted Weblate ([#2425](https://github.com/sct/overseerr/issues/2425)) ([e9d4b63](https://github.com/sct/overseerr/commit/e9d4b6327b50a005ee6c2c3292b6f107e90fc50c))
* **lang:** translations update from Hosted Weblate ([#2428](https://github.com/sct/overseerr/issues/2428)) ([f8b1bcc](https://github.com/sct/overseerr/commit/f8b1bccda44371bb6f3f8f4ceeab900b1df3de31))
* **lang:** translations update from Hosted Weblate ([#2436](https://github.com/sct/overseerr/issues/2436)) ([99c0407](https://github.com/sct/overseerr/commit/99c04072e9f7be8191f25cbcfd5103017b8796eb))
* **lang:** translations update from Hosted Weblate ([#2452](https://github.com/sct/overseerr/issues/2452)) ([b5bd6ee](https://github.com/sct/overseerr/commit/b5bd6ee78f3d4aa14f0c440d1f2a8323dccfa399))
* **lang:** translations update from Hosted Weblate ([#2457](https://github.com/sct/overseerr/issues/2457)) ([92b2d32](https://github.com/sct/overseerr/commit/92b2d32d2e1e1d319410a9e357e1304065a77598))
* **lang:** translations update from Hosted Weblate ([#2489](https://github.com/sct/overseerr/issues/2489)) ([ec08fa6](https://github.com/sct/overseerr/commit/ec08fa67934715ff4a4d618d5b9ff97853913b78))
* **lang:** translations update from Hosted Weblate ([#2508](https://github.com/sct/overseerr/issues/2508)) ([9f4ae34](https://github.com/sct/overseerr/commit/9f4ae34da76707a40e2c89a50c722ffa1c0327c0))
* **lang:** translations update from Hosted Weblate ([#2531](https://github.com/sct/overseerr/issues/2531)) ([54b32eb](https://github.com/sct/overseerr/commit/54b32ebfd6b2eb6aeeea98c25939166eda8cc17f))
* **lang:** translations update from Hosted Weblate ([#2541](https://github.com/sct/overseerr/issues/2541)) ([4549ed3](https://github.com/sct/overseerr/commit/4549ed389e4f25c0946dc01526387e5ac000c3cf))
* **lang:** translations update from Hosted Weblate ([#2611](https://github.com/sct/overseerr/issues/2611)) ([81c75c8](https://github.com/sct/overseerr/commit/81c75c800edf6d36a1082a291ef7e308f338d005))
* **lang:** translations update from Hosted Weblate ([#2629](https://github.com/sct/overseerr/issues/2629)) ([1d0cbd2](https://github.com/sct/overseerr/commit/1d0cbd2e761072be0b4b3de461397ad9f9f681f3))
* **lang:** translations update from Hosted Weblate ([#2645](https://github.com/sct/overseerr/issues/2645)) ([341e3b8](https://github.com/sct/overseerr/commit/341e3b8f0657e09f53ad0b813b051290947343c0))
* **logs:** use separate json file to parse logs for log viewer ([#2399](https://github.com/sct/overseerr/issues/2399)) ([ce31bef](https://github.com/sct/overseerr/commit/ce31bef8a125c5492f2a1cfef0dcf3d8a4e9ee11))
* **notif:** add Pushbullet channel tag ([#2198](https://github.com/sct/overseerr/issues/2198)) ([f9200b7](https://github.com/sct/overseerr/commit/f9200b7977208f9b8267ce3a74bd8a86d6f28f7b))
* **plex:** selective user import ([#2188](https://github.com/sct/overseerr/issues/2188)) ([9cb97db](https://github.com/sct/overseerr/commit/9cb97db13ced5df2dc595cd9033470b1a0750093))
* **search:** filter search results by year ([#2460](https://github.com/sct/overseerr/issues/2460)) ([72c825d](https://github.com/sct/overseerr/commit/72c825d2a5109688bcc1991a30249284bf281500))
* **search:** search by id ([#2082](https://github.com/sct/overseerr/issues/2082)) ([b31cdbf](https://github.com/sct/overseerr/commit/b31cdbf074d5dbecbbf6da135a9b686aea9e3c0e))
* **tautulli:** validate upon saving settings ([#2511](https://github.com/sct/overseerr/issues/2511)) ([1dc900d](https://github.com/sct/overseerr/commit/1dc900d5ce9689d179c9d2f554abc74ca50bd9cb))
* **ui:** add trakt external link ([#2367](https://github.com/sct/overseerr/issues/2367)) ([4e56bae](https://github.com/sct/overseerr/commit/4e56bae98508c1a60aeb3a08560ba1c00acce7e7))
* verify Plex server access during auth for existing users with Plex IDs ([#2458](https://github.com/sct/overseerr/issues/2458)) ([85bb30e](https://github.com/sct/overseerr/commit/85bb30e252c27047ae367491f0e5bb92a7d52605))
* **issues:** only allow edit of own comments & do not allow non-admin delete of issues with comments ([#2248](https://github.com/sct/overseerr/issues/2248)) ([bba09d6](https://github.com/sct/overseerr/commit/bba09d69c1bc55c2f35db5a7986e7c935cc9619c))
* **notif:** only send MEDIA_AVAILABLE notifications for non-declined requests ([#2343](https://github.com/sct/overseerr/issues/2343)) ([fcb0dcf](https://github.com/sct/overseerr/commit/fcb0dcf5be64bf9ca814bfe119586908922099c5))
* **requests:** do not fail request edits if acting user lacks Manage Users permission ([#2338](https://github.com/sct/overseerr/issues/2338)) ([91bfff7](https://github.com/sct/overseerr/commit/91bfff71b7c05c9b9aad2c95282533eefbb6b2e7))
* **servarr:** handle baseurl error when testing connection ([#2294](https://github.com/sct/overseerr/issues/2294)) ([93b5ea2](https://github.com/sct/overseerr/commit/93b5ea20ca590996f6dc90713a76800180d0621c))
* **servarr:** handle servaarr server being unavailable when scanning downloads ([#2358](https://github.com/sct/overseerr/issues/2358)) ([488874f](https://github.com/sct/overseerr/commit/488874fc17e4e4719e90d383b83b1e1a5217213b))
* sort collection parts by release date ([#2368](https://github.com/sct/overseerr/issues/2368)) ([1b3797c](https://github.com/sct/overseerr/commit/1b3797cf6e6ef6b3d8c81e644382f6e3f68cfaaa))
* **ui:** request badge styling in request list ([#2302](https://github.com/sct/overseerr/issues/2302)) ([f2375c9](https://github.com/sct/overseerr/commit/f2375c902b79dcb1f349500862775ae57ea7d406))
### Features
* add production countries to movie/TV detail pages ([#2170](https://github.com/sct/overseerr/issues/2170)) ([30b20df](https://github.com/sct/overseerr/commit/30b20df37a9604ba1c066f89e54a5482a09575ea))
* add quotas, advanced options, and toggles to collection request modal ([#1742](https://github.com/sct/overseerr/issues/1742)) ([af40212](https://github.com/sct/overseerr/commit/af40212a738f8d6d9a5bf26dc20c0c87780d6020))
* **frontend:** add Discovery+ to network slider ([#2345](https://github.com/sct/overseerr/issues/2345)) ([2ded8f5](https://github.com/sct/overseerr/commit/2ded8f5484168bd7b8f45124d9ebdd296a5708d5))
* **lang:** add Polish display language ([#2261](https://github.com/sct/overseerr/issues/2261)) ([c760cea](https://github.com/sct/overseerr/commit/c760ceaa5f36c77fa3ce320fae1b4597d2d8b976))
* **lang:** translated using Weblate (Chinese (Traditional)) ([#2272](https://github.com/sct/overseerr/issues/2272)) ([d401e33](https://github.com/sct/overseerr/commit/d401e33249cbbca6e707479e5f0207e298ef3248))
* **lang:** translations update from Hosted Weblate ([#2277](https://github.com/sct/overseerr/issues/2277)) ([92732fc](https://github.com/sct/overseerr/commit/92732fcb42c56242d16daab00e2d38740b92dea0))
* **lang:** translations update from Hosted Weblate ([#2315](https://github.com/sct/overseerr/issues/2315)) ([6245be1](https://github.com/sct/overseerr/commit/6245be1e10dda67c869b59522c1290e7c100145f))
* **lang:** translations update from Hosted Weblate ([#2320](https://github.com/sct/overseerr/issues/2320)) ([68112fa](https://github.com/sct/overseerr/commit/68112faefbd64d5c71d3eff21620767f88ccfc34))
* **lang:** translations update from Hosted Weblate ([#2325](https://github.com/sct/overseerr/issues/2325)) ([febf067](https://github.com/sct/overseerr/commit/febf0677b880d2fed2822ce510db7cbb0826a920))
* **lang:** translations update from Hosted Weblate ([#2336](https://github.com/sct/overseerr/issues/2336)) ([3f7ef7a](https://github.com/sct/overseerr/commit/3f7ef7af97a807ef38041f4f2642b565aa33d066))
* **lang:** translations update from Hosted Weblate ([#2341](https://github.com/sct/overseerr/issues/2341)) ([33fe0bd](https://github.com/sct/overseerr/commit/33fe0bdd1e00da40e85b4e4b4780134b31a105d2))
* **lang:** translations update from Hosted Weblate ([#2346](https://github.com/sct/overseerr/issues/2346)) ([50dc934](https://github.com/sct/overseerr/commit/50dc9341dd98cb2d8ef3ef6471882a5a9b060afa))
* **lang:** translations update from Hosted Weblate ([#2364](https://github.com/sct/overseerr/issues/2364)) ([d437cc2](https://github.com/sct/overseerr/commit/d437cc25392e9c0881888371ffabc82892a1b15c))
* **lang:** translations update from Hosted Weblate ([#2366](https://github.com/sct/overseerr/issues/2366)) ([cc2b2bc](https://github.com/sct/overseerr/commit/cc2b2bc7a8ecd89e1feb38a907596b16df9bf0fc))
* **lang:** translations update from Hosted Weblate ([#2374](https://github.com/sct/overseerr/issues/2374)) ([b9bedac](https://github.com/sct/overseerr/commit/b9bedac7d7ba85223ecf1d9b93b96e2a490d571a))
* **lang:** translations update from Weblate ([#2226](https://github.com/sct/overseerr/issues/2226)) ([62b3dc5](https://github.com/sct/overseerr/commit/62b3dc5471c28f4d0e4399cb3bc8bfab94cff5ea))
* **lang:** translations update from Weblate ([#2241](https://github.com/sct/overseerr/issues/2241)) ([2b0b8e0](https://github.com/sct/overseerr/commit/2b0b8e05d9c95ff9218cea858a920a2815871186))
* **lang:** translations update from Weblate ([#2244](https://github.com/sct/overseerr/issues/2244)) ([0828b00](https://github.com/sct/overseerr/commit/0828b008badc8b512316799a6787bb7c403658d5))
* **lang:** translations update from Weblate ([#2247](https://github.com/sct/overseerr/issues/2247)) ([8c49309](https://github.com/sct/overseerr/commit/8c49309c35c31f7bcd0b84b0a307febc16842f68))
* **lang:** translations update from Weblate ([#2252](https://github.com/sct/overseerr/issues/2252)) ([99d5000](https://github.com/sct/overseerr/commit/99d50004e58f6b4594df0a171f6bc668635ec50c))
* **lang:** translations update from Weblate ([#2265](https://github.com/sct/overseerr/issues/2265)) ([b1b367a](https://github.com/sct/overseerr/commit/b1b367aac625ed3eb865832c94c2352e5a5c40f5))
* **notif:** 4K media notifications ([#2324](https://github.com/sct/overseerr/issues/2324)) ([88a8c1a](https://github.com/sct/overseerr/commit/88a8c1aa596e1113d6da52e5e8cbe443abc6384f))
* **notif:** add Pushbullet and Pushover agents to user notification settings ([#1740](https://github.com/sct/overseerr/issues/1740)) ([aeb7a48](https://github.com/sct/overseerr/commit/aeb7a48d72cec3fa2b857030aad3eaa0a457a896))
* **search:** close search bar when hitting return ([#2260](https://github.com/sct/overseerr/issues/2260)) ([b423dc1](https://github.com/sct/overseerr/commit/b423dc167d12f0ba49f902876bceb2e876e35f58))
* **ui:** allow admins to edit & approve request from advanced request modal ([#2067](https://github.com/sct/overseerr/issues/2067)) ([340f1a2](https://github.com/sct/overseerr/commit/340f1a211952bd2e8f40f0ea4622b52dbe934e85))
* **api:** return queried user's requests instead of own requests ([#2174](https://github.com/sct/overseerr/issues/2174)) ([0edb1f4](https://github.com/sct/overseerr/commit/0edb1f452b6ff4a49ae2bde15f7273769788cf4f))
* **api:** use query builder for user requests endpoint ([#2119](https://github.com/sct/overseerr/issues/2119)) ([a20f395](https://github.com/sct/overseerr/commit/a20f395c94c97dd7ddbc25590f15def2c9bf13c9))
* **email:** do not attempt to display logo if app URL not configured ([#2125](https://github.com/sct/overseerr/issues/2125)) ([b3b421a](https://github.com/sct/overseerr/commit/b3b421a67408a4a48d23c15341fcdf7aaf19b25a))
* **frontend:** notification type validation ([#2207](https://github.com/sct/overseerr/issues/2207)) ([2f204b9](https://github.com/sct/overseerr/commit/2f204b995269a53ae36f2a8733f27ae6ab70da5a))
* **frontend:** add Hulu to network slider ([#2204](https://github.com/sct/overseerr/issues/2204)) ([1e402f7](https://github.com/sct/overseerr/commit/1e402f710b53c11855aab0abdb4b12c51c30b022))
* **lang:** add Czech and Danish display languages ([#2176](https://github.com/sct/overseerr/issues/2176)) ([8d8db6c](https://github.com/sct/overseerr/commit/8d8db6cf5d98d4e498a31db339d02f8a98057c8d))
* **lang:** translations update from Weblate ([#2101](https://github.com/sct/overseerr/issues/2101)) ([c73cf7b](https://github.com/sct/overseerr/commit/c73cf7b19cbc19e97a777c0facb9264fb0113093))
* **lang:** translations update from Weblate ([#2179](https://github.com/sct/overseerr/issues/2179)) ([e3312ce](https://github.com/sct/overseerr/commit/e3312cef33821c8cb76a4a63bd565c78d67b3e0b))
* **lang:** translations update from Weblate ([#2185](https://github.com/sct/overseerr/issues/2185)) ([dce10f7](https://github.com/sct/overseerr/commit/dce10f743f52cb04036e2cdaee280e26a81b253b))
* **lang:** translations update from Weblate ([#2202](https://github.com/sct/overseerr/issues/2202)) ([492d8e3](https://github.com/sct/overseerr/commit/492d8e3daa5fb99aa9df2a18978085d5ddd581e7))
* **lang:** translations update from Weblate ([#2210](https://github.com/sct/overseerr/issues/2210)) ([0a6ef6c](https://github.com/sct/overseerr/commit/0a6ef6cc81376f7a02f1483109be7ae4ab851c48))
* **servarr:** auto fill base url when testing service if missing ([#1995](https://github.com/sct/overseerr/issues/1995)) ([739f667](https://github.com/sct/overseerr/commit/739f667b54d8dec258b74d0cd8fd8b3b88dcf8d5))
* **ui:** link processing/requested status badges to service URL ([#1761](https://github.com/sct/overseerr/issues/1761)) ([032c14a](https://github.com/sct/overseerr/commit/032c14a22680f62f8106943297b081b68645ce61))
* **email:** omit links when application URL is not configured ([#1806](https://github.com/sct/overseerr/issues/1806)) ([1133a34](https://github.com/sct/overseerr/commit/1133a34ffdf95c4d036be0264fe7f94f64007e8f))
* **lang:** minor changes to password reset strings ([#1798](https://github.com/sct/overseerr/issues/1798)) ([a41245c](https://github.com/sct/overseerr/commit/a41245c703688743ec24f9b4a53e70f3340daa0f))
* **notif:** truncate media overviews ([#1800](https://github.com/sct/overseerr/issues/1800)) ([42e45f3](https://github.com/sct/overseerr/commit/42e45f38e5ede7df0fc4bdb20a970917b2361569))
* **plex:** do not fail to scan empty libraries ([#1771](https://github.com/sct/overseerr/issues/1771)) ([6789b87](https://github.com/sct/overseerr/commit/6789b8701cb644d9a3f1384f30b3dff707201ef7))
* **quota:** block multi-season requests that would exceed a user's quota ([#1874](https://github.com/sct/overseerr/issues/1874)) ([8a55f85](https://github.com/sct/overseerr/commit/8a55f85d3ef14ccb83b139acb35d0746431637be))
* **rt-api:** use rotten-tomatoes 2.0 search api for movies ([a11bb49](https://github.com/sct/overseerr/commit/a11bb49663ec345332c4dd70ddbb49ce230b5c3c))
* **ui:** center logo on password reset pages ([#1807](https://github.com/sct/overseerr/issues/1807)) ([b8e82b5](https://github.com/sct/overseerr/commit/b8e82b5b4d3cb49ec372e3dce3cd89dff440ffd0))
* **ui:** change sidebar breakpoint to lg ([#1972](https://github.com/sct/overseerr/issues/1972)) ([70bd9e9](https://github.com/sct/overseerr/commit/70bd9e9308b607206b60a2a36a511de6e397a3db))
* **ui:** do not allow submission of invalid form inputs ([#1799](https://github.com/sct/overseerr/issues/1799)) ([910d00c](https://github.com/sct/overseerr/commit/910d00c19522a70125bfb5e5081a7ef4000e7f54))
* **ui:** do not display negative remaining quota ([#1859](https://github.com/sct/overseerr/issues/1859)) ([3841fb0](https://github.com/sct/overseerr/commit/3841fb06ebe1e09250362cc6cb401fdca12eef7f))
* **ui:** sort 'Request As' user dropdown by display name ([#2099](https://github.com/sct/overseerr/issues/2099)) ([bb09f8e](https://github.com/sct/overseerr/commit/bb09f8eaf70f6d0c981f31bd5f3c8afb2fe101ab))
* **webpush:** load user in push sub query ([#1894](https://github.com/sct/overseerr/issues/1894)) ([6f2db6a](https://github.com/sct/overseerr/commit/6f2db6a6ccf299262cf86d91acf639b921f28286))
* correct logo filename ([#1805](https://github.com/sct/overseerr/issues/1805)) ([f95be83](https://github.com/sct/overseerr/commit/f95be832f95a68b114ff24a65ffa0ebbd71b4121))
### Features
* list streaming providers on movie/TV detail pages ([#1778](https://github.com/sct/overseerr/issues/1778)) ([98ece67](https://github.com/sct/overseerr/commit/98ece67655a5dffe894974e337a3603afeed0236))
* **lang:** add Simplified Chinese display language ([#2032](https://github.com/sct/overseerr/issues/2032)) ([590ea7e](https://github.com/sct/overseerr/commit/590ea7e40460e381377b212d00869f191908b41f))
* **lang:** translated using Weblate (German) ([#1791](https://github.com/sct/overseerr/issues/1791)) ([15f7941](https://github.com/sct/overseerr/commit/15f7941269075b7e12de8bbc0f98418af70df380))
* **lang:** translations update from Weblate ([#1772](https://github.com/sct/overseerr/issues/1772)) ([6a75a05](https://github.com/sct/overseerr/commit/6a75a05c2348455d5374132a2574d988879d543a))
* **lang:** translations update from Weblate ([#1796](https://github.com/sct/overseerr/issues/1796)) ([57b52fc](https://github.com/sct/overseerr/commit/57b52fc9cccd3fac93cdb68e36cf652ddbcdf86c))
* **lang:** translations update from Weblate ([#1910](https://github.com/sct/overseerr/issues/1910)) ([fe89fd5](https://github.com/sct/overseerr/commit/fe89fd5f12460cb1b3acb09fb16b62497ef50f5f))
* **lang:** translations update from Weblate ([#2058](https://github.com/sct/overseerr/issues/2058)) ([db42c46](https://github.com/sct/overseerr/commit/db42c4678145d2a9676aa71b6773607b696f7cea))
* **notif:** Restyle HTML email notifications Part 2 ([#1917](https://github.com/sct/overseerr/issues/1917)) ([376149d](https://github.com/sct/overseerr/commit/376149d6ebb4db28d949391115f475afdd4e7d48))
* **ui:** add 'show more/less...' for studios on movie details page ([#1770](https://github.com/sct/overseerr/issues/1770)) ([680ea0c](https://github.com/sct/overseerr/commit/680ea0c87a9ae143413354680c421d62bccd869d))
* new logo, who dis? ([#1802](https://github.com/sct/overseerr/issues/1802)) ([beb5637](https://github.com/sct/overseerr/commit/beb5637d9f5c01d773eaee93035b7c195c2ae5f2))
* **locale:** set locale based on user settings upon login ([#1584](https://github.com/sct/overseerr/issues/1584)) ([f48312e](https://github.com/sct/overseerr/commit/f48312e833ed5d48c41179d0eadbc66d45486d8a))
* **notif:** include year in Media Available notifications ([#1672](https://github.com/sct/overseerr/issues/1672)) ([11aa712](https://github.com/sct/overseerr/commit/11aa712eb0e8796874c96fbcc9b51b523108e2d4))
* **plex:** disable library sync if Plex not configured, and disable scan if no libraries ([#1764](https://github.com/sct/overseerr/issues/1764)) ([22238fe](https://github.com/sct/overseerr/commit/22238fe4f711267d001be95942b3151c536e0c18))
* **plex:** do not fail to import Plex users when Plex Home has managed users ([#1699](https://github.com/sct/overseerr/issues/1699)) ([310cdb3](https://github.com/sct/overseerr/commit/310cdb36df1601bca5e57f0bc796c44111b8435f))
* **plex:** sync libraries after saving settings ([#1592](https://github.com/sct/overseerr/issues/1592)) ([9749d72](https://github.com/sct/overseerr/commit/9749d723fc0a282b291c06ee68a6e174dcec1c5b))
* **requests:** appropriately set modifiedBy user for new requests ([#1684](https://github.com/sct/overseerr/issues/1684)) ([a3f04b3](https://github.com/sct/overseerr/commit/a3f04b3f3522d46dc65178bddd1e986426e48050))
* **requests:** do not prevent duplicate requests if other requests are declined ([de0759c](https://github.com/sct/overseerr/commit/de0759c26a9e857e2b8d7244673625fc79ee4660))
* **requests:** prevent duplicate movie requests ([126d866](https://github.com/sct/overseerr/commit/126d8665ee2808fc0bc37df4ca61f3e63be096e2))
* check that application URL and email agent are configured for password reset/generation ([#1724](https://github.com/sct/overseerr/issues/1724)) ([091d66a](https://github.com/sct/overseerr/commit/091d66a1928d3c69a11eab2a789b4639b5ba9817))
* handle null values in User email transform ([#1712](https://github.com/sct/overseerr/issues/1712)) ([4a042f1](https://github.com/sct/overseerr/commit/4a042f12be6510ee47de3a7e025497f8d132d6a1))
* **lang:** only set locale once at page load and move subsequent updates back into Layout ([14756f4](https://github.com/sct/overseerr/commit/14756f4b208c5b201a6e632b43e7a21c5bec6f9c)), closes [#1662](https://github.com/sct/overseerr/issues/1662)
* **locale:** properly restore display language upon page refresh ([#1646](https://github.com/sct/overseerr/issues/1646)) ([e85d1ce](https://github.com/sct/overseerr/commit/e85d1ce94ec45d8f5d086722cfd88e0e2c5b4bb6))
* **notifications:** default webpush notification agent to enabled for users for settings response ([7520e24](https://github.com/sct/overseerr/commit/7520e24e9287e214dd31224f1201e9b6385fd567)), closes [#1663](https://github.com/sct/overseerr/issues/1663)
* **quotas:** do not count already-requested seasons when editing TV request ([#1649](https://github.com/sct/overseerr/issues/1649)) ([808ccf1](https://github.com/sct/overseerr/commit/808ccf1c6975f853db6dc89f4d9f1f5488dbaae3))
* **requests:** remove requestedBy user param from existing movie request check ([#1569](https://github.com/sct/overseerr/issues/1569)) ([788f3dc](https://github.com/sct/overseerr/commit/788f3dc435ae224fcc4d4cb2890b1b9b494c64e8))
* **sensitiveinput:** do not capture enter key input ([#1650](https://github.com/sct/overseerr/issues/1650)) ([bb8d14b](https://github.com/sct/overseerr/commit/bb8d14b5ffd840eff0c2a00e1b5d318677a5ca5f))
* **sonarr:** do not mark media as failed if there is no season data on TVDB ([#1691](https://github.com/sct/overseerr/issues/1691)) ([0cd7fa0](https://github.com/sct/overseerr/commit/0cd7fa0f1a00d129339be13550a4f694c820a0e9))
* **tv:** don't show duplicate air date ([#1666](https://github.com/sct/overseerr/issues/1666)) ([e1f5feb](https://github.com/sct/overseerr/commit/e1f5febe7bbf27e77b6f5d057c2c3f7e22898734))
* **ui:** add clarification to user settings ([#1644](https://github.com/sct/overseerr/issues/1644)) ([2ef57e9](https://github.com/sct/overseerr/commit/2ef57e9b1a5b4d0a1499921f4e26b0b0712d7ded))
* **ui:** hide advanced request options when there is only one choice ([#1591](https://github.com/sct/overseerr/issues/1591)) ([6b26188](https://github.com/sct/overseerr/commit/6b26188d888a1f80bd36a1968e41333bab2af794))
* **ui:** improve QuotaSelector display of unlimited and singular values ([#1704](https://github.com/sct/overseerr/issues/1704)) ([59b2ec1](https://github.com/sct/overseerr/commit/59b2ec11fa8868bf6873ffa80f4999ae10d65637))
* perform case-insensitive match for local user email addresses ([#1633](https://github.com/sct/overseerr/issues/1633)) ([928b8a7](https://github.com/sct/overseerr/commit/928b8a71cf361b7bc2b8957c621f5b66c4657b1e))
* **ui:** apply pointer cursor style for clickable status badges ([#1632](https://github.com/sct/overseerr/issues/1632)) ([6968caa](https://github.com/sct/overseerr/commit/6968caa35a70c172bdd57c984fde6cb6a04a1470))
* **ui:** remove delete button from request cards ([#1635](https://github.com/sct/overseerr/issues/1635)) ([6b37242](https://github.com/sct/overseerr/commit/6b37242a3f5a3b332d259f4814d235d751ae2491))
* switch PGP regex to span multiple lines ([#1598](https://github.com/sct/overseerr/issues/1598)) ([d0703aa](https://github.com/sct/overseerr/commit/d0703aa37772759e8e28b5da7187e97e7aadc495))
* **ui:** hide Plex alert after setup and add local login warning to local user modal ([#1600](https://github.com/sct/overseerr/issues/1600)) ([694d0ff](https://github.com/sct/overseerr/commit/694d0ffcf6b3e3fa00175400fa4217a7d6eb787f))
### Features
* **lang:** add Greek display language ([#1605](https://github.com/sct/overseerr/issues/1605)) ([2241564](https://github.com/sct/overseerr/commit/22415642e8602809e3507e5b13dc2f8de3000003))
* **lang:** translations update from Weblate ([#1585](https://github.com/sct/overseerr/issues/1585)) ([361ea77](https://github.com/sct/overseerr/commit/361ea77588db3dc04a51dd3a62c73ae1297cdce2))
* **lang:** translations update from Weblate ([#1603](https://github.com/sct/overseerr/issues/1603)) ([2efa7fa](https://github.com/sct/overseerr/commit/2efa7faf20d05a5fc423e0151c6b46fe6212d096))
* **lang:** translations update from Weblate ([#1639](https://github.com/sct/overseerr/issues/1639)) ([d22400d](https://github.com/sct/overseerr/commit/d22400dbc9320743498eeb8e6a4dcbccf1a4d52d))
* **lang:** translations update from Weblate ([#1676](https://github.com/sct/overseerr/issues/1676)) ([8a80571](https://github.com/sct/overseerr/commit/8a805716e3e34ae8d081ad47f9d4cd68f88b0116))
* **lang:** translations update from Weblate ([#1703](https://github.com/sct/overseerr/issues/1703)) ([6a3649f](https://github.com/sct/overseerr/commit/6a3649f620e518ff07a48c17ce1182aaedff398a))
* **lang:** translations update from Weblate ([#1727](https://github.com/sct/overseerr/issues/1727)) ([60c3ced](https://github.com/sct/overseerr/commit/60c3ced9e2466568eecde93c88410c87ff0b796f))
* **lang:** translations update from Weblate ([#1746](https://github.com/sct/overseerr/issues/1746)) ([37a4df6](https://github.com/sct/overseerr/commit/37a4df646cc3e3101360037f1b6f061a734eb5e2))
* **lang:** translations update from Weblate ([#1768](https://github.com/sct/overseerr/issues/1768)) ([dedf95e](https://github.com/sct/overseerr/commit/dedf95e574a15a708866c381353e58ce3b3a1a61))
* add display name to create local user modal ([#1631](https://github.com/sct/overseerr/issues/1631)) ([44c3edb](https://github.com/sct/overseerr/commit/44c3edb98568ba15eb525e665115429cfb15d28b))
* allow users to select notification types ([#1512](https://github.com/sct/overseerr/issues/1512)) ([e605989](https://github.com/sct/overseerr/commit/e60598905b2d6eef7c1872d0c9e92e6d70508ae8))
* **notif:** prevent manage-request users receiving auto-approve notif from their requests ([#1707](https://github.com/sct/overseerr/issues/1707)) ([#1709](https://github.com/sct/overseerr/issues/1709)) ([9ead8bb](https://github.com/sct/overseerr/commit/9ead8bb1f1680b522550f963502c83e2f99d1e96))
* **plex:** add support for custom Plex Web App URLs ([#1581](https://github.com/sct/overseerr/issues/1581)) ([a640a91](https://github.com/sct/overseerr/commit/a640a91390f1411637ad379a8253002fdf60480f))
* **webpush:** add warning to web push settings re: HTTPS requirement ([#1599](https://github.com/sct/overseerr/issues/1599)) ([0c4fb64](https://github.com/sct/overseerr/commit/0c4fb6446be425905a120df5be9a28b052e884c0))
### Reverts
* **deps:** revert back to typeorm 0.2.32 ([4368c3a](https://github.com/sct/overseerr/commit/4368c3aa4f88425ec08f3b555419e572cfa320e3))
* **deps:** use 10.1.3 until css import issue is resolved ([2254248](https://github.com/sct/overseerr/commit/2254248abc0f2051a9dd28d9663c7ab1d0b547b6))
* **requests:** go back to old modifiedBy request values for now ([0918b25](https://github.com/sct/overseerr/commit/0918b254132b0541999486e1f0679d0c0cd65864))
* **api:** do not try to transform empty values passed to user notificationTypes ([ef3f977](https://github.com/sct/overseerr/commit/ef3f9778aa81f8ed39dcd835d63d94f2248e0204)), closes [#1501](https://github.com/sct/overseerr/issues/1501)
* **backend:** properly set request media status ([#1541](https://github.com/sct/overseerr/issues/1541)) ([b7b55e2](https://github.com/sct/overseerr/commit/b7b55e275cb2f1f61c3057cb8ab4cb1027f6356d))
* **locale:** default user locale should be the server setting ([#1574](https://github.com/sct/overseerr/issues/1574)) ([549103f](https://github.com/sct/overseerr/commit/549103f6f6d5624201e425df7d7814f0f67863b9))
* **pwa:** add Discover shortcut and fix/optimize icons ([#1525](https://github.com/sct/overseerr/issues/1525)) ([e1dc62b](https://github.com/sct/overseerr/commit/e1dc62b0a5b64202701aff821837ed11dd3f12db))
* **radarr:** only process Radarr movies which are either monitored or downloaded ([#1511](https://github.com/sct/overseerr/issues/1511)) ([85899ab](https://github.com/sct/overseerr/commit/85899ab49a27542390e91443531905737224338d))
* **ui:** add missing margins on button SVGs on Plex Settings page ([#1546](https://github.com/sct/overseerr/issues/1546)) ([5e588be](https://github.com/sct/overseerr/commit/5e588be8127b50dd83477f7f3a65f18de774e8af))
* **ui:** add user profile links to RequestBlock and change 'ETA' string in DownloadBlock ([#1551](https://github.com/sct/overseerr/issues/1551)) ([e4d0029](https://github.com/sct/overseerr/commit/e4d0029f7b4245b8606e2447c54629def40c7761))
* **ui:** apply rounded-l-only to SensitiveInput textareas and increase visible text input area ([#1561](https://github.com/sct/overseerr/issues/1561)) ([1123fce](https://github.com/sct/overseerr/commit/1123fce089b86251dcafebf77743d60a6e396bee))
* **ui:** correct toasts being in the wrong position on smaller screens ([2ecd9d7](https://github.com/sct/overseerr/commit/2ecd9d7b1391b8fc83e9c12a18bab105e7148f0f))
* **ui:** default to text input type for SensitiveInputs ([#1568](https://github.com/sct/overseerr/issues/1568)) ([e2acf88](https://github.com/sct/overseerr/commit/e2acf8887cb0456c80308bd1b7f3bbe1930e8cff))
* **ui:** improve form usability ([#1563](https://github.com/sct/overseerr/issues/1563)) ([26580ea](https://github.com/sct/overseerr/commit/26580eaa218702bc5841718310e340d049c50332))
* **ui:** show warning if user has both a default non-4K server and a non-default 4K server ([#1478](https://github.com/sct/overseerr/issues/1478)) ([4faddf3](https://github.com/sct/overseerr/commit/4faddf3810e20851c7ae1251ff0187fa13d7b0f6))
* **webpush:** only prompt user to allow notifications if enabled in user settings ([#1552](https://github.com/sct/overseerr/issues/1552)) ([b05b177](https://github.com/sct/overseerr/commit/b05b177776a5d22bf3b5e93bad4358f4007b879a))
* correctly fall back to English name in LanguageSelector ([#1537](https://github.com/sct/overseerr/issues/1537)) ([189313e](https://github.com/sct/overseerr/commit/189313e94a16e694d192d157642d77f664fd709b))
* do not set locale when modifying other users ([#1499](https://github.com/sct/overseerr/issues/1499)) ([4858771](https://github.com/sct/overseerr/commit/48587719e9474139c7bbc2970b1c7d1d17b78a81))
### Features
* **email:** replace 'Enable SSL' setting with more descriptive/clear 'Encryption Method' setting ([#1549](https://github.com/sct/overseerr/issues/1549)) ([69ab7cc](https://github.com/sct/overseerr/commit/69ab7cc660bea43b70bdb646eabd3866c1b5a90f))
* **inputs:** add support for toggling security on input fields ([#1404](https://github.com/sct/overseerr/issues/1404)) ([4fd452d](https://github.com/sct/overseerr/commit/4fd452dd1880f597a0acda812d567e7cb6c16d83))
* **lang:** translated using Weblate (Spanish) ([#1553](https://github.com/sct/overseerr/issues/1553)) ([e3d5e33](https://github.com/sct/overseerr/commit/e3d5e33ec3e43d36ec832d6ca47f330fc7675088))
* **lang:** translations update from Weblate ([#1497](https://github.com/sct/overseerr/issues/1497)) ([9a95a07](https://github.com/sct/overseerr/commit/9a95a073916c9968b8ef348d0805d77400ea203a))
* **lang:** translations update from Weblate ([#1527](https://github.com/sct/overseerr/issues/1527)) ([1a6d4bd](https://github.com/sct/overseerr/commit/1a6d4bddc016f4aaad83b945e103b19be4d0da31))
* **lang:** translations update from Weblate ([#1558](https://github.com/sct/overseerr/issues/1558)) ([6c9991d](https://github.com/sct/overseerr/commit/6c9991d474a5cd95d9a0a10104bd79d8a9f3ada9))
* **lang:** translations update from Weblate ([#1566](https://github.com/sct/overseerr/issues/1566)) ([93c441e](https://github.com/sct/overseerr/commit/93c441ef6665291ca3698368e4b093c843726036))
* add server default locale setting ([#1536](https://github.com/sct/overseerr/issues/1536)) ([f256a44](https://github.com/sct/overseerr/commit/f256a444c57f2d92c1c4918d4ff6e223ef85ecd2))
* **notif:** show success/failure toast for test notifications ([#1442](https://github.com/sct/overseerr/issues/1442)) ([079645c](https://github.com/sct/overseerr/commit/079645c2c74edfb7e4f583de2ac72bb9824f6524))
* **perms:** add separate REQUEST_MOVIE and REQUEST_TV permissions ([#1474](https://github.com/sct/overseerr/issues/1474)) ([91b9e0f](https://github.com/sct/overseerr/commit/91b9e0f67996a442b5c0117fe09e2d69c163fafb))
* **pwa:** add shortcuts to PWA ([#1509](https://github.com/sct/overseerr/issues/1509)) ([ed99e49](https://github.com/sct/overseerr/commit/ed99e4976dc2700fe84c70af4887c1a431bba92c))
* add option to only allow Plex sign-in from existing users ([#1496](https://github.com/sct/overseerr/issues/1496)) ([db49b20](https://github.com/sct/overseerr/commit/db49b2024d399d90f2d1500b262374efc42f333c))
* PWA Support ([#1488](https://github.com/sct/overseerr/issues/1488)) ([28830d4](https://github.com/sct/overseerr/commit/28830d4ef809efa92a5879a81cac11ff52ea3d1f))
* **lang:** add missing '4K' from singular case of approve/deny 4K request strings ([#1481](https://github.com/sct/overseerr/issues/1481)) ([a822b01](https://github.com/sct/overseerr/commit/a822b019220e86e362a2570e7024289450b4ed46))
* better error message when creating a user with an existing email ([f13f1c9](https://github.com/sct/overseerr/commit/f13f1c94515b5bd51382fa18ad96a2ccfd06e50d)), closes [#1441](https://github.com/sct/overseerr/issues/1441)
* set editRequest attribute as necessary, allow users to edit their own pending requests, and show 'View Request' button on series pages ([#1446](https://github.com/sct/overseerr/issues/1446)) ([89455ad](https://github.com/sct/overseerr/commit/89455ad9b783d04d993a0009c351b1096f2b222e))
* **api:** add check for 4K request perms to request creation endpoint ([#1450](https://github.com/sct/overseerr/issues/1450)) ([4449241](https://github.com/sct/overseerr/commit/4449241a8f63fdaeaa4995aa7ec34127c322b9dd))
* **notif:** include year in notifications ([#1439](https://github.com/sct/overseerr/issues/1439)) ([4e98f56](https://github.com/sct/overseerr/commit/4e98f567534a650e26b0244990b7ca549cecbe89))
* **plex:** add support for plex.direct URLs ([#1437](https://github.com/sct/overseerr/issues/1437)) ([db07770](https://github.com/sct/overseerr/commit/db077700e42ab1d2c870213fd55bbdee74002775))
* **radarr:** search in addition to monitoring existing movies ([#1449](https://github.com/sct/overseerr/issues/1449)) ([3ae7d00](https://github.com/sct/overseerr/commit/3ae7d0098b225562499d7c8a74b8b6c3e8893ad9))
* **ui:** adjust user list buttons on mobile ([#1452](https://github.com/sct/overseerr/issues/1452)) ([5d1b741](https://github.com/sct/overseerr/commit/5d1b741f55665c528e299a09464dff6d66f72666))
* **ui:** align icons in user dropdown ([eb5d152](https://github.com/sct/overseerr/commit/eb5d1528869959cdf642e6fefc1a8f4dcf51b84e))
* **api:** correctly check if update is available for release versions ([190cbd6](https://github.com/sct/overseerr/commit/190cbd6559c51a02ec09b267891f3033add6afc8))
* **api:** allow server owner to delete other admin accounts ([2ac6fe7](https://github.com/sct/overseerr/commit/2ac6fe7f6d666d64228d11cde24865acc54c7ce7))
* **backend:** do not log error when user has no server access ([#1419](https://github.com/sct/overseerr/issues/1419)) ([fc14037](https://github.com/sct/overseerr/commit/fc14037ec1c0b7450d892fa9be8176f5b9ff9d73))
* **frontend:** add crossorigin attribute to webmanifest link ([#1376](https://github.com/sct/overseerr/issues/1376)) ([82ca2f5](https://github.com/sct/overseerr/commit/82ca2f59349407e3b1b5cd4f321e196f37044df0))
* **frontend:** autofill with Plex server address ([#1381](https://github.com/sct/overseerr/issues/1381)) ([d9e314b](https://github.com/sct/overseerr/commit/d9e314bad295463d26d8ffe92728f3b5eee4ad05))
* **frontend:** handle media items/requests no longer having a valid tmdb id ([b5ac2f5](https://github.com/sct/overseerr/commit/b5ac2f5a2c5dda808eca177359f125d6e03d1b0f)), closes [#517](https://github.com/sct/overseerr/issues/517)
* **plex:** do not use SSL for local servers ([#1418](https://github.com/sct/overseerr/issues/1418)) ([9233fc0](https://github.com/sct/overseerr/commit/9233fc078579df8a193344ba45bafb0d5c2cb9af))
* **plex:** use server 'address' returned by Plex API ([#1379](https://github.com/sct/overseerr/issues/1379)) ([33542c9](https://github.com/sct/overseerr/commit/33542c9b2dc53b1e036a7d9571cf467c3d3dc8af))
* **quotas:** Time value of a quota was being ignored ([d3c6bc1](https://github.com/sct/overseerr/commit/d3c6bc1619c39b1e6225d405efaad5df99a27406))
* **ui:** allow canceling from request list & hide edit button for own requests ([#1401](https://github.com/sct/overseerr/issues/1401)) ([bed850d](https://github.com/sct/overseerr/commit/bed850dce9ad0d0b52c3c628225aea938164c38b))
* **ui:** close sidebar on mobile when clicking version status ([ad67381](https://github.com/sct/overseerr/commit/ad673813976669797202c2cefc50274aca84989d))
* **ui:** correctly set autocomplete attribute for password fields ([#1430](https://github.com/sct/overseerr/issues/1430)) ([4b5e355](https://github.com/sct/overseerr/commit/4b5e355df9e291a5cb550483c7dad6c43f03d3a7))
* **ui:** dim password field when password generation option is selected ([#1427](https://github.com/sct/overseerr/issues/1427)) ([e8bbd44](https://github.com/sct/overseerr/commit/e8bbd4497a5eab6357fa7b37c9906285b3d1f64f))
* **ui:** hide alert when email notifs are already configured ([#1335](https://github.com/sct/overseerr/issues/1335)) ([5117987](https://github.com/sct/overseerr/commit/5117987feaed21ccc19e64b04a15f2b77c22b880))
* fall back to English genre names ([#1352](https://github.com/sct/overseerr/issues/1352)) ([e43106a](https://github.com/sct/overseerr/commit/e43106a434548840acecaf1276a5cebdc30e1345))
* fix outofdate string & display version status badge in Settings > About ([#1417](https://github.com/sct/overseerr/issues/1417)) ([4eb9209](https://github.com/sct/overseerr/commit/4eb92098ba1f141bf74875ce76816a615763de5f))
* various fixes for new tags feature ([#1369](https://github.com/sct/overseerr/issues/1369)) ([b4450a3](https://github.com/sct/overseerr/commit/b4450a308c56f767fbaa769d574a1b3f8e221d59))
* **ui:** link request card status badge to Plex media URL ([#1361](https://github.com/sct/overseerr/issues/1361)) ([7a5c4a3](https://github.com/sct/overseerr/commit/7a5c4a30b5735fe6fbe821a8fcfdb4bcbeca68b3))
### Features
* **lang:** Translations update from Weblate ([#1429](https://github.com/sct/overseerr/issues/1429)) ([a54241c](https://github.com/sct/overseerr/commit/a54241c775705fadc7c044f5312307f28f9a854b))
* change alpha warning to beta warning ([03fd21b](https://github.com/sct/overseerr/commit/03fd21bebc3ffa34ce983b524d09e74b8ab2d057))
* **lang:** translated using Weblate (Catalan) ([#1351](https://github.com/sct/overseerr/issues/1351)) ([35c13a8](https://github.com/sct/overseerr/commit/35c13a87467b4deabab3cb2cd1cab1b24ab51875))
* **lang:** translations update from Weblate ([#1360](https://github.com/sct/overseerr/issues/1360)) ([8ee7693](https://github.com/sct/overseerr/commit/8ee7693a1f00a2f735b2555c7f8180c8a2c6144f))
* **lang:** translations update from Weblate ([#1416](https://github.com/sct/overseerr/issues/1416)) ([dceca4d](https://github.com/sct/overseerr/commit/dceca4dd97f78f2e3aef678edcd5755c781f5249))
* add overseerr version and update availability status to sidebar ([ecf1312](https://github.com/sct/overseerr/commit/ecf13123d21d765d67bfa7f9b6509b0f2af62cee))
* **lang:** translations update from Weblate ([#1388](https://github.com/sct/overseerr/issues/1388)) ([9b199b2](https://github.com/sct/overseerr/commit/9b199b27d806e290cf0551e2d2ede6add61770aa))
* **lang:** translations update from Weblate ([#1396](https://github.com/sct/overseerr/issues/1396)) ([3daf57e](https://github.com/sct/overseerr/commit/3daf57e9a12e4973dbc56656379ab2dbcb3c2619))
* **notif:** allow users to enable/disable specific agents ([#1172](https://github.com/sct/overseerr/issues/1172)) ([46c4ee1](https://github.com/sct/overseerr/commit/46c4ee1625cf3e74bd885ecfc254b1e46cf44f29))
* **webhook:** include requestedBy user in payload ([#1385](https://github.com/sct/overseerr/issues/1385)) ([e605687](https://github.com/sct/overseerr/commit/e60568758097d07f9d4b201ffdf34f0c32ba9cf3))
* radarr/sonarr tag support ([#1366](https://github.com/sct/overseerr/issues/1366)) ([a306ebc](https://github.com/sct/overseerr/commit/a306ebc2d18317d8dbe4ccd3f24c22f55ffcd6a6))
* **frontend:** 'Recent Requests' slider should link to request list w/ same filter ([#1235](https://github.com/sct/overseerr/issues/1235)) ([49782c0](https://github.com/sct/overseerr/commit/49782c0b730cce9f0bad14e9c83842b5b0bfe11e))
* **frontend:** call mutate after changing public settings ([#1302](https://github.com/sct/overseerr/issues/1302)) ([c8f67cf](https://github.com/sct/overseerr/commit/c8f67cf866ada791e4129a0bbae16b9eac41f32e))
* **frontend:** include language parameter in TMDb links ([#1344](https://github.com/sct/overseerr/issues/1344)) ([1d88be9](https://github.com/sct/overseerr/commit/1d88be9341a8ff9e1f39b02556b489cdbd06392b))
* **frontend:** redirect from /setup if already initialized ([#1238](https://github.com/sct/overseerr/issues/1238)) ([8016503](https://github.com/sct/overseerr/commit/80165038fd214897e3520a420f971341e7b94865))
* **frontend:** use correct path to user profile in request modal quota dropdown ([#1307](https://github.com/sct/overseerr/issues/1307)) ([f990585](https://github.com/sct/overseerr/commit/f9905859148088afec53549b81611b07bf19d3b9))
* **frontend:** use HTTPS to fetch TMDb assets for network/studio sliders ([#1343](https://github.com/sct/overseerr/issues/1343)) ([c886ea6](https://github.com/sct/overseerr/commit/c886ea6c0578cb7532d6c09266a76bfad8598b9d))
* **frontend:** use next/image to serve login page images ([cbf4519](https://github.com/sct/overseerr/commit/cbf45196b023f60c8e4cf7602c0295f886fe610c)), closes [#1207](https://github.com/sct/overseerr/issues/1207)
* **lang:** allow proper localization of comma-delimited lists ([#1264](https://github.com/sct/overseerr/issues/1264)) ([173408a](https://github.com/sct/overseerr/commit/173408a1f269f09c724843ba087ef3f85b2832ad))
* **log:** fix typo in base scanner logging ([#1329](https://github.com/sct/overseerr/issues/1329)) [skip ci] ([b0b04ca](https://github.com/sct/overseerr/commit/b0b04ca1c7218ad5b67d9ec8b3fac5af78a4c132))
* **logs:** add i18n strings for new log page changes ([8c51c28](https://github.com/sct/overseerr/commit/8c51c28f546b9c2d38ff7f20d59bb08a599e8146))
* **notifications:** correctly send notifications for users that do not have any user settings yet ([d3a25b9](https://github.com/sct/overseerr/commit/d3a25b935aae35dd97ef0f168ac7e2898126a9a5)), closes [#1324](https://github.com/sct/overseerr/issues/1324)
* **overseerr-api.yml:** fixed pushbullet & webhook API definition refs and descriptions ([#1288](https://github.com/sct/overseerr/issues/1288)) [skip ci] ([3b003b7](https://github.com/sct/overseerr/commit/3b003b770120f7d150c64ff098b626015c030794))
* **plex:** always send Overseerr for the device name to the plex.tv api ([f7146e4](https://github.com/sct/overseerr/commit/f7146e41899a59f75b963e1cc9dac9eddf24aebe)), closes [#1244](https://github.com/sct/overseerr/issues/1244)
* **ui:** add validation to hostname/IP fields ([#1206](https://github.com/sct/overseerr/issues/1206)) ([f49a024](https://github.com/sct/overseerr/commit/f49a02449c4928aef56cecbf908cf585ea0d4fca))
* **ui:** better regex matching when parsing logs ([#1225](https://github.com/sct/overseerr/issues/1225)) ([2d737f2](https://github.com/sct/overseerr/commit/2d737f276095a8ca9abea360ef29134e9f639a39))
* **ui:** center role under title cards on person detail pages ([#1205](https://github.com/sct/overseerr/issues/1205)) ([4a61518](https://github.com/sct/overseerr/commit/4a6151873a3a3c5e45f9817131774a2c52957138))
* **ui:** correctly enable the request button when partial requests are disabled with no quota ([16a611b](https://github.com/sct/overseerr/commit/16a611b9dfc3c66483640f4f5364646f41d37159))
* **ui:** correctly paginate request list ([67fbb40](https://github.com/sct/overseerr/commit/67fbb401ac6ba05e58b8dfefd5954b28316254f2))
* **ui:** correctly show quota display on tv request modal when only series quota is set ([3f1f85a](https://github.com/sct/overseerr/commit/3f1f85a80edfd2a4e9627162ff29ca6bcf2d8583))
* **ui:** display asterisk indicator on required field labels ([#1236](https://github.com/sct/overseerr/issues/1236)) ([380d361](https://github.com/sct/overseerr/commit/380d36119f19a20ad67f79b3fb5db4036a093cac))
* **ui:** do not check isValid on Sonarr/Radarr modals for the test button ([0974a4c](https://github.com/sct/overseerr/commit/0974a4c971358b7a64668f9a63fc356234a656c9))
* **ui:** do not require numeric value in FormattedRelativeTime ([#1234](https://github.com/sct/overseerr/issues/1234)) ([3642b1e](https://github.com/sct/overseerr/commit/3642b1e84a20fef72428b3e240c86d35be8be8a2))
* **ui:** filter out server options that do not match request type (non-4K or 4K) ([#1183](https://github.com/sct/overseerr/issues/1183)) ([28a6a70](https://github.com/sct/overseerr/commit/28a6a70e1ecc125f4cf4900e599ad0d4d7b55e3b))
* **ui:** fix label formatting in general user settings ([#1275](https://github.com/sct/overseerr/issues/1275)) ([8546b0e](https://github.com/sct/overseerr/commit/8546b0ef53d232256b62cf08466e692a6971c16b))
* **ui:** fix regex matching when parsing label from logs ([#1231](https://github.com/sct/overseerr/issues/1231)) ([4a00617](https://github.com/sct/overseerr/commit/4a00617fe47064ea50f95a02f29832a419ab13a3))
* **ui:** gracefully handle lengthy titles & long words in overviews ([#1338](https://github.com/sct/overseerr/issues/1338)) ([d8bcb99](https://github.com/sct/overseerr/commit/d8bcb99b2fd3b24a5119ba5ff213a640425ff553))
* **ui:** hide 'show details' button if there are no additional details ([#1254](https://github.com/sct/overseerr/issues/1254)) ([6210f12](https://github.com/sct/overseerr/commit/6210f12e8e9f593d629d22278d78310482ca0cfa))
* **ui:** restore saved states of quota override checkboxes ([#1282](https://github.com/sct/overseerr/issues/1282)) ([2059fc1](https://github.com/sct/overseerr/commit/2059fc1cd4d48c7d80e761b7d41b7ec122d82769))
* **ui:** sort regions & languages by their localized names rather than their TMDb English names ([#1157](https://github.com/sct/overseerr/issues/1157)) ([d76bf32](https://github.com/sct/overseerr/commit/d76bf32c9dcc83ebd0bae979726b1456a9028d8b))
* **ui:** tweak request list design ([#1201](https://github.com/sct/overseerr/issues/1201)) ([d226fc7](https://github.com/sct/overseerr/commit/d226fc79b8d5f1263d4b80a7a1772074020ec94f))
* **ui:** use appropriate cursor type for disabled UI elements ([#1184](https://github.com/sct/overseerr/issues/1184)) ([b767a58](https://github.com/sct/overseerr/commit/b767a58b011cc317a889cb8c2889b3210bec5fae))
* **ui:** use appropriate cursor type for readonly input fields ([#1208](https://github.com/sct/overseerr/issues/1208)) ([9ec2c46](https://github.com/sct/overseerr/commit/9ec2c468cbbcbd41b94bbf9f3cfeb43eed09f36e))
* **ui:** use correct colspan for 'No results.' message in Settings > Logs ([#1325](https://github.com/sct/overseerr/issues/1325)) ([5c135c9](https://github.com/sct/overseerr/commit/5c135c9974ebfcbdb434dafd459d1035624df6ed))
* fetch localized person details from TMDb ([#1243](https://github.com/sct/overseerr/issues/1243)) ([1d7a938](https://github.com/sct/overseerr/commit/1d7a938ef8b0b8c20fda5024121de2a217ef4127))
### Features
* **frontend:** add apple splash for pwa ([232def9](https://github.com/sct/overseerr/commit/232def972b9156afcbd83592708dbf8b5866ee24))
* **frontend:** add apple tv+ to network slider ([3dc27ff](https://github.com/sct/overseerr/commit/3dc27ffd9bb054e6cda58872939dbc352877d184)), closes [#1219](https://github.com/sct/overseerr/issues/1219)
* **frontend:** allow selecting multiple original languages ([a908c07](https://github.com/sct/overseerr/commit/a908c07670532b0ca7f766065bb4653ce2376e6f))
* **lang:** add Catalan to language picker ([#1309](https://github.com/sct/overseerr/issues/1309)) ([77911c0](https://github.com/sct/overseerr/commit/77911c03e98aa3c2c6c062a01c22b030704309c2))
* **lang:** translations update from Weblate ([#1178](https://github.com/sct/overseerr/issues/1178)) ([3c89010](https://github.com/sct/overseerr/commit/3c89010629bc16f225f1d3936abe9f4e47a0d7c7))
* **lang:** translations update from Weblate ([#1224](https://github.com/sct/overseerr/issues/1224)) ([c1975b3](https://github.com/sct/overseerr/commit/c1975b33f1115a95068be000b7f479a401f0f0ae))
* **lang:** translations update from Weblate ([#1237](https://github.com/sct/overseerr/issues/1237)) ([dabd32a](https://github.com/sct/overseerr/commit/dabd32a18b42980059c7a7a7450514ca827a5d3b))
* **lang:** translations update from Weblate ([#1256](https://github.com/sct/overseerr/issues/1256)) ([e9b1a9e](https://github.com/sct/overseerr/commit/e9b1a9e80e6b8285fa451a8551c5832a850c1746))
* **lang:** translations update from Weblate ([#1281](https://github.com/sct/overseerr/issues/1281)) ([bec1d3d](https://github.com/sct/overseerr/commit/bec1d3dde834b9a50e24c5894c362e5982ff3bd5))
* **lang:** translations update from Weblate ([#1305](https://github.com/sct/overseerr/issues/1305)) ([1b129c0](https://github.com/sct/overseerr/commit/1b129c0b3863ea3c5ad34c66b3ace5d09cd4e391))
* **lang:** translations update from Weblate ([#1313](https://github.com/sct/overseerr/issues/1313)) ([18ce349](https://github.com/sct/overseerr/commit/18ce349faac6ee560b9c92374039954f2365a8d1))
* **logs:** add copy to clipboard button to logs page ([e2b8745](https://github.com/sct/overseerr/commit/e2b8745fdc192f3d49872625652184005a760885))
* **notif:** include requested season numbers in notifications ([#1211](https://github.com/sct/overseerr/issues/1211)) ([4ee78ab](https://github.com/sct/overseerr/commit/4ee78ab2fe0359df6baa58f0986687f05a8392a2))
* **ui:** add movie/series genre list pages ([#1194](https://github.com/sct/overseerr/issues/1194)) ([6f1a31d](https://github.com/sct/overseerr/commit/6f1a31de473d1a25bc77e0961a52b07050b64c51))
* **ui:** add option to only allow complete series requests ([#1164](https://github.com/sct/overseerr/issues/1164)) ([36c00fd](https://github.com/sct/overseerr/commit/36c00fde273799a56ec42ce6177ff44fed0904c3))
* **ui:** Add user requests page ([#936](https://github.com/sct/overseerr/issues/936)) ([a9461f7](https://github.com/sct/overseerr/commit/a9461f760d8112f2ae16183e796f706d3392f8ec))
* **ui:** allow any value 1-100 for quota limit/days ([#1337](https://github.com/sct/overseerr/issues/1337)) ([f4bed9a](https://github.com/sct/overseerr/commit/f4bed9a63b6b856ebedca9eb7662cd00038d7f7c))
* **ui:** display movie/series original title ([#1240](https://github.com/sct/overseerr/issues/1240)) ([7230915](https://github.com/sct/overseerr/commit/723091509414465e98d870b3dc943f41b9ac590d))
* **ui:** experimental status bar style change for ios pwa app ([958cdf9](https://github.com/sct/overseerr/commit/958cdf98fd1cb7c1bdb33aebb6c061750e9ab331))
* **ui:** store sort order and page size of userlist in localstorage ([#1262](https://github.com/sct/overseerr/issues/1262)) ([f5f8269](https://github.com/sct/overseerr/commit/f5f8269cd28ee792120060f4f38ef09d571fb8d5))
* add option to cache images locally ([#1213](https://github.com/sct/overseerr/issues/1213)) ([0ca3d43](https://github.com/sct/overseerr/commit/0ca3d4374942b54b59a19d017ab4ae14ba7019c1))
* **ui:** remove local image cache option from settings page ([911faef](https://github.com/sct/overseerr/commit/911faeff562b737a2d18a395fcd90bf354af0cc4))
* remove experimental tailwind jit compiler until title card hover is fixed ([1df67ba](https://github.com/sct/overseerr/commit/1df67baf9e7cdabc4045a0c115735797e8081bca))
* **deps:** revert react-intl to 5.13.5 ([e16277c](https://github.com/sct/overseerr/commit/e16277c07d58ddbb749f4a60bc05924f4a5af146))
* do not allow editing of user settings under certain conditions ([#1168](https://github.com/sct/overseerr/issues/1168)) ([001dcd3](https://github.com/sct/overseerr/commit/001dcd328c8d3b1c417fd7c7ee2aa20183b08eef))
* **frontend:** check for ID instead of email after initial setup Plex login ([#1097](https://github.com/sct/overseerr/issues/1097)) ([778dda6](https://github.com/sct/overseerr/commit/778dda67d54df87347dd79577ef1bdc88d3c1d3f))
* **frontend:** check if swr is validating to determine if we should fetch new data ([e5f5bdb](https://github.com/sct/overseerr/commit/e5f5bdb95c62eba31a3321a7457d354f0226bf85)), closes [#719](https://github.com/sct/overseerr/issues/719)
* **frontend:** never hide available content in search results ([d48edeb](https://github.com/sct/overseerr/commit/d48edeb5a9bd8e2edce8bca0fea50e300bb7a1ae))
* **lang:** edit new Telegram-related strings to conform to style guide ([#1093](https://github.com/sct/overseerr/issues/1093)) ([bdf67e7](https://github.com/sct/overseerr/commit/bdf67e732b6c77cbae768a25edfc9a663ef0108b))
* **notif:** loosen input validation on Pushover settings ([#1166](https://github.com/sct/overseerr/issues/1166)) ([3148d31](https://github.com/sct/overseerr/commit/3148d312141248653c5d1e42cd2882a67a339163))
* **notif:** set URL for Discord embeds rather than adding a field for the link ([#1167](https://github.com/sct/overseerr/issues/1167)) ([0bd0912](https://github.com/sct/overseerr/commit/0bd0912613f0db24bd0da4ec956b5119133e35d4))
* correctly send auto-approval notifictions for series ([8634081](https://github.com/sct/overseerr/commit/8634081c869a2078793ecf06b1b7e249bba0a2f8))
* **lang:** fix singular form of season count ([#1080](https://github.com/sct/overseerr/issues/1080)) ([b57645d](https://github.com/sct/overseerr/commit/b57645d382361c856281e7a74295afe16c5390f2))
* **requests:** add plex url to request item ([#1088](https://github.com/sct/overseerr/issues/1088)) ([420038d](https://github.com/sct/overseerr/commit/420038d5ffdd4070df03e5c5cb6ef8d6208fddb5))
* **sonarr:** correctly search when updating existing sonarr series ([ed0a7fb](https://github.com/sct/overseerr/commit/ed0a7fbdf5122a26fa936e83b76a97c55781782d)), closes [#588](https://github.com/sct/overseerr/issues/588)
* **ui:** add alt prop to studio/network logos & fix blinking text cursor ([#1095](https://github.com/sct/overseerr/issues/1095)) ([0c4637f](https://github.com/sct/overseerr/commit/0c4637f779d8904037b9cbd5fe9166cf05a891c5))
* **ui:** add link to poster image on request items ([7289872](https://github.com/sct/overseerr/commit/7289872937d5bb94d027424760ee1ceb94095604))
* **ui:** correct language usage re: "sync" vs. "scan" ([#1079](https://github.com/sct/overseerr/issues/1079)) ([e98f2b9](https://github.com/sct/overseerr/commit/e98f2b96058fb9c5af77be2e8a1bd07fb8fcca06))
* **ui:** display "Season" vs. "Seasons" as appropriate, and fix request block "Seasons" formatting ([#1127](https://github.com/sct/overseerr/issues/1127)) ([45886cc](https://github.com/sct/overseerr/commit/45886ccef1bee57dc555060a491834567e45b59c))
* **ui:** request list button sizes ([#1152](https://github.com/sct/overseerr/issues/1152)) ([fc73592](https://github.com/sct/overseerr/commit/fc73592b69c38191f91a68a020868b8e5ec2e2e2))
* fix language filter link on movie detail pages ([#1142](https://github.com/sct/overseerr/issues/1142)) ([60d453b](https://github.com/sct/overseerr/commit/60d453b0bbba5e2060f72f40d1dde85ec6b05af4))
* remove language/region filtering on studio/network results ([#1129](https://github.com/sct/overseerr/issues/1129)) ([109aca8](https://github.com/sct/overseerr/commit/109aca8229dc7b81cac314d84591f1c04c12ac2e))
* **api:** check correct permissions for auto approve when requests are created ([3c1a72b](https://github.com/sct/overseerr/commit/3c1a72b038fd178b4be4dc082cd1496474148d7e))
* **ui:** don't show "Password" user settings tab if current user lacks perms to modify the password ([#1063](https://github.com/sct/overseerr/issues/1063)) ([b146d11](https://github.com/sct/overseerr/commit/b146d11e2ffecedae76472b0491a4662ca4a4a4e))
* **ui:** fix Radarr logo alignment ([#1068](https://github.com/sct/overseerr/issues/1068)) ([0fa005a](https://github.com/sct/overseerr/commit/0fa005a99cd868b5a235ae9ce65b4c64b05d0f47))
* **ui:** fix request list UI behavior when season list is too long ([#1106](https://github.com/sct/overseerr/issues/1106)) ([8507691](https://github.com/sct/overseerr/commit/85076919c6ccbf052699b7d5f4ba8b6e5e5af74d))
* **ui:** improve responsive design on new request list UI ([#1105](https://github.com/sct/overseerr/issues/1105)) ([1f8b03f](https://github.com/sct/overseerr/commit/1f8b03ff6f67ce76051667de05166da54ed3dc89))
* **ui:** list all movie studios instead of just the first result ([#1110](https://github.com/sct/overseerr/issues/1110)) ([239202d](https://github.com/sct/overseerr/commit/239202d9c11f27410b0fa084bcc4c824b7136081))
* add correct permission checks to modifying user password/permissions ([ddfc5e6](https://github.com/sct/overseerr/commit/ddfc5e6aa8fc636931f495d6f23d56367466e3b5))
### Features
* add tagline, episode runtime, genres list to media details & clean/refactor CSS into globals ([#1160](https://github.com/sct/overseerr/issues/1160)) ([2f2e002](https://github.com/sct/overseerr/commit/2f2e00237d43bdab85bfadc3c4f2fbcdde4c2e90))
* **docker:** add tini to docker image ([#1017](https://github.com/sct/overseerr/issues/1017)) ([1629d02](https://github.com/sct/overseerr/commit/1629d02f3d8368bfd5f6fed05382974ae6fce51f))
* **email:** add pgp support ([#1138](https://github.com/sct/overseerr/issues/1138)) ([9e5adeb](https://github.com/sct/overseerr/commit/9e5adeb610bdc4800ff536412d0ae8a11fb4338d))
* **frontend:** add loading bar indicator ([#1170](https://github.com/sct/overseerr/issues/1170)) ([3d6b343](https://github.com/sct/overseerr/commit/3d6b3434138fec49c58f2bf74f781d5e2fc2911f))
* **notif:** include poster image in Telegram notifications ([#1112](https://github.com/sct/overseerr/issues/1112)) ([48387e5](https://github.com/sct/overseerr/commit/48387e5b2f26c0c33acd436c6e1cf902d6c32101))
* **scan:** add support for new plex tv agent ([#1144](https://github.com/sct/overseerr/issues/1144)) ([a51d2a2](https://github.com/sct/overseerr/commit/a51d2a24d51d092a0c6da608e3322f19a37c2d28))
* **ui:** add user ID to profile header ([6e95c8b](https://github.com/sct/overseerr/commit/6e95c8b7a10e3467bfd2c3df84ccf886fe01ca5c))
* add genre/studio/network view to Discover results ([#1067](https://github.com/sct/overseerr/issues/1067)) ([f28112f](https://github.com/sct/overseerr/commit/f28112f057df2589f31ae0d0b14e8b50e479fdb7))
* add studio/network sliders to discover ([1c6914f](https://github.com/sct/overseerr/commit/1c6914f5ce5c0d171c4609813915b50233a8e3ad))
* **telegram:** add support for individual chat notifications ([#1027](https://github.com/sct/overseerr/issues/1027)) ([f6d00d8](https://github.com/sct/overseerr/commit/f6d00d8d1559879189f83739193c6e2acafde51d))
* **ui:** display "Owner" role instead of "Admin" for user ID 1 ([#1050](https://github.com/sct/overseerr/issues/1050)) ([1b55d2d](https://github.com/sct/overseerr/commit/1b55d2dfbc06d900e7370a4ddfd81789a25bf00c))
* **ui:** display season count on TV details page ([#1078](https://github.com/sct/overseerr/issues/1078)) ([4365231](https://github.com/sct/overseerr/commit/436523139e8f1594c352b17032734b4498d3994f))
* **ui:** in Settings > Services, make Radarr/Sonarr server names and logos clickable links ([#1008](https://github.com/sct/overseerr/issues/1008)) ([6a1e389](https://github.com/sct/overseerr/commit/6a1e3891aa5f84b6adb1e475a6658a8cd4e34c22))
* **ui:** request list redesign ([#1099](https://github.com/sct/overseerr/issues/1099)) ([cd21865](https://github.com/sct/overseerr/commit/cd21865c4d5be00c13c372e0b7a058f61ec855a2))
* **notif:** escape application title in Telegram notifications ([#1012](https://github.com/sct/overseerr/issues/1012)) ([5560abf](https://github.com/sct/overseerr/commit/5560abf459b0350ff30b5e71d4208418fc8f3b3e))
* **notif:** fixed typo in pushover hint ([#1029](https://github.com/sct/overseerr/issues/1029)) ([e9f2fe9](https://github.com/sct/overseerr/commit/e9f2fe910d72fa41bc27673ed43291211c3cac65))
* **notifications:** correctly send tv auto approval notifications ([537850f](https://github.com/sct/overseerr/commit/537850f414a88df24c78794a2fd68e1e24ff73d1)), closes [#1041](https://github.com/sct/overseerr/issues/1041)
* **plex-sync:** no longer incorrectly sets 4k availability when there isnt any ([3f9a116](https://github.com/sct/overseerr/commit/3f9a116b17d78eeb04f0f125a4f3af6f907c83dd)), closes [#990](https://github.com/sct/overseerr/issues/990)
* **ui:** for server default options, display "All" region/language option instead of empty string ([#1042](https://github.com/sct/overseerr/issues/1042)) ([3fed26c](https://github.com/sct/overseerr/commit/3fed26cfbe74cb662ca531fd37b69f159a051ac1))
* **ui:** show translated string on sonarr sucesss/failure toast messages ([#1035](https://github.com/sct/overseerr/issues/1035)) ([eefcbcd](https://github.com/sct/overseerr/commit/eefcbcd3ddfa5258ee24dbbbd79de5bf50310f27))
* **ui:** use country-flag-icons instead of country-flag-emoji for RegionSelector ([#1011](https://github.com/sct/overseerr/issues/1011)) ([abcd7c9](https://github.com/sct/overseerr/commit/abcd7c997584c1310bd8b313ac38f30e335af8d7))
* add missing default value for settings context ([084917f](https://github.com/sct/overseerr/commit/084917f02d399e2d29bb9927e033c2e6533f586c))
* added missing language default for ssr context defaults ([9ce88ab](https://github.com/sct/overseerr/commit/9ce88abcc85d744d77172cd2357fdb4ff60dc5e4))
* allow users to override language/region settings ([69294a7](https://github.com/sct/overseerr/commit/69294a7c4c5bbe55c5cd276786cdfd48ddbff889)), closes [#1013](https://github.com/sct/overseerr/issues/1013)
* **api:** add isAuthenticated middleware to base user route ([8a27c70](https://github.com/sct/overseerr/commit/8a27c7062599ea23dca115e6e6e95a594e1b219a))
* **api:** sort users requests by most recent ([1798383](https://github.com/sct/overseerr/commit/17983837fc10661a59d29fc1531530fca0d77825))
* **api:** Use POST instead of GET for API endpoints that mutate state ([#877](https://github.com/sct/overseerr/issues/877)) ([ff0b5ed](https://github.com/sct/overseerr/commit/ff0b5ed44132cc5a0cd178035796d042ba735a8d))
* **auth:** handle sign-in attempts from emails with no password ([#933](https://github.com/sct/overseerr/issues/933)) ([5e37a96](https://github.com/sct/overseerr/commit/5e37a96bc017471f8dc4cbdd57f2e8c3568bd97f))
* **frontend:** changed plex, request, and cog buttons to align properly on smaller mobile UIs ([#928](https://github.com/sct/overseerr/issues/928)) ([f1c3358](https://github.com/sct/overseerr/commit/f1c335815f2f17465cdd36ceb223e78a58149b3b))
* **frontend:** check for id instead of email after logging in ([c4af4c4](https://github.com/sct/overseerr/commit/c4af4c42ab00f1a63a2f5326c9cd8b26c19f4f14))
* **frontend:** Do not allow user w/ ID 1 to disable 'Admin' permission ([#965](https://github.com/sct/overseerr/issues/965)) ([77b2d9e](https://github.com/sct/overseerr/commit/77b2d9ea22a2f70cff58ac9421f3f6231bc93059))
* **frontend:** handle empty array of media attributes ([#922](https://github.com/sct/overseerr/issues/922)) ([04fa9f7](https://github.com/sct/overseerr/commit/04fa9f79e2ec90082b3fa15590dd170f7d68ad52))
* **frontend:** request and cog button would be misaligned without play on plex/watch trailer button ([#956](https://github.com/sct/overseerr/issues/956)) ([e28dfad](https://github.com/sct/overseerr/commit/e28dfadaf57d47887013c31dc5006332473156e3))
* **frontend:** Update AdvancedRequester to reflect new /user API response ([#970](https://github.com/sct/overseerr/issues/970)) ([b4bac6a](https://github.com/sct/overseerr/commit/b4bac6a9157119a4f234933245944e133c127bd0))
* **frontend:** use region settings instead of hardcoded 'US' value for movie/TV ratings ([#1006](https://github.com/sct/overseerr/issues/1006)) ([6ecd202](https://github.com/sct/overseerr/commit/6ecd202607cb48d559440da810ecc585e740542b))
* **lang:** formatMessage should not use an object spread ([8a7fa00](https://github.com/sct/overseerr/commit/8a7fa00164fd5c5501da525baa29be97bac7e7c4))
* **lang:** Remove unused strings and correct spelling of 'canceling'/'canceled' ([#981](https://github.com/sct/overseerr/issues/981)) ([5b64655](https://github.com/sct/overseerr/commit/5b646557765d1ad75e44e1c0e60e0291313c7746))
* **login:** fix the gap when 'use your overseer account' was selected ([#870](https://github.com/sct/overseerr/issues/870)) ([d163e29](https://github.com/sct/overseerr/commit/d163e294599c4bd9bdc0a148db15c8e8541410d8))
* **notif:** Do not HTML-escape email subjects ([#931](https://github.com/sct/overseerr/issues/931)) ([019622a](https://github.com/sct/overseerr/commit/019622aab1b94cc4d71cacbf0dc5cf64b62c8623))
* **notif:** Remove extra newlines from Telegram notifications ([#973](https://github.com/sct/overseerr/issues/973)) ([bbea522](https://github.com/sct/overseerr/commit/bbea52249950eb98a8d3886f2bd7648a7d669bf4))
* **plex:** Check Plex server access on user import ([#955](https://github.com/sct/overseerr/issues/955)) ([bdb3cb2](https://github.com/sct/overseerr/commit/bdb3cb202550e34d8951ac2b5015f97f6a5c1ebf))
* **plex-sync:** get correct Plex metadata for Hama movie items ([#901](https://github.com/sct/overseerr/issues/901)) ([03cecb3](https://github.com/sct/overseerr/commit/03cecb33559e27199c5a174fc86de0c4550fe666)), closes [#898](https://github.com/sct/overseerr/issues/898)
* **requests:** correctly filter requests out for users without view requests permission ([e118501](https://github.com/sct/overseerr/commit/e118501bf1dfa8dada2c57090e62631de620f3dd))
* **requests:** correctly handle when tvdbid is missing ([#891](https://github.com/sct/overseerr/issues/891)) ([e037ba4](https://github.com/sct/overseerr/commit/e037ba48f173c06b0c9c8b03085edf832d770c06))
* **search:** Handle search errors and escape * ([#893](https://github.com/sct/overseerr/issues/893)) ([034968e](https://github.com/sct/overseerr/commit/034968e4370eaea726c94730274349c083856813))
* **services:** update all radarr/sonarr endpoints to use v3 ([da5ca02](https://github.com/sct/overseerr/commit/da5ca02f81fe91070afbda3e1ebc8d869fe39a8f))
* **sonarr:** use qualityProfileId instad of profileId when adding series ([552a7e3](https://github.com/sct/overseerr/commit/552a7e30da5fc2cc0bd43b5aef79a0225c75d233))
* **ui:** add fallback for region display name ([f9c83e1](https://github.com/sct/overseerr/commit/f9c83e14e52a57d6865307b3324a61c04a77a541))
* **ui:** add missing string for default Discover Language & edit string for default Discover Region ([#1004](https://github.com/sct/overseerr/issues/1004)) ([0acad8e](https://github.com/sct/overseerr/commit/0acad8e9fa65a9de6cecac9b6a4a5b2313ba8f06))
* **ui:** Add tip & validation for Discord ID input ([#966](https://github.com/sct/overseerr/issues/966)) ([e70a4ec](https://github.com/sct/overseerr/commit/e70a4ecae613e045977e262fd7f9643f30985ab7))
* **ui:** Automatically disable and uncheck user permissions with unmet requirements ([#941](https://github.com/sct/overseerr/issues/941)) ([c9a150b](https://github.com/sct/overseerr/commit/c9a150b1db2adbb305cf1a448489d7a8c14cf1cb))
* **ui:** change font size in request list/user list dropdowns to prevent zoom on mobile ([fb9c878](https://github.com/sct/overseerr/commit/fb9c878db49c01d13773e8d2f94c93f840be0b82))
* **ui:** Display 4K download status on 4K status badge ([#988](https://github.com/sct/overseerr/issues/988)) ([40b07c3](https://github.com/sct/overseerr/commit/40b07c35d40c03039e4bfa5ed1e73af7e8aa6a7d))
* **ui:** Fix card sizes on person detail pages ([#881](https://github.com/sct/overseerr/issues/881)) ([a3042f8](https://github.com/sct/overseerr/commit/a3042f8e1b05a91d98f48a4aecb08e831a48fc56))
* **ui:** fixed anime language profile typo ([#879](https://github.com/sct/overseerr/issues/879)) ([ee50761](https://github.com/sct/overseerr/commit/ee5076146ef3c5e8baba197a5b397d3c3f575262))
* **ui:** Handle missing movie/series data ([#862](https://github.com/sct/overseerr/issues/862)) ([7c0ddad](https://github.com/sct/overseerr/commit/7c0ddad653393327226a877692f046d8693ddc66))
* **ui:** Notification-related string/UI edits and field validation ([#985](https://github.com/sct/overseerr/issues/985)) ([c88fcb2](https://github.com/sct/overseerr/commit/c88fcb2e2d1c4b84527844a80680c15337626e72))
* **ui:** rename global group class to form-group ([8056187](https://github.com/sct/overseerr/commit/8056187c3c0ea464a8f751aa6347ea1d35c01aac))
* **ui:** Size cards appropriately based on base font size ([#871](https://github.com/sct/overseerr/issues/871)) ([282f28f](https://github.com/sct/overseerr/commit/282f28f2b9d0cc8c9105d01b43d4e1f730320b8b))
* **ui/notif:** Custom application title in password-related emails and UI messages ([#979](https://github.com/sct/overseerr/issues/979)) ([4e2706b](https://github.com/sct/overseerr/commit/4e2706b4211b06f364910c327d84c2ceb45b2fe3))
### Features
* **lang:** translated using Weblate (French) ([#1007](https://github.com/sct/overseerr/issues/1007)) ([970da66](https://github.com/sct/overseerr/commit/970da664b2700b8cd9ad8dce0cbca1d37820eceb))
* **lang:** translations update from Weblate ([#853](https://github.com/sct/overseerr/issues/853)) ([e156acc](https://github.com/sct/overseerr/commit/e156acc1ae2fa86b4441faacc0b58e1e993e0edc))
* **lang:** translations update from Weblate ([#986](https://github.com/sct/overseerr/issues/986)) ([4296765](https://github.com/sct/overseerr/commit/4296765ad61bac09c2317b71b763366d328733e4))
* **regions:** add region/original language setting for filtering Discover ([#732](https://github.com/sct/overseerr/issues/732)) ([#942](https://github.com/sct/overseerr/issues/942)) ([b557c06](https://github.com/sct/overseerr/commit/b557c06b0a78f5df5f64a05dc1e4511dae72df4f))
* **requests:** add language profile support ([#860](https://github.com/sct/overseerr/issues/860)) ([53f6f59](https://github.com/sct/overseerr/commit/53f6f59798fa7e3f95959990a3df555db3c1c51e))
* **ui:** Add 'Available' filter to request list and remove unused MediaRequestStatus.AVAILABLE enum value ([#905](https://github.com/sct/overseerr/issues/905)) ([9757e3a](https://github.com/sct/overseerr/commit/9757e3ae0c572fb46177e25154b29e0ceced665f))
* **ui:** Add 'Page Size' setting for request/user list pages ([#957](https://github.com/sct/overseerr/issues/957)) ([621db89](https://github.com/sct/overseerr/commit/621db893281f0280fe773ac7dbdc44434895242c))
* **ui:** Add separate permissions for 4K auto approval ([#908](https://github.com/sct/overseerr/issues/908)) ([53b7425](https://github.com/sct/overseerr/commit/53b7425f6711e250935e7bb024c38ff6c62e07d9))
* **ui:** Add sort options to user list ([#913](https://github.com/sct/overseerr/issues/913)) ([ef5d019](https://github.com/sct/overseerr/commit/ef5d019c18d7f6cdbbb1e1b7f8ff7816ed9b117b))
* **ui:** Add support for requesting collections in 4K ([#968](https://github.com/sct/overseerr/issues/968)) ([139341b](https://github.com/sct/overseerr/commit/139341b0434b41e7c31af36baacd8d65566a6a0c))
* user profile/settings pages ([#958](https://github.com/sct/overseerr/issues/958)) ([bbb683e](https://github.com/sct/overseerr/commit/bbb683e637386ad8bbeb44dca97aac9cdaf11349))
* **ui:** added content ratings for tv shows and movie ratings ([#878](https://github.com/sct/overseerr/issues/878)) ([c8b2a57](https://github.com/sct/overseerr/commit/c8b2a57721a51adcc7f90ec1acb48b127991d467))
All help is welcome and greatly appreciated. If you would like to contribute to the project the steps below can get you started:
All help is welcome and greatly appreciated! If you would like to contribute to the project, the following instructions should get you started...
## Development
### Tools Required
- HTML/Typescript/Javascript editor of choice. ([VSCode](https://code.visualstudio.com/) is recommended. Upon opening the project, a few extensions will be automatically recommended for install.)
- [NodeJS](https://nodejs.org/en/download/) (Node 12.x.x or higher)
- HTML/Typescript/Javascript editor
- [VSCode](https://code.visualstudio.com/) is recommended. Upon opening the project, a few extensions will be automatically recommended for install.
- [NodeJS](https://nodejs.org/en/download/) (Node 14.x or higher)
- [Yarn](https://yarnpkg.com/)
- [Git](https://git-scm.com/downloads)
### Getting Started
1. [Fork](https://help.github.com/articles/fork-a-repo/) the repository to your own GitHub account and then [clone](https://help.github.com/articles/cloning-a-repository/) it to your local device.
```
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:
- Its recommended to name the branch something relevant to the feature or fix you are working on.
- An example of this would be `fix-title-cards` or `feature-new-system`.
- Bad examples would be `patch` or `bug`.
- It is recommended to give your branch a meaningful name, relevant to the feature or fix you are working on.
- Good examples:
- `docs-docker`
- `feature-new-system`
- `fix-title-cards`
- Bad examples:
- `bug`
- `docs`
- `feature`
- `fix`
- `patch`
4. Run development environment
4. Run the development environment:
```
```bash
yarn
yarn dev
```
- Alternatively you can run using [Docker](https://www.docker.com/) with `docker-compose up -d`. This method does not require installing NodeJS or Yarn on your machine directly.
- Alternatively, you can use [Docker](https://www.docker.com/) with `docker-compose up -d`. This method does not require installing NodeJS or Yarn on your machine directly.
5. Create your patch and run appropriate tests.
5. Create your patch and test your changes.
6. Follow the [guidelines](#contributing-code).
7. Should you need to update your fork you can do so by rebasing from upstream.
```
git fetch upstream
git rebase upstream/develop
git push origin BRANCH_NAME -f
```
- Be sure to follow both the [code](#contributing-code) and [UI text](#ui-text-style) guidelines.
- Should you need to update your fork, you can do so by rebasing from `upstream`:
```bash
git fetch upstream
git rebase upstream/develop
git push origin BRANCH_NAME -f
```
### Contributing Code
- If you are taking on an existing bug or feature ticket, please comment on the [GitHub Issue](https://github.com/sct/overseerr/issues) to avoid multiple people working on the same thing.
- If you are taking on an existing bug or feature ticket, please comment on the [issue](https://github.com/sct/overseerr/issues) to avoid multiple people working on the same thing.
- All commits **must** follow [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/)
- It is okay if you squash your PR down to be a single commit that fits this standard.
- PRs with commits not following this standard will not be merged.
- Please make meaningful commits, or squash them
- Always rebase your commit to the latest `develop` branch. Do not merge develop into your branch.
- It is your responsibility to keep your branch uptodate. It will not be merged unless its rebased off the latest develop branch.
- You can create a Draft pull request early to get feedback on your work.
- Your code must be formatted correctly or the tests will fail.
- We use Prettier to format our codebase. It should auto run with a git hook, but its recommended to have a Prettier extension installed in your editor and have it format on save.
- If you have questions or need help, you can reach out in [GitHub Discussions](https://github.com/sct/overseerr/discussions) or in our [Discord](https://discord.gg/PkCWJSeCk7).
- Only open pull requests to `develop`. Never `master`. Any PR's opened to master will be closed.
- Pull requests with commits not following this standard will **not** be merged.
- Please make meaningful commits, or squash them prior to opening a pull request.
- Do not squash commits once people have begun reviewing your changes.
- Always rebase your commit to the latest `develop` branch. Do **not** merge `develop` into your branch.
- It is your responsibility to keep your branch up-to-date. Your work will **not** be merged unless it is rebased off the latest `develop` branch.
- You can create a "draft" pull request early to get feedback on your work.
- Your code **must** be formatted correctly, or the tests will fail.
- We use Prettier to format our codebase. It should automatically run with a Git hook, but it is recommended to have the Prettier extension installed in your editor and format on save.
- If you have questions or need help, you can reach out via [Discussions](https://github.com/sct/overseerr/discussions) or our [Discord server](https://discord.gg/overseerr).
- Only open pull requests to `develop`, never `master`! Any pull requests opened to `master` will be closed.
### UI Text Style
When adding new UI text, please try to adhere to the following guidelines:
1. Be concise and clear, and use as few words as possible to make your point.
2. Use the Oxford comma where appropriate.
3. Use the appropriate Unicode characters for ellipses, arrows, and other special characters/symbols.
4. Capitalize proper nouns, such as Plex, Radarr, Sonarr, Telegram, Slack, Pushover, etc. Be sure to also use the official capitalization for any abbreviations; e.g., IMDb has a lowercase 'b', whereas TMDB and TheTVDB have a capital 'B'.
5. Title case headings, button text, and form labels. Note that verbs such as "is" should be capitalized, whereas prepositions like "from" should be lowercase (unless as the first or last word of the string, in which case they are also capitalized).
6. Capitalize the first word in validation error messages, dropdowns, and form "tips." These strings should not end in punctuation.
7. Ensure that toast notification strings are complete sentences ending in punctuation.
8. If an additional description or "tip" is required for a form field, it should be styled using the global CSS class `label-tip`.
9. In full sentences, abbreviations like "info" or "auto" should not be used in place of full words, unless referencing the name/label of a specific setting or option which has an abbreviation in its name.
10. Do your best to check for spelling errors and grammatical mistakes.
11. Do not misspell "Overseerr."
## Translation
We use [Weblate](https://hosted.weblate.org/engage/overseerr/) for our translations so please feel free to contribute to localizing Overseerr!
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/sct/overseerr/issues/new/choose).
**Overseerr** is a free and open source software application for managing requests for your media library. It integrates with your existing services such as **[Sonarr](https://sonarr.tv/)**, **[Radarr](https://radarr.video/)** and **[Plex](https://www.plex.tv/)**!
**Overseerr** is a free and open source software application for managing requests for your media library. It integrates with your existing services, such as **[Sonarr](https://sonarr.tv/)**, **[Radarr](https://radarr.video/)**, and **[Plex](https://www.plex.tv/)**!
## Current Features
- Full Plex integration. Login and manage user access with Plex!
- Easy integration with your existing services. Currently Overseerr supports Sonarr and Radarr. More to come!
- Plex libraries sync to know what titles you already have.
- Complex request system allowing users to request individual seasons or movies in a friendly, easytouse UI.
- Full Plex integration. Authenticate and manage user access with Plex!
- Easy integration with your existing services. Currently, Overseerr supports Sonarr and Radarr. More to come!
- 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.
- Incredibly simple request management UI. Don't dig through the app to simply approve recent requests!
- Granular permission system.
- Support for various notification agents.
- Mobile-friendly design, for when you need to approve requests on the go!
## In Development
- User profiles.
- User settings page (to give users the ability to modify their Overseerr experience to their liking).
- Local user system (for those who don't use Plex).
## Planned Features
- More notification types.
- Issues system. This will allow users to report issues with content on your media server.
- And a ton more! Check out our [issue tracker](https://github.com/sct/overseerr/issues) to see what features people have already requested.
With more features on the way! Check out our [issue tracker](https://github.com/sct/overseerr/issues) to see the features which have already been requested.
## Getting Started
@@ -50,24 +36,6 @@ Check out our documentation for instructions on how to install and run Overseerr
Currently, Overseerr is primarily distributed as Docker images. If you have Docker, you can run Overseerr with:
```
docker run -d \
-e LOG_LEVEL=info \
-e TZ=Asia/Tokyo \
-p 5055:5055 \
-v /path/to/appdata/config:/app/config \
--restart unless-stopped \
sctx/overseerr
```
After running Overseerr for the first time, configure it by visiting the web UI at http://[address]:5055 and completing the setup steps.
⚠️ Overseerr is currently under very heavy, rapid development and things are likely to break often. We need all the help we can get to find bugs and get them fixed to hit a more stable release. If you would like to help test the bleeding edge, please use the `sctx/overseerr:develop` image instead! ⚠️
## Preview
<imgsrc="./public/preview.jpg">
@@ -75,7 +43,7 @@ After running Overseerr for the first time, configure it by visiting the web UI
## Support
- Check out the [Overseerr Documentation](https://docs.overseerr.dev/) before asking for help. Your question might already be in the [FAQ](https://docs.overseerr.dev/support/faq).
- You can get support on [Discord](https://discord.gg/PkCWJSeCk7).
- You can get support on [Discord](https://discord.gg/overseerr).
- You can ask questions in the Help category of our [GitHub Discussions](https://github.com/sct/overseerr/discussions).
- Bug reports and feature requests can be submitted via [GitHub Issues](https://github.com/sct/overseerr/issues).
@@ -83,19 +51,19 @@ After running Overseerr for the first time, configure it by visiting the web UI
Our documentation is built on every commit and hosted at https://api-docs.overseerr.dev
Also, you can access the API docs by running Overseerr locally and visiting http://localhost:5055/api-docs
You can also access the API documentation from your local Overseerr install at http://localhost:5055/api-docs
## Community
You can ask questions, share ideas, and more in [GitHub Discussions](https://github.com/sct/overseerr/discussions).
If you would like to chat with community members you can join the [Overseerr Discord](https://discord.gg/PkCWJSeCk7).
If you would like to chat with other members of our growing community, [join the Overseerr Discord server](https://discord.gg/overseerr)!
Our [Code of Conduct](https://github.com/sct/overseerr/blob/develop/CODE_OF_CONDUCT.md) applies to all Overseerr community channels.
## Contributing
You can help build Overseerr too! Check out our [Contribution Guide](https://github.com/sct/overseerr/blob/develop/CONTRIBUTING.md) to get started.
You can help improve Overseerr too! Check out our [Contribution Guide](https://github.com/sct/overseerr/blob/develop/CONTRIBUTING.md) to get started.
## Contributors ✨
@@ -105,48 +73,131 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
@@ -19,4 +19,6 @@ The primary motivation for starting this project was to have an incredibly perfo
## We need your help!
Overseerr is an ambitious project. We have already poured a lot of work into this, with more coming. We need your valuable feedback and help with finding bugs. Also, being that this is an open-source project, anyone is welcome to contribute. Contribution includes building features, patching bugs, or even translating the application. You can find the contribution guide on our GitHub.
Overseerr is an ambitious project. We have already poured a lot of work into this, and have a lot more to do. We need your valuable feedback and help to find and fix bugs. Also, with Overseerr being an open-source project, anyone is welcome to contribute. Contribution includes building new features, patching bugs, translating the application, or even just writing documentation.
If you would like to contribute, please be sure to review our [contribution guidelines](https://github.com/sct/overseerr/blob/develop/CONTRIBUTING.md).
You can then add a jail using this filter in `jail.local`. Please see the [Fail2ban documetation](https://www.fail2ban.org/wiki/index.php/MANUAL_0_8#Jails) for details on how to configure the jail.
You can then add a jail using this filter in `jail.local`. Please see the [Fail2ban documentation](https://www.fail2ban.org/wiki/index.php/MANUAL_0_8#Jails) for details on how to configure the jail.
Base URLs cannot be configured in Overseerr. With this limitation, only subdomain configurations are supported.
{% endhint %}
## LE/SWAG
### Subdomain
A sample is bundled in SWAG. This page is still the only source of truth, so the sample is not guaranteed to be up to date. If you catch an inconsistency, report it to the linuxserver team, or do a pull-request against the proxy-confs repository to update the sample.
Rename the sample file `overseerr.subdomain.conf.sample` to `overseerr.subdomain.conf` in the `proxy-confs`folder, or create `overseerr.subdomain.conf` in the same folder with the example below.
Add the labels to the Overseerr service in your `docker-compose` file. A basic example for a `docker-compose` file using Traefik can be found [here](https://doc.traefik.io/traefik/user-guides/docker-compose/basic-example/).
Base URLs cannot be configured in Overseerr. With this limitation, only subdomain configurations are supported.
A Nginx subfolder workaround configuration is provided below, but it is not officially supported.
{% endhint %}
## Nginx
{% tabs %}
{% tab title="SWAG" %}
A sample proxy configuration is included in [SWAG (Secure Web Application Gateway)](https://github.com/linuxserver/docker-swag).
However, this page is still the only source of truth, so the SWAG sample configuration is not guaranteed to be up-to-date. If you find an inconsistency, please [report it to the LinuxServer team](https://github.com/linuxserver/reverse-proxy-confs/issues/new) or [submit a pull request to update it](https://github.com/linuxserver/reverse-proxy-confs/pulls).
To use the bundled configuration file, simply rename `overseerr.subdomain.conf.sample` in the `proxy-confs` folder to `overseerr.subdomain.conf`.
Alternatively, you can create a new file `overseerr.subdomain.conf` in `proxy-confs` with the following configuration:
This Nginx subfolder reverse proxy is an unsupported workaround, and only provided as an example. The filters may stop working when Overseerr is updated.
If you encounter any issues with Overseerr while using this workaround, we may ask you to try to reproduce the problem without the Nginx proxy.
{% endhint %}
Add the following location block to your existing `nginx.conf` file.
```nginx
location^~/overseerr{
set$app'overseerr';
# Remove /overseerr path to pass to the app
rewrite^/overseerr/?(.*)$ /$1break;
proxy_passhttp://127.0.0.1:5055;# NO TRAILING SLASH
**We do not officially support these third-party integrations.** If you run into any issues, please seek help on the appropriate support channels for the integration itself!
{% endhint %}
- [Organizr](https://organizr.app/), a HTPC/homelab services organizer
- [Heimdall](https://github.com/linuxserver/Heimdall), an application dashboard and launcher
- [LunaSea](https://docs.lunasea.app/modules/overseerr), a self-hosted controller for mobile and macOS
- [Requestrr](https://github.com/darkalfx/requestrr/wiki/Configuring-Overseerr), a Discord chatbot
- [Doplarr](https://github.com/kiranshila/Doplarr), a Discord request bot
- [Overseerr Assistant](https://github.com/RemiRigal/Overseerr-Assistant), a browser extension for requesting directly from TMDB and IMDb
- [ha-overseerr](https://github.com/vaparr/ha-overseerr), a custom Home Assistant component
- [OverCLIrr](https://github.com/WillFantom/OverCLIrr), a command-line tool
- [Overseerr Exporter](https://github.com/WillFantom/overseerr-exporter), a Prometheus exporter
Overseerr is currently under very heavy, rapid development and things are likely to break often. We need all the help we can get to find bugs and get them fixed to hit a more stable release. If you would like to help test the bleeding edge, please use the image **`sctx/overseerr:develop`** instead!
**Overseerr is currently in BETA.** If you would like to help test the bleeding edge, please use the image **`sctx/overseerr:develop`**!
{% endhint %}
{% hint style="info" %}
@@ -10,113 +10,181 @@ After running Overseerr for the first time, configure it by visiting the web UI
## Docker
{% hint style="warning" %}
Be sure to replace `/path/to/appdata/config` in the below examples with a valid host directory path. If this volume mount is not configured correctly, your Overseerr settings/data will not be persisted when the container is recreated (e.g., when updating the image or rebooting your machine).
The `TZ` environment variable value should also be set to the [TZ database name](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) of your time zone!
{% endhint %}
{% tabs %}
{% tab title="Basic" %}
{% tab title="Docker CLI" %}
For details on the Docker CLI, please [review the official `docker run` documentation](https://docs.docker.com/engine/reference/run/).
**Installation:**
```bash
docker run -d \
-e LOG_LEVEL=info\
--name overseerr\
-e LOG_LEVEL=debug \
-e TZ=Asia/Tokyo \
-e PORT=5055`#optional` \
-p 5055:5055 \
-v /path/to/appdata/config:/app/config \
--restart unless-stopped \
sctx/overseerr
```
{% endtab %}
To run the container as a specific user/group, you may optionally add `--user=[ user | user:group | uid | uid:gid | user:gid | uid:group ]` to the above command.
Finally, run the container with the same parameters originally used to create the container:
```bash
docker run -d ...
```
{% hint style="info" %}
You may alternatively use a third-party updating mechanism, such as [Watchtower](https://github.com/containrrr/watchtower) or [Ouroboros](https://github.com/pyouroboros/ouroboros), to keep Overseerr up-to-date automatically.
{% endhint %}
{% endtab %}
{% tab title="Manual Update" %}
{% tab title="Docker Compose" %}
```text
# Stop the Overseerr container
docker stop overseerr
For details on how to use Docker Compose, please [review the official Compose documentation](https://docs.docker.com/compose/reference/).
# Remove the Overseerr container
docker rm overseerr
**Installation:**
# Pull the latest update
docker pull sctx/overseerr
Define the `overseerr` service in your `docker-compose.yml` as follows:
# Run the Overseerr container with the same parameters as before
docker run -d ...
```yaml
---
version:'3'
services:
overseerr:
image:sctx/overseerr:latest
container_name:overseerr
environment:
- LOG_LEVEL=debug
- TZ=Asia/Tokyo
- PORT=5055#optional
ports:
- 5055:5055
volumes:
- /path/to/appdata/config:/app/config
restart:unless-stopped
```
Then, start all services defined in the Compose file:
```bash
docker-compose up -d
```
**Updating:**
Pull the latest image:
```bash
docker-compose pull overseerr
```
Then, restart all services defined in the Compose file:
```bash
docker-compose up -d
```
{% endtab %}
{% endtabs %}
{% hint style="info" %}
Use a 3rd party updating mechanism such as [Watchtower](https://github.com/containrrr/watchtower) or [Ouroboros](https://github.com/pyouroboros/ouroboros) to keep Overseerr up-to-date automatically.
{% endhint %}
## Unraid
1. Ensure you have the **Community Applications** plugin installed.
2. Inside the **Communtiy Applications** app store, search for **Overseerr**.
2. Inside the **Community Applications** app store, search for **Overseerr**.
3. Click the **Install Button**.
4. On the following **Add Container** screen, make changes to the **Host Port** and **Host Path 1**\(Appdata\) as needed.
5. Click apply and access "Overseerr" at your `<ServerIP:HostPort>` in a web browser.
## Windows
Please refer to the [docker for windows documentation](https://docs.docker.com/docker-for-windows/) for installation.
Please refer to the [Docker Desktop for Windows user manual](https://docs.docker.com/docker-for-windows/) for details on how to install Docker on Windows. There is no need to install a Linux distro if using named volumes like in the example below.
{% hint style="danger" %}
**WSL2 will need to be installed to prevent DB corruption! Please see** [**Docker Desktop WSL 2 backend**](https://docs.docker.com/docker-for-windows/wsl/) **on how to enable WSL2. The command below will only work with WSL2 installed!**
**WSL2 will need to be installed to prevent DB corruption!** Please see the [Docker Desktop WSL 2 backend documentation](https://docs.docker.com/docker-for-windows/wsl/) for instructions on how to enable WSL2. The commands below will only work with WSL2 installed!
{% endhint %}
First, create a volume to store the configuration data for Overseerr using using either the Docker CLI:
To access the files inside the volume created above, navigate to `\\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes\overseerr-data\_data` using File Explorer.
{% hint style="info" %}
Docker on Windows works differently than it does on Linux; it uses a VM to run a stripped-down Linux and then runs docker within that. The volume mounts are exposed to the docker in this VM via SMB mounts. While this is fine for media, it is unacceptable for the `/app/config` directory because SMB does not support file locking. This will eventually corrupt your database which can lead to slow behavior and crashes. If you must run in docker on Windows, you should put the `/app/config` directory mount inside the VM and not on the Windows host. It's worth noting that this warning also extends to other containers which use SQLite databases.
Docker on Windows works differently than it does on Linux; it runs Docker inside of a stripped-down Linux VM. Volume mounts are exposed to Docker inside this VM via SMB mounts. While this is fine for media, it is unacceptable for the `/app/config` directory because SMB does not support file locking. This will eventually corrupt your database, which can lead to slow behavior and crashes.
**If you must run Docker on Windows, you should put the `/app/config` directory mount inside the VM and not on the Windows host.** (This also applies to other containers with SQLite databases.)
Named volumes, like in the example commands above, are automatically mounted inside the VM. Therefore the warning on the setup about the `/app/config` folder being incorrectly mounted page should be ignored.
{% endhint %}
## Linux
{% hint style="info" %}
The [Overseerr snap](https://snapcraft.io/overseerr) is the only supported linux install method. Currently, the listening port cannot be changed. Port `5055` will need to be available on your host. To install snapd please refer to [Installing snapd](https://snapcraft.io/docs/installing-snapd).
The [Overseerr snap](https://snapcraft.io/overseerr) is the only officially supported Linux install method aside from [Docker](#docker).
Currently, the listening port cannot be changed, so port `5055` will need to be available on your host. To install `snapd`, please refer to the [Snapcraft documentation](https://snapcraft.io/docs/installing-snapd).
{% endhint %}
**To install:**
**Installation:**
```
sudo snap install overseerr
```
{% hint style="danger" %}
To install the development build, add the `--edge` argument to the above command (i.e., `sudo snap install overseerr --edge`). However, note that this version can break any moment. Be prepared to troubleshoot any issues that arise!
{% endhint %}
**Updating:**
Snap will keep Overseerr up-to-date automatically. You can force a refresh by using the following command.
```
```bash
sudo snap refresh
```
**To install the development build:**
```
sudo snap install overseerr --edge
```
{% hint style="danger" %}
This version can break any moment. Be prepared to troubleshoot any issues that arise!
This is now included in the list of [Gentoo repositories](https://overlays.gentoo.org/), so can be easily enabled with `eselect repository`
Efforts will be made to keep uptodate with the latest releases, however, this cannot be guaranteed.
Efforts will be made to keep up-to-date with the latest releases; however, this cannot be guaranteed.
**To enable:**
To enable using `eselect repository`, run:
@@ -163,6 +231,11 @@ This version can break any moment. Be prepared to troubleshoot any issues that a
{% endtab %}
{% tab title="Swizzin" %}
{% hint style="danger" %}
This implementation is not yet merged to master due to missing functionality. You can beta test the limited implementation or follow the status on [the pull request](https://github.com/swizzin/swizzin/pull/567).
{% endhint %}
The installation is not implemented via Docker, but barebones. The latest release version of Overseerr will be used.
Please see the [swizzin documentation](https://swizzin.ltd/applications/overseerr) for more information.
## Before asking for support, make sure you try these things first
* Make sure you have **updated** to the latest version.
* ["Have you tried turning it off and on again?"](https://www.youtube.com/watch?v=nn2FB1P_Mn8)
* **Analyzing** your logs, you just might find the solution yourself!
* **Search** the [Wiki](../), [Installation Guides](../getting-started/installation.md), and [FAQs](faq.md).
* If you have questions, feel free to ask them on [Discord](https://discord.gg/PkCWJSeCk7) \(Please review our [Code of Conduct](https://github.com/sct/overseerr/blob/develop/CODE_OF_CONDUCT.md)\). Please include a link to your logs. See [How can I share my logs?](asking-for-support.md#how-can-i-share-my-logs) for more details.
## What should I include when asking for support?
When you contact support saying something like "it doesn't work" leaves little to go on to figure out what is wrong for you. When contacting support try to include information such as the following:
* What did you try to do? When you describe what you did to reach the state you are in we may notice something you did different from the instructions, or something that your unique setup requires in addition. Some examples of what to provide here:
* What command did you enter?
* What did you click on?
* What settings did you change?
* Provide a step-by-step list of what you tried.
* What do you see? We cannot see your screen so some of the following is necessary for us to know what is going on:
* Did something happen?
* Did something not happen?
* Are there any error messages showing?
* Screenshots can help us see what you are seeing
* The Overseerr logs show exactly what happened and are often critical for identifying issues \(see [How can I share my logs?](asking-for-support.md#how-can-i-share-my-logs) below\).
## How can I share my logs?
First you will need to gather your logs from the install directory.
1. Collect the log file from `<Overseeerr-install-directory>/logs/overseerr.log`
2. Open the log file and **upload the text** by going to [gist.github.com](https://gist.github.com/) and creating a new secret Gist of the contents.
3.**Share the link** with support in [Discord](https://discord.gg/PkCWJSeCk7) by copying the URL of the page.
If you can't find a solution here, please ask on [Discord](https://discord.gg/PkCWJSeCk7). Please do not post questions on the GitHub issues tracker.
If you can't find the solution to your problem here, please read [Need Help?](./need-help.md) and reach out to us on [Discord](https://discord.gg/overseerr).
_Please do not post questions or support requests on the GitHub issue tracker!_
{% endhint %}
## General
### I receive 409 or 400 errors when requesting a movie or tv show!
**A:** Verify your are running radarr and sonarr v3. Overseerr was developed for v3 and is not currently backward compatible.
### How do I keep Overseerr up-to-date?
**A:**Use a 3rdparty updating mechanism such as [Watchtower](https://github.com/containrrr/watchtower) or [Ouroboros](https://github.com/pyouroboros/ouroboros) to keep Overseerr up-to-date automatically.
Use a third-party update mechanism (such as [Watchtower](https://github.com/containrrr/watchtower), [Ouroboros](https://github.com/pyouroboros/ouroboros), or [Pullio](https://hotio.dev/pullio)) to keep Overseerr up-to-date automatically.
### How can I access Overseerr outside my home network?
### How can I access Overseerr outside of my home network?
**A:** The easy and least secure method is to forward an external port \(`5055`\) on your router to the internal port used by Overseerr \(default is TCP `5055`\). Visit [Port Forward](http://portforward.com/) for instructions for your particular router. You will then be able to access Overseerr via `http://EXTERNAL-IP-ADDRESS:5055`.
The easiest but least secure method is to simply forward an external port (e.g., `5055`) on your router to the internal port used by Overseerr (default is TCP `5055`). Visit [Port Forward](http://portforward.com/) for instructions for your particular router. You would then be able to access Overseerr via `http://EXTERNAL-IP-ADDRESS:5055`.
The more advanced and most preferred method \(and more secure if you use SSL\) is to set up a web server with NGINX/Apache, and use a reverse proxy to access Overseerr. You can lookup many guides on the internet to find out how to do this. There are several reverse proxy config examples located [here](../extending-overseerr/reverse-proxy-examples.md).
A more advanced, user-friendly, and secure (if using SSL) method is to set up a web server and use a reverse proxy to access Overseerr. Please refer to our [reverse proxy examples](../extending-overseerr/reverse-proxy.md) for more information.
The most secure method, but also the most inconvenient, is to set up a VPN tunnel to your home server, then you can access Overseerr as if it is on a local network via `http://LOCAL-IP-ADDRESS:5055`.
The most secure method (but also the most inconvenient method) is to set up a VPN tunnel to your home server. You would then be able to access Overseerr as if you were on your local network, via `http://LOCAL-IP-ADDRESS:5055`.
### Are there mobile apps for Overseerr?
Since Overseerr has an almost native app experience when installed as a Progressive Web App (PWA), there are no plans to develop mobile apps for Overseerr.
Out of the box, Overseerr already fulfills most of the [PWA install criteria](https://web.dev/install-criteria/). You simply need to make sure that your Overseerr instance is being served over HTTPS (e.g., via a [reverse proxy](../extending-overseerr/reverse-proxy.md)).
### Overseerr is amazing! But it is not translated in my language yet! Can I help with translations?
**A:**You sure can! We are using Weblate for translations! Check it out [here](https://hosted.weblate.org/engage/overseerr/). If your language is not listed please open an [enhancement request in issues](https://github.com/sct/overseerr/issues/new/choose).
You sure can! We are using [Weblate](https://hosted.weblate.org/engage/overseerr/) for translations. If your language is not listed, please [open a feature request on GitHub](https://github.com/sct/overseerr/issues/new/choose).
### Where can I find the changelog?
**A:**You can find the changelog in the **Settings -> About** page in your instance. You can also find it on github [here](https://github.com/sct/overseerr/releases).
You can find the changelog for your version (stable/`latest`,s or `develop`) in the **Settings → About** page in your Overseerr instance.
### Can I make 4K requests?
**A:** 4K requests are not supported just yet but they will be supported in the future!
You can alternatively review the [stable release history](https://github.com/sct/overseerr/releases) and [`develop` branch commit history](https://github.com/sct/overseerr/commits/develop) on GitHub.
### Some media is missing from Overseerr that I know is in Plex!
**A:**Overseerr supports the new Plex Movie, legacy Plex Movie, TheTVDB, and TMDb agents. Please verify that your library is using one of the agents previously listed. If you are changing agents, a full metadata refresh will need to be performed. Caution, this can take a long time depending on how many items you have in your movie library.
Overseerr currently supports the following agents:
**Troubleshooting Steps:**
- New Plex Movie
- Legacy Plex Movie
- New Plex TV
- Legacy Plex TV
- TheTVDB
- TMDB
- [HAMA](https://github.com/ZeroQI/Hama.bundle)
Check the Overseerr logs for media items that are missing. The logs will contain an error as to why that item could not be matched. One example might be `errorMessage":"SQLITE_CONSTRAINT: NOT NULL`. This means that the TMDb ID is missing from the Plex XML for that item.
Please verify that your library is using one of the agents previously listed.
When changing agents, a full metadata refresh of your Plex library is required. (Caution: This can take a long time depending on the size of your library.)
#### Troubleshooting Steps
First, check the Overseerr logs for media items that are missing. The logs will contain an error as to why that item could not be matched.
1. Verify that you are using one of the agents mentioned above.
2. Refresh the metadata for just that item.
@@ -48,48 +62,72 @@ Check the Overseerr logs for media items that are missing. The logs will contain
4. If the item is now seen by Overseerr then repeat step 2 for each missing item. If you have a large amount of items missing then a full metadata refresh is recommended for that library.
5. Run a full scan on Overseerr after refreshing all unmatched items.
Perform these steps to verify the media item has a guid Overseerr can match.
You can also perform the following to verify the media item has a GUID Overseerr can match:
1. Go to the media item in Plex and **"Get info"** and click on **"View XML"**.
2. Verify that the media item has the same format of one of the examples below.
2. Verify that the media item's GUID follows one of the below formats:
4. Legacy Plex Movie agent `guid="com.plexapp.agents.imdb://tt0765446"`
### Where can I find the log files?
### Where can I find the logs?
Please see [these instructions on how to locate and share your logs](./need-help.md#how-can-i-share-my-logs).
**A:** The logs are located at `<Overseeerr-install-directory>/logs/overseerr.log`
## Users
## User Management
### Why can't I see all of my Plex users?
### Why can't I see all my Plex users?
**A:** Navigate to your **User List** in Overseerr and click **Import Users from Plex** button. Don't forget to check the default user permissions in the **Settings -> General Settings** page beforehand.
Please see the [documentation for importing users from Plex](../using-overseerr/users/README.md#importing-users-from-plex).
### Can I create local users in Overseerr?
**A:** Not at this time. But it is a planned feature!
Yes! Please see the [documentation for creating local users](../using-overseerr/users/README.md#creating-local-users).
### Is is possible to set user roles in Overseerr?
**A:** Unfortunately, this is not possible yet. It is planned!
Permissions can be configured for each user via the **User List** or their **User Settings** page. The list of assignable permissions is still growing, so if you have any suggestions, [submit a feature request](https://github.com/sct/overseerr/issues/new/choose)!
## Requests
### I approved a requested movie and radarr didn't search for it!
### I receive 409 or 400 errors when requesting a movie or TV series!
**A:** Check your minimum availability in radarr. If an added item does not meet the minimum availability, no search will be performed. Also verify that radarr did not search for it by checking the radarr logs. Lastly, verify the item was not already being monitored by radarr. Currently there is no state sync with radarr.
Verify you are running v3 of both Radarr and Sonarr. Overseerr is not backwards-compatible with previous versions.
### Help! My request still shows "requested" even though it's in Plex!?!
### Can I allow users to submit 4K requests?
**A:** See "[Some media is missing from Overseerr that I know is in Plex!](./faq.md#some-media-is-missing-from-overseerr-that-i-know-is-in-plex)" for troubleshooting steps.
Yes! If you keep both non-4K and 4K content in your media libraries, you can link separate 4K Radarr/Sonarr servers to allow users to submit 4K requests. (You must configure default non-4K **and** default 4K Radarr/Sonarr servers.)
Please see the [Services documentation](../using-overseerr/settings/README.md#services) for details on how to configure your Radarr and/or Sonarr servers.
Note that users must also have the **Request 4K**, **Request 4K Movies**, and/or **Request 4K Series** permissions in order to submit requests for 4K content.
### I approved a requested movie and Radarr didn't search for it!
Check the minimum availability setting in your Radarr server. If a movie does not meet the minimum availability requirement, no search will be performed. Also verify that Radarr did not perform a search, by checking the Radarr logs. Lastly, verify that the item was not already being monitored by Radarr prior to approving the request.
### Help! My request still shows "requested" even though it is in Plex!
See "[Some media is missing from Overseerr that I know is in Plex!](#some-media-is-missing-from-overseerr-that-i-know-is-in-plex)" for troubleshooting steps.
### Series requests keep failing!
If you configured a URL base in Sonarr, make sure you have also configured the [URL Base](../using-overseerr/settings/README.md#url-base) setting for your Sonarr server in Overseerr.
Also, check that you are using Sonarr v3 and that you have configured a default language profile in Overseerr.
Language profile support for Sonarr was added in [v1.20.0](https://github.com/sct/overseerr/releases/tag/v1.20.0) along with a new, _required_**Language Profile** setting. If series requests are failing, make sure that you have a default language profile configured for each of your Sonarr servers in **Settings → Services**.
## Notifications
### I am getting "Username and Password not accepted" when sending email notifications to gmail!
### I am getting "Username and Password not accepted" when attempting to send email notifications via Gmail!
**A:**If you have 2-Step Verification enabled on your account you will need to create an app password. More details can be found [here](https://support.google.com/mail/answer/185833).
If you have 2-Step Verification enabled on your account, you will need to create an [app password](https://support.google.com/mail/answer/185833).
### The logo image in email notifications is broken!
This may be an issue with how you are proxying your Overseerr instance. A good first troubleshooting step is to verify that the [`Content-Security-Policy` HTTP header](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP) being set by your proxy (if any) is configured appropriately to allow external embedding of the image.
For Gmail users, another possible issue is that Google's image URL proxy is being blocked from fetching the image. If using Cloudflare, overzealous firewall rules could be the culprit.
Before seeking assistance, please make sure you have first tried these following:
- **Updating** Overseerr to the latest version.
- **Stopping and restarting** Overseerr.
- **Restarting** your machine.
- **Clearing** your browser cache.
- **Analyzing** your logs, you just might find the solution yourself!
- **Searching** the [documentation](../README.md), [installation guide](../getting-started/installation.md), and [FAQs](./faq.md).
If you still have questions after troubleshooting on your own, feel free to ask on [Discord](https://discord.gg/overseerr)! (Please review our [Code of Conduct](https://github.com/sct/overseerr/blob/develop/CODE_OF_CONDUCT.md) before posting.)
Be sure to also include a link to your logs. (Please see [How can I share my logs?](#how-can-i-share-my-logs) below.)
## What should I include when requesting support?
Please try to include as much information as possible. A vague statement like "it doesn't work" provides very little to go on, and makes it difficult for us to help you.
Try to answer the following questions:
- What version of Overseerr are you running? (You can find this in Settings → About → Version.)
- How did you install Overseerr? Are you using the official Docker or snap images, or images published by a third-party?
- How are you accessing Overseerr?
- Are you accessing Overseerr through your reverse proxy or via a local IP address?
- What browser are you using? What browser extensions are enabled?
- What were you trying to do, and how did you attempt it?
- What command did you enter?
- What did you click on?
- What settings did you change?
- Did you follow official instructions, or a third-party guide?
- Provide a step-by-step list of what you tried.
- Provide a brief description of your setup.
- What exactly do you see?
- Did something happen?
- Did something not happen?
- Are there any error messages showing?
- Provide screenshots to help us see what you are seeing.
- Share your Overseerr logs, which show exactly what happened and are often critical for identifying issues (see [How can I share my logs?](#how-can-i-share-my-logs) below).
## How can I share my logs?
1. Locate the current log file at `<your Overseerr config directory>/logs/overseerr.log`.
2. Open the log file and **copy its contents** into a [**secret gist** on GitHub](https://gist.github.com/). If you upload your logs elsewhere, we may ask you to share them again via GitHub Gist.
3.**Share the link/URL to your secret gist** in the [`#support` channel in our Discord server](https://discord.gg/overseerr).
Overseerr already supports a good number of notification agents, such as **Discord**, **Slack** and **Pushover**. New agents are always considered for development, if there is enough demand for it.
## Supported Notification Agents
## Currently Supported Notification Agents
Overseerr currently supports the following notification agents:
- Email
-Discord
-Slack
-Telegram
-Pushover
-[Email](./email.md)
-[Web Push](./webpush.md)
-[Discord](./discord.md)
-[Gotify](./gotify.md)
-[LunaSea](./lunasea.md)
- [Pushbullet](./pushbullet.md)
- [Pushover](./pushover.md)
- [Slack](./slack.md)
- [Telegram](./telegram.md)
- [Webhooks](./webhooks.md)
## Setting Up Notifications
Configuring your notifications is _very simple_. First, you will need to visit the **Settings** page and click **Notifications** in the menu. This will present you with all of the currently available notification agents. Click on each one individually to configure them.
Simply configure your desired notification agents in **Settings → Notifications**.
You must configure which type of notifications you want to send _per agent_. If no types are selected, you will not receive any notifications!
Users can customize their personal notification preferences in their own user notification settings.
Some agents may have specific configuration gotchas that will be covered in each notification agents documentation page.
## Requesting New Notification Agents
{% hint style="danger" %}
Currently, you will **not receive notifications** for any auto-approved requests. However, you will still receive a notification when the media becomes available.
{% endhint %}
## Requesting new agents
If we do not currently support a notification agent you would like, feel free to request it on our [GitHub Issues](https://github.com/sct/overseerr/issues). Make sure to search first to see if someone else already requested it!
If we do not currently support your preferred notification agent, feel free to [submit a feature request on GitHub](https://github.com/sct/overseerr/issues). However, please be sure to search first and confirm that there is not already an existing request for the agent!
The Discord notification agent enables you to post notifications to a channel in a server you manage.
{% hint style="info" %}
Users can optionally opt-in to being mentioned in Discord notifications by configuring their [Discord user ID](https://support.discord.com/hc/en-us/articles/206346498-Where-can-I-find-my-User-Server-Message-ID-) in their user settings.
{% endhint %}
## Configuration
### Webhook URL
You can find the webhook URL in the Discord application, at **Server Settings → Integrations → Webhooks**.
### Bot Username (optional)
If you would like to override the name you configured for your bot in Discord, you may set this value to whatever you like!
### Bot Avatar URL (optional)
Similar to the bot username, you can override the avatar for your bot.
If the [Application URL](../settings/README.md#application-url) setting is configured in **Settings → General**, Overseerr will explicitly set the origin server hostname when connecting to the SMTP host.
{% endhint %}
### Sender Name (optional)
Configure a friendly name for the email sender (e.g., "Overseerr").
### Sender Address
Set this to the email address you would like to appear in the "from" field of the email message.
Depending on your email provider, this may need to be an address you own. For example, Gmail requires this to be your actual email address.
### SMTP Host
Set this to the hostname or IP address of your SMTP host/server.
### SMTP Port
Set this to a supported port number for your SMTP host. `465` and `587` are commonly used.
### Encryption Method
In most cases, [Use Implicit TLS](https://tools.ietf.org/html/rfc8314) should be selected for port 465, and [Use STARTTLS if available](https://en.wikipedia.org/wiki/Opportunistic_TLS) for port 587. Please refer to your email provider's documentations for details on how to configure this setting.
The default value for this setting is **Use STARTTLS if available**.
### SMTP Username & Password
{% hint style="info" %}
If your account has two-factor authentication enabled, you may need to create an application password instead of using your account password.
{% endhint %}
Configure these values as appropriate to authenticate with your SMTP host.
### PGP Private Key & Password (optional)
Configure these values to enable encrypting and signing of email messages using [OpenPGP](https://www.openpgp.org/). Note that individual users must also have their **PGP public keys** configured in their user settings in order for PGP encryption to be used in messages addressed to them.
When configuring the PGP keys, be sure to keep the entire contents of the key intact. For example, private keys always begin with `-----BEGIN PGP PRIVATE KEY BLOCK-----` and end with `-----END PGP PRIVATE KEY BLOCK-----`.
Copy either a device- or user-based webhook URL from the LunaSea app into this field.
### Profile Name (optional)
If not using the `default` profile in the LunaSea app, specify the name of the profile here.
Note that the entered profile name **_must_** match the name in LunaSea exactly (including any capitalization, punctuation, and/or whitespace).
{% hint style="info" %}
Please refer to the [LunaSea documentation](https://docs.lunasea.app/lunasea/notifications/overseerr) for more details on configuring these notifications.
Users can optionally configure personal notifications in their user settings.
User notifications are separate from system notifications, and the available notification types are dependent on user permissions.
{% endhint %}
## Configuration
### Access Token
[Create an access token](https://www.pushbullet.com/#settings) and set it here to grant Overseerr access to the Pushbullet API.
### Channel Tag (optional)
Optionally, [create a channel](https://www.pushbullet.com/my-channel) to allow other users to follow the notification feed using the specified channel tag.
Users can optionally configure personal notifications in their user settings.
User notifications are separate from system notifications, and the available notification types are dependent on user permissions.
{% endhint %}
## Configuration
### Application/API Token
[Register an application](https://pushover.net/apps/build) and enter the API token in this field. (You can use one of the [official icons in our GitHub repository](https://github.com/sct/overseerr/tree/develop/public) when configuring the application.)
For more details on registering applications or the API token, please see the [Pushover API documentation](https://pushover.net/api#registration).
### User Key
Set this to the user key for your Pushover account. Alternatively, you can set this to a group key to deliver notifications to multiple users.
For more details, please see the [Pushover API documentation](https://pushover.net/api#identifiers).
Webhooks let you post a custom JSON payload to any endpoint you like. You can also set an authorization header for security purposes.
The webhook notification agent enables you to send a custom JSON payload to any endpoint for specific notification events.
## Configuration
The following configuration options are available:
### Webhook URL (Required)
### Webhook URL
The URL you would like to post notifications to. Your JSON will be sent as the body of the request.
### Authorization Header
### Authorization Header (optional)
Custom authorization header. Anything entered for this will be sent as an `Authorization` header.
{% hint style="info" %}
This is typically not needed. Please refer to your webhook provider's documentation for details.
{% endhint %}
### Custom JSON Payload (Required)
This value will be sent as an `Authorization` HTTP header.
Design your JSON payload as you see fit. JSON is validated before you can save or test. Overseerr provides several [template variables](./webhooks.md#template-variables) for use in the payload which will be replaced with actual values when the notifications are sent.
### JSON Payload
You can always reset back to the default custom payload setting by clicking the `Reset to Default JSON Payload` button under the editor.
Customize the JSON payload to suit your needs. Overseerr provides several [template variables](#template-variables) for use in the payload, which will be replaced with the relevant data when the notifications are triggered.
## Template Variables
### Main
### General
-`{{notification_type}}` The type of notification. (Ex. `MEDIA_PENDING` or `MEDIA_APPROVED`)
-`{{subject}}` The notification subject message. (For request notifications, this is the media title)
-`{{message}}` Notification message body. (For request notifications, this is the media's overview/synopsis)
-`{{image}}` Associated image with the request. (For request notifications, this is the media's poster)
|`{{notification_type}}` | The type of notification (e.g. `MEDIA_PENDING` or `ISSUE_COMMENT`) |
|`{{event}}` | A friendly description of the notification event |
| `{{subject}}` | The notification subject (typically the media title) |
| `{{message}}` | The notification message body (the media overview/synopsis for request notifications; the issue description for issue notificatons) |
| `{{image}}` | The notification image (typically the media poster) |
### Notify User
These variables are usually the target user of the notification.
These variables are for the target recipient of the notification.
|`{{notifyuser_username}}` | The target notification recipient's username |
| `{{notifyuser_email}}` | The target notification recipient's email address |
| `{{notifyuser_avatar}}` | The target notification recipient's avatar URL |
| `{{notifyuser_settings_discordId}}` | The target notification recipient's Discord ID (if set) |
| `{{notifyuser_settings_telegramChatId}}` | The target notification recipient's Telegram Chat ID (if set) |
### Media
{% hint style="info" %}
The `notifyuser` variables are not defined for the following request notification types, as they are intended for application administrators rather than end users:
These variables are only included in media related notifications, such as requests.
- Request Pending Approval
- Request Automatically Approved
- Request Processing Failed
-`{{media_type}}` Media type. Either `movie` or `tv`.
-`{{media_tmdbid}}` Media's TMDb ID.
-`{{media_imdbid}}` Media's IMDb ID.
-`{{media_tvdbid}}` Media's TVDB ID.
-`{{media_status}}` Media's availability status. (Ex. `AVAILABLE` or `PENDING`)
-`{{media_status4k}}` Media's 4K availability status. (Ex. `AVAILABLE` or `PENDING`)
On the other hand, the `notifyuser` variables _will_ be replaced with the requesting user's information for the below notification types:
### Special Key Variables
- Request Approved
- Request Declined
- Request Available
These variables must be used as a key in the JSON Payload. (Ex, `"{{extra}}": []`).
If you would like to use the requesting user's information in your webhook, please instead include the relevant variables from the [Request](#request) section below.
{% endhint %}
-`{{extra}}` This will override the value of the property to be the pre-formatted "extra" array that can come along with certain notifications. Using this variable is _not required_.
-`{{media}}` This will override the value of the property to `null` if there is no media object passed along with the notification.
### Special
The following variables must be used as a key in the JSON payload (e.g., `"{{extra}}": []`).
The web push notification agent enables you and your users to receive Overseerr notifications in a supported browser.
This notification agent does not require any configuration, but is not enabled in Overseerr by default.
{% hint style="warning" %}
**The web push agent only works via HTTPS.** Refer to our [reverse proxy examples](../../extending-overseerr/reverse-proxy.md) for help on proxying Overseerr traffic via HTTPS.
{% endhint %}
To set up web push notifications, simply enable the agent in **Settings → Notifications → Web Push**. You and your users will then be prompted to allow notifications in your web browser.
Users can opt out of these notifications, or customize the notification types they would like to subscribe to, in their user settings.
{% hint style="info" %}
Web push notifications offer a native notification experience without the need to install an app. iOS devices do not have support for these notifications at this time, however.
This is your Overseerr API key, which can be used to integrate Overseerr with third-party applications. Do **not** share this key publicly, as it can be used to gain administrator access!
If you need to generate a new API key for any reason, simply click the button to the right of the text box.
### Application Title
If you aren't a huge fan of the name "Overseerr" and would like to display something different to your users, you can customize the application title!
### Application URL
Set this to the externally-accessible URL of your Overseerr instance.
You must configure this setting in order to enable password reset and [generation](../users/README.md#automatically-generate-password) emails.
### Enable Proxy Support
If you have Overseerr behind a [reverse proxy](../../extending-overseerr/reverse-proxy.md), enable this setting to allow Overseerr to correctly register client IP addresses. For details, please see the [Express documentation](http://expressjs.com/en/guide/behind-proxies.html).
This setting is **disabled** by default.
### Enable CSRF Protection
{% hint style="danger" %}
**This is an advanced setting.** We do not recommend enabling it unless you understand the implications of doing so.
{% endhint %}
CSRF stands for [cross-site request forgery](https://en.wikipedia.org/wiki/Cross-site_request_forgery). When this setting is enabled, all external API access that alters Overseerr application data is blocked.
If you do not use Overseerr integrations with third-party applications to add/modify/delete requests or users, you can consider enabling this setting to protect against malicious attacks.
One caveat, however, is that _HTTPS is required_, meaning that once this setting is enabled, you will no longer be able to access your Overseerr instance over HTTP (including using an IP address and port number).
If you enable this setting and find yourself unable to access Overseerr, you can disable the setting by modifying `settings.json` in `/app/config`.
This setting is **disabled** by default.
### Enable Image Caching
When enabled, Overseerr will proxy and cache images from pre-configured sources (such as TMDB). This can use a significant amount of disk space.
Images are saved in the `config/cache/images` and stale images are cleared out every 24 hours.
You should enable this if you are having issues with loading images directly from TMDB in your browser.
### Display Language
Set the default display language for Overseerr. Users can override this setting in their user settings.
### Discover Region & Discover Language
These settings filter content shown on the "Discover" home page based on regional availability and original language, respectively. Users can override these global settings by configuring these same options in their user settings.
### Hide Available Media
When enabled, media which is already available will not appear on the "Discover" home page, or in the "Recommended" or "Similar" categories or other links on media detail pages.
Available media will still appear in search results, however, so it is possible to locate and view hidden items by searching for them by title.
This setting is **disabled** by default.
### Allow Partial Series Requests
When enabled, users will be able to submit requests for specific seasons of TV series. If disabled, users will only be able to submit requests for all unavailable seasons.
This setting is **enabled** by default.
## Users
### Enable Local Sign-In
When enabled, users who have configured passwords will be allowed to sign in using their email address.
When disabled, Plex OAuth becomes the only sign-in option, and any "local users" you have created will not be able to sign in to Overseerr.
This setting is **enabled** by default.
### Enable New Plex Sign-In
When enabled, users with access to your Plex server will be able to sign in to Overseerr even if they have not yet been imported. Users will be automatically assigned the permissions configured in the [Default Permissions](#default-permissions) setting upon first sign-in.
This setting is **enabled** by default.
### Global Movie Request Limit & Global Series Request Limit
Select the request limits you would like granted to users.
Unless an [override](../users/README.md#movie-request-limit-and-series-request-limit) is configured, users are granted these global request limits.
Note that users with the **Manage Users** permission are exempt from request limits, since that permission also grants the ability to submit requests on behalf of other users.
### Default Permissions
Select the permissions you would like assigned to new users to have by default upon account creation.
If [Enable New Plex Sign-In](#enable-new-plex-sign-in) is enabled, any user with access to your Plex server will be able to sign in to Overseerr, and they will be granted the permissions you select here upon first sign-in.
This setting only affects new users, and has no impact on existing users. In order to modify permissions for existing users, you will need to [edit the users](../users/README.md#editing-users).
## Plex
### Plex Settings
{% hint style="info" %}
To set up Plex, you can either enter your details manually or select a server retrieved from [plex.tv](https://plex.tv/). Press the button to the right of the "Server" dropdown to retrieve available servers.
Depending on your setup/configuration, you may need to enter your Plex server details manually in order to establish a connection from Overseerr.
{% endhint %}
#### Hostname or IP Address
If you have Overseerr installed on the same network as Plex, you can set this to the local IP address of your Plex server. Otherwise, this should be set to a valid hostname (e.g., `plex.myawesomeserver.com`).
#### Port
This value should be set to the port that your Plex server listens on. The default port that Plex uses is `32400`, but you may need to set this to `443` or some other value if your Plex server is hosted on a VPS or cloud provider.
#### Use SSL
Enable this setting to connect to Plex via HTTPS rather than HTTP. Note that self-signed certificates are _not_ supported.
#### Web App URL (optional)
The **Play on Plex** buttons on media pages link to items on your Plex server. By default, these links use the [Plex Web App](https://support.plex.tv/articles/200288666-opening-plex-web-app/) hosted from plex.tv, but you can provide the URL to the web app on your Plex server and we'll use that instead!
Note that you will need to enter the full path to the web app (e.g., `https://plex.myawesomeserver.com/web`).
### Plex Libraries
In this section, simply select the libraries you would like Overseerr to scan. Overseerr will periodically check the selected libraries for available content to update the media status that is displayed to users.
If you do not see your Plex libraries listed, verify your Plex settings are correct and click the **Sync Libraries** button.
### Manual Library Scan
Overseerr will perform a full scan of your Plex libraries once every 24 hours (recently added items are fetched more frequently). If this is your first time configuring Plex, a one-time full manual library scan is recommended!
## Services
{% hint style="info" %}
**If you keep separate copies of non-4K and 4K content in your media libraries, you will need to set up multiple Radarr/Sonarr instances and link each of them to Overseerr.**
Overseerr checks these linked servers to determine whether or not media has already been requested or is available, so two servers of each type are required _if you keep separate non-4K and 4K copies of media_.
**If you only maintain one copy of media, you can instead simply set up one server and set the "Quality Profile" setting on a per-request basis.**
{% endhint %}
### Radarr/Sonarr Settings
{% hint style="warning" %}
**Only v3 Radarr/Sonarr servers are supported!** If your Radarr/Sonarr server is still running v2, you will need to upgrade in order to add it to Overseerr.
{% endhint %}
#### Default Server
At least one server needs to be marked as "Default" in order for requests to be sent successfully to Radarr/Sonarr.
If you have separate 4K Radarr/Sonarr servers, you need to designate default 4K servers _in addition to_ default non-4K servers.
#### 4K Server
Only select this option if you have separate non-4K and 4K servers. If you only have a single Radarr/Sonarr server, do _not_ check this box!
#### Server Name
Enter a friendly name for the Radarr/Sonarr server.
#### Hostname or IP Address
If you have Overseerr installed on the same network as Radarr/Sonarr, you can set this to the local IP address of your Radarr/Sonarr server. Otherwise, this should be set to a valid hostname (e.g., `radarr.myawesomeserver.com`).
#### Port
This value should be set to the port that your Radarr/Sonarr server listens on. By default, Radarr uses port `7878` and Sonarr uses port `8989`, but you may need to set this to `443` or some other value if your Radarr/Sonarr server is hosted on a VPS or cloud provider.
#### Use SSL
Enable this setting to connect to Radarr/Sonarr via HTTPS rather than HTTP. Note that self-signed certificates are _not_ supported.
#### API Key
Enter your Radarr/Sonarr API key here. Do _not_ share these key publicly, as they can be used to gain administrator access to your Radarr/Sonarr servers!
You can locate the required API keys in Radarr/Sonarr in **Settings → General → Security**.
#### URL Base
If you have configured a URL base for your Radarr/Sonarr server, you _must_ enter it here in order for Overseerr to connect to those services!
You can verify whether or not you have a URL base configured in your Radarr/Sonarr server at **Settings → General → Host**. (Note that a restart of your Radarr/Sonarr server is required if you modify this setting!)
#### Profiles, Root Folder, Minimum Availability
Select the default settings you would like to use for all new requests. Note that all of these options are required, and that requests will fail if any of these are not configured!
#### External URL (optional)
If the hostname or IP address you configured above is not accessible outside your network, you can set a different URL here. This "external" URL is used to add clickable links to your Radarr/Sonarr servers on media detail pages.
#### Enable Scan (optional)
Enable this setting if you would like to scan your Radarr/Sonarr server for existing media/request status. It is recommended that you enable this setting, so that users cannot submit requests for media which has already been requested or is already available.
#### Enable Automatic Search (optional)
Enable this setting to have Radarr/Sonarr to automatically search for media upon approval of a request.
## Notifications
Please see [Notifications](../notifications/README.md) for details on configuring and enabling notifications.
## Jobs & Cache
Overseerr performs certain maintenance tasks as regularly-scheduled jobs, but they can also be manually triggered on this page.
Overseerr also caches requests to external API endpoints to optimize performance and avoid making unnecessary API calls. If necessary, the cache for any particular endpoint can be cleared by clicking the "Flush Cache" button.
The user account created during Overseerr setup is the "Owner" account, which cannot be deleted or modified by other users. This account's credentials are used to authenticate with Plex.
## Adding Users
There are currently two methods to add users to Overseerr: importing Plex users and creating "local users." All new users are created with the [default permissions](../settings/README.md#default-permissions) defined in **Settings → Users**.
### Importing Plex Users
Clicking the **Import Plex Users** button on the **User List** page will fetch the list of users with access to the Plex server from [plex.tv](https://www.plex.tv/), and add them to Overseerr automatically.
Importing Plex users is not required, however. Any user with access to the Plex server can log in to Overseerr even if they have not been imported, and will be assigned the configured [default permissions](../settings/README.md#default-permissions) upon their first login.
### Creating Local Users
If you would like to grant Overseerr access to a user who doesn't have their own Plex account and/or access to the Plex server, you can manually add them by clicking the **Create Local User** button.
#### Email Address
Enter a valid email address at which the user can receive messages pertaining to their account and other notifications. The email address currently cannot be modified after the account is created.
#### Automatically Generate Password
If an [application URL](../settings/README.md#application-url) is set and [email notifications](../notifications/email.md) have been configured and enabled, Overseerr can automatically generate a password for the new user.
#### Password
If you would prefer to manually configure a password, enter a password here that is a minimum of 8 characters.
## Editing Users
From the **User List**, you can click the **Edit** button to modify a particular user's settings.
You can also click the check boxes and click the **Bulk Edit** button to set user permissions for multiple users at once.
### General
#### Display Name
You can optionally set a "friendly name" for any user. This name will be used in lieu of their Plex username (for users imported from Plex) or their email address (for manually-created local users).
#### Display Language
Users can override the [global display language](../settings/README.md#display-language) to use Overseerr in their preferred language.
#### Discover Region & Discover Language
Users can override the [global filter settings](../settings/README.md#discover-region-and-discover-language) to suit their own preferences.
#### Movie Request Limit & Series Request Limit
You can override the default settings and assign different request limits for specific users by checking the **Enable Override** box and selecting the desired request limit and time period.
Unless an override is configured, users are granted the global request limits.
Note that users with the **Manage Users** permission are exempt from request limits, since that permission also grants the ability to submit requests on behalf of other users.
Users are also unable to modify their own request limits.
### Password
All "local users" are assigned passwords upon creation, but users imported from Plex can also optionally configure passwords to enable sign-in using their email address.
Passwords must be a minimum of 8 characters long.
### Notifications
Users can configure their personal notification settings here. Please see [Notifications](../notifications/README.md) for details on configuring and enabling notifications.
### Permissions
Users cannot modify their own permissions. Users with the **Manage Users** permission can manage permissions of other users, except those of users with the **Admin** permission.
## Deleting Users
When users are deleted, all of their data and request history is also cleared from the database.
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.