1
0
mirror of https://github.com/Radarr/Radarr.git synced 2026-03-10 15:10:57 -04:00

Compare commits

...

890 Commits

Author SHA1 Message Date
Qstick
2bca1a71a2 Bump version 3.2.2 2021-06-03 07:34:31 -04:00
Qstick
4f009bb81d Fixed: Use normal URL for Trakt Oauth per new docs 2021-06-03 07:33:27 -04:00
Robin Dadswell
bdc7733faf Fixed: Clarify delay profile bypass only applies to preferred protocol 2021-05-27 07:48:55 -04:00
Qstick
7f4be53db0 Bump version 3.2.1 2021-05-27 07:48:24 -04:00
Weblate
27d998d6f2 Added translation using Weblate (Chinese (Traditional) (zh_TW)) [skip ci]
Translated using Weblate (Portuguese (Brazil)) [skip ci]

Currently translated at 100.0% (1104 of 1104 strings)

Translated using Weblate (Hungarian) [skip ci]

Currently translated at 100.0% (1104 of 1104 strings)

Co-authored-by: Csaba <csab0825@gmail.com>
Co-authored-by: Lizandra Candido da Silva <lizandra.c.s@gmail.com>
Co-authored-by: Qstick <qstick@gmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.servarr.com/projects/servarr/radarr/hu/
Translate-URL: https://translate.servarr.com/projects/servarr/radarr/pt_BR/
Translation: Servarr/Radarr
2021-05-26 23:41:04 -04:00
Evan J
5eb593f453 Update login.html
(cherry picked from commit e8f58eb9be583639909c0ac9b3dc3b40db8c7a53)
2021-05-24 20:40:35 -04:00
Servarr
4652db0583 Translations update from Weblate (#6348)
* Translated using Weblate (Portuguese (Brazil)) [skip ci]

Currently translated at 99.7% (1101 of 1104 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/servarr/radarr/pt_BR/

* Translated using Weblate (Portuguese (Brazil)) [skip ci]

Currently translated at 99.8% (1102 of 1104 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/servarr/radarr/pt_BR/

* Translated using Weblate (Portuguese (Brazil)) [skip ci]

Currently translated at 99.7% (1101 of 1104 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/servarr/radarr/pt_BR/

* Translated using Weblate (Portuguese (Brazil)) [skip ci]

Currently translated at 99.7% (1101 of 1104 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/servarr/radarr/pt_BR/

Co-authored-by: Lizandra Candido da Silva <lizandra.c.s@gmail.com>
2021-05-24 00:41:35 -04:00
Qstick
35d43480bf Fixed: Errors in queue after Movie deleted
Fixes #5899
Fixes RADARR-17A
2021-05-23 23:14:56 -04:00
Qstick
3e7c136a7f Fixed: ArgumentException on Import List Root Folder Check 2021-05-23 21:36:07 -04:00
Qstick
05f9f6b413 Fixed: Check movie null before trying to use it 2021-05-23 21:26:01 -04:00
Robin Dadswell
67f6eb544a New: Indexer Categories no longer Advanced option 2021-05-23 21:19:53 -04:00
Robin Dadswell
3c11e934a8 Fixed: Parsing service error for multi language releases when movie not mapped 2021-05-23 16:41:33 -04:00
Robin Dadswell
627a39b8fc Fix: Root Folder Downloads check giving errors when RuTorrent is used 2021-05-23 16:41:33 -04:00
Qstick
95c7b96dff Fixed: Health MovieEditor link goes nowhere 2021-05-20 18:47:24 -04:00
Robin Dadswell
dadd59fc3a Fix ESLint (#6335)
(cherry picked from commit c3837c9f7b50534e3eafe1d9fbaf360fee4588b7)

Co-authored-by: Mark McDowall <mark@mcdowall.ca>
2021-05-19 23:36:50 +01:00
Daniel Martin Gonzalez
e67d3d3666 New: Add missing properties to Connection Webhook (#6333) 2021-05-18 19:41:13 +01:00
Qstick
f4718243ed Fixed: NZBGet Settings reference Sabnzbd 2021-05-17 22:15:10 -04:00
Robin Dadswell
fcec787eb6 Show User Agent in System->Tasks for externally triggered commands (#6327)
* Show User Agent in System->Tasks for externally triggered commands

(cherry picked from commit fe8f319f7bfdadb7218b6313ada6cae1d2a35ad8)

* Translations

Co-authored-by: Taloth Saldono <Taloth@users.noreply.github.com>
2021-05-17 21:45:23 -04:00
Qstick
5fe8f65d64 Fixed: Filter Unknown from Profile Language Select 2021-05-15 18:11:06 -04:00
JohnBednarczyk
c2a21cd238 Added custom languages to the top 2021-05-15 18:11:06 -04:00
Daniel Martin Gonzalez
a31ca4e80b New: Telegram Notification - Add Upgrade Movie Support 2021-05-15 18:10:30 -04:00
Michael Higgins
db14ac4605 New: Update scenename from API (#6132)
* update scenename from API

* Update MovieFileListResource.cs

* Update MovieFileModule.cs

null checks similar to Sonarr pull request

* Update MovieFileModule.cs

add blank line

* Update MovieFileModule.cs

include isSceneTitle check

* Update MovieFileModule.cs

fix namespace

* Update MovieFileModule.cs
2021-05-15 18:08:04 -04:00
Robin Dadswell
5f229b78be Fixed: Multi language release being rejected when indexer profile is setup for original and any other language (#6311) 2021-05-15 16:52:15 +01:00
ta264
543f2e7ddc Don't run build for weblate PRs
(cherry picked from commit 62221c2a7fc959dfe47af7bc98622d81eba3419b)
2021-05-14 06:59:03 -04:00
Servarr
d6b7ab6260 Translations update from Weblate (#6295)
* Added translation using Weblate (Chinese (Traditional)) [skip ci]

* Translated using Weblate (Danish) [skip ci]

Currently translated at 97.0% (1068 of 1101 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/servarr/radarr/da/

* Translated using Weblate (Hungarian) [skip ci]

Currently translated at 100.0% (1101 of 1101 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/servarr/radarr/hu/

* Translated using Weblate (Portuguese (Brazil)) [skip ci]

Currently translated at 100.0% (1101 of 1101 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/servarr/radarr/pt_BR/

* Deleted translation using Weblate (Chinese (Traditional))  [skip ci]

* Translated using Weblate (Hungarian) [skip ci]

Currently translated at 100.0% (1102 of 1102 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/servarr/radarr/hu/

Co-authored-by: ted09080037 <ted09080037@gmail.com>
Co-authored-by: lechuck <theghostpirate@gmail.com>
Co-authored-by: Csaba <csab0825@gmail.com>
Co-authored-by: Havok Dan <havokdan@yahoo.com.br>
Co-authored-by: Qstick <qstick@gmail.com>
2021-05-12 20:50:14 -04:00
Robin Dadswell
d7ab9292fb Fixed: restoring scroll position when going back to index page (#6308)
(cherry picked from commit 1bc52d0138c7bcb94ffce31ec05f675387612a62)

Co-authored-by: ta264 <ta264@users.noreply.github.com>
2021-05-12 12:36:20 +01:00
Robin Dadswell
4300d8d8c6 New: TMDb Keyword List support (#6297) 2021-05-12 12:36:01 +01:00
Qstick
446b2ffff9 New: Letterboxd Links for Movies 2021-05-11 23:59:44 -04:00
Mark McDowall
695720b552 New: Add rel="noreferrer" to all external links
(cherry picked from commit c722e9112496062313d09df16b169873f910f2a1)
2021-05-10 23:45:06 -04:00
Qstick
c47934c5ca Fixed: Alignment of Certification and Runtime on Add Movie 2021-05-10 23:41:21 -04:00
bakerboy448
9938737cd7 fix minimumAcailability typo and truncate version to 3 [skip ci] 2021-05-10 22:59:03 -04:00
bakerboy448
58326f05e0 remove legacy swagger doc [skip ci] 2021-05-10 22:59:03 -04:00
Robin Dadswell
04ad5ec9c0 Fixed: Interactive Search Release Rejected tooltip no longer covers download button 2021-05-10 19:06:46 -04:00
crbrz
2c008384dd Fixed: Links to search results not always working on interactive search
Co-authored-by: Cristi <cristi@emailaddressmanager.com>
2021-05-09 18:54:54 +01:00
Servarr
a9b605c872 Translations update from Weblate (#6276)
* Translated using Weblate (Dutch) [skip ci]

Currently translated at 100.0% (1078 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/servarr/radarr/nl/

* Translated using Weblate (German) [skip ci]

Currently translated at 100.0% (1101 of 1101 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/servarr/radarr/de/

Co-authored-by: ProjectHydra31 <kay@timmerman.io>
Co-authored-by: reloxx <reloxx@interia.pl>
2021-05-09 10:28:34 -04:00
Robin Dadswell
cd9b469823 fixups 2021-05-09 08:15:10 -04:00
Mark McDowall
df4bfa501c Fixed files that were using incorrect imports
(cherry picked from commit a3bb2f1c32fc1e0c49d0d1fe24c04940453f5431)
2021-05-09 08:15:10 -04:00
Mark McDowall
194a1e5154 Updated create-react-class package
(cherry picked from commit 8acc0f77b677e4713d0f3d6f059b948a3aaca450)
2021-05-09 08:15:10 -04:00
Mark McDowall
e53b2bb83c Update react-autosuggest, react-focus-lock, react-lazyload react-slider and react-tabs packages
(cherry picked from commit 2964d0bb6da089be863199514c1e7ed4ca2832f7)
2021-05-09 08:15:10 -04:00
Qstick
10772c09ef Update microsoft/signalr package
(cherry picked from commit afe1d695d0071fa321d655425f5badc4d7a1f6c2)
2021-05-09 08:15:10 -04:00
Qstick
f9ed15409a Update connected-react-router
(cherry picked from commit d64980ce6b1eeeffc8c7b0a938b70c18bdda5067)
2021-05-09 08:15:10 -04:00
Qstick
f75ab93458 Updated react-dnd and added touch support
Co-Authored-By: Mark McDowall <markus101@users.noreply.github.com>
(cherry picked from commit 0b85b506e226cf1bf1f2d28eb7ed441108cc154d)

to be squashed
2021-05-09 08:15:10 -04:00
Qstick
7755a8bd3b Updated redux and react-redux packages
Co-Authored-By: Mark McDowall <markus101@users.noreply.github.com>
(cherry picked from commit 699da04eb3a0db3fa3eb89f5f61dcf90749e9df2)
2021-05-09 08:15:10 -04:00
Qstick
017c7998be Update react and react-dom packages
(cherry picked from commit e3968f90b23cdb9a875b474d159787e84d480bf7)
2021-05-09 08:15:10 -04:00
Qstick
f40ddfef10 Update jquery, filesize, qs packages
(cherry picked from commit c60858aed5c3607e0df192caf02e6a400c76e172)
2021-05-09 08:15:10 -04:00
Qstick
80049909eb Update clipboard, lodash, mobile-detect
(cherry picked from commit 9a30173e8defb49a8a24159c35f4982b4f791e02)
2021-05-09 08:15:10 -04:00
Qstick
fc22264f89 Update classnames
(cherry picked from commit 8f2e73045ac682c2e9abb3a1f3894a4ca16eb650)
2021-05-09 08:15:10 -04:00
Qstick
aba2e10b5c Update sentry packages
(cherry picked from commit adb01c2f8685de2abaf5ebf37000f3765e52b086)
2021-05-09 08:15:10 -04:00
Qstick
4b6874d551 Update fontawesome packages
(cherry picked from commit ef0c9472d94ff72ec186684c8c773af7ceaa8073)
2021-05-09 08:15:10 -04:00
Qstick
58934a30ce Update postcss packages
(cherry picked from commit 408089957ab8a9dc6a21b485853b9d86a9ace59f)
2021-05-09 08:15:10 -04:00
Qstick
33a960f325 Update core-js package
(cherry picked from commit f383e57e7de33c6a071083e8282ea69238ef8987)

to be sqaushed
2021-05-09 08:15:10 -04:00
Qstick
8560ff43fe Update lint packages
(cherry picked from commit 871a6272322e3fad58f70f410e1aa21feb4ff9ad)
2021-05-09 08:15:10 -04:00
Qstick
c88a47b275 Upgrade babel packages
(cherry picked from commit 1af730ffb82c14693911942718e2c171123f6ccb)
2021-05-09 08:15:10 -04:00
Qstick
67fe9101d9 Update to webpack 5, remove gulp
Co-Authored-By: Mark McDowall <markus101@users.noreply.github.com>
(cherry picked from commit 4ef2174226a0210f756f180dded8567d659589e2)
2021-05-09 08:15:10 -04:00
Robin Dadswell
af99c78352 New: Allow user to choose whether delay profile should apply to release of the highest enabled quality (#6218)
(cherry picked from commit d668e923af83ab7f1589d947fec9f40a3919e0b8)

Co-authored-by: Taloth Saldono <Taloth@users.noreply.github.com>
2021-05-09 00:45:04 +01:00
Robin Dadswell
df3253f55c Improved logic for root folder downloading health check (#6287) 2021-05-09 00:43:56 +01:00
Robin Dadswell
b9abc1be11 Add missing On Delete Notifications to Mailgun notifications
(cherry picked from commit a824fa44d21328d9c8bbb1ccfd6d247d4ff5c888)
2021-05-08 18:13:51 +01:00
Skyler Mäntysaari
5c0ee04271 New: Mailgun connection
(cherry picked from commit 55752a6c6213c1d83d347ba0f6870aa6c1cc0770)
2021-05-08 18:13:51 +01:00
Qstick
5e2cd3798b Move support bot to Github Action [skip ci]
[common]
2021-05-07 18:48:35 -04:00
Qstick
83041b1d37 Delete todobot config [skip ci] 2021-05-07 18:40:14 -04:00
Robin Dadswell
9f6c48191b New: Errors for Mono Health checks on X86 and BSD (except FreeBSD) based Operating Systems 2021-05-07 23:38:10 +01:00
Robin Dadswell
5696fa2efe Fixed: Wiki links on all health checks 2021-05-07 23:38:10 +01:00
Robin Dadswell
d38311b717 New: Localised all health check strings 2021-05-07 23:38:10 +01:00
Robin Dadswell
aa522066ee New: Mono health check moved from warning to error 2021-05-07 23:38:10 +01:00
Robin Dadswell
d2ba70c4d7 Fixed: Added wiki fragments to indexer health checks 2021-05-07 23:38:10 +01:00
Robin Dadswell
ca2e62492d Fixed: Import Lists messages can now show in UI 2021-05-07 17:08:19 +01:00
bakerboy448
02bcb4d865 Fixed: Incorrectly identifying YTS.LT as Lithuanian Language
New: Detect YTS.LT as a Release Group
2021-05-07 12:04:15 -04:00
ta264
36962f176f Always access config file via provider to utilise lock 2021-05-07 11:52:03 +01:00
ta264
0a2afe692f Fail build on BSD integration test fails 2021-05-07 11:52:03 +01:00
ta264
5140ee8f2e Don't start integration tests too soon
(cherry picked from commit b284f40716269dc4f641323b8293f40dfda8a424)
2021-05-07 11:52:03 +01:00
Servarr
e47ceae0c5 Translations update from Weblate (#6272)
* Translated using Weblate (French) [skip ci]

Currently translated at 100.0% (1078 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/servarr/radarr/fr/

* Translated using Weblate (Italian) [skip ci]

Currently translated at 100.0% (1078 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/servarr/radarr/it/

* Translated using Weblate (Hungarian) [skip ci]

Currently translated at 100.0% (1078 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/servarr/radarr/hu/

* Translated using Weblate (Turkish) [skip ci]

Currently translated at 99.2% (1070 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/servarr/radarr/tr/

* Translated using Weblate (Portuguese (Brazil)) [skip ci]

Currently translated at 100.0% (1078 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/servarr/radarr/pt_BR/

Co-authored-by: Florian <sephrat.flo@gmail.com>
Co-authored-by: memnos <fabrassi@gmail.com>
Co-authored-by: Csaba <csab0825@gmail.com>
Co-authored-by: batuhankrmn <batuhankrmn3@gmail.com>
Co-authored-by: Ivo Capanema <ivoliveirabh@hotmail.com>
2021-05-06 07:49:42 -04:00
Qstick
906f8c1049 Bump version 3.2.0 2021-05-04 07:40:13 -04:00
bakerboy448
27e871656e New: DiscordNotifier is now Notifiarr (#6263)
[common]
2021-05-03 22:14:06 +01:00
bakerboy448
1ff147c541 fix bot discord link [skip ci] 2021-05-02 21:43:21 +01:00
Mark McDowall
7028bfb082 Fixed broken tests
(cherry picked from commit 16156192c5f1abd929bcd825186b9f153507a46e)
2021-05-02 21:42:34 +01:00
Mark McDowall
efdb9c20d4 Fixed: Removing completed download from SABnzbd
Closes #4445

(cherry picked from commit c669be317fffa252d59851e9a8ca9e56032a01fb)
2021-05-02 21:42:34 +01:00
Qstick
9bf872c9fa Delete reaction.yml
[skip ci]
2021-05-01 10:10:45 -04:00
Csaba
feaeda9186 Translated using Weblate (Hungarian) [skip ci]
Currently translated at 100.0% (1078 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/servarr/radarr/hu/
2021-04-30 18:54:18 -04:00
Mark McDowall
e9cf9d05f5 Fixed: Refresh queue count when navigating Activity: Queue
(cherry picked from commit 0a2b109a3fe101e260b623d0768240ef8b7a47ae)
2021-04-29 22:47:32 -04:00
nitsua
a1211f54de Move the warning icona and download icon next to the release so it is never out of viewport 2021-04-29 22:46:51 -04:00
Qstick
c7b5e6204c Bump Version 3.1.1 2021-04-29 18:53:40 -04:00
ta264
788404ee27 Utilisation of amended coverlet package to fix randomly failing tests 2021-04-27 14:40:49 +01:00
bakerboy448
8ef4429b9e New: ISO 8601 Date in log files
Closes #6224
2021-04-25 10:36:14 -04:00
Robin Dadswell
7c5fc1e4b0 New: Adds SSL option to Kodi connections (#6219) 2021-04-24 18:43:26 +01:00
Robin Dadswell
c66f7abea5 Fixed: Parsing RSS with null values (#6220) 2021-04-24 18:43:06 +01:00
Robin Dadswell
ce6f52552a Fixed: Incorrectly grabbing revision downgrades (#6194) 2021-04-24 18:14:27 +01:00
Will Segatto
7807e2e13a Translated using Weblate (Portuguese (Brazil)) [skip ci]
Currently translated at 100.0% (1078 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt_BR/
2021-04-23 14:57:01 +00:00
Will Segatto
d5aa73fe8f Translated using Weblate (Portuguese) [skip ci]
Currently translated at 100.0% (1078 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt/
2021-04-23 14:57:00 +00:00
bakerboy448
cb5bf86d8e Update indexer category help text
closes #6209

(cherrypicked from sonarr 8d2d9078ff8f6daf50aef2dded3f96dae93252cc)
2021-04-22 20:22:47 -04:00
Robin Dadswell
8d17f0b1db Fixed: Round durationseconds in Kodi metadata (#6204) 2021-04-20 18:41:54 +01:00
angelsky11
2e62aad279 Translated using Weblate (Chinese (Simplified) (zh_CN)) [skip ci]
Currently translated at 100.0% (1078 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/zh_CN/
2021-04-20 08:56:58 +00:00
Mark McDowall
f2c9fcde7c New: Remove completed downloads from disk when removing from SABnzbd
(cherry picked from commit ac8283d7339b3d9e8ccf70f3d1ff031d1b0a71d1)
2021-04-19 15:04:22 -04:00
bakerboy448
2716bd6ae1 Fixed: Not capturing D-Z0N3 preceded with .-
Closes #6044
2021-04-17 21:29:35 -04:00
Mark McDowall
b67f6b98ae Set timeout for sending email
Closes #6171
2021-04-17 16:39:13 -04:00
Mark McDowall
7de2c8d41f Refactor Email and add more logging
(cherry picked from sonarr 5301620ecfd6cffb6014e986d1ce5b6bbaace93a)
closes #6168
2021-04-17 16:39:13 -04:00
Mark McDowall
5dabec5cc8 Fixed: Links to Sonarr now uses auth cookie
(cherry picked from commit a47cb2390eb5151ed19388def46b0bb165d27647)
2021-04-13 20:56:18 -04:00
Robin Dadswell
fc61687e82 New: Calendar iCal feed includes Digital Release events 2021-04-13 10:01:15 +01:00
nitsua
398fc4dca2 Add certification and runtime to search results (#6154) 2021-04-12 20:49:37 -04:00
Robin Dadswell
f883cab6db bump to Dotnet 5.0.5 2021-04-12 15:17:11 +01:00
Robin Dadswell
0a18898e36 Sentry logging exceptions and some trace logging
Co-authored-by: Taloth Saldono <Taloth@users.noreply.github.com>
2021-04-12 12:19:51 +01:00
Robin Dadswell
19d533b50a Fixed: Search Missing Movies on Calendar 2021-04-12 12:14:23 +01:00
bakerboy448
4ce98d689d New: Detect 'FRA' and 'FRE' as French Language
Fixes #6136
2021-04-09 21:18:10 +01:00
bakerboy448
ef9c1bf0a4 New: Detect 'castellano' as Spanish Language
Fixes #6152
2021-04-09 21:18:10 +01:00
bakerboy448
bec8312d61 remove a sonarr and show reference 2021-04-09 21:18:10 +01:00
Daniel Martin Gonzalez
ac5736c05b New: Add option to import from any Trakt user's personal list 2021-04-09 12:06:21 +01:00
Robin Dadswell
35abd99b3f Fixed: Some connection settings being invisibly enabled on creation 2021-04-08 15:21:01 +01:00
Florian
0fb8aabb41 Translated using Weblate (French) [skip ci]
Currently translated at 100.0% (1078 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/fr/
2021-04-07 17:57:08 +00:00
Qstick
cbc14a1a2c New: Make Rarbg category selection more intuitive
[common]

Fixes #6138
Fixes #6139
2021-04-03 11:56:09 -04:00
kingii98
627ab64fd0 Translated using Weblate (Russian) [skip ci]
Currently translated at 99.1% (1069 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ru/
2021-04-02 19:56:52 +00:00
Anonymous
7fdfd0cfb7 Translated using Weblate (Arabic) [skip ci]
Currently translated at 99.7% (1075 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ar/
2021-04-01 16:57:14 +00:00
Anonymous
4052e7160c Translated using Weblate (Chinese (Simplified) (zh_CN)) [skip ci]
Currently translated at 99.3% (1071 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/zh_CN/
2021-04-01 16:57:14 +00:00
Anonymous
f5d3defa52 Translated using Weblate (Portuguese (Brazil)) [skip ci]
Currently translated at 100.0% (1078 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt_BR/
2021-04-01 16:57:13 +00:00
Will Segatto
4cb87309b2 Translated using Weblate (Portuguese (Brazil)) [skip ci]
Currently translated at 100.0% (1078 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt_BR/
2021-04-01 16:57:13 +00:00
Anonymous
c6ec9c316d Translated using Weblate (Thai) [skip ci]
Currently translated at 99.4% (1072 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/th/
2021-04-01 16:57:12 +00:00
Anonymous
fc26f78558 Translated using Weblate (Bulgarian) [skip ci]
Currently translated at 99.4% (1072 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/bg/
2021-04-01 16:57:11 +00:00
Anonymous
4eaad6ca4b Translated using Weblate (Hindi) [skip ci]
Currently translated at 99.4% (1072 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hi/
2021-04-01 16:57:10 +00:00
Anonymous
7abbe2c8c0 Translated using Weblate (Romanian) [skip ci]
Currently translated at 98.9% (1067 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ro/
2021-04-01 16:57:09 +00:00
Anonymous
40839424be Translated using Weblate (Vietnamese) [skip ci]
Currently translated at 99.4% (1072 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/vi/
2021-04-01 16:57:09 +00:00
Anonymous
3234cff09c Translated using Weblate (Turkish) [skip ci]
Currently translated at 99.0% (1068 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/tr/
2021-04-01 16:57:08 +00:00
Anonymous
d715bb4437 Translated using Weblate (Swedish) [skip ci]
Currently translated at 99.4% (1072 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/sv/
2021-04-01 16:57:08 +00:00
Anonymous
df88d9a8bf Translated using Weblate (Russian) [skip ci]
Currently translated at 99.1% (1069 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ru/
2021-04-01 16:57:07 +00:00
Anonymous
a3f4695442 Translated using Weblate (Portuguese) [skip ci]
Currently translated at 100.0% (1078 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt/
2021-04-01 16:57:06 +00:00
Anonymous
321ce87d4d Translated using Weblate (Polish) [skip ci]
Currently translated at 99.3% (1071 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pl/
2021-04-01 16:57:05 +00:00
Anonymous
30e9a7a1b9 Translated using Weblate (Dutch) [skip ci]
Currently translated at 99.4% (1072 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/nl/
2021-04-01 16:57:05 +00:00
Anonymous
f26b00444f Translated using Weblate (Korean) [skip ci]
Currently translated at 99.4% (1072 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ko/
2021-04-01 16:57:04 +00:00
Anonymous
e088a7258e Translated using Weblate (Japanese) [skip ci]
Currently translated at 99.4% (1072 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ja/
2021-04-01 16:57:03 +00:00
Anonymous
f705692fb7 Translated using Weblate (Icelandic) [skip ci]
Currently translated at 99.4% (1072 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/is/
2021-04-01 16:57:03 +00:00
Anonymous
92feeb49a6 Translated using Weblate (Hungarian) [skip ci]
Currently translated at 100.0% (1078 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2021-04-01 16:57:02 +00:00
Anonymous
0d7d647291 Translated using Weblate (Hebrew) [skip ci]
Currently translated at 99.4% (1072 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/he/
2021-04-01 16:57:01 +00:00
Anonymous
2ddaef5c50 Translated using Weblate (Finnish) [skip ci]
Currently translated at 99.4% (1072 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/fi/
2021-04-01 16:57:01 +00:00
Anonymous
0aaf0f702b Translated using Weblate (Greek) [skip ci]
Currently translated at 98.9% (1067 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/el/
2021-04-01 16:57:00 +00:00
Anonymous
97e9d64397 Translated using Weblate (Danish) [skip ci]
Currently translated at 99.0% (1068 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/da/
2021-04-01 16:56:59 +00:00
Anonymous
f1583dcb13 Translated using Weblate (Czech) [skip ci]
Currently translated at 99.4% (1072 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/cs/
2021-04-01 16:56:58 +00:00
Anonymous
dc4dbf4610 Translated using Weblate (Italian) [skip ci]
Currently translated at 97.3% (1049 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/it/
2021-04-01 16:56:58 +00:00
Anonymous
bb21798c42 Translated using Weblate (Spanish) [skip ci]
Currently translated at 99.7% (1075 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/es/
2021-04-01 16:56:57 +00:00
Anonymous
07b2890f30 Translated using Weblate (French) [skip ci]
Currently translated at 99.7% (1075 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/fr/
2021-04-01 16:56:57 +00:00
Anonymous
d9534a857f Translated using Weblate (German) [skip ci]
Currently translated at 100.0% (1078 of 1078 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/de/
2021-04-01 16:56:51 +00:00
Robin Dadswell
2b17b5310e Fixed: Show size on disk when deleting movies 2021-03-31 13:03:49 +01:00
Anonymous
b330a15431 Translated using Weblate (Arabic) [skip ci]
Currently translated at 99.7% (1074 of 1077 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ar/
2021-03-31 08:57:12 +00:00
Anonymous
ad79250783 Translated using Weblate (Chinese (Simplified) (zh_CN)) [skip ci]
Currently translated at 99.3% (1070 of 1077 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/zh_CN/
2021-03-31 08:57:12 +00:00
Anonymous
845b96508f Translated using Weblate (Portuguese (Brazil)) [skip ci]
Currently translated at 99.0% (1067 of 1077 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt_BR/
2021-03-31 08:57:11 +00:00
Anonymous
cff95eb251 Translated using Weblate (Thai) [skip ci]
Currently translated at 99.4% (1071 of 1077 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/th/
2021-03-31 08:57:10 +00:00
Anonymous
d8542f4689 Translated using Weblate (Bulgarian) [skip ci]
Currently translated at 99.4% (1071 of 1077 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/bg/
2021-03-31 08:57:10 +00:00
Anonymous
99642f15fe Translated using Weblate (Hindi) [skip ci]
Currently translated at 99.4% (1071 of 1077 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hi/
2021-03-31 08:57:09 +00:00
Anonymous
5d1c600062 Translated using Weblate (Romanian) [skip ci]
Currently translated at 98.9% (1066 of 1077 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ro/
2021-03-31 08:57:08 +00:00
Anonymous
5cee22f207 Translated using Weblate (Vietnamese) [skip ci]
Currently translated at 99.4% (1071 of 1077 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/vi/
2021-03-31 08:57:07 +00:00
Anonymous
bb3871e9ea Translated using Weblate (Turkish) [skip ci]
Currently translated at 99.0% (1067 of 1077 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/tr/
2021-03-31 08:57:06 +00:00
Anonymous
434c095c54 Translated using Weblate (Swedish) [skip ci]
Currently translated at 99.4% (1071 of 1077 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/sv/
2021-03-31 08:57:06 +00:00
Anonymous
4808fb1429 Translated using Weblate (Russian) [skip ci]
Currently translated at 99.1% (1068 of 1077 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ru/
2021-03-31 08:57:05 +00:00
Anonymous
7dd6805512 Translated using Weblate (Portuguese) [skip ci]
Currently translated at 99.8% (1075 of 1077 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt/
2021-03-31 08:57:04 +00:00
Anonymous
c31070ab91 Translated using Weblate (Polish) [skip ci]
Currently translated at 99.3% (1070 of 1077 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pl/
2021-03-31 08:57:04 +00:00
Anonymous
e6974eb99e Translated using Weblate (Dutch) [skip ci]
Currently translated at 99.4% (1071 of 1077 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/nl/
2021-03-31 08:57:03 +00:00
Anonymous
a72e3d78d7 Translated using Weblate (Korean) [skip ci]
Currently translated at 99.4% (1071 of 1077 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ko/
2021-03-31 08:57:03 +00:00
Anonymous
7c707babff Translated using Weblate (Japanese) [skip ci]
Currently translated at 99.4% (1071 of 1077 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ja/
2021-03-31 08:57:02 +00:00
Anonymous
3b254fd54f Translated using Weblate (Icelandic) [skip ci]
Currently translated at 99.4% (1071 of 1077 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/is/
2021-03-31 08:57:01 +00:00
Anonymous
d9e9df6c26 Translated using Weblate (Hungarian) [skip ci]
Currently translated at 100.0% (1077 of 1077 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2021-03-31 08:57:00 +00:00
Anonymous
c6b969cd61 Translated using Weblate (Hebrew) [skip ci]
Currently translated at 99.4% (1071 of 1077 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/he/
2021-03-31 08:57:00 +00:00
Anonymous
5ccee34107 Translated using Weblate (Finnish) [skip ci]
Currently translated at 99.4% (1071 of 1077 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/fi/
2021-03-31 08:56:59 +00:00
Anonymous
b8724c384a Translated using Weblate (Greek) [skip ci]
Currently translated at 98.9% (1066 of 1077 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/el/
2021-03-31 08:56:58 +00:00
Anonymous
acd82e36c5 Translated using Weblate (Danish) [skip ci]
Currently translated at 99.0% (1067 of 1077 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/da/
2021-03-31 08:56:57 +00:00
Anonymous
afd2b7a29e Translated using Weblate (Czech) [skip ci]
Currently translated at 99.4% (1071 of 1077 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/cs/
2021-03-31 08:56:57 +00:00
Anonymous
74a26b02db Translated using Weblate (Italian) [skip ci]
Currently translated at 97.3% (1048 of 1077 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/it/
2021-03-31 08:56:53 +00:00
Anonymous
356926a445 Translated using Weblate (Spanish) [skip ci]
Currently translated at 99.7% (1074 of 1077 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/es/
2021-03-31 08:56:52 +00:00
Anonymous
19128e70e7 Translated using Weblate (French) [skip ci]
Currently translated at 99.7% (1074 of 1077 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/fr/
2021-03-31 08:56:51 +00:00
Anonymous
aa75bc241d Translated using Weblate (German) [skip ci]
Currently translated at 100.0% (1077 of 1077 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/de/
2021-03-31 08:56:51 +00:00
Robin Dadswell
88780f33a4 New: Health Check for Downloads to Root Folder
[common]
2021-03-30 08:58:36 +01:00
Qstick
1ed30713f5 Fixed: Perform normal search when id search fails
Fixes #6123
2021-03-29 22:33:10 -04:00
Qstick
3b3dbfec60 Fixed: Default Newznab cats and descriptions
Fixes #5965
2021-03-29 22:33:10 -04:00
bakerboy448
e011614570 Update parser tests to be generic
closes #5889
2021-03-29 22:23:07 -04:00
Qstick
2a1b2187ba Update bug_report.md 2021-03-29 22:13:50 -04:00
bakerboy448
ea3a6171fa Fixed: Cleanse Notifiarr APIKey from logs
[common]
2021-03-29 22:09:22 -04:00
woiza
c9477d4b5a Added /rootfolder to swagger.json 2021-03-29 22:20:08 +01:00
ta264
cc466b9e5b Prompt upgrade to mono version on DSM and FreeBSD 2021-03-24 13:21:17 -04:00
bakerboy448
e9ece8a319 Fixed: Typos in Naming Modal 2021-03-24 13:19:02 -04:00
Mark McDowall
22a5304ad8 Fixed: Interactive import modal horizontal scrolling on Firefox mobile
(cherry picked from commit 6c505937dacfa82e965adaaac407c888a1caacce)
2021-03-24 00:30:30 -04:00
Qstick
bcb16d484a Fix discord link in issue template 2021-03-23 17:17:59 -04:00
servarr[bot]
50ebd283dd Fixed: Unnecessary idle cpu usage
sonarr ref 4386

(cherry picked from commit 5a69801877eb72899dd9867c39a1b88b7114fe5b)

Co-authored-by: Taloth Saldono <Taloth@users.noreply.github.com>
2021-03-22 23:21:15 +00:00
bakerboy448
53b9332675 Fixed: Qbittorrent api errors when only one of two seed criteria was configured
Fixed: Qbittorrent API errors when only one of two seed criteria was configured
2021-03-21 21:47:33 +00:00
Robin Dadswell
bfc969c45c New: TMDb Lists using V4 api 2021-03-20 21:08:45 +00:00
Csaba
31770cd889 Translated using Weblate (Hungarian) [skip ci]
Currently translated at 100.0% (1076 of 1076 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2021-03-19 23:56:47 +00:00
Robin Dadswell
6267497fc0 Fixed: User TMBd lists paging 2021-03-18 09:05:33 +00:00
Robin Dadswell
efeb216383 New: Import List by TMDb Company ID 2021-03-18 09:05:33 +00:00
Robin Dadswell
8eb0f33718 Pull Sonarr commit 'Log Skyhook connection failures with more info.' (#6060)
* Log Skyhook connection failures with more info.

(cherry picked from commit 6672650b6b5e152e82fb3ad38a0a158d66c0b83d)

* Log Skyhook connection failures with more info.

(cherry picked from commit f57cf1561beb7ee4a1b3afcdf391488fc7c04d02)

Co-authored-by: Taloth Saldono <Taloth@users.noreply.github.com>
2021-03-17 15:50:03 +00:00
Havok Dan
176bf7ce32 Translated using Weblate (Portuguese (Brazil)) [skip ci]
Currently translated at 99.1% (1067 of 1076 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt_BR/
2021-03-15 11:56:46 +00:00
Qstick
4340b6b922 Add a few more cutoff spec logs 2021-03-14 23:38:15 -04:00
Qstick
ec2c7ec5af Bump to Net 5.0.4 2021-03-14 23:07:49 -04:00
nitsua
f3fb67a62e Fixed: Setting seed criteria while torrent is still being loaded by qbittorrent
Taloth fixed, gitextension dropped the cherry pick link
2021-03-14 22:56:17 -04:00
Taloth Saldono
ec8d1c4ae6 Fixed post-install update check not running
(cherry picked from commit eea6be459d5dbfafb9a5285046282c25c4697242)
2021-03-14 22:54:01 -04:00
Anonymous
ea3e523f8d Translated using Weblate (Arabic) [skip ci]
Currently translated at 99.9% (1075 of 1076 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ar/
2021-03-13 21:57:12 +00:00
Anonymous
e50550bb33 Translated using Weblate (Chinese (Simplified) (zh_CN)) [skip ci]
Currently translated at 99.5% (1071 of 1076 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/zh_CN/
2021-03-13 21:57:11 +00:00
Anonymous
e0957bfd20 Translated using Weblate (Portuguese (Brazil)) [skip ci]
Currently translated at 99.1% (1067 of 1076 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt_BR/
2021-03-13 21:57:10 +00:00
Anonymous
582322adfb Translated using Weblate (Thai) [skip ci]
Currently translated at 99.6% (1072 of 1076 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/th/
2021-03-13 21:57:10 +00:00
Anonymous
7a3964c42a Translated using Weblate (Bulgarian) [skip ci]
Currently translated at 99.6% (1072 of 1076 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/bg/
2021-03-13 21:57:09 +00:00
Anonymous
b2f6c4dcdc Translated using Weblate (Hindi) [skip ci]
Currently translated at 99.6% (1072 of 1076 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hi/
2021-03-13 21:57:07 +00:00
Anonymous
45f8700689 Translated using Weblate (Romanian) [skip ci]
Currently translated at 99.1% (1067 of 1076 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ro/
2021-03-13 21:57:06 +00:00
Anonymous
7c5fe561e0 Translated using Weblate (Vietnamese) [skip ci]
Currently translated at 99.6% (1072 of 1076 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/vi/
2021-03-13 21:57:06 +00:00
Anonymous
5145a4a211 Translated using Weblate (Turkish) [skip ci]
Currently translated at 99.2% (1068 of 1076 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/tr/
2021-03-13 21:57:05 +00:00
Anonymous
2aa2164763 Translated using Weblate (Swedish) [skip ci]
Currently translated at 99.6% (1072 of 1076 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/sv/
2021-03-13 21:57:04 +00:00
Anonymous
05bde70b14 Translated using Weblate (Russian) [skip ci]
Currently translated at 99.3% (1069 of 1076 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ru/
2021-03-13 21:57:03 +00:00
Anonymous
d8c138694d Translated using Weblate (Portuguese) [skip ci]
Currently translated at 100.0% (1076 of 1076 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt/
2021-03-13 21:57:02 +00:00
Anonymous
ad8504fa89 Translated using Weblate (Polish) [skip ci]
Currently translated at 99.5% (1071 of 1076 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pl/
2021-03-13 21:57:02 +00:00
Anonymous
2f26a955d1 Translated using Weblate (Dutch) [skip ci]
Currently translated at 99.6% (1072 of 1076 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/nl/
2021-03-13 21:57:01 +00:00
Anonymous
3d7808745b Translated using Weblate (Korean) [skip ci]
Currently translated at 99.6% (1072 of 1076 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ko/
2021-03-13 21:57:00 +00:00
Anonymous
1d7082593d Translated using Weblate (Japanese) [skip ci]
Currently translated at 99.6% (1072 of 1076 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ja/
2021-03-13 21:57:00 +00:00
Anonymous
82420d6956 Translated using Weblate (Icelandic) [skip ci]
Currently translated at 99.6% (1072 of 1076 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/is/
2021-03-13 21:56:59 +00:00
Anonymous
77b84be8d1 Translated using Weblate (Hungarian) [skip ci]
Currently translated at 100.0% (1076 of 1076 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2021-03-13 21:56:58 +00:00
Anonymous
24330beca9 Translated using Weblate (Hebrew) [skip ci]
Currently translated at 99.6% (1072 of 1076 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/he/
2021-03-13 21:56:57 +00:00
Anonymous
dd50f1c564 Translated using Weblate (Finnish) [skip ci]
Currently translated at 99.6% (1072 of 1076 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/fi/
2021-03-13 21:56:56 +00:00
Anonymous
4f63015a3e Translated using Weblate (Greek) [skip ci]
Currently translated at 99.1% (1067 of 1076 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/el/
2021-03-13 21:56:56 +00:00
Anonymous
568185c908 Translated using Weblate (Danish) [skip ci]
Currently translated at 99.2% (1068 of 1076 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/da/
2021-03-13 21:56:55 +00:00
Anonymous
b56525de27 Translated using Weblate (Czech) [skip ci]
Currently translated at 99.6% (1072 of 1076 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/cs/
2021-03-13 21:56:54 +00:00
Anonymous
4673736b67 Translated using Weblate (Italian) [skip ci]
Currently translated at 97.4% (1049 of 1076 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/it/
2021-03-13 21:56:54 +00:00
Anonymous
ffae7d6b31 Translated using Weblate (Spanish) [skip ci]
Currently translated at 99.9% (1075 of 1076 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/es/
2021-03-13 21:56:53 +00:00
Anonymous
42146fc366 Translated using Weblate (French) [skip ci]
Currently translated at 99.9% (1075 of 1076 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/fr/
2021-03-13 21:56:46 +00:00
Anonymous
de6a465370 Translated using Weblate (German) [skip ci]
Currently translated at 100.0% (1076 of 1076 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/de/
2021-03-13 21:56:45 +00:00
bakerboy448
bef12f10a8 Fixed: Missing Translates 2021-03-12 16:19:35 -05:00
bakerboy448
8064a43dee Fixed: Updates to System > More Info 2021-03-12 16:19:35 -05:00
nitsua
3c2e127601 Add a donations section to System for each arr
[Common]
2021-03-12 08:43:59 -05:00
ta264
6ea370870d Don't fail build on BSD integration test fail 2021-03-11 00:18:42 +00:00
servarr[bot]
f6f8934ce3 Make it clearer that Maximum size is the global limit.
(cherry picked from commit a848e575cd37eb3cc421a66fc6b4bbfb26782d8e)

Co-authored-by: Taloth Saldono <Taloth@users.noreply.github.com>
2021-03-10 22:21:48 +00:00
Will Segatto
3c59b6aac0 Translated using Weblate (Portuguese) [skip ci]
Currently translated at 100.0% (1073 of 1073 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt/
2021-03-09 23:56:43 +00:00
Robin Dadswell
2e0d603f4a Fixed: Spelling of Separate in Email Notification Settings 2021-03-09 22:23:11 +00:00
Mark McDowall
e8972f2273 Fixed: Don't set cookies for static resources
(cherry picked from commit 6619350f87a8f6ddedfea0cc8ca5b1e9ab006091)
2021-03-09 07:19:32 -05:00
Robin Dadswell
578ce25166 Fix: Consistent SSL option for Download Clients
Closes #4323

(cherry picked from commit 85f4cbe94c6f00352e0d4a38f337fb9417d3032b)
2021-03-08 22:59:11 +00:00
Mark McDowall
fc12770495 Fixed: Set SameSite=Strict for SonarrAuth cookie
(cherry picked from commit 675c72f02e7565a937b40c23ec27df6d86f95dc3)
2021-03-08 00:00:35 -05:00
Mark McDowall
5d5e66f0d7 Fixed: Cache headers for static resources
Towards #4356

(cherry picked from commit efd9fe9ad0f08aa55a59a3b8365d8bdd471ffa8b)
2021-03-07 20:14:23 -05:00
Mark McDowall
fe2af13fae Just one Application Version header
(cherry picked from commit ab502ffda41aaae8bccaa4f33c62e3fca61b277f)
2021-03-07 20:13:44 -05:00
Robin Dadswell
10205da1c3 Generalized RateLimit logic to all indexers based on indexer id
Co-authored-by: Taloth Saldono <Taloth@users.noreply.github.com>
2021-03-07 23:28:37 +00:00
Robin Dadswell
914d3764dc linting fix 2021-03-07 17:39:02 -05:00
Mark McDowall
59f8a4d2e2 Fixed: Remove selected in queue
(cherry picked from commit 4ed5fefcc6e362cb5c62ec639ee64571c97f9b5b)
2021-03-07 17:17:30 -05:00
Taloth Saldono
024000275d Added mechanism for package maintainers to produce a health check error.
(cherry picked from commit 7da02c236aa03e6aef011130526040c1cb8399fc)
2021-03-07 11:14:40 -05:00
Mark McDowall
a3723b5ad7 Fixed: Restoring a backup with a different API didn't reload properly 2021-03-07 10:58:26 -05:00
Qstick
e9e034d193 Fixed: Removal of previous service
Co-Authored-By: Mark McDowall <markus101@users.noreply.github.com>
2021-03-07 10:54:23 -05:00
Mark McDowall
52dbcfe852 Fixed: Queue refresh closing manual import from queue if items change
(cherry picked from commit e9818b9982d868648d714a37527f1b066486c5df)
2021-03-07 09:31:40 -05:00
Anonymous
f488fe75e0 Translated using Weblate (Hebrew) [skip ci]
Currently translated at 99.6% (1069 of 1073 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/he/
2021-03-06 23:57:10 +00:00
Anonymous
47e85e6388 Translated using Weblate (Finnish) [skip ci]
Currently translated at 99.6% (1069 of 1073 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/fi/
2021-03-06 23:57:09 +00:00
Anonymous
3264de3a96 Translated using Weblate (Polish) [skip ci]
Currently translated at 99.5% (1068 of 1073 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pl/
2021-03-06 23:57:08 +00:00
Anonymous
1c04aad92e Translated using Weblate (Greek) [skip ci]
Currently translated at 99.1% (1064 of 1073 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/el/
2021-03-06 23:57:07 +00:00
Anonymous
3b2cf55788 Translated using Weblate (Danish) [skip ci]
Currently translated at 99.2% (1065 of 1073 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/da/
2021-03-06 23:57:06 +00:00
Anonymous
b66ce95139 Translated using Weblate (Russian) [skip ci]
Currently translated at 99.3% (1066 of 1073 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ru/
2021-03-06 23:57:06 +00:00
Anonymous
f6753bf2c2 Translated using Weblate (Arabic) [skip ci]
Currently translated at 99.9% (1072 of 1073 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ar/
2021-03-06 23:57:04 +00:00
Anonymous
2a981c3bbc Translated using Weblate (Portuguese) [skip ci]
Currently translated at 99.9% (1072 of 1073 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt/
2021-03-06 23:57:03 +00:00
Anonymous
82004b6535 Translated using Weblate (French) [skip ci]
Currently translated at 99.9% (1072 of 1073 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/fr/
2021-03-06 23:57:03 +00:00
Anonymous
eb36a1c134 Translated using Weblate (Portuguese (Brazil)) [skip ci]
Currently translated at 99.1% (1064 of 1073 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt_BR/
2021-03-06 23:57:02 +00:00
Anonymous
02109437e4 Translated using Weblate (Spanish) [skip ci]
Currently translated at 99.9% (1072 of 1073 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/es/
2021-03-06 23:57:01 +00:00
Anonymous
38872ffc0a Translated using Weblate (Vietnamese) [skip ci]
Currently translated at 99.6% (1069 of 1073 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/vi/
2021-03-06 23:57:00 +00:00
Anonymous
5e940330b4 Translated using Weblate (Bulgarian) [skip ci]
Currently translated at 99.6% (1069 of 1073 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/bg/
2021-03-06 23:56:59 +00:00
Anonymous
53b3b58477 Translated using Weblate (Chinese (Simplified) (zh_CN)) [skip ci]
Currently translated at 99.5% (1068 of 1073 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/zh_CN/
2021-03-06 23:56:58 +00:00
Anonymous
d6101259ad Translated using Weblate (Dutch) [skip ci]
Currently translated at 99.6% (1069 of 1073 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/nl/
2021-03-06 23:56:57 +00:00
Anonymous
cf94178623 Translated using Weblate (Swedish) [skip ci]
Currently translated at 99.6% (1069 of 1073 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/sv/
2021-03-06 23:56:56 +00:00
Anonymous
999f6cbcd3 Translated using Weblate (Thai) [skip ci]
Currently translated at 99.6% (1069 of 1073 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/th/
2021-03-06 23:56:55 +00:00
Anonymous
f0191525a1 Translated using Weblate (Czech) [skip ci]
Currently translated at 99.6% (1069 of 1073 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/cs/
2021-03-06 23:56:54 +00:00
Anonymous
596803cf0b Translated using Weblate (Romanian) [skip ci]
Currently translated at 99.1% (1064 of 1073 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ro/
2021-03-06 23:56:53 +00:00
Anonymous
e90465c4ae Translated using Weblate (Hindi) [skip ci]
Currently translated at 99.6% (1069 of 1073 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hi/
2021-03-06 23:56:52 +00:00
Anonymous
0c21467411 Translated using Weblate (Icelandic) [skip ci]
Currently translated at 99.6% (1069 of 1073 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/is/
2021-03-06 23:56:51 +00:00
Anonymous
d9d1d8ecad Translated using Weblate (German) [skip ci]
Currently translated at 100.0% (1073 of 1073 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/de/
2021-03-06 23:56:50 +00:00
Anonymous
d9faeb11c2 Translated using Weblate (Japanese) [skip ci]
Currently translated at 99.6% (1069 of 1073 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ja/
2021-03-06 23:56:50 +00:00
Anonymous
7b13ec0dbd Translated using Weblate (Hungarian) [skip ci]
Currently translated at 100.0% (1073 of 1073 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2021-03-06 23:56:49 +00:00
Anonymous
6ffc57c106 Translated using Weblate (Italian) [skip ci]
Currently translated at 97.4% (1046 of 1073 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/it/
2021-03-06 23:56:48 +00:00
Anonymous
ee1bcb20dc Translated using Weblate (Korean) [skip ci]
Currently translated at 99.6% (1069 of 1073 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ko/
2021-03-06 23:56:47 +00:00
Anonymous
19d8604022 Translated using Weblate (Turkish) [skip ci]
Currently translated at 99.2% (1065 of 1073 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/tr/
2021-03-06 23:56:46 +00:00
Robin Dadswell
5926ca5d8a New: On Movie Delete and On Movie File Delete Notifications 2021-03-05 23:30:08 +00:00
Qstick
24de3fdee6 Remove trailing whitespace in HttpResponce 2021-03-04 13:29:15 -05:00
Qstick
be40a0d738 Run Analysis on Linux main build (leaving in failed state to test) 2021-03-04 13:16:44 -05:00
Florian
2b97352661 Translated using Weblate (French) [skip ci]
Currently translated at 99.9% (1067 of 1068 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/fr/
2021-03-04 12:56:42 +00:00
Qstick
88bc44f7ba Handle 303 and 307 redirects in Http Requests
(cherry picked from commit d6cf370bcdf0aa0d11010c5791332986afb50ddd)
2021-03-03 23:46:51 -05:00
nameproof
95527218af Translated using Weblate (Swedish) [skip ci]
Currently translated at 99.6% (1064 of 1068 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/sv/
2021-03-02 20:56:42 +00:00
Qstick
8a062d1cba Fixed: Remove AwesomeHD
Fixes #5978
2021-02-28 21:30:33 -05:00
Qstick
4acd885f19 Fixed: Cleanse Tracker Announce Keys from logs
Co-Authored-By: bakerboy448 <55419169+bakerboy448@users.noreply.github.com>
Co-Authored-By: Taloth <Taloth@users.noreply.github.com>
2021-02-28 21:30:33 -05:00
Qstick
a19c292779 Update Contributing [skip ci] 2021-02-28 21:11:10 -05:00
Qstick
aa9880b8dd New: Trakt Recommended Lists
Fixes #5980

Co-Authored-By: Michael Casey <7644535+Snarkenfaugister@users.noreply.github.com>
2021-02-28 21:09:15 -05:00
Qstick
abe8a06c11 Add Parse endpoint to V3 API 2021-02-28 20:51:48 -05:00
bakerboy448
7ea749e93c Fixed: TMDB link in discord notifcation from .com to .org
Closes: #5975
2021-02-26 16:50:59 -05:00
Qstick
f85fc5e578 Update Discord link on MoreInfo page 2021-02-26 12:38:43 -05:00
Mathieu Gagné
20e3a357a5 Updates typo 2021-02-25 21:50:14 -05:00
Qstick
60ac9d3ad7 Update Readme Discord Link 2021-02-24 21:55:58 -05:00
jpalenz77
e5fc423f29 Translated using Weblate (Spanish) [skip ci]
Currently translated at 100.0% (1068 of 1068 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/es/
2021-02-24 13:56:41 +00:00
Qstick
3f5ff23210 Update NuGet.config 2021-02-21 13:37:59 -05:00
nitsua
a9792973ee Fixed: Mark as Failed errors (#5939)
Originally by Markus McDowall (cherry picked from commit 12fafb24578d39df2eabd2331558b2da961fe8b6)

Co-Authored-By: Mark McDowall <markus101@users.noreply.github.com>

Fixes: #5907
Fixes: #5938
2021-02-14 10:28:30 -05:00
Qstick
90289de22c Fix Import List Root Folder Check to run on Import List update 2021-02-14 01:49:21 -05:00
Qstick
a68011988e Fixed: Error checking if files should be deleted after import won't leave import in limbo
Fixes #5917

Co-Authored-By: Mark McDowall <markus101@users.noreply.github.com>
2021-02-14 01:19:25 -05:00
Mark McDowall
2fd030bd5c New: Health check for import lists with missing root folders
New: Show missing root folder path in edit for Import List

Closes #5908

(cherry picked from commit ae196af2ad368d49fde2358f0987ed7650c7f29c)
2021-02-14 01:16:36 -05:00
Mark McDowall
33cd9f555e Fixed: Unable to close indexer category select input on mobile
(cherry picked from commit e42d1af5ff8f3eb987195caa7ec8a0bbaf4a00c3)
2021-02-14 01:16:36 -05:00
Robin Dadswell
94df76b6e6 Added default state for release date and cinema release on poster view (#5932) 2021-02-14 01:11:50 -05:00
woiza
065846464d Added RootFolderPath prop in swagger.json (#5880) [skip ci] 2021-02-14 01:01:27 -05:00
ta264
108609d064 New: .NET 5 support for FreeBSD 11+ 2021-02-11 09:17:33 +00:00
nitsua
0fcad533eb Fixed maintenance release not showing as such in AppUpdatedModal
Originally by Taloth 4559eed0ecf4b87b8aa16a86d2161ac72fbf54e5
2021-02-10 16:32:38 -05:00
ta264
c7b5a42bea Bump to .net to 5.0.3 2021-02-10 12:44:44 +00:00
bakerboy448
fa6b7ad287 Fixed: Map 4k H265 releases as 4k 2021-02-08 12:55:18 -05:00
bakerboy448
b51ce06e04 Fixed: Correctly Map 2160p releases that are BRRips as 2160p
Closes #5639
2021-02-08 12:55:18 -05:00
Mark McDowall
63cf10c29a Fixed: Restoring backup from zip file on disk
(cherry picked from commit 5960035d5d660a923e11b0300833b60c64271522)
2021-02-08 12:33:46 -05:00
Qstick
6b5e743583 Fixed: Don't ignore default Boolean in db serialization 2021-02-08 10:35:16 -05:00
Mark McDowall
743946b929 Update column properties when restoring persisted state
(cherry picked from commit 653db8290e0a7737348d911d322c4218c3b5b677)
2021-02-07 20:41:04 -05:00
Qstick
cf89533b37 Translated using Weblate (Arabic) [skip ci]
Currently translated at 100.0% (1068 of 1068 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ar/
2021-02-07 23:30:46 +00:00
Qstick
7031a8fe44 Added translation using Weblate (Arabic) [skip ci] 2021-02-07 23:26:19 +00:00
Matt Evans
d8c962a911 Fixed: Detect Dolby Vision as HDR
Co-Authored-By: Taloth <Taloth@users.noreply.github.com>

#5860
2021-02-07 17:24:12 -05:00
Qstick
6702c7d21b New: Add Arabic Language
Fixes #5883
2021-02-07 17:13:57 -05:00
Qstick
e64dd799e6 Add API Integration tests to ensure RemoteUrl is really remote 2021-02-07 17:04:44 -05:00
Qstick
47c2a15b70 Fixed: RemoteUrl overridden for Movie call with TmdbId param 2021-02-07 16:13:56 -05:00
Mark McDowall
4bf726cc66 Fixed: Table column order resetting after refresh
#4297

(cherry picked from commit 044cb563a6488c16916ea7617d1f91404330b06f)
2021-02-07 15:34:28 -05:00
Qstick
dd61480d60 Fixed: Settings fields being altered during save
[common]
Fixes #5871
2021-02-07 10:09:46 -05:00
Qstick
b0753ab153 Fix DownloadStation integration in DSM 7
[common]
Fixes #5567
2021-02-07 08:58:29 -05:00
TheCatLady
281afe7d9d Fix typo 2021-02-06 21:22:50 -05:00
TheCatLady
bd0fe16b52 Handle additional groups/encoders that do not follow -RlsGrp format 2021-02-06 21:22:50 -05:00
ta264
901723b8e3 New: Log out body for bad API requests 2021-02-06 21:21:43 -05:00
ta264
3a146ea667 Fixed: Adding indexers from presets 2021-02-06 21:21:43 -05:00
bakerboy448
88b9a47c79 bump chrome driver from 86 to 88
(cherry picked from commit d7813c2255b05e68931503a61c214fa2efc4bde8)
2021-02-06 16:07:23 -05:00
bakerboy448
fe5445ba31 update FR template [skip ci] 2021-02-06 11:26:58 -05:00
foXaCe
39f08b6283 Translated using Weblate (French) [skip ci]
Currently translated at 100.0% (1068 of 1068 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/fr/
2021-02-06 05:40:42 +00:00
Qstick
8831fd7b50 Fixed: Grab ImdbId and TmdbId from Rarbg results 2021-02-05 00:06:15 -05:00
Qstick
70e4324a7c Add crossorigin use-credentials attribute to manifest tag
[common]
Fixes #5863
2021-02-04 23:04:26 -05:00
Qstick
35a53c5627 New: Store FileId on Import History Events 2021-02-04 22:22:26 -05:00
Qstick
9b85f328a6 New: Allow Manual Search when Movie not monitored
Fixes #3235
2021-02-04 21:20:32 -05:00
bakerboy448
012fe53acc Fixed: Don't Parse TMDb id and IMDb id as group 2021-02-04 21:05:02 -05:00
bakerboy448
566c1405c2 New: Handle select groups that do not follow -RlsGrp format
Closes #3550
2021-02-04 21:05:02 -05:00
Qstick
83c637e8cb Fixed: Two VideoCodec naming token options
Fixes #5862
2021-02-04 20:54:44 -05:00
ta264
fd612f9258 Bump Dapper to 2.0.78 2021-02-04 20:22:04 -05:00
ta264
621edba82d New: Faster initial movie load 2021-02-04 20:22:04 -05:00
ta264
f03dfda2f0 New: Use System.Text.Json for Nancy and SignalR 2021-02-04 20:22:04 -05:00
Csaba
e623efefd3 Translated using Weblate (Hungarian) [skip ci]
Currently translated at 100.0% (1068 of 1068 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2021-02-04 09:40:41 +00:00
Qstick
7742a81782 Fixed: Use Tag Label instead of db Id for Kodi Metadata
Fixes #5713
2021-02-03 23:42:48 -05:00
Taloth Saldono
8588d2e2a3 Fixed: Validation of new qbittorrent max-ratio action config
(cherry picked from commit d1c3ae17491726320c58561548a21d83dae7fe7d)
2021-02-03 23:34:12 -05:00
bakerboy448
86c5f06c5b Fixed: Awesome HD website link updated (#5832) 2021-02-02 22:50:33 -05:00
nitsua
6d7fb3de25 Fixed: Status on search showing queue status instead of missing (#5854)
Fix status on search to show a downloading status when it is in queue
Fix for monitor not being set to true when adding from search
2021-02-02 21:57:27 -05:00
Qstick
a0d2af54e8 Fixed: Naming Token Regex can fail on certain Cultures (#5855)
[common]
2021-02-02 21:45:13 -05:00
Qstick
ad3ddd11cf [API Docs] Document Queue endpoints 2021-02-02 21:42:25 -05:00
foXaCe
1372abecc0 Translated using Weblate (French) [skip ci]
Currently translated at 99.9% (1067 of 1068 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/fr/
2021-02-02 23:40:48 +00:00
Havok Dan
3ddbd30604 Translated using Weblate (Portuguese (Brazil)) [skip ci]
Currently translated at 99.2% (1060 of 1068 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt_BR/
2021-02-02 23:40:42 +00:00
reloxx
eff2e11652 Translated using Weblate (German) [skip ci]
Currently translated at 100.0% (1068 of 1068 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/de/
2021-02-02 23:40:41 +00:00
Qstick
aa95781d5d Fixed: RootFolders may not load when adding collections
Fixes #5753
2021-02-01 23:20:30 -05:00
Taloth Saldono
6e46720d7b Fixed: FLAC audio channels in media info
(cherry picked from commit ab45910e5643aa8390797ae98af94eac690b3bb5)
2021-02-01 13:08:57 -05:00
Anonymous
7e70166b62 Translated using Weblate (Turkish) [skip ci]
Currently translated at 99.3% (1061 of 1068 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/tr/
2021-01-31 07:45:10 +00:00
Anonymous
444305aa65 Translated using Weblate (Danish) [skip ci]
Currently translated at 99.3% (1061 of 1068 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/da/
2021-01-31 07:45:09 +00:00
Anonymous
8fd1f75e21 Translated using Weblate (Portuguese (Brazil)) [skip ci]
Currently translated at 98.9% (1057 of 1068 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt_BR/
2021-01-31 07:45:07 +00:00
Anonymous
625cdab04a Translated using Weblate (Romanian) [skip ci]
Currently translated at 99.2% (1060 of 1068 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ro/
2021-01-31 07:45:07 +00:00
Anonymous
325a9c34e3 Translated using Weblate (Hindi) [skip ci]
Currently translated at 99.7% (1065 of 1068 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hi/
2021-01-31 07:45:06 +00:00
Anonymous
a7e4078c53 Translated using Weblate (German) [skip ci]
Currently translated at 99.7% (1065 of 1068 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/de/
2021-01-31 07:45:04 +00:00
Anonymous
d2bfddc182 Translated using Weblate (Italian) [skip ci]
Currently translated at 97.5% (1042 of 1068 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/it/
2021-01-31 07:45:03 +00:00
Anonymous
a6777015f7 Translated using Weblate (Hebrew) [skip ci]
Currently translated at 99.7% (1065 of 1068 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/he/
2021-01-31 07:45:02 +00:00
Anonymous
f8b211c561 Translated using Weblate (Polish) [skip ci]
Currently translated at 99.6% (1064 of 1068 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pl/
2021-01-31 07:45:01 +00:00
Anonymous
fce86db9c5 Translated using Weblate (Russian) [skip ci]
Currently translated at 99.4% (1062 of 1068 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ru/
2021-01-31 07:45:00 +00:00
Anonymous
2ff07a1368 Translated using Weblate (Czech) [skip ci]
Currently translated at 99.7% (1065 of 1068 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/cs/
2021-01-31 07:44:58 +00:00
Anonymous
208b17e9f5 Translated using Weblate (Thai) [skip ci]
Currently translated at 99.7% (1065 of 1068 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/th/
2021-01-31 07:44:57 +00:00
Anonymous
e0ce7b3294 Translated using Weblate (Spanish) [skip ci]
Currently translated at 99.9% (1067 of 1068 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/es/
2021-01-31 07:44:56 +00:00
Anonymous
7af75da694 Translated using Weblate (Finnish) [skip ci]
Currently translated at 99.7% (1065 of 1068 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/fi/
2021-01-31 07:44:55 +00:00
Anonymous
86213d91a2 Translated using Weblate (Chinese (Simplified) (zh_CN)) [skip ci]
Currently translated at 99.6% (1064 of 1068 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/zh_CN/
2021-01-31 07:44:54 +00:00
Anonymous
eed4a4ec68 Translated using Weblate (Swedish) [skip ci]
Currently translated at 99.7% (1065 of 1068 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/sv/
2021-01-31 07:44:53 +00:00
Anonymous
24d4390550 Translated using Weblate (Portuguese) [skip ci]
Currently translated at 99.9% (1067 of 1068 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt/
2021-01-31 07:44:52 +00:00
Anonymous
4983cb9745 Translated using Weblate (Hungarian) [skip ci]
Currently translated at 99.9% (1067 of 1068 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2021-01-31 07:44:51 +00:00
Anonymous
e71e386cb1 Translated using Weblate (Korean) [skip ci]
Currently translated at 99.7% (1065 of 1068 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ko/
2021-01-31 07:44:50 +00:00
Anonymous
d03a37ed60 Translated using Weblate (Icelandic) [skip ci]
Currently translated at 99.7% (1065 of 1068 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/is/
2021-01-31 07:44:49 +00:00
Anonymous
5ea88f6bcd Translated using Weblate (Greek) [skip ci]
Currently translated at 99.2% (1060 of 1068 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/el/
2021-01-31 07:44:48 +00:00
Anonymous
d74415a3d7 Translated using Weblate (Bulgarian) [skip ci]
Currently translated at 99.7% (1065 of 1068 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/bg/
2021-01-31 07:44:46 +00:00
Anonymous
f4deefd21e Translated using Weblate (Dutch) [skip ci]
Currently translated at 99.7% (1065 of 1068 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/nl/
2021-01-31 07:44:45 +00:00
Anonymous
6296356e42 Translated using Weblate (French) [skip ci]
Currently translated at 99.9% (1067 of 1068 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/fr/
2021-01-31 07:44:44 +00:00
Anonymous
a777880a91 Translated using Weblate (Vietnamese) [skip ci]
Currently translated at 99.7% (1065 of 1068 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/vi/
2021-01-31 07:44:43 +00:00
Anonymous
eb311f33ef Translated using Weblate (Japanese) [skip ci]
Currently translated at 99.7% (1065 of 1068 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ja/
2021-01-31 07:44:42 +00:00
bakerboy448
34ba436204 New: Additional Discover Enhancements 2021-01-31 02:16:32 -05:00
bakerboy448
45bb108127 Fixed: Movie Recommendations not excluding movies on the exclusion list 2021-01-31 02:16:32 -05:00
Taloth Saldono
0443cc34c6 Fixed enter in modal confirmation dialogs
(cherry picked from commit 930742ae2c69a530afe60f76a5824f2722540df8)
2021-01-31 02:12:27 -05:00
Mark McDowall
6ad6bf270f New: Parsing of '[WEB]' as WebDL
Fixes #5742

(cherry picked from commit ba2ca7ee2929f8ed5411e11e9a96001a37723dcc)
2021-01-31 02:02:42 -05:00
Jesse Chan
2237624333 Initial support for Flood (#5552)
* Initial support for Flood

* Flip StartOnAdd to AddPaused
2021-01-31 01:46:01 -05:00
Robin Dadswell
39d11b4669 replaced words with icons and matched the sort for consistency 2021-01-31 01:44:42 -05:00
Robin Dadswell
70faa123ee capitlisation 2021-01-31 01:44:42 -05:00
Robin Dadswell
f4869e6bc9 added words next to the release dates 2021-01-31 01:44:42 -05:00
Robin Dadswell
2a3fc81b8a added translation 2021-01-31 01:44:42 -05:00
Robin Dadswell
a2182e2fca removed unnecessary lines 2021-01-31 01:44:42 -05:00
Robin Dadswell
fe23c985a2 linting fixes 2021-01-31 01:44:42 -05:00
Robin Dadswell
4ffd0d2ddb Added missed property 2021-01-31 01:44:42 -05:00
Robin Dadswell
efd3aad6b0 started adding new option for cinema release 2021-01-31 01:44:42 -05:00
Robin Dadswell
11b4967629 tidied up unnecesarry lines and added translation line 2021-01-31 01:44:42 -05:00
Robin Dadswell
b6e46ad8fd updated date order to be InCinemas and then the earlier of either Physical/Digital Release 2021-01-31 01:44:42 -05:00
Robin Dadswell
c28b62da2a added sort by calculated release date 2021-01-31 01:44:42 -05:00
Robin Dadswell
600c7e3391 fixed releasedate sorting for inCinemas/digitalRelease/physicalRelease 2021-01-31 01:44:42 -05:00
Robin Dadswell
7107aeaddc minor fixes based on feedback 2021-01-31 01:44:42 -05:00
Robin Dadswell
913766f9af tidied up to only have getRelativeDate once per item 2021-01-31 01:44:42 -05:00
Robin Dadswell
9e7ea6f55b linting fix 2021-01-31 01:44:42 -05:00
Robin Dadswell
c2c4186965 formatted date 2021-01-31 01:44:42 -05:00
Robin Dadswell
1a755bd3c0 added option and start of info 2021-01-31 01:44:42 -05:00
Qstick
e5f66da087 New: Don't process files during Manual Import if there are more than 100 items
Fixes #5357

Co-Authored-By: Mark McDowall <markus101@users.noreply.github.com>
2021-01-31 01:17:01 -05:00
Qstick
2a93686360 New: Reprocess items after selection in Manual Import
Fixes #5199

Co-Authored-By: Mark McDowall <markus101@users.noreply.github.com>
2021-01-31 01:06:39 -05:00
Qstick
f33f004aa9 Fixed: Sorting interactive search by quality for unknown movie results
Fixes #5026
2021-01-31 00:39:44 -05:00
Qstick
30293bc7cc Cleanup MoviesSearchService 2021-01-30 23:24:52 -05:00
Qstick
a1db7a8f1e Fixed: Sorting in Interactive search duplicates results
Fixes #5760
Fixes #5765

Co-Authored-By: Mark McDowall <markus101@users.noreply.github.com>
Co-Authored-By: Taloth <Taloth@users.noreply.github.com>
2021-01-30 22:47:06 -05:00
Qstick
539fcb91c9 Bump Version to 3.1.0 2021-01-30 22:28:16 -05:00
Taloth Saldono
970848acc3 Fixed: OSX version detection
Fixes #5615
2021-01-30 22:27:08 -05:00
Mark McDowall
2b7a383886 Fixed: Managing display profiles on mobile
Fixes #5761

(cherry picked from commit c2fcdb445776d3898be7938216cf8ace65a1a236)
2021-01-30 22:22:25 -05:00
Qstick
4dc67c027b Fixed accounting for zero terminator in long path limitation
Fixes #5763

Co-Authored-By: Taloth <Taloth@users.noreply.github.com>
2021-01-30 22:20:39 -05:00
Taloth Saldono
a12395b468 Cleanup Movie Scanned Handler 2021-01-30 22:16:37 -05:00
Qstick
19dceb35fa Better task interval fetching
Fixes #5700

Co-Authored-By: Mark McDowall <markus101@users.noreply.github.com>
2021-01-30 22:04:15 -05:00
Qstick
b56043504b Simplify Quality size limit logic
Fixes #5701
2021-01-30 22:01:29 -05:00
Qstick
f2efdd8b6d Update indexer category parameters for the other nyaa
Fixes #5372
2021-01-30 22:01:04 -05:00
foXaCe
13b14f4d38 Translated using Weblate (French) [skip ci]
Currently translated at 100.0% (1062 of 1062 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/fr/
2021-01-31 00:40:46 +00:00
bakerboy448
ecc2996669 Fix: Correct wording for Blacklist Help Text 2021-01-30 19:40:41 -05:00
Taloth Saldono
1df31f9059 Fixed duplicate UpdateHistory items
(cherry picked from commit ad9e709d96a4c8635f52e9ee8623fa805e628de6)
2021-01-30 16:05:03 -05:00
Mark McDowall
79d4e0da80 Fixed: Update modal error
(cherry picked from commit 6d911581c3604a69b4a58c07da39ffb2a10fbf8d)
2021-01-30 16:05:03 -05:00
Taloth Saldono
0dcb07f170 Fixed corrupt Update History due to date-time notation 2021-01-30 16:05:03 -05:00
Taloth Saldono
e8040a0819 Fixed test 2021-01-30 16:05:03 -05:00
Qstick
553a8f2a0a New: Show previously installed version in Updates UI
Co-Authored-By: Taloth <Taloth@users.noreply.github.com>
2021-01-30 16:05:03 -05:00
Qstick
c892b827af Fixed: Don't run recommendations if Sqlite < 3.9
Fixes #5833
2021-01-30 14:40:44 -05:00
bakerboy448
1b36b512d7 fix sonarresque references 2021-01-28 14:25:13 -05:00
ta264
560dc1ffed Fix logging of startup location 2021-01-27 19:17:45 +00:00
ta264
14d43e6d6b Fixed: Built-in updater for mono version
The change to set ExecutingApplication in 26a04c9fd broke mono - it
returned the location of the mono executable and not radarr.

It seems that there was a change in behaviour in net5.0 which means we
can no longer use the same code in both cases.
2021-01-27 19:17:45 +00:00
Anonymous
bc1e131e49 Translated using Weblate (Chinese (Simplified) (zh_CN)) [skip ci]
Currently translated at 99.7% (1059 of 1062 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/zh_CN/
2021-01-27 18:40:59 +00:00
Anonymous
61509b53d1 Translated using Weblate (Portuguese (Brazil)) [skip ci]
Currently translated at 99.0% (1052 of 1062 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt_BR/
2021-01-27 18:40:58 +00:00
Anonymous
b7f680ac98 Translated using Weblate (Thai) [skip ci]
Currently translated at 99.8% (1060 of 1062 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/th/
2021-01-27 18:40:58 +00:00
Anonymous
c9526b7dfd Translated using Weblate (Bulgarian) [skip ci]
Currently translated at 99.8% (1060 of 1062 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/bg/
2021-01-27 18:40:57 +00:00
Anonymous
9f6bca0810 Translated using Weblate (Hindi) [skip ci]
Currently translated at 99.8% (1060 of 1062 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hi/
2021-01-27 18:40:56 +00:00
Anonymous
114549ca7b Translated using Weblate (Romanian) [skip ci]
Currently translated at 99.3% (1055 of 1062 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ro/
2021-01-27 18:40:55 +00:00
Anonymous
481863ca1f Translated using Weblate (Vietnamese) [skip ci]
Currently translated at 99.8% (1060 of 1062 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/vi/
2021-01-27 18:40:54 +00:00
Anonymous
13e55f7c37 Translated using Weblate (Turkish) [skip ci]
Currently translated at 99.4% (1056 of 1062 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/tr/
2021-01-27 18:40:54 +00:00
Anonymous
397442f32e Translated using Weblate (Swedish) [skip ci]
Currently translated at 99.8% (1060 of 1062 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/sv/
2021-01-27 18:40:53 +00:00
Anonymous
71ae27fc0c Translated using Weblate (Russian) [skip ci]
Currently translated at 99.5% (1057 of 1062 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ru/
2021-01-27 18:40:53 +00:00
Anonymous
286468e6ab Translated using Weblate (Portuguese) [skip ci]
Currently translated at 100.0% (1062 of 1062 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt/
2021-01-27 18:40:52 +00:00
Will Segatto
aafd82ba73 Translated using Weblate (Portuguese) [skip ci]
Currently translated at 100.0% (1062 of 1062 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt/
2021-01-27 18:40:52 +00:00
Anonymous
cff5c03af3 Translated using Weblate (Polish) [skip ci]
Currently translated at 99.7% (1059 of 1062 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pl/
2021-01-27 18:40:51 +00:00
Anonymous
c394fcc085 Translated using Weblate (Dutch) [skip ci]
Currently translated at 99.8% (1060 of 1062 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/nl/
2021-01-27 18:40:50 +00:00
Anonymous
a6f237bd70 Translated using Weblate (Korean) [skip ci]
Currently translated at 99.8% (1060 of 1062 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ko/
2021-01-27 18:40:50 +00:00
Anonymous
013915be62 Translated using Weblate (Japanese) [skip ci]
Currently translated at 99.8% (1060 of 1062 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ja/
2021-01-27 18:40:49 +00:00
Anonymous
9bec7d2ad0 Translated using Weblate (Icelandic) [skip ci]
Currently translated at 99.8% (1060 of 1062 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/is/
2021-01-27 18:40:49 +00:00
Anonymous
808797f403 Translated using Weblate (Hungarian) [skip ci]
Currently translated at 100.0% (1062 of 1062 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2021-01-27 18:40:48 +00:00
Anonymous
230a3df3f3 Translated using Weblate (Hebrew) [skip ci]
Currently translated at 99.8% (1060 of 1062 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/he/
2021-01-27 18:40:47 +00:00
Anonymous
26f2b6a3d9 Translated using Weblate (Finnish) [skip ci]
Currently translated at 99.8% (1060 of 1062 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/fi/
2021-01-27 18:40:47 +00:00
Anonymous
e039dd81df Translated using Weblate (Greek) [skip ci]
Currently translated at 99.3% (1055 of 1062 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/el/
2021-01-27 18:40:46 +00:00
Anonymous
cd6dd33359 Translated using Weblate (Danish) [skip ci]
Currently translated at 99.4% (1056 of 1062 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/da/
2021-01-27 18:40:45 +00:00
Anonymous
8803ef4dbd Translated using Weblate (Czech) [skip ci]
Currently translated at 99.8% (1060 of 1062 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/cs/
2021-01-27 18:40:45 +00:00
Anonymous
5f0b2c91a1 Translated using Weblate (Italian) [skip ci]
Currently translated at 97.6% (1037 of 1062 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/it/
2021-01-27 18:40:45 +00:00
Anonymous
1684fbb119 Translated using Weblate (Spanish) [skip ci]
Currently translated at 100.0% (1062 of 1062 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/es/
2021-01-27 18:40:41 +00:00
Anonymous
326bcdc18c Translated using Weblate (French) [skip ci]
Currently translated at 96.9% (1030 of 1062 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/fr/
2021-01-27 18:40:40 +00:00
Anonymous
ac0845eedf Translated using Weblate (German) [skip ci]
Currently translated at 99.8% (1060 of 1062 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/de/
2021-01-27 18:40:40 +00:00
woiza
aa00959010 Fix wrong type for Movie->titleSlug and Rating->value in api docs (#5824) [skip-ci] 2021-01-25 21:31:11 -05:00
Mark McDowall
986f8d43c0 Fixed: Update path before importing to ensure it hasn't changed
Closes #5654
Closes #5682
Closes #5780

(cherry picked from commit ca34f64eb0a8f26be66030988284b17c9d65f460)
2021-01-25 21:26:34 -05:00
Qstick
07f5312d43 Fixed: Don't double load Quality Definitions 2021-01-25 21:20:15 -05:00
ta264
7754589353 New: Check SQLite is at least version 3.9.0 2021-01-25 17:50:16 +00:00
ta264
8428de7a00 Fixed: Update Mono version check now minimum is 5.20 2021-01-25 17:50:16 +00:00
nameproof
d210082dad Translated using Weblate (Swedish) [skip ci]
Currently translated at 99.8% (1059 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/sv/
2021-01-25 16:40:43 +00:00
jpalenz77
4f9df6a114 Translated using Weblate (Spanish) [skip ci]
Currently translated at 100.0% (1061 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/es/
2021-01-25 16:40:39 +00:00
Havok Dan
a5726cd65e Translated using Weblate (Portuguese (Brazil)) [skip ci]
Currently translated at 99.0% (1051 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt_BR/
2021-01-25 16:40:38 +00:00
tenshiak
3bfb08c3ff Treat subbed as unknown language (#5677)
* Subbed releases shouldn't report as different lang

* Add tests for subbed releases

* Remove whitespace
2021-01-24 23:53:15 -05:00
Mark McDowall
ceeea9f7c6 Fixed: Queue refresh closing manual import from queue if items change
(cherry picked from commit f5d690aa7b703e6fc0cd7eeced177a28cfed4962)
2021-01-24 23:51:35 -05:00
Qstick
83b1e037d5 Fix Enum.GetName call 2021-01-24 23:35:34 -05:00
Qstick
9cc5343547 Fixed: HealthCheck level returns "Type" for Custom Scripts
Fixes #5803
2021-01-24 22:37:15 -05:00
ta264
e3cc4f4cb1 Fixed: Set musl status at compile time
[common]
2021-01-24 22:13:36 -05:00
Laurie Richards
f0bb614360 Fix: Youtube trailers do not play from scraped data
Currently the scraper puts an https:// link, this is not compatible with the YouTube plugin, it needs to be in plugin format with YouTube ID
2021-01-23 12:35:11 -05:00
jpalenz77
9241f4a40d Translated using Weblate (Spanish) [skip ci]
Currently translated at 100.0% (1061 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/es/
2021-01-21 14:40:36 +00:00
ta264
8e6157074d Use ghcr.io for test images 2021-01-19 21:43:53 +00:00
Csaba
188b02e5c7 Translated using Weblate (Hungarian) [skip ci]
Currently translated at 100.0% (1061 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2021-01-20 05:40:36 +00:00
bakerboy448
acb8e1d3c8 New: Renamed Quick Import to Move Automatically
Closes: #5667
2021-01-18 20:50:16 -05:00
bakerboy448
ab31cccfb2 .git updates for labels [skip ci] 2021-01-18 20:49:52 -05:00
bakerboy448
42afaa17ee update bug template [skip ci]
[common]
2021-01-18 20:49:52 -05:00
Qstick
c6123a076f Fix Tests from Site Image Changes 2021-01-18 13:17:10 -05:00
reloxx
0f0aaeef4b Translated using Weblate (German) [skip ci]
Currently translated at 100.0% (1061 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/de/
2021-01-18 13:05:47 +00:00
Qstick
2983e27dcd Fixed: Size Filter for Interactive Search missing ValueType 2021-01-18 08:05:38 -05:00
Qstick
a18036eed4 Add Logo to the Loading Screen for.... clarity 2021-01-18 08:05:38 -05:00
Qstick
2013e1f580 Replace SmtpClient with Mailkit 2021-01-18 08:05:38 -05:00
Qstick
1e396ead5e Bump NetFramework to 4.7.2 2021-01-18 08:05:38 -05:00
ta264
5ea3ad45cb Hack: ignore wonky depedencies in signalR js client 2021-01-18 08:05:38 -05:00
ta264
26a04c9fd1 New: Build with NET5 2021-01-18 08:05:38 -05:00
ta264
7f29af6d4d Move test harness packages to Directory.Build.props 2021-01-18 08:05:38 -05:00
Robin Dadswell
92f3a18e17 Fixed: Error handling when cannot create folder in Recycling Bin
(cherry picked from commit c05fccb90d64d92836603b55d4bd30d5cbdb96a5)
2021-01-17 14:06:30 -05:00
bakerboy448
7836246b05 Fixed: Parse standalone UHD as 4K if no other resolution info is present 2021-01-17 13:07:24 -05:00
Taloth Saldono
e2b2061ee1 Fixed: Unnecessary certificate validation errors on localhost/loopback
(cherry picked from commit c28cafba0a1b92f065541ebdae9db06ab1e5ac82)
2021-01-16 23:29:39 -05:00
Taloth Saldono
8d651e6f7a Fixed Agenda Time wrapping
(cherry picked from commit 63607ad5415e9a900696a32933551c27e336784c)
2021-01-16 23:29:12 -05:00
Mark McDowall
25c0ed1cd0 New: Treat Manual Bad in history as failed
(cherry picked from commit ab478fd64bdf2b710fb865006858a1a7dbdbad21)
2021-01-16 21:45:26 -05:00
Qstick
638db3d8d7 Fix name of max NumberInput in QualityDefinition.js
(cherry picked from commit a225b34806be6a206345acef3a6820df5a4be2e0)
2021-01-13 20:16:06 -05:00
nitsua
3a5d18f52d Add tooltips to the icons in the Files tab
Fixes: #5712
2021-01-13 17:44:12 -05:00
nitsua
c8d0a6a4ea Correct an instance of sonarr in one of the validation error output examples 2021-01-13 17:43:21 -05:00
nitsua
553b8b1945 Add movie status to the main search page if the movie is already in the db (label on small screen otherwise progress bar under poster)
Fix issues with yellow/grey movie status color not showing up properly
Refactor the getMovieStatus to be more generic
2021-01-11 22:52:48 -05:00
Qstick
e263d066da Remove TODO [skip ci] 2021-01-11 19:47:07 -05:00
Havok Dan
cdaf88efa1 Translated using Weblate (Portuguese (Brazil)) [skip ci]
Currently translated at 99.1% (1052 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt_BR/
2021-01-11 14:40:33 +00:00
bakerboy448
ea801665e4 Fixed: Correctly Parse Release Groups with a - in their name
[common]
2021-01-10 20:32:58 -05:00
bakerboy448
a81b6f41af Fixed: Parse 'Assembly Cut' as an Edition
Closes #5716
2021-01-10 18:10:17 -05:00
faxity
177d77db69 Translated using Weblate (Dutch) [skip ci]
Currently translated at 100.0% (1061 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/nl/
2021-01-10 13:40:33 +00:00
Qstick
8dafa29f8c Bump Radarr Version 3.0.2 2021-01-08 21:42:24 -05:00
Qstick
6b3bdb4f88 Bump Sentry 2.1.8 / SentryJS 5.29.2 2021-01-08 21:41:44 -05:00
Mark McDowall
56bb319934 Use createHandleActions for adding/removing commands so itemMap is synced properly
(cherry picked from commit 99be6a7e4065b77c910df6444a468fedc23e90cc)
2021-01-08 20:58:53 -05:00
Qstick
6de847a361 Fixed: Don't try to clean Update Folder if it doesn't exist
(cherry picked from commit 24f96fa2a4c1fd92f6433ec94edf6e55b7c83d89)
2021-01-08 20:56:16 -05:00
Mark McDowall
94591dea93 New: Removing update folder from temp folder during housekeeping
(cherry picked from commit c1d060ff58fc466f4a2cc232bff07294cf224a9a)
2021-01-08 20:55:16 -05:00
bakerboy448
5cb20b0dac Fixed: Parsing of 4Kto1080p as 1080p
(cherry picked from commit 056a699daf2ed0b8314f0b4d6bdec20cd24818c3)
2021-01-08 20:09:41 -05:00
bakerboy448
69954c50cb it's 2021 now [skip ci] 2021-01-08 17:32:11 -05:00
Anonymous
e5d72bb995 Translated using Weblate (Korean) [skip ci]
Currently translated at 100.0% (1061 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ko/
2021-01-07 21:15:57 +00:00
Anonymous
ae7c78ba48 Translated using Weblate (Hebrew) [skip ci]
Currently translated at 100.0% (1061 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/he/
2021-01-07 21:14:42 +00:00
Anonymous
84498d9e92 Translated using Weblate (Danish) [skip ci]
Currently translated at 99.6% (1057 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/da/
2021-01-07 21:13:33 +00:00
Anonymous
d12b75e223 Translated using Weblate (Russian) [skip ci]
Currently translated at 99.7% (1058 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ru/
2021-01-07 21:12:34 +00:00
Anonymous
b27367088e Translated using Weblate (Polish) [skip ci]
Currently translated at 99.9% (1060 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pl/
2021-01-07 21:12:32 +00:00
Anonymous
570bc87ab7 Translated using Weblate (Greek) [skip ci]
Currently translated at 99.5% (1056 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/el/
2021-01-07 21:11:25 +00:00
pannbiff
1ae4c53e27 Translated using Weblate (Swedish) [skip ci]
Currently translated at 100.0% (1061 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/sv/
2021-01-07 21:10:19 +00:00
Anonymous
cd84045161 Translated using Weblate (Vietnamese) [skip ci]
Currently translated at 100.0% (1061 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/vi/
2021-01-07 21:10:17 +00:00
Anonymous
667fdc64e3 Translated using Weblate (Spanish) [skip ci]
Currently translated at 97.9% (1039 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/es/
2021-01-07 21:09:02 +00:00
Anonymous
e424264504 Translated using Weblate (Portuguese) [skip ci]
Currently translated at 97.7% (1037 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt/
2021-01-07 21:08:44 +00:00
ta264
7716c31ebd Translated using Weblate (Bulgarian) [skip ci]
Currently translated at 100.0% (1061 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/bg/
2021-01-07 21:08:29 +00:00
Anonymous
6d729416d9 Translated using Weblate (Italian) [skip ci]
Currently translated at 97.8% (1038 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/it/
2021-01-07 21:07:20 +00:00
Anonymous
1668978fc6 Translated using Weblate (Chinese (Simplified) (zh_CN)) [skip ci]
Currently translated at 99.9% (1060 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/zh_CN/
2021-01-07 21:07:07 +00:00
Anonymous
874840c921 Translated using Weblate (Finnish) [skip ci]
Currently translated at 100.0% (1061 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/fi/
2021-01-07 21:07:05 +00:00
Anonymous
defd08addf Translated using Weblate (Icelandic) [skip ci]
Currently translated at 100.0% (1061 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/is/
2021-01-07 21:05:48 +00:00
Anonymous
c072e0a2ca Translated using Weblate (Turkish) [skip ci]
Currently translated at 99.6% (1057 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/tr/
2021-01-07 21:04:34 +00:00
Anonymous
d9ce781dfa Translated using Weblate (Dutch) [skip ci]
Currently translated at 99.9% (1060 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/nl/
2021-01-07 21:03:30 +00:00
Anonymous
a438d43c57 Translated using Weblate (French) [skip ci]
Currently translated at 97.1% (1031 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/fr/
2021-01-07 21:03:27 +00:00
ta264
81f0fd38ac Translated using Weblate (French) [skip ci]
Currently translated at 97.1% (1031 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/fr/
2021-01-07 21:03:17 +00:00
Anonymous
bbc9de464c Translated using Weblate (Portuguese (Brazil)) [skip ci]
Currently translated at 98.7% (1048 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt_BR/
2021-01-07 21:03:15 +00:00
ta264
0738e35583 Translated using Weblate (Hindi) [skip ci]
Currently translated at 100.0% (1061 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hi/
2021-01-07 21:03:14 +00:00
Anonymous
6e2f13f76b Translated using Weblate (Romanian) [skip ci]
Currently translated at 99.5% (1056 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ro/
2021-01-07 21:02:05 +00:00
Anonymous
2fb36f7c6c Translated using Weblate (Japanese) [skip ci]
Currently translated at 100.0% (1061 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ja/
2021-01-07 21:01:12 +00:00
Anonymous
5ead82903c Translated using Weblate (Czech) [skip ci]
Currently translated at 100.0% (1061 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/cs/
2021-01-07 20:59:51 +00:00
Anonymous
b4c03aae6d Translated using Weblate (Thai) [skip ci]
Currently translated at 100.0% (1061 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/th/
2021-01-07 20:58:38 +00:00
pannbiff
2a8a2ce3b0 Translated using Weblate (Swedish) [skip ci]
Currently translated at 100.0% (1061 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/sv/
2021-01-07 20:05:55 +00:00
Anonymous
c75a9dfe34 Translated using Weblate (Swedish) [skip ci]
Currently translated at 100.0% (1061 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/sv/
2021-01-07 20:05:55 +00:00
Qstick
7410a2db5d Remove validation test for From Addresses 2021-01-06 23:50:34 -05:00
Qstick
74c89e1d44 Enforce Selection of Credit Type on Person Lists
Fixes: #5684
2021-01-06 23:19:31 -05:00
Qstick
f120b84c43 Fixed: Allow "Pretty" From Address for Email
Fixes #5497
2021-01-06 23:11:15 -05:00
Qstick
88ec106ec6 Better validation for Imdb Ids from lists
Fixes #5674
2021-01-06 23:06:07 -05:00
wangerry
99b75a3089 Translated using Weblate (Chinese (Simplified)) [skip ci]
Currently translated at 98.6% (1047 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/zh_CN/
2021-01-06 11:43:28 +00:00
Forsefrits
50592d5bb6 Translated using Weblate (Dutch) [skip ci]
Currently translated at 96.6% (1025 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/nl/
2021-01-06 11:43:28 +00:00
Qstick
9fce6b1026 Really ignore ResizeObserver loop errors
(cherry picked from commit 99a7540fe4dc5160f6487cfe810e99166ee4582e)
2021-01-05 22:54:25 -05:00
Csaba
5f32627bfb Translated using Weblate (Hungarian) [skip ci]
Currently translated at 100.0% (1061 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2021-01-04 20:43:22 +00:00
Mark McDowall
56b658cc96 Fixed: Restored robots.txt
(cherry picked from commit 37501094d7256e4dbe13de33b392933f6d475553)
2020-12-31 16:39:23 -05:00
nitsua
c22ae12c1f Move the Movie column next to the Folder colum for easier matching (#5078)
Fixes: #5075
2020-12-30 23:30:55 -05:00
tenshiak
4bac44e893 New: Better Polish language Release Parsing (#5592)
* Parse Polish language

* Tests for parsing Polish language
2020-12-30 22:50:45 -05:00
jasimancas
1c58e26183 - Change <writer> to <credits> 2020-12-30 22:30:46 -05:00
jasimancas
4d965955d1 - Add rating 2020-12-30 22:30:46 -05:00
jasimancas
23b9d657ce no message 2020-12-30 22:30:46 -05:00
jasimancas
c046c3c229 - Added new ratings scheme
- Added the fields userrating, top250, outline, tagline, playcount, lastplayed, country empty for use in Kodi (need this field in database)
- Added Director and Writer
- Added overview to set (empty, need this field in database)
- Change ID to TMDB (previously IMDB)
- Set True TMDB UniqueID instead of IMDB
- Modified thumb's sentence
- Remove <tmdbid>
- Reordered XML to match Kodi schema (https://kodi.wiki/view/NFO_files/Movies)
2020-12-30 22:30:46 -05:00
jasimancas
f734ba2323 Schematize NFO in XBMC with Kodi format: https://kodi.wiki/view/NFO_files/Movies 2020-12-30 22:30:46 -05:00
bakerboy448
44fa36373c reword library import do not use for downloads text 2020-12-30 22:12:27 -05:00
bakerboy448
e6afcb68f3 update mac icon 2020-12-29 21:15:05 -05:00
Qstick
c8c900251a Update PushoverSettings.cs
Fixes #5635
2020-12-29 14:35:22 -05:00
pannbiff
915e7ce589 Translated using Weblate (Swedish) [skip ci]
Currently translated at 60.5% (642 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/sv/
2020-12-29 08:43:20 +00:00
Qstick
5bab42b712 Fix LocalizationServiceFixture Test 2020-12-27 21:56:25 -05:00
Qstick
f499e846d9 Fixed: Grab correct translation on case sensitive file systems 2020-12-27 21:07:20 -05:00
Qstick
80a744eff5 Fixed: 'iso-8859-2' is not a supported encoding name 2020-12-26 10:58:38 -05:00
Lizandra Candido da Silva
82dfaf0ea5 Translated using Weblate (Portuguese (Brazil)) [skip ci]
Currently translated at 98.7% (1048 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt_BR/
2020-12-26 09:43:18 +00:00
Qstick
8f78953191 Change Skip Refresh Log to Debug 2020-12-25 00:23:09 -05:00
Havok Dan
9261efa843 Translated using Weblate (Portuguese (Brazil)) [skip ci]
Currently translated at 98.7% (1048 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt_BR/
2020-12-24 21:43:18 +00:00
Qstick
b9a8166f9f Rename recentfeed.json to RecentFeed.json 2020-12-24 13:16:32 -05:00
Taloth Saldono
8cccde48c1 Fixed test file casing
(cherry picked from commit a7ca139e13375e73074508d74b9590f5446d3b09)
2020-12-24 13:16:32 -05:00
ta264
96384521c5 Fixed: FolderWritable check for CIFS shares mounted in Unix
This reverts commit 8c892a732e.
2020-12-24 17:29:38 +00:00
ta264
f90211b0d3 Fixed: UI hanging after scrolling movie list too fast
[common]
2020-12-24 12:21:17 -05:00
Qstick
d1bebd3e5b Fix RemotePathMappingCheckFixture 2020-12-24 02:43:29 -05:00
Qstick
a32bc21907 Fix Wiki Links for Hardcoded Fragments 2020-12-24 02:37:08 -05:00
Qstick
4f7dc94b94 Fix BasicRepository Tests when not on UTC
[common]
2020-12-24 01:02:24 -05:00
bakerboy448
5ca1a1d086 fix contributing port [skip ci] 2020-12-23 12:21:59 -05:00
angelsky11
7d763b8ba0 Translated using Weblate (Chinese (Simplified)) [skip ci]
Currently translated at 98.6% (1047 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/zh_CN/
2020-12-23 08:43:20 +00:00
reloxx
23c197bd3b Translated using Weblate (German) [skip ci]
Currently translated at 100.0% (1061 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/de/
2020-12-23 08:43:19 +00:00
ta264
8c892a732e Revert "Fixed: FolderWritable check for CIFS shares mounted in Unix"
This reverts commit a71874db8d.
2020-12-23 08:28:19 +00:00
bakerboy448
140547e42a Fixed: '/movie' URL Base breaking UI navigation 2020-12-22 14:59:34 -05:00
Qstick
3ab9af0663 New: Portuguese (Brazil) Language Support 2020-12-22 13:41:18 -05:00
ta264
a71874db8d Fixed: FolderWritable check for CIFS shares mounted in Unix
See https://github.com/dotnet/runtime/issues/42790

Implemented workaround in https://github.com/dotnet/runtime/issues/42790#issuecomment-700362617

[common]
2020-12-22 15:58:20 +00:00
angelsky11
226ee34fec Translated using Weblate (Chinese (Simplified)) [skip ci]
Currently translated at 97.7% (1037 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/zh_CN/
2020-12-22 15:17:20 +00:00
angelsky11
eb5add1198 Translated using Weblate (Chinese (Simplified)) [skip ci]
Currently translated at 82.8% (879 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/zh_CN/
2020-12-22 07:43:18 +00:00
bakerboy448
3759625386 New: Improved Discover recommendations
New: Movies existing in Library no longer show as a Discover Recommendations
2020-12-21 22:50:30 -05:00
angelsky11
b85f3f0e35 Translated using Weblate (Chinese (Simplified)) [skip ci]
Currently translated at 81.3% (863 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/zh_CN/
2020-12-21 18:25:55 +00:00
ta264
286b083da4 Fixed: Restoring large database backups
Remove Kestrel's default 28.6MB upload limit

[common]
2020-12-21 17:39:16 +00:00
angelsky11
912273b5dd Translated using Weblate (Chinese (Simplified)) [skip ci]
Currently translated at 80.5% (855 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/zh_CN/
2020-12-21 17:38:33 +00:00
angelsky11
73d1486392 Translated using Weblate (Chinese (Simplified)) [skip ci]
Currently translated at 70.4% (748 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/zh_CN/
2020-12-21 02:43:23 +00:00
angelsky11
063c6fb85c Translated using Weblate (Chinese (Simplified)) [skip ci]
Currently translated at 55.7% (592 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/zh_CN/
2020-12-20 07:43:29 +00:00
bakerboy448
c95573a7da fix readme wiki badge [skip ci]
also re order
2020-12-19 18:10:25 -05:00
Qstick
a6cf524fe7 Remove “Preview” from tab description text 2020-12-19 14:49:29 -05:00
reloxx
bb264e9a8a Translated using Weblate (German) [skip ci]
Currently translated at 100.0% (1061 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/de/
2020-12-18 20:43:15 +00:00
wangerry
ca0cabe985 Translated using Weblate (Chinese (Simplified)) [skip ci]
Currently translated at 11.8% (126 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/zh_CN/
2020-12-18 02:43:18 +00:00
Lizandra Candido da Silva
48c3aea9bb Translated using Weblate (Portuguese (Brazil)) [skip ci]
Currently translated at 98.3% (1044 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt_BR/
2020-12-17 07:43:17 +00:00
kingii98
4122b82601 Translated using Weblate (Russian) [skip ci]
Currently translated at 99.5% (1056 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ru/
2020-12-17 07:43:17 +00:00
Csaba
3abf67aaf0 Translated using Weblate (Hungarian) [skip ci]
Currently translated at 100.0% (1061 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2020-12-17 07:43:16 +00:00
pannbiff
2b860aab36 Translated using Weblate (Swedish) [skip ci]
Currently translated at 60.4% (641 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/sv/
2020-12-16 01:01:24 +00:00
bakerboy448
85bfcd72ff Fix: Bad Translate when removing Activity from queue
(also sort)
2020-12-15 20:01:18 -05:00
faxity
df15c636a4 Translated using Weblate (Dutch) [skip ci]
Currently translated at 88.0% (934 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/nl/
2020-12-15 05:34:23 +00:00
Forsefrits
1136de29e5 Translated using Weblate (Dutch) [skip ci]
Currently translated at 78.9% (838 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/nl/
2020-12-14 10:34:21 +00:00
Qstick
ffcb34f9f0 Ignore ResizeObserver loop limit errors
[common]
2020-12-12 14:04:16 -05:00
Qstick
877b6c0fcf Change to once a day for locking [skip ci] 2020-12-10 10:09:03 -05:00
reloxx
854c1a6866 Translated using Weblate (German) [skip ci]
Currently translated at 100.0% (1061 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/de/
2020-12-10 11:34:17 +00:00
hotio
cd8ed08376 Translated using Weblate (Dutch) [skip ci]
Currently translated at 77.1% (819 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/nl/
2020-12-09 22:34:19 +00:00
Csaba
b64c938188 Translated using Weblate (Hungarian) [skip ci]
Currently translated at 100.0% (1061 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2020-12-09 22:34:18 +00:00
reloxx
bd930f3b8d Translated using Weblate (German) [skip ci]
Currently translated at 100.0% (1061 of 1061 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/de/
2020-12-09 22:34:17 +00:00
Qstick
0880cd6ffc Allow manually run lock [skip ci] 2020-12-08 23:47:46 -05:00
Qstick
c2a96ff485 Run Lock every 10 minutes for test [skip ci] 2020-12-08 23:31:03 -05:00
Qstick
21e92e7fcf Update lock.yml 2020-12-08 23:15:46 -05:00
Qstick
96f0bb2f90 Lock Issues Workflow [skip ci] 2020-12-08 23:01:29 -05:00
Qstick
c0e1b97f29 Bump Version to 3.0.1 2020-12-08 22:01:53 -05:00
Qstick
fd4fb88ce1 New: Add Validations for Recycle Bin Folder
[common]
2020-12-08 21:53:42 -05:00
bakerboy448
003686d68f Fixed: Clarify Language around Importing a Library
New: Library Import renamed from (sidebar) Import to Library Import
2020-12-07 22:48:34 -05:00
wangerry
3e0e4ba1fd Translated using Weblate (Chinese (Simplified)) [skip ci]
Currently translated at 11.3% (120 of 1058 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/zh_CN/
2020-12-07 21:49:30 +00:00
Pavel
45ecfb05f4 Translated using Weblate (Russian) [skip ci]
Currently translated at 100.0% (1058 of 1058 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ru/
2020-12-07 21:49:27 +00:00
wangerry
ab620d373c Translated using Weblate (Chinese (Simplified)) [skip ci]
Currently translated at 0.1% (1 of 1058 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/zh_CN/
2020-12-06 12:48:37 +00:00
Pavel
9b3faefc8e Translated using Weblate (Russian) [skip ci]
Currently translated at 68.7% (727 of 1058 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ru/
2020-12-06 12:48:37 +00:00
Qstick
dd577f9db0 Added translation using Weblate (Chinese (Simplified)) [skip ci] 2020-12-05 14:35:07 +00:00
Qstick
5c0939d9df Deleted translation using Weblate (Chinese (Simplified)) [skip ci] 2020-12-05 14:33:44 +00:00
Qstick
bdb818b1b6 Added translation using Weblate (Chinese (Simplified)) [skip ci] 2020-12-05 14:26:06 +00:00
Qstick
4550ef13a4 Don't call AllMovies twice for each AddMovie validation 2020-12-04 23:23:20 -05:00
Lizandra Candido da Silva
98f0769c5d Translated using Weblate (Portuguese (Brazil)) [skip ci]
Currently translated at 98.3% (1041 of 1058 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt_BR/
2020-12-05 00:21:18 +00:00
jpalenz77
6f854ddd56 Translated using Weblate (Spanish) [skip ci]
Currently translated at 78.3% (829 of 1058 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/es/
2020-12-05 00:21:18 +00:00
pannbiff
98ae094733 Translated using Weblate (Swedish) [skip ci]
Currently translated at 60.3% (638 of 1058 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/sv/
2020-12-05 00:21:18 +00:00
Pavel
15e4dc18b9 Translated using Weblate (Russian) [skip ci]
Currently translated at 36.2% (383 of 1058 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ru/
2020-12-05 00:21:18 +00:00
Qstick
d5a7479b2e Fix typo in DeleteMovieFolder label [skip ci] 2020-12-04 19:21:00 -05:00
Na0mir
e1bff99a93 Translated using Weblate (French) [skip ci]
Currently translated at 84.0% (889 of 1058 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/fr/
2020-12-04 20:50:04 +00:00
Julien Orain
9d31aed9da fix feature requests link 2020-12-04 15:06:33 +00:00
Qstick
9fbc1df74c Fixed: Persist SearchOnAdd setting value in local cache 2020-12-03 22:34:42 -05:00
Qstick
2d9c77ec5e Fixed: If v0.2 DB Exists back it up during update 2020-12-03 21:12:31 -05:00
Havok Dan
ede7d37cae Translated using Weblate (Portuguese (Brazil)) [skip ci]
Currently translated at 96.2% (1018 of 1058 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt_BR/
2020-12-03 12:52:57 +00:00
Lizandra Candido da Silva
b580b4f829 Translated using Weblate (Portuguese (Brazil)) [skip ci]
Currently translated at 96.2% (1018 of 1058 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt_BR/
2020-12-03 12:52:56 +00:00
ta264
4f281669fc Fixed: Use QBittorrent category savepath for healthcheck
[common]
2020-12-02 22:25:35 -05:00
Lizandra Candido da Silva
9fbedc32ed Translated using Weblate (Portuguese (Brazil)) [skip ci]
Currently translated at 88.7% (939 of 1058 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt_BR/
2020-12-02 23:35:15 +00:00
Havok Dan
745007209e Translated using Weblate (Portuguese (Brazil)) [skip ci]
Currently translated at 88.7% (939 of 1058 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt_BR/
2020-12-02 23:35:11 +00:00
ta264
3e1cfe0033 Don't nag linux x86 users to switch to net core 2020-12-02 19:09:02 +00:00
Lizandra Candido da Silva
94b94041a8 Translated using Weblate (Portuguese (Brazil)) [skip ci]
Currently translated at 55.8% (591 of 1058 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt_BR/
2020-12-02 18:56:07 +00:00
Havok Dan
791a32b939 Translated using Weblate (Portuguese (Brazil)) [skip ci]
Currently translated at 55.8% (591 of 1058 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt_BR/
2020-12-02 18:56:07 +00:00
Lizandra Candido da Silva
af395f554e Translated using Weblate (Portuguese (Brazil)) [skip ci]
Currently translated at 54.2% (574 of 1058 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt_BR/
2020-12-02 18:49:07 +00:00
Lizandra Candido da Silva
39640a710f Translated using Weblate (Portuguese (Brazil)) [skip ci]
Currently translated at 53.5% (567 of 1058 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt_BR/
2020-12-02 18:47:21 +00:00
Havok Dan
6557f72600 Translated using Weblate (Portuguese (Brazil)) [skip ci]
Currently translated at 53.5% (567 of 1058 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt_BR/
2020-12-02 18:47:20 +00:00
Lizandra Candido da Silva
14b127e60d Translated using Weblate (Portuguese (Brazil)) [skip ci]
Currently translated at 47.3% (501 of 1058 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt_BR/
2020-12-02 18:20:18 +00:00
Havok Dan
e6e6205799 Translated using Weblate (Portuguese (Brazil)) [skip ci]
Currently translated at 47.3% (501 of 1058 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt_BR/
2020-12-02 18:20:18 +00:00
Qstick
083c4750fb Fixed: Leading zeros on MI Info
Fixes #5433
2020-12-01 23:15:41 -05:00
Qstick
099d0b6e67 More API Docs [skip ci] 2020-12-01 22:31:33 -05:00
pannbiff
17615e9ace Translated using Weblate (Swedish) [skip ci]
Currently translated at 60.2% (637 of 1058 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/sv/
2020-12-01 10:49:13 +00:00
Csaba
9179b9e0eb Translated using Weblate (Hungarian) [skip ci]
Currently translated at 100.0% (1058 of 1058 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2020-12-01 10:49:11 +00:00
reloxx
3389cc0cf8 Translated using Weblate (German) [skip ci]
Currently translated at 100.0% (1058 of 1058 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/de/
2020-12-01 10:49:10 +00:00
userdocs
21c297024f Update swagger.json (#5439) [skip ci]
Fix: /API Key/apikey generation when using the https://radarr.video/docs/api/ and setting an api key.

It currently generates this output which will not work with Radarr v3

```
curl -X GET "http://localhost:7878/api/v3/system/status?API%20Key=awawfaw" -H "accept: application/json"
```
2020-11-30 23:17:47 -05:00
Qstick
c4324c8e47 Fixed: Migrate fails for Sonarr contaminated DBs 2020-11-30 23:17:11 -05:00
nitsua
ac8fa1ee93 Adjust CSS so titles are wrap instead of truncate
Fixes #5350
2020-11-29 23:04:03 -05:00
memnos
93cff9c6ef Translated using Weblate (Italian) [skip ci]
Currently translated at 80.8% (855 of 1058 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/it/
2020-11-30 03:50:33 +00:00
reloxx
3d0e993a53 Translated using Weblate (German) [skip ci]
Currently translated at 100.0% (1058 of 1058 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/de/
2020-11-30 03:50:33 +00:00
bakerboy448
87330c8ab9 Fixed: Incorrect reference to preferred words in proper setting helptext (#5430) 2020-11-29 22:50:28 -05:00
Qstick
785ad5d62e Fixed: Sample generation failing for {Movie OriginalTitle}
Fixes #5426
2020-11-29 22:32:49 -05:00
bakerboy448
0ddf19d384 add API Doc Link to ReadMe [skip ci] 2020-11-29 16:45:41 -05:00
Qstick
30c9446165 Fixed: SQL Error on DownloadHistory Insert 2020-11-28 22:30:00 -05:00
Qstick
e104a9e261 Fixed: TypeError on Keyup in Firefox for MovieIndex and Details 2020-11-28 21:55:19 -05:00
Qstick
4c19fa0d05 Fixed: Schedule task should reflect Backup Interval change 2020-11-28 16:57:50 -05:00
Qstick
7cd29c48bb Fixed: Importlist sync setting and validator 2020-11-28 16:34:07 -05:00
pannbiff
1aa117331f Translated using Weblate (Swedish) [skip ci]
Currently translated at 53.8% (570 of 1058 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/sv/
2020-11-28 18:22:03 +00:00
pannbiff
89baa3ff6d Translated using Weblate (Swedish) [skip ci]
Currently translated at 53.5% (567 of 1058 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/sv/
2020-11-28 17:25:39 +00:00
Qstick
c4b729697d Fix Translation Error in Interactive Import Error Message [skip ci] 2020-11-28 12:25:33 -05:00
pannbiff
9052ef11a4 Translated using Weblate (Swedish) [skip ci]
Currently translated at 49.7% (527 of 1059 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/sv/
2020-11-28 16:05:53 +00:00
Qstick
3d5d884505 Default Branch to Master 2020-11-28 11:05:41 -05:00
Qstick
23a8b68869 Add refresh all to migration 177 for v0.2 migrations 2020-11-28 11:05:41 -05:00
Csaba
46ff3b7538 Translated using Weblate (Hungarian) [skip ci]
Currently translated at 100.0% (1059 of 1059 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2020-11-27 20:49:09 +00:00
reloxx
444b8e3436 Translated using Weblate (German) [skip ci]
Currently translated at 100.0% (1059 of 1059 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/de/
2020-11-27 20:49:08 +00:00
ta264
413669dbaa Add SortKey validation
[common]
2020-11-27 11:08:03 -05:00
Qstick
564a7554fc Fixed: Don't workaround DTS if audioChannels invalid 2020-11-27 01:10:09 -05:00
Qstick
c16ca46f11 Fixed: Tags View in UI Slow due to All() Movie Call 2020-11-27 00:38:47 -05:00
Qstick
a960716cec Fixed: Set CutoffUnmet correctly on MovieEditor response 2020-11-27 00:38:47 -05:00
Qstick
f55e44c591 Fixed: Incorrect translation key on MoveMovieModal 2020-11-27 00:38:47 -05:00
Qstick
17f8eb3aae Make list options advanced settings, Set min list sync 2020-11-27 00:38:47 -05:00
Qstick
082a0679d2 Fixed: Bad Translation on Restrictions Modal 2020-11-27 00:38:47 -05:00
Qstick
5182ac2a13 Fixed: Migrate Mediainfo properties that changed names 2020-11-27 00:37:53 -05:00
Gergo Schwahofer
0e1cb335a9 Translated using Weblate (Hungarian) [skip ci]
Currently translated at 100.0% (1059 of 1059 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2020-11-27 02:49:10 +00:00
reloxx
078cdc0cb0 Translated using Weblate (German) [skip ci]
Currently translated at 100.0% (1059 of 1059 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/de/
2020-11-27 02:49:09 +00:00
bakerboy448
0366029269 Fixed: Legend and Colors on calendar
Fixed: Streamline Legend in Index and Calendar
Fixed: Broken Translations
2020-11-26 08:16:44 -05:00
Qstick
6d011cdc48 Fixed: Availability shows incorrect for movies (doesn't consider delay setting) 2020-11-26 03:06:16 -05:00
Gergo Schwahofer
9f1833dd9e Translated using Weblate (Hungarian) [skip ci]
Currently translated at 100.0% (1059 of 1059 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2020-11-26 00:49:18 +00:00
Csaba
882b1d6427 Translated using Weblate (Hungarian) [skip ci]
Currently translated at 100.0% (1059 of 1059 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2020-11-26 00:49:17 +00:00
reloxx
d73f1fe954 Translated using Weblate (German) [skip ci]
Currently translated at 100.0% (1059 of 1059 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/de/
2020-11-26 00:49:17 +00:00
Csaba
b707dcc20f Translated using Weblate (Hungarian) [skip ci]
Currently translated at 99.9% (1058 of 1059 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2020-11-25 10:54:24 +00:00
Csaba
c1e1df3c22 Translated using Weblate (Hungarian) [skip ci]
Currently translated at 99.8% (1057 of 1059 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2020-11-25 10:54:00 +00:00
Csaba
2297b9cc14 Translated using Weblate (Hungarian) [skip ci]
Currently translated at 99.7% (1056 of 1059 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2020-11-25 10:53:48 +00:00
Csaba
9225e04f80 Translated using Weblate (Hungarian) [skip ci]
Currently translated at 99.3% (1052 of 1059 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2020-11-25 10:52:24 +00:00
Gergo Schwahofer
7496ae0b69 Translated using Weblate (Hungarian) [skip ci]
Currently translated at 99.2% (1051 of 1059 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2020-11-25 10:52:02 +00:00
Csaba
3443738e21 Translated using Weblate (Hungarian) [skip ci]
Currently translated at 99.2% (1051 of 1059 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2020-11-25 10:52:02 +00:00
Gergo Schwahofer
f632386b5c Translated using Weblate (Hungarian) [skip ci]
Currently translated at 98.9% (1048 of 1059 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2020-11-25 10:51:20 +00:00
Gergo Schwahofer
4f26081f9d Translated using Weblate (Hungarian) [skip ci]
Currently translated at 89.0% (943 of 1059 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2020-11-25 10:02:52 +00:00
Csaba
8c5709aec8 Translated using Weblate (Hungarian) [skip ci]
Currently translated at 89.0% (943 of 1059 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2020-11-25 10:02:51 +00:00
Gergo Schwahofer
6f046293b8 Translated using Weblate (Hungarian) [skip ci]
Currently translated at 88.8% (941 of 1059 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2020-11-25 10:02:21 +00:00
Csaba
c9519dc4b6 Translated using Weblate (Hungarian) [skip ci]
Currently translated at 88.8% (941 of 1059 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2020-11-25 10:02:20 +00:00
Gergo Schwahofer
1c1b8902c2 Translated using Weblate (Hungarian) [skip ci]
Currently translated at 88.2% (935 of 1059 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2020-11-25 09:59:38 +00:00
Csaba
053bce7a0f Translated using Weblate (Hungarian) [skip ci]
Currently translated at 87.0% (922 of 1059 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2020-11-25 09:54:48 +00:00
Csaba
b3476c4b28 Translated using Weblate (Hungarian) [skip ci]
Currently translated at 86.6% (918 of 1059 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2020-11-25 09:54:09 +00:00
Csaba
1b372c41ca Translated using Weblate (Hungarian) [skip ci]
Currently translated at 86.2% (913 of 1059 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2020-11-25 09:52:40 +00:00
Csaba
624a7ad00a Translated using Weblate (Hungarian) [skip ci]
Currently translated at 85.6% (907 of 1059 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2020-11-25 09:50:32 +00:00
Gergo Schwahofer
5079db5dd8 Translated using Weblate (Hungarian) [skip ci]
Currently translated at 85.6% (907 of 1059 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2020-11-25 09:50:31 +00:00
Qstick
a8f517b64f Update README.md 2020-11-25 00:45:26 -05:00
pannbiff
2ca31afa8a Translated using Weblate (Swedish) [skip ci]
Currently translated at 44.1% (468 of 1059 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/sv/
2020-11-25 04:49:13 +00:00
jpalenz77
5eb5e5d5ab Translated using Weblate (Spanish) [skip ci]
Currently translated at 78.2% (829 of 1059 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/es/
2020-11-25 04:49:12 +00:00
Qstick
a152ab2b56 Fixed: Log only for quality mismatch between release and file 2020-11-24 23:10:02 -05:00
Qstick
6bfd9f0e18 [API Docs] Fix minor issues with tags and types [skip ci] 2020-11-24 22:43:49 -05:00
Qstick
bb418f7191 Fix bug template 'about' length [skip ci] 2020-11-24 22:19:08 -05:00
bakerboy448
e88b4b10e9 update readme [skip ci] 2020-11-24 22:13:09 -05:00
bakerboy448
f72a56f88a use lidarr's contributing as a new template for radarr [skip ci]
-needs review
2020-11-24 21:05:58 -05:00
bakerboy448
c55a832934 update GH Issue Templates [skip ci] 2020-11-24 20:56:31 -05:00
reloxx
ff62ac22e8 Translated using Weblate (German) [skip ci]
Currently translated at 100.0% (859 of 859 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/de/
2020-11-24 16:22:41 +00:00
bakerboy448
699d2be938 New: Add Missing Translations 2020-11-24 11:22:35 -05:00
Qstick
86118b4537 More API docs [skip ci] 2020-11-23 22:09:36 -05:00
kingii98
1a7ead0e51 Translated using Weblate (Russian) [skip ci]
Currently translated at 8.8% (76 of 859 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ru/
2020-11-24 00:49:14 +00:00
Csaba
dbd241bbc5 Translated using Weblate (Hungarian) [skip ci]
Currently translated at 100.0% (859 of 859 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2020-11-24 00:49:13 +00:00
memnos
1ee270114b Translated using Weblate (Italian) [skip ci]
Currently translated at 100.0% (859 of 859 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/it/
2020-11-24 00:49:08 +00:00
ta264
f90133d588 Fixed: Set correct permissions on Radarr.Update before starting 2020-11-23 19:41:25 +00:00
bakerboy448
bb721272ca New: All Wiki links now use the consolidated Servarr wiki 2020-11-22 23:14:00 -05:00
Qstick
e3ac7d6fc5 Fixed binary execute permissions for osx and Radarr
Fixes #5388

Co-Authored-By: Taloth <Taloth@users.noreply.github.com>
2020-11-22 11:25:40 -05:00
Qstick
28e2834c5d V3 API Docs Updates [skip ci] 2020-11-22 02:50:38 -05:00
Qstick
9c77399379 New: Dynamic Select and UMask Fields
Fixes #5380
Fixes #5348
Fixes #5167
Fixes #5166

Co-Authored-By: Taloth <Taloth@users.noreply.github.com>
2020-11-22 01:01:50 -05:00
Qstick
73ce77f1ca Branch to nightly so tests pass 2020-11-21 23:53:48 -05:00
Qstick
984d0101bf Basic json linting for translations (structure, dupekeys, etc) 2020-11-21 23:13:39 -05:00
Qstick
f9242af246 Use Arch and Runtime when getting list of update changes 2020-11-21 23:12:38 -05:00
reloxx
0b5a40a2b7 Translated using Weblate (German) [skip ci]
Currently translated at 100.0% (853 of 853 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/de/
2020-11-18 20:49:05 +00:00
Qstick
0221df15e2 Added translation using Weblate (Portuguese (Brazil)) [skip ci] 2020-11-18 17:35:29 +00:00
Daniel Martin Gonzalez
c6294b71ae New: Add Spain to list of Certifications 2020-11-18 11:47:58 -05:00
Will Segatto
2fbd829b93 Translated using Weblate (Portuguese) [skip ci]
Currently translated at 100.0% (853 of 853 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt/
2020-11-18 05:49:06 +00:00
Csaba
5ed4a386dd Translated using Weblate (Hungarian) [skip ci]
Currently translated at 100.0% (853 of 853 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2020-11-18 05:49:05 +00:00
Qstick
f9733eea7a Fixed: Use audioChannels_Original if it exists in MI 2020-11-17 23:46:57 -05:00
Qstick
59f9ff7a22 Fixed: Tweak Edition Regex to prevent 'Special' false positives
Fixes #4932
2020-11-17 23:45:42 -05:00
Qstick
460c86911c Fixed: Scene Name not being stored properly during import if not linked to a download client item and filename is obfuscated
Fixes #5370
Fixes $5358
Fixes #5361
2020-11-17 22:22:31 -05:00
Qstick
a04f375eb1 Fixed: Files table not showing correct quality meets cutoff post edit
Fixes #4668
2020-11-17 22:04:56 -05:00
Qstick
7792c159b4 Movie Windows/Posix Disk Tests to correct fixtures
Fixes: #4678
2020-11-17 21:52:22 -05:00
Qstick
6beb8c8b05 New: Add Australia to list of Certifications
Fixes #5351
2020-11-17 21:19:04 -05:00
Qstick
6d0019ad00 New: Look for and use {tmdb} tag in folder name on import
Fixes #5213
2020-11-17 15:55:55 -05:00
Qstick
ef8ba37d0e Lock bot config [skip ci] 2020-11-17 13:57:55 -05:00
Taloth Saldono
5e1b197702 Give systemd a bit more time to restart sonarr after update
(cherry picked from commit 5fced70948c1e8d3d5e3c4747516507f87506697)
2020-11-16 17:36:14 -05:00
ta264
4d43c3eb2b Fixed: Import single file torrents with a folder from QBittorrent 2020-11-16 17:34:31 -05:00
memnos
4c1de51b52 Translated using Weblate (Italian) [skip ci]
Currently translated at 100.0% (851 of 851 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/it/
2020-11-16 16:32:29 +00:00
bakerboy448
bdb61e263e Fix: Update monitor options to be displayed in a more user friendly way 2020-11-16 11:32:24 -05:00
pannbiff
616ae471d1 Translated using Weblate (Swedish) [skip ci]
Currently translated at 54.8% (467 of 851 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/sv/
2020-11-16 09:49:05 +00:00
Qstick
ce11d4c7bf Bump Mediainfo to 20.09 for Mac 2020-11-15 01:05:41 -05:00
Qstick
a7ba19ddd8 Build Win x86 zip and installer 2020-11-15 01:05:41 -05:00
Qstick
784913a85b Fixed: Prevent null when no candidate in ParsingService 2020-11-15 00:12:53 -05:00
Qstick
67ebf49b21 Revert "New: Change Add Movie Monitor Selection from Dropdown to Checkbox (#5319)"
This reverts commit 897bfa04a6.
2020-11-14 23:11:37 -05:00
Qstick
0e5f43e139 Fixed: Same movie different year gets imported incorrectly 2020-11-14 23:11:33 -05:00
Qstick
d5addfa12f Fixed: Disabled List items show up in Discovery
Fixes #5328
2020-11-14 22:34:05 -05:00
Taloth Saldono
96852c9f96 Protect against Qbittorrent edgecase if users add torrents manually with Keep top-level folder disabled
(cherry picked from commit 05820ac272ee976fcc0a7b17f3e9cc987cb0d230)
2020-11-14 18:35:02 -05:00
Qstick
7311a1e837 fixup! Fix Unit Tests 2020-11-14 01:52:28 -05:00
Qstick
a591227052 Fixed: Nested Folder in MovieFolder Naming not created automatically 2020-11-14 01:52:28 -05:00
bakerboy448
897bfa04a6 New: Change Add Movie Monitor Selection from Dropdown to Checkbox (#5319)
* New: Change Add Movie Monitor Selection from Dropdown to Checkbox

* Fix Monitored Value not storing (bool changes)

* address discord comments
2020-11-14 01:18:41 -05:00
ta264
3e795d290b Fixed: Get actual file names from QBittorrent API (#5226)
* Fixed: Get actual file names from QBittorrent API

Previously we were assuming that the output filename was the category
output dir + the torrent name.  This isn't true if the torrent has
been renamed or sanitized.
2020-11-14 00:27:07 -05:00
Mark McDowall
b7719662a7 Return max tooltip width
(cherry picked from commit fe0d8bb7da27e0f34b5db166ee54033f292b1006)
2020-11-13 21:12:49 -05:00
Taloth Saldono
f1b7f5b355 Bumped Sabnzbd default history request size from 30 to 60
(cherry picked from commit 8b2550cef0381a07c466044063c9d8c2be4d89c3)
2020-11-13 21:10:27 -05:00
Csaba
164a7f0f8c Translated using Weblate (Hungarian) [skip ci]
Currently translated at 100.0% (851 of 851 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2020-11-13 22:49:04 +00:00
reloxx
cfa0e9aa19 Translated using Weblate (German) [skip ci]
Currently translated at 100.0% (851 of 851 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/de/
2020-11-13 22:49:04 +00:00
geogolem
d9ff8e0d4a Fixed: Clarify Status Filter, Add ConsideredAvailable, MinAvailability Filters (#4924) 2020-11-12 23:13:39 -05:00
Qstick
b888b044d6 Fixed: False Positives for RemotePath check with Deluge 2020-11-12 22:29:11 -05:00
Qstick
9be8d438e7 Tweak recommended wording [skip ci] 2020-11-12 21:47:04 -05:00
Qstick
642783d3de Add "Screenshot if UI change" to PR template [skip ci] 2020-11-12 21:31:38 -05:00
Edward Scroop
cf08f483b2 Update README.md (#5307) [skip ci]
As development of features for Radarr v2 has stopped, ensure that new contributors can begin developing Radarr v3 by changing reference to NZbdrone.
2020-11-12 21:28:54 -05:00
bakerboy448
f6c630ee9e Add Discover Recommended tooltip (#5318) 2020-11-12 21:22:38 -05:00
geogolem
f5a46b14ac Add NeutralLanguage to Radarr.csproj to appease VS 16.8 2020-11-12 21:18:10 -05:00
Qstick
3a8ca21a17 Add NeutralLanguage to NzbDrone.Common to appease VS 16.8 2020-11-12 20:50:52 -05:00
Qstick
70a9a68ed3 Bump to dotnet core 3.1.10 2020-11-11 23:26:07 -05:00
Qstick
dc96857e66 Fixed: Console App Icon 2020-11-11 22:13:54 -05:00
Qstick
bb5f5eeee6 Fixed: Correctly storing v0 version during import, allowing them to be upgraded to v1 later
Fixes #5305

Co-Authored-By: Mark McDowall <markus101@users.noreply.github.com>
2020-11-11 21:37:45 -05:00
memnos
d7938b6282 Translated using Weblate (Italian) [skip ci]
Currently translated at 100.0% (848 of 848 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/it/
2020-11-12 01:49:04 +00:00
Qstick
c21e733d57 Fixed: Clarify List Clean options, Add warning on removeAndDelete selection 2020-11-10 23:35:20 -05:00
pannbiff
75866b135c Translated using Weblate (Swedish) [skip ci]
Currently translated at 52.3% (443 of 847 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/sv/
2020-11-09 03:49:03 +00:00
kingii98
5aaf8dcf0e Translated using Weblate (Russian) [skip ci]
Currently translated at 8.3% (71 of 847 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ru/
2020-11-09 03:49:02 +00:00
Csaba
1dcff1b742 Translated using Weblate (Hungarian) [skip ci]
Currently translated at 100.0% (847 of 847 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2020-11-06 23:49:01 +00:00
Qstick
adedbc1bed Rename DiscordNotifier for less user confusion 2020-11-05 22:01:40 -05:00
Qstick
4fa1955008 Fixed: Handle Null in Discord Notification if no images 2020-11-05 22:01:40 -05:00
Mark McDowall
bab9b2c040 Fixed: Show TLS errors in UI when testing download clients 2020-11-05 22:01:40 -05:00
Qstick
216f9b37b2 Remove ParsingLibrary 2020-11-05 22:01:40 -05:00
Qstick
025f064ecf Fixed: RawHD quality detection
Fixes #5267
Fixes #5207
2020-11-05 22:01:40 -05:00
Qstick
b8df38e929 Change 'Ignore Deleted Movies' to 'Unmonitor Deleted Movies' for consistency 2020-11-05 22:01:40 -05:00
Qstick
72f0dadbea New: Show .net version in UI 2020-11-05 22:01:40 -05:00
Robin Dadswell
3e22658e27 New: Discord notification upgrade colour
(cherry picked from commit cfdaddd81ae66412766ff19805c78e8503205bbe)
2020-11-05 21:44:50 -05:00
Taloth Saldono
d00f3abbf0 Fixed: Dataloss when moving series folder to root folder with only different casing
Fixes #5190
Fixes #5184
2020-11-03 22:07:11 -05:00
Mark McDowall
c270a53eab Fixed: Telegram silent notifications
(cherry picked from commit 0b7aa19ac06600936f6c4cb18ea3474e8a96f1e2)
2020-11-03 21:44:24 -05:00
Robin Dadswell
b474961b65 updated OnDownload to use 'Success' Colour 2020-10-31 11:09:20 -04:00
Qstick
cfb44c7db7 Fixed: 576p Detection in MediaInfoAugment 2020-10-29 21:13:20 -04:00
Qstick
45011198e2 Improved Trakt list validation
Fixes #5262

Co-Authored-By: Mark McDowall <markus101@users.noreply.github.com>
2020-10-29 20:50:35 -04:00
Qstick
a03d136aa4 Fixed: Cleanse account and passwd from Download Station URLs
Fixes #5266

Co-Authored-By: Mark McDowall <markus101@users.noreply.github.com>
2020-10-29 20:45:09 -04:00
pannbiff
e2a45caada Translated using Weblate (Swedish) [skip ci]
Currently translated at 49.3% (418 of 847 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/sv/
2020-10-27 07:48:58 +00:00
Mark McDowall
e3db49896b Fixed: Show feed URL if incorrect mime type is found
(cherry picked from commit fa2e70d571cc7658611a0c51b8603247a22e6a2e)
2020-10-25 15:40:29 -04:00
Will Segatto
920b7d8e29 Translated using Weblate (Portuguese) [skip ci]
Currently translated at 100.0% (847 of 847 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt/
2020-10-22 02:48:56 +00:00
memnos
0df442caf2 Translated using Weblate (Italian) [skip ci]
Currently translated at 100.0% (847 of 847 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/it/
2020-10-22 02:48:55 +00:00
Qstick
d835358f75 Fixed: Clean DB dupes and add unique constrain 2020-10-20 09:07:54 -04:00
pannbiff
45d329423c Translated using Weblate (Swedish) [skip ci]
Currently translated at 46.1% (391 of 847 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/sv/
2020-10-20 04:49:01 +00:00
Csaba
f177ebfb4a Translated using Weblate (Hungarian) [skip ci]
Currently translated at 100.0% (847 of 847 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2020-10-20 04:48:59 +00:00
Qstick
6e135b1e36 Cleanup old changlog files, we use azure now 2020-10-18 22:16:06 -04:00
Qstick
31ca413fc7 Fixed: Language sort on Interactive Search page 2020-10-18 22:11:19 -04:00
Qstick
959d63b4eb Fixed: Filter by Peers in Interactive Search 2020-10-18 21:34:27 -04:00
foXaCe
09ed2ab889 Translated using Weblate (French) [skip ci]
Currently translated at 99.8% (846 of 847 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/fr/
2020-10-18 03:48:54 +00:00
reloxx
1374a12d4c Translated using Weblate (German) [skip ci]
Currently translated at 100.0% (847 of 847 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/de/
2020-10-18 03:48:53 +00:00
Qstick
76cabb4927 Use new multi-select component for indexer languages 2020-10-17 01:38:41 -04:00
nitsua
5b83d09d5e Remove some instances of moment that are not needed on the index to reduce the load 2020-10-17 01:04:50 -04:00
Daniel Martin Gonzalez
82eadcffaa New: Add Option to localize metadata written in .nfo if available (#5060)
* Add Option to localize metadata written in .nfo if available

* Fix Pull Request comments
2020-10-17 01:03:46 -04:00
Qstick
1ebb71db59 Fixed: Import Extra files from Subfolders
Fixes: #4646
2020-10-17 00:17:38 -04:00
Qstick
662b3894c2 Fixed: Make Notification trigger texts consistent
Fixes #5012
2020-10-17 00:06:23 -04:00
Qstick
a1c21af9b5 Fixed: (Windows) clean up extraneous files in build folder during installation
Fixes #5200
Fixes #5203

Co-Authored-By: Mark McDowall <markus101@users.noreply.github.com>
2020-10-16 23:33:03 -04:00
Qstick
67fca87c44 Added PrivacyLevel option to FieldDefinition for later usage
Fixes #5107

Co-Authored-By: Taloth <Taloth@users.noreply.github.com>
2020-10-16 23:27:01 -04:00
Qstick
6ee2780370 Fixed some mediainfo subtitle codes
Co-Authored-By: Mark McDowall <markus101@users.noreply.github.com>
2020-10-16 23:06:17 -04:00
Qstick
0086e2699e Protect against undefined SizeOnDisk
Fixes #5205

Co-Authored-By: Mark McDowall <markus101@users.noreply.github.com>
2020-10-16 22:59:21 -04:00
Qstick
37c9701237 Fixed: Rerender Overviews on Overview option changes
Fixes #5150

Co-Authored-By: Mark McDowall <markus101@users.noreply.github.com>
2020-10-16 22:55:28 -04:00
Qstick
6d452d8479 New: Bulk remove from Blacklist
Fixes #5194

Co-Authored-By: Mark McDowall <markus101@users.noreply.github.com>
2020-10-16 22:45:23 -04:00
Qstick
e82f0c01d8 Re-saving edited providers will forcibly save them
Fixes #5192

Co-Authored-By: Mark McDowall <markus101@users.noreply.github.com>
2020-10-16 22:28:19 -04:00
Qstick
ee456c3291 Fixed: MapCoversToLocal for tmdbid queries to all movies endpoint 2020-10-16 22:19:17 -04:00
kingii98
9986f0119b Translated using Weblate (Russian) [skip ci]
Currently translated at 6.7% (57 of 844 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ru/
2020-10-16 21:48:58 +00:00
Csaba
5d4da26195 Translated using Weblate (Hungarian) [skip ci]
Currently translated at 100.0% (844 of 844 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2020-10-16 21:48:58 +00:00
memnos
5ed448c930 Translated using Weblate (Italian) [skip ci]
Currently translated at 100.0% (844 of 844 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/it/
2020-10-16 21:48:58 +00:00
jpalenz77
9263e31b7b Translated using Weblate (Spanish) [skip ci]
Currently translated at 100.0% (844 of 844 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/es/
2020-10-16 21:48:57 +00:00
angrycuban13
516122c6f3 Translated using Weblate (Spanish) [skip ci]
Currently translated at 100.0% (843 of 843 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/es/
2020-10-16 03:00:36 +00:00
foXaCe
256a50abab Translated using Weblate (French) [skip ci]
Currently translated at 100.0% (843 of 843 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/fr/
2020-10-16 03:00:36 +00:00
EnorMOZ
315929bc5e Update "TagsHelpText" with similar language as sonarr (#5218)
* Update "TagsHelpText" with similar language as sonarr

* Use new translation key
2020-10-15 23:00:31 -04:00
Qstick
4a681601b2 Skip Screenshot on 2nd build attempt 2020-10-15 21:14:27 -04:00
Csaba
ab3b5bdf8b Translated using Weblate (Hungarian) [skip ci]
Currently translated at 100.0% (842 of 842 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2020-10-15 14:38:36 +00:00
Qstick
e52288bd67 New: Edit RlsGroup, Flags, and Edition for Movie Files (#5183)
* New: Edit RlsGroup and Edition for Movie Files

* fixup! remove console log

* fixup! translation
2020-10-15 10:38:30 -04:00
servarr[bot]
f2f26d88b9 New: Differentiate between short term and long term (more than 6 hours) indexer failures (#5202)
* New: Differentiate between short term and long term (more than 6 hours) indexer failures

(cherry picked from commit 2adedb97da5ad31b65f0dc2eec5c263efe95731f)

* fixup! Mock Localization

Co-authored-by: Mark McDowall <mark@mcdowall.ca>
Co-authored-by: Qstick <qstick@gmail.com>
2020-10-15 07:20:02 -04:00
nitsua
27354507cb Fix issue with IMDb lists (some not all) not parsing properly causing an issue when trying to add them 2020-10-14 15:08:08 -04:00
Qstick
b7aa1df219 Fix Automation/cleanup build yml (#5211)
* Cleanup build yml

* fixup! bump chrome driver
2020-10-13 21:53:17 -04:00
ta264
2d7942d69c Fixed: Speed up RSS sync 2020-10-13 20:54:33 -04:00
ta264
0a8dd85856 Fixed: Speed up initial movie load when opening the UI 2020-10-13 20:54:33 -04:00
ta264
f917d0e9bc Add FileInfo utility functions to DiskProvider 2020-10-13 20:54:33 -04:00
kingii98
024e4df99c Translated using Weblate (Russian) [skip ci]
Currently translated at 6.1% (52 of 840 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/ru/
2020-10-13 16:48:58 +00:00
Csaba
49fa402c55 Translated using Weblate (Hungarian) [skip ci]
Currently translated at 100.0% (840 of 840 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2020-10-13 16:48:57 +00:00
Qstick
02c95658c4 Windows installer improvements
Co-Authored-By: Mark McDowall <markus101@users.noreply.github.com>
2020-10-11 22:43:08 -04:00
Mark McDowall
3bc4231640 New: Health events for Webhooks
Co-Authored-By: Mark McDowall <markus101@users.noreply.github.com>
2020-10-11 22:40:18 -04:00
Mark McDowall
a9a0d47f9f Fixed: Copying passwords
(cherry picked from commit c871b3f9487b9bfeb3726d763a632a772b420a0a)
2020-10-11 20:36:46 -04:00
Florian
0dd05b2dac Translated using Weblate (French) [skip ci]
Currently translated at 100.0% (840 of 840 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/fr/
2020-10-11 21:48:51 +00:00
Qstick
3986433884 Fixed: Default a Movie object with Empty Ratings 2020-10-11 01:26:53 -04:00
Mark McDowall
f637976530 Fixed: Parsing of URLs with double slashes in the path
(cherry picked from commit 0c7743e786749b333333d282412ff76fc10aba65)
2020-10-10 17:16:21 -04:00
Qstick
603d26bb5f Take Screenshot on Automation tests for build status notifications 2020-10-09 21:51:59 -04:00
Will Segatto
6b41ad7442 Translated using Weblate (Portuguese) [skip ci]
Currently translated at 100.0% (840 of 840 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt/
2020-10-10 00:49:05 +00:00
hotio
4c049ac3d9 Translated using Weblate (Dutch) [skip ci]
Currently translated at 97.9% (823 of 840 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/nl/
2020-10-10 00:49:04 +00:00
Csaba
84df3e8b5b Translated using Weblate (Hungarian) [skip ci]
Currently translated at 91.4% (768 of 840 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2020-10-10 00:49:03 +00:00
jpalenz77
0ff76e14bb Translated using Weblate (Spanish) [skip ci]
Currently translated at 100.0% (840 of 840 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/es/
2020-10-10 00:48:55 +00:00
Florian
5433c6364c Translated using Weblate (French) [skip ci]
Currently translated at 100.0% (840 of 840 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/fr/
2020-10-10 00:48:50 +00:00
geogolem
038e3d5c44 update trayIcon with new Radarr Icon 2020-10-08 14:27:07 -04:00
Qstick
71b126024b Remove unused mac startup script 2020-10-07 23:07:47 -04:00
Qstick
76565d4ab5 Fixed: Old Icon being used on Console App 2020-10-07 23:06:43 -04:00
ta264
28c15bc425 Log out SQL trace on error
Fixes #4910

Co-Authored-By: ta264 <ta264@users.noreply.github.com>
2020-10-07 22:55:54 -04:00
Qstick
aeda4cba32 Fixed: Render CustomFormats under profile option for Large Screens 2020-10-07 22:01:58 -04:00
Qstick
a826c1dc25 New: MultiSelect input control for provider settings
Co-Authored-By: Taloth <Taloth@users.noreply.github.com>
2020-10-07 21:27:17 -04:00
Csaba
00022fd206 Translated using Weblate (Hungarian) [skip ci]
Currently translated at 32.3% (272 of 840 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2020-10-08 00:48:53 +00:00
Will Segatto
0647663f46 Translated using Weblate (Portuguese) [skip ci]
Currently translated at 100.0% (840 of 840 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt/
2020-10-07 05:48:57 +00:00
Csaba
b83bfb045b Translated using Weblate (Hungarian) [skip ci]
Currently translated at 25.1% (211 of 840 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/hu/
2020-10-07 05:48:57 +00:00
memnos
cfbac482e5 Translated using Weblate (Italian) [skip ci]
Currently translated at 100.0% (840 of 840 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/it/
2020-10-07 05:48:53 +00:00
foXaCe
b43b35a295 Translated using Weblate (French) [skip ci]
Currently translated at 100.0% (840 of 840 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/fr/
2020-10-07 05:48:50 +00:00
reloxx
e75d52de0e Translated using Weblate (German) [skip ci]
Currently translated at 100.0% (840 of 840 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/de/
2020-10-07 05:48:49 +00:00
nitsua
f850e75d4e Fix issue with push missing the URL base 2020-10-06 11:05:43 -04:00
nitsua
6c9e4994d8 Fix broken translations on index 2020-10-06 09:35:08 -04:00
Qstick
708a2e31d5 Improve load speeds by being more efficient with config language 2020-10-06 07:48:58 -04:00
Qstick
37c1b5b28c New: Add Bulgarian Language
Fixes #4111
2020-10-06 00:33:33 -04:00
Qstick
e28bea14b3 New: Add Thai Language 2020-10-06 00:33:33 -04:00
Qstick
2823099237 New: Add Hindi and Romanian Languages
Fixes #3597
2020-10-06 00:33:33 -04:00
Qstick
53eeee8b91 New: Allow Selection Original Movie Languge in Profile 2020-10-06 00:33:33 -04:00
nitsua
e880eb0e00 More translations 2020-10-06 00:29:45 -04:00
Qstick
561f84adff Added translation using Weblate (Thai) [skip ci] 2020-10-06 04:09:34 +00:00
Qstick
4fc6a14d1b Added translation using Weblate (Bulgarian) [skip ci] 2020-10-06 04:09:24 +00:00
foXaCe
b8d5a0b6a2 Translated using Weblate (French) [skip ci]
Currently translated at 99.5% (822 of 826 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/fr/
2020-10-05 08:48:49 +00:00
Mark McDowall
73b0a461d3 Fix tooltip max width on larger screens
(cherry picked from commit f4f2a6f5fc14244f9acf8186cbacda7f9c1e0481)
2020-10-05 00:14:28 -04:00
Qstick
d86402efb1 Fixed: formatTimeSpan shows incorrect when over 1 month 2020-10-04 23:38:10 -04:00
Qstick
1c892d7357 Fixed: Sorting of Queue time left 2020-10-04 23:37:39 -04:00
Qstick
f7e21ec2a4 Fixed: Tooltip jumping around
Fixes: #5136
Fixes: #4966
Co-Authored-By: Mark McDowall <markus101@users.noreply.github.com>
2020-10-04 23:34:27 -04:00
Qstick
1d0771c9a4 New: Add size to movie files in Webhook payload
Co-Authored-By: Mark McDowall <markus101@users.noreply.github.com>
2020-10-04 22:31:49 -04:00
Qstick
cc384d9297 Remove unused popper 2 package 2020-10-04 22:29:21 -04:00
Qstick
7898100d95 Revert "Pull Sonarr commit 'Import lists in settings overview' (#5138)"
This reverts commit 4b279e87cf.
2020-10-04 22:28:46 -04:00
servarr[bot]
4b279e87cf Pull Sonarr commit 'Import lists in settings overview' (#5138)
* Import lists in settings overview

(cherry picked from commit f45b27f507953724e9469ce16c4e555985312150)

* fixup! Sonarr wording

Co-authored-by: Mark McDowall <mark@mcdowall.ca>
Co-authored-by: Qstick <qstick@gmail.com>
2020-10-04 22:26:14 -04:00
Qstick
3d5570dfd9 Update frontend packages
Fixes: #5115
Fixes: #5116
Fixes: #5117
Fixes: #5118
Fixes: #5119
Fixes: #5120
Fixes: #5121
Fixes: #5122
Fixes: #5123
Fixes: #5124
Fixes: #5125
Fixes: #5126
Fixes: #5127
Fixes: #5128
Fixes: #5129
Fixes: #5130
Fixes: #5131
Fixes: #5132
Fixes: #5133
Fixes: #5134
Fixes: #5139
Fixes: #5140
2020-10-04 21:49:16 -04:00
Qstick
269462e0a2 Update stalebot exempt labels [skip ci] 2020-10-04 02:45:56 -04:00
bakerboy448
5799b3dc47 Fixed: Parser Detecting DTS-Audio formats and Blu-Ray as groups (#5090)
* Fix DTS-XXX Audio & Blu-ray false Group Positives

* Add test cases

* fixup! spaces

Co-authored-by: Qstick <qstick@gmail.com>
2020-10-04 01:59:31 -04:00
Qstick
dfbbb7d9bd Fixup Filelist test to use new url 2020-10-04 01:57:37 -04:00
Qstick
6faa484d4e Change Discord invite to point to Welcome page 2020-10-04 01:20:18 -04:00
Qstick
86363d5bf1 Fixed: Change Filelist default URL 2020-10-04 01:20:18 -04:00
Qstick
30c51ec4f3 Fixed: Handle obfuscated files using abc.xyz pattern
Fixes #5105

Co-Authored-By: Mark McDowall <markus101@users.noreply.github.com>
2020-10-04 01:20:17 -04:00
Qstick
a66b2cf416 New: Add more information to Webhook payload
Fixes #5104

Co-Authored-By: Mark McDowall <markus101@users.noreply.github.com>
2020-10-04 01:20:17 -04:00
Qstick
37197150be Some cleanup of things marked for removal in v3
Fixes #5102

Co-Authored-By: Mark McDowall <markus101@users.noreply.github.com>
2020-10-04 01:20:17 -04:00
Qstick
c8bbd21615 Cleanup TaskManager.cs 2020-10-04 01:20:17 -04:00
Florian
fdf2d1c9b3 Translated using Weblate (French) [skip ci]
Currently translated at 99.5% (822 of 826 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/fr/
2020-10-04 04:48:54 +00:00
foXaCe
eb4cd9633a Translated using Weblate (French) [skip ci]
Currently translated at 99.5% (822 of 826 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/fr/
2020-10-04 04:48:54 +00:00
reloxx
3fa17bf7f6 Translated using Weblate (German) [skip ci]
Currently translated at 100.0% (826 of 826 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/de/
2020-10-04 04:48:48 +00:00
Qstick
22e9dff76b Don't check for updates every 30 minutes on nightly 2020-10-03 23:49:06 -04:00
Qstick
7d31eb1f55 Fixed: Test for empty strings using isNullOrEmpty 2020-10-03 21:58:31 -04:00
Qstick
4ec71538b9 Fixed: Avoid zero-length array memory allocations 2020-10-03 21:58:31 -04:00
Qstick
295b975046 Fixed: Do not use Count/LongCount when Any can be used 2020-10-03 21:58:31 -04:00
Qstick
0198c7a3b1 Fixed: Use Length/Count property instead of Enumerable.Count method 2020-10-03 21:58:31 -04:00
Qstick
088ffc34df Fixed: Use Append(Char) for single character Stringbuilder additions 2020-10-03 21:58:31 -04:00
bakerboy448
1740ad337c Clarify Branches/ Release Channels [skip ci] (#5100) 2020-10-03 09:26:37 -04:00
nitsua
a6758e4bf4 Ongoing updates to api docs (#5082) [skip ci] 2020-10-03 09:25:35 -04:00
memnos
2161f08140 Translated using Weblate (Italian) [skip ci]
Currently translated at 100.0% (826 of 826 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/it/
2020-10-03 06:48:53 +00:00
foXaCe
1a92372506 Translated using Weblate (French) [skip ci]
Currently translated at 70.8% (585 of 826 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/fr/
2020-10-03 06:48:52 +00:00
bakerboy448
5bd23be133 Update v3 binaries links [skip ci] (#5099)
* Update README.md

* Update Nightly Binary Links

* Fix table formatting
2020-10-01 23:39:15 -04:00
nitsua
eca816db86 Fix movie title stretching the add window
Fixes: #5096
2020-10-01 18:12:19 -04:00
bakerboy448
c4f19a813d Minor Branch Updates/Clarifcation [Skip Ci] 2020-10-01 11:20:13 -04:00
bakerboy448
24cee7e4fe Correct Contributing (don't have forums or IRC) [skip ci] 2020-10-01 11:15:11 -04:00
Qstick
22531294be Remove duplicate translation key 2020-09-30 21:44:08 -04:00
Qstick
464d92bb70 Calendar status fixes
Fixes #4747

Co-Authored-By: Mark McDowall <markus101@users.noreply.github.com>
2020-09-30 21:43:52 -04:00
Qstick
8ee16b81ec Fixed: Indexer being disabled due to download client rejecting it
Co-Authored-By: Mark McDowall <markus101@users.noreply.github.com>
2020-09-30 21:25:12 -04:00
Qstick
a7a1d48e0d Fixed: Log path when import fails for movie import
Co-Authored-By: Mark McDowall <markus101@users.noreply.github.com>
2020-09-30 21:24:18 -04:00
Qstick
a070279993 New: Allow naming with original Movie title (in original language) 2020-09-30 16:10:56 -04:00
Qstick
95918c4053 Fixed: Speed up Unmapped Folder fetch for large number of root folders 2020-09-30 07:41:56 -04:00
Will Segatto
646b86f8c9 Translated using Weblate (Portuguese) [skip ci]
Currently translated at 100.0% (826 of 826 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/pt/
2020-09-29 05:59:11 +00:00
jpalenz77
28835a1857 Translated using Weblate (Spanish) [skip ci]
Currently translated at 100.0% (826 of 826 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/es/
2020-09-29 05:59:10 +00:00
nitsua
6b22481a00 Fix the sorting on the agenda to respect using all dates instead of only cinema date to sort 2020-09-28 23:55:50 -04:00
Qstick
aef8a8fd04 Fixed: Fetch blacklist by Movie instead of all
Fixes #5066
2020-09-28 23:39:15 -04:00
Qstick
a1e69c3c2b Lodash replacements: take 2 2020-09-28 22:02:02 -04:00
hotio
995d257d3d Fix docker tag (#5081) [skip ci] 2020-09-28 21:51:26 -04:00
nitsua
cf804f7dac Fix issue with arrow keys switching movie when using them inside a textbox (or any element really) 2020-09-28 17:28:09 +01:00
ta264
081fe64bff Revert "Convert some instances (filter, find, pick) to native from lodash"
This reverts commit d8a0aac9c3.
2020-09-28 06:26:23 +01:00
ta264
9075fdc1c1 Revert "Fix find error on movie details"
This reverts commit 6bdd24e62d.
2020-09-28 06:26:13 +01:00
foXaCe
5db1faad0b Translated using Weblate (French) [skip ci]
Currently translated at 62.5% (517 of 826 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/fr/
2020-09-28 06:00:42 +00:00
reloxx
57f3805763 Translated using Weblate (German) [skip ci]
Currently translated at 100.0% (826 of 826 strings)

Translation: Servarr/Radarr
Translate-URL: https://translate.servarr.com/projects/radarr/radarr/de/
2020-09-28 06:00:38 +00:00
nitsua
6bdd24e62d Fix find error on movie details 2020-09-28 06:51:03 +01:00
Qstick
d5ec2914e2 New: Support existing 'keyart' in Kodi Metadata
Fixes #5059
2020-09-27 22:44:12 -04:00
Qstick
d8a0aac9c3 Convert some instances (filter, find, pick) to native from lodash 2020-09-27 22:33:21 -04:00
nitsua
987ed357d5 Add a link to the github issue if it is added to the change notes 2020-09-27 22:14:08 -04:00
Qstick
9044976393 Update StaleBot config exempt labels [skip ci] 2020-09-27 09:30:48 -04:00
nitsua
b53def3da5 Fixed: Issue with arrow navigation from details working outside of the details page (#5071) 2020-09-26 23:36:36 -04:00
Qstick
2ecb988c6a Remove aphrodite links from Readme [skip ci] 2020-09-26 22:19:17 -04:00
Qstick
41cf722ab5 Change over aphrodite references 2020-09-26 22:03:14 -04:00
984 changed files with 46092 additions and 14878 deletions

View File

@@ -110,13 +110,13 @@ dotnet_diagnostic.SA1643.severity = none
dotnet_diagnostic.SA1648.severity = none
dotnet_diagnostic.SA1649.severity = none
dotnet_diagnostic.SA1651.severity = none
dotnet_diagnostic.SX1101.severity = warning
dotnet_diagnostic.SX1309.severity = warning
# Microsoft Analyzers that fail and need to be sorted thru
dotnet_diagnostic.ASP0000.severity = suggestion
dotnet_diagnostic.CA1000.severity = suggestion
dotnet_diagnostic.CA1001.severity = suggestion
dotnet_diagnostic.CA1002.severity = suggestion
dotnet_diagnostic.CA1003.severity = suggestion
dotnet_diagnostic.CA1008.severity = suggestion
dotnet_diagnostic.CA1010.severity = suggestion
@@ -163,10 +163,16 @@ dotnet_diagnostic.CA1304.severity = suggestion
dotnet_diagnostic.CA1305.severity = suggestion
dotnet_diagnostic.CA1307.severity = suggestion
dotnet_diagnostic.CA1308.severity = suggestion
dotnet_diagnostic.CA1309.severity = suggestion
dotnet_diagnostic.CA1310.severity = suggestion
dotnet_diagnostic.CA1401.severity = suggestion
dotnet_diagnostic.CA1416.severity = suggestion
dotnet_diagnostic.CA1507.severity = suggestion
dotnet_diagnostic.CA1508.severity = suggestion
dotnet_diagnostic.CA1707.severity = suggestion
dotnet_diagnostic.CA1708.severity = suggestion
dotnet_diagnostic.CA1710.severity = suggestion
dotnet_diagnostic.CA1711.severity = suggestion
dotnet_diagnostic.CA1712.severity = suggestion
dotnet_diagnostic.CA1714.severity = suggestion
dotnet_diagnostic.CA1715.severity = suggestion
@@ -175,27 +181,21 @@ dotnet_diagnostic.CA1717.severity = suggestion
dotnet_diagnostic.CA1720.severity = suggestion
dotnet_diagnostic.CA1721.severity = suggestion
dotnet_diagnostic.CA1724.severity = suggestion
dotnet_diagnostic.CA1725.severity = suggestion
dotnet_diagnostic.CA1801.severity = suggestion
dotnet_diagnostic.CA1802.severity = suggestion
dotnet_diagnostic.CA1805.severity = suggestion
dotnet_diagnostic.CA1806.severity = suggestion
dotnet_diagnostic.CA1810.severity = suggestion
dotnet_diagnostic.CA1812.severity = suggestion
dotnet_diagnostic.CA1813.severity = suggestion
dotnet_diagnostic.CA1814.severity = suggestion
dotnet_diagnostic.CA1815.severity = suggestion
dotnet_diagnostic.CA1816.severity = suggestion
dotnet_diagnostic.CA1819.severity = suggestion
dotnet_diagnostic.CA1820.severity = suggestion
dotnet_diagnostic.CA1821.severity = suggestion
dotnet_diagnostic.CA1822.severity = suggestion
dotnet_diagnostic.CA1823.severity = suggestion
dotnet_diagnostic.CA1824.severity = suggestion
dotnet_diagnostic.CA1825.severity = suggestion
dotnet_diagnostic.CA1826.severity = suggestion
dotnet_diagnostic.CA1827.severity = suggestion
dotnet_diagnostic.CA1828.severity = suggestion
dotnet_diagnostic.CA1829.severity = suggestion
dotnet_diagnostic.CA1834.severity = suggestion
dotnet_diagnostic.CA2000.severity = suggestion
dotnet_diagnostic.CA2002.severity = suggestion
dotnet_diagnostic.CA2007.severity = suggestion
@@ -210,6 +210,7 @@ dotnet_diagnostic.CA2101.severity = suggestion
dotnet_diagnostic.CA2119.severity = suggestion
dotnet_diagnostic.CA2153.severity = suggestion
dotnet_diagnostic.CA2200.severity = suggestion
dotnet_diagnostic.CA2201.severity = suggestion
dotnet_diagnostic.CA2207.severity = suggestion
dotnet_diagnostic.CA2208.severity = suggestion
dotnet_diagnostic.CA2211.severity = suggestion
@@ -255,6 +256,8 @@ dotnet_diagnostic.CA5374.severity = suggestion
dotnet_diagnostic.CA5379.severity = suggestion
dotnet_diagnostic.CA5384.severity = suggestion
dotnet_diagnostic.CA5385.severity = suggestion
dotnet_diagnostic.CA5392.severity = suggestion
dotnet_diagnostic.CA5394.severity = suggestion
dotnet_diagnostic.CA5397.severity = suggestion

View File

@@ -1,6 +1,7 @@
{
"paths": [
"frontend/src/**/*.js"
"frontend/src/**/*.js",
"src/NzbDrone.Core/Localization/Core/*.json"
],
"ignored": [
"**/node_modules/**/*"

View File

@@ -1,305 +0,0 @@
# -*- coding: utf-8; mode: python -*-
##
## Format
##
## ACTION: [AUDIENCE:] COMMIT_MSG [!TAG ...]
##
## Description
##
## ACTION is one of 'chg', 'fix', 'new'
##
## Is WHAT the change is about.
##
## 'chg' is for refactor, small improvement, cosmetic changes...
## 'fix' is for bug fixes
## 'new' is for new features, big improvement
##
## AUDIENCE is optional and one of 'dev', 'usr', 'pkg', 'test', 'doc'
##
## Is WHO is concerned by the change.
##
## 'dev' is for developpers (API changes, refactors...)
## 'usr' is for final users (UI changes)
## 'pkg' is for packagers (packaging changes)
## 'test' is for testers (test only related changes)
## 'doc' is for doc guys (doc only changes)
##
## COMMIT_MSG is ... well ... the commit message itself.
##
## TAGs are additionnal adjective as 'refactor' 'minor' 'cosmetic'
##
## They are preceded with a '!' or a '@' (prefer the former, as the
## latter is wrongly interpreted in github.) Commonly used tags are:
##
## 'refactor' is obviously for refactoring code only
## 'minor' is for a very meaningless change (a typo, adding a comment)
## 'cosmetic' is for cosmetic driven change (re-indentation, 80-col...)
## 'wip' is for partial functionality but complete subfunctionality.
##
## Example:
##
## new: usr: support of bazaar implemented
## chg: re-indentend some lines !cosmetic
## new: dev: updated code to be compatible with last version of killer lib.
## fix: pkg: updated year of licence coverage.
## new: test: added a bunch of test around user usability of feature X.
## fix: typo in spelling my name in comment. !minor
##
## Please note that multi-line commit message are supported, and only the
## first line will be considered as the "summary" of the commit message. So
## tags, and other rules only applies to the summary. The body of the commit
## message will be displayed in the changelog without reformatting.
##
## ``ignore_regexps`` is a line of regexps
##
## Any commit having its full commit message matching any regexp listed here
## will be ignored and won't be reported in the changelog.
##
ignore_regexps = [
r'@minor', r'!minor',
r'@cosmetic', r'!cosmetic',
r'@refactor', r'!refactor',
r'@wip', r'!wip',
r'^([cC]hg|[fF]ix|[nN]ew)\s*:\s*[p|P]kg:',
r'^([cC]hg|[fF]ix|[nN]ew)\s*:\s*[d|D]ev:',
r'^(.{3,3}\s*:)?\s*[fF]irst commit.?\s*$',
r'^$', ## ignore commits with empty messages
]
## ``section_regexps`` is a list of 2-tuples associating a string label and a
## list of regexp
##
## Commit messages will be classified in sections thanks to this. Section
## titles are the label, and a commit is classified under this section if any
## of the regexps associated is matching.
##
## Please note that ``section_regexps`` will only classify commits and won't
## make any changes to the contents. So you'll probably want to go check
## ``subject_process`` (or ``body_process``) to do some changes to the subject,
## whenever you are tweaking this variable.
##
section_regexps = [
('**New features**', [
r'^[aA]dded?\s*:?\s*((dev|use?r|pkg|test|doc)\s*:\s*)?(.*)$',
r'^[uU]pdated?\s*:?\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n]*)$',
r'^[cC]hanged?\s*:?\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n]*)$',
r'^[nN]ew?\s*:?\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n]*)$',
]),
('**Fixes**', [
r'^(?![mM]erge\s*)'
]
),
]
## ``body_process`` is a callable
##
## This callable will be given the original body and result will
## be used in the changelog.
##
## Available constructs are:
##
## - any python callable that take one txt argument and return txt argument.
##
## - ReSub(pattern, replacement): will apply regexp substitution.
##
## - Indent(chars=" "): will indent the text with the prefix
## Please remember that template engines gets also to modify the text and
## will usually indent themselves the text if needed.
##
## - Wrap(regexp=r"\n\n"): re-wrap text in separate paragraph to fill 80-Columns
##
## - noop: do nothing
##
## - ucfirst: ensure the first letter is uppercase.
## (usually used in the ``subject_process`` pipeline)
##
## - final_dot: ensure text finishes with a dot
## (usually used in the ``subject_process`` pipeline)
##
## - strip: remove any spaces before or after the content of the string
##
## - SetIfEmpty(msg="No commit message."): will set the text to
## whatever given ``msg`` if the current text is empty.
##
## Additionally, you can `pipe` the provided filters, for instance:
#body_process = Wrap(regexp=r'\n(?=\w+\s*:)') | Indent(chars=" ")
#body_process = Wrap(regexp=r'\n(?=\w+\s*:)')
#body_process = noop
body_process = ReSub(r'((^|\n)[A-Z]\w+(-\w+)*: .*(\n\s+.*)*)+$', r'') | strip
## ``subject_process`` is a callable
##
## This callable will be given the original subject and result will
## be used in the changelog.
## subject_process = (strip |
## ReSub(r'^([aA]dd(ed?)?|[nN]ew)(\s?:?\s)(.*)$', r'![New](https://img.shields.io/badge/-- -New-brightgreen.svg?style=flat-square) \4') |
## ReSub(r'^([cC]hang(ed?)?)(\s?:?\s)(.*)$', r'![Changed](https://img.shields.io/badge/-- -Changed-orange.svg?style=flat-square) \4') |
## ReSub(r'^([fF]ix(ed?)?)(\s?:?\s)(.*)$', r'![Fixed](https://img.shields.io/badge/-- -Fixed-red.svg?style=flat-square) \4') |
## ReSub(r'^([uU]pdat(ed?)?)(\s?:?\s)(.*)$', r'![Updated](https://img.shields.io/badge/-- -Updated-blue.svg?style=flat-square) \4') |
## ReSub(r'#(\d{3,4})', r'[#\1](https://github.com/Radarr/Radarr/issues/\1)') |
## SetIfEmpty("No commit message.") | ucfirst | final_dot)
## Available constructs are those listed in ``body_process`` doc.
subject_process = (strip |
ReSub(r'^([aA]dd(ed?)?|[nN]ew)(\s?:?\s)(.*)$', r'![New](https://img.shields.io/badge/--%20-New-brightgreen.svg?style=flat-square) \4') |
ReSub(r'^([cC]hang(ed?)?)(\s?:?\s)(.*)$', r'![Changed](https://img.shields.io/badge/--%20-Changed-orange.svg?style=flat-square) \4') |
ReSub(r'^([fF]ix(ed?)?)(\s?:?\s)(.*)$', r'![Fixed](https://img.shields.io/badge/--%20-Fixed-red.svg?style=flat-square) \4') |
ReSub(r'^([uU]pdat(ed?)?)(\s?:?\s)(.*)$', r'![Updated](https://img.shields.io/badge/--%20-Updated-blue.svg?style=flat-square) \4') |
ReSub(r'#(\d{3,4})', r'[#\1](https://github.com/Radarr/Radarr/issues/\1)') |
SetIfEmpty("No commit message.") | ucfirst | final_dot)
## ``tag_filter_regexp`` is a regexp
##
## Tags that will be used for the changelog must match this regexp.
##
tag_filter_regexp = r'^v[0]+\.[2-9]+\.[0-9]+\.[0-9]{3,4}$'
## ``unreleased_version_label`` is a string or a callable that outputs a string
##
## This label will be used as the changelog Title of the last set of changes
## between last valid tag and HEAD if any.
unreleased_version_label = "(unreleased)"
## ``output_engine`` is a callable
##
## This will change the output format of the generated changelog file
##
## Available choices are:
##
## - rest_py
##
## Legacy pure python engine, outputs ReSTructured text.
## This is the default.
##
## - mustache(<template_name>)
##
## Template name could be any of the available templates in
## ``templates/mustache/*.tpl``.
## Requires python package ``pystache``.
## Examples:
## - mustache("markdown")
## - mustache("restructuredtext")
##
## - makotemplate(<template_name>)
##
## Template name could be any of the available templates in
## ``templates/mako/*.tpl``.
## Requires python package ``mako``.
## Examples:
## - makotemplate("restructuredtext")
##
#output_engine = rest_py
#output_engine = mustache("restructuredtext")
output_engine = mustache("changelog.tpl")
#output_engine = makotemplate("restructuredtext")
## ``include_merge`` is a boolean
##
## This option tells git-log whether to include merge commits in the log.
## The default is to include them.
include_merge = False
## ``log_encoding`` is a string identifier
##
## This option tells gitchangelog what encoding is outputed by ``git log``.
## The default is to be clever about it: it checks ``git config`` for
## ``i18n.logOutputEncoding``, and if not found will default to git's own
## default: ``utf-8``.
#log_encoding = 'utf-8'
## ``publish`` is a callable
##
## Sets what ``gitchangelog`` should do with the output generated by
## the output engine. ``publish`` is a callable taking one argument
## that is an interator on lines from the output engine.
##
## Some helper callable are provided:
##
## Available choices are:
##
## - stdout
##
## Outputs directly to standard output
## (This is the default)
##
## - FileInsertAtFirstRegexMatch(file, pattern, idx=lamda m: m.start())
##
## Creates a callable that will parse given file for the given
## regex pattern and will insert the output in the file.
## ``idx`` is a callable that receive the matching object and
## must return a integer index point where to insert the
## the output in the file. Default is to return the position of
## the start of the matched string.
##
## - FileRegexSubst(file, pattern, replace, flags)
##
## Apply a replace inplace in the given file. Your regex pattern must
## take care of everything and might be more complex. Check the README
## for a complete copy-pastable example.
##
# publish = FileInsertIntoFirstRegexMatch(
# "CHANGELOG.rst",
# r'/(?P<rev>[0-9]+\.[0-9]+(\.[0-9]+)?)\s+\([0-9]+-[0-9]{2}-[0-9]{2}\)\n--+\n/',
# idx=lambda m: m.start(1)
# )
#publish = stdout
def write_to_file(content):
with open("CHANGELOG.md", "w+") as f:
for chunk in content:
f.write(chunk)
publish = write_to_file
## ``revs`` is a list of callable or a list of string
##
## callable will be called to resolve as strings and allow dynamical
## computation of these. The result will be used as revisions for
## gitchangelog (as if directly stated on the command line). This allows
## to filter exaclty which commits will be read by gitchangelog.
##
## To get a full documentation on the format of these strings, please
## refer to the ``git rev-list`` arguments. There are many examples.
##
## Using callables is especially useful, for instance, if you
## are using gitchangelog to generate incrementally your changelog.
##
## Some helpers are provided, you can use them::
##
## - FileFirstRegexMatch(file, pattern): will return a callable that will
## return the first string match for the given pattern in the given file.
## If you use named sub-patterns in your regex pattern, it'll output only
## the string matching the regex pattern named "rev".
##
## - Caret(rev): will return the rev prefixed by a "^", which is a
## way to remove the given revision and all its ancestor.
##
## Please note that if you provide a rev-list on the command line, it'll
## replace this value (which will then be ignored).
##
## If empty, then ``gitchangelog`` will act as it had to generate a full
## changelog.
##
## The default is to use all commits to make the changelog.
#revs = ["^1.0.3", ]
#revs = [
# Caret(
# FileFirstRegexMatch(
# "CHANGELOG.rst",
# r"(?P<rev>[0-9]+\.[0-9]+(\.[0-9]+)?)\s+\([0-9]+-[0-9]{2}-[0-9]{2}\)\n--+\n")),
# "HEAD"
#]
revs = ["v0.2.0.134..."]

View File

@@ -1,311 +0,0 @@
# -*- coding: utf-8; mode: python -*-
##
## Format
##
## ACTION: [AUDIENCE:] COMMIT_MSG [!TAG ...]
##
## Description
##
## ACTION is one of 'chg', 'fix', 'new'
##
## Is WHAT the change is about.
##
## 'chg' is for refactor, small improvement, cosmetic changes...
## 'fix' is for bug fixes
## 'new' is for new features, big improvement
##
## AUDIENCE is optional and one of 'dev', 'usr', 'pkg', 'test', 'doc'
##
## Is WHO is concerned by the change.
##
## 'dev' is for developpers (API changes, refactors...)
## 'usr' is for final users (UI changes)
## 'pkg' is for packagers (packaging changes)
## 'test' is for testers (test only related changes)
## 'doc' is for doc guys (doc only changes)
##
## COMMIT_MSG is ... well ... the commit message itself.
##
## TAGs are additionnal adjective as 'refactor' 'minor' 'cosmetic'
##
## They are preceded with a '!' or a '@' (prefer the former, as the
## latter is wrongly interpreted in github.) Commonly used tags are:
##
## 'refactor' is obviously for refactoring code only
## 'minor' is for a very meaningless change (a typo, adding a comment)
## 'cosmetic' is for cosmetic driven change (re-indentation, 80-col...)
## 'wip' is for partial functionality but complete subfunctionality.
##
## Example:
##
## new: usr: support of bazaar implemented
## chg: re-indentend some lines !cosmetic
## new: dev: updated code to be compatible with last version of killer lib.
## fix: pkg: updated year of licence coverage.
## new: test: added a bunch of test around user usability of feature X.
## fix: typo in spelling my name in comment. !minor
##
## Please note that multi-line commit message are supported, and only the
## first line will be considered as the "summary" of the commit message. So
## tags, and other rules only applies to the summary. The body of the commit
## message will be displayed in the changelog without reformatting.
##
## ``ignore_regexps`` is a line of regexps
##
## Any commit having its full commit message matching any regexp listed here
## will be ignored and won't be reported in the changelog.
##
ignore_regexps = [
r'@minor', r'!minor',
r'@cosmetic', r'!cosmetic',
r'@refactor', r'!refactor',
r'@wip', r'!wip',
r'^([cC]hg|[fF]ix|[nN]ew)\s*:\s*[p|P]kg:',
r'^([cC]hg|[fF]ix|[nN]ew)\s*:\s*[d|D]ev:',
r'^(.{3,3}\s*:)?\s*[fF]irst commit.?\s*$',
r'^$', ## ignore commits with empty messages
]
## ``section_regexps`` is a list of 2-tuples associating a string label and a
## list of regexp
##
## Commit messages will be classified in sections thanks to this. Section
## titles are the label, and a commit is classified under this section if any
## of the regexps associated is matching.
##
## Please note that ``section_regexps`` will only classify commits and won't
## make any changes to the contents. So you'll probably want to go check
## ``subject_process`` (or ``body_process``) to do some changes to the subject,
## whenever you are tweaking this variable.
##
section_regexps = [
('**New features:**', [
r'^[aA]dded?\s*:?\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n]*)$',
r'^[uU]pdated?\s*:?\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n]*)$',
r'^[cC]hanged?\s*:?\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n]*)$',
r'^[nN]ew?\s*:?\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n]*)$',
]),
('**Fixes:**', [
r'^(?![mM]erge\s*)'
]
),
]
## ``body_process`` is a callable
##
## This callable will be given the original body and result will
## be used in the changelog.
##
## Available constructs are:
##
## - any python callable that take one txt argument and return txt argument.
##
## - ReSub(pattern, replacement): will apply regexp substitution.
##
## - Indent(chars=" "): will indent the text with the prefix
## Please remember that template engines gets also to modify the text and
## will usually indent themselves the text if needed.
##
## - Wrap(regexp=r"\n\n"): re-wrap text in separate paragraph to fill 80-Columns
##
## - noop: do nothing
##
## - ucfirst: ensure the first letter is uppercase.
## (usually used in the ``subject_process`` pipeline)
##
## - final_dot: ensure text finishes with a dot
## (usually used in the ``subject_process`` pipeline)
##
## - strip: remove any spaces before or after the content of the string
##
## - SetIfEmpty(msg="No commit message."): will set the text to
## whatever given ``msg`` if the current text is empty.
##
## Additionally, you can `pipe` the provided filters, for instance:
#body_process = Wrap(regexp=r'\n(?=\w+\s*:)') | Indent(chars=" ")
#body_process = Wrap(regexp=r'\n(?=\w+\s*:)')
#body_process = noop
body_process = ReSub(r'((^|\n)[A-Z]\w+(-\w+)*: .*(\n\s+.*)*)+$', r'') | strip
## ``subject_process`` is a callable
##
## This callable will be given the original subject and result will
## be used in the changelog.
## subject_process = (strip |
## ReSub(r'^([aA]dd(ed?)?|[nN]ew)(\s?:?\s)(.*)$', r'![New](https://img.shields.io/badge/-- -New-brightgreen.svg?style=flat-square) \4') |
## ReSub(r'^([cC]hang(ed?)?)(\s?:?\s)(.*)$', r'![Changed](https://img.shields.io/badge/-- -Changed-orange.svg?style=flat-square) \4') |
## ReSub(r'^([fF]ix(ed?)?)(\s?:?\s)(.*)$', r'![Fixed](https://img.shields.io/badge/-- -Fixed-red.svg?style=flat-square) \4') |
## ReSub(r'^([uU]pdat(ed?)?)(\s?:?\s)(.*)$', r'![Updated](https://img.shields.io/badge/-- -Updated-blue.svg?style=flat-square) \4') |
## ReSub(r'#(\d{3,4})', r'[#\1](https://github.com/Radarr/Radarr/issues/\1)') |
## SetIfEmpty("No commit message.") | ucfirst | final_dot)
## Available constructs are those listed in ``body_process`` doc.
subject_process = (strip |
ReSub(r'^([aA]dd(ed?)?|[nN]ew)(\s?:?\s)(.*)$', r'\4') |
ReSub(r'^([cC]hang(ed?)?)(\s?:?\s)(.*)$', r'\4') |
ReSub(r'^([fF]ix(ed?)?)(\s?:?\s)(.*)$', r'\4') |
ReSub(r'^([uU]pdat(ed?)?)(\s?:?\s)(.*)$', r'\4') |
ReSub(r'#(\d{3,4})', r'Issue #\1') |
SetIfEmpty("No commit message.") | ucfirst | final_dot)
## ``tag_filter_regexp`` is a regexp
##
## Tags that will be used for the changelog must match this regexp.
##
tag_filter_regexp = r'^v[0]+\.[2-9]+\.[0-9]+\.[0-9]+$'
## ``unreleased_version_label`` is a string or a callable that outputs a string
##
## This label will be used as the changelog Title of the last set of changes
## between last valid tag and HEAD if any.
unreleased_version_label = "(unreleased)"
## ``output_engine`` is a callable
##
## This will change the output format of the generated changelog file
##
## Available choices are:
##
## - rest_py
##
## Legacy pure python engine, outputs ReSTructured text.
## This is the default.
##
## - mustache(<template_name>)
##
## Template name could be any of the available templates in
## ``templates/mustache/*.tpl``.
## Requires python package ``pystache``.
## Examples:
## - mustache("markdown")
## - mustache("restructuredtext")
##
## - makotemplate(<template_name>)
##
## Template name could be any of the available templates in
## ``templates/mako/*.tpl``.
## Requires python package ``mako``.
## Examples:
## - makotemplate("restructuredtext")
##
#output_engine = rest_py
#output_engine = mustache("restructuredtext")
output_engine = mustache("changelog_release.tpl")
#output_engine = makotemplate("restructuredtext")
## ``include_merge`` is a boolean
##
## This option tells git-log whether to include merge commits in the log.
## The default is to include them.
include_merge = False
## ``log_encoding`` is a string identifier
##
## This option tells gitchangelog what encoding is outputed by ``git log``.
## The default is to be clever about it: it checks ``git config`` for
## ``i18n.logOutputEncoding``, and if not found will default to git's own
## default: ``utf-8``.
#log_encoding = 'utf-8'
## ``publish`` is a callable
##
## Sets what ``gitchangelog`` should do with the output generated by
## the output engine. ``publish`` is a callable taking one argument
## that is an interator on lines from the output engine.
##
## Some helper callable are provided:
##
## Available choices are:
##
## - stdout
##
## Outputs directly to standard output
## (This is the default)
##
## - FileInsertAtFirstRegexMatch(file, pattern, idx=lamda m: m.start())
##
## Creates a callable that will parse given file for the given
## regex pattern and will insert the output in the file.
## ``idx`` is a callable that receive the matching object and
## must return a integer index point where to insert the
## the output in the file. Default is to return the position of
## the start of the matched string.
##
## - FileRegexSubst(file, pattern, replace, flags)
##
## Apply a replace inplace in the given file. Your regex pattern must
## take care of everything and might be more complex. Check the README
## for a complete copy-pastable example.
##
# publish = FileInsertIntoFirstRegexMatch(
# "CHANGELOG.rst",
# r'/(?P<rev>[0-9]+\.[0-9]+(\.[0-9]+)?)\s+\([0-9]+-[0-9]{2}-[0-9]{2}\)\n--+\n/',
# idx=lambda m: m.start(1)
# )
publish = stdout
#def write_to_file(content):
# with open("CHANGELOG.md", "w+") as f:
# for chunk in content:
# f.write(chunk)
#publish = write_to_file
## ``revs`` is a list of callable or a list of string
##
## callable will be called to resolve as strings and allow dynamical
## computation of these. The result will be used as revisions for
## gitchangelog (as if directly stated on the command line). This allows
## to filter exaclty which commits will be read by gitchangelog.
##
## To get a full documentation on the format of these strings, please
## refer to the ``git rev-list`` arguments. There are many examples.
##
## Using callables is especially useful, for instance, if you
## are using gitchangelog to generate incrementally your changelog.
##
## Some helpers are provided, you can use them::
##
## - FileFirstRegexMatch(file, pattern): will return a callable that will
## return the first string match for the given pattern in the given file.
## If you use named sub-patterns in your regex pattern, it'll output only
## the string matching the regex pattern named "rev".
##
## - Caret(rev): will return the rev prefixed by a "^", which is a
## way to remove the given revision and all its ancestor.
##
## Please note that if you provide a rev-list on the command line, it'll
## replace this value (which will then be ignored).
##
## If empty, then ``gitchangelog`` will act as it had to generate a full
## changelog.
##
## The default is to use all commits to make the changelog.
#revs = ["^1.0.3", ]
#revs = [
# Caret(
# FileFirstRegexMatch(
# "CHANGELOG.rst",
# r"(?P<rev>[0-9]+\.[0-9]+(\.[0-9]+)?)\s+\([0-9]+-[0-9]{2}-[0-9]{2}\)\n--+\n")),
# "HEAD"
#]
# Gets the latest annoted tag and uses that as a base for new changes.
import subprocess
proc = subprocess.Popen(["git", "describe", "--abbrev=0", "--tags"], stdout=subprocess.PIPE)
out = str(proc.communicate()[0].strip(), "utf-8")
revs = [out+"..."]

View File

@@ -1,22 +0,0 @@
**Description:**
<!-- Check first that your problem is not listed in our wiki section:
* https://github.com/Radarr/Radarr/wiki/Common-Problems
* https://github.com/Radarr/Radarr/wiki/FAQ
**Just because you receive an exception in your logs, doesn't mean it's a bug and should be reported here. Often it's something else, such as a permission error. If you are unsure ask on the Discord or Subreddit first.**
Visit our [Discord server](https://discord.gg/NWYch8M) or [Subreddit](https://reddit.com/r/radarr) for support or longer discussions. Support questions posed on here will be closed immediately.
Provide a description of the feature request or bug here, the more details the better.
Please also include the following if you are reporting a bug. If you do not include it, the issue will probably be closed as we cannot help you. -->
**Radarr Version:**
**Mono Version:**
**Debug Logs:**
# Do not remove anything from your logs and post the full logs! If not everything fits in here use a service like https://pastebin.com to upload them.
<!-- Please use the search bar (make sure to include closed issues as well) and make sure you are not submitting an already submitted issue. -->

View File

@@ -1,34 +1,37 @@
---
name: Bug report
about: Support requests will be closed immediately, if you are unsure go to our Discord
or Subreddit first. Exceptions do not mean you found a bug!
name: Bug Report
about: Support Requests will be closed immediately, if you are not 100% certain this is a bug please go to our Reddit or Discord first. Exceptions do not mean you found a bug!
title: ''
labels: bug
labels: 'Type: Bug'
assignees: ''
---
<!-- Support Requests will be closed immediately, if you are unsure go to our Reddit or Discord first. Exceptions do not mean you found a bug! -->
**Describe the bug**
A clear and concise description of what the bug is.
<!-- A clear and concise description of what the bug is. -->
**To Reproduce**
Steps to reproduce the behavior:
<!-- Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
4. See error -->
**Expected behavior**
A clear and concise description of what you expected to happen.
<!-- A clear and concise description of what you expected to happen.-->
**Screenshots**
If applicable, add screenshots to help explain your problem.
<!-- If applicable, add screenshots to help explain your problem.-->
**Platform Information (please complete the following information):**
- OS: [e.g. Windows]
- Mono Version: [e.g. Mono 5.8] (Only needed under Linux and Mac, found under System -> Status)
- Browser and Version [e.g. chrome, safari] (Only needed for UI issues)
- Radarr Version [e.g. 3.0.0.2956]
- OS: <!-- [e.g. Windows 10 2004 / Ubuntu 20.04] -->
- Docker: <!-- [Yes/No] -->
- Mono or .NET Version (System -> Status): <!--[e.g. Mono 5.8 or .Net Core 3.1.10 or .NET 5.0.1] -->
- Browser and Version (Only needed for UI issues): <!--[e.g. chrome 86.0.4240.198] -->
- Radarr Version: <!--[e.g. 3.0.1.4259, 3.0.2.4369]-->
- Radarr Branch: <!--[e.g. master, develop]-->
**Debug Logs**
Turn on debug logs under Settings -> General and wait for the bug to occur again. **Upload the full log file here (or another site and link it). Issues will be closed, if they do not include this!**
**Trace Logs**
Turn on Trace logs under Settings -> General and wait for the bug to occur again.
**Upload the full log file here (or another site (e.g. pastebin) and link it). Issues will be closed, if they do not include this!**
<!-- Trace logs are named Radarr.trace.txt or Radarr.trace.#.txt and will contain "trace" in them-->

View File

@@ -1,7 +1,7 @@
blank_issues_enabled: false
contact_links:
- name: Support via Discord
url: https://discord.gg/AD3UP37
url: https://radarr.video/discord
about: Chat with users and devs on support and setup related topics.
- name: Support via Reddit
url: https://reddit.com/r/radarr

View File

@@ -8,13 +8,13 @@ assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
<!-- A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] -->
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
<!-- A clear and concise description of what you want to happen. -->
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
<!-- A clear and concise description of any alternative solutions or features you've considered. -->
**Additional context**
Add any other context or screenshots about the feature request here.
<!-- Add any other context or screenshots about the feature request here. -->

View File

@@ -3,11 +3,13 @@ YES | NO
#### Description
#### Screenshot (if UI related)
#### Todos
- [ ] Tests
- [ ] Translation Keys
- [ ] Wiki Updates
#### Issues Fixed or Closed by this PR
* #
* Fixes #XXXX

2
.github/config.yml vendored
View File

@@ -1,2 +0,0 @@
todo:
keyword: "TODO"

View File

@@ -1 +0,0 @@

7
.github/stale.yml vendored
View File

@@ -5,9 +5,10 @@ daysUntilClose: 7
# Issues with these labels will never be considered stale
exemptLabels:
- feature request
- parser
- confirmed
- aphrodite
- 'Status: Confirmed'
- sonarr-pull
- lidarr-pull
- readarr-pull
# Label to use when marking an issue as stale
staleLabel: stale
# Comment to post when marking an issue as stale. Set to `false` to disable

13
.github/support.yml vendored
View File

@@ -1,13 +0,0 @@
# Configuration for support-requests - https://github.com/dessant/support-requests
# Label used to mark issues as support requests
supportLabel: support
# Comment to post on issues marked as support requests. Add a link
# to a support page, or set to `false` to disable
supportComment: >
We use the issue tracker exclusively for bug reports and feature requests.
However, this issue appears to be a support request. Please hop over onto our [Discord](https://discord.gg/ZDmT7qb) or [Subreddit](https://reddit.com/r/radarr)
# Whether to close issues marked as support requests
close: true
# Whether to lock issues marked as support requests
lock: false

21
.github/workflows/lock.yml vendored Normal file
View File

@@ -0,0 +1,21 @@
name: 'Lock threads'
on:
workflow_dispatch:
schedule:
- cron: '0 0 * * *'
jobs:
lock:
runs-on: ubuntu-latest
steps:
- uses: dessant/lock-threads@v2
with:
github-token: ${{ github.token }}
issue-lock-inactive-days: '90'
issue-exclude-created-before: ''
issue-exclude-labels: ''
issue-lock-labels: ''
issue-lock-comment: ''
issue-lock-reason: 'resolved'
process-only: ''

21
.github/workflows/support.yml vendored Normal file
View File

@@ -0,0 +1,21 @@
name: 'Support requests'
on:
issues:
types: [labeled, unlabeled, reopened]
jobs:
support:
runs-on: ubuntu-latest
steps:
- uses: dessant/support-requests@v2
with:
github-token: ${{ github.token }}
support-label: 'Type: Support'
issue-comment: >
:wave: @{issue-author}, we use the issue tracker exclusively
for bug reports and feature requests. However, this issue appears
to be a support request. Please hop over onto our [Discord](https://radarr.video/discord)
or [Subreddit](https://reddit.com/r/radarr)
close-issue: true
lock-issue: false

File diff suppressed because it is too large Load Diff

View File

@@ -3,22 +3,38 @@
We're always looking for people to help make Radarr even better, there are a number of ways to contribute.
## Documentation ##
Setup guides, FAQ, the more information we have on the wiki the better.
Setup guides, FAQ, the more information we have on the [wiki](https://wiki.servarr.com/Radarr) the better.
## Development ##
See the readme for information on setting up your development environment.
### Tools required ###
- Visual Studio 2019 or higher (https://www.visualstudio.com/vs/). The community version is free and works (https://www.visualstudio.com/downloads/).
- HTML/Javascript editor of choice (VS Code/Sublime Text/Webstorm/Atom/etc)
- [Git](https://git-scm.com/downloads)
- [NodeJS](https://nodejs.org/en/download/) (Node 12.X.X or higher)
- [Yarn](https://yarnpkg.com/)
- .NET Core 5.0.
### Getting started ###
1. Fork Radarr
2. Clone the repository into your development machine. [*info*](https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/cloning-a-repository-from-github)
3. Install the required Node Packages `yarn install`
4. Start gulp to monitor your dev environment for any changes that need post processing using `yarn start` command.
5. Build the project in Visual Studio, Setting startup project to `Radarr.Console` and framework to `net5.0`
6. Debug the project in Visual Studio
7. Open http://localhost:7878
### Contributing Code ###
- If you're adding a new, already requested feature, please comment on [Github Issues](https://github.com/Radarr/Radarr/issues "Github Issues") so work is not duplicated (If you want to add something not already on there, please talk to us first)
- Rebase from Radarr's develop branch, don't merge
- Make meaningful commits, or squash them
- Feel free to make a pull request before work is complete, this will let us see where its at and make comments/suggest improvements
- Reach out to us on the forums or on IRC if you have any questions
- Reach out to us on the discord if you have any questions
- Add tests (unit/integration)
- Commit with *nix line endings for consistency (We checkout Windows and commit *nix)
- One feature/bug fix per pull request to keep things clean and easy to understand
- Use 4 spaces instead of tabs, this is the default for VS 2012 and WebStorm (to my knowledge)
- Use 4 spaces instead of tabs, this is the default for VS 2019 and WebStorm (to my knowledge)
### Pull Requesting ###
- Only make pull requests to develop, never master, if you make a PR to master we'll comment on it and close it

135
README.md
View File

@@ -2,62 +2,14 @@
[![Build Status](https://dev.azure.com/Radarr/Radarr/_apis/build/status/Radarr.Radarr?branchName=develop)](https://dev.azure.com/Radarr/Radarr/_build/latest?definitionId=1&branchName=develop)
[![Translated](https://translate.servarr.com/widgets/radarr/-/radarr/svg-badge.svg)](https://translate.servarr.com/engage/radarr/?utm_source=widget)
[![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/radarr.svg)](https://github.com/Radarr/Radarr/wiki/Docker)
[![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/radarr.svg)](https://wiki.servarr.com/Radarr_Installation#Docker)
![Github Downloads](https://img.shields.io/github/downloads/Radarr/Radarr/total.svg)
[![Backers on Open Collective](https://opencollective.com/Radarr/backers/badge.svg)](#backers) [![Sponsors on Open Collective](https://opencollective.com/Radarr/sponsors/badge.svg)](#sponsors)
[![Backers on Open Collective](https://opencollective.com/Radarr/backers/badge.svg)](#backers)
[![Sponsors on Open Collective](https://opencollective.com/Radarr/sponsors/badge.svg)](#sponsors)
Radarr is an __independent__ fork of [Sonarr](https://github.com/Sonarr/Sonarr) reworked for automatically downloading movies via Usenet and BitTorrent.
Radarr is a movie collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new movies and will interface with clients and indexers to grab, sort, and rename them. It can also be configured to automatically upgrade the quality of existing files in the library when a better quality format becomes available.
The project was inspired by other Usenet/BitTorrent movie downloaders such as CouchPotato.
## Getting Started
[![Installation](https://img.shields.io/badge/wiki-installation-brightgreen.svg?maxAge=60&style=flat-square)](https://github.com/Radarr/Radarr/wiki/Installation)
[![Docker](https://img.shields.io/badge/wiki-docker-1488C6.svg?maxAge=60&style=flat-square)](https://github.com/Radarr/Radarr/wiki/Docker)
[![Setup Guide](https://img.shields.io/badge/wiki-setup_guide-orange.svg?maxAge=60&style=flat-square)](https://github.com/Radarr/Radarr/wiki/Setup-Guide)
[![FAQ](https://img.shields.io/badge/wiki-FAQ-BF55EC.svg?maxAge=60&style=flat-square)](https://github.com/Radarr/Radarr/wiki/FAQ)
If you are using Docker please ensure your Docker paths are setup correctly using [this guide to facilitate](https://old.reddit.com/r/usenet/wiki/docker) hardlinks and minimize permissions issues.
* [Install Radarr for your desired OS](https://github.com/Radarr/Radarr/wiki/Installation) *or* use [Docker](https://github.com/Radarr/Radarr/wiki/Docker)
* *For Linux users*, run `radarr` and *optionally* have [Radarr start automatically](https://github.com/Radarr/Radarr/wiki/Autostart-on-Linux)
* Connect to the UI through <http://localhost:7878> or <http://your-ip:7878> in your web browser
* See the [Setup Guide](https://github.com/Radarr/Radarr/wiki/Setup-Guide) for further configuration
## Downloads
Please note that v0.2 will only have critical bugs resolved as of August 2020. Any additional development or features will be soley in V3.
| Release Type | Branch: develop (stable) | Branch: nightly (semi-unstable) | Branch: aphrodite (very-unstable) |
|-----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Binary Releases | [![GitHub Releases](https://img.shields.io/badge/downloads-releases-brightgreen.svg?maxAge=60&style=flat-square)](https://github.com/Radarr/Radarr/releases) | [![AppVeyor Builds](https://img.shields.io/badge/downloads-nightly-green.svg?maxAge=60&style=flat-square)](https://ci.appveyor.com/project/galli-leo/radarr-usby1/branch/develop/artifacts) | |
| Docker - lsio | [![Docker release](https://img.shields.io/badge/linuxserver-radarr:latest-blue.svg?colorB=1488C6&maxAge=60&style=flat-square)](https://hub.docker.com/r/linuxserver/radarr) | [![Docker nightly](https://img.shields.io/badge/linuxserver-radarr:nightly-blue.svg?colorB=1488C6&maxAge=60&style=flat-square)](https://hub.docker.com/r/linuxserver/radarr) | [![Docker aphrodite](https://img.shields.io/badge/linuxserver-radarr:preview-blue.svg?colorB=1488C6&maxAge=60&style=flat-square)](https://hub.docker.com/r/linuxserver/radarr) |
| Docker - hotio | [![Docker release](https://img.shields.io/badge/hotio-radarr:latest-blue.svg?colorB=1488C6&maxAge=60&style=flat-square)](https://hub.docker.com/r/hotio/radarr) | [![Docker nightly](https://img.shields.io/badge/hotio-radarr:unstable-blue.svg?colorB=1488C6&maxAge=60&style=flat-square)](https://hub.docker.com/r/hotio/radarr) | [![Docker aphrodite](https://img.shields.io/badge/hotio-radarr:aphrodite-blue.svg?colorB=1488C6&maxAge=60&style=flat-square)](https://hub.docker.com/r/hotio/radarr) |
## Support
[![Discord](https://img.shields.io/badge/discord-chat-7289DA.svg?maxAge=60&style=flat-square)](https://discord.gg/AD3UP37)
[![Reddit](https://img.shields.io/badge/reddit-discussion-FF4500.svg?maxAge=60&style=flat-square)](https://www.reddit.com/r/radarr)
[![GitHub](https://img.shields.io/badge/github-issues-red.svg?maxAge=60&style=flat-square)](https://github.com/Radarr/Radarr/issues)
[![GitHub Wiki](https://img.shields.io/badge/github-wiki-181717.svg?maxAge=60&style=flat-square)](https://github.com/Radarr/Radarr/wiki)
## Status
[![GitHub issues](https://img.shields.io/github/issues/radarr/radarr.svg?maxAge=60&style=flat-square)](https://github.com/Radarr/Radarr/issues)
[![GitHub pull requests](https://img.shields.io/github/issues-pr/radarr/radarr.svg?maxAge=60&style=flat-square)](https://github.com/Radarr/Radarr/pulls)
[![GNU GPL v3](https://img.shields.io/badge/license-GNU%20GPL%20v3-blue.svg?maxAge=60&style=flat-square)](http://www.gnu.org/licenses/gpl.html)
[![Copyright 2010-2020](https://img.shields.io/badge/copyright-2020-blue.svg?maxAge=60&style=flat-square)](https://github.com/Radarr/Radarr)
[![Github Releases](https://img.shields.io/github/downloads/Radarr/Radarr/total.svg?maxAge=60&style=flat-square)](https://github.com/Radarr/Radarr/releases/)
[![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/radarr.svg?maxAge=60&style=flat-square)](https://hub.docker.com/r/linuxserver/radarr/)
[![Changelog](https://img.shields.io/github/commit-activity/w/radarr/radarr.svg?style=flat-square)](/CHANGELOG.md#unreleased)
### [Site and API Status](https://status.radarr.video)
Radarr is currently undergoing rapid development and pull requests are actively added into the repository.
## Features
### Current Features
## Major Features Include:
* Adding new movies with lots of information, such as trailers, ratings, etc.
* Support for major platforms: Windows, Linux, macOS, Raspberry Pi, etc.
@@ -69,78 +21,57 @@ Radarr is currently undergoing rapid development and pull requests are actively
* Automatically importing downloaded movies
* Recognizing Special Editions, Director's Cut, etc.
* Identifying releases with hardcoded subs
* All indexers supported by Sonarr also supported
* New PassThePopcorn Indexer
* QBittorrent, Deluge, rTorrent, Transmission and uTorrent download client (Other clients are coming)
* New TorrentPotato Indexer
* Torznab Indexer now supports Movies (Works well with [Jackett](https://github.com/Jackett/Jackett))
* Scanning PreDB to know when a new release is available
* Importing movies from various online sources, such as IMDb Watchlists or Trakt (v3) (A complete list can be found [here](https://github.com/Radarr/Radarr/issues/114))
* QBittorrent, Deluge, rTorrent, Transmission, uTorrent, and other download clients are supported
* Full integration with Kodi, Plex (notification, library update)
* And a new beautiful UI (v3)
* A beautiful UI
* Importing Metadata such as trailers or subtitles
* Adding metadata such as posters and information for Kodi and others to use
* Advanced customization for profiles, such that Radarr will always download the copy you want
#### [Feature Requests](https://github.com/Radarr/Radarr/issues/new?assignees=&labels=feature+request&template=feature_request.md&title=)
## Support
Note: GitHub Issues are for Bugs and Feature Requests Only
## Configuring the Development Environment
[![Discord](https://img.shields.io/badge/discord-chat-7289DA.svg?maxAge=60)](https://radarr.video/discord)
[![Reddit](https://img.shields.io/badge/reddit-discussion-FF4500.svg?maxAge=60)](https://www.reddit.com/r/Radarr)
[![GitHub - Bugs and Feature Requests Only](https://img.shields.io/badge/github-issues-red.svg?maxAge=60)](https://github.com/Radarr/Radarr/issues)
[![Wiki](https://img.shields.io/badge/servarr-wiki-181717.svg?maxAge=60)](https://wiki.servarr.com/Radarr)
### Requirements
## Feature Requests
* [Visual Studio Community 2019](https://www.visualstudio.com/vs/community/) or [Rider](http://www.jetbrains.com/rider/)
* [Git](https://git-scm.com/downloads)
* [Node.js](https://nodejs.org/en/download/)
* [Yarn](https://yarnpkg.com/)
[Feature Requests](https://github.com/Radarr/Radarr/issues/new?assignees=&labels=Type%3A+Enhancement&template=feature_request.md&title=)
### Setup
## Contributors & Developers
[API Documentation](https://radarr.video/docs/api/)
* Make sure all the required software mentioned above are installed
* Clone the repository into your development machine ([*info*](https://help.github.com/desktop/guides/contributing/working-with-your-remote-repository-on-github-or-github-enterprise))
* Install the required Node Packages `yarn install`
* Start gulp to monitor your dev environment for any changes that need post processing using `yarn start` command.
This project exists thanks to all the people who contribute. [Contribute](CONTRIBUTING.md).
<a href="https://github.com/Radarr/Radarr/graphs/contributors"><img src="https://opencollective.com/Radarr/contributors.svg?width=890&button=false" /></a>
> **Notice**
> Gulp must be running at all times while you are working with Radarr client source files.
### Build
## Backers
* To build run `sh build.sh`
Thank you to all our backers! 🙏 [Become a backer](https://opencollective.com/Radarr#backer)
**Note:** Windows users must have bash available to do this. If you installed git, you should have a git bash utility that works.
<img src="https://opencollective.com/Radarr/backers.svg?width=890"></a>
### Development
## Sponsors
* Open `Radarr.sln` in Visual Studio 2019 or run the build.sh script, if Mono is installed. Alternatively you can use Jetbrains Rider, since it works on all Platforms.
* Make sure `NzbDrone.Console` is set as the startup project
* Run `build.sh` before running, or build in VS
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor](https://opencollective.com/Radarr#sponsor)
## Supporters
<img src="https://opencollective.com/Radarr/sponsors.svg?width=890"></a>
This project would not be possible without the support by these amazing folks. [**Become a sponsor or backer**](https://opencollective.com/radarr) to help us out!
## Mega Sponsors
### Sponsors
<img src="https://opencollective.com/Radarr/tiers/mega-sponsor.svg?width=890"></a>
[![Sponsors](https://opencollective.com/radarr/tiers/sponsor.svg)](https://opencollective.com/radarr/order/3851)
### Flexible Sponsors
[![Flexible Sponsors](https://opencollective.com/radarr/tiers/flexible-sponsor.svg?avatarHeight=54)](https://opencollective.com/radarr/order/3856)
### Backers
[![Backers](https://opencollective.com/radarr/tiers/backer.svg?avatarHeight=48)](https://opencollective.com/radarr/order/3850)
### JetBrains
Thank you to [<img src="/Logo/jetbrains.svg" alt="JetBrains" width="32"> JetBrains](http://www.jetbrains.com/) for providing us with free licenses to their great tools
## JetBrains
Thank you to [<img src="/Logo/jetbrains.svg" alt="JetBrains" width="32"> JetBrains](http://www.jetbrains.com/) for providing us with free licenses to their great tools.
* [<img src="/Logo/resharper.svg" alt="ReSharper" width="32"> ReSharper](http://www.jetbrains.com/resharper/)
* [<img src="/Logo/webstorm.svg" alt="WebStorm" width="32"> WebStorm](http://www.jetbrains.com/webstorm/)
* [<img src="/Logo/rider.svg" alt="Rider" width="32"> Rider](http://www.jetbrains.com/rider/)
* [<img src="/Logo/webstorm.svg" alt="WebStorm" width="32"> WebStorm](http://www.jetbrains.com/webstorm/)
* [<img src="/Logo/rider.svg" alt="Rider" width="32"> Rider](http://www.jetbrains.com/rider/)
* [<img src="/Logo/dottrace.svg" alt="dotTrace" width="32"> dotTrace](http://www.jetbrains.com/dottrace/)
## License
### License
* [GNU GPL v3](http://www.gnu.org/licenses/gpl.html)
* Copyright 2010-2020
* Copyright 2010-2021

View File

@@ -7,24 +7,28 @@ variables:
outputFolder: './_output'
artifactsFolder: './_artifacts'
testsFolder: './_tests'
majorVersion: '3.0.0'
majorVersion: '3.2.2'
minorVersion: $[counter('minorVersion', 2000)]
radarrVersion: '$(majorVersion).$(minorVersion)'
buildName: '$(Build.SourceBranchName).$(radarrVersion)'
sentryOrg: 'servarr'
sentryUrl: 'https://sentry.servarr.com'
dotnetVersion: '3.1.401'
dotnetVersion: '5.0.202'
yarnCacheFolder: $(Pipeline.Workspace)/.yarn
trigger:
branches:
include:
- develop
- aphrodite
- master
pr:
- develop
- aphrodite
branches:
include:
- develop
paths:
exclude:
- src/NzbDrone.Core/Localization/Core
stages:
- stage: Setup
@@ -40,7 +44,7 @@ stages:
displayName: Set Build Name
- bash: |
if [[ $BUILD_REASON == "PullRequest" ]]; then
git diff origin/aphrodite...HEAD --name-only | grep -E "^(src/|azure-pipelines.yml)"
git diff origin/develop...HEAD --name-only | grep -E "^(src/|azure-pipelines.yml)"
echo $? > not_backend_update
else
echo 0 > not_backend_update
@@ -60,18 +64,21 @@ stages:
Linux:
osName: 'Linux'
imageName: 'ubuntu-18.04'
enableAnalysis: 'true'
Mac:
osName: 'Mac'
imageName: 'macos-10.14'
enableAnalysis: 'false'
Windows:
osName: 'Windows'
imageName: 'windows-2019'
enableAnalysis: 'false'
pool:
vmImage: $(imageName)
variables:
# Disable stylecop here - linting errors get caught by the analyze task
EnableAnalyzers: 'false'
EnableAnalyzers: $(enableAnalysis)
steps:
- checkout: self
submodules: true
@@ -80,7 +87,18 @@ stages:
displayName: 'Install .net core'
inputs:
version: $(dotnetVersion)
- bash: ./build.sh --backend
- bash: |
BUNDLEDVERSIONS=${AGENT_TOOLSDIRECTORY}/dotnet/sdk/${DOTNETVERSION}/Microsoft.NETCoreSdk.BundledVersions.props
echo $BUNDLEDVERSIONS
grep osx-x64 $BUNDLEDVERSIONS
if grep -q freebsd-x64 $BUNDLEDVERSIONS; then
echo "BSD already enabled"
else
echo "Enabling BSD support"
sed -i.ORI 's/osx-x64/osx-x64;freebsd-x64/' $BUNDLEDVERSIONS
fi
displayName: Enable FreeBSD Support
- bash: ./build.sh --backend --enable-bsd
displayName: Build Radarr Backend
- bash: |
find ${OUTPUTFOLDER} -type f ! -path "*/publish/*" -exec rm -rf {} \;
@@ -93,23 +111,27 @@ stages:
artifact: '$(osName)Backend'
displayName: Publish Backend
condition: and(succeeded(), eq(variables['osName'], 'Windows'))
- publish: '$(testsFolder)/netcoreapp3.1/win-x64/publish'
- publish: '$(testsFolder)/net5.0/win-x64/publish'
artifact: WindowsCoreTests
displayName: Publish Windows Test Package
condition: and(succeeded(), eq(variables['osName'], 'Windows'))
- publish: '$(testsFolder)/net462/linux-x64/publish'
- publish: '$(testsFolder)/net472/linux-x64/publish'
artifact: LinuxTests
displayName: Publish Linux Mono Test Package
condition: and(succeeded(), eq(variables['osName'], 'Windows'))
- publish: '$(testsFolder)/netcoreapp3.1/linux-x64/publish'
- publish: '$(testsFolder)/net5.0/linux-x64/publish'
artifact: LinuxCoreTests
displayName: Publish Linux Test Package
condition: and(succeeded(), eq(variables['osName'], 'Windows'))
- publish: '$(testsFolder)/netcoreapp3.1/linux-musl-x64/publish'
- publish: '$(testsFolder)/net5.0/linux-musl-x64/publish'
artifact: LinuxMuslCoreTests
displayName: Publish Linux Musl Test Package
condition: and(succeeded(), eq(variables['osName'], 'Windows'))
- publish: '$(testsFolder)/netcoreapp3.1/osx-x64/publish'
- publish: '$(testsFolder)/net5.0/freebsd-x64/publish'
artifact: FreebsdCoreTests
displayName: Publish FreeBSD Test Package
condition: and(succeeded(), eq(variables['osName'], 'Windows'))
- publish: '$(testsFolder)/net5.0/osx-x64/publish'
artifact: MacCoreTests
displayName: Publish MacOS Test Package
condition: and(succeeded(), eq(variables['osName'], 'Windows'))
@@ -136,7 +158,7 @@ stages:
- task: NodeTool@0
displayName: Set Node.js version
inputs:
versionSpec: '10.x'
versionSpec: '12.x'
- checkout: self
submodules: true
fetchDepth: 1
@@ -185,8 +207,12 @@ stages:
- bash: ./build.sh --packages
displayName: Create Packages
- bash: |
setup/inno/ISCC.exe setup/radarr.iss //DFramework=netcoreapp3.1
cp setup/output/Radarr.*windows.netcoreapp3.1.exe ${BUILD_ARTIFACTSTAGINGDIRECTORY}/Radarr.${BUILDNAME}.windows-core-x64-installer.exe
setup/inno/ISCC.exe setup/radarr.iss //DFramework=net5.0 //DRuntime=win-x86
cp setup/output/Radarr.*windows.net5.0.exe ${BUILD_ARTIFACTSTAGINGDIRECTORY}/Radarr.${BUILDNAME}.windows-core-x86-installer.exe
displayName: Create .NET Core Windows installer
- bash: |
setup/inno/ISCC.exe setup/radarr.iss //DFramework=net5.0 //DRuntime=win-x64
cp setup/output/Radarr.*windows.net5.0.exe ${BUILD_ARTIFACTSTAGINGDIRECTORY}/Radarr.${BUILDNAME}.windows-core-x64-installer.exe
displayName: Create .NET Core Windows installer
- publish: $(Build.ArtifactStagingDirectory)
artifact: 'WindowsInstaller'
@@ -216,7 +242,7 @@ stages:
artifactName: WindowsFrontend
targetPath: _output
displayName: Fetch Frontend
- bash: ./build.sh --packages
- bash: ./build.sh --packages --enable-bsd
displayName: Create Packages
- bash: |
find . -name "Radarr" -exec chmod a+x {} \;
@@ -228,14 +254,21 @@ stages:
archiveFile: '$(Build.ArtifactStagingDirectory)/Radarr.$(buildName).windows-core-x64.zip'
archiveType: 'zip'
includeRootFolder: false
rootFolderOrFile: $(artifactsFolder)/windows/netcoreapp3.1
rootFolderOrFile: $(artifactsFolder)/win-x64/net5.0
- task: ArchiveFiles@2
displayName: Create Windows x86 Core zip
inputs:
archiveFile: '$(Build.ArtifactStagingDirectory)/Radarr.$(buildName).windows-core-x86.zip'
archiveType: 'zip'
includeRootFolder: false
rootFolderOrFile: $(artifactsFolder)/win-x86/net5.0
- task: ArchiveFiles@2
displayName: Create MacOS Core app
inputs:
archiveFile: '$(Build.ArtifactStagingDirectory)/Radarr.$(buildName).osx-app-core-x64.zip'
archiveType: 'zip'
includeRootFolder: false
rootFolderOrFile: $(artifactsFolder)/macos-app/netcoreapp3.1
rootFolderOrFile: $(artifactsFolder)/macos-app/net5.0
- task: ArchiveFiles@2
displayName: Create MacOS Core tar
inputs:
@@ -243,7 +276,7 @@ stages:
archiveType: 'tar'
tarCompression: 'gz'
includeRootFolder: false
rootFolderOrFile: $(artifactsFolder)/macos/netcoreapp3.1
rootFolderOrFile: $(artifactsFolder)/macos/net5.0
- task: ArchiveFiles@2
displayName: Create Linux Mono tar
inputs:
@@ -251,7 +284,7 @@ stages:
archiveType: 'tar'
tarCompression: 'gz'
includeRootFolder: false
rootFolderOrFile: $(artifactsFolder)/linux-x64/net462
rootFolderOrFile: $(artifactsFolder)/linux-x64/net472
- task: ArchiveFiles@2
displayName: Create Linux Core tar
inputs:
@@ -259,7 +292,7 @@ stages:
archiveType: 'tar'
tarCompression: 'gz'
includeRootFolder: false
rootFolderOrFile: $(artifactsFolder)/linux-x64/netcoreapp3.1
rootFolderOrFile: $(artifactsFolder)/linux-x64/net5.0
- task: ArchiveFiles@2
displayName: Create Linux Musl Core tar
inputs:
@@ -267,7 +300,7 @@ stages:
archiveType: 'tar'
tarCompression: 'gz'
includeRootFolder: false
rootFolderOrFile: $(artifactsFolder)/linux-musl-x64/netcoreapp3.1
rootFolderOrFile: $(artifactsFolder)/linux-musl-x64/net5.0
- task: ArchiveFiles@2
displayName: Create ARM32 Linux Core tar
inputs:
@@ -275,7 +308,7 @@ stages:
archiveType: 'tar'
tarCompression: 'gz'
includeRootFolder: false
rootFolderOrFile: $(artifactsFolder)/linux-arm/netcoreapp3.1
rootFolderOrFile: $(artifactsFolder)/linux-arm/net5.0
- task: ArchiveFiles@2
displayName: Create ARM64 Linux Core tar
inputs:
@@ -283,7 +316,7 @@ stages:
archiveType: 'tar'
tarCompression: 'gz'
includeRootFolder: false
rootFolderOrFile: $(artifactsFolder)/linux-arm64/netcoreapp3.1
rootFolderOrFile: $(artifactsFolder)/linux-arm64/net5.0
- task: ArchiveFiles@2
displayName: Create ARM64 Linux Musl Core tar
inputs:
@@ -291,7 +324,15 @@ stages:
archiveType: 'tar'
tarCompression: 'gz'
includeRootFolder: false
rootFolderOrFile: $(artifactsFolder)/linux-musl-arm64/netcoreapp3.1
rootFolderOrFile: $(artifactsFolder)/linux-musl-arm64/net5.0
- task: ArchiveFiles@2
displayName: Create FreeBSD Core Core tar
inputs:
archiveFile: '$(Build.ArtifactStagingDirectory)/Radarr.$(buildName).freebsd-core-x64.tar.gz'
archiveType: 'tar'
tarCompression: 'gz'
includeRootFolder: false
rootFolderOrFile: $(artifactsFolder)/freebsd-x64/net5.0
- publish: $(Build.ArtifactStagingDirectory)
artifact: 'Packages'
displayName: Publish Packages
@@ -302,14 +343,22 @@ stages:
sentry-cli releases new --finalize -p radarr -p radarr-ui -p radarr-update "${RELEASENAME}"
sentry-cli releases -p radarr-ui files "${RELEASENAME}" upload-sourcemaps _output/UI/ --rewrite
sentry-cli releases set-commits --auto "${RELEASENAME}"
sentry-cli releases deploys "${RELEASENAME}" new -e aphrodite
if [[ ${BUILD_SOURCEBRANCH} == "refs/heads/develop" ]]; then
sentry-cli releases deploys "${RELEASENAME}" new -e nightly
else
sentry-cli releases deploys "${RELEASENAME}" new -e production
fi
if [ $? -gt 0 ]; then
echo "##vso[task.logissue type=warning]Error uploading source maps."
fi
exit 0
displayName: Publish Sentry Source Maps
continueOnError: true
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/aphrodite'))
condition: |
or
(
and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/develop')),
and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'))
)
env:
SENTRY_AUTH_TOKEN: $(sentryAuthTokenServarr)
SENTRY_ORG: $(sentryOrg)
@@ -337,24 +386,34 @@ stages:
displayName: Unit Native
dependsOn: Prepare
condition: and(succeeded(), eq(dependencies.Prepare.outputs['setVar.backendNotUpdated'], '0'))
workspace:
clean: all
strategy:
matrix:
MacCore:
osName: 'Mac'
testName: 'MacCore'
poolName: 'Azure Pipelines'
imageName: 'macos-10.14'
WindowsCore:
osName: 'Windows'
testName: 'WindowsCore'
poolName: 'Azure Pipelines'
imageName: 'windows-2019'
LinuxCore:
osName: 'Linux'
testName: 'LinuxCore'
poolName: 'Azure Pipelines'
imageName: 'ubuntu-18.04'
pattern: 'Radarr.**.linux-core-x64.tar.gz'
FreebsdCore:
osName: 'Linux'
testName: 'FreebsdCore'
poolName: 'FreeBSD'
imageName:
pool:
name: $(poolName)
vmImage: $(imageName)
steps:
@@ -363,6 +422,7 @@ stages:
displayName: 'Install .net core'
inputs:
version: $(dotnetVersion)
condition: ne(variables['poolName'], 'FreeBSD')
- task: DownloadPipelineArtifact@2
displayName: Download Test Artifact
inputs:
@@ -375,15 +435,10 @@ stages:
sudo apt-get update
sudo apt-get install -y --allow-unauthenticated libmediainfo-dev libmediainfo0v5 mediainfo
displayName: Install mediainfo
condition: and(succeeded(), eq(variables['osName'], 'Linux'))
condition: and(succeeded(), eq(variables['testName'], 'LinuxCore'))
- powershell: Set-Service SCardSvr -StartupType Manual
displayName: Enable Windows Test Service
condition: and(succeeded(), eq(variables['osName'], 'Windows'))
- bash: |
wget https://github.com/acoustid/chromaprint/releases/download/v1.4.3/chromaprint-fpcalc-1.4.3-linux-x86_64.tar.gz
sudo tar xf chromaprint-fpcalc-1.4.3-linux-x86_64.tar.gz --strip-components=1 --directory /usr/bin
displayName: Install fpcalc
condition: and(succeeded(), eq(variables['osName'], 'Linux'))
- bash: |
SYMLINK=6_6_0
MONOPREFIX=/Library/Frameworks/Mono.framework/Versions/$SYMLINK
@@ -418,19 +473,19 @@ stages:
mono520:
testName: 'Mono 5.20'
artifactName: LinuxTests
containerImage: servarr/testimages:mono-5.20
containerImage: ghcr.io/servarr/testimages:mono-5.20
mono610:
testName: 'Mono 6.10'
artifactName: LinuxTests
containerImage: servarr/testimages:mono-6.10
containerImage: ghcr.io/servarr/testimages:mono-6.10
mono612:
testName: 'Mono 6.12'
artifactName: LinuxTests
containerImage: servarr/testimages:mono-6.12
containerImage: ghcr.io/servarr/testimages:mono-6.12
alpine:
testName: 'Musl Net Core'
artifactName: LinuxMuslCoreTests
containerImage: servarr/testimages:alpine
containerImage: ghcr.io/servarr/testimages:alpine
pool:
vmImage: 'ubuntu-18.04'
@@ -495,17 +550,17 @@ stages:
osName: 'Mac'
testName: 'MacCore'
imageName: 'macos-10.14'
pattern: 'Radarr.**.osx-core-x64.tar.gz'
pattern: 'Radarr.*.osx-core-x64.tar.gz'
WindowsCore:
osName: 'Windows'
testName: 'WindowsCore'
imageName: 'windows-2019'
pattern: 'Radarr.**.windows-core-x64.zip'
pattern: 'Radarr.*.windows-core-x64.zip'
LinuxCore:
osName: 'Linux'
testName: 'LinuxCore'
imageName: 'ubuntu-18.04'
pattern: 'Radarr.**.linux-core-x64.tar.gz'
pattern: 'Radarr.*.linux-core-x64.tar.gz'
pool:
vmImage: $(imageName)
@@ -558,6 +613,52 @@ stages:
failTaskOnFailedTests: true
displayName: Publish Test Results
- job: Integration_FreeBSD
displayName: Integration Native FreeBSD
dependsOn: Prepare
condition: and(succeeded(), eq(dependencies.Prepare.outputs['setVar.backendNotUpdated'], '0'))
workspace:
clean: all
variables:
pattern: 'Radarr.*.freebsd-core-x64.tar.gz'
pool:
name: 'FreeBSD'
steps:
- checkout: none
- task: DownloadPipelineArtifact@2
displayName: Download Test Artifact
inputs:
buildType: 'current'
artifactName: 'FreebsdCoreTests'
targetPath: $(testsFolder)
- task: DownloadPipelineArtifact@2
displayName: Download Build Artifact
inputs:
buildType: 'current'
artifactName: Packages
itemPattern: '/$(pattern)'
targetPath: $(Build.ArtifactStagingDirectory)
- bash: |
mkdir -p ${BUILD_ARTIFACTSTAGINGDIRECTORY}/bin
tar xf ${BUILD_ARTIFACTSTAGINGDIRECTORY}/$(pattern) -C ${BUILD_ARTIFACTSTAGINGDIRECTORY}/bin
displayName: Extract Package
- bash: |
mkdir -p ./bin/
cp -r -v ${BUILD_ARTIFACTSTAGINGDIRECTORY}/bin/Radarr/. ./bin/
displayName: Move Package Contents
- bash: |
chmod a+x ${TESTSFOLDER}/test.sh
${TESTSFOLDER}/test.sh Linux Integration Test
displayName: Run Integration Tests
- task: PublishTestResults@2
inputs:
testResultsFormat: 'NUnit'
testResultsFiles: '**/TestResult.xml'
testRunTitle: 'FreeBSD Integration Tests'
failTaskOnFailedTests: true
displayName: Publish Test Results
- job: Integration_Docker
displayName: Integration Docker
dependsOn: Prepare
@@ -567,23 +668,23 @@ stages:
mono520:
testName: 'Mono 5.20'
artifactName: LinuxTests
containerImage: servarr/testimages:mono-5.20
pattern: 'Radarr.**.linux.tar.gz'
containerImage: ghcr.io/servarr/testimages:mono-5.20
pattern: 'Radarr.*.linux.tar.gz'
mono610:
testName: 'Mono 6.10'
artifactName: LinuxTests
containerImage: servarr/testimages:mono-6.10
pattern: 'Radarr.**.linux.tar.gz'
containerImage: ghcr.io/servarr/testimages:mono-6.10
pattern: 'Radarr.*.linux.tar.gz'
mono612:
testName: 'Mono 6.12'
artifactName: LinuxTests
containerImage: servarr/testimages:mono-6.12
pattern: 'Radarr.**.linux.tar.gz'
containerImage: ghcr.io/servarr/testimages:mono-6.12
pattern: 'Radarr.*.linux.tar.gz'
alpine:
testName: 'Musl Net Core'
artifactName: LinuxMuslCoreTests
containerImage: servarr/testimages:alpine
pattern: 'Radarr.**.linux-musl-core-x64.tar.gz'
containerImage: ghcr.io/servarr/testimages:alpine
pattern: 'Radarr.*.linux-musl-core-x64.tar.gz'
pool:
vmImage: 'ubuntu-18.04'
@@ -642,17 +743,17 @@ stages:
Linux:
osName: 'Linux'
imageName: 'ubuntu-18.04'
pattern: 'Radarr.**.linux-core-x64.tar.gz'
pattern: 'Radarr.*.linux-core-x64.tar.gz'
failBuild: true
Mac:
osName: 'Mac'
imageName: 'macos-10.14'
pattern: 'Radarr.**.osx-core-x64.tar.gz'
pattern: 'Radarr.*.osx-core-x64.tar.gz'
failBuild: true
Windows:
osName: 'Windows'
imageName: 'windows-2019'
pattern: 'Radarr.**.windows-core-x64.zip'
pattern: 'Radarr.*.windows-core-x64.zip'
failBuild: true
pool:
@@ -686,24 +787,21 @@ stages:
mkdir -p ./bin/
cp -r -v ${BUILD_ARTIFACTSTAGINGDIRECTORY}/bin/Radarr/. ./bin/
displayName: Move Package Contents
- bash: |
if [[ $OSNAME == "Mac" ]]; then
url=https://github.com/mozilla/geckodriver/releases/download/v0.27.0/geckodriver-v0.27.0-macos.tar.gz
elif [[ $OSNAME == "Linux" ]]; then
url=https://github.com/mozilla/geckodriver/releases/download/v0.27.0/geckodriver-v0.27.0-linux64.tar.gz
else
echo "Unhandled OS"
exit 1
fi
curl -s -L "$url" | tar -xz
chmod +x geckodriver
mv geckodriver _tests
displayName: Install Gecko Driver
condition: and(succeeded(), ne(variables['osName'], 'Windows'))
- bash: |
chmod a+x ${TESTSFOLDER}/test.sh
${TESTSFOLDER}/test.sh ${OSNAME} Automation Test
displayName: Run Automation Tests
- task: CopyFiles@2
displayName: 'Copy Screenshot to: $(Build.ArtifactStagingDirectory)'
inputs:
SourceFolder: '$(Build.SourcesDirectory)'
Contents: |
**/*_test_screenshot.png
TargetFolder: '$(Build.ArtifactStagingDirectory)/screenshots'
- publish: $(Build.ArtifactStagingDirectory)/screenshots
artifact: '$(osName)AutomationScreenshots'
displayName: Publish Screenshot Bundle
condition: and(succeeded(), eq(variables['System.JobAttempt'], '1'))
- task: PublishTestResults@2
inputs:
testResultsFormat: 'NUnit'
@@ -747,7 +845,7 @@ stages:
- task: NodeTool@0
displayName: Set Node.js version
inputs:
versionSpec: '10.x'
versionSpec: '12.x'
- checkout: self
submodules: true
fetchDepth: 1
@@ -793,6 +891,7 @@ stages:
variables:
disable.coverage.autogenerate: 'true'
EnableAnalyzers: 'false'
pool:
vmImage: windows-2019
@@ -821,8 +920,8 @@ stages:
sonar.cs.opencover.reportsPaths=$(Build.SourcesDirectory)/CoverageResults/**/coverage.opencover.xml
sonar.cs.nunit.reportsPaths=$(Build.SourcesDirectory)/TestResult.xml
- bash: |
./build.sh --backend -f netcoreapp3.1 -r win-x64
TEST_DIR=_tests/netcoreapp3.1/win-x64/publish/ ./test.sh Windows Unit Coverage
./build.sh --backend -f net5.0 -r win-x64
TEST_DIR=_tests/net5.0/win-x64/publish/ ./test.sh Windows Unit Coverage
displayName: Coverage Unit Tests
- task: SonarCloudAnalyze@1
condition: eq(variables['System.PullRequest.IsFork'], 'False')
@@ -852,8 +951,15 @@ stages:
- job:
displayName: Discord Notification
pool:
vmImage: 'ubuntu-18.04'
vmImage: 'windows-2019'
steps:
- task: DownloadPipelineArtifact@2
continueOnError: true
displayName: Download Screenshot Artifact
inputs:
buildType: 'current'
artifactName: 'WindowsAutomationScreenshots'
targetPath: $(Build.SourcesDirectory)
- checkout: none
- powershell: |
iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/Servarr/AzureDiscordNotify/master/DiscordNotify.ps1'))

View File

@@ -1,4 +1,4 @@
#! /bin/bash
#! /usr/bin/env bash
set -e
outputFolder='_output'
@@ -25,6 +25,18 @@ UpdateVersionNumber()
fi
}
EnableBsdSupport()
{
#todo enable sdk with
#SDK_PATH=$(dotnet --list-sdks | grep -P '5\.\d\.\d+' | head -1 | sed 's/\(5\.[0-9]*\.[0-9]*\).*\[\(.*\)\]/\2\/\1/g')
# BUNDLED_VERSIONS="${SDK_PATH}/Microsoft.NETCoreSdk.BundledVersions.props"
if grep -qv freebsd-x64 src/Directory.Build.props; then
sed -i'' -e "s^<RuntimeIdentifiers>\(.*\)</RuntimeIdentifiers>^<RuntimeIdentifiers>\1;freebsd-x64</RuntimeIdentifiers>^g" src/Directory.Build.props
sed -i'' -e "s^<ExcludedRuntimeFrameworkPairs>\(.*\)</ExcludedRuntimeFrameworkPairs>^<ExcludedRuntimeFrameworkPairs>\1;freebsd-x64:net472</ExcludedRuntimeFrameworkPairs>^g" src/Directory.Build.props
fi
}
LintUI()
{
ProgressStart 'ESLint'
@@ -75,11 +87,11 @@ YarnInstall()
ProgressEnd 'yarn install'
}
RunGulp()
RunWebpack()
{
ProgressStart 'Running gulp'
yarn run build --production
ProgressEnd 'Running gulp'
ProgressStart 'Running webpack'
yarn run build --env production
ProgressEnd 'Running webpack'
}
PackageFiles()
@@ -118,7 +130,7 @@ PackageLinux()
echo "Adding Radarr.Mono to UpdatePackage"
cp $folder/Radarr.Mono.* $folder/Radarr.Update
if [ "$framework" = "netcoreapp3.1" ]; then
if [ "$framework" = "net5.0" ]; then
cp $folder/Mono.Posix.NETStandard.* $folder/Radarr.Update
cp $folder/libMonoPosixHelper.* $folder/Radarr.Update
fi
@@ -136,7 +148,7 @@ PackageMacOS()
PackageFiles "$folder" "$framework" "osx-x64"
if [ "$framework" = "net462" ]; then
if [ "$framework" = "net472" ]; then
echo "Adding Startup script"
cp macOS/Radarr $folder
fi
@@ -150,7 +162,7 @@ PackageMacOS()
echo "Adding Radarr.Mono to UpdatePackage"
cp $folder/Radarr.Mono.* $folder/Radarr.Update
if [ "$framework" = "netcoreapp3.1" ]; then
if [ "$framework" = "net5.0" ]; then
cp $folder/Mono.Posix.NETStandard.* $folder/Radarr.Update
cp $folder/libMonoPosixHelper.* $folder/Radarr.Update
fi
@@ -183,12 +195,14 @@ PackageMacOSApp()
PackageWindows()
{
local framework="$1"
local runtime="$2"
ProgressStart "Creating Windows Package for $framework"
local folder=$artifactsFolder/windows/$framework/Radarr
local folder=$artifactsFolder/$runtime/$framework/Radarr
PackageFiles "$folder" "$framework" "win-x64"
PackageFiles "$folder" "$framework" "$runtime"
cp -r $outputFolder/$framework-windows/$runtime/publish/* $folder
echo "Removing Radarr.Mono"
rm -f $folder/Radarr.Mono.*
@@ -210,11 +224,11 @@ Package()
IFS='-' read -ra SPLIT <<< "$runtime"
case "${SPLIT[0]}" in
linux)
linux|freebsd*)
PackageLinux "$framework" "$runtime"
;;
win)
PackageWindows "$framework"
PackageWindows "$framework" "$runtime"
;;
osx)
PackageMacOS "$framework"
@@ -232,14 +246,6 @@ PackageTests()
rm -f $testPackageFolder/$framework/$runtime/*.log.config
# geckodriver.exe isn't copied by dotnet publish
if [ "$runtime" = "win-x64" ];
then
curl -Lso gecko.zip "https://github.com/mozilla/geckodriver/releases/download/v0.27.0/geckodriver-v0.27.0-win64.zip"
unzip -o gecko.zip
cp geckodriver.exe "$testPackageFolder/$framework/win-x64/publish"
fi
ProgressEnd 'Creating Test Package'
}
@@ -263,6 +269,7 @@ if [ $# -eq 0 ]; then
FRONTEND=YES
PACKAGES=YES
LINT=YES
ENABLE_BSD=NO
fi
while [[ $# -gt 0 ]]
@@ -274,6 +281,10 @@ case $key in
BACKEND=YES
shift # past argument
;;
--enable-bsd)
ENABLE_BSD=YES
shift # past argument
;;
-r|--runtime)
RID="$2"
shift # past argument
@@ -314,14 +325,23 @@ set -- "${POSITIONAL[@]}" # restore positional parameters
if [ "$BACKEND" = "YES" ];
then
UpdateVersionNumber
if [ "$ENABLE_BSD" = "YES" ];
then
EnableBsdSupport
fi
Build
if [[ -z "$RID" || -z "$FRAMEWORK" ]];
then
PackageTests "netcoreapp3.1" "win-x64"
PackageTests "netcoreapp3.1" "linux-x64"
PackageTests "netcoreapp3.1" "linux-musl-x64"
PackageTests "netcoreapp3.1" "osx-x64"
PackageTests "net462" "linux-x64"
PackageTests "net5.0" "win-x64"
PackageTests "net5.0" "win-x86"
PackageTests "net5.0" "linux-x64"
PackageTests "net5.0" "linux-musl-x64"
PackageTests "net5.0" "osx-x64"
PackageTests "net472" "linux-x64"
if [ "$ENABLE_BSD" = "YES" ];
then
PackageTests "net5.0" "freebsd-x64"
fi
else
PackageTests "$FRAMEWORK" "$RID"
fi
@@ -330,7 +350,7 @@ fi
if [ "$FRONTEND" = "YES" ];
then
YarnInstall
RunGulp
RunWebpack
fi
if [ "$LINT" = "YES" ];
@@ -349,14 +369,19 @@ then
if [[ -z "$RID" || -z "$FRAMEWORK" ]];
then
Package "netcoreapp3.1" "win-x64"
Package "netcoreapp3.1" "linux-x64"
Package "netcoreapp3.1" "linux-musl-x64"
Package "netcoreapp3.1" "linux-arm64"
Package "netcoreapp3.1" "linux-musl-arm64"
Package "netcoreapp3.1" "linux-arm"
Package "netcoreapp3.1" "osx-x64"
Package "net462" "linux-x64"
Package "net5.0" "win-x64"
Package "net5.0" "win-x86"
Package "net5.0" "linux-x64"
Package "net5.0" "linux-musl-x64"
Package "net5.0" "linux-arm64"
Package "net5.0" "linux-musl-arm64"
Package "net5.0" "linux-arm"
Package "net5.0" "osx-x64"
Package "net472" "linux-x64"
if [ "$ENABLE_BSD" = "YES" ];
then
Package "net5.0" "freebsd-x64"
fi
else
Package "$FRAMEWORK" "$RID"
fi

View File

@@ -1,14 +0,0 @@
# Changelog
{{#versions}}
## {{{label}}}
{{#sections}}
### {{{label}}}
{{#commits}}
- {{{subject}}} [<a href="https://github.com/{{{author}}}">{{{author}}}</a>]
{{/commits}}
{{/sections}}
{{/versions}}

View File

@@ -1,15 +0,0 @@
**To receive further Pre-Release updates, please change the branch to develop. (Settings -> General (Show Advanced Settings) -> Updates -> Branch)**
{{#versions}}
{{#sections}}
{{{label}}}
{{#commits}}
- {{{subject}}} [{{{author}}}]
{{/commits}}
{{/sections}}
{{/versions}}
**Note**: The OSX version does not automatically launch the browser. You have to go to http://localhost:7878 by yourself in a browser of your choice.

View File

@@ -6,8 +6,10 @@ const dirs = fs
.map((dirent) => dirent.name)
.join('|');
const frontendFolder = __dirname;
module.exports = {
parser: 'babel-eslint',
parser: '@babel/eslint-parser',
env: {
browser: true,
@@ -25,6 +27,9 @@ module.exports = {
parserOptions: {
ecmaVersion: 6,
sourceType: 'module',
babelOptions: {
configFile: `${frontendFolder}/babel.config.js`
},
ecmaFeatures: {
modules: true,
impliedStrict: true
@@ -271,7 +276,7 @@ module.exports = {
// ImportSort
'simple-import-sort/sort': 'error',
'simple-import-sort/imports': 'error',
'import/newline-after-import': 'error',
// React
@@ -309,7 +314,7 @@ module.exports = {
{
files: ['*.js'],
rules: {
'simple-import-sort/sort': [
'simple-import-sort/imports': [
'error',
{
groups: [

View File

@@ -75,7 +75,7 @@
"function-parentheses-newline-inside": "never-multi-line",
"function-parentheses-space-inside": "never",
"function-url-quotes": "always",
"function-url-scheme-blacklist": [
"function-url-scheme-disallowed-list": [
"data"
],
"function-whitespace-after": "always",

View File

@@ -0,0 +1,269 @@
const path = require('path');
const webpack = require('webpack');
const CopyPlugin = require('copy-webpack-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const LiveReloadPlugin = require('webpack-livereload-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const TerserPlugin = require('terser-webpack-plugin');
module.exports = (env) => {
const uiFolder = 'UI';
const frontendFolder = path.join(__dirname, '..');
const srcFolder = path.join(frontendFolder, 'src');
const isProduction = !!env.production;
const isProfiling = isProduction && !!env.profile;
const inlineWebWorkers = 'no-fallback';
const distFolder = path.resolve(frontendFolder, '..', '_output', uiFolder);
console.log('Source Folder:', srcFolder);
console.log('Output Folder:', distFolder);
console.log('isProduction:', isProduction);
console.log('isProfiling:', isProfiling);
const config = {
mode: isProduction ? 'production' : 'development',
devtool: 'source-map',
stats: {
children: false
},
watchOptions: {
ignored: /node_modules/
},
entry: {
index: 'index.js'
},
resolve: {
modules: [
srcFolder,
path.join(srcFolder, 'Shims'),
'node_modules'
],
alias: {
jquery: 'jquery/src/jquery'
},
fallback: {
buffer: false,
http: false,
https: false,
url: false,
util: false,
net: false
}
},
output: {
path: distFolder,
publicPath: '/',
filename: '[name].js',
sourceMapFilename: '[file].map'
},
optimization: {
moduleIds: 'deterministic',
chunkIds: 'named',
splitChunks: {
chunks: 'initial',
name: 'vendors'
}
},
performance: {
hints: false
},
plugins: [
new webpack.DefinePlugin({
__DEV__: !isProduction,
'process.env.NODE_ENV': isProduction ? JSON.stringify('production') : JSON.stringify('development')
}),
new MiniCssExtractPlugin({
filename: 'Content/styles.css'
}),
new HtmlWebpackPlugin({
template: 'frontend/src/index.html',
filename: 'index.html',
publicPath: '/'
}),
new CopyPlugin({
patterns: [
// HTML
{
from: 'frontend/src/*.html',
to: path.join(distFolder, '[name][ext]'),
globOptions: {
ignore: ['**/index.html']
}
},
// Fonts
{
from: 'frontend/src/Content/Fonts/*.*',
to: path.join(distFolder, 'Content/Fonts', '[name][ext]')
},
// Icon Images
{
from: 'frontend/src/Content/Images/Icons/*.*',
to: path.join(distFolder, 'Content/Images/Icons', '[name][ext]')
},
// Images
{
from: 'frontend/src/Content/Images/*.*',
to: path.join(distFolder, 'Content/Images', '[name][ext]')
},
// Robots
{
from: 'frontend/src/Content/robots.txt',
to: path.join(distFolder, 'Content', '[name][ext]')
}
]
}),
new LiveReloadPlugin()
],
resolveLoader: {
modules: [
'node_modules',
'frontend/build/webpack/'
]
},
module: {
rules: [
{
test: /\.worker\.js$/,
use: {
loader: 'worker-loader',
options: {
filename: '[name].js',
inline: inlineWebWorkers
}
}
},
{
test: /\.js?$/,
exclude: /(node_modules|JsLibraries)/,
use: [
{
loader: 'babel-loader',
options: {
configFile: `${frontendFolder}/babel.config.js`,
envName: isProduction ? 'production' : 'development',
presets: [
[
'@babel/preset-env',
{
modules: false,
loose: true,
debug: false,
useBuiltIns: 'entry',
corejs: 3
}
]
]
}
}
]
},
// CSS Modules
{
test: /\.css$/,
exclude: /(node_modules|globals.css)/,
use: [
{ loader: MiniCssExtractPlugin.loader },
{
loader: 'css-loader',
options: {
importLoaders: 1,
modules: {
localIdentName: '[name]/[local]/[hash:base64:5]'
}
}
},
{
loader: 'postcss-loader',
options: {
postcssOptions: {
config: 'frontend/postcss.config.js'
}
}
}
]
},
// Global styles
{
test: /\.css$/,
include: /(node_modules|globals.css)/,
use: [
'style-loader',
{
loader: 'css-loader'
}
]
},
// Fonts
{
test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/,
use: [
{
loader: 'url-loader',
options: {
limit: 10240,
mimetype: 'application/font-woff',
emitFile: false,
name: 'Content/Fonts/[name].[ext]'
}
}
]
},
{
test: /\.(ttf|eot|eot?#iefix|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
use: [
{
loader: 'file-loader',
options: {
emitFile: false,
name: 'Content/Fonts/[name].[ext]'
}
}
]
}
]
}
};
if (isProfiling) {
config.resolve.alias['react-dom$'] = 'react-dom/profiling';
config.resolve.alias['scheduler/tracing'] = 'scheduler/tracing-profiling';
config.optimization.minimizer = [
new TerserPlugin({
cache: true,
parallel: true,
sourceMap: true, // Must be set to true if using source-maps in production
terserOptions: {
mangle: false,
keep_classnames: true,
keep_fnames: true
}
})
];
}
return config;
};

View File

@@ -1,17 +0,0 @@
const gulp = require('gulp');
require('./clean');
require('./copy');
require('./webpack');
gulp.task('build',
gulp.series('clean',
gulp.parallel(
'webpack',
'copyHtml',
'copyFonts',
'copyImages'
)
)
);

View File

@@ -1,8 +0,0 @@
const gulp = require('gulp');
const del = require('del');
const paths = require('./helpers/paths');
gulp.task('clean', () => {
return del([paths.dest.root]);
});

View File

@@ -1,34 +0,0 @@
const path = require('path');
const gulp = require('gulp');
const print = require('gulp-print').default;
const cache = require('gulp-cached');
const livereload = require('gulp-livereload');
const paths = require('./helpers/paths.js');
gulp.task('copyHtml', () => {
return gulp.src(paths.src.html, { base: paths.src.root })
.pipe(cache('copyHtml'))
.pipe(print())
.pipe(gulp.dest(paths.dest.root))
.pipe(livereload());
});
gulp.task('copyFonts', () => {
return gulp.src(
path.join(paths.src.fonts, '**', '*.*'), { base: paths.src.root }
)
.pipe(cache('copyFonts'))
.pipe(print())
.pipe(gulp.dest(paths.dest.root))
.pipe(livereload());
});
gulp.task('copyImages', () => {
return gulp.src(
path.join(paths.src.images, '**', '*.*'), { base: paths.src.root }
)
.pipe(cache('copyImages'))
.pipe(print())
.pipe(gulp.dest(paths.dest.root))
.pipe(livereload());
});

View File

@@ -1,5 +0,0 @@
require('./build.js');
require('./clean.js');
require('./copy.js');
require('./watch.js');
require('./webpack.js');

View File

@@ -1,6 +0,0 @@
const colors = require('ansi-colors');
module.exports = function errorHandler(error) {
console.log(colors.red(`Error (${error.plugin}): ${error.message}`));
this.emit('end');
};

View File

@@ -1,23 +0,0 @@
const root = './frontend/src';
const paths = {
src: {
root,
html: `${root}/*.html`,
scripts: `${root}/**/*.js`,
content: `${root}/Content/`,
fonts: `${root}/Content/Fonts/`,
images: `${root}/Content/Images/`,
exclude: {
libs: `!${root}/JsLibraries/**`
}
},
dest: {
root: './_output/UI/',
content: './_output/UI/Content/',
fonts: './_output/UI/Content/Fonts/',
images: './_output/UI/Content/Images/'
}
};
module.exports = paths;

View File

@@ -1,18 +0,0 @@
const gulp = require('gulp');
const livereload = require('gulp-livereload');
const gulpWatch = require('gulp-watch');
const paths = require('./helpers/paths.js');
require('./copy.js');
require('./webpack.js');
function watch() {
livereload.listen({ start: true });
gulp.task('webpackWatch')();
gulpWatch(paths.src.html, gulp.series('copyHtml'));
gulpWatch(`${paths.src.fonts}**/*.*`, gulp.series('copyFonts'));
gulpWatch(`${paths.src.images}**/*.*`, gulp.series('copyImages'));
}
gulp.task('watch', gulp.series('build', watch));

View File

@@ -1,266 +0,0 @@
const gulp = require('gulp');
const webpackStream = require('webpack-stream');
const livereload = require('gulp-livereload');
const path = require('path');
const webpack = require('webpack');
const errorHandler = require('./helpers/errorHandler');
const OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const TerserPlugin = require('terser-webpack-plugin');
const uiFolder = 'UI';
const frontendFolder = path.join(__dirname, '..');
const srcFolder = path.join(frontendFolder, 'src');
const isProduction = process.argv.indexOf('--production') > -1;
const isProfiling = isProduction && process.argv.indexOf('--profile') > -1;
const inlineWebWorkers = true;
const distFolder = path.resolve(frontendFolder, '..', '_output', uiFolder);
console.log('Source Folder:', srcFolder);
console.log('Output Folder:', distFolder);
console.log('isProduction:', isProduction);
console.log('isProfiling:', isProfiling);
const cssVarsFiles = [
'../src/Styles/Variables/colors',
'../src/Styles/Variables/dimensions',
'../src/Styles/Variables/fonts',
'../src/Styles/Variables/animations',
'../src/Styles/Variables/zIndexes'
].map(require.resolve);
// Override the way HtmlWebpackPlugin injects the scripts
HtmlWebpackPlugin.prototype.injectAssetsIntoHtml = function(html, assets, assetTags) {
const head = assetTags.head.map((v) => {
v.attributes = { rel: 'stylesheet', type: 'text/css', href: `/${v.attributes.href.replace('\\', '/')}` };
return this.createHtmlTag(v);
});
const body = assetTags.body.map((v) => {
v.attributes = { src: `/${v.attributes.src}` };
return this.createHtmlTag(v);
});
return html
.replace('<!-- webpack bundles head -->', head.join('\r\n '))
.replace('<!-- webpack bundles body -->', body.join('\r\n '));
};
const plugins = [
new OptimizeCssAssetsPlugin({}),
new webpack.DefinePlugin({
__DEV__: !isProduction,
'process.env.NODE_ENV': isProduction ? JSON.stringify('production') : JSON.stringify('development')
}),
new MiniCssExtractPlugin({
filename: path.join('Content', 'styles.css')
}),
new HtmlWebpackPlugin({
template: 'frontend/src/index.html',
filename: 'index.html'
})
];
const config = {
mode: isProduction ? 'production' : 'development',
devtool: '#source-map',
stats: {
children: false
},
watchOptions: {
ignored: /node_modules/
},
entry: {
index: 'index.js'
},
resolve: {
modules: [
srcFolder,
path.join(srcFolder, 'Shims'),
'node_modules'
],
alias: {
jquery: 'jquery/src/jquery'
}
},
output: {
path: distFolder,
filename: '[name].js',
sourceMapFilename: '[file].map'
},
optimization: {
chunkIds: 'named',
splitChunks: {
chunks: 'initial'
}
},
performance: {
hints: false
},
plugins,
resolveLoader: {
modules: [
'node_modules',
'frontend/gulp/webpack/'
]
},
module: {
rules: [
{
test: /\.worker\.js$/,
use: {
loader: 'worker-loader',
options: {
name: '[name].js',
inline: inlineWebWorkers,
fallback: !inlineWebWorkers
}
}
},
{
test: /\.js?$/,
exclude: /(node_modules|JsLibraries)/,
use: [
{
loader: 'babel-loader',
options: {
configFile: `${frontendFolder}/babel.config.js`,
envName: isProduction ? 'production' : 'development',
presets: [
[
'@babel/preset-env',
{
modules: false,
loose: true,
debug: false,
useBuiltIns: 'entry',
corejs: 3
}
]
]
}
}
]
},
// CSS Modules
{
test: /\.css$/,
exclude: /(node_modules|globals.css)/,
use: [
{ loader: MiniCssExtractPlugin.loader },
{
loader: 'css-loader',
options: {
importLoaders: 1,
modules: {
localIdentName: '[name]/[local]/[hash:base64:5]'
}
}
},
{
loader: 'postcss-loader',
options: {
ident: 'postcss',
config: {
ctx: {
cssVarsFiles
},
path: 'frontend/postcss.config.js'
}
}
}
]
},
// Global styles
{
test: /\.css$/,
include: /(node_modules|globals.css)/,
use: [
'style-loader',
{
loader: 'css-loader'
}
]
},
// Fonts
{
test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/,
use: [
{
loader: 'url-loader',
options: {
limit: 10240,
mimetype: 'application/font-woff',
emitFile: false,
name: 'Content/Fonts/[name].[ext]'
}
}
]
},
{
test: /\.(ttf|eot|eot?#iefix|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
use: [
{
loader: 'file-loader',
options: {
emitFile: false,
name: 'Content/Fonts/[name].[ext]'
}
}
]
}
]
}
};
if (isProfiling) {
config.resolve.alias['react-dom$'] = 'react-dom/profiling';
config.resolve.alias['scheduler/tracing'] = 'scheduler/tracing-profiling';
config.optimization.minimizer = [
new TerserPlugin({
cache: true,
parallel: true,
sourceMap: true, // Must be set to true if using source-maps in production
terserOptions: {
mangle: false,
keep_classnames: true,
keep_fnames: true
}
})
];
}
gulp.task('webpack', () => {
return webpackStream(config)
.pipe(gulp.dest('_output/UI'));
});
gulp.task('webpackWatch', () => {
config.watch = true;
return webpackStream(config, webpack)
.on('error', errorHandler)
.pipe(gulp.dest('_output/UI'))
.on('error', errorHandler)
.pipe(livereload())
.on('error', errorHandler);
});

View File

@@ -1,23 +1,32 @@
const reload = require('require-nocache')(module);
module.exports = (ctx, configPath, options) => {
const config = {
plugins: {
'postcss-mixins': {
mixinsDir: [
'frontend/src/Styles/Mixins'
]
},
'postcss-simple-vars': {
variables: () =>
ctx.options.cssVarsFiles.reduce((acc, vars) => {
return Object.assign(acc, reload(vars));
}, {})
},
'postcss-color-function': {},
'postcss-nested': {}
}
};
const cssVarsFiles = [
'./src/Styles/Variables/colors',
'./src/Styles/Variables/dimensions',
'./src/Styles/Variables/fonts',
'./src/Styles/Variables/animations',
'./src/Styles/Variables/zIndexes'
].map(require.resolve);
return config;
};
const mixinsFiles = [
'frontend/src/Styles/Mixins/cover.css',
'frontend/src/Styles/Mixins/linkOverlay.css',
'frontend/src/Styles/Mixins/scroller.css',
'frontend/src/Styles/Mixins/truncate.css'
];
module.exports = {
plugins: [
['postcss-mixins', {
mixinsFiles
}],
['postcss-simple-vars', {
variables: () =>
cssVarsFiles.reduce((acc, vars) => {
return Object.assign(acc, reload(vars));
}, {})
}],
'postcss-color-function',
'postcss-nested'
]
};

View File

@@ -1,6 +1,7 @@
import PropTypes from 'prop-types';
import React, { Component } from 'react';
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
import ConfirmModal from 'Components/Modal/ConfirmModal';
import PageContent from 'Components/Page/PageContent';
import PageContentBody from 'Components/Page/PageContentBody';
import PageToolbar from 'Components/Page/Toolbar/PageToolbar';
@@ -10,12 +11,84 @@ import Table from 'Components/Table/Table';
import TableBody from 'Components/Table/TableBody';
import TableOptionsModalWrapper from 'Components/Table/TableOptions/TableOptionsModalWrapper';
import TablePager from 'Components/Table/TablePager';
import { align, icons } from 'Helpers/Props';
import { align, icons, kinds } from 'Helpers/Props';
import getRemovedItems from 'Utilities/Object/getRemovedItems';
import hasDifferentItems from 'Utilities/Object/hasDifferentItems';
import translate from 'Utilities/String/translate';
import getSelectedIds from 'Utilities/Table/getSelectedIds';
import removeOldSelectedState from 'Utilities/Table/removeOldSelectedState';
import selectAll from 'Utilities/Table/selectAll';
import toggleSelected from 'Utilities/Table/toggleSelected';
import BlacklistRowConnector from './BlacklistRowConnector';
class Blacklist extends Component {
//
// Lifecycle
constructor(props, context) {
super(props, context);
this.state = {
allSelected: false,
allUnselected: false,
lastToggled: null,
selectedState: {},
isConfirmRemoveModalOpen: false,
items: props.items
};
}
componentDidUpdate(prevProps) {
const {
items
} = this.props;
if (hasDifferentItems(prevProps.items, items)) {
this.setState((state) => {
return {
...removeOldSelectedState(state, getRemovedItems(prevProps.items, items)),
items
};
});
return;
}
}
//
// Control
getSelectedIds = () => {
return getSelectedIds(this.state.selectedState);
}
//
// Listeners
onSelectAllChange = ({ value }) => {
this.setState(selectAll(this.state.selectedState, value));
}
onSelectedChange = ({ id, value, shiftKey = false }) => {
this.setState((state) => {
return toggleSelected(state, this.props.items, id, value, shiftKey);
});
}
onRemoveSelectedPress = () => {
this.setState({ isConfirmRemoveModalOpen: true });
}
onRemoveSelectedConfirmed = () => {
this.props.onRemoveSelected(this.getSelectedIds());
this.setState({ isConfirmRemoveModalOpen: false });
}
onConfirmRemoveModalClose = () => {
this.setState({ isConfirmRemoveModalOpen: false });
}
//
// Render
@@ -27,15 +100,33 @@ class Blacklist extends Component {
items,
columns,
totalRecords,
isRemoving,
isClearingBlacklistExecuting,
onClearBlacklistPress,
...otherProps
} = this.props;
const {
allSelected,
allUnselected,
selectedState,
isConfirmRemoveModalOpen
} = this.state;
const selectedIds = this.getSelectedIds();
return (
<PageContent title={translate('Blacklist')}>
<PageToolbar>
<PageToolbarSection>
<PageToolbarButton
label="Remove Selected"
iconName={icons.REMOVE}
isDisabled={!selectedIds.length}
isSpinning={isRemoving}
onPress={this.onRemoveSelectedPress}
/>
<PageToolbarButton
label={translate('Clear')}
iconName={icons.CLEAR}
@@ -81,8 +172,12 @@ class Blacklist extends Component {
isPopulated && !error && !!items.length &&
<div>
<Table
selectAll={true}
allSelected={allSelected}
allUnselected={allUnselected}
columns={columns}
{...otherProps}
onSelectAllChange={this.onSelectAllChange}
>
<TableBody>
{
@@ -90,8 +185,10 @@ class Blacklist extends Component {
return (
<BlacklistRowConnector
key={item.id}
isSelected={selectedState[item.id] || false}
columns={columns}
{...item}
onSelectedChange={this.onSelectedChange}
/>
);
})
@@ -107,6 +204,16 @@ class Blacklist extends Component {
</div>
}
</PageContentBody>
<ConfirmModal
isOpen={isConfirmRemoveModalOpen}
kind={kinds.DANGER}
title={translate('RemoveSelected')}
message={translate('AreYouSureYouWantToRemoveTheSelectedItemsFromBlacklist')}
confirmLabel={translate('RemoveSelected')}
onConfirm={this.onRemoveSelectedConfirmed}
onCancel={this.onConfirmRemoveModalClose}
/>
</PageContent>
);
}
@@ -119,7 +226,9 @@ Blacklist.propTypes = {
items: PropTypes.arrayOf(PropTypes.object).isRequired,
columns: PropTypes.arrayOf(PropTypes.object).isRequired,
totalRecords: PropTypes.number,
isRemoving: PropTypes.bool.isRequired,
isClearingBlacklistExecuting: PropTypes.bool.isRequired,
onRemoveSelected: PropTypes.func.isRequired,
onClearBlacklistPress: PropTypes.func.isRequired
};

View File

@@ -89,6 +89,10 @@ class BlacklistConnector extends Component {
this.props.gotoBlacklistPage({ page });
}
onRemoveSelected = (ids) => {
this.props.removeBlacklistItems({ ids });
}
onSortPress = (sortKey) => {
this.props.setBlacklistSort({ sortKey });
}
@@ -124,6 +128,7 @@ class BlacklistConnector extends Component {
onNextPagePress={this.onNextPagePress}
onLastPagePress={this.onLastPagePress}
onPageSelect={this.onPageSelect}
onRemoveSelected={this.onRemoveSelected}
onSortPress={this.onSortPress}
onTableOptionChange={this.onTableOptionChange}
onClearBlacklistPress={this.onClearBlacklistPress}
@@ -143,6 +148,7 @@ BlacklistConnector.propTypes = {
gotoBlacklistNextPage: PropTypes.func.isRequired,
gotoBlacklistLastPage: PropTypes.func.isRequired,
gotoBlacklistPage: PropTypes.func.isRequired,
removeBlacklistItems: PropTypes.func.isRequired,
setBlacklistSort: PropTypes.func.isRequired,
setBlacklistTableOption: PropTypes.func.isRequired,
clearBlacklist: PropTypes.func.isRequired,

View File

@@ -3,6 +3,7 @@ import React, { Component } from 'react';
import IconButton from 'Components/Link/IconButton';
import RelativeDateCellConnector from 'Components/Table/Cells/RelativeDateCellConnector';
import TableRowCell from 'Components/Table/Cells/TableRowCell';
import TableSelectCell from 'Components/Table/Cells/TableSelectCell';
import TableRow from 'Components/Table/TableRow';
import { icons, kinds } from 'Helpers/Props';
import MovieFormats from 'Movie/MovieFormats';
@@ -42,6 +43,7 @@ class BlacklistRow extends Component {
render() {
const {
id,
movie,
sourceTitle,
quality,
@@ -51,7 +53,9 @@ class BlacklistRow extends Component {
protocol,
indexer,
message,
isSelected,
columns,
onSelectedChange,
onRemovePress
} = this.props;
@@ -61,6 +65,12 @@ class BlacklistRow extends Component {
return (
<TableRow>
<TableSelectCell
id={id}
isSelected={isSelected}
onSelectedChange={onSelectedChange}
/>
{
columns.map((column) => {
const {
@@ -194,7 +204,9 @@ BlacklistRow.propTypes = {
protocol: PropTypes.string.isRequired,
indexer: PropTypes.string,
message: PropTypes.string,
isSelected: PropTypes.bool.isRequired,
columns: PropTypes.arrayOf(PropTypes.object).isRequired,
onSelectedChange: PropTypes.func.isRequired,
onRemovePress: PropTypes.func.isRequired
};

View File

@@ -1,6 +1,6 @@
import { connect } from 'react-redux';
import { createSelector } from 'reselect';
import { removeFromBlacklist } from 'Store/Actions/blacklistActions';
import { removeBlacklistItem } from 'Store/Actions/blacklistActions';
import createMovieSelector from 'Store/Selectors/createMovieSelector';
import BlacklistRow from './BlacklistRow';
@@ -18,7 +18,7 @@ function createMapStateToProps() {
function createMapDispatchToProps(dispatch, props) {
return {
onRemovePress() {
dispatch(removeFromBlacklist({ id: props.id }));
dispatch(removeBlacklistItem({ id: props.id }));
}
};
}

View File

@@ -173,13 +173,13 @@ function HistoryDetails(props) {
switch (reason) {
case 'Manual':
reasonMessage = 'File was deleted by via UI';
reasonMessage = translate('FileWasDeletedByViaUI');
break;
case 'MissingFromDisk':
reasonMessage = 'Radarr was unable to find the file on disk so it was removed';
reasonMessage = translate('MissingFromDisk');
break;
case 'Upgrade':
reasonMessage = 'File was deleted to import an upgrade';
reasonMessage = translate('FileWasDeletedByUpgrade');
break;
default:
reasonMessage = '';

View File

@@ -1,4 +1,3 @@
import _ from 'lodash';
import { connect } from 'react-redux';
import { createSelector } from 'reselect';
import createUISettingsSelector from 'Store/Selectors/createUISettingsSelector';
@@ -8,10 +7,10 @@ function createMapStateToProps() {
return createSelector(
createUISettingsSelector(),
(uiSettings) => {
return _.pick(uiSettings, [
'shortDateFormat',
'timeFormat'
]);
return {
shortDateFormat: uiSettings.shortDateFormat,
timeFormat: uiSettings.timeFormat
};
}
);
}

View File

@@ -94,7 +94,7 @@ class History extends Component {
isPopulated && !hasError && !items.length &&
<div>
No history found
{translate('NoHistory')}
</div>
}

View File

@@ -32,6 +32,8 @@ class Queue extends Component {
constructor(props, context) {
super(props, context);
this._shouldBlockRefresh = false;
this.state = {
allSelected: false,
allUnselected: false,
@@ -43,6 +45,14 @@ class Queue extends Component {
};
}
shouldComponentUpdate() {
if (this._shouldBlockRefresh) {
return false;
}
return true;
}
componentDidUpdate(prevProps) {
const {
items,
@@ -85,6 +95,10 @@ class Queue extends Component {
//
// Listeners
onQueueRowModalOpenOrClose = (isOpen) => {
this._shouldBlockRefresh = isOpen;
}
onSelectAllChange = ({ value }) => {
this.setState(selectAll(this.state.selectedState, value));
}
@@ -100,15 +114,19 @@ class Queue extends Component {
}
onRemoveSelectedPress = () => {
this.setState({ isConfirmRemoveModalOpen: true });
this.setState({ isConfirmRemoveModalOpen: true }, () => {
this._shouldBlockRefresh = true;
});
}
onRemoveSelectedConfirmed = (payload) => {
this._shouldBlockRefresh = false;
this.props.onRemoveSelectedPress({ ids: this.getSelectedIds(), ...payload });
this.setState({ isConfirmRemoveModalOpen: false });
}
onConfirmRemoveModalClose = () => {
this._shouldBlockRefresh = false;
this.setState({ isConfirmRemoveModalOpen: false });
}
@@ -203,14 +221,14 @@ class Queue extends Component {
{
!isRefreshing && hasError &&
<div>
Failed to load Queue
{translate('FailedToLoadQueue')}
</div>
}
{
isPopulated && !hasError && !items.length &&
isAllPopulated && !hasError && !items.length &&
<div>
Queue is empty
{translate('QueueIsEmpty')}
</div>
}
@@ -237,6 +255,7 @@ class Queue extends Component {
columns={columns}
{...item}
onSelectedChange={this.onSelectedChange}
onQueueRowModalOpenOrClose={this.onQueueRowModalOpenOrClose}
/>
);
})

View File

@@ -43,6 +43,7 @@ class QueueConnector extends Component {
const {
useCurrentPage,
fetchQueue,
fetchQueueStatus,
gotoQueueFirstPage
} = this.props;
@@ -53,6 +54,8 @@ class QueueConnector extends Component {
} else {
gotoQueueFirstPage();
}
fetchQueueStatus();
}
componentDidUpdate(prevProps) {
@@ -152,6 +155,7 @@ QueueConnector.propTypes = {
useCurrentPage: PropTypes.bool.isRequired,
items: PropTypes.arrayOf(PropTypes.object).isRequired,
fetchQueue: PropTypes.func.isRequired,
fetchQueueStatus: PropTypes.func.isRequired,
gotoQueueFirstPage: PropTypes.func.isRequired,
gotoQueuePreviousPage: PropTypes.func.isRequired,
gotoQueueNextPage: PropTypes.func.isRequired,

View File

@@ -11,14 +11,14 @@ function QueueDetails(props) {
size,
sizeleft,
estimatedCompletionTime,
status: queueStatus,
status,
trackedDownloadState,
trackedDownloadStatus,
errorMessage,
progressBar
} = props;
const status = queueStatus.toLowerCase();
const progress = (100 - sizeleft / size * 100);
const progress = size ? (100 - sizeleft / size * 100) : 0;
if (status === 'pending') {
return (
@@ -40,7 +40,35 @@ function QueueDetails(props) {
);
}
// TODO: show an icon when download is complete, but not imported yet?
if (trackedDownloadStatus === 'warning') {
return (
<Icon
name={icons.DOWNLOAD}
kind={kinds.WARNING}
title={translate('UnableToImportCheckLogs')}
/>
);
}
if (trackedDownloadState === 'importPending') {
return (
<Icon
name={icons.DOWNLOAD}
kind={kinds.PURPLE}
title={`${translate('Downloaded')} - ${translate('WaitingToImport')}`}
/>
);
}
if (trackedDownloadState === 'importing') {
return (
<Icon
name={icons.DOWNLOAD}
kind={kinds.PURPLE}
title={`${translate('Downloaded')} - ${translate('Importing')}`}
/>
);
}
}
if (errorMessage) {
@@ -91,6 +119,8 @@ QueueDetails.propTypes = {
sizeleft: PropTypes.number.isRequired,
estimatedCompletionTime: PropTypes.string,
status: PropTypes.string.isRequired,
trackedDownloadState: PropTypes.string.isRequired,
trackedDownloadStatus: PropTypes.string.isRequired,
errorMessage: PropTypes.string,
progressBar: PropTypes.node.isRequired
};

View File

@@ -43,19 +43,32 @@ class QueueRow extends Component {
}
onRemoveQueueItemModalConfirmed = (blacklist) => {
this.props.onRemoveQueueItemPress(blacklist);
const {
onRemoveQueueItemPress,
onQueueRowModalOpenOrClose
} = this.props;
onQueueRowModalOpenOrClose(false);
onRemoveQueueItemPress(blacklist);
this.setState({ isRemoveQueueItemModalOpen: false });
}
onRemoveQueueItemModalClose = () => {
this.props.onQueueRowModalOpenOrClose(false);
this.setState({ isRemoveQueueItemModalOpen: false });
}
onInteractiveImportPress = () => {
this.props.onQueueRowModalOpenOrClose(true);
this.setState({ isInteractiveImportModalOpen: true });
}
onInteractiveImportModalClose = () => {
this.props.onQueueRowModalOpenOrClose(false);
this.setState({ isInteractiveImportModalOpen: false });
}
@@ -359,7 +372,8 @@ QueueRow.propTypes = {
columns: PropTypes.arrayOf(PropTypes.object).isRequired,
onSelectedChange: PropTypes.func.isRequired,
onGrabPress: PropTypes.func.isRequired,
onRemoveQueueItemPress: PropTypes.func.isRequired
onRemoveQueueItemPress: PropTypes.func.isRequired,
onQueueRowModalOpenOrClose: PropTypes.func.isRequired
};
QueueRow.defaultProps = {

View File

@@ -81,12 +81,12 @@ class RemoveQueueItemModal extends Component {
onModalClose={this.onModalClose}
>
<ModalHeader>
Remove - {sourceTitle}
{translate('Remove')} - {sourceTitle}
</ModalHeader>
<ModalBody>
<div>
Are you sure you want to remove '{sourceTitle}' from the queue?
{translate('RemoveFromQueueText', [sourceTitle])}
</div>
<FormGroup>

View File

@@ -87,7 +87,7 @@ class RemoveQueueItemsModal extends Component {
<ModalBody>
<div className={styles.message}>
Are you sure you want to remove {selectedCount} item{selectedCount > 1 ? 's' : ''} from the queue?
{translate('AreYouSureYouWantToRemoveSelectedItemsFromQueue', [selectedCount, selectedCount > 1 ? 's' : ''])}
</div>
<FormGroup>

View File

@@ -81,7 +81,8 @@ class AddNewMovie extends Component {
const {
error,
items,
hasExistingMovies
hasExistingMovies,
colorImpairedMode
} = this.props;
const term = this.state.term;
@@ -141,6 +142,7 @@ class AddNewMovie extends Component {
return (
<AddNewMovieSearchResultConnector
key={item.tmdbId}
colorImpairedMode={colorImpairedMode}
{...item}
/>
);
@@ -159,7 +161,7 @@ class AddNewMovie extends Component {
{translate('YouCanAlsoSearch')}
</div>
<div>
<Link to="https://github.com/Radarr/Radarr/wiki/FAQ#why-cant-i-add-a-new-movie-when-i-know-the-tmdb-id">
<Link to="https://wiki.servarr.com/Radarr_FAQ#Why_cant_I_add_a_new_movie_to_Radarr">
{translate('CantFindMovie')}
</Link>
</div>
@@ -213,7 +215,8 @@ AddNewMovie.propTypes = {
items: PropTypes.arrayOf(PropTypes.object).isRequired,
hasExistingMovies: PropTypes.bool.isRequired,
onMovieLookupChange: PropTypes.func.isRequired,
onClearMovieLookup: PropTypes.func.isRequired
onClearMovieLookup: PropTypes.func.isRequired,
colorImpairedMode: PropTypes.bool.isRequired
};
export default AddNewMovie;

View File

@@ -3,8 +3,10 @@ import React, { Component } from 'react';
import { connect } from 'react-redux';
import { createSelector } from 'reselect';
import { clearAddMovie, lookupMovie } from 'Store/Actions/addMovieActions';
import { clearQueueDetails, fetchQueueDetails } from 'Store/Actions/queueActions';
import { fetchRootFolders } from 'Store/Actions/rootFolderActions';
import { fetchImportExclusions } from 'Store/Actions/Settings/importExclusions';
import createUISettingsSelector from 'Store/Selectors/createUISettingsSelector';
import parseUrl from 'Utilities/String/parseUrl';
import AddNewMovie from './AddNewMovie';
@@ -13,13 +15,15 @@ function createMapStateToProps() {
(state) => state.addMovie,
(state) => state.movies.items.length,
(state) => state.router.location,
(addMovie, existingMoviesCount, location) => {
createUISettingsSelector(),
(addMovie, existingMoviesCount, location, uiSettings) => {
const { params } = parseUrl(location.search);
return {
...addMovie,
term: params.term,
hasExistingMovies: existingMoviesCount > 0
hasExistingMovies: existingMoviesCount > 0,
colorImpairedMode: uiSettings.enableColorImpairedMode
};
}
);
@@ -29,7 +33,9 @@ const mapDispatchToProps = {
lookupMovie,
clearAddMovie,
fetchRootFolders,
fetchImportExclusions
fetchImportExclusions,
fetchQueueDetails,
clearQueueDetails
};
class AddNewMovieConnector extends Component {
@@ -46,6 +52,7 @@ class AddNewMovieConnector extends Component {
componentDidMount() {
this.props.fetchRootFolders();
this.props.fetchImportExclusions();
this.props.fetchQueueDetails();
}
componentWillUnmount() {
@@ -54,6 +61,7 @@ class AddNewMovieConnector extends Component {
}
this.props.clearAddMovie();
this.props.clearQueueDetails();
}
//
@@ -102,7 +110,9 @@ AddNewMovieConnector.propTypes = {
lookupMovie: PropTypes.func.isRequired,
clearAddMovie: PropTypes.func.isRequired,
fetchRootFolders: PropTypes.func.isRequired,
fetchImportExclusions: PropTypes.func.isRequired
fetchImportExclusions: PropTypes.func.isRequired,
fetchQueueDetails: PropTypes.func.isRequired,
clearQueueDetails: PropTypes.func.isRequired
};
export default connect(createMapStateToProps, mapDispatchToProps)(AddNewMovieConnector);

View File

@@ -17,30 +17,15 @@ import styles from './AddNewMovieModalContent.css';
class AddNewMovieModalContent extends Component {
//
// Lifecycle
constructor(props, context) {
super(props, context);
this.state = {
searchForMovie: false
};
}
//
// Listeners
onSearchForMissingMovieChange = ({ value }) => {
this.setState({ searchForMovie: value });
}
onQualityProfileIdChange = ({ value }) => {
this.props.onInputChange({ name: 'qualityProfileId', value: parseInt(value) });
}
onAddMoviePress = () => {
this.props.onAddMoviePress(this.state.searchForMovie);
this.props.onAddMoviePress();
}
//
@@ -57,6 +42,7 @@ class AddNewMovieModalContent extends Component {
monitor,
qualityProfileId,
minimumAvailability,
searchForMovie,
folder,
tags,
isSmallScreen,
@@ -117,7 +103,7 @@ class AddNewMovieModalContent extends Component {
<FormGroup>
<FormLabel>
Monitor
{translate('Monitor')}
</FormLabel>
<FormInputGroup
@@ -168,15 +154,15 @@ class AddNewMovieModalContent extends Component {
<ModalFooter className={styles.modalFooter}>
<label className={styles.searchForMissingMovieLabelContainer}>
<span className={styles.searchForMissingMovieLabel}>
Start search for missing movie
{translate('StartSearchForMissingMovie')}
</span>
<CheckInput
containerClassName={styles.searchForMissingMovieContainer}
className={styles.searchForMissingMovieInput}
name="searchForMovie"
value={this.state.searchForMovie}
onChange={this.onSearchForMissingMovieChange}
onChange={onInputChange}
{...searchForMovie}
/>
</label>
@@ -186,7 +172,7 @@ class AddNewMovieModalContent extends Component {
isSpinning={isAdding}
onPress={this.onAddMoviePress}
>
Add {title}
{translate('AddMovie')}
</SpinnerButton>
</ModalFooter>
</ModalContent>
@@ -205,6 +191,7 @@ AddNewMovieModalContent.propTypes = {
monitor: PropTypes.object.isRequired,
qualityProfileId: PropTypes.object,
minimumAvailability: PropTypes.object.isRequired,
searchForMovie: PropTypes.object.isRequired,
folder: PropTypes.string.isRequired,
tags: PropTypes.object.isRequired,
isSmallScreen: PropTypes.bool.isRequired,

View File

@@ -53,13 +53,14 @@ class AddNewMovieModalContentConnector extends Component {
this.props.setAddMovieDefault({ [name]: value });
}
onAddMoviePress = (searchForMovie) => {
onAddMoviePress = () => {
const {
tmdbId,
rootFolderPath,
monitor,
qualityProfileId,
minimumAvailability,
searchForMovie,
tags
} = this.props;
@@ -69,8 +70,8 @@ class AddNewMovieModalContentConnector extends Component {
monitor: monitor.value,
qualityProfileId: qualityProfileId.value,
minimumAvailability: minimumAvailability.value,
tags: tags.value,
searchForMovie
searchForMovie: searchForMovie.value,
tags: tags.value
});
}
@@ -94,6 +95,7 @@ AddNewMovieModalContentConnector.propTypes = {
monitor: PropTypes.object.isRequired,
qualityProfileId: PropTypes.object,
minimumAvailability: PropTypes.object.isRequired,
searchForMovie: PropTypes.object.isRequired,
tags: PropTypes.object.isRequired,
onModalClose: PropTypes.func.isRequired,
setAddMovieDefault: PropTypes.func.isRequired,

View File

@@ -27,9 +27,11 @@
}
.poster {
flex: 0 0 170px;
position: relative;
display: block;
margin-right: 20px;
height: 250px;
background-color: $defaultColor;
}
.content {
@@ -86,6 +88,28 @@
pointer-events: all;
}
.posterContainer {
position: relative;
}
.certification {
margin-left: 2px;
padding: 0 5px;
border: 1px solid;
border-radius: 5px;
font-size: 16px;
}
.runtime {
margin-left: 8px;
font-size: 16px;
}
.statusContainer {
margin-right: 22px;
font-weight: bold;
}
@media only screen and (max-width: $breakpointMedium) {
.titleRow {
justify-content: space-between;

View File

@@ -7,7 +7,10 @@ import Link from 'Components/Link/Link';
import Tooltip from 'Components/Tooltip/Tooltip';
import { icons, kinds, sizes, tooltipPositions } from 'Helpers/Props';
import MovieDetailsLinks from 'Movie/Details/MovieDetailsLinks';
import MovieStatusLabel from 'Movie/Details/MovieStatusLabel';
import MovieIndexProgressBar from 'Movie/Index/ProgressBar/MovieIndexProgressBar';
import MoviePoster from 'Movie/MoviePoster';
import formatRuntime from 'Utilities/Date/formatRuntime';
import translate from 'Utilities/String/translate';
import AddNewMovieModal from './AddNewMovieModal';
import styles from './AddNewMovieSearchResult.css';
@@ -65,7 +68,17 @@ class AddNewMovieSearchResult extends Component {
images,
isExistingMovie,
isExclusionMovie,
isSmallScreen
isSmallScreen,
colorImpairedMode,
id,
monitored,
hasFile,
isAvailable,
queueStatus,
queueState,
runtime,
movieRuntimeFormat,
certification
} = this.props;
const {
@@ -85,12 +98,30 @@ class AddNewMovieSearchResult extends Component {
{
isSmallScreen ?
null :
<MoviePoster
className={styles.poster}
images={images}
size={250}
overflow={true}
/>
<div>
<div className={styles.posterContainer}>
<MoviePoster
className={styles.poster}
images={images}
size={250}
overflow={true}
/>
</div>
{
isExistingMovie &&
<MovieIndexProgressBar
monitored={monitored}
hasFile={hasFile}
status={status}
posterWidth={167}
detailedProgressBar={true}
queueStatus={queueStatus}
queueState={queueState}
isAvailable={isAvailable}
/>
}
</div>
}
<div className={styles.content}>
@@ -133,6 +164,22 @@ class AddNewMovieSearchResult extends Component {
</div>
</div>
<div>
{
!!certification &&
<span className={styles.certification}>
{certification}
</span>
}
{
!!runtime &&
<span className={styles.runtime}>
{formatRuntime(runtime, movieRuntimeFormat)}
</span>
}
</div>
<div>
<Label size={sizes.LARGE}>
<HeartRating
@@ -170,18 +217,21 @@ class AddNewMovieSearchResult extends Component {
imdbId={imdbId}
/>
}
canFlip={true}
kind={kinds.INVERSE}
position={tooltipPositions.BOTTOM}
/>
{
status === 'ended' &&
<Label
kind={kinds.DANGER}
size={sizes.LARGE}
>
Ended
</Label>
isExistingMovie && isSmallScreen &&
<MovieStatusLabel
hasMovieFiles={hasFile}
monitored={monitored}
isAvailable={isAvailable}
id={id}
useLabel={true}
colorImpairedMode={colorImpairedMode}
/>
}
</div>
@@ -221,7 +271,18 @@ AddNewMovieSearchResult.propTypes = {
images: PropTypes.arrayOf(PropTypes.object).isRequired,
isExistingMovie: PropTypes.bool.isRequired,
isExclusionMovie: PropTypes.bool.isRequired,
isSmallScreen: PropTypes.bool.isRequired
isSmallScreen: PropTypes.bool.isRequired,
id: PropTypes.number,
queueItems: PropTypes.arrayOf(PropTypes.object),
monitored: PropTypes.bool.isRequired,
hasFile: PropTypes.bool.isRequired,
isAvailable: PropTypes.bool.isRequired,
colorImpairedMode: PropTypes.bool,
queueStatus: PropTypes.string,
queueState: PropTypes.string,
runtime: PropTypes.number.isRequired,
movieRuntimeFormat: PropTypes.string.isRequired,
certification: PropTypes.string
};
export default AddNewMovieSearchResult;

View File

@@ -10,11 +10,17 @@ function createMapStateToProps() {
createExistingMovieSelector(),
createExclusionMovieSelector(),
createDimensionsSelector(),
(isExistingMovie, isExclusionMovie, dimensions) => {
(state) => state.queue.details.items,
(state, { internalId }) => internalId,
(isExistingMovie, isExclusionMovie, dimensions, queueItems, internalId) => {
const firstQueueItem = queueItems.find((q) => q.movieId === internalId && internalId > 0);
return {
isExistingMovie,
isExclusionMovie,
isSmallScreen: dimensions.isSmallScreen
isSmallScreen: dimensions.isSmallScreen,
queueStatus: firstQueueItem ? firstQueueItem.status : null,
queueState: firstQueueItem ? firstQueueItem.trackedDownloadState : null
};
}
);

View File

@@ -116,7 +116,7 @@ class ImportMovie extends Component {
rootFoldersPopulated &&
!unmappedFolders.length ?
<div>
All movies in {path} have been imported
{translate('AllMoviesInPathHaveBeenImported', [path])}
</div> :
null
}

View File

@@ -10,6 +10,7 @@ import LoadingIndicator from 'Components/Loading/LoadingIndicator';
import PageContentFooter from 'Components/Page/PageContentFooter';
import Popover from 'Components/Tooltip/Popover';
import { icons, inputTypes, kinds, tooltipPositions } from 'Helpers/Props';
import translate from 'Utilities/String/translate';
import styles from './ImportMovieFooter.css';
const MIXED = 'mixed';
@@ -112,7 +113,7 @@ class ImportMovieFooter extends Component {
<PageContentFooter>
<div className={styles.inputContainer}>
<div className={styles.label}>
Monitor
{translate('Monitor')}
</div>
<FormInputGroup
@@ -127,7 +128,7 @@ class ImportMovieFooter extends Component {
<div className={styles.inputContainer}>
<div className={styles.label}>
Minimum Availability
{translate('MinimumAvailability')}
</div>
<FormInputGroup
@@ -142,7 +143,7 @@ class ImportMovieFooter extends Component {
<div className={styles.inputContainer}>
<div className={styles.label}>
Quality Profile
{translate('QualityProfile')}
</div>
<FormInputGroup
@@ -168,7 +169,7 @@ class ImportMovieFooter extends Component {
isDisabled={!selectedCount || isLookingUpMovie}
onPress={onImportPress}
>
Import {selectedCount} {selectedCount > 1 ? 'Movies' : 'Movie'}
{translate('Import')} {selectedCount} {selectedCount > 1 ? translate('Movies') : translate('Movie')}
</SpinnerButton>
{
@@ -178,7 +179,7 @@ class ImportMovieFooter extends Component {
kind={kinds.WARNING}
onPress={onCancelLookupPress}
>
Cancel Processing
{translate('CancelProcessing')}
</Button> :
null
}
@@ -190,7 +191,7 @@ class ImportMovieFooter extends Component {
kind={kinds.SUCCESS}
onPress={onLookupPress}
>
Start Processing
{translate('StartProcessing')}
</Button> :
null
}
@@ -206,7 +207,7 @@ class ImportMovieFooter extends Component {
{
isLookingUpMovie ?
'Processing Folders' :
translate('ProcessingFolders') :
null
}
@@ -220,7 +221,7 @@ class ImportMovieFooter extends Component {
kind={kinds.WARNING}
/>
}
title="Import Errors"
title={translate('ImportErrors')}
body={
<ul>
{

View File

@@ -3,6 +3,7 @@ import React from 'react';
import VirtualTableHeader from 'Components/Table/VirtualTableHeader';
import VirtualTableHeaderCell from 'Components/Table/VirtualTableHeaderCell';
import VirtualTableSelectAllHeaderCell from 'Components/Table/VirtualTableSelectAllHeaderCell';
import translate from 'Utilities/String/translate';
import styles from './ImportMovieHeader.css';
function ImportMovieHeader(props) {
@@ -24,35 +25,35 @@ function ImportMovieHeader(props) {
className={styles.folder}
name="folder"
>
Folder
</VirtualTableHeaderCell>
<VirtualTableHeaderCell
className={styles.monitor}
name="monitor"
>
Monitor
</VirtualTableHeaderCell>
<VirtualTableHeaderCell
className={styles.minimumAvailability}
name="minimumAvailability"
>
Min Availability
</VirtualTableHeaderCell>
<VirtualTableHeaderCell
className={styles.qualityProfile}
name="qualityProfileId"
>
Quality Profile
{translate('Folder')}
</VirtualTableHeaderCell>
<VirtualTableHeaderCell
className={styles.movie}
name="movie"
>
Movie
{translate('Movie')}
</VirtualTableHeaderCell>
<VirtualTableHeaderCell
className={styles.monitor}
name="monitor"
>
{translate('Monitor')}
</VirtualTableHeaderCell>
<VirtualTableHeaderCell
className={styles.minimumAvailability}
name="minimumAvailability"
>
{translate('MinAvailability')}
</VirtualTableHeaderCell>
<VirtualTableHeaderCell
className={styles.qualityProfile}
name="qualityProfileId"
>
{translate('QualityProfile')}
</VirtualTableHeaderCell>
</VirtualTableHeader>
);

View File

@@ -34,6 +34,13 @@ function ImportMovieRow(props) {
{id}
</VirtualTableRowCell>
<VirtualTableRowCell className={styles.movie}>
<ImportMovieSelectMovieConnector
id={id}
isExistingMovie={isExistingMovie}
/>
</VirtualTableRowCell>
<VirtualTableRowCell className={styles.monitor}>
<FormInputGroup
type={inputTypes.MOVIE_MONITORED_SELECT}
@@ -60,13 +67,6 @@ function ImportMovieRow(props) {
onChange={onInputChange}
/>
</VirtualTableRowCell>
<VirtualTableRowCell className={styles.movie}>
<ImportMovieSelectMovieConnector
id={id}
isExistingMovie={isExistingMovie}
/>
</VirtualTableRowCell>
</>
);
}

View File

@@ -9,6 +9,7 @@ import LoadingIndicator from 'Components/Loading/LoadingIndicator';
import Portal from 'Components/Portal';
import { icons, kinds } from 'Helpers/Props';
import getUniqueElememtId from 'Utilities/getUniqueElementId';
import translate from 'Utilities/String/translate';
import ImportMovieSearchResultConnector from './ImportMovieSearchResultConnector';
import ImportMovieTitle from './ImportMovieTitle';
import styles from './ImportMovieSelectMovie.css';
@@ -174,7 +175,7 @@ class ImportMovieSelectMovie extends Component {
kind={kinds.WARNING}
/>
No match found!
{translate('NoMatchFound')}
</div> :
null
}
@@ -189,7 +190,7 @@ class ImportMovieSelectMovie extends Component {
kind={kinds.WARNING}
/>
Search failed, please try again later.
{translate('SearchFailedPleaseTryAgainLater')}
</div> :
null
}

View File

@@ -2,6 +2,7 @@ import PropTypes from 'prop-types';
import React from 'react';
import Label from 'Components/Label';
import { kinds } from 'Helpers/Props';
import translate from 'Utilities/String/translate';
import styles from './ImportMovieTitle.css';
function ImportMovieTitle(props) {
@@ -33,7 +34,7 @@ function ImportMovieTitle(props) {
<Label
kind={kinds.WARNING}
>
Existing
{translate('Existing')}
</Label>
}
</div>

View File

@@ -101,12 +101,9 @@ class ImportMovieSelectFolder extends Component {
<div className={styles.tips}>
{translate('ImportTipsMessage')}
<ul>
<li className={styles.tip}>
Make sure that your files include the quality in their filenames. eg. <span className={styles.code}>movie.2008.bluray.mkv</span>
</li>
<li className={styles.tip}>
Point Radarr to the folder containing all of your movies, not a specific one. eg. <span className={styles.code}>"{isWindows ? 'C:\\movies' : '/movies'}"</span> and not <span className={styles.code}>"{isWindows ? 'C:\\movies\\the matrix' : '/movies/the matrix'}"</span>
</li>
<li className={styles.tip} dangerouslySetInnerHTML={{ __html: translate('ImportIncludeQuality', ['<code>movie.2008.bluray.mkv</code>']) }} />
<li className={styles.tip} dangerouslySetInnerHTML={{ __html: translate('ImportRootPath', [`<code>${isWindows ? 'C:\\movies' : '/movies'}</code>`, `<code>${isWindows ? 'C:\\movies\\the matrix' : '/movies/the matrix'}</code>`]) }} />
<li className={styles.tip}>{translate('ImportNotForDownloads')}</li>
</ul>
</div>
@@ -158,7 +155,7 @@ class ImportMovieSelectFolder extends Component {
className={styles.importButtonIcon}
name={icons.DRIVE}
/>
Start Import
{translate('StartImport')}
</Button>
</div>
}

View File

@@ -11,9 +11,47 @@ import UpdateChanges from 'System/Updates/UpdateChanges';
import translate from 'Utilities/String/translate';
import styles from './AppUpdatedModalContent.css';
function mergeUpdates(items, version, prevVersion) {
let installedIndex = items.findIndex((u) => u.version === version);
let installedPreviouslyIndex = items.findIndex((u) => u.version === prevVersion);
if (installedIndex === -1) {
installedIndex = 0;
}
if (installedPreviouslyIndex === -1) {
installedPreviouslyIndex = items.length;
} else if (installedPreviouslyIndex === installedIndex && items.length) {
installedPreviouslyIndex += 1;
}
const appliedUpdates = items.slice(installedIndex, installedPreviouslyIndex);
if (!appliedUpdates.length) {
return null;
}
const appliedChanges = { new: [], fixed: [] };
appliedUpdates.forEach((u) => {
if (u.changes) {
appliedChanges.new.push(... u.changes.new);
appliedChanges.fixed.push(... u.changes.fixed);
}
});
const mergedUpdate = Object.assign({}, appliedUpdates[0], { changes: appliedChanges });
if (!appliedChanges.new.length && !appliedChanges.fixed.length) {
mergedUpdate.changes = null;
}
return mergedUpdate;
}
function AppUpdatedModalContent(props) {
const {
version,
prevVersion,
isPopulated,
error,
items,
@@ -21,32 +59,32 @@ function AppUpdatedModalContent(props) {
onModalClose
} = props;
const update = items[0];
const update = mergeUpdates(items, version, prevVersion);
return (
<ModalContent onModalClose={onModalClose}>
<ModalHeader>
Radarr Updated
{translate('RadarrUpdated')}
</ModalHeader>
<ModalBody>
<div>
Version <span className={styles.version}>{version}</span> of Radarr has been installed, in order to get the latest changes you'll need to reload Radarr.
</div>
<div dangerouslySetInnerHTML={{ __html: translate('VersionUpdateText', [`<span className=${styles.version}>${version}</span>`]) }} />
{
isPopulated && !error && !!update &&
<div>
{
!update.changes &&
<div className={styles.maintenance}>Maintenance release</div>
<div className={styles.maintenance}>
{translate('MaintenanceRelease')}
</div>
}
{
!!update.changes &&
<div>
<div className={styles.changes}>
What's new?
{translate('WhatsNew')}
</div>
<UpdateChanges
@@ -73,14 +111,14 @@ function AppUpdatedModalContent(props) {
<Button
onPress={onSeeChangesPress}
>
Recent Changes
{translate('RecentChanges')}
</Button>
<Button
kind={kinds.PRIMARY}
onPress={onModalClose}
>
Reload
{translate('Reload')}
</Button>
</ModalFooter>
</ModalContent>
@@ -89,6 +127,7 @@ function AppUpdatedModalContent(props) {
AppUpdatedModalContent.propTypes = {
version: PropTypes.string.isRequired,
prevVersion: PropTypes.string,
isPopulated: PropTypes.bool.isRequired,
error: PropTypes.object,
items: PropTypes.arrayOf(PropTypes.object).isRequired,

View File

@@ -8,8 +8,9 @@ import AppUpdatedModalContent from './AppUpdatedModalContent';
function createMapStateToProps() {
return createSelector(
(state) => state.app.version,
(state) => state.app.prevVersion,
(state) => state.system.updates,
(version, updates) => {
(version, prevVersion, updates) => {
const {
isPopulated,
error,
@@ -18,6 +19,7 @@ function createMapStateToProps() {
return {
version,
prevVersion,
isPopulated,
error,
items

View File

@@ -6,9 +6,38 @@ import styles from './Agenda.css';
function Agenda(props) {
const {
items
items,
start,
end
} = props;
const startDateParsed = Date.parse(start);
const endDateParsed = Date.parse(end);
items.forEach((item) => {
const cinemaDateParsed = Date.parse(item.inCinemas);
const digitalDateParsed = Date.parse(item.digitalRelease);
const physicalDateParsed = Date.parse(item.physicalRelease);
const dates = [];
if (cinemaDateParsed > 0 && cinemaDateParsed >= startDateParsed && cinemaDateParsed <= endDateParsed) {
dates.push(cinemaDateParsed);
}
if (digitalDateParsed > 0 && digitalDateParsed >= startDateParsed && digitalDateParsed <= endDateParsed) {
dates.push(digitalDateParsed);
}
if (physicalDateParsed > 0 && physicalDateParsed >= startDateParsed && physicalDateParsed <= endDateParsed) {
dates.push(physicalDateParsed);
}
item.sortDate = Math.min(...dates);
item.cinemaDateParsed = cinemaDateParsed;
item.digitalDateParsed = digitalDateParsed;
item.physicalDateParsed = physicalDateParsed;
});
items.sort((a, b) => ((a.sortDate > b.sortDate) ? 1 : -1));
return (
<div className={styles.agenda}>
{
@@ -32,7 +61,9 @@ function Agenda(props) {
}
Agenda.propTypes = {
items: PropTypes.arrayOf(PropTypes.object).isRequired
items: PropTypes.arrayOf(PropTypes.object).isRequired,
start: PropTypes.string.isRequired,
end: PropTypes.string.isRequired
};
export default Agenda;

View File

@@ -29,7 +29,7 @@
}
.time {
flex: 0 0 120px;
flex: 0 0 125px;
margin-right: 10px;
border: none !important;
}
@@ -92,6 +92,5 @@
}
.dateIcon {
display: inline;
margin-right: 10px;
width: 25px;
}

View File

@@ -55,23 +55,26 @@ class AgendaEvent extends Component {
showCutoffUnmetIcon,
longDateFormat,
colorImpairedMode,
startDate,
endDate
cinemaDateParsed,
digitalDateParsed,
physicalDateParsed,
sortDate
} = this.props;
const agendaStart = Date.parse(startDate);
const agendaEnd = Date.parse(endDate);
const cinemaDate = Date.parse(inCinemas);
const digitalDate = Date.parse(digitalRelease);
let startTime = physicalRelease;
let releaseIcon = icons.DISC;
let startTime = null;
let releaseIcon = null;
if (digitalDate >= agendaStart && digitalDate <= agendaEnd) {
if (physicalDateParsed === sortDate) {
startTime = physicalRelease;
releaseIcon = icons.DISC;
}
if (digitalDateParsed === sortDate) {
startTime = digitalRelease;
releaseIcon = icons.MOVIE_FILE;
}
if (cinemaDate >= agendaStart && cinemaDate <= agendaEnd) {
if (cinemaDateParsed === sortDate) {
startTime = inCinemas;
releaseIcon = icons.IN_CINEMAS;
}
@@ -92,13 +95,14 @@ class AgendaEvent extends Component {
)}
to={link}
>
<div className={styles.dateIcon}>
<Icon
name={releaseIcon}
kind={kinds.DEFAULT}
/>
</div>
<div className={styles.date}>
<div className={styles.dateIcon}>
<Icon
name={releaseIcon}
kind={kinds.DEFAULT}
/>
</div>
{(showDate) ? startTime.format(longDateFormat) : null}
</div>
@@ -176,8 +180,10 @@ AgendaEvent.propTypes = {
timeFormat: PropTypes.string.isRequired,
longDateFormat: PropTypes.string.isRequired,
colorImpairedMode: PropTypes.bool.isRequired,
startDate: PropTypes.date,
endDate: PropTypes.date
cinemaDateParsed: PropTypes.number,
digitalDateParsed: PropTypes.number,
physicalDateParsed: PropTypes.number,
sortDate: PropTypes.number
};
AgendaEvent.defaultProps = {

View File

@@ -13,9 +13,7 @@ function createMapStateToProps() {
createMovieFileSelector(),
createQueueItemSelector(),
createUISettingsSelector(),
(state) => state.calendar.start,
(state) => state.calendar.end,
(calendarOptions, movie, movieFile, queueItem, uiSettings, startDate, endDate) => {
(calendarOptions, movie, movieFile, queueItem, uiSettings) => {
return {
movie,
movieFile,
@@ -23,9 +21,7 @@ function createMapStateToProps() {
...calendarOptions,
timeFormat: uiSettings.timeFormat,
longDateFormat: uiSettings.longDateFormat,
colorImpairedMode: uiSettings.enableColorImpairedMode,
startDate,
endDate
colorImpairedMode: uiSettings.enableColorImpairedMode
};
}
);

View File

@@ -24,7 +24,7 @@ function createMissingMovieIdsSelector() {
const inCinemas = movie.inCinemas;
if (
!movie.movieFileId &&
!movie.hasFile &&
moment(inCinemas).isAfter(start) &&
moment(inCinemas).isBefore(end) &&
isBefore(movie.inCinemas) &&

View File

@@ -12,10 +12,12 @@ function CalendarEventQueueDetails(props) {
sizeleft,
estimatedCompletionTime,
status,
trackedDownloadState,
trackedDownloadStatus,
errorMessage
} = props;
const progress = (100 - sizeleft / size * 100);
const progress = size ? (100 - sizeleft / size * 100) : 0;
return (
<QueueDetails
@@ -24,6 +26,8 @@ function CalendarEventQueueDetails(props) {
sizeleft={sizeleft}
estimatedCompletionTime={estimatedCompletionTime}
status={status}
trackedDownloadState={trackedDownloadState}
trackedDownloadStatus={trackedDownloadStatus}
errorMessage={errorMessage}
progressBar={
<div title={translate('MovieIsDownloadingInterp', [progress.toFixed(1), title])}>
@@ -45,6 +49,8 @@ CalendarEventQueueDetails.propTypes = {
sizeleft: PropTypes.number.isRequired,
estimatedCompletionTime: PropTypes.string,
status: PropTypes.string.isRequired,
trackedDownloadState: PropTypes.string.isRequired,
trackedDownloadStatus: PropTypes.string.isRequired,
errorMessage: PropTypes.string
};

View File

@@ -24,7 +24,7 @@ function getTitle(time, start, end, view, longDateFormat) {
} else if (view === 'month') {
return timeMoment.format('MMMM YYYY');
} else if (view === 'agenda') {
return 'Agenda';
return `Agenda: ${startMoment.format('MMM D')} - ${endMoment.format('MMM D')}`;
}
let startFormat = 'MMM D YYYY';
@@ -168,7 +168,7 @@ class CalendarHeader extends Component {
selectedView={view}
onPress={this.onViewChange}
>
Month
{translate('Month')}
</ViewMenuItem>
}
@@ -177,7 +177,7 @@ class CalendarHeader extends Component {
selectedView={view}
onPress={this.onViewChange}
>
Week
{translate('Week')}
</ViewMenuItem>
<ViewMenuItem
@@ -185,7 +185,7 @@ class CalendarHeader extends Component {
selectedView={view}
onPress={this.onViewChange}
>
Forecast
{translate('Forecast')}
</ViewMenuItem>
<ViewMenuItem

View File

@@ -1,4 +1,3 @@
import _ from 'lodash';
import PropTypes from 'prop-types';
import React, { Component } from 'react';
import { connect } from 'react-redux';
@@ -14,19 +13,16 @@ function createMapStateToProps() {
createDimensionsSelector(),
createUISettingsSelector(),
(calendar, dimensions, uiSettings) => {
const result = _.pick(calendar, [
'isFetching',
'view',
'time',
'start',
'end'
]);
result.isSmallScreen = dimensions.isSmallScreen;
result.collapseViewButtons = dimensions.isLargeScreen;
result.longDateFormat = uiSettings.longDateFormat;
return result;
return {
isFetching: calendar.isFetching,
view: calendar.view,
time: calendar.time,
start: calendar.start,
end: calendar.end,
isSmallScreen: dimensions.isSmallScreen,
collapseViewButtons: dimensions.isLargeScreen,
longDateFormat: uiSettings.longDateFormat
};
}
);
}

View File

@@ -1,6 +1,7 @@
import PropTypes from 'prop-types';
import React from 'react';
import { icons, kinds } from 'Helpers/Props';
import translate from 'Utilities/String/translate';
import LegendIconItem from './LegendIconItem';
import LegendItem from './LegendItem';
import styles from './Legend.css';
@@ -16,10 +17,10 @@ function Legend(props) {
if (showCutoffUnmetIcon) {
iconsToShow.push(
<LegendIconItem
name="Cutoff Not Met"
name={translate('CutoffUnmet')}
icon={icons.MOVIE_FILE}
kind={kinds.WARNING}
tooltip="Quality or language cutoff has not been met"
tooltip={translate('QualityOrLangCutoffHasNotBeenMet')}
/>
);
}
@@ -28,32 +29,45 @@ function Legend(props) {
<div className={styles.legend}>
<div>
<LegendItem
status="unreleased"
tooltip="Movie hasn't released yet"
style='ended'
name={translate('DownloadedAndMonitored')}
colorImpairedMode={colorImpairedMode}
/>
<LegendItem
status="unmonitored"
tooltip="Movie is unmonitored"
style='availNotMonitored'
name={translate('DownloadedButNotMonitored')}
colorImpairedMode={colorImpairedMode}
/>
</div>
<div>
<LegendItem
status="downloading"
tooltip="Movie is currently downloading"
style='missingMonitored'
name={translate('MissingMonitoredAndConsideredAvailable')}
colorImpairedMode={colorImpairedMode}
/>
<LegendItem
status="downloaded"
tooltip="Movie was downloaded and sorted"
style='missingUnmonitored'
name={translate('MissingNotMonitored')}
colorImpairedMode={colorImpairedMode}
/>
</div>
<div>
<LegendItem
style='queue'
name={translate('Queued')}
colorImpairedMode={colorImpairedMode}
/>
<LegendItem
style='continuing'
name={translate('Unreleased')}
colorImpairedMode={colorImpairedMode}
/>
</div>
{
iconsToShow.length > 0 &&
<div>

View File

@@ -1,8 +1,5 @@
.legendIconItem {
margin: 3px 0;
margin-right: 6px;
width: 150px;
cursor: default;
margin-left: 6px;
}
.icon {

View File

@@ -1,33 +1,74 @@
.legendItemContainer {
margin-right: 5px;
width: 220px;
}
.legendItem {
margin: 3px 0;
margin-right: 6px;
padding-left: 5px;
width: 150px;
border-left-width: 4px;
border-left-style: solid;
cursor: default;
display: inline-flex;
margin-top: -1px;
vertical-align: middle;
line-height: 16px;
}
/*
* Status
*/
.downloaded {
composes: downloaded from '~Calendar/Events/CalendarEvent.css';
.legendItemColor {
margin-right: 8px;
width: 30px;
height: 16px;
border-radius: 4px;
}
.downloading {
composes: downloading from '~Calendar/Events/CalendarEvent.css';
.queue {
composes: legendItemColor;
background-color: $queueColor;
}
.unmonitored {
composes: unmonitored from '~Calendar/Events/CalendarEvent.css';
.continuing {
composes: legendItemColor;
background-color: $primaryColor;
}
.missing {
composes: missing from '~Calendar/Events/CalendarEvent.css';
.availNotMonitored {
composes: legendItemColor;
background-color: $darkGray;
}
.unreleased {
composes: unreleased from '~Calendar/Events/CalendarEvent.css';
.ended {
composes: legendItemColor;
background-color: $successColor;
}
.missingMonitored {
composes: legendItemColor;
background-color: $dangerColor;
&:global(.colorImpaired) {
background: repeating-linear-gradient(90deg, color($dangerColor shade(5%)), color($dangerColor shade(5%)) 5px, color($dangerColor shade(15%)) 5px, color($dangerColor shade(15%)) 10px);
}
}
.missingUnmonitored {
composes: legendItemColor;
background-color: $warningColor;
&:global(.colorImpaired) {
background: repeating-linear-gradient(45deg, $warningColor, $warningColor 5px, color($warningColor tint(15%)) 5px, color($warningColor tint(15%)) 10px);
}
}
.missingMonitoredColorImpaired {
background: repeating-linear-gradient(90deg, $colorImpairedGradientDark, $colorImpairedGradientDark 5px, $colorImpairedGradient 5px, $colorImpairedGradient 10px);
}
.missingUnmonitoredColorImpaired {
background: repeating-linear-gradient(45deg, $colorImpairedGradientDark, $colorImpairedGradientDark 5px, $colorImpairedGradient 5px, $colorImpairedGradient 10px);
}
.legendItemText {
display: inline-block;
}

View File

@@ -1,35 +1,34 @@
import classNames from 'classnames';
import PropTypes from 'prop-types';
import React from 'react';
import titleCase from 'Utilities/String/titleCase';
import styles from './LegendItem.css';
function LegendItem(props) {
const {
name,
status,
tooltip,
style,
colorImpairedMode
} = props;
return (
<div
className={classNames(
styles.legendItem,
styles[status],
colorImpairedMode && 'colorImpaired'
)}
title={tooltip}
>
{name ? name : titleCase(status)}
<div className={styles.legendItemContainer}>
<div
className={classNames(
styles.legendItem,
styles[style],
colorImpairedMode && 'colorImpaired'
)}
/>
<div className={classNames(styles.legendItemText, colorImpairedMode && styles[`${style}ColorImpaired`])}>
{name}
</div>
</div>
);
}
LegendItem.propTypes = {
name: PropTypes.string,
status: PropTypes.string.isRequired,
tooltip: PropTypes.string.isRequired,
name: PropTypes.string.isRequired,
style: PropTypes.string.isRequired,
colorImpairedMode: PropTypes.bool.isRequired
};

View File

@@ -107,7 +107,7 @@ class CalendarOptionsModalContent extends Component {
return (
<ModalContent onModalClose={onModalClose}>
<ModalHeader>
Calendar Options
{translate('CalendarOptions')}
</ModalHeader>
<ModalBody>

View File

@@ -22,7 +22,7 @@ function getUrls(state) {
tags
} = state;
let icalUrl = `${window.location.host}${window.Radarr.urlBase}/feed/calendar/Radarr.ics?`;
let icalUrl = `${window.location.host}${window.Radarr.urlBase}/feed/v3/calendar/Radarr.ics?`;
if (unmonitored) {
icalUrl += 'unmonitored=true&';
@@ -109,7 +109,7 @@ class CalendarLinkModalContent extends Component {
return (
<ModalContent onModalClose={onModalClose}>
<ModalHeader>
Radarr Calendar Feed
{translate('RadarrCalendarFeed')}
</ModalHeader>
<ModalBody>

View File

@@ -129,7 +129,9 @@ class FileBrowserModalContent extends Component {
className={styles.mappedDrivesWarning}
kind={kinds.WARNING}
>
Mapped network drives are not available when running as a Windows Service, see the <Link className={styles.faqLink} to="https://github.com/Radarr/Radarr/wiki/FAQ">FAQ</Link> for more information.
<Link to="https://wiki.servarr.com/Radarr_FAQ#Why_cant_Radarr_see_my_files_on_a_remote_server">
{translate('MappedDrivesRunningAsService')}
</Link> .
</Alert>
}

View File

@@ -5,16 +5,17 @@ import SelectInput from 'Components/Form/SelectInput';
import TextInput from 'Components/Form/TextInput';
import { IN_LAST, IN_NEXT, NOT_IN_LAST, NOT_IN_NEXT } from 'Helpers/Props/filterTypes';
import isString from 'Utilities/String/isString';
import translate from 'Utilities/String/translate';
import { NAME } from './FilterBuilderRowValue';
import styles from './DateFilterBuilderRowValue.css';
const timeOptions = [
{ key: 'seconds', value: 'seconds' },
{ key: 'minutes', value: 'minutes' },
{ key: 'hours', value: 'hours' },
{ key: 'days', value: 'days' },
{ key: 'weeks', value: 'weeks' },
{ key: 'months', value: 'months' }
{ key: 'seconds', value: translate('Seconds') },
{ key: 'minutes', value: translate('Minutes') },
{ key: 'hours', value: translate('Hours') },
{ key: 'days', value: translate('Days') },
{ key: 'weeks', value: translate('Weeks') },
{ key: 'months', value: translate('Months') }
];
function isInFilter(filterType) {

View File

@@ -8,10 +8,11 @@ import DateFilterBuilderRowValue from './DateFilterBuilderRowValue';
import FilterBuilderRowValueConnector from './FilterBuilderRowValueConnector';
import ImportListFilterBuilderRowValueConnector from './ImportListFilterBuilderRowValueConnector';
import IndexerFilterBuilderRowValueConnector from './IndexerFilterBuilderRowValueConnector';
import MovieStatusFilterBuilderRowValue from './MovieStatusFilterBuilderRowValue';
import MinimumAvailabilityFilterBuilderRowValue from './MinimumAvailabilityFilterBuilderRowValue';
import ProtocolFilterBuilderRowValue from './ProtocolFilterBuilderRowValue';
import QualityFilterBuilderRowValueConnector from './QualityFilterBuilderRowValueConnector';
import QualityProfileFilterBuilderRowValueConnector from './QualityProfileFilterBuilderRowValueConnector';
import ReleaseStatusFilterBuilderRowValue from './ReleaseStatusFilterBuilderRowValue';
import TagFilterBuilderRowValueConnector from './TagFilterBuilderRowValueConnector';
import styles from './FilterBuilderRow.css';
@@ -69,8 +70,11 @@ function getRowValueConnector(selectedFilterBuilderProp) {
case filterBuilderValueTypes.QUALITY_PROFILE:
return QualityProfileFilterBuilderRowValueConnector;
case filterBuilderValueTypes.MOVIE_STATUS:
return MovieStatusFilterBuilderRowValue;
case filterBuilderValueTypes.RELEASE_STATUS:
return ReleaseStatusFilterBuilderRowValue;
case filterBuilderValueTypes.MINIMUM_AVAILABILITY:
return MinimumAvailabilityFilterBuilderRowValue;
case filterBuilderValueTypes.TAG:
return TagFilterBuilderRowValueConnector;

View File

@@ -16,7 +16,7 @@ function createTagListSelector() {
(selectedFilterBuilderProp.type === filterBuilderTypes.NUMBER ||
selectedFilterBuilderProp.type === filterBuilderTypes.STRING) &&
filterType !== filterTypes.EQUAL &&
filterType !== filterBuilderTypes.NOT_EQUAL ||
filterType !== filterTypes.NOT_EQUAL ||
!selectedFilterBuilderProp.optionsSelector
) {
return [];

View File

@@ -0,0 +1,20 @@
import React from 'react';
import translate from 'Utilities/String/translate';
import FilterBuilderRowValue from './FilterBuilderRowValue';
const protocols = [
{ id: 'announced', name: translate('Announced') },
{ id: 'inCinemas', name: translate('InCinemas') },
{ id: 'released', name: translate('Released') }
];
function MinimumAvailabilityFilterBuilderRowValue(props) {
return (
<FilterBuilderRowValue
tagList={protocols}
{...props}
/>
);
}
export default MinimumAvailabilityFilterBuilderRowValue;

View File

@@ -1,21 +0,0 @@
import React from 'react';
import FilterBuilderRowValue from './FilterBuilderRowValue';
const protocols = [
{ id: 'tba', name: 'TBA' },
{ id: 'announced', name: 'Announced' },
{ id: 'inCinemas', name: 'In Cinemas' },
{ id: 'released', name: 'Released' },
{ id: 'deleted', name: 'Deleted' }
];
function MovieStatusFilterBuilderRowValue(props) {
return (
<FilterBuilderRowValue
tagList={protocols}
{...props}
/>
);
}
export default MovieStatusFilterBuilderRowValue;

View File

@@ -0,0 +1,22 @@
import React from 'react';
import translate from 'Utilities/String/translate';
import FilterBuilderRowValue from './FilterBuilderRowValue';
const protocols = [
{ id: 'tba', name: 'TBA' },
{ id: 'announced', name: translate('Announced') },
{ id: 'inCinemas', name: translate('InCinemas') },
{ id: 'released', name: translate('Released') },
{ id: 'deleted', name: translate('Deleted') }
];
function ReleaseStatusFilterBuilderRowValue(props) {
return (
<FilterBuilderRowValue
tagList={protocols}
{...props}
/>
);
}
export default ReleaseStatusFilterBuilderRowValue;

View File

@@ -1,12 +1,13 @@
import PropTypes from 'prop-types';
import React from 'react';
import translate from 'Utilities/String/translate';
import SelectInput from './SelectInput';
const availabilityOptions = [
{ key: 'announced', value: 'Announced' },
{ key: 'inCinemas', value: 'In Cinemas' },
{ key: 'released', value: 'Released' },
{ key: 'preDB', value: 'PreDB' }
{ key: 'announced', value: translate('Announced') },
{ key: 'inCinemas', value: translate('InCinemas') },
{ key: 'released', value: translate('Released') },
{ key: 'preDB', value: translate('PreDB') }
];
function AvailabilitySelectInput(props) {

View File

@@ -2,34 +2,22 @@ import PropTypes from 'prop-types';
import React, { Component } from 'react';
import { connect } from 'react-redux';
import { createSelector } from 'reselect';
import { clearOptions, fetchOptions } from 'Store/Actions/providerOptionActions';
import { clearOptions, defaultState, fetchOptions } from 'Store/Actions/providerOptionActions';
import DeviceInput from './DeviceInput';
function createMapStateToProps() {
return createSelector(
(state, { value }) => value,
(state, { name }) => name,
(state) => state.providerOptions,
(value, name, devices) => {
const {
isFetching,
isPopulated,
error,
items
} = devices;
(state) => state.providerOptions.devices || defaultState,
(value, devices) => {
return {
isFetching,
isPopulated,
error,
items: items[name] || [],
...devices,
selectedDevices: value.map((valueDevice) => {
const sectionItems = items[name] || [];
// Disable equality ESLint rule so we don't need to worry about
// a type mismatch between the value items and the device ID.
// eslint-disable-next-line eqeqeq
const device = sectionItems.find((d) => d.id == valueDevice);
const device = devices.items.find((d) => d.id == valueDevice);
if (device) {
return {
@@ -63,7 +51,7 @@ class DeviceInputConnector extends Component {
}
componentWillUnmount = () => {
this.props.dispatchClearOptions();
this.props.dispatchClearOptions({ section: 'devices' });
}
//
@@ -73,14 +61,12 @@ class DeviceInputConnector extends Component {
const {
provider,
providerData,
dispatchFetchOptions,
requestAction,
name
dispatchFetchOptions
} = this.props;
dispatchFetchOptions({
action: requestAction,
itemSection: name,
section: 'devices',
action: 'getDevices',
provider,
providerData
});
@@ -109,7 +95,6 @@ class DeviceInputConnector extends Component {
DeviceInputConnector.propTypes = {
provider: PropTypes.string.isRequired,
providerData: PropTypes.object.isRequired,
requestAction: PropTypes.string.isRequired,
name: PropTypes.string.isRequired,
onChange: PropTypes.func.isRequired,
dispatchFetchOptions: PropTypes.func.isRequired,

View File

@@ -5,6 +5,10 @@
align-items: center;
}
.editableContainer {
width: 100%;
}
.hasError {
composes: hasError from '~Components/Form/Input.css';
}
@@ -22,6 +26,16 @@
margin-left: 12px;
}
.dropdownArrowContainerEditable {
position: absolute;
top: 0;
right: 0;
padding-right: 17px;
width: 30%;
height: 35px;
text-align: right;
}
.dropdownArrowContainerDisabled {
composes: dropdownArrowContainer;
@@ -66,3 +80,26 @@
border-radius: 4px;
background-color: $white;
}
.loading {
display: inline-block;
margin: 5px -5px 5px 0;
}
.mobileCloseButtonContainer {
display: flex;
justify-content: flex-end;
height: 40px;
border-bottom: 1px solid $borderColor;
}
.mobileCloseButton {
width: 40px;
height: 40px;
text-align: center;
line-height: 40px;
&:hover {
color: $modalCloseButtonHoverColor;
}
}

View File

@@ -5,6 +5,7 @@ import React, { Component } from 'react';
import { Manager, Popper, Reference } from 'react-popper';
import Icon from 'Components/Icon';
import Link from 'Components/Link/Link';
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
import Measure from 'Components/Measure';
import Modal from 'Components/Modal/Modal';
import ModalBody from 'Components/Modal/ModalBody';
@@ -16,6 +17,7 @@ import getUniqueElememtId from 'Utilities/getUniqueElementId';
import { isMobile as isMobileUtil } from 'Utilities/mobile';
import HintedSelectInputOption from './HintedSelectInputOption';
import HintedSelectInputSelectedValue from './HintedSelectInputSelectedValue';
import TextInput from './TextInput';
import styles from './EnhancedSelectInput.css';
function isArrowKey(keyCode) {
@@ -58,11 +60,30 @@ function getSelectedIndex(props) {
values
} = props;
if (Array.isArray(value)) {
return values.findIndex((v) => {
return value.size && v.key === value[0];
});
}
return values.findIndex((v) => {
return v.key === value;
});
}
function isSelectedItem(index, props) {
const {
value,
values
} = props;
if (Array.isArray(value)) {
return value.includes(values[index].key);
}
return values[index].key === value;
}
function getKey(selectedIndex, values) {
return values[selectedIndex].key;
}
@@ -92,7 +113,7 @@ class EnhancedSelectInput extends Component {
this._scheduleUpdate();
}
if (prevProps.value !== this.props.value) {
if (!Array.isArray(this.props.value) && prevProps.value !== this.props.value) {
this.setState({
selectedIndex: getSelectedIndex(this.props)
});
@@ -134,7 +155,7 @@ class EnhancedSelectInput extends Component {
const button = document.getElementById(this._buttonId);
const options = document.getElementById(this._optionsId);
if (!button || this.state.isMobile) {
if (!button || !event.target.isConnected || this.state.isMobile) {
return;
}
@@ -149,11 +170,21 @@ class EnhancedSelectInput extends Component {
}
}
onFocus = () => {
if (this.state.isOpen) {
this._removeListener();
this.setState({ isOpen: false });
}
}
onBlur = () => {
// Calling setState without this check prevents the click event from being properly handled on Chrome (it is on firefox)
const origIndex = getSelectedIndex(this.props);
if (origIndex !== this.state.selectedIndex) {
this.setState({ selectedIndex: origIndex });
if (!this.props.isEditable) {
// Calling setState without this check prevents the click event from being properly handled on Chrome (it is on firefox)
const origIndex = getSelectedIndex(this.props);
if (origIndex !== this.state.selectedIndex) {
this.setState({ selectedIndex: origIndex });
}
}
}
@@ -177,7 +208,7 @@ class EnhancedSelectInput extends Component {
}
if (
selectedIndex == null ||
selectedIndex == null || selectedIndex === -1 ||
getSelectedOption(selectedIndex, values).isDisabled
) {
if (keyCode === keyCodes.UP_ARROW) {
@@ -231,16 +262,35 @@ class EnhancedSelectInput extends Component {
this._addListener();
}
if (!this.state.isOpen && this.props.onOpen) {
this.props.onOpen();
}
this.setState({ isOpen: !this.state.isOpen });
}
onSelect = (value) => {
this.setState({ isOpen: false });
if (Array.isArray(this.props.value)) {
let newValue = null;
const index = this.props.value.indexOf(value);
if (index === -1) {
newValue = this.props.values.map((v) => v.key).filter((v) => (v === value) || this.props.value.includes(v));
} else {
newValue = [...this.props.value];
newValue.splice(index, 1);
}
this.props.onChange({
name: this.props.name,
value: newValue
});
} else {
this.setState({ isOpen: false });
this.props.onChange({
name: this.props.name,
value
});
this.props.onChange({
name: this.props.name,
value
});
}
}
onMeasure = ({ width }) => {
@@ -258,14 +308,19 @@ class EnhancedSelectInput extends Component {
const {
className,
disabledClassName,
name,
value,
values,
isDisabled,
isEditable,
isFetching,
hasError,
hasWarning,
valueOptions,
selectedValueOptions,
selectedValueComponent: SelectedValueComponent,
optionComponent: OptionComponent
optionComponent: OptionComponent,
onChange
} = this.props;
const {
@@ -275,6 +330,7 @@ class EnhancedSelectInput extends Component {
isMobile
} = this.state;
const isMultiSelect = Array.isArray(value);
const selectedOption = getSelectedOption(selectedIndex, values);
return (
@@ -290,37 +346,94 @@ class EnhancedSelectInput extends Component {
whitelist={['width']}
onMeasure={this.onMeasure}
>
<Link
className={classNames(
className,
hasError && styles.hasError,
hasWarning && styles.hasWarning,
isDisabled && disabledClassName
)}
isDisabled={isDisabled}
onBlur={this.onBlur}
onKeyDown={this.onKeyDown}
onPress={this.onPress}
>
<SelectedValueComponent
{...selectedValueOptions}
{...selectedOption}
isDisabled={isDisabled}
>
{selectedOption ? selectedOption.value : null}
</SelectedValueComponent>
{
isEditable ?
<div
className={styles.editableContainer}
>
<TextInput
className={className}
name={name}
value={value}
readOnly={isDisabled}
hasError={hasError}
hasWarning={hasWarning}
onFocus={this.onFocus}
onBlur={this.onBlur}
onChange={onChange}
/>
<Link
className={classNames(
styles.dropdownArrowContainerEditable,
isDisabled ?
styles.dropdownArrowContainerDisabled :
styles.dropdownArrowContainer)
}
onPress={this.onPress}
>
{
isFetching &&
<LoadingIndicator
className={styles.loading}
size={20}
/>
}
<div
className={isDisabled ?
styles.dropdownArrowContainerDisabled :
styles.dropdownArrowContainer
}
>
<Icon
name={icons.CARET_DOWN}
/>
</div>
</Link>
{
!isFetching &&
<Icon
name={icons.CARET_DOWN}
/>
}
</Link>
</div> :
<Link
className={classNames(
className,
hasError && styles.hasError,
hasWarning && styles.hasWarning,
isDisabled && disabledClassName
)}
isDisabled={isDisabled}
onBlur={this.onBlur}
onKeyDown={this.onKeyDown}
onPress={this.onPress}
>
<SelectedValueComponent
value={value}
values={values}
{...selectedValueOptions}
{...selectedOption}
isDisabled={isDisabled}
isMultiSelect={isMultiSelect}
>
{selectedOption ? selectedOption.value : null}
</SelectedValueComponent>
<div
className={isDisabled ?
styles.dropdownArrowContainerDisabled :
styles.dropdownArrowContainer
}
>
{
isFetching &&
<LoadingIndicator
className={styles.loading}
size={20}
/>
}
{
!isFetching &&
<Icon
name={icons.CARET_DOWN}
/>
}
</div>
</Link>
}
</Measure>
</div>
)}
@@ -359,11 +472,18 @@ class EnhancedSelectInput extends Component {
>
{
values.map((v, index) => {
const hasParent = v.parentKey !== undefined;
const depth = hasParent ? 1 : 0;
const parentSelected = hasParent && value.includes(v.parentKey);
return (
<OptionComponent
key={v.key}
id={v.key}
isSelected={index === selectedIndex}
dividerAfter={v.dividerAfter}
depth={depth}
isSelected={isSelectedItem(index, this.props)}
isDisabled={parentSelected}
isMultiSelect={isMultiSelect}
{...valueOptions}
{...v}
isMobile={false}
@@ -399,13 +519,32 @@ class EnhancedSelectInput extends Component {
scrollDirection={scrollDirections.NONE}
>
<Scroller className={styles.optionsModalScroller}>
<div className={styles.mobileCloseButtonContainer}>
<Link
className={styles.mobileCloseButton}
onPress={this.onOptionsModalClose}
>
<Icon
name={icons.CLOSE}
size={18}
/>
</Link>
</div>
{
values.map((v, index) => {
const hasParent = v.parentKey !== undefined;
const depth = hasParent ? 1 : 0;
const parentSelected = hasParent && value.includes(v.parentKey);
return (
<OptionComponent
key={v.key}
id={v.key}
isSelected={index === selectedIndex}
dividerAfter={v.dividerAfter}
depth={depth}
isSelected={isSelectedItem(index, this.props)}
isMultiSelect={isMultiSelect}
isDisabled={parentSelected}
{...valueOptions}
{...v}
isMobile={true}
@@ -429,15 +568,18 @@ EnhancedSelectInput.propTypes = {
className: PropTypes.string,
disabledClassName: PropTypes.string,
name: PropTypes.string.isRequired,
value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
value: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.arrayOf(PropTypes.number)]).isRequired,
values: PropTypes.arrayOf(PropTypes.object).isRequired,
isDisabled: PropTypes.bool,
isDisabled: PropTypes.bool.isRequired,
isFetching: PropTypes.bool.isRequired,
isEditable: PropTypes.bool.isRequired,
hasError: PropTypes.bool,
hasWarning: PropTypes.bool,
valueOptions: PropTypes.object.isRequired,
selectedValueOptions: PropTypes.object.isRequired,
selectedValueComponent: PropTypes.oneOfType([PropTypes.string, PropTypes.func]).isRequired,
optionComponent: PropTypes.elementType,
onOpen: PropTypes.func,
onChange: PropTypes.func.isRequired
};
@@ -445,6 +587,8 @@ EnhancedSelectInput.defaultProps = {
className: styles.enhancedSelect,
disabledClassName: styles.isDisabled,
isDisabled: false,
isFetching: false,
isEditable: false,
valueOptions: {},
selectedValueOptions: {},
selectedValueComponent: HintedSelectInputSelectedValue,

View File

@@ -0,0 +1,159 @@
import _ from 'lodash';
import PropTypes from 'prop-types';
import React, { Component } from 'react';
import { connect } from 'react-redux';
import { createSelector } from 'reselect';
import { clearOptions, defaultState, fetchOptions } from 'Store/Actions/providerOptionActions';
import EnhancedSelectInput from './EnhancedSelectInput';
const importantFieldNames = [
'baseUrl',
'apiPath',
'apiKey'
];
function getProviderDataKey(providerData) {
if (!providerData || !providerData.fields) {
return null;
}
const fields = providerData.fields
.filter((f) => importantFieldNames.includes(f.name))
.map((f) => f.value);
return fields;
}
function getSelectOptions(items) {
if (!items) {
return [];
}
return items.map((option) => {
return {
key: option.value,
value: option.name,
hint: option.hint,
parentKey: option.parentValue
};
});
}
function createMapStateToProps() {
return createSelector(
(state, { selectOptionsProviderAction }) => state.providerOptions[selectOptionsProviderAction] || defaultState,
(options) => {
if (options) {
return {
isFetching: options.isFetching,
values: getSelectOptions(options.items)
};
}
}
);
}
const mapDispatchToProps = {
dispatchFetchOptions: fetchOptions,
dispatchClearOptions: clearOptions
};
class EnhancedSelectInputConnector extends Component {
//
// Lifecycle
constructor(props, context) {
super(props, context);
this.state = {
refetchRequired: false
};
}
componentDidMount = () => {
this._populate();
}
componentDidUpdate = (prevProps) => {
const prevKey = getProviderDataKey(prevProps.providerData);
const nextKey = getProviderDataKey(this.props.providerData);
if (!_.isEqual(prevKey, nextKey)) {
this.setState({ refetchRequired: true });
}
}
componentWillUnmount = () => {
this._cleanup();
}
//
// Listeners
onOpen = () => {
if (this.state.refetchRequired) {
this._populate();
}
}
//
// Control
_populate() {
const {
provider,
providerData,
selectOptionsProviderAction,
dispatchFetchOptions
} = this.props;
if (selectOptionsProviderAction) {
this.setState({ refetchRequired: false });
dispatchFetchOptions({
section: selectOptionsProviderAction,
action: selectOptionsProviderAction,
provider,
providerData
});
}
}
_cleanup() {
const {
selectOptionsProviderAction,
dispatchClearOptions
} = this.props;
if (selectOptionsProviderAction) {
dispatchClearOptions({ section: selectOptionsProviderAction });
}
}
//
// Render
render() {
return (
<EnhancedSelectInput
{...this.props}
onOpen={this.onOpen}
/>
);
}
}
EnhancedSelectInputConnector.propTypes = {
provider: PropTypes.string.isRequired,
providerData: PropTypes.object.isRequired,
name: PropTypes.string.isRequired,
value: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])).isRequired,
values: PropTypes.arrayOf(PropTypes.object).isRequired,
selectOptionsProviderAction: PropTypes.string,
onChange: PropTypes.func.isRequired,
isFetching: PropTypes.bool.isRequired,
dispatchFetchOptions: PropTypes.func.isRequired,
dispatchClearOptions: PropTypes.func.isRequired
};
export default connect(createMapStateToProps, mapDispatchToProps)(EnhancedSelectInputConnector);

View File

@@ -11,6 +11,18 @@
}
}
.optionCheck {
composes: container from '~./CheckInput.css';
flex: 0 0 0;
}
.optionCheckInput {
composes: input from '~./CheckInput.css';
margin-top: 0;
}
.isSelected {
background-color: #e2e2e2;
@@ -42,4 +54,8 @@
&:last-child {
border: none;
}
&:hover {
background-color: unset;
}
}

View File

@@ -4,6 +4,7 @@ import React, { Component } from 'react';
import Icon from 'Components/Icon';
import Link from 'Components/Link/Link';
import { icons } from 'Helpers/Props';
import CheckInput from './CheckInput';
import styles from './EnhancedSelectInputOption.css';
class EnhancedSelectInputOption extends Component {
@@ -11,7 +12,9 @@ class EnhancedSelectInputOption extends Component {
//
// Listeners
onPress = () => {
onPress = (e) => {
e.preventDefault();
const {
id,
onSelect
@@ -20,15 +23,22 @@ class EnhancedSelectInputOption extends Component {
onSelect(id);
}
onCheckPress = () => {
// CheckInput requires a handler. Swallow the change event because onPress will already handle it via event propagation.
}
//
// Render
render() {
const {
className,
id,
depth,
isSelected,
isDisabled,
isHidden,
isMultiSelect,
isMobile,
children
} = this.props;
@@ -37,8 +47,8 @@ class EnhancedSelectInputOption extends Component {
<Link
className={classNames(
className,
isSelected && styles.isSelected,
isDisabled && styles.isDisabled,
isSelected && !isMultiSelect && styles.isSelected,
isDisabled && !isMultiSelect && styles.isDisabled,
isHidden && styles.isHidden,
isMobile && styles.isMobile
)}
@@ -46,6 +56,24 @@ class EnhancedSelectInputOption extends Component {
isDisabled={isDisabled}
onPress={this.onPress}
>
{
depth !== 0 &&
<div style={{ width: `${depth * 20}px` }} />
}
{
isMultiSelect &&
<CheckInput
className={styles.optionCheckInput}
containerClassName={styles.optionCheck}
name={`select-${id}`}
value={isSelected}
isDisabled={isDisabled}
onChange={this.onCheckPress}
/>
}
{children}
{
@@ -64,9 +92,11 @@ class EnhancedSelectInputOption extends Component {
EnhancedSelectInputOption.propTypes = {
className: PropTypes.string.isRequired,
id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
depth: PropTypes.number.isRequired,
isSelected: PropTypes.bool.isRequired,
isDisabled: PropTypes.bool.isRequired,
isHidden: PropTypes.bool.isRequired,
isMultiSelect: PropTypes.bool.isRequired,
isMobile: PropTypes.bool.isRequired,
children: PropTypes.node.isRequired,
onSelect: PropTypes.func.isRequired
@@ -74,8 +104,10 @@ EnhancedSelectInputOption.propTypes = {
EnhancedSelectInputOption.defaultProps = {
className: styles.option,
depth: 0,
isDisabled: false,
isHidden: false
isHidden: false,
isMultiSelect: false
};
export default EnhancedSelectInputOption;

View File

@@ -9,8 +9,11 @@ import CaptchaInputConnector from './CaptchaInputConnector';
import CheckInput from './CheckInput';
import DeviceInputConnector from './DeviceInputConnector';
import EnhancedSelectInput from './EnhancedSelectInput';
import EnhancedSelectInputConnector from './EnhancedSelectInputConnector';
import FormInputHelpText from './FormInputHelpText';
import IndexerFlagsSelectInputConnector from './IndexerFlagsSelectInputConnector';
import KeyValueListInput from './KeyValueListInput';
import LanguageSelectInputConnector from './LanguageSelectInputConnector';
import MovieMonitoredSelectInput from './MovieMonitoredSelectInput';
import NumberInput from './NumberInput';
import OAuthInputConnector from './OAuthInputConnector';
@@ -23,6 +26,7 @@ import TagSelectInputConnector from './TagSelectInputConnector';
import TextArea from './TextArea';
import TextInput from './TextInput';
import TextTagInputConnector from './TextTagInputConnector';
import UMaskInput from './UMaskInput';
import styles from './FormInputGroup.css';
function getComponent(type) {
@@ -66,9 +70,17 @@ function getComponent(type) {
case inputTypes.ROOT_FOLDER_SELECT:
return RootFolderSelectInputConnector;
case inputTypes.INDEXER_FLAGS_SELECT:
return IndexerFlagsSelectInputConnector;
case inputTypes.LANGUAGE_SELECT:
return LanguageSelectInputConnector;
case inputTypes.SELECT:
return EnhancedSelectInput;
case inputTypes.DYNAMIC_SELECT:
return EnhancedSelectInputConnector;
case inputTypes.TAG:
return TagInputConnector;
@@ -81,6 +93,9 @@ function getComponent(type) {
case inputTypes.TAG_SELECT:
return TagSelectInputConnector;
case inputTypes.UMASK:
return UMaskInput;
default:
return TextInput;
}
@@ -188,7 +203,7 @@ function FormInputGroup(props) {
}
{
!checkInput && helpTextWarning &&
(!checkInput || helpText) && helpTextWarning &&
<FormInputHelpText
text={helpTextWarning}
isWarning={true}

View File

@@ -21,3 +21,8 @@
color: $darkGray;
font-size: $smallFontSize;
}
.divider {
border: none;
border-bottom: 1px solid $lightGray;
}

View File

@@ -6,39 +6,73 @@ import styles from './HintedSelectInputOption.css';
function HintedSelectInputOption(props) {
const {
id,
value,
hint,
depth,
isSelected,
isDisabled,
dividerAfter,
isMultiSelect,
isMobile,
...otherProps
} = props;
return (
<EnhancedSelectInputOption
isMobile={isMobile}
{...otherProps}
>
<div className={classNames(
styles.optionText,
isMobile && styles.isMobile
)}
<div>
<EnhancedSelectInputOption
id={id}
depth={depth}
isSelected={isSelected}
isDisabled={isDisabled}
isHidden={isDisabled}
isMultiSelect={isMultiSelect}
isMobile={isMobile}
{...otherProps}
>
<div>{value}</div>
<div className={classNames(
styles.optionText,
isMobile && styles.isMobile
)}
>
<div>{value}</div>
{
hint != null &&
<div className={styles.hintText}>
{hint}
</div>
}
</div>
</EnhancedSelectInputOption>
{
hint != null &&
<div className={styles.hintText}>
{hint}
</div>
}
</div>
</EnhancedSelectInputOption>
{
dividerAfter ?
<div className={styles.divider} /> :
null
}
</div>
);
}
HintedSelectInputOption.propTypes = {
id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
value: PropTypes.string.isRequired,
hint: PropTypes.node,
name: PropTypes.string,
depth: PropTypes.number,
isSelected: PropTypes.bool.isRequired,
isDisabled: PropTypes.bool.isRequired,
dividerAfter: PropTypes.bool.isRequired,
isMultiSelect: PropTypes.bool.isRequired,
isMobile: PropTypes.bool.isRequired
};
HintedSelectInputOption.defaultProps = {
isDisabled: false,
dividerAfter: false,
isHidden: false,
isMultiSelect: false
};
export default HintedSelectInputOption;

View File

@@ -1,23 +1,43 @@
import _ from 'lodash';
import PropTypes from 'prop-types';
import React from 'react';
import Label from 'Components/Label';
import EnhancedSelectInputSelectedValue from './EnhancedSelectInputSelectedValue';
import styles from './HintedSelectInputSelectedValue.css';
function HintedSelectInputSelectedValue(props) {
const {
value,
values,
hint,
isMultiSelect,
includeHint,
...otherProps
} = props;
const valuesMap = isMultiSelect && _.keyBy(values, 'key');
return (
<EnhancedSelectInputSelectedValue
className={styles.selectedValue}
{...otherProps}
>
<div className={styles.valueText}>
{value}
{
isMultiSelect &&
value.map((key, index) => {
const v = valuesMap[key];
return (
<Label key={key}>
{v ? v.value : key}
</Label>
);
})
}
{
!isMultiSelect && value
}
</div>
{
@@ -31,12 +51,15 @@ function HintedSelectInputSelectedValue(props) {
}
HintedSelectInputSelectedValue.propTypes = {
value: PropTypes.string,
value: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number]))]).isRequired,
values: PropTypes.arrayOf(PropTypes.object).isRequired,
hint: PropTypes.string,
isMultiSelect: PropTypes.bool.isRequired,
includeHint: PropTypes.bool.isRequired
};
HintedSelectInputSelectedValue.defaultProps = {
isMultiSelect: false,
includeHint: true
};

View File

@@ -0,0 +1,70 @@
import PropTypes from 'prop-types';
import React, { Component } from 'react';
import { connect } from 'react-redux';
import { createSelector } from 'reselect';
import EnhancedSelectInput from './EnhancedSelectInput';
function createMapStateToProps() {
return createSelector(
(state, { indexerFlags }) => indexerFlags,
(state) => state.settings.indexerFlags,
(selectedFlags, indexerFlags) => {
const value = [];
indexerFlags.items.forEach((item) => {
// eslint-disable-next-line no-bitwise
if ((selectedFlags & item.id) === item.id) {
value.push(item.id);
}
});
const values = indexerFlags.items.map(({ id, name }) => {
return {
key: id,
value: name
};
});
return {
value,
values
};
}
);
}
class IndexerFlagsSelectInputConnector extends Component {
onChange = ({ name, value }) => {
let indexerFlags = 0;
value.forEach((flagId) => {
indexerFlags += flagId;
});
this.props.onChange({ name, value: indexerFlags });
}
//
// Render
render() {
return (
<EnhancedSelectInput
{...this.props}
onChange={this.onChange}
/>
);
}
}
IndexerFlagsSelectInputConnector.propTypes = {
name: PropTypes.string.isRequired,
indexerFlags: PropTypes.number.isRequired,
value: PropTypes.arrayOf(PropTypes.number).isRequired,
values: PropTypes.arrayOf(PropTypes.object).isRequired,
onChange: PropTypes.func.isRequired
};
export default connect(createMapStateToProps)(IndexerFlagsSelectInputConnector);

View File

@@ -98,7 +98,9 @@ class KeyValueListInput extends Component {
className,
value,
keyPlaceholder,
valuePlaceholder
valuePlaceholder,
hasError,
hasWarning
} = this.props;
const { isFocused } = this.state;
@@ -106,7 +108,9 @@ class KeyValueListInput extends Component {
return (
<div className={classNames(
className,
isFocused && styles.isFocused
isFocused && styles.isFocused,
hasError && styles.hasError,
hasWarning && styles.hasWarning
)}
>
{

View File

@@ -0,0 +1,52 @@
import PropTypes from 'prop-types';
import React, { Component } from 'react';
import { connect } from 'react-redux';
import { createSelector } from 'reselect';
import EnhancedSelectInput from './EnhancedSelectInput';
function createMapStateToProps() {
return createSelector(
(state, { values }) => values,
( languages ) => {
const minId = languages.reduce((min, v) => (v.key < 1 ? v.key : min), languages[0].key);
const values = languages.map(({ key, value }) => {
return {
key,
value,
dividerAfter: minId < 1 ? key === minId : false
};
});
return {
values
};
}
);
}
class LanguageSelectInputConnector extends Component {
//
// Render
render() {
return (
<EnhancedSelectInput
{...this.props}
onChange={this.props.onChange}
/>
);
}
}
LanguageSelectInputConnector.propTypes = {
name: PropTypes.string.isRequired,
value: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.number), PropTypes.number]).isRequired,
values: PropTypes.arrayOf(PropTypes.object).isRequired,
onChange: PropTypes.func.isRequired
};
export default connect(createMapStateToProps)(LanguageSelectInputConnector);

View File

@@ -1,10 +1,11 @@
import PropTypes from 'prop-types';
import React from 'react';
import translate from 'Utilities/String/translate';
import SelectInput from './SelectInput';
const monitorTypesOptions = [
{ key: 'true', value: 'True' },
{ key: 'false', value: 'False' }
{ key: 'true', value: translate('Yes') },
{ key: 'false', value: translate('No') }
];
function MovieMonitoredSelectInput(props) {

Some files were not shown because too many files have changed in this diff Show More