1
0
mirror of https://github.com/Sonarr/Sonarr.git synced 2026-04-18 21:35:27 -04:00

Compare commits

..

1563 Commits

Author SHA1 Message Date
Taloth Saldono 8502f523e6 Fixed: Regression causing updater to fail and added measure to restore bad update 2020-10-11 19:49:21 +02:00
Taloth Saldono a7ca139e13 Fixed test file casing 2020-10-11 16:20:03 +02:00
Taloth Saldono 94a78eabe5 Fixed: Dataloss when moving series folder to root folder with only different casing 2020-10-11 16:20:03 +02:00
Mark McDowall 0c7743e786 Fixed: Parsing of URLs with double slashes in the path
Closes #4005
2020-10-10 13:43:08 -07:00
Mark McDowall d0f0fc787e Fixed: Use standard naming format for daily specials
Closes #3503
2020-10-10 10:40:03 -07:00
Mark McDowall ce3c151b8c New: Search for specials by season/episode number in addition to name
Closes #415
2020-10-10 10:31:06 -07:00
Mark McDowall f49d2338fd New: Search for anime specials without absolute episode numbers by name
Closes #1970
2020-10-10 10:24:08 -07:00
Mark McDowall 164f46e4c0 Fixed: Webhooks using lower case event types (in the future this could change)
Closes #4010
2020-10-10 10:15:48 -07:00
Mark McDowall 9f527718f2 Ignore HttpClientFixture integration tests 2020-10-09 20:19:48 -07:00
Mark McDowall ee32829cdb New: Health events for Webhooks 2020-10-09 07:38:18 -07:00
Mark McDowall 43cb44dd38 Windows installer improvements
Fixed: Windows installer removing nzbdrone service
New: Add more information about Windows service to installer

Closes #3762
Closes #4006
2020-10-09 07:38:18 -07:00
Taloth Saldono e8854a2675 Fixed: Opening dropdowns 2020-10-09 09:54:44 +02:00
Taloth b4c27f5d34 New: Newznab/Torznab categories dropdown with indexer provided category names 2020-10-08 23:33:13 +02:00
Mark McDowall 9dab2ba6e4 Fixed: Quality sliders
Broken after 9c635781bd
2020-10-06 08:26:20 -07:00
Mark McDowall d105dd47e0 Fixed: Fixed size on disk not showing for series in overview view
Closes #4000
2020-10-05 21:15:49 -07:00
Mark McDowall f4f2a6f5fc Fix tooltip max width on larger screens 2020-10-04 20:39:24 -07:00
Mark McDowall 3542ab86e9 Update supporters and use jetbrains images 2020-10-04 15:56:29 -07:00
Mark McDowall f76babc699 Add Open Collective Link 2020-10-04 15:43:53 -07:00
Mark McDowall da7fec4d35 Regenerate yarn.lock after package updates 2020-10-04 12:22:05 -07:00
Mark McDowall 488e7b1a26 Appeasing the lint gods 2020-10-04 12:16:42 -07:00
Mark McDowall f45b27f507 Import lists in settings overview
Closes #3996
2020-10-04 12:08:07 -07:00
Mark McDowall 796c5e8b6b Fixed: Episode history details tooltip jumping around
Closes #3965
2020-10-04 12:08:07 -07:00
Mark McDowall 89a4249072 New: Add size to episode files in Webhook payload 2020-10-04 12:08:07 -07:00
Mark McDowall 05ffdd07a2 Upgrade react-autosuggest 2020-10-04 12:08:07 -07:00
Mark McDowall 14fee1c086 Upgrade react-google-recaptcha 2020-10-04 12:08:07 -07:00
Mark McDowall 3a7b0cacb8 Upgrade del 2020-10-04 12:08:07 -07:00
Mark McDowall ddd70fd198 Upgrade webpack loaders 2020-10-04 12:08:07 -07:00
Mark McDowall fc231c5ef8 Upgrade stylelint 2020-10-04 12:08:07 -07:00
Mark McDowall 933832fe2c Upgrade react-lazyload 2020-10-04 12:08:07 -07:00
Mark McDowall 4ed1f6b814 Upgrade redux-batched-actions 2020-10-04 12:08:07 -07:00
Mark McDowall 9ed1d27f86 Upgrade esformatter 2020-10-04 12:08:07 -07:00
Mark McDowall 4057a3112d Upgrade filesize 2020-10-04 12:08:07 -07:00
Mark McDowall 0b01b75cac Upgrade eslint, esprint 2020-10-04 12:08:07 -07:00
Mark McDowall 9c635781bd Upgrade react-slider and react-text-truncate 2020-10-04 12:08:05 -07:00
Mark McDowall b6bfeaaba3 Upgrade react-dnd 2020-10-04 12:07:54 -07:00
Mark McDowall 0318a4a5e1 Upgrade webpack and core-js 2020-10-04 12:07:54 -07:00
Mark McDowall 2d985c0c6a Upgrade a bunch of react/redux packages 2020-10-04 12:07:51 -07:00
Mark McDowall 3ef47b0ce3 Upgrade jquery, moment and qs 2020-10-03 12:36:58 -07:00
Mark McDowall 213db3b107 Upgrade fuse.js 2020-10-03 12:25:20 -07:00
Mark McDowall d475ee37c3 Upgrade gulp 2020-10-03 12:14:52 -07:00
Mark McDowall 1d9ed1b56d Upgrade clipboard, lodash, mobile-detect and mousetrap 2020-10-03 12:13:08 -07:00
Mark McDowall e34b6a36d5 Upgrade sentry 2020-10-03 12:12:10 -07:00
Mark McDowall 8468a74ade Upgrade Font Awesome 2020-10-03 12:11:12 -07:00
Mark McDowall 34cbdee510 Upgrade babel 2020-10-03 12:08:34 -07:00
Mark McDowall 924f6ca715 New: Pilot Episode monitoring option
Closes #3768
2020-10-03 11:53:56 -07:00
Taloth Saldono 9eb24cedd6 Fixed stylelint too 2020-10-03 20:34:35 +02:00
Taloth Saldono 8f6016e9ae Fixed lint 2020-10-03 18:45:23 +02:00
Taloth Saldono 95071c9d97 Fixed some mediainfo subtitle codes 2020-10-03 17:11:15 +02:00
Taloth Saldono 7ee7e1be5d Added MultiSelect input control for provider settings 2020-10-03 17:09:38 +02:00
Taloth Saldono 20a6284062 New: Added FileList.io indexer support 2020-10-03 17:09:38 +02:00
Taloth Saldono 5aa92f47b6 Added PrivacyLevel option to FieldDefinition for later usage 2020-10-03 17:09:37 +02:00
Mark McDowall 25baf7bb45 New: Series type and season folder options for import lists
Closes #3982
2020-10-02 17:14:12 -07:00
Mark McDowall f9e045d14c Fixed: Handle obfuscated files using abc.xyz pattern
Closes #3990
2020-10-02 17:14:12 -07:00
Mark McDowall 4dbeb17075 Webhook clearnup/improvements
New: Remove episode file properties from episodes in Webhook payload
New: Add more information to Webhook payload
2020-10-02 17:14:12 -07:00
Mark McDowall 5fb8ac9685 New: Renamed Growl application to Sonarr (breaking) 2020-10-02 17:14:12 -07:00
Mark McDowall dc184601a8 Some cleanup of things marked for removal in v3 2020-10-02 17:14:12 -07:00
bakerboy448 64ddea5473 Fixed: Filter DTS-ES when parsing Release Group
closes #3984
2020-10-01 11:29:54 +02:00
Mark McDowall 021bb2d6d5 Log when scene name is not stored for file 2020-09-29 20:40:48 -07:00
Mark McDowall 644d16d82b Fixed: Indexer being disabled due to download client rejecting it 2020-09-29 20:40:48 -07:00
Mark McDowall a10eb88a95 Fixed: Log path when import fails for series import
Fixes #3970
2020-09-29 20:40:48 -07:00
Taloth Saldono 930742ae2c Fixed enter in modal confirmation dialogs 2020-09-24 11:49:50 +02:00
Taloth Saldono 482e2d5d42 Handle ratelimit api response for newznab caps endpoint on certain newznab indexers that have caps behind the apikey 2020-09-24 11:49:50 +02:00
Taloth Saldono 034ab0378f Fixed: Filter Extras folders when using Series Manual File Import function on series folder
fixes 3971
2020-09-24 11:49:50 +02:00
Mark McDowall 6d911581c3 Fixed: Update modal error 2020-09-16 12:48:17 -07:00
Mark McDowall cd2368f5f3 Fixed: Add list exclusion on delete
Fixes #3963
2020-09-15 22:40:25 -07:00
Mark McDowall 7ed347269f Fixed: Sorting interactive search by quality for unknown series results 2020-09-15 22:18:48 -07:00
Mark McDowall 068d9eef8d Fixed: Spelling in Edit List modal
Closes #3961
2020-09-15 21:37:08 -07:00
Mark McDowall d0c0720578 Fixed: Removing torrents from Vuze
Fixes #3951
2020-09-15 21:35:30 -07:00
Qstick eb0bce8dbf Fixed: Prevent bulk add failure on single validation error for Lists
Fixes #3959
2020-09-15 12:52:42 -07:00
Mark McDowall ae1881a68c Indexer Priority ESLint fixes 2020-09-10 20:02:22 -07:00
Mark McDowall cd97eb3fa6 Fixed language parser tests 2020-09-10 15:45:42 -07:00
Mark McDowall a92665c5cd Fixed tests/null reference for import lists 2020-09-10 15:45:28 -07:00
Mark McDowall b2b1600ebe New: Don't forcibly retest indexers/download clients/connections on save if previously enabled
Closes #1028
2020-09-10 15:05:53 -07:00
Mark McDowall 5a42d2a36d New: Option to search for upgrades when adding new series
Closes #712
2020-09-10 15:05:53 -07:00
Mark McDowall accf8d5c81 Mark completed imports based on history as imported to remove from queue 2020-09-10 15:05:52 -07:00
Mark McDowall b35fd7e507 Fixed: Import series spinning forever when error is returned
Fixes #3944
2020-09-10 15:05:52 -07:00
Dtaggart b2737a3d35 New: Index priority
#320
2020-09-10 15:04:53 -07:00
Qstick 9ed2b4e10b New: Trakt.tv List Options 2020-09-08 11:08:13 -07:00
Qstick 2e7788b072 New: Sync with another Sonarr Instance List Option 2020-09-08 11:08:13 -07:00
Qstick 62f6c855bc New: List Support
Closes #309
2020-09-08 11:08:02 -07:00
Mark McDowall 49eb3ab2cf Don't parse subtitle language as language
Fixed: Remove VOSTFR, NL-Subs and Nordic from language parsing (Use release profiles to reject these subtitles if you wish)

Closes #280
Closes #3497
2020-09-08 10:24:32 -07:00
Mark McDowall 0f792f9eb9 Fixed: Replace : with _ when getting output path from Transmission
Fixes #3880
2020-09-08 00:42:29 -07:00
Mark McDowall ba9b7eb946 Appease stylelint 2020-09-08 00:41:38 -07:00
Mark McDowall d68e2d6e15 Fixed: Series editor error when series is missing size
Fixes #3921
2020-09-07 18:15:51 -07:00
Qstick 0a66e86ccc Fixed: Tooltips overflowing the screen width
Fixes #3924
2020-09-07 18:15:51 -07:00
Mark McDowall 4cadf1d43b Fixed: Error in logs when creating a new root folder 2020-09-07 18:15:50 -07:00
Iulian Onofrei 9ffc291fcf Fixed: Preview rename tip wording 2020-09-04 10:42:03 -07:00
Mark McDowall a42d4ff6c1 Fixed: Update year during refresh 2020-08-31 11:00:32 -07:00
Matthew Kleiman f6af29fc3b Fixed: Typo in Lost Connection modal 2020-08-16 12:55:52 -07:00
Mark McDowall b0a66cc03d Fixed: Series navigation buttons hidden with some titles 2020-08-16 10:43:07 -07:00
Mark McDowall d222387d01 Fixed: Links and already added icons overflowing on add series search results 2020-08-16 10:43:07 -07:00
Mark McDowall e42aad4b2f Fixed: Overflow of absolute episode numbers with warning 2020-08-16 10:43:06 -07:00
Mark McDowall a206a5714e Fixed: Long relative path when selecting episodes in Manual Import hiding buttons
Fixes #3916
2020-08-16 10:43:06 -07:00
Mark McDowall 8272e3ed0f Fix grammar 2020-08-16 10:43:06 -07:00
Dtaggart 9e392977b9 New: Added silent notification option to telegram
Closes #3867
2020-08-16 10:42:14 -07:00
Qstick c77c65c68a Remove Prowlin Dependency 2020-08-16 10:41:26 -07:00
Taloth Saldono 3fe659587f Tweaked test failing around midnight my timezone 2020-08-11 00:26:53 +02:00
Taloth Saldono 6efee036a8 Fixed: Include extension when calculating maximum episode title length when renaming files
Fixed: Option to override max filename length with MAX_NAME environment variable

Closes #3888
2020-08-11 00:09:12 +02:00
Taloth Saldono e6175581bd Fixed: Prevent misinterpreting Season folder as anime release title 2020-08-11 00:09:11 +02:00
Taloth Saldono f3101a1db2 Fixed: Exception when parsing Quality in release title with colon 2020-08-11 00:09:10 +02:00
Taloth Saldono 4a5bca860a Fixed: Parsing anime with title ending in 100 2020-08-11 00:08:30 +02:00
Mark McDowall b60da00028 Fixed: Manual Import adding empty rows after selecting series
Closes #3816
2020-08-02 13:27:14 -07:00
Mark McDowall 13c444bba6 Fixed: Long paths overflowing in series history
Closes #3886
2020-08-02 13:07:12 -07:00
Mark McDowall 9a3669d801 New: Not in Last/Next for date custom filters
Closes #3889
2020-08-02 12:57:07 -07:00
Mark McDowall 18708f30d9 Fixed: Don't use language parsed from episode title during import
Closes #3893
2020-08-02 12:42:48 -07:00
Mark McDowall 5193f01c8c Fixed: Edited series is reset after refresh
Fixes #3892
2020-08-02 12:42:48 -07:00
Mark McDowall 0cc06fcba8 Fixed: Multiple warnings for episode combined into one tooltip
Fixes #3890
2020-08-02 11:33:15 -07:00
Mark McDowall ac75a31641 Fixed: Deleting empty episode folders on upgrade
Fixed #3883
2020-07-26 12:18:46 -07:00
Mark McDowall 57335c6d3a Fixed: Parsing of article title leading to error loading Interactive Search
Fixes #3851
2020-07-26 11:51:21 -07:00
Mark McDowall 3033537236 Fixed: Mark "BAD" Nzbget Downloads as Failed 2020-07-26 11:23:51 -07:00
Mark McDowall 8eeab25468 Fixed: Long titles not finding matches in UI series search 2020-07-26 11:23:00 -07:00
Andrew Champion 73ed5f6ee2 New: Filter episodes by title or number in Manual Import
Closes #3862
2020-07-26 11:16:10 -07:00
Mark McDowall a6b8a34ac9 New: Show updated rejection reasons in manual import after selecting series 2020-07-26 10:50:59 -07:00
Mark McDowall 4f15cd55be Fixed: Don't create empty series folder if delete empty folders is enabled
Fixes #3838
2020-07-26 10:50:59 -07:00
Mark McDowall dffdd3377e Don't process queue item without details 2020-07-26 10:50:59 -07:00
Mark McDowall 05735ad2c3 Fixed: Show more information in UI when testing SAB fails in some cases 2020-07-26 10:50:59 -07:00
Mark McDowall 8fe93eae38 Fixed: Parsing of some absolute episode numbers over 999
Fixes #3841
2020-07-26 10:50:59 -07:00
Mark McDowall 84747792ff New: Improved parsing of season and episode inside square brackets
Closes #3618
2020-07-26 10:50:59 -07:00
hugepants 91b2fe8dcb Fixed: Typo in the Week Column Header example 2020-07-10 09:03:03 -07:00
Ryan 4856d57c0e Fixed: Typo/unclear text in backup retention 2020-07-10 09:02:28 -07:00
Qstick 63ac527a66 Fixed: "Profile" to "Indexer" on Clone Button 2020-07-10 09:01:41 -07:00
Taloth Saldono 87a64cdacb Fixed: TheTVDB metadata images containing html content 2020-06-25 23:40:37 +02:00
Taloth Saldono 25b763a052 Fixed: Failing file copy when running in docker on synology with btrfs 2020-06-22 15:41:53 +02:00
Taloth Saldono 903aba5dee Fixed: Refreshing Plex Server series in high volume systems 2020-06-21 21:32:45 +02:00
Taloth Saldono e8d843c93d Remove stacktrace if hardlink resulted in EXDEV. 2020-06-21 21:26:21 +02:00
Taloth Saldono f56003e288 Fixed: Performance of symbolic link detection and infinite recursion 2020-06-21 21:28:04 +02:00
Taloth Saldono 1509e737c2 Fixed: Added glusterfs to known network drive filesystems so it shows up in System 2020-06-21 21:26:21 +02:00
Taloth Saldono 2c286f7b60 New: Fast copy using reflink on btrfs volumes 2020-06-21 21:26:21 +02:00
Taloth Saldono 0e7b404121 Fixed: Removed hardlink-based transactional file transfer logic (instead relying on explicit copy+delete for cifs) 2020-06-21 21:26:21 +02:00
Taloth Saldono de245e00e3 Fixed: Rejecting another multi-season pack format
closes #3826
2020-06-20 10:10:56 +02:00
Taloth Saldono ce5f9e8930 Fixed: Twitter Connect missing (you'll have to readd it in Connect) 2020-06-17 10:42:55 +02:00
Mark McDowall 5db9f7aa0e Fix ImportFixture test 2020-06-13 17:21:28 -07:00
Mark McDowall 4a9c8c6d74 ImportSeries lint issue 2020-06-13 15:28:48 -07:00
Mark McDowall 680f80a833 Fix root folder unit test 2020-06-13 15:21:03 -07:00
Mark McDowall 0e6238bf6f Fixed: Exception thrown when marking download as complete 2020-06-13 13:11:30 -07:00
Mark McDowall 11cdf13148 New: Ensure all unmapped folders are fetched when importing from a root folder
Closes #3751
2020-06-13 12:15:58 -07:00
Mark McDowall b642c3acfd Fixed: Displayed root folder path getting truncated when adding a series with a long title
Fixes #3812
2020-06-13 11:31:19 -07:00
Taloth Saldono 200e263f1f Prevent deletion of chowngroup we may need it later 2020-06-10 17:41:52 +02:00
Taloth Saldono 2eb1a64d82 lint... again 2020-06-09 22:41:06 +02:00
Mark McDowall f3a14b6081 Fixed: Sorting of queue by series title when unknown items are included 2020-06-09 13:16:09 -07:00
Taloth Saldono 1e98002b8f Lazy Loading fuse-worker and fixed some potential timing issues when it's slow. Also keep last result while typing. 2020-06-09 21:27:07 +02:00
Taloth Saldono 4559eed0ec Fixed maintenance release not showing as such in AppUpdatedModal 2020-06-09 14:16:03 +02:00
Taloth Saldono 6a393ef6a2 Used ReflectionOnly and/or public types where possible to avoid loading related assemblies unnecessarily. 2020-06-09 14:14:58 +02:00
Taloth Saldono 9b8ec78502 jsconfig for a bit of autocompletion and intellisense 2020-06-09 14:14:58 +02:00
Taloth Saldono 224fe32b72 Revised webpack bundling and updated worker loading, turned inline worker on by default. 2020-06-09 14:14:58 +02:00
Taloth Saldono 6b7566fed8 Fixed error in opcode parameter that only shows itself in mono under 6.x 2020-06-08 23:21:22 +02:00
Taloth Saldono 0ef28e5786 Fixup tests 2020-06-08 18:07:44 +02:00
Taloth Saldono 06c7f6034d Fixed: Quality Resolution determination using MediaInfo 2020-06-08 17:24:28 +02:00
Taloth Saldono e66b28fb87 Fixed corrupt Update History due to date-time notation 2020-06-07 23:50:39 +02:00
Taloth Saldono 6a51f081ac Use Newtonsoft in TinyTwitter 2020-06-07 22:48:28 +02:00
Taloth Saldono 5536f9925a Moved Windows-only Permission function to Sonarr.Windows 2020-06-07 22:48:28 +02:00
Taloth Saldono 4f728c3d42 Removed unused dialects from Marr so it compiles with less dependencies. 2020-06-07 22:48:28 +02:00
Taloth Saldono aacc36aee0 Fixed test 2020-06-07 22:48:21 +02:00
Taloth Saldono f9840c66f8 New: Show previously installed version in Updates UI
closes #3759
2020-06-07 21:50:31 +02:00
Arthur Bols 3b579900bb New: Removed chown and simplified chmod options for linux/osx
Closes #3760
Closes #3752
2020-06-07 19:05:25 +02:00
Taloth Saldono c73649b19b Allow inline markdown in the changelog for linking to wiki 2020-06-07 17:42:46 +02:00
Taloth Saldono 396caa52cf New: Replaced launcher on OSX Catalina so that individual permissions can be assigned (note, will ignore permissions previously assigned to sh) 2020-06-07 17:42:46 +02:00
Taloth Saldono f846e0c031 Fixed flaky test. 2020-06-06 22:28:08 +02:00
Taloth Saldono 72b0f640f4 Added Plex url to cleanser 2020-06-06 22:28:08 +02:00
Mark McDowall 430af0401c New: Use release quality source if not in downloaded file and resolution matches 2020-06-06 10:47:00 -07:00
Mark McDowall 0ff08dbe8d Fixed: Error when processing release with files Sonarr is unable to parse 2020-06-06 10:19:59 -07:00
Taloth Saldono 57cca9fcdc Fixed typo in Cleanse IP 2020-06-03 18:33:00 +02:00
Taloth Saldono b3daa280c5 Cleanse remote IP Address from trace log file 2020-06-02 20:58:13 +02:00
Taloth Saldono 449c1caf55 Fixed: Mono not validating cross-signed certficates properly 2020-06-02 20:57:20 +02:00
Taloth Saldono 0c05236bee Support for Runtime Patches via Harmony 2020-06-02 20:57:20 +02:00
Mark McDowall 9f54ff8169 Fixed: Interactive search for anime season even if all episodes are unmonitored
Fixes #3791
2020-06-01 21:33:53 -07:00
Taloth Saldono f2e1b4e435 Log contents on api errors during tests. 2020-06-01 15:01:40 +02:00
Taloth Saldono 1e80361c3a Fixed tests and missing logger initialization 2020-06-01 14:01:09 +02:00
Taloth Saldono 3564be19a8 Fixed typo 2020-06-01 00:26:09 +02:00
Mark McDowall 14c9b6aaf4 Additional logging when trying to complete tracked downloads 2020-05-30 16:40:41 -07:00
Mark McDowall 069fc5cd33 Mass Editor size and options
New: Option to show size in Mass Editor
New: Size on Disk in Mass Editor custom filters

Closes #3273
2020-05-30 13:56:28 -07:00
Mark McDowall 3586d7042b Fixed: Auto-focusing Filter series import during import series 2020-05-30 11:04:13 -07:00
Mark McDowall a32b6276bd Fixed: Deleting row from middle of filter builder leading to error 2020-05-30 10:46:42 -07:00
Mark McDowall b0e31629b5 Fixed: Not removing seeded download if it was manual imported in some cases 2020-05-30 10:18:17 -07:00
Mark McDowall e2644c3847 Fixed manual import possible null series 2020-05-30 10:12:24 -07:00
Mark McDowall 7ea45bb714 Fix some styling issues in Quality Profile and Release Profiles 2020-05-30 10:11:34 -07:00
Mark McDowall f524fcd3e4 Fixed: Skip missing episode title check if file is already in series folder 2020-05-30 10:09:46 -07:00
Mark McDowall 6c418302f8 Fixed: Episode file renamed event stored language properly
Closes #3783
2020-05-27 23:52:37 -07:00
Mark McDowall b28d329654 Fixed: Size on disk with seasons over 100
Fixes #3774
2020-05-24 23:39:57 -07:00
Mark McDowall ebe2ad1520 New: Show size on disk for each season
Closes #3432
2020-05-24 14:38:37 -07:00
Mark McDowall 41dfb677e7 Fixed: Rejections custom filter for Interactive Search (now Rejections Count) 2020-05-24 14:02:30 -07:00
Mark McDowall c646bef369 Calendar item/episode status fixes
New: Calendar shows icon when download is complete and not yet imported
New: Episode status shows pending import and importing icon
2020-05-24 13:32:33 -07:00
Mark McDowall 910de6d94a Queue status/timeleft improvements
New: Queue status icon is purple when download is waiting to import or importing
Fixed: Timeleft on Queue won't show when completed
Closes #3743
2020-05-24 13:30:33 -07:00
Mark McDowall 5951992bd5 Fixed: Preferred words remove button in Firefox
Fixes #3710
2020-05-24 12:06:35 -07:00
Mark McDowall cb9d78064a Fixed: Width of episode column with warning
Closes #3733
2020-05-24 11:39:50 -07:00
Mark McDowall fd608fd411 New: Don't close manual import when clicking outside the modal
Closes #3761
2020-05-24 10:38:30 -07:00
Mark McDowall d3bd90e4b9 Fixed: Manual import for unknown series items will properly mark as imported 2020-05-24 10:11:10 -07:00
Mark McDowall 4988655568 Store language with deleted episode history 2020-05-24 10:10:24 -07:00
ildoc 098db08ede updated readme 2020-05-21 10:58:35 +02:00
Skyler Mäntysaari 93e3e92bba New: SendGrid Notifications
Closes #3341
2020-05-20 11:22:05 -07:00
Taloth Saldono bdfdd28d6a Fixed: Added .org to website url filtering in parser 2020-05-19 23:01:21 +02:00
Taloth Saldono a75e10c4c9 Fixed: Parsing anime dual language titles
closes #3756
2020-05-18 01:33:03 +02:00
Taloth Saldono 5251db7224 Fixed recursion issue when emptying recycle bin 2020-05-16 19:22:47 +02:00
Taloth Saldono 4d1a4d4241 Updated kodi url 2020-05-13 21:29:21 +02:00
Taloth Saldono d3a22459ac Fixed: Performance issue when scanning large root folder 2020-05-13 21:27:39 +02:00
Qstick 4f7e00bdc4 Fixed: Don't lock command queue if updating is disabled 2020-05-13 19:33:14 +02:00
Mark McDowall 1199ae4e4f New: Use filename for preferred word score if it's higher than scene name 2020-05-09 16:45:42 -07:00
Mark McDowall 36088ef49d Fixed: Tag details list series in alphabetical order 2020-05-09 16:45:42 -07:00
Taloth Saldono 7ffb2eb440 Replaced matchAll usage since it's not available on all browsers 2020-05-06 14:33:14 +02:00
Taloth Saldono 0716d0931a Added UserAgent to api request trace log 2020-05-05 20:14:07 +02:00
Taloth Saldono 66ee28d0a9 Lock CommandQueueManager.PushMany too 2020-05-03 18:48:20 +02:00
Taloth Saldono 1487f54749 Skip unknown/removed commands still queued in the database 2020-05-03 17:29:46 +02:00
Taloth Saldono 013c46d266 Fixed timing issue allowing multiple instances of the same command to be queued 2020-05-03 17:29:46 +02:00
Taloth Saldono c8d2fcb223 Added UpdateMechanismMessage to allow package maintainers provide custom message 2020-05-03 17:29:46 +02:00
Taloth Saldono 5288b61378 Inline markdown-style link for PackageAuthor 2020-05-03 17:28:38 +02:00
Taloth Saldono a2679f64ee Parse WEB at the end of release title. 2020-05-03 17:00:11 +02:00
Mark McDowall 5d9dfee3c0 New: Add DownloadClient and DownloadId to Webhook notifications 2020-05-02 21:02:11 -07:00
Mark McDowall 98f9323b42 Fixed: Root folder custom filter in Mass Editor 2020-05-02 21:02:11 -07:00
Taloth Saldono f282ae8aae Prevent exception parsing unicode digits in absolute numbers. 2020-05-02 14:21:58 +02:00
Mark McDowall 0b1e99991e Fixed: Imports triggered through API not being marked as imported/removed from client
Fixes #3717
2020-04-29 00:08:01 -07:00
Mark McDowall 75be036a87 Fixed: Imported downloads not being removed when seeding goals are met
Fixes #3693
2020-04-28 21:37:26 -07:00
Taloth Saldono 23dc7794f1 Fixed: Generating Kodi episode metadata files when scanning series folder 2020-04-28 23:34:52 +02:00
Taloth Saldono b8e2f3d716 Clarify that Post-Import Category torrents are not monitored by Sonarr.
Configure Deluge to remove such torrents when seeding criteria has been met.

closes #3659
2020-04-28 22:10:30 +02:00
Taloth Saldono 686a14cdff Log Real IP on Authentication failure in case of a reverse proxy
closes #3711
2020-04-27 23:58:35 +02:00
Taloth Saldono b4405b0600 Fixed: Parsing release group from file rather than folder in case of season packs 2020-04-27 19:09:49 +02:00
Qstick d4bcf28d08 Add missing "does" to DifferentQualitySpec message 2020-04-26 13:28:38 -07:00
rg9400 4bacc35605 Fixed: Indicate unchecking Replace Illegal Characters will remove them 2020-04-26 12:54:18 -07:00
Mark McDowall 417340c2c6 Fixed: Manual imports of multi-episode files being treated as fully imported 2020-04-25 14:13:29 -07:00
Mark McDowall 79d8a9d44b Fixed: Episodes removed from queue re-appearing on refresh
Fixes #3697
2020-04-25 14:12:38 -07:00
Mark McDowall 68440bba4d Fixed: Rejection message for quality mismatch 2020-04-25 14:09:57 -07:00
Mark McDowall 0719c83da4 Fixed: Parsing of some anime batch releases
Fixes #3698
2020-04-25 13:33:30 -07:00
Mark McDowall 5a7dec34cc Fixed: Rotating mobile device when modal is open won't reset modal
Closes #3333
2020-04-25 11:59:29 -07:00
Mark McDowall 9d766cfed5 Fixed: Remove seeded downloads if they've finished seeding after import
Fixes #3693
2020-04-25 11:49:18 -07:00
Mark McDowall 1498f4e361 Revert: Prevent an edge case where a download is not marked as complete 2020-04-21 10:27:27 -07:00
Taloth Saldono 05dd17aacb Added support for title query parameter to newznab/torznab, receiving raw series title 2020-04-21 18:44:08 +02:00
Taloth Saldono 200aee52f7 New: Searching for episodes with season level scene mapping now possible instead of only via RssSync (Newznab/Torznab only) 2020-04-21 18:44:08 +02:00
Mark McDowall d6dd13a6be Prevent an edge case where a download is not marked as complete 2020-04-20 18:09:24 -07:00
Mark McDowall be3b3df903 Don't reject for having the same file size
Fixed: Remove same file size rejection during import
Fixed: Reject imports for non-season pack files if quality of file doesn't match grabbed quality
Closes #3691
2020-04-20 17:58:59 -07:00
Mark McDowall f2a56b29d9 Fixed: Windows installer won't create shortcut if unchecked 2020-04-20 17:57:09 -07:00
Mark McDowall 27d98868b8 Fixed: Can ignore queue items with unknown episodes 2020-04-20 17:56:36 -07:00
Mark McDowall 7f28ab895a Small change to creating an itemMap during item update 2020-04-20 17:56:22 -07:00
Mark McDowall 97ec184754 Fixed: Import series failing to add items to process 2020-04-20 09:35:35 -07:00
Mark McDowall 42343d5283 Add class to allow for overriding scrollbar width 2020-04-18 20:21:46 -07:00
Mark McDowall 479baf06a7 Fixed: Removed items in queue still showing until refresh 2020-04-18 20:21:29 -07:00
Mark McDowall 7f7d196e44 Fixed: Don't process downloads removed from the client
Fixes #3557
2020-04-18 20:21:29 -07:00
Mark McDowall c862fd9ff6 Don't re-trigger completed event 2020-04-18 20:21:29 -07:00
Mark McDowall 770b89c2b3 Track fully imported downloads in separate history table
New: Improved detection of already imported downloads
Closes #3554
2020-04-18 20:21:29 -07:00
Taloth Saldono 576275b6da Another mono 6.x workaround to use rename rather than expensive copy 2020-04-18 11:08:47 +02:00
Taloth Saldono 776191b3bd Improved error message when nzb download contains an newznab error instead 2020-04-17 00:14:05 +02:00
Mark McDowall d369d85699 Fixed: Ended overlay on series posters 2020-04-15 09:14:05 -07:00
Mark McDowall 552fac0466 More strict ExcludedSubFoldersRegex 2020-04-15 09:13:26 -07:00
Mark McDowall a348d98dd9 Fixed: Filter direct excluded subfolders of the selected directory during manual import 2020-04-13 21:30:40 -07:00
Mark McDowall ccdfdd1049 Fix checkingUP qbit status unit test 2020-04-12 12:31:17 -07:00
Mark McDowall f0ca636654 Fixed sort in HistoryRepository 2020-04-09 22:58:42 -07:00
Mark McDowall b5e734b9e5 Fixed: Ignore .@__thumb folders 2020-04-09 22:58:24 -07:00
Mark McDowall e1639d35a2 Fixed: Series toolbar button collapsing 2020-04-09 22:58:08 -07:00
Mark McDowall 9b99ad27cd Fixed: Tooltip for existing series on add new series item 2020-04-09 22:57:39 -07:00
Mark McDowall bba57bb434 Fixed: Queue not always clearing checked items when updated 2020-04-03 08:44:58 -07:00
Mark McDowall 8c24cd9864 Fixed: Strip AlteZachen from release group name 2020-04-02 17:27:16 -07:00
Mark McDowall 91de7ff11c Fixed: Don't try to render quality when it's null
Fixes #3649
2020-04-02 17:24:18 -07:00
Mark McDowall 9702d2e5ad Fixed: Treated checkingUP status from Qbit as queued in case it fails to validate 2020-04-02 17:23:25 -07:00
Anthony Borushko 638066db03 Fixed: Tag inputs respect non-QWERTY layouts 2020-03-31 09:57:27 -07:00
Jef LeCompte 1b3839ac0d Updated README 2020-03-31 09:21:52 -07:00
Mark McDowall 219494ea9d Fixed: Preferred word can't have a term that is empty or only spaces 2020-03-29 14:54:14 -07:00
Mark McDowall 642f75761f GetBestRootFolderPathFixture OS Agnostic paths 2020-03-28 12:43:05 -07:00
Mark McDowall ed28f94f02 Improve root folder health check 2020-03-27 15:24:20 -07:00
Mark McDowall 618c611a59 Fixed: Series Network filter breaking if network was not available 2020-03-22 22:50:18 -07:00
Mark McDowall 00821b7ad6 New: Parse multi-part episodes using date
Closes #381
2020-03-22 22:44:14 -07:00
Mark McDowall 84b9488cfb Fix broken test 2020-03-22 10:45:54 -07:00
Taloth Saldono 37ad801065 Fixed: Audio Channel Information missing in MediaInfo for certain mkv files with DTS audio 2020-03-22 12:02:51 +01:00
Taloth Saldono 4219cdb364 Fixed: RemotePoster on v3 api provides local url rather than thetvdb url 2020-03-22 12:02:51 +01:00
Mark McDowall e23a879669 Fixed: Cutoff unmet searches rejecting releases incorrectly 2020-03-20 17:34:18 -07:00
Mark McDowall 4ddf4a22a3 Fixed: Enter on Delete profile confirmation deleting all unused profiles 2020-03-20 08:37:35 -07:00
Mark McDowall 72afb28c30 Revert failing parsing tests 2020-03-19 11:11:37 -07:00
Mark McDowall eb51a42f60 Fixed: Sorting queue by episode properties when not all items have an episode 2020-03-19 10:11:07 -07:00
Mark McDowall bc01384cc7 Actually fixed error rending queue row when quality is missing 2020-03-19 10:10:36 -07:00
Mark McDowall 00c922875f Fixed: Multiple series found during manual import prevents manual importing from folder
Fixes #3512
2020-03-18 19:30:02 -07:00
Mark McDowall 8c93d73b42 Fixed: Error rending queue row when quality is missing
Fixes #3614
2020-03-18 19:09:07 -07:00
Mark McDowall 3b6d60e904 New: RSS Sync button on Calendar
Closes #3326
2020-03-18 19:08:58 -07:00
Mark McDowall a965b8e7b2 New: Filter episodes in API v3 by episode file ID
Closes #3589
2020-03-18 19:08:51 -07:00
Taloth Saldono 25abf52b3f Added update check early in startup if the package requested a post-install update check 2020-03-16 19:18:41 +01:00
Taloth Saldono 19764014be Increased mono dependency from 5.4 to 5.18 for debian
# Conflicts:
#	docker/tests/run-all.sh
2020-03-16 19:18:41 +01:00
Taloth Saldono c91a5c80d3 Added .NET Framework 4.7.2 requirement check to windows installer 2020-03-16 19:18:41 +01:00
Taloth Saldono e7b88c313d Fixed: Workaround for mono 6.x file copy/move issues 2020-03-16 19:18:41 +01:00
Taloth Saldono 9ac0864b61 Fixed scrolling issue in Root Path selector dropdown on mobile 2020-03-14 22:08:51 +01:00
Taloth Saldono fcdd0f21c7 Fixed: Wrongly parsing language in series title for season packs (episodes were already handled) 2020-03-13 20:18:37 +01:00
Taloth Saldono 5497b68a98 Fixed: Don't auto-search newly added episodes on tvdb that aired more than 2 weeks ago
Fixed: Don't monitor newly added old episodes on tvdb if series was previously empty
2020-03-13 00:33:35 +01:00
Mark McDowall 50886ac928 More webook series properties
New: IMDB and TvMaze IDs in Webhooks
New: Series type in Webhooks
2020-03-10 23:58:34 -07:00
Mark McDowall e2ff089232 Fixed: Metadata files not being created after rescan 2020-03-10 23:57:41 -07:00
Mark McDowall ae7f8926f8 New: Ignore #recycle folders (Synology Recycle bin folder) 2020-03-10 23:56:09 -07:00
Mark McDowall 0bbc4e8c1b Fixed: Remove website post fix before parsing 2020-03-08 11:14:21 -07:00
Mark McDowall 295fdad750 Fixed: Broken tasks getting stuck in queue 2020-03-05 17:57:20 -08:00
Mark McDowall 63e01aff8c Fixed: Not importing upgrade for preferred language
Fixes #3605
2020-03-05 17:57:20 -08:00
unknown e05ceb226c Update help text in Connections from Download to Import 2020-03-05 09:14:46 -08:00
Mark McDowall 1c699841c1 Fixed: Handle qBit ForcedDL State
Closes #3604
2020-03-05 09:13:44 -08:00
Mark McDowall 385c7fb0ce Fixed: Error occurred while executing task ProcessMonitoredDownloads 2020-03-03 18:10:29 -08:00
Mark McDowall 15d84046db Fixed: Inaccessible path leading to import process being aborted before processing all items
Fixes #3598
2020-03-03 16:54:12 -08:00
Mark McDowall 3ad396a9c2 Fixed: Re-add background to apple-touch-icon
This reverts commit afcfaace19.
2020-03-03 08:58:53 -08:00
Mark McDowall 77f886ceef OverlayScroller still needs to be used in PageContentBody 2020-03-02 14:06:36 -08:00
Taloth Saldono 8adb788205 Linting 2020-03-02 22:49:46 +01:00
Taloth Saldono d731317c81 Fixed comment typo in webpack config 2020-03-02 22:48:44 +01:00
Mark McDowall a824ce691b Fixed: Preferred is not an indexer field
Fixes #3595
2020-03-02 08:29:46 -08:00
Mark McDowall 506023b0f3 Scrolling and hotkey improvements
New: Use Esc/Enter for cancel/accept in confirmation modals
Fixed: Modals focused when opened
Fixed: Scrolling with keyboard unless focus is shifted out of scrollable area
Closes #3291
2020-03-01 21:03:59 -08:00
Taloth Saldono 52e5d4d0f1 Linting error 2020-03-01 22:26:49 +01:00
Taloth Saldono 00edffc0f4 Fixed random typo 2020-03-01 22:16:00 +01:00
Taloth Saldono 92f1f3e73a New: Added mediainfo formatting for E-AC3 Atmos 2020-03-01 22:16:00 +01:00
Taloth Saldono 1d339ad4f1 Belated removal of bitmetv and cleanup of usenet-crawler. 2020-03-01 22:16:00 +01:00
Jacob 99728a604d New: Added option to filter Release Profile to a specific indexer 2020-03-01 22:15:59 +01:00
netpok c07a67ae3c New: Added aired-before field to kodi metadata to sort specials
closes #3073
2020-03-01 22:15:58 +01:00
Mark McDowall be11789a86 New: Clone indexer button
Closes #3546
2020-03-01 12:56:58 -08:00
Mark McDowall b8ce274fa5 Manual Import Sorting
Fixed: Manual Import sorting by quality
New: Manual Import sort by size
Closes #3334
2020-03-01 11:51:27 -08:00
Mark McDowall d7967e3e1b Fix hasDifferentItems 2020-02-28 11:15:01 -08:00
ta264 746da69070 Fixed: UI slowdowns while tasks are running
Fixes #3480
2020-02-26 17:57:21 -08:00
ta264 b05b7ec4ad Trigger fewer signalr broadcasts 2020-02-26 17:57:21 -08:00
ta264 9abdaca079 New: Faster processing of special releases 2020-02-26 17:57:21 -08:00
ta264 5a79b8502e New: Improved Series list performance 2020-02-26 17:57:21 -08:00
ta264 466d4fba9e Don't rerender all cells each scroll 2020-02-26 17:57:21 -08:00
ta264 108f6fe393 Better selection of jump bar items
Show first, last and most common items
2020-02-26 17:57:21 -08:00
ta264 792896c46b New: Faster searching of existing series 2020-02-26 17:57:21 -08:00
ta264 43d04cd54e Faster series selector 2020-02-26 17:57:21 -08:00
ta264 283f905d79 Don't mutate state when sorting items 2020-02-26 17:57:21 -08:00
ta264 dd8d1b673e Faster hasDifferentItems and specialized OrOrder version 2020-02-26 17:57:21 -08:00
ta264 9ef64660ce Option for production build with profiling 2020-02-26 17:57:21 -08:00
Mark McDowall 88b1c8fc3e Fixed: Moving series folders in subfolders of the root folder when destination subfolder was missing 2020-02-26 17:45:13 -08:00
Mark McDowall bcc8b655f7 Fixed: Re-processing imported download causing task to fail
Fixes #3501
2020-02-19 19:09:55 -08:00
Mark McDowall 438d9eb717 Fixed: Prompt to restart after resetting API key
Fixes #3580
2020-02-19 18:18:47 -08:00
Mark McDowall 2c0a0175ef Fixed: Sorting by episode count
Fixes #3531
2020-02-19 18:03:58 -08:00
Mark McDowall e51f1b5e16 Fixed: Parsing of 360p releases
Fixes #3519
2020-02-19 17:38:17 -08:00
Mark McDowall 544108df37 Fixed: Import series when no results are returned from for a folder 2020-02-19 17:21:55 -08:00
beyondmeat a23639e62e Fixed: Empty list message for System: Events 2020-02-19 17:19:18 -08:00
Taloth Saldono cde5a6d1a4 Fixed stylelint errors 2020-02-11 21:41:16 +01:00
Taloth Saldono b601c8bcfe New: Added advanced subtitle/audio language filter to {MediaInfo ..}
closes #3367
2020-02-11 21:13:13 +01:00
Taloth Saldono 023c8260f2 Added Norwegian Bokmal alias 2020-02-11 20:14:10 +01:00
Taloth Saldono 51e2e084af Added try-catch for DateTime.TryParse edgecase
closes #3518
2020-02-09 17:05:45 +01:00
Taloth Saldono fc5dd8137f Support for VS2019 build environment 2020-02-07 21:16:53 +01:00
Taloth Saldono 268fc46ef7 Fixed: Representation of episode start time when not starting at the full hour in am/pm notation 2020-02-01 22:50:16 +01:00
Mark McDowall 010c65af9c Fixed: Don't monitor new seasons if series is not monitored
Fixes #3547
2020-02-01 13:03:11 -08:00
Mark McDowall db42256dc3 Improve default series type handling (for daily series)
New: Display default series type when adding new/existing series when available
Fixed: Don't override series type on series refresh
2020-01-31 17:51:30 -08:00
Mark McDowall e9b537b6e6 Fixed: Rejecting import for a release that was grabbed again 2020-01-31 17:51:30 -08:00
Mark McDowall c615ef476a Fixed: Typo in unmonitored series tooltip
Fixes #3538
2020-01-31 17:51:30 -08:00
Mark McDowall b93e8da235 Fixed: Force grabbing selected delayed items in queue 2020-01-31 17:51:30 -08:00
Pika 74a0a57468 BTN: Fix name 2020-01-19 18:40:06 +01:00
Петр Шургалин b19d665817 Fixed: RestClient does not use global proxy settings 2020-01-19 16:41:31 +01:00
Taloth Saldono 10dc884fa8 Fixed: Posters not always showing when searching for new shows 2020-01-12 22:27:56 +01:00
Taloth Saldono d8446c2d5a New: Added tvdb Upcoming series status 2020-01-12 22:27:55 +01:00
Mark McDowall d3cd46bb51 New: Limit recent folders in Manual import to 10 and descending order
Closes #3491
2020-01-07 17:36:57 -08:00
Mark McDowall bc0da03caf Fix proptype warning for id of EnhancedSelectInputOption 2020-01-07 17:11:45 -08:00
Mark McDowall c0a356261b New: Added help text for qualities in groups
Closes #3495
2020-01-07 17:00:12 -08:00
Mark McDowall fa4060b7fe Fixed: Previously imported downloads reappear in queue
Fixes #3496
2020-01-07 16:55:13 -08:00
Taloth Saldono 29117fc222 Fixed missing interface for the CheckForFinishedDownloadCommand backward compat handling
fixes #3492
2020-01-05 14:37:52 +01:00
julakali 24ba5e5bda Use msbuild instead of the deprecated xbuild 2020-01-04 17:54:25 -08:00
gl3nni3 2d94857369 Fixed: Replace duplicate slashes from file names when importing
Fixes #3470
2020-01-04 17:52:45 -08:00
Mark McDowall c6ea7d7e63 Option to ignore items when removing from queue instead of removing from client
New: Option to not remove item from download client when removing from queue

Closes #1710
2020-01-04 17:49:39 -08:00
Mark McDowall 3916495329 Monitor and Process downloads separately
New: Queue remains up to date while importing file from remote file system
Fixed: Failed downloads still in queue won't result in failed search

Closes #668
Closes #907
Fixes #2973
2020-01-04 17:49:39 -08:00
Mark McDowall 4e965e59a9 Fixed: Parsing of Extended Multi-episode format file names 2019-12-30 09:27:24 -08:00
Taloth Saldono 0acb3aa32b Fixed: Regression in Multi-Episode format parser in previous release
fixes #3481
2019-12-30 13:06:25 +01:00
Mark McDowall 9189d8bf4d Fixed: Parsing of poorly named double episode releases
Fixes #3439
2019-12-29 02:32:30 -08:00
Mark McDowall ec0c96bde4 Remove website prefixes with dashes in URL 2019-12-29 02:32:30 -08:00
Mark McDowall 562c8c4afe Fixed: Improved quality parsing from truncated release names
Closes #3345
2019-12-29 02:32:30 -08:00
Mark McDowall fd6d4493c4 Fixed: Details for episode history flashing on mobile devices 2019-12-29 02:32:30 -08:00
Jayden 1a2419e096 Fix typo in remove queue item modal 2019-12-29 01:49:49 -08:00
Taloth Saldono b86cfd49ef Fixed redirect test 2019-12-24 11:52:26 +01:00
Taloth Saldono d421ff9736 Increased max redirects from 3 to 5
closes #3449
2019-12-24 11:27:58 +01:00
Taloth Saldono 92c61701f2 Fixed: Imports of multi-episode files did not trigger the download completion event and thus apply the PostImport category for supported download clients
fixes #3403
2019-12-24 11:27:58 +01:00
Wu Haotian d45d9e356c New: Improve Chinese language detection 2019-12-24 11:26:30 +01:00
Fossil 098f9a2675 Remove PFMonkey.com from Presets
Indexer closed in 2018
2019-12-24 11:06:58 +01:00
Fossil 0347dab82e Add new X265 category to NZB Finder 2019-12-24 11:06:58 +01:00
Taloth Saldono 9aa89a0df9 Fixed: Inserting literal { or } in renaming format using {{ or }}
fixes #3434
2019-12-24 10:58:47 +01:00
Taloth Saldono 556bd11725 Disable pooling rather than clearing it 2019-12-18 23:09:10 +01:00
Taloth Saldono 07f5c21a07 Clear the connection pool in the backdoor migration to prevent occasional conflicts with following migrations 2019-12-18 20:39:31 +01:00
Taloth Saldono 93b20960b8 Fixed regex in Backup list 2019-12-08 11:00:56 +01:00
Taloth Saldono 3cbdd6bfd3 Fixed: Rare scenario where early Radarr version messes up Sonarr database 2019-12-07 21:56:44 +01:00
Mark McDowall c3c38880e6 Fixed: Test All not clearing health error
Fixes #3409
2019-12-06 17:42:40 -08:00
Mark McDowall 415bbf5b3b Fixed: Update deleted series health after refreshing series 2019-12-06 17:42:40 -08:00
Taloth Saldono 186cb02748 Added NUnit3TestAdapter nuget so it can work without VS extension 2019-12-06 19:49:27 +01:00
Taloth Saldono 4aaccb909f Cleanse getnzb url 2019-12-06 19:49:27 +01:00
Jef LeCompte 2daf7dd01a Fixed: Handle qBittorrent "moving" state 2019-12-04 09:02:39 -08:00
Taloth Saldono ab9ed73e55 New: Added version number to backup filename 2019-11-28 21:23:48 +01:00
Mark McDowall a4a33fe167 Fixed: Letter jump bar on series list not working correctly with banners 2019-11-26 17:41:40 -08:00
Mark McDowall e6fbd10031 Improved some log messages 2019-11-26 17:41:40 -08:00
Mark McDowall 9868d96fec Fixed: Delete files from Series Mass Editor not actually deleting files 2019-11-26 17:41:40 -08:00
Mark McDowall 0d1c2ac40c Fixed react error when displaying a series search result for an existing series 2019-11-26 17:41:40 -08:00
Mark McDowall a6d0dddaf7 Fixed: Trying to add a series when root folders hadn't populated
Fixed #3387
2019-11-26 17:41:40 -08:00
Taloth Saldono 06d57e8f32 Fixed: Refresh Deleted & Upcoming shows as frequently as Continuing ones 2019-11-24 23:47:22 +01:00
Taloth Saldono 70a40edc5d Tiny fix in test, left-over from my on-windows test. 2019-11-19 21:55:48 +01:00
Taloth Saldono 95d64208d0 Fixed: File imports on cloud drives slow due to transaction logic 2019-11-19 17:35:19 +01:00
Taloth Saldono e28b2e8328 Fixed: Corrupt image files when downloading from redirecting Url
closes #3401
2019-11-15 18:39:31 +01:00
Mark McDowall 4123745a6b Fixed: Interactive search results failing to show when processing failed
Closes #3377
2019-11-08 09:12:42 -08:00
Mark McDowall 70bb4d71e6 Fixed: Parsing of poor standard file names using dashes for separators 2019-11-03 09:26:39 -08:00
Mark McDowall dd314e1741 Fixed: Deletion of empty episode sub folders when an episode file is deleted 2019-11-03 09:04:39 -08:00
Mark McDowall 3cbb489ac6 Default id for MenuContent 2019-10-30 10:25:55 -07:00
Mark McDowall 101df4cbf1 Ensure Season Folder Format will correctly replace illegal characters 2019-10-30 09:41:40 -07:00
Mark McDowall 42263a0ec0 Fixed: Set Default Sort Key for Blacklist Endpoint 2019-10-30 09:41:13 -07:00
Mark McDowall d402f7514e Fixed: Manual Import failing to show files when processing fails 2019-10-28 12:50:09 -07:00
Mark McDowall 84e6674e23 Fixed: Actually run Recycle Bin cleanup 2019-10-28 12:50:09 -07:00
Mark McDowall afcfaace19 Fixed: Remove background from apple-touch-icon 2019-10-28 12:50:09 -07:00
Mark McDowall 5a3bd8cfe5 Fixed: Set permissions on extra and subtitle files 2019-10-28 12:50:09 -07:00
Mark McDowall f0c90a4744 Fixed: Log matching scene mapping for title 2019-10-28 12:50:09 -07:00
Mark McDowall 3baed292e1 Fixed: Allow Interactive Season Search when all episodes are unmonitored 2019-10-28 12:50:09 -07:00
Mark McDowall d41a2cad73 Fixed: Include releases that failed to parse in search results 2019-10-28 12:50:09 -07:00
Mark McDowall ffccc3be38 Fixed: Kodi episode metadata missing uniqueid
Fixes #3308
2019-10-28 12:50:09 -07:00
Mark McDowall ef1e8d7ef3 Fixed: Don't parse packs missing season number 2019-10-28 12:50:09 -07:00
Taloth Saldono 7af891216d Another failing test 2019-10-20 22:11:10 +02:00
Taloth Saldono aa80500b35 Missing test on EventDrivenHealthCheck 2019-10-20 21:51:12 +02:00
Taloth Saldono b72fbe06f7 Adding missing series Deleted UI elements 2019-10-20 21:38:15 +02:00
Taloth Saldono 41a63a5418 Fixed test failing due to rng 2019-10-20 20:58:12 +02:00
Taloth Saldono e8ce7898c1 use TestContext.Progress rather than Console.WriteLine for NzbDroneRunner output 2019-10-20 20:22:28 +02:00
Taloth Saldono 687a45c564 Added docker to run tests on various mono versions 2019-10-20 20:21:22 +02:00
ta264 3ac3dd3ca5 New: Swap to ImageSharp library for resizing posters 2019-10-20 20:21:22 +02:00
Qstick f2efebf7d9 New: Option to send notification when a Health Check warning occurs
closes #3253
2019-10-19 17:32:08 +02:00
ta264 7b68ce49d5 Fix .gitattributes and normalize to LF in repository
Existing `*text eol=lf` is malformed (no space after *) so does
nothing.

CONTRIBUTING.md states 'We checkout Windows and commit *nix'.  The
correct way to achieve this is `* text=auto`. `* text eol=lf` would
force line endings to LF on checkout.

See:
https://git-scm.com/docs/gitattributes#Documentation/gitattributes.txt-Settostringvaluelf
2019-10-19 17:16:45 +02:00
Taloth Saldono 8a2a41fab0 New: Added health check warning to emphasis when a series was deleted instead of only logging it in System Events 2019-10-19 17:15:38 +02:00
Taloth Saldono ceaaec5378 New: Parsing Saison season packs as alternative to Season
Just because we're in a good mood
2019-10-18 21:00:51 +02:00
sirloinofbeef e49a3e7206 Updated XBMC notification strings to Kodi 2019-09-17 11:50:44 -07:00
Taloth Saldono dc7986dbad Fixed regression in container registration. Additional logging in case of integration test startup failures 2019-09-13 17:11:20 +02:00
Taloth Saldono 2dfba130f5 Split up _tests into windows and linux 2019-09-13 12:29:31 +02:00
Taloth Saldono 155c7c409b Moved Platform version determination to static 2019-09-13 12:26:27 +02:00
Taloth Saldono aacb8970f8 Fixed several failing/flaky mono unit tests 2019-09-13 11:41:18 +02:00
ta264 be66a0520d Fix integration tests on linux with debug build 2019-09-12 18:39:07 +02:00
Rhys Braunschweig 3fa3c45794 Add digits to Deluge's category validator 2019-09-09 22:59:50 +02:00
ta264 0f6da1873e Update unity 2019-09-09 22:59:01 +02:00
Taloth Saldono 1564208e83 Fixed tests 2019-09-07 15:07:06 +02:00
Taloth Saldono e724e8db60 Fixed: Copy linux permission mask when moving folder to recycle bin folder
fixes #3161
2019-09-07 12:13:22 +02:00
Taloth Saldono 5a092a83cd Fixed: Disregard Real when user disabled proper preference 2019-09-07 12:12:57 +02:00
Taloth Saldono ffefe5e8aa And a bunch of video codecs. Also fixed the dual-video channel issue. 2019-09-05 00:32:18 +02:00
Taloth Saldono 631fdd8a26 New: Additional Atmos detection in MediaInfo
ref Radarr/Radarr#3712
2019-09-04 23:26:17 +02:00
Taloth Saldono 53d7ef4014 Fixed third-party clients calling api without Accept header 2019-09-01 15:58:01 +02:00
Taloth Saldono 5c3ac79043 Removed obsolete code. 2019-09-01 11:28:07 +02:00
ta264 90fb1646e0 Updated Nancy to 2.0 2019-09-01 11:20:08 +02:00
ta264 54604e45e0 Emacs gitignore 2019-08-31 22:23:39 +02:00
Taloth Saldono 9ed0f9eee8 Fixed DownloadFile when file already exists 2019-08-31 21:35:01 +02:00
Taloth Saldono b764c44318 Fixed tests 2019-08-31 12:25:13 +02:00
Taloth Saldono adbd519061 noreferrer for images to allow images to be loaded from tvdb 2019-08-30 23:47:18 +02:00
Taloth Saldono b0415299ca Fixed: Download mediacover using configured proxy.
closes #3283
2019-08-30 23:36:30 +02:00
Taloth Saldono e96d05149c Added missing SentryEnabled check 2019-08-30 20:40:35 +02:00
Taloth Saldono 354ddcfee5 Fixed: Removed .Net update notice on Windows LTSB 2015 2019-08-30 20:39:54 +02:00
Taloth Saldono 6d232778e2 Fixed: Root Folder display when free diskspace cannot be determined (FreeBSD)
closes #3275
2019-08-27 23:48:34 +02:00
Taloth Saldono 95ee7daf21 New: Added Auth-* log entries for fail2ban purposes
closes #2760
2019-08-27 23:29:16 +02:00
Taloth Saldono 2238ac5d17 Fixed: Added missing ca-certificates-mono dependency to debian package
closes #3257
2019-08-26 23:07:15 +02:00
Taloth Saldono c209c1c034 Typo 2019-08-26 22:35:21 +02:00
Taloth Saldono b1eec16333 Updated way Sentry gets configured and enabled. 2019-08-26 22:35:21 +02:00
Taloth Saldono e126c45fb3 Added BuildInfo.AppName to centralize 'Sonarr' 2019-08-26 22:35:21 +02:00
Taloth Saldono c89ff93be4 Revised webpack bundling 2019-08-26 22:33:19 +02:00
Taloth Saldono c82c27a5c5 Added active detection for updatecheck so we know which os/runtime versions don't need to be supported anymore. 2019-08-26 22:33:19 +02:00
Taloth Saldono b3e84f407a New: Removed libcurl http fallback since mono 5.16+ doesn't need it. Also bumped minimum mono version check to 5.16 (5.20 is the best choice atm) 2019-08-26 22:33:19 +02:00
Taloth Saldono 72902c8984 Test framework version 2019-08-24 01:39:16 +02:00
Taloth Saldono 2c47c5eb99 Fixed: Missing debian package dependency and made them optional. 2019-08-24 01:23:04 +02:00
Taloth Saldono 398129f3e1 Cleanup obsolete files 2019-08-23 21:20:54 +02:00
Taloth Saldono d74ab12d9e Flaky CommandExecutorFixture tests 2019-08-22 23:28:17 +02:00
Taloth Saldono 679c0599dd Flaky CommandExecutorFixture tests 2019-08-22 22:20:39 +02:00
Taloth Saldono 4d04ad5632 Fixed typos 2019-08-22 21:58:57 +02:00
Taloth Saldono 3fdc50b354 Fixed flaky test by flushing logs and getting them via the api 2019-08-22 21:49:06 +02:00
Taloth Saldono 7eeff32185 Another Daily format with no series title. 2019-08-21 21:43:36 +02:00
Taloth Saldono d40f2cb852 Fixed assembly configuration/branch attribute generation. 2019-08-21 21:02:14 +02:00
Qstick f9dc2fb6d5 New: Replace SharpRaven with new Sentry SDK
Co-Authored-By: ta264 <ta264@users.noreply.github.com>
2019-08-20 19:39:49 +02:00
Taloth Saldono de31dfb11e Fixed several tests and test infrastructure issues 2019-08-20 19:39:49 +02:00
Taloth Saldono ef6a648189 Fixed Automation Tests for Firefox and Sonarr v3 UI. 2019-08-20 19:39:49 +02:00
Taloth Saldono 09953e2af8 Updated xmlrpc and SocksProxy 2019-08-20 19:39:49 +02:00
Taloth Saldono be240119e8 Updated Test harnass, NUnit to 3.12.0, NBuilder to 6.0.0, Moq to 4.12.0, FluentAssertions to 5.8.0 2019-08-20 19:39:49 +02:00
Taloth Saldono 2b7893c834 Updated NLog to 4.6.6, Newtonsoft.Json to 12.0.2, RestSharp to 106.6.10 2019-08-20 19:39:49 +02:00
Taloth Saldono 896e824ca1 Updated FluentValidation to 8.4.0 2019-08-20 19:39:49 +02:00
Taloth Saldono 7a94725808 Updated SharpZipLib to 1.2.0 2019-08-20 19:39:49 +02:00
Taloth Saldono a66fb76e9a Converted all projects to the new csproj format. 2019-08-20 19:39:49 +02:00
Taloth Saldono b453d48fee Removed excluded source files. 2019-08-20 19:39:49 +02:00
Mark McDowall a7f2c07998 Fixed: Improve parsing of anime file names without standard release group/hash
Closes #3117
2019-08-17 13:05:20 -07:00
Mark McDowall 3cff878f74 New: Parse more poor p2p file naming
Closes #3266
2019-08-17 12:41:42 -07:00
Mark McDowall 665d536481 Fixed: Infinite spinner when toggling seasons on multiple series from season pass 2019-08-16 22:46:12 -07:00
Mark McDowall ec6d407fbb Fixed: Special title matching when special title has an apostrophe
Closes #2872
2019-08-16 21:48:43 -07:00
Mark McDowall 72bc7ed6d4 Fixed: Waiting a long time for unavailable root folders
Closes #2877
2019-08-16 20:54:03 -07:00
Mark McDowall ac407ca2c0 New: Show Hardlink/Copy in manual import 2019-08-16 00:05:22 -07:00
Mark McDowall 6af5f2b528 New: URL Base support for NZBVortex, Hadouken, qBittorrent and uTorrent
Closes #1651
2019-08-16 00:04:53 -07:00
Mark McDowall 8fd4a98fbe New: Sort by series year in series list
Closes #3245
2019-08-15 23:28:54 -07:00
Mark McDowall 07d553fae3 New: Sort preferred words in profile on save
Closes #3241
2019-08-15 23:23:36 -07:00
Mark McDowall 34e0eea173 Menu fixes
Fixed: Menus in modals on iOS
Fixed: Menu not closing on outside touch on mobile
2019-08-15 22:51:30 -07:00
Mark McDowall 73e6db9a12 Fixed: Scrolling of modals with tabular content in iOS
Fixes #3264
2019-08-15 22:48:39 -07:00
Mark McDowall 0df464ac03 Fixed prop type warning on MenuItem 2019-08-15 21:06:04 -07:00
Mark McDowall 78ee6afbae Fixed: Episode Progress custom filtering on series list page 2019-08-15 18:12:19 -07:00
Mark McDowall 31be74e6d3 New: Add Tabula Rasa Newznab Preset 2019-08-15 00:40:44 -07:00
Mark McDowall 767a09894a Health UI improvements
Fixed: Failing to get items from SABnzbd will report health error properly
Fixed: Some health checks not showing test all button on System: Health
2019-08-15 00:24:09 -07:00
datahodor 0d410d107d New: Treat MaxdomeHD as Web-DL 2019-08-14 23:22:07 -07:00
Ken Murphy 7829b18b3c New: User configurable minimum free disk space
Closes #3233
2019-08-14 22:14:59 -07:00
Mark McDowall b2267a55ce New: Improved parsing of poorly named multi-episode anime-like releases
Closes #3259
2019-08-14 20:50:12 -07:00
Mark McDowall eca016fe61 Fixed: Prevent moving to recycling bin causing a failed import 2019-08-13 17:31:05 -07:00
Mark McDowall 81723f7fa9 Retry HttpLogFixture 2019-08-12 22:18:06 -07:00
Mark McDowall 44c91fb90c Fixed: Ensure correct series is used for Manual File Import from series details page 2019-08-12 21:57:11 -07:00
Mark McDowall 7cb5bd9c95 And another one to retry 2019-08-11 00:30:11 -07:00
Mark McDowall 8196f6b9db New: Cleanup Recycling Bin folders older than X days (0 to disable) 2019-08-11 00:22:26 -07:00
Mark McDowall d72b16531b New: Add TVDB Link to add new series search result 2019-08-11 00:03:22 -07:00
Mark McDowall f333196efe Retry up to 5 times for disk tests that sometimes fail 2019-08-10 23:14:39 -07:00
Wu Haotian 6ea047dcb4 New: Add support for Lilith-Raws release group 2019-08-09 19:05:40 +02:00
Mark McDowall ea65867b23 Fixed: Logging file release group for repack 2019-08-08 10:26:27 -07:00
Mark McDowall c41200e762 csproj update to match the file rename 2019-08-07 20:14:47 -07:00
Mark McDowall 4c70afbb53 Make powershell test explicit 2019-08-07 19:10:29 -07:00
Qstick 0c1ce66053 Cleanup Multiple Compiler Warnings 2019-08-07 19:08:03 -07:00
rbraunschweig fa8b8cebf9 More repost exclusions to clean release group 2019-08-07 18:57:39 -07:00
Mark McDowall 72fa89ba76 Fixed: Repack don't being grabbed when cutoff already met
Fixes #3250
2019-08-06 19:52:49 -07:00
Mark McDowall dc7b4cebf2 New: Add warning that recycle bin will be cleaned up automatically after 1 week 2019-08-06 19:52:49 -07:00
emyarod 3c1dd94915 Fix README hyperlink formatting 2019-08-06 17:27:27 -07:00
Mark McDowall 3decbbac3a Fix RARBG parsing test 2019-08-06 08:54:50 -07:00
Mark McDowall 27f43569f5 Fixed: Edge case where import fails due to DB relationship mismatch
Closes #3243
2019-08-05 13:55:19 -07:00
Mark McDowall bd9bded73b Fixed: Improved failed series search messaging
Closes #3187
2019-08-04 09:01:12 -07:00
Mark McDowall 0ce81e1ab6 Fix SeriesFolderAsRootFolderValidator 2019-08-04 08:38:36 -07:00
Mark McDowall 2926201694 Fixed: RARBG links in Interactive Search
Fixes #3239
2019-08-04 01:01:40 -07:00
Mark McDowall 059be2c853 New: Add root folder from Media Management settings 2019-08-04 01:01:40 -07:00
Mark McDowall dd09f31abb New: Series folder hint when selecting a root folder while adding a new series 2019-08-04 01:01:40 -07:00
Mark McDowall 1da20da3ff Fixed: Season actions on mobile not indicating when they are disabled 2019-08-04 01:01:40 -07:00
Mark McDowall 341773830b Fixed: Modal scrolling causing app to scroll on iOS 2019-08-04 01:01:40 -07:00
Mark McDowall c65452bb01 Fixed: Edit path on series index resetting cursor to end on change 2019-08-04 01:01:40 -07:00
Mark McDowall 34d81356a3 New: Limit filenames to a maximum of 255 characters
Closes #2699
2019-08-03 13:20:34 -07:00
Mark McDowall c9b84a5202 Update yarn.lock 2019-08-02 17:39:27 -07:00
Mark McDowall 5394cc2dc9 Interactive search fixes
Fixed: Sorting of Quality column in Interactive Search
Fixed: column widths in Interactive Search
2019-07-31 14:54:59 -07:00
Mark McDowall 63141f339f New: Bulk select episodes in Manual Import 2019-07-30 19:07:13 -07:00
Mark McDowall 079a0b56c3 Fixed: Manual import from queue showing error when download name failed to parse 2019-07-30 08:44:55 -07:00
Mark McDowall 66721affe7 Fix setup package creation 2019-07-28 09:52:34 -07:00
Mark McDowall d8ab23e9ba Fix setup package creation 2019-07-28 00:23:19 -07:00
Mark McDowall 11b0a5c9cc Appease eslint 2019-07-26 22:07:49 -07:00
Mark McDowall d273a72cb3 Recycle bin file cleanup
Fixed: Recycle bin will clean up files older than 7 days and remove empty folders left behind
2019-07-26 22:07:25 -07:00
Mark McDowall 08641a6694 Update redux 2019-07-26 18:14:13 -07:00
Mark McDowall 9ac5c0d886 Upgrade sentry 2019-07-26 18:14:13 -07:00
Mark McDowall 8a57d33223 Upgrade del 2019-07-26 18:13:47 -07:00
Mark McDowall 1945b53e43 Upgrade various packages 2019-07-26 18:13:47 -07:00
Mark McDowall 161e1820a8 Upgrade React DND 2019-07-26 18:13:47 -07:00
Mark McDowall 22b5ac8622 Update react router packages 2019-07-26 18:13:47 -07:00
Mark McDowall f75a70e42b Update react packages 2019-07-26 18:13:47 -07:00
Mark McDowall c9076606be Upgrade CSS packages 2019-07-26 18:13:47 -07:00
Mark McDowall 853d22b947 Upgrade font awesome 2019-07-26 18:13:47 -07:00
Mark McDowall 82d6719d91 Upgrade linter packages 2019-07-26 18:13:47 -07:00
Mark McDowall 3f02c150e3 Set corejs version 2019-07-26 18:13:47 -07:00
Mark McDowall d7d46a93a7 Update webpack packages 2019-07-26 18:13:47 -07:00
Mark McDowall dfd51635a6 Upgrade gulp tooling 2019-07-26 18:13:47 -07:00
Mark McDowall c04366d505 Update babel packages 2019-07-26 18:13:47 -07:00
Mark McDowall fd89e88d40 Fixed: Manage Episodes not showing whether language/quality meets cutoff 2019-07-26 18:10:02 -07:00
Mark McDowall 894de923b9 Fixed: Don't reject standard/absolute numbering mismatch due to season number 2019-07-26 17:59:41 -07:00
Mark McDowall c47e7cd91d Fixed: Canceling editing a custom filter won't close the Custom filter modal 2019-07-26 17:52:05 -07:00
Mark McDowall e359347a3b Fixed: Anime season searches rejecting season packs 2019-07-26 17:52:05 -07:00
Mark McDowall d320017e3c Cleanup migration 131 2019-07-26 17:52:05 -07:00
devbrian e6c34f4311 Fixed: Season mismatch between file and folder not rejecting import 2019-07-26 17:51:54 -07:00
Mark McDowall 9b0c945086 Fix NZBGet Delete Status Copy test 2019-07-25 16:48:03 -07:00
Mark McDowall bc85f5de1d Add logging to Windows setup 2019-07-25 07:49:32 -07:00
Mark McDowall 4df219161c New: Dim episode/air time on calendar 2019-07-24 20:08:26 -07:00
Mark McDowall 06f157e634 Fixed: Tags in settings getting cutoff 2019-07-24 19:59:27 -07:00
Mark McDowall 54addbdd28 Fixed: Don't ignore Delete:Copy items in NZBGet 2019-07-22 21:15:27 -07:00
Mark McDowall 0e721917e7 Fix stylelint once and for all (hopefully) 2019-07-22 19:44:07 -07:00
Mark McDowall 4dc7089f89 Fixed: Add tooltip to tag delete button when in use 2019-07-22 10:43:40 -07:00
Mark McDowall 30b5a35db2 Fixed: tag input alignment and height 2019-07-22 10:43:40 -07:00
Mark McDowall dc8f81b536 Double instead of single quotes in CSS 2019-07-22 10:43:40 -07:00
Mark McDowall a018770a18 UI fixes 2019-07-22 10:43:40 -07:00
Mark McDowall 5e4f7c5d8e Minor cleanup 2019-07-22 10:43:40 -07:00
Mark McDowall 1d9d665ed0 Fixed: Stripping subtitles from series titles after parsing
Closes #3219
2019-07-22 10:43:40 -07:00
linxchaos 68477c09a7 Improve grammar in Import Series 2019-07-21 17:13:31 -07:00
Mark McDowall 574b9086d4 Fix oAuth actions in UI 2019-07-17 17:25:20 -07:00
Mark McDowall d74c323c66 Remove unused prop 2019-07-17 08:16:35 -07:00
Mark McDowall 8e85a1b84e Remove unused import 2019-07-16 22:54:54 -07:00
Mark McDowall 6ce1cb4325 Refetch series when signalR reconnects 2019-07-16 22:42:32 -07:00
Mark McDowall fbbd85d8b2 Fix boolean for title prop warning 2019-07-16 22:42:22 -07:00
Mark McDowall e611dc43c5 Fix stylelint 2019-07-16 16:30:00 -07:00
Mark McDowall c86309cfc0 New: Show relative file name when selecting episode in Manual Import
Closes #3197
2019-07-16 10:52:54 -07:00
Taloth Saldono ec74e9bce0 Incremented package version 2019-07-14 21:57:29 +02:00
Taloth Saldono f371e8a523 Fixed stylelint errors 2019-07-14 21:57:29 +02:00
Taloth Saldono 57a059eecb Updated debian install script to handle old nzbdrone systemd unit named sonarr.service 2019-07-14 21:57:29 +02:00
Taloth Saldono 2cb149c647 Added alternative libcurl4 dependency to satisfy ubuntu cosmic. 2019-07-14 21:57:29 +02:00
Taloth Saldono ee5371b582 Added alternative libmediainfo0 dependency for debian jessie
closes #3205
2019-07-14 21:57:29 +02:00
Taloth Saldono 70e4dbe3bd Updated debian build to fix stray msbuild dependency 2019-07-14 21:57:29 +02:00
Taloth Saldono 18ead9a64f Added MediaInfo AudioLanguagesAll.
closes #3190
2019-07-14 12:14:31 +02:00
Taloth Saldono d2764cee2a Fixed: Heavy qbit api load when CDH Remove is disabled and Seeding time has been reached
ref #3108
2019-07-14 12:13:54 +02:00
Mark McDowall 082c098420 New: Include HDR is naming examples
Closes #3199
2019-07-11 17:51:48 -07:00
Mark McDowall 46a42e2901 New: Update examples for Kodi metadata
Closes #3201
2019-07-11 17:45:29 -07:00
Mark McDowall c21cacd309 Fixed: Monitoring latest season ignoring unaired episodes
Fixes #3200
2019-07-11 17:45:04 -07:00
Mark McDowall 81ac359f71 Default to System Tray for Windows installer 2019-07-11 17:43:52 -07:00
Mark McDowall f5b91c90bc Fixed: Parsing BD release group as Bluray quality 2019-07-09 17:23:50 -07:00
Mark McDowall 0a92a3012e Add warning to remove from queue dialog 2019-07-06 11:27:17 -07:00
Mark McDowall ff8fc237e2 Darker border for calendar 2019-07-04 19:59:11 -07:00
Mark McDowall b99d943b4d New: Wider and taller scroll bar for the click to scrollers out there 2019-07-04 19:53:18 -07:00
Mark McDowall 3199fe08e8 Custom Filter improvements
Fixed: Removing Custom Filter left spinner visible
Fixed: Custom filter/tag input being cutoff on iOS
2019-07-04 19:10:59 -07:00
Taloth Saldono 7503ce62af Fixed: Workaround for mono 5.16+ bug preventing the closure of sockets on timeouts (Jackett connections)
ref #2802
2019-07-02 20:52:12 +02:00
Taloth Saldono df8ca250aa Fixed: Executing powershell and python scripts directly in Connect->Custom Scripts 2019-07-02 20:50:32 +02:00
Taloth Saldono c71b4bde86 Added test for turkish FirstCharToUpper 2019-07-02 20:32:35 +02:00
Mark McDowall 3f67802e3d Fixed: Delay profile being ignored for non-revision upgrades 2019-07-01 00:45:05 -07:00
Mark McDowall 093ed23140 New: Improve logging when checking if release is an upgrade for an existing file 2019-07-01 00:44:37 -07:00
Mark McDowall 0f8dee7011 New: Treat WEBMux as WebRip
Closes #3186
2019-06-29 15:39:31 -07:00
Mark McDowall 0cb557b716 New: Improve help text for extra file importing 2019-06-29 15:39:31 -07:00
Mark McDowall 8137a776b6 New: Command line arguments for Custom Scripts are no longer supported 2019-06-29 15:33:49 -07:00
Taloth Saldono 1af3e0bd93 Created generic Hinted EnhancedSelectInput components and use it instead of SelectInput 2019-06-20 19:09:28 +02:00
Taloth Saldono d3662f2302 Added test for turkish FirstCharToLower 2019-06-15 20:38:17 +02:00
Taloth Saldono 5fe34cb593 Fixed: Tag deletion via api if tag is still in use 2019-06-15 20:11:50 +02:00
Taloth Saldono af5166e95d Fixed: Transmission seeding idle time handling 2019-06-15 19:31:55 +02:00
desimaniac 13907d6711 New: Remove some more retagging groups from filenames. 2019-06-15 10:10:48 -07:00
Mark McDowall c4c9f0e368 Fixed: Issue searching for series in the UI when tag is removed 2019-06-15 10:09:21 -07:00
Mark McDowall 394932b57f Fixed: Remote path mapping host comparison ignores case
Closes #3169
2019-06-15 09:46:47 -07:00
Mark McDowall 7dff9bc696 Fixed: Errors logged during import when existing episode file is partial removed in the DB
Fixes #3159
2019-06-15 00:48:03 -07:00
Mark McDowall 4713eaffdb Fixed: Mass Editor not showing delete button on narrow screens
Fixes #3142
2019-06-11 23:06:14 -07:00
Mark McDowall 3a7992b1c8 Small UI fixes
Fixed: Season count popover styling
Fixed: URL base of /series linking to the wrong path in some cases
Fixed: Manual import showing error when a different series is selected
Fixed: Error when deleting series from poster list
2019-06-11 23:05:17 -07:00
Mark McDowall 5275aa72fb Clean up FirstCharacterToLower extension + tests 2019-06-10 21:32:42 -07:00
Mark McDowall 9e45b9e808 Fixed: Selecting a release from Interactive Search with an unknown episode 2019-06-10 21:32:42 -07:00
Taloth Saldono 88dfa14046 Wrong escape in help message 2019-06-10 16:30:28 +02:00
Taloth Saldono dd4216d432 Fixed: Regression preventing empty qbittorrent category
fixes #3158
2019-06-10 12:13:39 +02:00
Taloth Saldono 628ab85de4 New: Configurable Specials folder format 2019-06-10 00:46:46 +02:00
jtpavlock 39ea2dd32f New: Ability to set a post-import label in Deluge, rTorrent, qBittorrent, and uTorrent 2019-06-09 19:54:53 +02:00
Taloth Saldono 1d77c40d0e Support for primary and fallback download client 2019-06-08 15:49:54 +02:00
Taloth Saldono a3cbb4158c New: Round-robin over available Download Client instead of the first enabled one 2019-05-30 00:38:18 +02:00
Taloth Saldono 52aa84e9f9 Tweaked mediainfo api call to better handle unsupported locales. 2019-05-30 00:32:52 +02:00
lps-rocks f08fc7493d New: Added downloadId filter to v3 history api for third-party applications
closes #3105
2019-05-30 00:32:17 +02:00
Taloth Saldono a80b1bbcb3 Added more logging to MediaInfo encoding check for linux. 2019-05-22 19:54:40 +02:00
Carl Downing 7ce8bac3ea Fix grammar and punctuation in DeleteSeriesModalContent 2019-05-18 22:09:19 -07:00
Mark McDowall 5c258797ec Fixed: tag input height not growing in height
Fixes #3124
2019-05-16 22:47:28 -07:00
Taloth Saldono 0dccc7e91e Fixed: Various performance improvements for large collections 2019-05-16 00:22:11 +02:00
Taloth Saldono 9e68653949 Fixed: Slow db migration when upgrading from v2 to v3 with a large collection 2019-05-16 00:07:02 +02:00
Taloth Saldono 83c09b4540 Fixed: Support for SignalR's Server Sent Events transport as an alternative to websockets and long polling 2019-05-16 00:05:15 +02:00
Mark McDowall 5cf2672469 Fixed: Files not replacing a lower quality proper/repack 2019-05-15 14:08:02 -07:00
Mark McDowall 50144721d7 Don't double log exception setting file permissions 2019-05-12 21:53:31 -07:00
Mark McDowall 0fe7da80ab Fixed: Error logged when checking if v2+ anime release is a valid upgrade
Fixes #3114
2019-05-12 16:25:57 -07:00
Mark McDowall 068eb33bf6 New: TVDB ID filter when getting series from API
Closes #2486
2019-05-12 16:14:56 -07:00
Mark McDowall 98b1a7681b Fixed: Monitored status being reset after refresh when series is edited manually 2019-05-12 16:03:31 -07:00
Mark McDowall 488967c6ef Fixed: Parsing of WEB from some file names 2019-05-11 22:20:41 -07:00
Mark McDowall a5aab95ecf Fixed NZBGet tests take 2 2019-05-09 10:25:09 -07:00
Mark McDowall 345de3654a Fixed NZBGet tests 2019-05-09 09:31:05 -07:00
Mark McDowall 6ea7e785e3 New: Additional information when Sonarr is unable to access a path during import
Closes #1106
2019-05-08 22:56:30 -07:00
Mark McDowall 0c2331f638 Fixed: Ignore deleted duplicates from Nzbget
Fixes #1721
2019-05-08 22:25:10 -07:00
Mark McDowall 5fe1ce1eff Fixed: Don't import duplicate NFO extra files
Fixes #2641
2019-05-08 21:58:50 -07:00
Mark McDowall 6a6d6f9e0d Fixed: Importing of preferred release over a proper/repack 2019-05-08 21:04:12 -07:00
Mark McDowall 30a512c880 Fixed: Episode details on history episode file information 2019-05-08 20:15:21 -07:00
Mark McDowall 2b4519a4ad Fixed: Loading of fonts.css with a URL Base
Fixes #3103
2019-05-08 19:33:47 -07:00
Mark McDowall 3e25d41c0f Another entry into the hall of shame 2019-05-06 08:22:55 -07:00
Mark McDowall d8baa93289 Only check repacks for revision upgrades 2019-05-05 20:39:52 -07:00
Mark McDowall d8c2640959 Fixed: Queue tooltips appearing offscreen on mobile devices 2019-05-05 20:03:26 -07:00
Mark McDowall 2ae4337d0d FirstCharToLower 2019-05-05 18:57:33 -07:00
Mark McDowall 0416060643 Tests for repack fix and improve behaviour when release group is unknown 2019-05-05 13:01:16 -07:00
Mark McDowall 2b1fd77ad7 Fixed: Repack check failing for episode file without a known release group 2019-05-05 11:09:48 -07:00
Mark McDowall 43567a3119 Remove old twitter keys 2019-05-05 11:09:48 -07:00
desimaniac d463c2fbc5 New: Remove 'AsRequested' suffix from release group names 2019-05-04 23:24:13 -07:00
Mark McDowall 940cba5f90 Fixed: Possible issue with manual import of an unknown release 2019-05-04 08:57:59 -07:00
Mark McDowall 7321075631 New: Option to not prefer repacks/propers (for use with Preferred Words)
Closes #3084
2019-05-04 00:33:13 -07:00
Mark McDowall a06cbc44cd Fixed: Ignore episode title when parsing release group
Fixes #3097
2019-05-03 20:14:35 -07:00
Mark McDowall 088b4af795 Appease stylelint 2019-05-03 18:44:06 -07:00
Mark McDowall fc0b1e8941 Extra warning for Windows Service issues when prompted to restart after changing host settings
Closes #3094
2019-05-03 17:52:23 -07:00
Mark McDowall 9ad3b12403 Manual Import: Reprocess after selecting series
New: Reprocess changed items when series is changed
Closes #1893
2019-05-03 17:38:06 -07:00
Mark McDowall 88ecec2f9a Fix SAB test 2019-05-03 14:09:19 -07:00
Mark McDowall 4ea5e9ce9b Ignore older episodes in latest season
New: Ignore episodes that aired more than 90 days ago when adding with Latest Season
Closes #826
2019-05-01 23:29:54 -07:00
Mark McDowall 9b617af713 New: Option to opt out of TBA episode title import delays
Closes #3086
2019-05-01 20:36:09 -07:00
Mark McDowall e70d92f670 New: Restrict repack upgrades to the same release group
Closes #946
2019-04-29 23:38:18 -07:00
Mark McDowall 1b3acb52f1 Fixed: Don't treat NZBs rejected by SABnzbd as successful 2019-04-29 18:18:06 -07:00
Mark McDowall 052ddc11b7 Added a unit test for the NZBGet Final dir fix 2019-04-28 19:27:34 -07:00
Mark McDowall 4e3a5a8823 Only use NZBGet's FinalDir if it's not empty
Fixed: Importing from NZBGet
2019-04-28 19:23:56 -07:00
Mark McDowall 05e17b70b5 New: Show health warning if system time is off expected time
Closes #1422
2019-04-28 11:50:18 -07:00
Mark McDowall 949d764638 Use popper placement for tooltip arrow 2019-04-28 01:08:09 -07:00
Mark McDowall 5c2cb4de80 Improve tooltip performance 2019-04-28 01:08:09 -07:00
Mark McDowall f68c5cb4f7 QualityDefinition UI fixes 2019-04-28 01:08:08 -07:00
Mark McDowall 06c1f376bc Improve performance of search input selecting series 2019-04-28 01:08:05 -07:00
Mark McDowall 7c7a6a4514 Throw exception if ports are the same at startup 2019-04-28 01:07:56 -07:00
Mark McDowall 5293349785 Limit search input to first character matching when only one character is typed 2019-04-27 20:14:44 -07:00
Mark McDowall 2ee0ae1f9e New: Don't search for unaired anime episodes when searching for season
Closes #2530
2019-04-27 19:13:27 -07:00
Mark McDowall 8143237d25 Re-order PMS settings and rename Kodi connection 2019-04-27 18:55:09 -07:00
Mark McDowall a426068273 New: Option to use HTTPS with Emby
Closes #2923
2019-04-27 18:54:45 -07:00
Mark McDowall 599b19102e Fixed: Don't allow HTTP and HTTPS to use the same port
Closes #2890
2019-04-27 18:48:23 -07:00
Mark McDowall e7a979d6b4 Fixed tests after removing sentry logging 2019-04-27 18:44:56 -07:00
Mark McDowall 7991ed0154 New: Reject multi-season releases
Closes #683
2019-04-27 18:27:35 -07:00
Mark McDowall a9a3e50179 Fixed: Parsing of some anime batches
Closes #2705
2019-04-27 18:27:34 -07:00
Mark McDowall 7642fe046b New: Log when release is matched by ID instead of title
Closes #446
2019-04-27 18:01:45 -07:00
Mark McDowall ccc2c39d43 Fixed: Cleaning percent signs from release names
Fixes #1998
2019-04-27 16:15:53 -07:00
Mark McDowall 26228e546e Improve error messaging for missing information when searching
Fixed: Show missing absolute episode number/air date error message in interactive search
2019-04-27 16:15:53 -07:00
Mark McDowall 6036bc17c5 New: Use NZBget's FinalDir is set by post-processing script
Closes #2006
2019-04-27 16:15:52 -07:00
Taloth Saldono ca4b03f48a Fixed typos. 2019-04-26 20:09:12 +02:00
Mark McDowall b0f59ad988 Removed unused var 2019-04-25 22:22:07 -07:00
Mark McDowall c9bdf43a0d Use Portal component in AutoSuggestInput 2019-04-25 21:47:29 -07:00
Mark McDowall dadab50f3b Fixed: Backup path URL
Fixes #3079
2019-04-25 20:30:55 -07:00
Mark McDowall 0b49eba77a Fixed: Root folder selection scrolling
Fixes #3077
2019-04-25 20:24:05 -07:00
Mark McDowall 004b7391c6 Fixed: Math on quality definition limits 2019-04-24 21:46:46 -07:00
Mark McDowall 45c221a3b2 Fixed: Ensure max sized posters aren't returned for some devices 2019-04-24 21:00:15 -07:00
Mark McDowall 364f074be1 Fixed: Removed nzbs.org Newznab preset 2019-04-24 20:39:45 -07:00
Qstick e82eded1e9 Fixed: Support new feed url format IPTorrents
Fixes #3071
2019-04-24 00:12:16 -07:00
Mark McDowall b298f84f51 Fixed: Parsing of first aired date on Arabic systems 2019-04-24 00:12:16 -07:00
Mark McDowall 26ff28aae6 New: Tooltips for quality size limits 2019-04-24 00:12:16 -07:00
netpok 588eb6f691 New: Detect mergerfs mounts 2019-04-22 20:28:11 -07:00
Qstick c10448af0b Fixed: Roksbox SeriesImages can lead to NullRef 2019-04-22 20:27:07 -07:00
Mark McDowall 0eb7973ab0 New: Show tooltips for changeable columns on Manual Import
Closes #3069
2019-04-22 20:19:20 -07:00
Taloth Saldono 150a87f2ea Fix VideoFileInfoReader tests after mediainfo update... take 2 2019-04-21 00:31:27 +02:00
Taloth Saldono 2505a19a88 Fixed: Air-time adjustment for Amazon/Hulu releasing 4+ episodes on one day 2019-04-21 00:06:13 +02:00
Mark McDowall beea02cea9 Fixed: Don't reject import with missing episode title if renaming is off 2019-04-17 22:46:58 -07:00
Mark McDowall 600b5cfa8e Menu separator shown when scrollbar is visible 2019-04-17 22:43:35 -07:00
Mark McDowall 8055b5e5da New: Output Path column in Queue
Closes #3058
2019-04-17 22:39:37 -07:00
Mark McDowall 4933a75d15 Fixed: Don't include year 0 in series folder name
Fixes #3057
2019-04-17 22:25:41 -07:00
Mark McDowall 478e13b0fd Replace react-tether with react-popper 2019-04-17 02:21:58 -07:00
Mark McDowall 9c26da70da Fix VideoFileInfoReader tests after MediaInfo upgrade 2019-04-17 02:20:26 -07:00
Mark McDowall 872a8d983b Fixed: Manual import of unknown series items in Activity: Queue 2019-04-17 02:20:24 -07:00
Mark McDowall 47d3fe1de5 Fixed: Manage episode files for season text 2019-04-13 23:29:39 -07:00
Mark McDowall 9421af2c3f Backup directory is a path 2019-04-13 23:28:47 -07:00
Stephan Renggli 90626e353f New: Gotify notifications
Closes #3033
2019-04-13 15:50:22 -07:00
Mark McDowall b3e019e7a0 New: Sort preferred words by score when displaying in the UI 2019-04-13 12:56:17 -07:00
Mark McDowall 84a0a0743b New: Upgrade MediaInfo to 18.12 (macOS and Windows) 2019-04-13 11:32:18 -07:00
Mark McDowall 377bd6e2b7 Collapse calendar view buttons on narrower screens (<= 1200px) 2019-04-13 11:08:59 -07:00
Mark McDowall dc42c6a1df Fixed: Refresh on series list spinning forever in some cases 2019-04-12 23:33:51 -07:00
Mark McDowall 0ca70a3197 Fixed: Long path support on Windows 2019-04-12 19:21:49 -07:00
Mark McDowall 889f92268e Fixed: Series footer shows statistics based on filtered series list 2019-04-12 19:05:23 -07:00
morpheus133 24fba7a36d New: Use IMDB ID when searching supported indexers 2019-04-12 18:02:08 -07:00
Mark McDowall c90672a5ab More renaming tokens
New: Always show Air Date renaming token in help modal
Fixed: Added missing media info renaming tokens
2019-04-12 17:48:45 -07:00
Mark McDowall 81c8fc0381 Fixed: Improve exception logging when unable to connect to Plex Media Server 2019-04-12 17:46:47 -07:00
Mark McDowall 7922a3856e updateMechanism isn't available while fetching 2019-04-11 23:56:58 -07:00
Mark McDowall 9aea452829 History details for unknown event type 2019-04-11 23:56:37 -07:00
Mark McDowall e797b759b7 Fixed: Use Download Client name for grabbed history events 2019-04-11 23:43:41 -07:00
Mark McDowall b60d5f837e Remove DownloadProtocol from v3 ReleaseResource 2019-04-11 23:41:06 -07:00
Mark McDowall 877235c8a2 Fixed: Already Imported check failing for some torrent releases 2019-04-11 17:49:09 -07:00
Mark McDowall 558bbeaa34 Fixed: SSL Certificate validation when port is used
Closes #3039
2019-04-11 09:00:59 -07:00
Mark McDowall 0911abcfc0 Improve certificate validation registration
Fixed: Certificate validation during startup
Fixed: Errors removing Windows service

Closes #3037
Closes #3038
2019-04-10 19:34:37 -07:00
Mark McDowall 04850331ce Fix long path support overrides in mono 2019-04-10 00:14:26 -07:00
Mark McDowall b58336f4c8 Fix case of LegendIconItem.css 2019-04-10 00:13:56 -07:00
Mark McDowall 4665b4fb37 New: Target .net 4.6.2 2019-04-09 22:02:43 -07:00
Mark McDowall 49197a2ae0 Update executable icon 2019-04-09 21:54:44 -07:00
Mark McDowall c718db21da Fixed: Certificate validation for local IP addresses instead of hostnames 2019-04-09 20:57:12 -07:00
Mark McDowall 35f28bdc71 Update docs
- Fix project names
- Unify dev environment setup
2019-04-09 20:47:50 -07:00
Mark McDowall bf86b09f4e Fixed: Interactive search grabs rejected due to validation 2019-04-09 09:17:14 -07:00
Mark McDowall cdde8cfdbe Protocol instead of download protocol 2019-04-08 22:47:56 -07:00
Mark McDowall cd26b8f728 DownloadProtocol is an integer for release/push 2019-04-08 17:51:54 -07:00
Mark McDowall 8abfc7609e Send downloadProtocol in release/push integration test 2019-04-07 22:15:12 -07:00
Mark McDowall 7d06e5d684 HTTPS certificate validation options
New: Enable HTTPS certificate validation by default
New: Option to disable certificate validation for all or only local addresses
2019-04-06 23:43:47 -07:00
Mark McDowall 439870a546 Don't render table options modal content when it's closed 2019-04-06 23:22:52 -07:00
Mark McDowall 82b35f095e Improve series index performance during series refresh 2019-04-06 23:22:52 -07:00
Mark McDowall b40d7d89a1 Improve selectors in PageConnector to reduce re-rendering 2019-04-06 23:22:52 -07:00
Mark McDowall 8f3dbbc356 Fixed: Return better error message if username or password is null for forms login 2019-04-06 21:33:48 -07:00
Mark McDowall f748891b4b Fixed: Ensure loading message doesn't change on re-render 2019-04-06 19:22:24 -07:00
Mark McDowall e325a5c27e Better response if invalid JSON is received through the API 2019-04-06 19:21:59 -07:00
Mark McDowall 7d131fbb3d ReleasePushModule uses ReadResourceFromRequest 2019-04-05 20:23:59 -07:00
Mark McDowall 2b63110323 Series index selector improvements 2019-04-05 20:17:24 -07:00
Mark McDowall a63ca0f0e9 More file browsing improvements 2019-04-05 20:16:57 -07:00
Mark McDowall 5b2d0a2ade Fixed: Store columns for History table between refreshes 2019-04-05 17:53:11 -07:00
Mark McDowall 1a984df11a Fixed: Error on calendar with unknown items in the queue 2019-04-05 17:52:02 -07:00
Mark McDowall fdc7a19628 Fixed: Error displayed occasionally after removing series from the series list
Fixes #3018
2019-04-04 19:35:06 -07:00
Mark McDowall 8087996c8e Better selection of executing commands in series list 2019-04-04 18:45:22 -07:00
Mark McDowall e5f264a510 PahtInputConnector default prop for includeFiles 2019-04-04 18:45:21 -07:00
Mark McDowall 0a2eb74c26 Release module validation in v3 2019-04-04 18:45:20 -07:00
Mark McDowall d5bb3bd799 Fixed: Centering of expand/collapse icon for season 2019-04-01 17:26:31 -07:00
addisonbabcock cfa9d88be6 Fixed quality typo on manual import 2019-03-28 20:06:11 -07:00
Taloth Saldono ac4617ae51 Fixed eslint error. 2019-03-26 19:11:51 +01:00
Taloth Saldono f6bcadfeec Merge branch 'develop' into phantom-develop 2019-03-26 19:07:26 +01:00
Mark McDowall 5272078ea3 Fixed: Sorting by age when releases are less than a day old
Fixes #3012
2019-03-25 23:33:00 -07:00
Mark McDowall b6257400ec Fixed: Sorting of search results in series search box
Closes #3013
2019-03-25 23:33:00 -07:00
Mark McDowall c3a6e01040 Fix file browser when files should be included 2019-03-25 23:33:00 -07:00
Mark McDowall b63cbbdaaa New: Release title column in queue 2019-03-25 23:33:00 -07:00
desimaniac 81d3f35034 Remove WhiteRev and BUYMORE suffixes from release group names 2019-03-24 19:18:58 +01:00
Taloth Saldono 1fc2866032 Fixed: Include all download items if no category is specified in rtorrent.
closes #3002
2019-03-24 15:27:41 +01:00
Taloth Saldono eb2e7b9c79 Continue Test in case of validation warnings. 2019-03-24 15:22:50 +01:00
Taloth Saldono cab900f656 Don't skip magnet links with included trackers if dht is disabled. 2019-03-24 14:58:13 +01:00
Taloth Saldono e2b91e5dc4 Fixed: Detecting if qbittorrent seeding time limit has been reached 2019-03-23 22:58:43 +01:00
Mark McDowall 00a66e9030 Fixed: Parsing of some WEB releases
Fixes #3001
2019-03-23 11:56:17 -07:00
Mark McDowall 775c8780a6 Fixed: Consistent icon position for toolbar buttons 2019-03-23 11:56:17 -07:00
Mark McDowall 50a968ace8 Renamed Manual Import on series details page 2019-03-23 11:56:16 -07:00
Mark McDowall db41104d9b Fixed: Queue count badge showing warning/error incorrectly 2019-03-23 11:56:16 -07:00
Mark McDowall 95bb73c5ac Eliminate gulp-flatten 2019-03-23 11:56:16 -07:00
Alan Yee 7ed2776476 Updated links in README.md 2019-03-23 11:14:29 -07:00
Taloth Saldono 341dfb934d Fixed: Typo in ical url handling when choosing premieres only. 2019-03-17 23:23:23 +01:00
hatharry ecebe73c33 Fixed: Emby library update
Fixes #2662
2019-03-16 15:56:33 -07:00
Mark McDowall 1b0c6b919f Update readme with new requirements for v3 2019-03-16 15:25:03 -07:00
Mark McDowall 06b876cf8b On Download to On Import on card 2019-03-16 14:53:30 -07:00
Mark McDowall de0d0a3526 New: Discord Notifications
Closes #1511
2019-03-16 14:51:12 -07:00
Mark McDowall 7f99ac0efa Added discord link to UI 2019-03-15 18:02:27 -07:00
Mark McDowall d2980c58ec Fixed: MediaInfo AudioCodec token helper in UI 2019-03-15 18:02:27 -07:00
Taloth Saldono d244ed6c64 More descriptive message if indexer connection test was successful but yielded no results. 2019-03-14 21:01:13 +01:00
Mark McDowall a30d9a1af2 Fixed: Plex authentication 2019-03-14 00:53:53 -07:00
Mark McDowall 7acd6a4d3c Can't login with a username and a blank password 2019-03-14 00:53:53 -07:00
desimaniac a6fdcb7493 Parser: Removes any combination of 'rakuv*` from release group names. 2019-03-12 20:05:54 +01:00
Taloth Saldono 0cc2437a9d Fixed typo in XDG_CONFIG_HOME handling.
closes #2989
2019-03-12 08:57:30 +01:00
Taloth Saldono 8102cb63ae Fixed: Interactive Search for Specials on BTN 2019-03-10 14:44:18 +01:00
Taloth Saldono 5062d74041 Reverted in-memory signalr keypair in favor of a .config directory. 2019-03-10 13:16:27 +01:00
Taloth Saldono feebb349d5 Linting error. 2019-03-09 00:21:06 +01:00
Taloth Saldono 1036813b97 Fixed: Finetuned color-impaired mode styling in Calendar. 2019-03-08 23:48:45 +01:00
Taloth Saldono 6b405700ec Make sure something appears in the trace file before trying to read it. 2019-03-08 20:58:54 +01:00
Taloth Saldono 29b4a83d93 Wait for commands to finish between tests. 2019-03-08 20:29:38 +01:00
Taloth Saldono 7b159c1e63 Removed Nyaa Integration tests and increased logging detail during integration tests. 2019-03-08 19:37:59 +01:00
Taloth Saldono 02c64ad3a5 Fixed: Not being able to use MediaInfo VideoDynamicRange token to renaming options. 2019-03-08 18:37:10 +01:00
Taloth Saldono 13c625d7c0 Fixd test on mono. 2019-03-06 23:19:13 +01:00
Taloth Saldono 9a3f49bf9c Merge branch 'develop' into phantom-develop
# Conflicts:
#	src/NzbDrone.Common.Test/Http/HttpClientFixture.cs
#	src/NzbDrone.Core.Test/MediaFiles/ImportApprovedEpisodesFixture.cs
2019-03-06 22:36:23 +01:00
Taloth Saldono 6698ca400c Handle special mount filtering at a higher level.
closes #2743
2019-03-06 22:34:17 +01:00
Mark McDowall 6bb649bac5 autoprefixer and webpack use the same browser list config 2019-03-05 20:01:21 -08:00
Mark McDowall b72b74b6c6 Upgraded react and react-dom packages 2019-03-05 19:58:58 -08:00
Mark McDowall e7bfea8c69 Update react-tether package 2019-03-05 19:38:39 -08:00
Mark McDowall de7e805718 Limit replacement of colons 2019-03-05 18:08:34 -08:00
Mark McDowall 7b5e8646eb Transpile UI for old browsers 2019-03-05 18:07:51 -08:00
Mark McDowall 966e147a20 Replaced gulp-util with ansi-colors, updated packages 2019-03-05 00:32:21 -08:00
Mark McDowall 269a5bd914 New: Log conflicting TVDB ID when unknown series is an alias for another series 2019-03-05 00:30:37 -08:00
Mark McDowall 4f1f56f653 Another broken test 2019-03-04 21:06:32 -08:00
Mark McDowall 6b517d7ffd Fix broken tests 2019-03-04 19:47:24 -08:00
Mark McDowall 4eb9a1cfa5 New: Replace colon with space and dash instead of just dash
Closes #2961
2019-03-04 19:12:00 -08:00
Mark McDowall db3aeb9ab5 Removed unused babel-plugin-transform-react-jsx-source 2019-03-04 19:00:22 -08:00
Mark McDowall 984b7bbeea Fixed: All preferred words being added to filename 2019-03-04 18:31:53 -08:00
Mark McDowall 582beed977 Fixed: Fonts not loading on reload 2019-03-04 18:31:19 -08:00
Mark McDowall 7fa8bd5613 Appease stylelint 2019-03-03 21:16:36 -08:00
Mark McDowall 4474172c40 Fix index.css 2019-03-03 21:14:21 -08:00
Mark McDowall 1dde397e2b Upgrade del 2019-03-03 20:58:53 -08:00
Mark McDowall 7ea3b6ca15 Upgraded to gulp 4
Use `yarn watch` to use local gulp
2019-03-03 20:56:16 -08:00
Taloth Saldono e52fcf843c Handle Deluge v2 beta breaking change in their api.
closes #2412
2019-03-03 23:10:28 +01:00
Taloth Saldono 08ba273089 fixed qbittorrent tests failing due to incorrect test setup. And http tests failed due to httpbin changing their output. 2019-03-03 21:19:25 +01:00
Mark McDowall 956e7b564c Upgrade eslint and stylelint-order... again 2019-03-03 11:39:17 -08:00
Mark McDowall 08990dd58a Upgraded to webpack 4 2019-03-03 11:29:12 -08:00
Taloth Saldono faa2d632e5 New: Indexer Seed Limit settings applied to new downloads for qBittorrent
closes #2607
2019-03-03 20:25:31 +01:00
Taloth Saldono 1b939ebf4b Fixed: Magnet Link progress visualisation and adding magnet links if dht is disabled in qBittorrent 2019-03-03 19:29:25 +01:00
Mark Bebbington aa46216117 Fixed: qBittorrent api v2 support (qbit v4.1+)
fixes #2887
closes #2951
ref #2945
2019-03-03 19:26:50 +01:00
Mark McDowall ca32434535 Update redux, reselect and moved to connected-react-router 2019-02-28 20:01:06 -08:00
Mark McDowall ebf4f17f17 Fix route to series details from search input 2019-02-28 20:00:08 -08:00
Mark McDowall 22778091f9 RelativeDateCell PureComponent 2019-02-28 18:39:12 -08:00
Mark McDowall 4d389ae5ce Upgrade prop-types package 2019-02-27 21:37:49 -08:00
Mark McDowall 39e3120058 Fix page jump bar not rendering/rendering in the wrong order 2019-02-27 21:00:35 -08:00
Mark McDowall 6b15d7e260 Fix casing of RegexTermMatcher 2019-02-27 21:00:35 -08:00
Mark McDowall 277025775d Upgraded most react packages 2019-02-27 20:50:19 -08:00
Mark McDowall dbd649bfb5 Upgraded sentry, clipboard, filesize, moment, normalize.css and qs packages 2019-02-27 18:54:25 -08:00
Mark McDowall df4ddba1ab Missing root folder health check icon 2019-02-27 18:42:58 -08:00
Mark McDowall 21985d0814 Upgrade linting and CSS packages 2019-02-27 18:38:56 -08:00
Mark McDowall f7031dcb7f Upgrade fontawesome packages 2019-02-27 18:33:09 -08:00
Mark McDowall 0219e62979 Use fuse.js for series searching in UI
Closes #2954
2019-02-27 17:52:05 -08:00
Mark McDowall e66725047a Updated yarn packages for node 10 support 2019-02-27 17:13:27 -08:00
Mark McDowall 84fa99a126 Icon, SeriesIndexFooter -> PureComponent 2019-02-26 19:46:18 -08:00
Mark McDowall 78b3c9552b Fixed: Include matching value of preferred word regex, not the actual regex 2019-02-26 19:06:05 -08:00
Mark McDowall 1222aeaab6 Fixed: Select all in Episode File editor 2019-02-26 19:06:05 -08:00
Mark McDowall cbbfc5b58c Remove logging of Unable to format audio channels using 'AudioChannels' due to old schema 2019-02-26 19:06:05 -08:00
Mark McDowall 11164ab838 New: Bulk select language and quality in Manual Import 2019-02-26 19:06:05 -08:00
Mark McDowall 8339f7fdb3 Fixed: Don't add TV Maze ID to format if unknown 2019-02-26 19:06:05 -08:00
Taloth Saldono 220cd84ef5 Fixed: SignalR requiring a home directory to function properly. 2019-02-23 21:18:52 +01:00
Wu Haotian e5fa446159 Downgrade event-stream
https://github.com/dominictarr/event-stream/issues/116
2019-02-22 16:27:47 -08:00
Matt Evans 70c320e98b New: Added {MediaInfo VideoDynamicRange} renaming token to include HDR in the filename 2019-02-22 19:45:02 +01:00
Wu Haotian 8e486da928 New: Added parser support for common Chinese release formats 2019-02-20 20:04:05 +01:00
Wu Haotian 7ae906863d Fix filename in PostBuildEvent
NzbDrone.{Mono, Windows} has been renamed to Sonarr.{Mono, Windows} in https://github.com/Sonarr/Sonarr/commit/adaf428aa7317cd404eb7acef7bc7149be61cb2b
2019-02-20 20:04:05 +01:00
Mark McDowall fb4483fdcf Switch to https for httpbin URL test 2019-02-20 00:31:39 -08:00
Mark McDowall e32e6e0bec Groups must contain multiple qualities 2019-02-19 18:48:54 -08:00
Mark McDowall 05e7b90aab Fixed: Correct rejection message when profile does not allow upgrades
Fixes #2958
2019-02-19 18:30:57 -08:00
Mark McDowall ee59f91ba2 Pending releases have languages too 2019-02-19 18:27:48 -08:00
Mark McDowall ece3241041 Fixed: Adding series with unknown IMDB ID and series folder includes IMDB ID 2019-02-19 18:27:26 -08:00
Mark McDowall fcb1bcb91b New: Setting monitor to None when adding series will unmonitor the series as well 2019-02-19 18:26:34 -08:00
Mark McDowall 728c0e8272 Fixed: Select all on Activity: Queue 2019-02-19 17:54:57 -08:00
Mark McDowall 9b212d11f0 Fixed: Error when editing torrent indexer 2019-02-14 09:14:16 -08:00
Taloth Saldono 223209e1eb Tweaked language parser since PR isn't merged yet. 2019-02-12 21:59:26 +01:00
Taloth Saldono 5b741a10db Fixed: Season pack with Special in series title was treated as unknown special 2019-02-12 21:56:55 +01:00
Matt Evans 1606ea19a8 New: Added support for DTS-HD MA and TrueHD Atmos in MediaInfo AudioCodec. 2019-02-11 07:50:50 +11:00
Taloth Saldono e5632019db Simplified more RegexReplace instances. 2019-02-09 21:13:13 +01:00
Taloth Saldono ff994d594a Fixed error in unicode cleanup code removing most non-latin characters instead of just invalid ones. 2019-02-09 21:13:13 +01:00
Taloth Saldono 0214ced8f0 New: Added Icelandic language and improved Chinese language detection 2019-02-09 20:57:22 +01:00
Mark McDowall 813e5e1db8 New: Sort queue by status 2019-02-07 18:48:51 -08:00
Mark McDowall 69627911b3 New: Highlight currently installed version on System: Updates 2019-02-07 18:44:22 -08:00
Mark McDowall 29f905b942 Root folder handler for signalR 2019-02-07 18:43:56 -08:00
Mark McDowall 551fa7fe10 Fixed: Banner not growing when most columns are hidden 2019-02-07 18:43:43 -08:00
Mark McDowall 2ce3cd4c2a Fixed: Improve readability of text on light blue labels 2019-02-07 18:42:54 -08:00
Mark McDowall 8ea24a6b09 Fix QualityModelComparer test when respecting group order 2019-02-07 09:25:42 -08:00
Taloth Saldono 00ca91399a ESlint error 2019-02-07 13:33:08 +01:00
Taloth Saldono cf327077e9 Fixed: Regression in folder move logic preventing updater from working. 2019-02-07 12:57:45 +01:00
Taloth Saldono f215ba9bac Fixed: Additional reverse title parser patterns.
fixes #2943
2019-02-07 12:57:45 +01:00
Mark McDowall c3c6b3d166 Fixed: Importing completed downloads from NZBGet with post processing script failing
Fixes #2919

# Conflicts:
#	src/NzbDrone.Core.Test/MediaFiles/ImportApprovedEpisodesFixture.cs
2019-02-06 19:36:37 -08:00
Mark McDowall b319cb9525 Fixed: Importing completed downloads from NZBGet with post processing script failing
Fixes #2919
2019-02-06 19:30:02 -08:00
Mark McDowall 95cd327022 Already is spelled already 2019-02-06 19:30:01 -08:00
Mark McDowall 807cfebf76 Number input and max release size limit increased
Fixed: Number input changing value while typing
New: Maximum size limit has been doubled

Closes #2921
2019-02-06 19:30:01 -08:00
Mark McDowall a29b1259b5 Sort search input by sortTitle 2019-02-06 19:30:00 -08:00
Mark McDowall 102b8afd66 Various UI fixes
Fixed: Manual Import not working if no episodes are Missing
Fixed: Allow spaces in Must/Must not contain fields
Fixed: Show loading indicator when managing episodes and fetching data from the server
Fixed: Series images not loading for all search results
New: Auto focus search input when navigating to Add Series page
2019-02-06 19:30:00 -08:00
Mark McDowall 561fdef815 Fixed: Don't use extended episode number as release group 2019-02-06 19:30:00 -08:00
Mark McDowall 47db1db861 Minimize data sent when adding a new Indexer, Download Client, etc 2019-02-06 19:30:00 -08:00
Mark McDowall de3d7e925a Updated yarn.lock with postcss-color-function 2019-02-06 19:29:59 -08:00
Mark McDowall b04c286efc Fixed: Settings changes being cleared when leaving page despite confirmation they would be 2019-02-06 19:29:59 -08:00
Mark McDowall b8b82189f7 Fixed: Quality Profile group order no longer used when ordering results 2019-02-06 19:29:59 -08:00
Mark McDowall 08b65a954d Fixed: Cutoff unmet episode search failing when there are unknown items in the queue 2019-02-06 19:29:59 -08:00
Mark McDowall c6c998dc9f Fixed: poster not showing when adding a new series on a larger screen 2019-02-06 19:29:59 -08:00
Taloth Saldono b3ff91608e Fixed: Ignore series title before SxxExx when parsing language.
ref #861
2019-02-04 22:01:25 +01:00
Taloth Saldono 1d862db7c9 Fixed: Korean shows with more than 2 digit episode numbers.
closes #2901
2019-02-04 21:39:28 +01:00
Taloth Saldono 070cbeebbe Allow -suffix in PackageVersion and added that and PackageAuthor to the About page. 2019-02-04 20:44:47 +01:00
Mark McDowall 2c95f07cb2 Another path test fix 2019-02-01 10:58:02 -08:00
Mark McDowall 4a2277b424 Fix path tests 2019-02-01 10:57:49 -08:00
Mark McDowall a1f02916d4 Fixed: Importing of completed download when not a child of the download client output path 2019-02-01 10:57:39 -08:00
Mark McDowall 900dfd92d0 Fixed: Getting parent of UNC paths 2019-02-01 10:56:48 -08:00
Mark McDowall d6997b0588 Fixed getting parent path from a path without another slash
Fixed: Manual Import failing for some paths
2019-02-01 10:55:28 -08:00
Taloth Saldono 86c74b3ee0 Fixed failing ConfigFileProvider tests due to ConsoleLogLevel property error. 2019-01-21 22:28:45 +01:00
Taloth Saldono b1a8c70d20 Moved fast MoveSeriesFolder logic if same RootFolder into DiskTransferService. 2019-01-21 22:18:37 +01:00
Taloth Saldono 9107d1678c Fixed: Failure to match S12E00 special due to episode file vs folder being parsed differently. 2019-01-21 21:24:27 +01:00
Taloth Saldono 095234babc Added Console log level option in configfile, which defaults to Info. 2019-01-21 21:24:27 +01:00
Mark McDowall 8aecec507e New: Ability to forcibly grab a release from Interactive Search
Closes #395
2019-01-18 16:35:19 -08:00
Mark McDowall 70fb1551af New: Log when media info is unavailable for a file when building a file name 2019-01-18 16:35:19 -08:00
Mark McDowall fb67e123f4 Fixed: Changing series view 2019-01-18 16:35:19 -08:00
Mark McDowall ae2efbc116 Fixed: QueueSpecification failing when an unknown item is in the queue 2019-01-18 16:35:19 -08:00
Mark McDowall 4bc0ffa74d Improve renaming of series folder within the same root folder 2019-01-18 16:35:19 -08:00
Taloth Saldono 6fed932a61 Tweaked Color-Impaired styling for Series Index. 2019-01-18 23:50:08 +01:00
Taloth Saldono 939ebcf897 Added missing references to test projects. 2019-01-12 13:40:28 +01:00
Taloth Saldono 1239fa874d Merge branch 'develop' into phantom-develop
# Conflicts:
#	src/NzbDrone.Api/Extensions/Pipelines/GZipPipeline.cs
#              Merged changes to src/Sonarr.Http/Extensions/Pipelines/GZipPipeline.cs
2019-01-12 13:32:11 +01:00
Taloth Saldono 779ab39f50 Fixed failing test 2019-01-12 13:30:08 +01:00
Taloth Saldono 00283e3d6e New: Limit indexer/download client backoff to 5 min during the first 15 min of application start.
closes #2366
2019-01-12 13:15:41 +01:00
Taloth Saldono 2b4429f8b7 Fixed: Erroneously matching Anime 10.5 special as 10.
fixes #2868
2019-01-12 13:14:47 +01:00
Taloth Saldono 2446c4185a Added 10-bit to parser cleanup.
fixes #2870
2019-01-12 13:14:47 +01:00
Taloth Saldono 04900e5f90 Tweaked reverse title detection to handle triple digit episode numbers.
fixes #2871
2019-01-12 13:14:47 +01:00
Mark McDowall 8abdb8bf51 Update test for disabling cache 2019-01-11 11:55:41 -08:00
Mark McDowall e217068dbd Another path test fix 2019-01-10 23:26:25 -08:00
Mark McDowall e3a9f753d2 Fix path tests 2019-01-10 20:32:41 -08:00
Mark McDowall fc2a586453 Set max-age=0 on resources that should not be cached 2019-01-10 20:32:41 -08:00
Mark McDowall 979ea449bd Fixed: Edit button for Remote Path Mapping hidden on small screens 2019-01-10 20:32:41 -08:00
Mark McDowall ba5e2cfc45 Series type filter/sort
New: Filter/sort by series type
Fixed: Filtering excluding multiple values (is not x or y)
2019-01-10 20:32:41 -08:00
Mark McDowall 3b565d8bb1 New: Table options in page toolbar in addition to table header 2019-01-10 20:32:41 -08:00
Mark McDowall 21a92b62fd Fixed: Various issues with unknown items in queue 2019-01-10 20:32:40 -08:00
Mark McDowall 7e33261ccc Fixed: Move series logging a failure and a success message 2019-01-10 18:15:43 -08:00
Mark McDowall 6a489a0b8f Fixed: Importing of completed download when not a child of the download client output path 2019-01-10 18:15:42 -08:00
Mark McDowall 44e9c77568 UI styling/propType fixes 2019-01-10 18:15:42 -08:00
Mark McDowall 77816aebac Fixed: Series index table header when banners are shown 2019-01-10 18:15:41 -08:00
Mark McDowall 9dd967f2aa Fixed: Getting parent of UNC paths 2019-01-10 18:15:41 -08:00
Mark McDowall ef7a08879f New: Alternate styling for progress bars when color impaired mode is enabled 2019-01-10 18:15:40 -08:00
Mark McDowall 647e444a07 New: Add root folder to media management settings 2019-01-10 18:15:40 -08:00
Mark McDowall c417239652 Fixed: Don't auto zoom when focusing inputs on mobile devices, namely iOS 2019-01-10 18:15:39 -08:00
Mark McDowall e10c92878d Fixed: Calendar error after queue is refreshed 2019-01-10 18:15:39 -08:00
Mark McDowall fc376bfe3f Fixed: Validation failures not being shown if adding a series fails 2019-01-10 18:15:34 -08:00
Mark McDowall 36fe4eaa49 Fixed: Log events not loading from the first page when revisiting 2019-01-10 18:13:56 -08:00
Mark McDowall a3baab9671 Fixed: Failing to search for recently added series when there are unknown items in the queue 2019-01-10 18:13:55 -08:00
Mark McDowall edd6c0bd4c Fixed getting parent path from a path without another slash
Fixed: Manual Import failing for some paths
2019-01-10 18:13:54 -08:00
Taloth Saldono ce59db528b Fixed: Mono bug causing memory leakage when http connections use gzip compression.
The bug is registered upstream, but this commit works around the problem by doing the gzip decompression separately from the http stack.

Ref #2296
2019-01-10 20:13:48 +01:00
Taloth Saldono c14b339d80 Fixed typo in postinst preventing it from properly upgrading v3 alpha installs. 2019-01-02 22:06:58 +01:00
Taloth Saldono 8f4067adbb Also deal with migrations where the user installed using a different user. 2018-12-30 15:27:41 +01:00
Taloth Saldono 54160850b2 Increased debconf priority for username to high. 2018-12-29 13:51:34 +01:00
Taloth Saldono 524048c4b4 Also force branch if an external updater is used. 2018-12-29 13:51:34 +01:00
Taloth Saldono 565e625e21 Updated selection in UpdateSettings for external updaters. 2018-12-29 13:51:34 +01:00
Taloth Saldono 1ccae530d9 Added missing interval unit to Backup Settings. 2018-12-29 13:51:34 +01:00
Taloth Saldono e8161aa9f4 Added specific external updater messages for Apt and Docker. 2018-12-29 13:51:34 +01:00
Mark McDowall 5a24b8d294 Add PackageUpdateMechanism to system/status response 2018-12-29 13:49:42 +01:00
Mark McDowall aafa9cb6be Update UI
Squash into v3 UI
2018-12-29 13:49:42 +01:00
Taloth Saldono dbdb8e4436 Added System.Native to the ignored list since afaik it's not used by SharpRaven. 2018-12-29 13:49:42 +01:00
Taloth Saldono bfe2976463 Fixed failing tests. 2018-12-29 13:49:42 +01:00
Taloth Saldono 080bf6787a Fixed wrong sed wildcard. 2018-12-29 13:49:42 +01:00
Taloth Saldono 066a9de7ae Parse the package_info file to determine whether the UpdateMechanism is configured properly. 2018-12-29 13:49:42 +01:00
Taloth Saldono f87e2dd717 Copy unix-specific System.Runtime.InteropServices.RuntimeInformation to linux output. 2018-12-29 13:49:42 +01:00
Taloth Saldono 1cf80c3ba0 Added release_info to build output instead of only in the debian package. 2018-12-29 13:49:42 +01:00
Taloth Saldono 6345d0e73b Replace Major.Minor.Revision in the TC provided BuildNumber with the packageVersion. 2018-12-29 13:49:42 +01:00
Taloth Saldono 7f5c1b0d5f Added support to migrate existing nzbdrone+systemd installs. 2018-12-29 13:49:42 +01:00
Taloth Saldono b7259e3ebb Added support to handle the BuiltIn Updater for 3.0.1 packages. 2018-12-29 13:49:42 +01:00
Taloth Saldono fb6e4c0130 Various fixes 2018-12-29 13:49:42 +01:00
Taloth Saldono 241c26e099 Purge should use the data folder as specified by debconf 2018-12-29 13:49:42 +01:00
Taloth Saldono e2ccb4c049 Deal with wrong permissions for folders. 2018-12-29 13:49:42 +01:00
Taloth Saldono 975fe98cbf Moved from /opt back to /usr/lib based on debian policy. 2018-12-29 13:49:42 +01:00
Taloth Saldono 40a7cf32c5 Added debconf to allow user to set user, group and config dir. Only the group is high prio and thus asked for by default. 2018-12-29 13:49:42 +01:00
Taloth Saldono 9e909cafdd Added check in preinst to cancel install if NzbDrone is still running. 2018-12-29 13:49:42 +01:00
Taloth Saldono db47308762 Tell dpkg that sonarr replaces nzbdrone instead of a pure conflict. 2018-12-29 13:49:42 +01:00
Taloth Saldono 6d41f7895f Move binaries to subdir for easier builtin updater changes. 2018-12-29 13:49:42 +01:00
Taloth Saldono 7cf4c6f655 Use clideps to determine mono dependencies instead of the monolithic libmono-cil-dev. 2018-12-29 13:49:42 +01:00
Taloth Saldono c63186a798 Use dh_systemd to configure systemd unit installation. 2018-12-29 13:49:42 +01:00
Mark McDowall a0ce2d7cdf New: Parse release in square brackets at end of file name
Closes #966
2018-12-29 13:08:57 +01:00
Taloth Saldono de61ecbfd2 Show unknown items in queue
New: Download items from unknown series now appear on the queue and can be imported with Manual Import.
2018-12-29 13:08:57 +01:00
Mark McDowall 5f6f4915a1 Delay import when absolute episode number is missing
New: Delay import is absolute episode number is required and is missing for EpisodeFormat
2018-12-29 13:08:56 +01:00
Mark McDowall f345977e3f Add upgrade allowed to language and profiles 2018-12-29 13:08:56 +01:00
Mark McDowall 853f25468c Preferred words
New: Ability to prefer releases based on terms in release title
2018-12-29 13:08:56 +01:00
Mark McDowall ac709c39ab New: Default size limits 2018-12-29 13:08:55 +01:00
Mark McDowall 4939b77a6c Upgrade signalR to 2.4.0 2018-12-29 13:08:55 +01:00
Mark McDowall ded0caee39 New: Series title first character renaming token 2018-12-29 13:08:55 +01:00
Mark McDowall 3b9ed49d0f New: Option to disable rescanning of series folder after RefreshSeriesInfo
Closes #1592
2018-12-29 13:08:54 +01:00
Mark McDowall 7e79ccd710 Fixed: Finding files with unexpected quality in the filename 2018-12-29 13:08:54 +01:00
Mark McDowall 575c5af1f8 Upgrade SharpRaven to 2.4.0 2018-12-29 13:08:54 +01:00
Mark McDowall ca079a77ce New: Renaming tokens for IMDB ID, TVDB ID and TV Maze ID
Closes #2659
2018-12-29 13:08:54 +01:00
Mark McDowall a550186337 New: Choose extension for magnet links in Torrent Blackhole
Closes #2165
2018-12-29 13:08:53 +01:00
Mark McDowall 8594a93cf5 New: Pushover device setting 2018-12-29 13:08:53 +01:00
Mark McDowall a86397f4bd New: Choose PushBullet device from the UI 2018-12-29 13:08:53 +01:00
Mark McDowall d52b63e5e9 New: Add tags to Kodi metadata 2018-12-29 13:08:53 +01:00
Mark McDowall 400838c79a New: Series Title with Year renaming token 2018-12-29 13:08:52 +01:00
Mark McDowall 62b03adb53 Removed NotifyMyAndroid and Pushalot
Fixed: Removed NotifyMyAndroid notifications
Fixed: Remove Pushalot notifications
2018-12-29 13:08:52 +01:00
Mark McDowall ffc49c9049 Fixed: Removed old Media Browser metadata 2018-12-29 13:08:52 +01:00
Mark McDowall 3b042707f5 Interactive Season Search
New: Interactive Season Search
Fixed: BTN will no longer include season packs for individual episode searches
2018-12-29 13:08:52 +01:00
Mark McDowall 36b9c51163 Improved Command Queue
New: Limit concurrent tasks that require disk access
New: Prevent other tasks from running during application update
2018-12-29 13:08:51 +01:00
Mark McDowall 07be9cf47a New: Improved Plex Media Server authentication (Manually update settings) 2018-12-29 13:08:51 +01:00
Mark McDowall 897f3fea99 New: Bluray 1080p and 2160p remux qualities 2018-12-29 13:08:51 +01:00
Mark McDowall a3b90650be Remove unused references 2018-12-29 13:08:50 +01:00
Mark McDowall 673efe46fb MSBuild 15 2018-12-29 13:08:50 +01:00
Mark McDowall a17a60f914 Updated Debian package 2018-12-29 13:08:48 +01:00
Mark McDowall 07cbc71aa2 Secure URLs for Skyhook and Services 2018-12-29 13:08:48 +01:00
Mark McDowall 81d6c0d210 New: Backup options and restoration 2018-12-29 13:08:48 +01:00
Mark McDowall fdbe45c0ab New: Ability to rename using long paths when available 2018-12-29 13:08:47 +01:00
Mark McDowall 5666369cc4 Fixed: Default Windows Service Account 2018-12-29 13:08:47 +01:00
Mark McDowall e3b3e65409 ESLint and Stylelint during build 2018-12-29 13:08:47 +01:00
Mark McDowall c3166e08b4 Migrate AppData folder 2018-12-29 13:08:47 +01:00
Mark McDowall adaf428aa7 v3 Binaries 2018-12-29 13:08:47 +01:00
Mark McDowall ef70df1db3 Update Logos 2018-12-29 13:08:46 +01:00
Keivan Beigi c69ca290cf Removed anycpu from sln file 2018-12-29 13:08:46 +01:00
Keivan Beigi 50d4d7a19d removed legacy UI components 2018-12-29 13:08:46 +01:00
Keivan Beigi ab12c51e0f removed idea folder 2018-12-29 13:08:45 +01:00
Keivan Beigi e343f8e35e Removed old UI 2018-12-29 13:08:45 +01:00
Mark McDowall 5894b4fd95 v3 UI 2018-12-29 13:08:43 +01:00
Mark McDowall 99feff549d Upgrade Owin to 3.1.0 2018-12-29 13:08:42 +01:00
Mark McDowall 37518349b9 Upgrade Nancy to 1.4.4 2018-12-29 13:08:42 +01:00
Mark McDowall 5b4e194f25 Upgrade signalR to 2.2.2 2018-12-29 13:08:42 +01:00
Mark McDowall 296881b358 Target .net 4.6.1 2018-12-29 13:08:41 +01:00
Mark McDowall efb9c0791f New: Testing Custom Script executes the script and verifies the exit code 2018-12-29 13:08:41 +01:00
Mark McDowall acc901455b New: Separate automatic and interactive searches
Closes #253
2018-12-29 13:08:40 +01:00
Mark McDowall cfb7494992 Removed Drone Factory 2018-12-29 13:08:40 +01:00
Mark McDowall f31ac39e37 Quality groups 2018-12-29 13:08:39 +01:00
vawen 068ea1e934 New: Language Profiles
Closes #274
2018-12-29 13:08:38 +01:00
Mark McDowall 7297c1b8e4 v3 API 2018-12-29 13:08:37 +01:00
Mark McDowall 211f3769e1 Sonarr.sln 2018-12-29 13:08:23 +01:00
Mark McDowall 2686c78f06 Simplified logo 2018-12-29 13:08:22 +01:00
Mark McDowall 5b385d9900 Build fixes and cleanup 2018-12-29 13:08:22 +01:00
Taloth Saldono 31b266659e Fixed bad test due to skyhook now doing it's own fuzzy search. 2018-12-29 13:05:03 +01:00
Taloth Saldono e071b0c2e0 DataMapper LazyLoaded needlessly keeping the parent mapper alive. 2018-12-29 12:45:07 +01:00
Taloth Saldono 270f04d2d2 Fixed: Excessive memory usage due to sqlite cache configuration.
ref #2296
2018-12-29 12:43:35 +01:00
Mark McDowall 9af57c6786 New: Store last search time for EpisodeSearch
Closes #420
2018-12-06 20:59:09 -08:00
Mark McDowall ff4a550cbb New: Include OriginalFilePath with Episode Files
Closes #2336
2018-12-06 20:59:09 -08:00
Kevin Richter 537e4d7c39 Fix Quality Detection with DDP5.1 2018-11-24 11:24:24 +01:00
Taloth Saldono 9f16d9b2fc Fixed: File names and release titles lacking a series title and starting with the Air date.
fixes #2825
2018-11-21 22:02:51 +01:00
Taloth Saldono ae6d920e2a Updated error message if skyhook and other services respond with html content.
closes #2817
2018-11-14 21:48:56 +01:00
Mark McDowall 0d22f9ec29 Improve logging when rejecting release with unmonitored episodes 2018-11-11 21:11:14 -08:00
Mark McDowall 699076a405 New: Added warning for Download Station that 2FA is not supported
Closes #2451
2018-11-10 16:23:33 -08:00
Jeffrey Neer df593f486f New: Added priority levels to Join Notifications 2018-11-10 14:51:14 -08:00
Mark McDowall 0d95873a05 New: Parsing french anime releases with single absolute episode number
Closes #2798
2018-11-03 18:42:06 -07:00
Mark McDowall b20acc9063 Fixed: Sort The A-Team properly in series list 2018-11-03 11:58:00 -07:00
Mark McDowall 70d6d25178 New: Parse names with 1080i as 1080p if they are not RAW HD
Closes #2793
2018-11-03 11:52:02 -07:00
Mark McDowall 196d165432 New: Parse names with FHD as 1080p
Closes #2793
2018-11-03 11:45:34 -07:00
Mark McDowall bb3ca998fc Restrict 4k parsing to avoid false positives 2018-11-03 11:30:41 -07:00
Mark McDowall da73221cef Fixed: Handling of poorly formed items when parsing results from indexer 2018-10-24 20:43:52 -07:00
Mark McDowall 36f66eed21 New: Parse names with 4k as 2160p
Closes #2788
2018-10-24 20:13:57 -07:00
Mark McDowall 8e916d60f5 Fixed: Parsing of specials with only season and episode numbers in the file name 2018-10-24 18:32:22 -07:00
Mark McDowall 44048207f2 Remove file quality matches release import spec
New: Don't reject imports when quality doesn't match release quality
New: Reject grab when release was grabbed and imported already
Closes #2783
2018-10-22 20:37:32 -07:00
Mark McDowall b73b99df8d Fixed: Don't clean Kodi library if Always Update is disabled and video is playing
Fixes #2773
2018-10-22 14:20:22 -07:00
Mark McDowall ad69ecc5eb Fixed: Use season number from episode instead of parsed from release for custom scripts
Closes #2748
2018-10-07 19:03:32 -07:00
Mark McDowall 1304bc8fb9 Fixed: Exclude /snap/* locations from disk space
Closes #2743
2018-10-07 19:03:32 -07:00
Mark McDowall a4f63e728c Fixed: Don't use media info for non-video files
Fixes #2745
2018-10-07 19:03:32 -07:00
Jeff Byrnes 307b3536b7 New: Compatibility with Hombrew-installed mono 2018-09-15 10:49:22 -07:00
Mark McDowall 24c6d3f4b3 Don't read response stream if it equals Stream.Null 2018-09-14 17:50:13 -07:00
Mark McDowall 4a052708c8 New: Updated pushover app clone URL 2018-09-04 00:19:09 -07:00
Mark McDowall 39a8d4f0d8 Fixed: Parsing of new hashed release filenames (######_##.ext) 2018-09-03 11:24:48 -07:00
Mark McDowall ca22a25842 New: Add stopped option for rTorrent 2018-08-28 18:14:55 -07:00
Mark McDowall ff9a9a5e4d More restrictions when using download client title or folder name for parsing
Fixes #2663
2018-08-27 21:35:03 -07:00
Mark McDowall 3d7c59bc3b New: Add unique IDs to Kodi metadata
Closes #2711
2018-08-27 20:42:32 -07:00
Mark McDowall 63ea1f1afd Fixed: Skip sample check when rescanning series folder 2018-08-19 09:23:34 -07:00
Mark McDowall baf8f6cca6 Fixed: Parsing multi-episode in square bracket
Fixes #2669
2018-08-18 11:22:51 -07:00
Mark McDowall c67c7e1b5a More flexible matching some anime releases 2018-08-18 10:56:18 -07:00
Mark McDowall 46d8e5830a Fixed: Concurrent manual imports silently failing 2018-08-18 10:56:18 -07:00
Taloth Saldono 37054673b7 Fixed: Too big eta in qbit api still occurring on official builds. 2018-08-07 19:08:38 +02:00
Mark McDowall 86bc5c5547 Fixed: Parsing of some anime releases with season number in title
Fixes #2684
2018-07-30 19:20:40 -07:00
Taloth Saldono fc44607c73 Added missing UrlBase validation for SabnzbdSettings. 2018-07-18 07:39:58 +02:00
Taloth Saldono 2a1421f488 Fixed: Skip torrents in Deluge api that don't have hashes.
closes #2566
closes #2567
closes #2664
2018-07-16 19:16:26 +02:00
Nicholas Landriault d7a054f637 Deluge torrents that don't have a hash are skipped
In some cases torrents in Deluge may not have a hash (ex: https://torguard.net/checkmytorrentipaddress.php). This causes Sonarr to fail when loading the torrents from Deluge with error message: 'Unable to communicate with deluge. Object reference not set to an instance of an object'. This commit simply causes Sonarr to skip over the torrent with the missing hash and continue loading torrents that do have hashes.
2018-07-16 19:11:10 +02:00
Taloth Saldono 9c9ad9aec3 New: Added optional UrlBase to Nzbget and Sabnzbd settings.
ref #1651
2018-07-15 12:24:27 +02:00
Mark McDowall 1467c52e03 Fixed: Multi-file torrents in Vuze with different folder and file names
Fixes #2571
2018-07-11 19:01:41 -07:00
Mark McDowall e407145d10 Fixed: .vtt files treated as subtitles 2018-07-08 19:22:42 -07:00
Taloth Saldono 476110b1de Fixed: Store BitRate_Nominal (VBR) mediainfo in database instead of only BitRate.
ref Radarr/Radarr#2860
2018-07-08 18:36:36 +02:00
Taloth Saldono 45f9f45f50 Fixed: Quality parser for the rare HD-DVD. 2018-07-07 20:04:45 +02:00
Taloth Saldono d581d997c2 Fixed: Ignore /etc in System disk overview. 2018-07-07 11:09:04 +02:00
Taloth Saldono 633344e5bb Disabled httpbin.org tests for now due to the site being flaky. 2018-07-06 21:53:03 +02:00
Taloth Saldono 0cce6b74f9 Added logging of json snippets on json deserialization errors. 2018-07-06 21:44:15 +02:00
Taloth Saldono 8b8bfb9bf0 Added third httpbin site. 2018-07-06 19:50:29 +02:00
Taloth Saldono 7241ca4ae9 Run http tests more gracefully. 2018-07-06 19:09:59 +02:00
Taloth Saldono e9b11e55e9 Fixed: Regression with importing nested obfuscated directories.
Closes #2640
2018-07-04 21:55:08 +02:00
Mark McDowall 48126f55ed Fixed: Parsing titles with question marks
Fixes #2637
2018-06-27 19:54:25 -07:00
Mark McDowall cb549507ee Fixed: Parsing dates using underscores for separation 2018-06-27 18:32:28 -07:00
Mark McDowall a0b6cdb08e Fixed: Forced seeding in QBittorrent status treated as complete 2018-06-27 18:31:44 -07:00
Taloth Saldono 9b9597093c Fixed: Regression causing Manual Import to ignore user provided information. 2018-06-21 07:23:20 +02:00
Taloth Saldono c92fb4d9c0 Fixed: Mini-series with multiple episode E01-E02.
fixes #2614
2018-06-17 15:57:33 +02:00
Taloth Saldono 88c659059b Added {MediaInfo AudioLanguages} {.. SubtitleLanguages}
fixes #2593
2018-06-16 22:19:33 +02:00
Taloth Saldono d1ced600a1 Handle empty Episode list during decision maker. 2018-06-16 21:44:37 +02:00
Taloth Saldono a5977f2752 Fixed: Manual Import not using Release Group during renamer. [develop only]
fixes #2612
2018-06-16 21:44:37 +02:00
Mark McDowall 8668e8b036 Use FolderEpisodeInfo instead of parent of FileEpisodeInfo
Fixes #2338
Fixed: Detecting some incorrect file name paring during import
2018-06-09 21:42:01 -07:00
Mark McDowall 783c27a584 Fixed: Initially pausing torrents in QBittorrent
Fixes #2599
2018-06-08 16:38:20 -07:00
Taloth Saldono fde0409650 Fixed WithData sample length not using parameter. 2018-06-08 22:08:09 +02:00
Taloth Saldono 2ed5abf4d3 Also add as data to exception so sentry gets it. 2018-06-08 19:58:58 +02:00
Taloth Saldono cb372f284d Log indexer response to Trace if an exception occurs. 2018-06-08 19:29:08 +02:00
Taloth Saldono 5d674a07f7 Fixed SeedConfigProvider failing on ReleasePush. 2018-05-26 00:16:34 +02:00
Mark McDowall 59e69c1839 Update bug issue template 2018-05-21 12:43:07 -07:00
Mark McDowall 89a3eec6ae Fixed: Parsing of anime releases with year and EP before episode number
Fixes #2578
2018-05-21 00:31:03 -07:00
Mark McDowall 6517f1af14 New: Treat 1440p releases as 1080p instead of 480p
Closes #2558
2018-05-20 23:33:45 -07:00
Taloth Saldono b95c4d37d7 Fixed validation error for Seed Ratio on btn. 2018-05-20 12:34:24 +02:00
Taloth Saldono 7388e8c2c2 Fixed broken test for nested settings. 2018-05-20 10:19:52 +02:00
Taloth Saldono b837ab41eb Fixed broken tests. 2018-05-19 22:15:19 +02:00
Taloth Saldono de6615f586 Added a few more units. 2018-05-19 21:07:01 +02:00
Kevin Richter 0947dfc423 Stop deluge torrent when they reach stop ratio 2018-05-19 21:07:01 +02:00
Kevin Richter 002ed9e4c7 Fix parsing of entered time for seed time 2018-05-19 21:07:01 +02:00
Taloth Saldono 1a6a3038d6 Added warnings for minimum criteria for BTN. 2018-05-19 21:07:01 +02:00
Taloth Saldono d86beb06f7 Added fancy unit indicator to fields. 2018-05-19 21:07:01 +02:00
Taloth Saldono 6df61e305d Added Seed Time and Season-Pack seed time. 2018-05-19 21:07:00 +02:00
Taloth Saldono 47018b02a8 Added nested settings for seed criteria. 2018-05-19 21:07:00 +02:00
Taloth Saldono b6ef4d50dc Fixed more C#7. 2018-05-19 21:07:00 +02:00
Kevin Richter 2d86e44c63 New: Added advanced setting per indexer to override seed ratio limit for supported clients. 2018-05-19 21:07:00 +02:00
Taloth Saldono 69f8fc4d5e Added support for nested settings models so settings can be grouped together and reused for multiple providers. 2018-05-19 21:06:59 +02:00
Taloth Saldono b339fcbd82 Fixed mono debug check. 2018-05-19 21:06:08 +02:00
Mark McDowall 7d1b09ac1b Update issue templates 2018-05-18 14:40:18 -07:00
Mark McDowall 55d01f620a Fixed: Setting inital state of torrents sent to QBittorrent
Fixes #2565
2018-05-16 14:00:21 -07:00
Mark McDowall 39d0d08ced Fixed: Removed old warning that Torrent Blackhole does not support magnet links 2018-05-16 13:59:33 -07:00
Mark McDowall 94f8cc9b62 Improve parsing of standard titles with junk in []
Fixed: Improve parsing of standard series releases/files with square brackets at the end
2018-05-11 19:08:47 -07:00
Mark McDowall 17b998f01f Improve parsing of non-standard date releases
Fixed: Parsing of some releases with season and episode numbers along with date
2018-05-11 18:34:34 -07:00
Mark McDowall 18415ddb30 New: Remove additional URL prefixes from release names
Closes #2542
2018-05-09 13:53:37 -07:00
Mark McDowall 2b3d0235cf Don't read media info when disabled in settings
Fixed: Don't read media info for existing files if "Analyse video files" disabled
Fixes #2549
2018-05-09 13:53:27 -07:00
Mark McDowall c687f45ff6 Fixed: Don't try to find episodes if parsing failed 2018-05-09 13:35:56 -07:00
Mark McDowall 13f540f1f5 Fixed: Rescan series if refresh fails
Closes #2540
2018-05-02 23:34:05 -07:00
Mark McDowall a7aff3bd9a Upgrade NLog to 4.5.3
Closes #2535
2018-05-01 23:20:54 -07:00
Taloth Saldono 03997e2a0d Switched to BigInteger for qbit eta as workaround for api bug, tyvm. 2018-04-30 22:18:42 +02:00
Mark McDowall 60c73df685 Fixed: Custom script unable to execute when release processed via /release/push API 2018-04-29 22:04:18 -07:00
Mark McDowall b5ce3b2773 Fixed: Improved parsing of iTunes named files 2018-04-29 21:56:33 -07:00
Qstick 6c09b7dc28 Fixed: Throw SonarrStartupException if can't access AppFolder Location 2018-04-22 13:25:50 -07:00
Mark McDowall bf1fbd7fc4 Fixed: Remove leading space from file names
Fixes #2365
2018-04-22 12:40:11 -07:00
Mark McDowall 401530db65 Fixed RemoveGrabbed tests 2018-04-22 09:40:44 -07:00
Mark McDowall 4fb7cb3a8b Fixed RemoveRejected tests 2018-04-22 09:27:07 -07:00
Mark McDowall aba8abb176 Fixed: Suppress warnings for daily style extra files
Fixes #2503
2018-04-21 15:25:21 -07:00
Taloth Saldono 2b3956cb60 Honor x264 tag in filename if mediainfo does not conclusively indicate h264.
Closes #2500
2018-04-18 22:31:56 +02:00
Taloth Saldono 1b0647423d Updated a few harder to detect MediaInfo VideoCodec formats. 2018-04-18 22:07:38 +02:00
Taloth Saldono 5b627a8bc2 Fixed missing existingfile flag. 2018-04-15 16:52:30 +02:00
Taloth Saldono 62f7e90748 Fixed db migration issue. 2018-04-14 22:24:48 +02:00
Taloth Saldono fd1064cb69 Fixed errors in MatchesFolderSpecification and tests. 2018-04-14 22:21:48 +02:00
Taloth Saldono c677736a8f Fixed: Hide fallback pending releases if temporarily delayed.
Also batch changing of Pending Release Reason.
2018-04-14 22:07:08 +02:00
Taloth Saldono 67038ddd5e Cache EventAggregator Subscribers. 2018-04-14 22:07:08 +02:00
Taloth Saldono ff8eb0b67f Added additional indexes to speed up DecisionMaker performance. 2018-04-14 22:07:08 +02:00
Taloth Saldono 70afacee3f Refactored PendingRelease logic for performance. 2018-04-14 22:07:08 +02:00
Taloth Saldono 5b0e959d3f Debounce Command Notifications. 2018-04-14 22:07:08 +02:00
Taloth Saldono b7c5639a9d Speed up sqlite3 initialization by disabling unused features. 2018-04-14 22:07:08 +02:00
Taloth Saldono 740af2751a New: Season Search for Daily series type.
closes #755
2018-04-14 22:07:08 +02:00
Mark McDowall 81e385bebf New: Use media info during import to extract resolution for quality
Closes #448
Closes #1105
2018-04-14 22:01:24 +02:00
nivong 650d18797a Added missing bracket in issue template 2018-04-13 08:48:17 -07:00
Mark McDowall 49e91b8660 Update issue template regarding title prefixes 2018-04-11 20:45:33 -07:00
Taloth Saldono 4fb3d99153 Fixed: Updated AnimeTosho url.
closes #2501
2018-04-11 20:53:32 +02:00
Paul Kozlovitch a29f133e5d Fixed: Pasting title into add new series search input will trigger search 2018-04-03 09:31:49 -07:00
dnnr f277b60cc9 Fix grammar in EditProfileViewTemplate 2018-04-02 15:08:32 +02:00
Taloth Saldono 6d8eebcd30 Revised deletion of cookies. 2018-04-01 20:29:46 +02:00
Taloth Saldono 91c97ed232 Merge branch 'nfo-detector' into develop 2018-03-24 11:54:53 +01:00
margaale 13a259b473 check if mono is running with --debug arg 2018-03-24 11:49:27 +01:00
Taloth Saldono d3f8e0ef4c Fixed: Revised handling of cookies in case of redirects. 2018-03-24 11:43:57 +01:00
Taloth Saldono 700751715b Add form param before submitting request. 2018-03-24 11:43:57 +01:00
Taloth Saldono 58e939beda Fixed: Preserve existing watched status in Kodi nfo files on metadata refreshes (not file upgrades). 2018-03-18 20:10:50 +01:00
Taloth Saldono b19b6c93d3 New: Detect Kodi .nfo vs Scene .nfo and handle as appropriate. Rename scene .nfo to .nfo-orig only when needed. 2018-03-18 20:10:50 +01:00
Taloth Saldono 17e4a8ab66 Moved tests. 2018-03-18 20:10:50 +01:00
Taloth Saldono 3573e631c8 Fixed: Recycle Metadata files on episode removal. 2018-03-18 20:10:50 +01:00
Taloth Saldono 52588509ed Fixed failing test and some flaky tests. 2018-03-16 22:00:59 +01:00
Thirrian e607a67f00 Fixed: Sorting for series "A.P. Bio"
closes #2450
2018-03-12 17:03:59 +01:00
Kevin Richter 96d7382a1c Fixed: Parsing # in front of absolute numbers 2018-03-10 21:41:28 +01:00
Taloth Saldono e15530cee1 Fixed: TheXEM mapping with one scene release to multiple tvdb episodes. 2018-03-09 23:10:30 +01:00
Taloth Saldono 940f59468a New: Required/Ignored restrictions now support /pattern/ regular expressions. 2018-03-09 23:10:29 +01:00
Marcelo Castagna ff885ab3bd Fixed: Added errorcode 160 - Permission denied on FileStation for easier diagnostics 2018-03-09 22:53:15 +01:00
Steven 17cfaf170e Add missing error check when adding a magnet link to deluge (#2295)
* Add missing error check when adding a magnet link to deluge

* Fix typo.
2018-03-09 22:51:52 +01:00
Thirrian f1b2186313 Fix typo 2018-03-09 22:49:54 +01:00
Mark McDowall ac379e3b84 Fixed: Don't add category when removing torrent from qBittorrent
Fixes #2438
2018-03-02 06:32:24 -08:00
Taloth Saldono 616454edb4 Fixed: Preserve existing watched status in Kodi nfo files on metadata refreshes (not file upgrades). 2018-03-01 20:36:07 +01:00
Taloth Saldono d284969379 New: Detect Kodi .nfo vs Scene .nfo and handle as appropriate. Rename scene .nfo to .nfo-orig only when needed. 2018-03-01 20:35:12 +01:00
Taloth Saldono f0eba619f3 Moved tests. 2018-03-01 18:30:09 +01:00
Taloth Saldono 448cfff769 Fixed: Recycle Metadata files on episode removal. 2018-03-01 18:30:08 +01:00
Taloth Saldono 99ee59e9cc Fixed: Updated NLog to 4.5 RC6 to handle mono 5.10 2018-02-27 22:41:46 +01:00
Taloth Saldono c9ff55f601 Added console logging in case NLog fails to initialize. 2018-02-27 22:41:42 +01:00
Mark McDowall ecb0438b16 New: Add MediaInfo to Episode Files returned from the API 2018-02-21 20:40:26 -08:00
Mark McDowall d0acbe992e Log response content from Kodi when checking for errors 2018-02-21 20:39:53 -08:00
Mark McDowall fb44e67ea8 Fixed: Parsing of WEB-DLMux files
Closes #2422
2018-02-21 20:37:25 -08:00
Mark McDowall 3f86c10c44 Fix broken profile test 2018-02-12 17:37:42 -08:00
Mark McDowall 9e7f0c859f New: Opt-in to delete empty series/season folders 2018-02-11 09:01:41 -08:00
Mark McDowall a9c54a1f01 Remove empty series folders when create empty folders is false
New: Remove empty series folders after disk scan/deleting last episode file and create emoty series folders is disabled

Closes #2395
2018-02-10 18:16:59 -08:00
Mark McDowall 1c36bc5fee Return total space when adding new root folder 2018-02-10 10:15:52 -08:00
Mark McDowall b529270f71 Improve error message when deleting a profile that is in use 2018-02-10 10:14:28 -08:00
Mark McDowall bcf45bb68a Fixed: Send category to qBittorrent when adding torrent/magnet 2018-02-10 10:13:35 -08:00
Mark McDowall 9744873e7a Fixed: Removexpost suffix from release groups 2018-02-04 12:22:26 -08:00
Mark McDowall 9a61bb13e6 Fixed: Disable delete button on used quality profiles 2018-02-02 08:54:29 -08:00
Mark McDowall 2f69a158b1 API: Include total space with root folders
Closes #2390
2018-02-01 17:58:55 -08:00
Mark McDowall 4975793b45 Don't reject paths under /srv
Closes #2388
2018-01-31 19:56:04 -08:00
Taloth Saldono d93645fb46 Fixed: Show error if System->Logs fails to load due to ad blocker. 2018-01-27 23:27:52 +01:00
overkill32 d617b6c6e3 Fixed typo in log file 2018-01-27 13:10:41 -08:00
Mark McDowall cc01608f0a Fixed: Show error message when manual import fails to load
Fixes #2384
2018-01-26 22:26:52 -08:00
Mark McDowall 8a3db99811 Fixed: Remove Pre and postbot suffixes from release groups 2018-01-23 19:27:19 -08:00
Mark McDowall 883f7b88cf Removed DailyEpisodeMatchSpecification in favour of SingleEpisodeSearchMatchSpecification
Fixed: Parsing releases with standard and daily formats
2018-01-23 18:53:02 -08:00
Taloth Saldono 03da779ddb Fixed Season Special import. 2018-01-23 16:32:26 +01:00
Taloth Saldono 7c95fc23d0 Fixed Season Special import. 2018-01-22 21:35:20 +01:00
Mark McDowall aa2174b43c Ensure request exists before trying to get query parameters
Fixes #2379
2018-01-21 12:59:00 -08:00
Mark McDowall a023732c1c New: Delay import of episodes without titles temporarily
Closes #2098
2018-01-20 23:56:35 -08:00
Mark McDowall 90f9dce44a Ensure request exists before trying to get query parameters 2018-01-16 12:13:12 -08:00
Mark McDowall ea54b10bf7 First try 2018-01-14 18:12:23 -08:00
Mark McDowall 223ccb5a73 Fixed broken DeleteEpisodeFileFixture tests 2018-01-14 16:23:21 -08:00
Mark McDowall 968d8159a6 Added tests for DB Converters
Closes #482
2018-01-14 12:42:18 -08:00
Mark McDowall 245bf6c7d6 Optionally include season images when fetching series from API
Closes #464
2018-01-13 15:01:33 -08:00
Mark McDowall ee673cd152 Log indexer when processing results
Closes #295
2018-01-13 14:10:19 -08:00
Mark McDowall a1b6095f6e Add Paused above Use SSL for NZBGet 2018-01-13 13:55:28 -08:00
Mark McDowall 5663eb527b Add paused options for Deluge and Transmission
New: Option to add paused for Deluge
New: Option to add paused for Transmission

Closes #795
2018-01-13 11:58:24 -08:00
Mark McDowall 8e8da76467 New: Device names for Join notifications
Closes #2364
2018-01-12 19:14:45 -08:00
Taloth Saldono 8a6acd999a Reordered UI a bit and code cleanup. 2018-01-12 22:00:02 +01:00
Mark McDowall f32e8beab8 Fixed: Parsing of prefixed range multi-episode filenames
Fixes #2359
2018-01-12 12:40:36 -08:00
Marcelo Castagna d25e5fe329 New: Setting for absolute maximum size for a release
Closes #2367 #1996
2018-01-12 20:50:21 +01:00
Taloth d0e8aef949 New: Consider all scene SxxE00 releases Specials as well.
* New: Consider all scene SxxE00 releases Specials as well.

* Cleanup special episode titles and handle E00 specials with existing scenemappings.

* Moved handling of scene mapped E00 to central function.
2018-01-04 21:49:16 +01:00
Kevin Richter ad10349878 Ignore macOS DS_Store files (#2356) 2017-12-31 13:13:02 +01:00
Mark McDowall 560fe31280 csproj fix 2017-12-29 23:37:20 -08:00
Mark McDowall c67a4a61a4 New: Run missing root folder health check when an import is successful
Closes #2309
2017-12-29 22:30:16 -08:00
Mark McDowall 6e85b8782e Fixed: Set air date to 1970-01-01 if episode aired before (mono)
Fixes #2345
2017-12-29 10:56:11 -08:00
Mark McDowall f719c5ccf1 Fixed: Improve logging for invalid NZB messages
Closes #2349
2017-12-28 22:05:20 -08:00
Mark McDowall e8c5e417b6 Improve handling of multiple seasons in one file
Fixed: Invalid scene numbering leading to manual import failing to load
Fixes #2255
2017-12-28 21:48:05 -08:00
Fish2 3492d6bbaa Cleanup moment.js deprecated zone and add functions 2017-12-26 10:10:13 -08:00
Taloth Saldono 15bd181f16 Fixed failing tests in DownloadStation. 2017-12-19 22:49:27 +01:00
Taloth Saldono 96108cb758 Fixed up comments. 2017-12-19 18:38:29 +01:00
Taloth Saldono 459d6ea906 Fixed: Mono internals does not properly copy/move symlinks, but instead copies the contents. 2017-12-19 18:34:53 +01:00
margaale 747f3e171c Fixed: Handling of unknown status types in DownloadStation. 2017-12-19 18:32:48 +01:00
Mark McDowall b371296e78 Validate before deleting series folders
Closes #264
2017-12-16 12:16:33 -08:00
Taloth Saldono 0553a39a02 Rare timing issue on first-use causing duplicate naming config. 2017-12-13 20:25:29 +01:00
Taloth Saldono 4ca5e978ac Fixed MediaCover endpoint. 2017-12-13 20:18:29 +01:00
Mark McDowall 025440ee86 Don't handle content requests in IndexHtmlMapper 2017-12-13 19:16:50 +01:00
Taloth Saldono 40016f2928 Merge branch 'security-patch-2017-1' into develop 2017-12-07 19:44:58 +01:00
Taloth Saldono 581320e3a4 Fixed: Security Vulnerabilities allowing authentication to be bypassed (discovered by Kyle Neideck) 2017-12-07 19:42:18 +01:00
Taloth Saldono 5fae2ac66f Improved handling of the Preflight OPTIONS request. 2017-12-07 19:35:53 +01:00
Taloth Saldono 3ba61cd5aa Fixed: Limit Cross-Origin access to api and specific shared resources. 2017-12-07 19:35:46 +01:00
Taloth Saldono 0008f28236 Fixed: Case sensitivity in handling of static resource names. 2017-12-07 19:35:39 +01:00
Mark McDowall f9ec4c6b0d Updated tests to allow for older versions of mediainfo 2017-12-06 13:22:46 -08:00
Mark McDowall 2b20b91ec5 Updated tests to reflect changes in mediainfo 2017-12-05 14:30:58 -08:00
Mark McDowall e070eeda4a New: Upgrade MediaInfo to 17.10 (Windows/macOS) 2017-12-04 18:52:17 -08:00
Mark McDowall 195a761c29 Fixed: Sorting by episodes on series overview and poster views
Fixes #2167
2017-12-04 18:51:47 -08:00
Mark McDowall 4399d272dc Fixed: Import failures when audio channels are in an unexpected format
Fixes #2318
2017-12-03 19:58:31 -08:00
Mark McDowall 9d7547e941 Add debug logging when formatting audio channels 2017-12-02 16:16:53 -08:00
Mark McDowall 0a690eb4d8 New: Include APFS disks in disk space
Closes #2261
2017-12-01 18:39:44 -08:00
Mark McDowall 32309260b9 Fixed: Sorting Manual Import by relative path
Fixes #2313
2017-11-30 23:18:23 -08:00
Mark McDowall e11e8ad272 New: Channel setting for Slack notifications to override default channel
Closes #2311
2017-11-30 22:48:00 -08:00
Mark McDowall b45b2017a8 Log warnings when deleting an episode file and the root folder is missing/empty
Closes #2305
2017-11-24 18:51:39 -08:00
Mark McDowall ae2a97763d New: Validate NZBs before sending to download client
Closes #263
2017-11-21 19:00:25 -08:00
Frank Scholl 442d49046d New: Add authentication options to Webhook
Closes #2257
2017-11-21 18:55:46 -08:00
Mark McDowall 3d8cd9616e Fixed: Parsing of resolution in TVRips
Fixes #2281
2017-11-21 18:33:25 -08:00
Mark McDowall 9c68c89f24 Fix namespace take 2 2017-11-19 16:09:01 -08:00
Mark McDowall 59ad5f35df Fixed: Parsing when using episode number as folder name in naming config 2017-11-16 17:57:11 -08:00
Mark McDowall 263f3c46b1 Fix namespace 2017-11-16 17:55:55 -08:00
Taloth Saldono 2c13fcf579 Trim quotes from dsm version parts. 2017-11-11 23:20:04 +01:00
Taloth Saldono 7a1c1064ae Fallback to parsing Series from sub path during Manual Import. 2017-11-09 22:10:24 +01:00
Taloth Saldono bb52f3d41c Fixed: Incorrect parsing of filenames with [SDTV] suffix trigging Anime pattern. 2017-11-09 21:54:17 +01:00
Taloth Saldono 0688340722 Fixed: Regression preventing new downloads from bypassing the Download Client Back-off logic.
fixes #2277
2017-11-08 21:29:57 +01:00
Taloth Saldono cf7b8455d4 Fixed another flaky test. 2017-10-27 22:32:18 +02:00
Taloth Saldono df3c6ed572 Fixed: Telegram notification with underscore and other special characters.
fixses #2249
2017-10-27 22:29:33 +02:00
Taloth Saldono e6c01be2cb Reverted the bindingredirect as well. 2017-10-26 20:55:34 +02:00
Taloth Saldono 2196db9a58 Downgraded Moq again since it causes failing tests on older mono versions due to bad Array covariance handling. 2017-10-26 20:29:09 +02:00
Taloth Saldono f10174da37 Fixed flaky test. 2017-10-26 19:42:05 +02:00
Taloth Saldono b48eaa7fd3 Fixed unrelated testcase. 2017-10-25 23:35:58 +02:00
Taloth Saldono c34eec160f Cache BestForTags briefly for better performance when processing releases. 2017-10-25 23:35:58 +02:00
Taloth Saldono 393996fe88 Fixed: Progressively degrading performance issue in Pending/Delayed releases system.
fixes #2205
2017-10-25 23:35:57 +02:00
Taloth Saldono 1ef08424ff New: Query 'Season 1.1' groups on BTN during manual single episode searches.
No longer does a season query on auto single episode searches since those would be rejected anyway.
2017-10-25 20:12:28 +02:00
Taloth Saldono 20af2c8c0f Fixed: Releases no longer available on the indexer should be removed from the pending queue.
fixes #679
2017-10-25 19:59:05 +02:00
Taloth Saldono b7e74bd5be Fixed Moq version conflict between packages.config and csproj in Api.Test by upgrading them all. 2017-10-25 19:55:49 +02:00
Taloth Saldono 34ded19be4 Fixed not setting MediaInfo SchemaRevision first time causing it to be fetched again during the series rescan. 2017-10-25 19:36:30 +02:00
Taloth Saldono f53cad822a Fixed: Raise ApplicationStartupEvent after Owin is running. 2017-10-25 19:30:44 +02:00
Taloth Saldono 090dd45541 Improved test timing for CommandExecutor. 2017-10-25 19:30:44 +02:00
Taloth Saldono e01e822394 Shutdown logging before Environment.Exit. 2017-10-25 19:30:44 +02:00
Taloth Saldono ea5769fdd6 Updated NLog from 4.4.3 to 4.4.12 2017-10-25 19:30:44 +02:00
Mark McDowall 1d2b35fdde Fix failing test 2017-10-22 23:18:37 -07:00
Mark McDowall 1d3c536c93 Updated ISSUE_TEMPLATE.md and added SUPPORT.md 2017-10-22 12:38:07 -07:00
James White e6b8b17b21 Fixed: Default ports for uTorrent and qBittorrent 2017-10-22 12:31:42 -07:00
Mark McDowall 2a0df7e83e history/since API endpoint
Closes #2208
2017-10-22 12:05:21 -07:00
Mark McDowall 12065948ca Fixed: Not deleting episode files during upgrade when root folder is missing 2017-10-22 10:12:40 -07:00
Mark McDowall a9e1aee295 Moved NotParentException to Disk namespace 2017-10-22 10:04:06 -07:00
Ronnie 73cb789f59 Fixed: Better import error messages 2017-10-22 10:04:05 -07:00
Mark McDowall 7345811115 Fixed: Execute On Grab script if release group is unknown 2017-10-20 20:59:43 -07:00
James White 22378b28f5 New: Add default calendar name for iCal 2017-10-13 14:06:54 -07:00
Wyall 961f0d0ad3 New: HDBits HEVC support 2017-10-11 17:43:01 -07:00
Mark McDowall 65187e7d01 Fixed: All Day iCal events in local time 2017-10-10 20:55:43 -07:00
Miha Frangez 00c3074216 Fixed: Ambiguous date options 2017-10-07 12:31:38 -07:00
Mark McDowall e042388a97 Fixed subpack parsing tests 2017-09-22 18:18:00 -07:00
Mark McDowall 2b8ab92ef7 Fixed: Parse and reject season extras
Fixes #2176
2017-09-21 18:28:44 -07:00
Mark McDowall 7b7f48a0e3 Fixed: Media Info audio channel parsing of dual mono audio
Fixes #2182
2017-09-21 17:44:09 -07:00
Mark McDowall 714ce2640b New: Log rejections/acceptance before importing files 2017-09-20 19:13:14 -07:00
Mark McDowall 7c5daa6000 Fixed: Long Deluge ETAs from breaking getting queue items 2017-09-20 19:12:26 -07:00
Mark McDowall ea7d7d0a14 Set test log output via environment variable 2017-09-17 16:58:14 -07:00
Mark McDowall 8bc55c5305 Fixed: Don't ignore filenames that start with periods 2017-09-16 13:05:51 -07:00
Mark McDowall 50b01d8d00 Fixed: Case insensitive paths for static resources under Windows
Fixes #2157
2017-09-02 18:25:02 -07:00
Mark McDowall 9c1d275403 Split wanted/missing and wanted/cutoffunmet imtegration tests 2017-09-02 14:11:23 -07:00
Mark McDowall 5372ed5d40 Fixed: Don't attempt to fetch a release if the download client is disabled 2017-09-01 22:33:10 -07:00
Mark McDowall 6626397350 Move DB migration to start 2017-09-01 21:55:47 -07:00
Mark McDowall ef8b882258 New: Initial state for torrents added to qBittorrent
Closes #2147
2017-08-31 23:33:36 -07:00
Mark McDowall 728f553802 Log when running tray app 2017-08-31 22:43:01 -07:00
Mark McDowall bc32ad064e Move DB migration after application router 2017-08-31 22:42:43 -07:00
Mark McDowall 56825da6b6 Don't get registered URLs until they need to be configured 2017-08-31 22:05:49 -07:00
Mark McDowall 17ff52ada1 Update help output for NzbDrone.Console 2017-08-31 22:04:55 -07:00
Mark McDowall bbd38dec29 Fixed: Force priority items in paused SAB queue won't show as paused 2017-08-27 10:56:21 -07:00
Mark McDowall 77cdb542b6 Provider Status housekeeping
Fixed: Clean up indexer status if stored times are in the future
Fixed: Clean up download client status if stored times are in the future
Closes #1396
2017-08-27 00:09:15 -07:00
Mark McDowall 52ce2c0007 Fixed: Reject partial season packs
Fixes #2135
2017-08-26 22:55:06 -07:00
Mark McDowall 58d158a5dc New: Parsing additional labels as WEB-DL releases 2017-08-25 23:57:59 -07:00
Mark McDowall de5d120aac Fixed: Formatting of audio channels from media info for some files 2017-08-25 23:47:52 -07:00
Mark McDowall 19a4d3536b New: Initial state for torrents added to UTorrent
Closes #409
2017-08-22 20:48:53 -07:00
Mark McDowall bea4954de9 Windows installer has option for startup folder and opening after install
Close #450
2017-08-22 19:59:47 -07:00
Mark McDowall 810701ad52 Parse path in ParseModule
Closes #358
2017-08-21 21:24:15 -07:00
Mark McDowall f3bf50e8d7 Backup API improvements 2017-08-20 23:36:39 -07:00
Mark McDowall fa34af8f15 uTorrent start/stop on add
New: Start torrents added to uTorrent by default
New: Option to add torrents to uTorrent in a stopped state
Closes #2141
2017-08-20 21:29:02 -07:00
Mark McDowall 9a82f45020 Added Lithuanian and Czech languages
New: Added Lithuanian language
New: Added Czech language

Closes #1857
Closes #2113
2017-08-19 21:57:42 -07:00
ECB\rotem.shoshan 7d21585f50 Added Hebrew lanugage
New: Added Hebrew language
Closes #2115
2017-08-19 21:57:42 -07:00
Mark McDowall 51d08fd8e8 Fix my typo 2017-08-19 12:46:28 -07:00
Mark McDowall 078b53dc13 Opt out of updating episodes matching season monitored state when updating series
Fixed: Season pass resetting changes when a season changed it's monitored state
Closes #2139
2017-08-19 00:26:42 -07:00
Mark McDowall b8b0f05920 Fixed: Parsing 4k UHD as 2160p
Closes #2127
2017-08-17 21:53:22 -07:00
Mark McDowall b8001943b4 Fixed: Size parsing of empty description from torrent RSS feeds 2017-08-14 18:01:56 -07:00
Taloth Saldono c70740e3b6 Remove extension from ReleaseTitle.
Fixes #2118
2017-08-13 12:27:12 +02:00
Taloth Saldono 35f911286f Added jackett apikey to log cleanser. 2017-08-11 15:51:28 +02:00
James White 650f01176c Fix inconsistent naming of qBittorrent in various places 2017-08-10 21:56:04 +02:00
Mark McDowall 2246dfab05 Fixed: Logging error when accessing mount point
Fixes #1993
2017-08-10 21:46:08 +02:00
Taloth Saldono 6bfb790eb8 Fixed regression in suppressWarning. 2017-08-10 19:01:22 +02:00
Taloth Saldono 0e85e39815 More System->Disk Space cleanup. 2017-08-10 19:00:57 +02:00
Taloth Saldono 9471343533 Fixed test case for unavailable download client. 2017-08-09 23:34:52 +02:00
Taloth Saldono 2d1d1c8a99 Fixed: Changes in http redirect logic causing failed grabs and >25% cpu usage. 2017-08-09 23:12:07 +02:00
Taloth Saldono 7e5e136930 Fixed typo. 2017-08-09 23:02:25 +02:00
Taloth Saldono c659ba1c10 Fixed: Hide some more irrelevant paths from System->Disk Space such as /boot. 2017-08-09 21:38:18 +02:00
Taloth Saldono caf7a8c69e Fixed: Use pending download if no download client is configured instead of logging a warning. 2017-08-09 21:37:34 +02:00
Taloth Saldono 40e5626ddb Added a few more codecs, not even halfway. 2017-08-03 19:26:14 +02:00
Taloth Saldono 1b9ccc319f Fixed: TLS issue for OSX. 2017-08-03 16:53:15 +02:00
Taloth Saldono 89e804814b Revert "Change default tls provider so users won't have to set TLS_PROVIDER explicitly."
This reverts commit 8e63f7d436.

Only certain platforms need it and causes issues with OSX and cases where the user relies on btls.
2017-08-03 16:53:11 +02:00
Taloth Saldono ce6a5713d1 Lets not take any risks here. 2017-08-03 00:20:48 +02:00
Taloth Saldono ba01b636b9 Fixed: Recent changes to log messages prevented curl fallback from being triggered for tls1.2.
fixes #2089
2017-08-02 23:19:26 +02:00
Taloth Saldono 970006a4fe Added a bit more logging for Tracked Downloads. 2017-08-02 01:01:58 +02:00
Taloth Saldono dbcfacbebe Updated Sentry DSN. 2017-08-01 20:09:44 +02:00
Taloth Saldono fdaa8fb0f5 Disable test on mono managed http. 2017-08-01 19:51:29 +02:00
Taloth Saldono f305331565 Fixed: http->https redirects do not use the tls1.2 curl fallback.
fixes #2082
2017-08-01 19:31:10 +02:00
Taloth Saldono 0ec64e7043 Fixed: DownloadedEpisodeScan API should delete source folder if ImportMode is Move. 2017-08-01 13:34:36 +02:00
Taloth Saldono ac837c8f74 Added a bunch of extra MediaInfo formats. 2017-07-31 15:21:47 +02:00
Taloth Saldono 54d5ad4b71 Fixed unittests after MediaInfo change. 2017-07-30 23:04:10 +02:00
Taloth Saldono 27dca830cc Updated MediaInfo schema and revised logic that Formats it. Also added logic to log events to Sentry. 2017-07-30 22:47:48 +02:00
Taloth Saldono 94f2473fbb Fixed: Backup fails after recent develop release on certain platforms. (Trouble updating? see github issue #2080)
fixes #2080
2017-07-29 22:33:54 +02:00
Taloth Saldono 432666b2da Default to filename if there is no SceneName. And added Opus and MPEG-4 Visual. 2017-07-29 19:50:57 +02:00
Taloth Saldono f91e1a3576 Tweaked error message when TransferFile destination already exists. 2017-07-29 15:34:23 +02:00
Taloth Saldono e16e4091f1 VideoCodec formatter HEVC. 2017-07-29 15:09:29 +02:00
Taloth Saldono b02d0a33b1 Better error message for DNS exceptions on mono. 2017-07-29 13:06:21 +02:00
Taloth Saldono 1cb25525ab Added additional codecs and more complete error message. 2017-07-29 12:33:21 +02:00
Taloth Saldono c7d30ae703 Include releaseTitle in InvalidSceneMappingException. 2017-07-29 11:35:39 +02:00
Taloth Saldono 8e63f7d436 Change default tls provider so users won't have to set TLS_PROVIDER explicitly. 2017-07-29 11:35:10 +02:00
Taloth Saldono 36e4075629 Fixed: Improved database backup journal handling. 2017-07-29 00:38:58 +02:00
Taloth Saldono 84d2d6a1d5 Fixed: Slower daemon startup loop if Sonarr runs into non-recoverable errors such as unwritable pid/appfolder/config file. 2017-07-28 23:40:12 +02:00
Taloth Saldono f7f155be1f Minor fixes from Sentry. 2017-07-28 20:01:45 +02:00
Taloth Saldono 1b6d6c26d5 Fixed HttpUri parsing of domain names with underscores. 2017-07-28 20:01:29 +02:00
Taloth Saldono f8be5c9cb9 Disabled TLS health check warning. 2017-07-27 22:07:05 +02:00
Taloth Saldono 24eb196336 Added License and Copyright file for completeness. 2017-07-27 22:04:57 +02:00
Taloth Saldono 54cc19c688 Fixed error in regex. 2017-07-27 19:50:00 +02:00
Taloth Saldono 6fc4ea614d Fixed: Ignore '.unwanted' directory when importing.
fixes #2072
2017-07-27 15:49:45 +02:00
Taloth Saldono 90a42bcbad Abort indexer Test if connection failed.
fixes #2055
2017-07-27 11:25:55 +02:00
Taloth Saldono 792773323c Check for whitespace in IsValidUrl.
closes #2020
2017-07-26 22:57:38 +02:00
Mark McDowall 4b9f2e0ff7 Guard against null reference exception when parsing newznab capabilities
Closes #2054
2017-07-26 07:28:34 -07:00
Mark McDowall 5efff4d481 Cleanup exception messages
Closes #2054
2017-07-26 07:28:34 -07:00
Mark McDowall d257b926dc API Key for signalR connections 2017-07-26 07:28:33 -07:00
Indrek Ardel 5c4dc9ccb1 Fixed: Duplicate scene titles causes unnecessary indexer queries.
fixes #2068
2017-07-26 16:14:10 +02:00
Taloth Saldono 126b849c27 Fixed: Changed qbitTorrent 3.3.14 api.
fixes #1956
2017-07-22 17:01:34 +02:00
Mark McDowall 9312f0a462 New: Store episode renames in History
Closes #1541
2017-07-19 20:23:06 -07:00
Taloth Saldono f293b9a44e Fixed: Added FLAC to MediaInfo renamer audio codecs. 2017-07-19 10:34:48 +02:00
Mark McDowall fbcc0b76bf Fixed: Try to set last write time on files moved to recycle bin
Closes #2057
2017-07-18 23:45:03 -07:00
Mark McDowall 6d0a3b1ca4 Fixed: Remove TVRage URL Link
Closes #2048
2017-07-18 23:44:41 -07:00
Taloth Saldono 2e2f79503c Sonarr stuck if Deluge didn't return an infohash. Also updated some logging. 2017-07-18 10:33:34 +02:00
Taloth Saldono a4f51aeef9 Added XviD to MediaInfoFormatter. 2017-07-17 11:07:01 +02:00
Taloth Saldono c68ef626d2 Fixed: Calculates wrong age for releases pushed via ReleasePush api.
closes Zymest/autodl-curl-sonarr#3
2017-07-13 17:41:37 +02:00
Mark McDowall d4e771117d Fixed: Reject full bluray disc releases
Closes #1995
2017-07-09 22:17:04 -07:00
Mark McDowall 6bbdefb11e Fixed: Roksbox metadata images being generated when settings are off
Fixes #2031
2017-07-09 16:01:03 -07:00
Mark McDowall 197febe9db Fixed: Sending Slack notifications without an icon 2017-07-05 09:16:50 -07:00
Mark McDowall e10717f6bb Slack improvements
New: Slack icon can be an emoji or a URL
Fixed: Icon for MatterMost Slack notifications
2017-07-04 18:59:07 -07:00
Taloth Saldono b03f434329 Disable Nyaa forcibly. 2017-07-02 21:27:59 +02:00
Chris Dyson 68290b0385 New: Added 'Series Title, The' renaming option
Closes #371
2017-07-02 21:21:46 +02:00
Taloth Saldono 773274f3cc Update Nyaa Pantsu apiPath to the actual /feed/torznab url. 2017-07-01 12:43:30 +02:00
Taloth Saldono a33d8968ed New: Added Nyaa Pantsu as Torznab preset for Anime. 2017-07-01 00:08:01 +02:00
Taloth Saldono e41baccd02 New: Added AnimeTosho as Newznab and Torznab presets. 2017-06-30 23:40:16 +02:00
Taloth Saldono fef3423019 Fixed error in NzbGet KeepHistory check and updated tests. 2017-06-30 22:01:31 +02:00
Taloth Saldono 11926d8b2d Fixed: Support for Mono 5.x with the newer BoringTLS provider. 2017-06-30 21:33:41 +02:00
Mark McDowall 4189bc6f76 Webhook improvements
New: Include Path/Relative Path for on download Webhooks
New: IsUpgrade flag for on download Webhooks
2017-06-28 16:11:05 -07:00
Mark McDowall 601b54c244 Reorder HttpMethods to match RestSharp 2017-06-28 16:11:05 -07:00
Taloth Saldono 905ab18336 Fixed: Subtitle extensions should be case-insensitive. 2017-06-27 16:22:07 +02:00
Taloth Saldono f46a576df5 Check if NzbGet KeepHistory value is set too high instead of only checking for 0. 2017-06-27 16:22:07 +02:00
Mark McDowall 60231fbcae Fixed: Show rounded age in minimum age rejection message
Fixes #2003
2017-06-26 22:41:22 -07:00
Mark McDowall 63860e783e Fixed: Background logo when URL base is used
Fixes #2002
2017-06-26 22:29:52 -07:00
Mark McDowall cf8b9df5ad Fixed: Ignore case when importing extra files 2017-06-26 22:25:10 -07:00
Taloth Saldono ff6841e410 Fixed: Added permanent Health Check warning to ensure Drone Factory is no longer used. 2017-06-21 19:35:32 +02:00
Taloth Saldono ab49afe116 Don't log error on the shutdown the command execution pipeline.
closes #1961
2017-06-20 17:35:37 +02:00
Taloth Saldono afcf136c4f Fixed regression in pending icon. 2017-06-20 17:23:01 +02:00
Taloth Saldono d1b85444d0 Fixed DetectSampleFixture. 2017-06-19 23:48:47 +02:00
Taloth Saldono 63e0eba02f Fixed: releases with unknown seeders show on the UI as - instead of 0 to be easier to distinguish. 2017-06-19 23:30:43 +02:00
Taloth Saldono 475c99d492 Tweaked Newznab/Torznab handling of attr without value. 2017-06-19 23:30:43 +02:00
Taloth Saldono 23552c3267 Tweaked SingleInstancePolicy not to cancel startup if AppData is overridden is set. 2017-06-19 23:30:43 +02:00
Mark McDowall a49e37239e Log responses from qbit 2017-06-18 22:21:33 -07:00
Mark McDowall 65b936ed94 Fixed: Time left cell for pending items in queue 2017-06-18 22:15:44 -07:00
Mark McDowall 359ef04861 Fixed: Grab/Delete buttons for pending releases in queue 2017-06-18 22:10:52 -07:00
Mark McDowall 8cf028e071 Fixed: Improve sample rejection message when MediaInfo is not available
Closes #1967
2017-06-18 21:26:18 -07:00
Mark McDowall eea3419849 New: Download client and ID for custom scripts 2017-06-18 21:17:33 -07:00
Taloth Saldono 62bc63312d Fixed: Changed Authentication cookie to prevent conflicts with other apps. (invalidates existing logins)
Closes #1962
2017-06-18 00:18:23 +02:00
Taloth Saldono 6a6d415625 Fixed: Pending releases from blocked indexers should not be grabbed.
ref #1961
2017-06-18 00:07:16 +02:00
Taloth Saldono 1fbe82ae47 Prevent back-off escalation during grace period. 2017-06-17 23:42:04 +02:00
Taloth Saldono 87f3cc9014 Fixed: Regression prevented indexers from being re-enabled after a successful Test.
ref #1961
2017-06-17 23:41:38 +02:00
Taloth Saldono ab07a40931 New: Added Omgwtfnzbs UHD category.
closes #1977
2017-06-17 20:55:18 +02:00
Taloth Saldono 10f292b225 Removed superfluous try catches so that DownloadClient backoff logic gets triggered. 2017-06-17 20:53:26 +02:00
Mark McDowall de5ce23989 Fixed: Redirect calls missing URL Base 2017-06-10 16:47:12 -07:00
Mark McDowall d0e226e269 Fixed: Logging full error message to database 2017-06-10 16:25:14 -07:00
Mark McDowall d7cb5090fc Fixed: Twitter oAuth callback URL 2017-06-05 20:22:37 -07:00
Mark McDowall 416e9abca5 Fixed: Error message when adding a Plex server without a TV library 2017-06-04 21:10:56 -07:00
Mark McDowall 6dcb7768a9 Fixed broken test and add a couple more for ProcessDownloadDecisions 2017-06-04 00:52:34 -07:00
Mark McDowall baf83b4c71 Fixed: Error when processing manual import decisions
Fixes #1590
2017-06-03 21:10:56 -07:00
Mark McDowall 285288db1a Additional logging when an import decision cannot be made 2017-06-03 21:10:56 -07:00
Jeremy Ryan ec3dd982f6 Update EpisodeFileEditorLayoutTemplate.hbs 2017-06-03 21:10:20 -07:00
Drew Freyling 410aa467b8 include css files in minification 2017-06-03 21:08:35 -07:00
Mark McDowall 0c89a4ae8f Store releases when download client is unavailable
New: Retry releases when download client was unavailable
Closes #949
2017-06-03 20:41:32 -07:00
Taloth Saldono a1edbafa8a Removed ugly UUID= VolumeLabel from mounts. 2017-05-27 22:26:41 +02:00
Taloth Saldono ef5a400c68 Added missing ACC audio format. 2017-05-27 22:19:55 +02:00
Taloth Saldono 8cc02a9d9c Fixed: Minimum seeding check causing exception when release was pushed via api instead of by indexer. 2017-05-27 22:02:30 +02:00
Taloth Saldono e83e852e0d Added ability for HealthChecks to run on specific events. 2017-05-27 20:45:01 +02:00
Taloth Saldono 4e10d30cf6 Added Status refreshes to Download Monitoring Service and allow DownloadService to report success (but not failure). 2017-05-27 20:44:58 +02:00
Taloth Saldono f335cc1af8 Fixed: Prevent Download Client from being queried every minute if it failed repeatedly similar to Indexer temporarily disabled logic. 2017-05-27 20:44:55 +02:00
Taloth Saldono f4bea5512c Refactored IndexerStatusService into Thingy Provider architecture. 2017-05-27 14:59:37 +02:00
Taloth Saldono 9f8091e4d7 Fixed: Added wildcard to BTN season searches to pick up 'Season x - Episodes 1-10' formats.
Closes #1946
2017-05-26 15:50:34 +02:00
Mark McDowall 5aa02eb15c Cleanup/fix EpisodeMonitoredService
Fixed: Unmonitor episodes when the season is unmonitored when adding the series
Fixes #1852
2017-05-23 22:04:56 -07:00
Mark McDowall 6bbe4ce066 Fixed: Ensure an API Key is set when starting Sonarr
Closes #1514
2017-05-22 21:54:18 -07:00
Mark McDowall 563b5ef017 Fixed: Don't use invalid scene mappings. Fixes #1627 2017-05-22 21:39:13 -07:00
Mark McDowall b9df5634bf New: Link to more information on RSS sync interval
Closes #1918
2017-05-22 20:55:30 -07:00
Mark McDowall 755575d107 Fixed: Follow 301 redirects when fetching torrents
Closes #1929
2017-05-22 18:09:59 -07:00
Taloth Saldono 8eaab46488 Fixed up some errors and do the guid cache fix on the module instead of backend coz that would cause other issues. 2017-05-21 22:01:03 +02:00
Taloth Saldono 4fbc481780 Fixed: Processing of mixed newznab/torznab api such as the experimental animetosho api.
Ref #1384
2017-05-21 21:10:54 +02:00
Mark McDowall a41b5723d4 New: Ability to set minimum seeders on a per indexer basis 2017-05-19 12:08:30 -07:00
Mark McDowall c2b66cf524 Fixed: Deleting an episode file from the UI that was already deleted from disk
Fixes #1782
2017-05-19 12:07:57 -07:00
Mark McDowall 0d782e1cac Consistent formatting for MediaInfo in various locations
Fixed: Stream details for MP3 and EAC3 in Kodi metadata
Closes #1534
2017-05-19 11:18:50 -07:00
Mark McDowall edf549d0fd Fixed: Improved message when a conflicting slug is added 2017-05-17 21:42:57 -07:00
Mark McDowall cf7ce9804f Fixed: Ignore file quality matching release quality for unknown quality releases 2017-05-17 21:15:21 -07:00
Mark McDowall e8d01daf03 Fixed: Ignore file quality matching release quality for season packs 2017-05-15 23:58:07 -07:00
Taloth Saldono 766520b851 Renamed DownloadClientStatus to DownloadClientInfo to avoid conflict. 2017-05-13 00:16:53 +02:00
Taloth Saldono 14144bd4d9 Renamed IndexerStatus.IndexerId to ProviderId. 2017-05-13 00:16:53 +02:00
Taloth Saldono 7b0e40d5d0 Replaced Url with BaseUrl in most indexers. 2017-05-13 00:16:53 +02:00
Taloth Saldono 2dbf095fd5 Fixed: Regression in Quality fallback by extension. 2017-05-13 00:13:12 +02:00
Taloth Saldono 2a86f8c241 Fixed: UI Series lookup autocomplete with diacritics.
Closes #1915
2017-05-11 20:37:07 +02:00
Taloth Saldono c184e7ddcc Fixed: Multiple Scene Mapping exception even when the mappings pointed to the same tvdbid.
Closes #1917
2017-05-11 06:32:09 +02:00
Taloth Saldono 95c81f8905 Fixed exception in MountCheck if RootDirectory cannot be found. 2017-05-10 23:08:17 +02:00
Mark McDowall db15949704 Fixed: Better error message when searching for episode without an absolute episode number 2017-05-09 20:00:21 -07:00
Mark McDowall a63248401e Fixed: Width in Kodi Metadata 2017-05-09 20:00:21 -07:00
Kyse 1b32411219 New: Health Check warning if series folder is mounted with 'ro' option on linux
Closes #1867
2017-05-09 21:07:24 +02:00
Taloth Saldono cd7368512d Fixed Scene Mapping error message. 2017-05-09 17:26:45 +02:00
Taloth Saldono a5bc4a8f11 Added ability to filter scene mappings by regex via services. 2017-05-06 14:05:49 +02:00
Drew Freyling 2ae41a3404 remove redundant IE meta tag as we use http header instead 2017-05-05 22:26:28 -07:00
Drew Freyling 312136a57c use cleancss for minification 2017-05-05 22:26:10 -07:00
Mark McDowall 53e51af9c7 Fixed: Don't import the same file again
Closes #929
2017-05-02 22:52:59 -07:00
Mark McDowall f852ca91c0 Clean up GrabbedReleaseQualityFixture 2017-05-02 22:52:11 -07:00
Mark McDowall 413dd51db1 Fix unit test 2017-05-02 22:06:18 -07:00
Mark McDowall 9d93fc1092 New: Prevent automatic import if file quality differs from grabbed release quality 2017-05-02 18:44:42 -07:00
Lloyd Sparkes 0bbb82c67f Update SocksWebProxy to fix #1641 2017-04-29 17:11:55 +02:00
Mark McDowall cd8ae0d036 Added test to validate season pack being grabbed when only one episode is monitored
Closes #1862
2017-04-28 17:37:29 -07:00
Taloth Saldono d726a7acb2 Fixed: Sonarr UI Authentication cookie should be placed on path (UrlBase) instead of domain alone.
fixes #1874
2017-04-27 23:33:04 +02:00
Mark McDowall c94636e2b3 Placeholders for language profile migrations 2017-04-26 11:45:07 -07:00
Taloth Saldono 3749f3e2e5 Fixed missing icon preventing detailed explanation validation errors explanations from appearing. 2017-04-25 19:16:43 +02:00
Taloth Saldono 1f93bec055 Updated Transmission tests. 2017-04-24 21:53:40 +02:00
Taloth Saldono a003a89b14 Fixed: Sonarr not importing torrents in Vuze if the torrent already finished seeding and was stopped. 2017-04-24 21:08:50 +02:00
Taloth Saldono 35fca89dad Fixed: Incorrect imports with Vuze when torrent contains a single file.
fixes #1805
2017-04-23 17:24:07 +02:00
Mark McDowall e97e13e897 Fixed: Smarter application update completed message
Closes #1864
2017-04-21 10:52:31 -07:00
Taloth Saldono f8d5f1fc94 Added -Scrambled to the ReleaseGroup cleanup list. 2017-04-14 20:47:17 +02:00
Taloth Saldono 46a1ff3e2d Tweaked parser to handle S01.Ep01.
closes #1849
2017-04-14 20:44:14 +02:00
Mark McDowall f36d5dc881 Moving and Removing of downloads in usenet clients
Fixed: Moving items triggered via post-processing scripts
Fixed: Removing failed downloads fromusenet clients
2017-04-12 17:41:22 -07:00
Taloth Saldono f8b8fcfb8d Fixed: Handling of priority setting when queueing is disabled in qBittorrent.
fixes #1841
2017-04-12 20:49:28 +02:00
Taloth Saldono de7f68570e Fixed: Regression causing nzbToMedia imports to be copied instead of moved. 2017-04-12 20:49:28 +02:00
Taloth Saldono fa006d85fd New: Check whether an existing episode file was deleted before grabbing an upgrade, to avoid timing issues in combination with Ignore Deleted Episodes. 2017-04-12 20:46:36 +02:00
Mark McDowall 413ce1d9a7 Fixed: Double periods in extra file names after rename 2017-04-11 20:32:34 -07:00
Mark McDowall 41f769790d Fix issue adding a series when TitleSlug for another series is null
Fixed: Adding a series when an existing series is has a null slug
Closes #1840
2017-04-11 17:57:29 -07:00
Taloth Saldono b63bcd16a7 Fixed: Sample check has too little margin for 2 min anime with 1 minute files. Lowered to 15 sec. 2017-04-10 17:46:08 +02:00
Mark McDowall b485bdaeec Fixed: Unable to execute custom scripts if IMDB ID is null
Fixes #1825
2017-04-08 08:20:57 -07:00
Taloth Saldono b70d167911 Apply Cleanse to Exception Data as well. 2017-04-08 12:38:39 +02:00
Taloth Saldono 924fe80997 Fixed RssParser test. 2017-04-07 22:36:39 +02:00
Taloth Saldono cd450a44bf Should not empty install folder, MirrorFolder will take care of it. 2017-04-07 22:09:49 +02:00
Taloth Saldono 35741b9cae Added a few more files to ignore during file copy. 2017-04-07 22:07:42 +02:00
Taloth Saldono c9d1807670 Sentry should use CleanseLogMessage. 2017-04-07 20:42:39 +02:00
Taloth Saldono 94886e767b Fixed: UnsupportedFeedException should log error for each item 2017-04-07 19:32:12 +02:00
Taloth Saldono e4c3418987 Fixed: Failing Newznab capabilities request should trigger automatic indexer backoff logic. 2017-04-07 19:10:08 +02:00
Taloth Saldono 5613ab05e0 Fixed: Sabnzbd/NzbGet not processing history items properly after last update. 2017-03-31 18:56:45 +02:00
Taloth Saldono 372442af2c fixed broken tests. 2017-03-30 23:20:49 +02:00
Taloth Saldono 28c45f941b Cleanup of commented out code. 2017-03-30 22:28:00 +02:00
Marcelo Castagna ea1616586f Fixed: Import from torrent Download Station should move since DS maintains an internal copy for seeding. 2017-03-30 22:26:11 +02:00
Mark McDowall e48600da42 New: TvMaze and IMDB IDs added to custom script environment variables 2017-03-29 18:22:14 -07:00
Mark McDowall 5d9d2e684e New: Paths for deleted files when upgrading an existing file 2017-03-29 13:22:37 -07:00
Mark McDowall 2e392e0f5e New: Additional variables for custom script on grab events 2017-03-29 13:12:37 -07:00
Mark McDowall 83370ddbbb New: Episode files sent to Recycling Bin are put into subfolders
Closes #401
2017-03-29 06:44:50 -07:00
Mark McDowall c20b152c28 Fixed spelling in message 2017-03-26 13:21:29 -07:00
Mark McDowall bf5067466d Guard against a null file showing an exception in release rejections
Fixes #1755
2017-03-26 13:01:59 -07:00
Taloth Saldono ec7f749541 Tweaked default config for extra files import. 2017-03-26 21:22:58 +02:00
Taloth Saldono 56ecbf4a31 Fixed: Sabnzbd error when tv sorting enabled for all categories. 2017-03-26 17:09:22 +02:00
Mark McDowall 1b39911135 True/False for config settings value 2017-03-25 22:18:57 -07:00
Mark McDowall 6aaefae2d5 New: Explicit toggle for importing extra files 2017-03-25 09:13:28 -07:00
margaale db9d601115 Revert Session name 2017-03-23 13:46:01 -03:00
Taloth Saldono e7331539f0 Fixed: Newznab default capabilities erroneously cached if indexer is unavailable. 2017-03-23 17:12:10 +01:00
Taloth Saldono 58bd57bed6 New: Updated MediaInfo to 0.7.93. 2017-03-22 19:17:55 +01:00
Mark McDowall 7a58082cd7 smallicon for Join notifications
New: White icon with transparent background for Join notifications notification bar icon
Closes #1458
2017-03-19 23:31:50 -07:00
Taloth Saldono 2e08f195e4 Fixed: Zero length file causes MediaInfo hanging in 100% cpu load. 2017-03-19 22:02:52 +01:00
Taloth Saldono a1a5e29c3e fixed sab tests. 2017-03-19 19:00:05 +01:00
margaale 5033886b90 Fixed: DownloadStation api client for DSM 5.x. 2017-03-19 18:50:56 +01:00
Mark McDowall 29419d6575 Update README.md 2017-03-18 23:34:37 -07:00
Mark McDowall 3c22f68f5a Fixed: Parsing releases with year added to the end of the series title
Fixes #1768
2017-03-18 22:45:47 -07:00
Mark McDowall a0d98951aa Use MaterialisingResponse for static resource responses 2017-03-18 12:22:44 -07:00
Taloth Saldono 70f7404499 Fixed: Sabnzbd 2.0 api compatibility.
closes #1775
2017-03-18 16:32:13 +01:00
Mark McDowall abd70f5381 New: UHD category for RARBG 2017-03-17 07:16:24 -07:00
Mark McDowall 878e973081 Fixed: Join grab messages
Fixes #1751
2017-03-13 19:43:07 -07:00
Taloth Saldono 2bf3b9e7dd fixed typo setting custom directory for rtorrent. 2017-03-12 11:18:51 +01:00
Taloth Saldono 2326db0dea Fixed: Refactored rtorrent interface to fix reliability issues with adding magnets & torrents.
fixes #1745
2017-03-11 12:15:42 +01:00
Taloth Saldono 3590fedeaf Fixed: Timing issue in rtorrent handling of magnet links.
ref #1745
2017-03-10 21:07:08 +01:00
Taloth Saldono f4866cae69 fixed broken project file. 2017-03-10 20:43:16 +01:00
Mark McDowall 149d191f62 Remove NCrunch.Framework 2017-03-09 20:30:39 -08:00
Jamie Magee bb9bd63382 Upgrade CommonServiceLocator
From 1.0 to 1.3
2017-03-09 20:30:39 -08:00
Jamie Magee 34fda24124 Upgrade Microsoft.AspNet.SignalR.Client
From 1.2.1 to 1.2.2
2017-03-09 20:30:39 -08:00
Jamie Magee c8d10829a0 Upgrade Selenium.*
From 3.0.1 to 3.2.0
2017-03-09 19:49:05 -08:00
Jamie Magee ae2bdb757a Upgrade NUnit
From 3.5.0 to 3.6.0
2017-03-09 19:49:02 -08:00
Jamie Magee 714ad075fc Upgrade FluentAssertions
From 4.18.0 to 4.19.0
2017-03-09 19:48:11 -08:00
Jamie Magee 87a05df2fd Upgrade TinyTwitter
From 1.1.1 to 1.1.2

NOTE: Sonarr was already using a modified version of TinyTwitter 1.1.2.
This change just modifies the packages.config file to reflect that
2017-03-09 19:48:11 -08:00
Jamie Magee f3263efa52 Upgrade SharpRaven
From 2.1.0 to 2.2.0
2017-03-09 19:48:11 -08:00
Jamie Magee 1cad11d207 Upgrade Ical.Net
From 2.2.25 to 2.2.32
2017-03-09 19:48:10 -08:00
Jamie Magee 781df8b20a Upgrade NLog
From 4.4.1 to 4.4.3
2017-03-09 19:48:10 -08:00
Mark McDowall ebcce05588 Fixed: Parsing headers that have a trailing semi-colon
Fixes #1749
2017-03-09 15:40:13 -08:00
Taloth Saldono bbf2134fe1 Fixed: Deluge 1.3.14 API support due to changed json-rpc checks.
fixes #1738
2017-03-06 20:14:34 +01:00
Mark McDowall 081c5fc332 Broken ExtraFiles migration due to extentionless files
Fixed: Prevent extensionless files from being imported
Fixed: Broken migration due to extensionless extra files
2017-03-06 11:00:38 -08:00
Mark McDowall 47915d5e05 Fixed: Bad extension when importing extra files 2017-03-05 17:45:35 -08:00
Mark McDowall 47e221d9a0 Fixed: Delay profiles are no longer hidden under advanced settings 2017-03-03 21:16:29 -08:00
Mark McDowall bf485f6f2c Log number of files found when getting video/non-video files 2017-03-03 20:57:05 -08:00
Mark McDowall b365d8a537 Include language in suffix when importing 2017-03-03 19:44:31 -08:00
Taloth Saldono fee8da88a6 Accept full language name as suffix. 2017-03-03 19:44:31 -08:00
Mark McDowall cc0dbf1af4 New: Rename subtitles and extra files when renaming files
Towards #459
2017-03-03 19:44:31 -08:00
Mark McDowall 836131ebb1 New: Import subtitles and extra files when importing media files 2017-03-03 19:44:31 -08:00
Marcelo Castagna 9a870a3709 Fixed: DownloadStation interface stuck in infinite loop in some cases.
* removed empty spaces. changed dcaex => ex

* Changed error message

* changed error message

* Wrong message, ups

* Another message
2017-03-01 18:46:16 +01:00
Taloth Saldono afe05189da Fixed series scan tests. 2017-02-28 21:06:41 +01:00
Taloth Saldono 2abaef16f1 Fixed Indexer Health Checks and tests. 2017-02-28 20:59:22 +01:00
Daniel Smith 37d5a3f2ad Fixed: Clear EpisodeFile records from database if Series folder is missing, but root folder appears to be mounted. 2017-02-28 17:01:12 +01:00
Mark McDowall be4d70e3a9 Fixed: Health check failing and preventing others from running 2017-02-28 00:12:34 -08:00
Mark McDowall 79043f2c64 Improve indexer health check messages
Fixed: Improve health check message when all enabled indexers are disabled due to failures
Closes #1551
2017-02-28 00:12:34 -08:00
Mark McDowall 1dab0aee6a Fixed: Reduce parameters required to add a new series
Fixes #1403
2017-02-27 21:37:33 -08:00
Mark McDowall 9b162f2d5e Fixed: Clean RSS feed before detecting type
Fixes #1518
2017-02-27 21:37:00 -08:00
Mark McDowall 5518cf5362 Added Download decision comparator test to confirm quality is preferred over seeders 2017-02-25 16:18:00 -08:00
Taloth Saldono f7e3d9b4c2 Fixed: DownloadStation regression in queue detection. 2017-02-23 08:58:50 +01:00
Taloth Saldono 6d9a952bd1 Fixed: DownloadStation proxy failing if non-bt/nzb downloads exist. 2017-02-22 19:10:39 +01:00
margaale 3501e33722 turn task type enum into string 2017-02-22 14:10:12 -03:00
margaale fa89d33900 Fix for key not found, returning a generic error instead 2017-02-22 14:10:12 -03:00
Mark McDowall 0af48fb2e8 Fixed: NZBGet delete:scan treated as failure
Fixes #1394
2017-02-22 00:31:51 -08:00
Mark McDowall 7e9f0d0522 Updated analytics help text 2017-02-21 11:18:29 -08:00
Taloth Saldono 1f8bd8e1e9 Fixed typo in DL station hint text. 2017-02-21 18:19:55 +01:00
Taloth Saldono 2855090005 Fixed: Removed Womble indexer. 2017-02-21 17:03:10 +01:00
Taloth Saldono 060b9f6fd1 Fixed: Updated BTN api url. 2017-02-21 16:40:20 +01:00
margaale 9304547c95 Test if the OutputPath specified by TvDirectory/TvCategory exists. 2017-02-21 16:40:16 +01:00
margaale c56c83e169 New: Added support for nzb downloads in Synology Download Station. 2017-02-20 18:57:11 +01:00
Mark McDowall c6fa883662 Fixed: Saving nyaa settings
Fixes #1687
2017-02-16 09:19:28 -08:00
Mark McDowall 4043d07ab1 Verify LimeTorrents parsing 2017-02-15 22:30:03 -08:00
Mark McDowall 8af3348e7f Fixed: Slow loading root folders caused them to never appear 2017-02-15 22:30:03 -08:00
Taloth Saldono 49d0d4c357 Renamed DownloadStation implementation to TorrentDownloadStation. 2017-02-15 21:32:25 +01:00
Taloth Saldono 47b1157b96 Fixed: Permanently removed kickass rss/api implementation. 2017-02-15 21:32:21 +01:00
Taloth Saldono adc79f0eba Added more sensible error for BTN html response. 2017-02-15 20:40:32 +01:00
Taloth Saldono 6b117427f8 Fixed double question mark in log. 2017-02-15 20:40:32 +01:00
Mark McDowall 7884dd9a39 New: Added omgwtfnzbs Newznab prefix 2017-02-13 22:46:26 -08:00
Marcelo Castagna 45d8b1e2ad Fixed: Delete data when removing torrent from Download Station
fixes #1676
2017-02-13 20:17:52 +01:00
Marcelo Castagna cf306f4aba Throw exception with error message return by diskstation (#1672) 2017-02-12 20:20:16 +01:00
Mark McDowall d7aa23388e New: Update Media info for Windows/macOS to 0.7.92.1 2017-02-11 16:29:49 -08:00
margaale 82a99b7f80 New: Added support for Synology Download Station as torrent client. 2017-02-11 21:06:23 +01:00
Taloth Saldono 2f6d9e191e Fixed: Ignore .nfs* files during copy actions since those files are special NFS files that should never be touched.
fixes #1552
2017-02-09 19:33:28 +01:00
Taloth Saldono 0782a15979 Remove backslashes from BTN release titles.
fixes #1075
2017-02-09 19:33:28 +01:00
vertigo235 ddd119a4eb New: Add paused option for NZBGet
Closes #346
2017-02-08 20:36:39 -08:00
Taloth Saldono d4788b4cae Added tests for edge-case.
closes #1147
2017-02-08 22:10:30 +01:00
Taloth Saldono 812999423b Fixed: Don't try to show diskspace usage non-existing drives.
fixes #1639
2017-02-07 23:06:14 +01:00
Taloth Saldono 657730f4d2 Fixed: /var/lib/docker no longer shows up in DiskSpace. Caused warnings if the user used docker with zfs storage driver.
fixes #1663
2017-02-07 22:44:31 +01:00
Taloth Saldono 0255eb3aca Fixed: Increased timeout when waiting for rtorrent to finish adding torrent.
fixes #1665
2017-02-07 22:36:47 +01:00
Mark McDowall fc15daa37e New: Improve parsing of audio channels from MediaInfo output 2017-02-04 22:04:12 -08:00
Mark McDowall 10264a5bfb New: Ensure folders are sorted alphabetically when importing
Closes #294
2017-02-04 22:04:12 -08:00
Mark McDowall ef044f1ff5 Update README.md 2017-01-27 20:56:07 -08:00
Mark McDowall ef03e9e9a7 Fixed: Proper port validation for download clients and connections
Closes #1642
2017-01-26 22:35:16 -08:00
Mark McDowall 3bd7c09acf Strip 2160p from titles before parsing 2017-01-23 23:53:15 -08:00
Keivan Beigi fbd2f8dea4 Fixed: Growl download notification title 2017-01-22 13:07:21 -08:00
Keivan Beigi 15e07f72d4 Better Runtime names 2017-01-20 20:54:04 -08:00
Keivan Beigi f25bfe9d28 don't log migrations during regular DB tests 2017-01-20 20:33:10 -08:00
Keivan Beigi d5e720c404 include os name, runtime name in version tag for sentry 2017-01-20 20:16:34 -08:00
Keivan Beigi c9a8ebc2e6 Create anonymous hash to detect issue duplication 2017-01-20 20:15:49 -08:00
Mark McDowall 5e7e816c03 AsOsAgnostic paths for root folder tests 2017-01-20 09:02:36 -08:00
vertigo235 f56076a135 Fixed: Pushover silent priority 2017-01-19 23:51:58 -08:00
Mark McDowall 54dd527f01 Exclude .grab and Plex Version folders 2017-01-19 01:38:37 -08:00
Mark McDowall c6eb19c04d Exclude .grab and Plex Version folders
New: Ignore .grab folder (Plex DVR)
New: Ignore Plex Versions folder (Media Optimizer)
Closes #1610
2017-01-18 20:15:32 -08:00
Mitchell Cash 38b65ba27d Cleanup README (#1622) 2017-01-18 12:31:20 -08:00
Keivan Beigi a2a49ce934 Revert "New: Upgraded SQLite binares for macOS"
This reverts commit 8d91f18823.
2017-01-18 10:04:36 -08:00
Keivan Beigi 047d5a4388 Revert "New: Upgraded SQLite binaries for Windows (3.16.0)"
This reverts commit 111e401a2c.
2017-01-18 10:04:26 -08:00
Keivan Beigi aae69ff49a Revert "Upgraded System.Data.SQLite to 1.0.104.0"
This reverts commit 01e2f4e7e5.
2017-01-18 10:04:07 -08:00
Sander Ploegsma da451cfe03 Option to convert ical feed items to all-day events 2017-01-17 22:36:48 +01:00
Keivan Beigi 01e2f4e7e5 Upgraded System.Data.SQLite to 1.0.104.0 2017-01-17 11:47:46 -08:00
Keivan Beigi 8aacc61c50 New: Switched nyaa.se to HTTPS 2017-01-17 11:47:46 -08:00
Keivan Beigi 111e401a2c New: Upgraded SQLite binaries for Windows (3.16.0) 2017-01-17 11:47:45 -08:00
Keivan 8d91f18823 New: Upgraded SQLite binares for macOS
Upgraded from 3.8.1 to 3.9.1
2017-01-17 11:47:45 -08:00
Keivan Beigi cea6469ab8 Use nameof 2017-01-17 11:47:06 -08:00
Mark McDowall ced7a7dce2 New: Prefer anime batch releases over single episode releases 2017-01-14 12:28:22 -08:00
Mitchell Cash 20a2cfe260 Use DOGnzb name as the default rather than the URL 2017-01-14 08:45:29 -08:00
Drew Freyling 5b0a285b84 New: Reduced image file sizes 2017-01-12 13:10:19 -08:00
Mark McDowall 68ea8a551c Fixed: Parsing of SABnzbd develop version 2017-01-12 00:38:56 -08:00
Keivan Beigi 2e36d35815 Added app.manifest to indicate proper windows 10 support 2017-01-06 16:02:57 -08:00
Keivan Beigi ed2e4d0f1d Sentry will now back-off if it's API key is revoked. 2017-01-06 11:55:54 -08:00
Keivan Beigi 0bdc137093 Smaller sentry payload, send machine name as user name 2017-01-05 17:43:24 -08:00
Keivan Beigi cd7e208efa Revert "Use line number instead of message for sentry fingerprint"
This reverts commit 5f339c0a92.

# Conflicts:
#	src/NzbDrone.Common/Instrumentation/Sentry/SentryTarget.cs
2017-01-05 17:43:24 -08:00
Keivan Beigi 73840dcacc The great logger.Error cleanup! 2017-01-05 17:43:24 -08:00
Keivan Beigi e45d4f60a4 Moved Fatal logging to use nlog patterns 2017-01-05 17:43:24 -08:00
Keivan Beigi 782efcfaf1 Added a one hour debounce of reporting the same errors to sentry 2017-01-05 17:43:24 -08:00
Keivan Beigi 76a7d4f866 Use line number instead of message for sentry fingerprint 2017-01-05 17:43:24 -08:00
Keivan Beigi d61976251e Apparently RemoveTarget doesn't do what you expect it to do. 2017-01-05 10:46:16 -08:00
Keivan Beigi 2487e8ed49 Don't report errors that don't have exceptions 2017-01-05 10:25:50 -08:00
Keivan Beigi 54bc642476 Fixed: OS Version detection shouldn't break user agents. Fixes #1611 2017-01-05 10:25:05 -08:00
Keivan Beigi 6577b0a721 Don't include null in sentry fingerprint if even has no exception 2017-01-04 23:28:51 -08:00
Keivan Beigi bcd67dee5e Added fingerprint to sentry events to allow better grouping 2017-01-04 20:01:43 -08:00
Keivan Beigi e6705db743 Added platform version error handling 2017-01-04 19:15:47 -08:00
Keivan Beigi dd7fdd8ace Disable Sentry Reporting based on analytics flag 2017-01-04 17:56:29 -08:00
Keivan Beigi a1f112e62f Added branch name to Assembly Info 2017-01-04 14:20:13 -08:00
Keivan Beigi 053c730799 Added Sentry error reporting 2017-01-04 14:19:53 -08:00
Keivan Beigi 61579cfb7e Consider /buildAgent/ to be a none production startup path 2017-01-04 14:19:50 -08:00
Keivan Beigi 92d706a10d Updated bindingRedirect for Newtonsoft.Json 2017-01-04 14:18:38 -08:00
Keivan Beigi 6ae5829439 Removed duplicated code from ContainerBuilders 2017-01-04 14:18:37 -08:00
Keivan Beigi 8252a2a60f RIP 2017-01-04 00:19:32 -08:00
Keivan Beigi 009dc14805 Added Windows Server detection logic 2017-01-03 18:56:28 -08:00
Keivan Beigi e0ff25d5be New: switched nyaa to HTTPS 2017-01-03 18:37:46 -08:00
Keivan Beigi ad7d571b24 New: Better platform detection specifically for Non-Windows Systems 2017-01-03 18:37:23 -08:00
Keivan Beigi 598b5322b7 Fixed linux build 2017-01-03 18:31:48 -08:00
Keivan Beigi 76505bdaa1 Added Rider dir to git ignore. 2017-01-03 18:30:21 -08:00
Keivan Beigi d64d35361c Revert "Upgraded Moq" (Mono compatibility)
This reverts commit 3140d5d4b0.
2017-01-03 10:25:01 -08:00
Mark McDowall d5ef451bb4 Fixed: Parsing of 2017x123 episode format 2017-01-02 11:46:25 -08:00
Keivan Beigi 3140d5d4b0 Upgraded Moq 2016-12-28 22:41:48 -08:00
Keivan Beigi fdb5ccdae1 Updated Newtonsoft.Json from 6.0.6 to 9.0.1 2016-12-28 22:41:47 -08:00
Keivan Beigi a2ce435239 Upgraded Nlog, NCrunch 2016-12-28 22:41:46 -08:00
4241 changed files with 170315 additions and 147532 deletions
+2 -2
View File
@@ -2,14 +2,14 @@
# editorconfig.org # editorconfig.org
root = true root = true
[*.{cs,html,js,hbs}] [*.{cs}]
charset = utf-8 charset = utf-8
trim_trailing_whitespace = true trim_trailing_whitespace = true
insert_final_newline = true insert_final_newline = true
indent_style = space indent_style = space
indent_size = 4 indent_size = 4
[*.less] [*.{js,html,js,hbs,less,css}]
charset = utf-8 charset = utf-8
trim_trailing_whitespace = true trim_trailing_whitespace = true
insert_final_newline = true insert_final_newline = true
+9
View File
@@ -0,0 +1,9 @@
{
"paths": [
"frontend/src/**/*.js"
],
"ignored": [
"**/node_modules/**/*"
],
"port": 5004
}
+7 -17
View File
@@ -1,22 +1,12 @@
# Auto detect text files and perform LF normalization # Auto detect text files and perform LF normalization
*text eol=lf * text=auto
# Explicitly set bash scripts to have unix endings
# when checked out on windows
*.sh text eol=lf
distribution/debian/* text eol=lf
distribution/osx/Sonarr text eol=lf
# Custom for Visual Studio # Custom for Visual Studio
*.cs diff=csharp *.cs diff=csharp
*.sln merge=union *.sln merge=union
*.csproj merge=union
*.vbproj merge=union
*.fsproj merge=union
*.dbproj merge=union
# Standard to msysgit
*.doc diff=astextplain
*.DOC diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot diff=astextplain
*.DOT diff=astextplain
*.pdf diff=astextplain
*.PDF diff=astextplain
*.rtf diff=astextplain
*.RTF diff=astextplain
+38 -2
View File
@@ -1,5 +1,41 @@
<!--
Before opening a new issue, please ensure:
- You use the forums for support/questions
- You search for existing bugs/feature requests
- Remove extraneous template details
- Do not prefix title with type of issue (Feature Request, Bug, etc.) The appropriate labels will be added during triage.
-->
## Support / Questions
Please use https://forums.sonarr.tv/ for support. Support requests or questions will be redirected to the forums and the issue will be closed.
Provide a description of the feature request or bug, the more details the better. <!--
Please use https://forums.sonarr.tv/ for support or other questions. (When in doubt, use the forums) Remove if not opening a bug report
-->
## Bug Report
### System Information/Logs
**Sonarr Version:**
**Operating System:**
**.net Framework (Windows) or mono (macOS/Linux) Version:**
**Link to Log Files (debug or trace):**
**Browser (for UI bugs):**
### Additional Information
<!--
Remove if not opening a feature request
-->
## Feature Request
### What problem are you looking to solve?
### Other Information
+28
View File
@@ -0,0 +1,28 @@
---
name: Bug report
about: Create a report to help us improve Sonarr
---
**Describe the bug**
A clear and concise description of what the bug is.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Logs**
Link to debug or trace log files.
**System Information**
- Sonarr Version: [e.g. 2.0.0.1]
- Operating System: [e.g. Windows 10]
- .net Framework (Windows) or mono (macOS/Linux) Version: [e.g. 4.5 or 5.12]
**UI Bugs:**
- OS: [e.g. Windows]
- Browser: [e.g. chrome, firefox]
- Version: [e.g. 22]
**Additional context**
Add any other context about the problem here.
+14
View File
@@ -0,0 +1,14 @@
---
name: Feature request
about: Suggest an idea for Sonarr
---
**Describe the problem**
A clear and concise description of the problem you're looking to solve.
**Describe any solutions you think might work**
A clear and concise description of any solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.
+7
View File
@@ -0,0 +1,7 @@
---
name: Other issues
about: How to get support or ask questions
---
Please use https://forums.sonarr.tv/ for support. Support requests or questions will be redirected to the forums and the issue will be closed.
+7
View File
@@ -0,0 +1,7 @@
## Support
There are a number of frequently asked questions that have been answered in our [FAQ](https://github.com/Sonarr/Sonarr/wiki/FAQ)
The [wiki](https://github.com/Sonarr/Sonarr/wiki) contains other information and guides
If you have a support question, please use the [support forums](https://forums.sonarr.tv/).
+11 -3
View File
@@ -45,6 +45,10 @@ _dotCover*
# DevExpress CodeRush # DevExpress CodeRush
src/.cr/ src/.cr/
# Emacs
*~
\#*\#
# NCrunch # NCrunch
*.ncrunch* *.ncrunch*
.*crunch*.local.xml .*crunch*.local.xml
@@ -115,12 +119,14 @@ node_modules/
_output* _output*
_rawPackage/ _rawPackage/
_dotTrace* _dotTrace*
_tests/ _tests*
_publish*
_temp*
*.Result.xml *.Result.xml
setup/Output/ setup/Output/
*.~is *.~is
UI.Phantom/ UI/
#VS outout folders #VS outout folders
bin bin
@@ -130,6 +136,8 @@ output/*
#OS X metadata files #OS X metadata files
._* ._*
.DS_Store
_start _start
_temp_*/**/*
src/.idea/
-4
View File
@@ -1,4 +0,0 @@
[submodule "src/ExternalModules/CurlSharp"]
path = src/ExternalModules/CurlSharp
url = https://github.com/Sonarr/CurlSharp.git
branch = master
Generated
-1
View File
@@ -1 +0,0 @@
Sonarr
-25
View File
@@ -1,25 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.idea" />
<excludeFolder url="file://$MODULE_DIR$/Logo" />
<excludeFolder url="file://$MODULE_DIR$/_output" />
<excludeFolder url="file://$MODULE_DIR$/_output_mono" />
<excludeFolder url="file://$MODULE_DIR$/_output_osx" />
<excludeFolder url="file://$MODULE_DIR$/_output_osx_app" />
<excludeFolder url="file://$MODULE_DIR$/_start" />
<excludeFolder url="file://$MODULE_DIR$/_tests" />
<excludeFolder url="file://$MODULE_DIR$/debian" />
<excludeFolder url="file://$MODULE_DIR$/node_modules" />
<excludeFolder url="file://$MODULE_DIR$/osx" />
<excludeFolder url="file://$MODULE_DIR$/schemas" />
<excludeFolder url="file://$MODULE_DIR$/setup" />
<excludeFolder url="file://$MODULE_DIR$/src" />
<excludeFolder url="file://$MODULE_DIR$/tools" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Sonarr node_modules" level="project" />
</component>
</module>
-59
View File
@@ -1,59 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectCodeStyleSettingsManager">
<option name="PER_PROJECT_SETTINGS">
<value>
<option name="LINE_SEPARATOR" value="&#13;&#10;" />
<option name="RIGHT_MARGIN" value="190" />
<option name="HTML_ATTRIBUTE_WRAP" value="0" />
<option name="HTML_KEEP_LINE_BREAKS" value="false" />
<option name="HTML_KEEP_BLANK_LINES" value="1" />
<option name="HTML_ALIGN_ATTRIBUTES" value="false" />
<option name="HTML_INLINE_ELEMENTS" value="" />
<option name="HTML_DONT_ADD_BREAKS_IF_INLINE_CONTENT" value="" />
<CssCodeStyleSettings>
<option name="HEX_COLOR_LOWER_CASE" value="true" />
<option name="HEX_COLOR_LONG_FORMAT" value="true" />
<option name="VALUE_ALIGNMENT" value="1" />
</CssCodeStyleSettings>
<JSCodeStyleSettings>
<option name="SPACE_BEFORE_PROPERTY_COLON" value="true" />
<option name="ALIGN_OBJECT_PROPERTIES" value="2" />
<option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
<option name="OBJECT_LITERAL_WRAP" value="2" />
<option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
</JSCodeStyleSettings>
<XML>
<option name="XML_LEGACY_SETTINGS_IMPORTED" value="true" />
</XML>
<codeStyleSettings language="CSS">
<indentOptions>
<option name="SMART_TABS" value="true" />
</indentOptions>
</codeStyleSettings>
<codeStyleSettings language="JavaScript">
<option name="LINE_COMMENT_AT_FIRST_COLUMN" value="true" />
<option name="KEEP_LINE_BREAKS" value="false" />
<option name="KEEP_FIRST_COLUMN_COMMENT" value="false" />
<option name="KEEP_BLANK_LINES_IN_CODE" value="1" />
<option name="CATCH_ON_NEW_LINE" value="true" />
<option name="FINALLY_ON_NEW_LINE" value="true" />
<option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
<option name="ALIGN_MULTILINE_BINARY_OPERATION" value="true" />
<option name="SPACE_BEFORE_METHOD_PARENTHESES" value="true" />
<option name="CALL_PARAMETERS_WRAP" value="1" />
<option name="BINARY_OPERATION_WRAP" value="1" />
<option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="true" />
<option name="ARRAY_INITIALIZER_WRAP" value="2" />
<option name="ARRAY_INITIALIZER_LBRACE_ON_NEXT_LINE" value="true" />
<option name="ARRAY_INITIALIZER_RBRACE_ON_NEXT_LINE" value="true" />
<option name="IF_BRACE_FORCE" value="3" />
<option name="DOWHILE_BRACE_FORCE" value="3" />
<option name="WHILE_BRACE_FORCE" value="3" />
<option name="FOR_BRACE_FORCE" value="3" />
</codeStyleSettings>
</value>
</option>
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
</component>
</project>
-6
View File
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="PROJECT" charset="UTF-8" />
</component>
</project>
-6
View File
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JavaScriptLibraryMappings">
<includedPredefinedLibrary name="ECMAScript 6" />
</component>
</project>
-14
View File
@@ -1,14 +0,0 @@
<component name="libraryTable">
<library name="Sonarr node_modules" type="javaScript">
<properties>
<option name="frameworkName" value="node_modules" />
<sourceFilesUrls>
<item url="file://$PROJECT_DIR$/node_modules" />
</sourceFilesUrls>
</properties>
<CLASSES>
<root url="file://$PROJECT_DIR$/node_modules" />
</CLASSES>
<SOURCES />
</library>
</component>
-14
View File
@@ -1,14 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectLevelVcsManager" settingsEditedManually="false">
<OptionsSetting value="true" id="Add" />
<OptionsSetting value="true" id="Remove" />
<OptionsSetting value="true" id="Checkout" />
<OptionsSetting value="true" id="Update" />
<OptionsSetting value="true" id="Status" />
<OptionsSetting value="true" id="Edit" />
<ConfirmationsSetting value="0" id="Add" />
<ConfirmationsSetting value="0" id="Remove" />
</component>
<component name="ProjectRootManager" version="2" />
</project>
-8
View File
@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/Sonarr.iml" filepath="$PROJECT_DIR$/.idea/Sonarr.iml" />
</modules>
</component>
</project>
Generated
-6
View File
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
+2
View File
@@ -0,0 +1,2 @@
save-exact true
registry "https://registry.yarnpkg.com"
+1 -15
View File
@@ -7,21 +7,7 @@ Setup guides, FAQ, the more information we have on the wiki the better.
## Development ## ## Development ##
### Tools required ### See the readme for information on setting up your development environment.
- Visual Studio 2015
- HTML/Javascript editor of choice (Sublime Text/Webstorm/Atom/etc)
- npm (node package manager)
- git
### Getting started ###
1. Fork Sonarr
2. Clone (develop branch) *you may need pull in submodules separately if you client doesn't clone them automatically (CurlSharp)*
3. Run `npm install`
4. Run `npm start` - Used to compile the UI components and copy them.
Leave this window open.
If you have gulp globally installed you can use `gulp watch` instead
5. Compile in Visual Studio
### Contributing Code ### ### Contributing Code ###
- If you're adding a new, already requested feature, please comment on [Github Issues](https://github.com/Sonarr/Sonarr/issues "Github Issues") so work is not duplicated (If you want to add something not already on there, please talk to us first) - If you're adding a new, already requested feature, please comment on [Github Issues](https://github.com/Sonarr/Sonarr/issues "Github Issues") so work is not duplicated (If you want to add something not already on there, please talk to us first)
+11
View File
@@ -0,0 +1,11 @@
Copyright (C)
2014-2017 Mark McDowall, Keivan Beigi, Taloth Saldono and contributors
2010-2014 Mark McDowall, Keivan Beigi and contributors
_Please refer to the git commit log for details on all contributors and their respective contributions._
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You can find a copy of the GNU General Public License in the LICENSE.md file and <http://www.gnu.org/licenses/>.
+12
View File
@@ -0,0 +1,12 @@
# These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username
open_collective: sonarr
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
+675
View File
@@ -0,0 +1,675 @@
### GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc.
<http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
### Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom
to share and change all versions of a program--to make sure it remains
free software for all its users. We, the Free Software Foundation, use
the GNU General Public License for most of our software; it applies
also to any other work released this way by its authors. You can apply
it to your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you
have certain responsibilities if you distribute copies of the
software, or if you modify it: responsibilities to respect the freedom
of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the
manufacturer can do so. This is fundamentally incompatible with the
aim of protecting users' freedom to change the software. The
systematic pattern of such abuse occurs in the area of products for
individuals to use, which is precisely where it is most unacceptable.
Therefore, we have designed this version of the GPL to prohibit the
practice for those products. If such problems arise substantially in
other domains, we stand ready to extend this provision to those
domains in future versions of the GPL, as needed to protect the
freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish
to avoid the special danger that patents applied to a free program
could make it effectively proprietary. To prevent this, the GPL
assures that patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
### TERMS AND CONDITIONS
#### 0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds
of works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of
an exact copy. The resulting work is called a "modified version" of
the earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user
through a computer network, with no transfer of a copy, is not
conveying.
An interactive user interface displays "Appropriate Legal Notices" to
the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
#### 1. Source Code.
The "source code" for a work means the preferred form of the work for
making modifications to it. "Object code" means any non-source form of
a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users can
regenerate automatically from other parts of the Corresponding Source.
The Corresponding Source for a work in source code form is that same
work.
#### 2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not convey,
without conditions so long as your license otherwise remains in force.
You may convey covered works to others for the sole purpose of having
them make modifications exclusively for you, or provide you with
facilities for running those works, provided that you comply with the
terms of this License in conveying all material for which you do not
control copyright. Those thus making or running the covered works for
you must do so exclusively on your behalf, under your direction and
control, on terms that prohibit them from making any copies of your
copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under the
conditions stated below. Sublicensing is not allowed; section 10 makes
it unnecessary.
#### 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such
circumvention is effected by exercising rights under this License with
respect to the covered work, and you disclaim any intention to limit
operation or modification of the work as a means of enforcing, against
the work's users, your or third parties' legal rights to forbid
circumvention of technological measures.
#### 4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
#### 5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these
conditions:
- a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
- b) The work must carry prominent notices stating that it is
released under this License and any conditions added under
section 7. This requirement modifies the requirement in section 4
to "keep intact all notices".
- c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
- d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
#### 6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms of
sections 4 and 5, provided that you also convey the machine-readable
Corresponding Source under the terms of this License, in one of these
ways:
- a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
- b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the Corresponding
Source from a network server at no charge.
- c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
- d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
- e) Convey the object code using peer-to-peer transmission,
provided you inform other peers where the object code and
Corresponding Source of the work are being offered to the general
public at no charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal,
family, or household purposes, or (2) anything designed or sold for
incorporation into a dwelling. In determining whether a product is a
consumer product, doubtful cases shall be resolved in favor of
coverage. For a particular product received by a particular user,
"normally used" refers to a typical or common use of that class of
product, regardless of the status of the particular user or of the way
in which the particular user actually uses, or expects or is expected
to use, the product. A product is a consumer product regardless of
whether the product has substantial commercial, industrial or
non-consumer uses, unless such uses represent the only significant
mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to
install and execute modified versions of a covered work in that User
Product from a modified version of its Corresponding Source. The
information must suffice to ensure that the continued functioning of
the modified object code is in no case prevented or interfered with
solely because modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or
updates for a work that has been modified or installed by the
recipient, or for the User Product in which it has been modified or
installed. Access to a network may be denied when the modification
itself materially and adversely affects the operation of the network
or violates the rules and protocols for communication across the
network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
#### 7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders
of that material) supplement the terms of this License with terms:
- a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
- b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
- c) Prohibiting misrepresentation of the origin of that material,
or requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
- d) Limiting the use for publicity purposes of names of licensors
or authors of the material; or
- e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
- f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions
of it) with contractual assumptions of liability to the recipient,
for any liability that these contractual assumptions directly
impose on those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions; the
above requirements apply either way.
#### 8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your license
from a particular copyright holder is reinstated (a) provisionally,
unless and until the copyright holder explicitly and finally
terminates your license, and (b) permanently, if the copyright holder
fails to notify you of the violation by some reasonable means prior to
60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
#### 9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or run
a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
#### 10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
#### 11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims owned
or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within the
scope of its coverage, prohibits the exercise of, or is conditioned on
the non-exercise of one or more of the rights that are specifically
granted under this License. You may not convey a covered work if you
are a party to an arrangement with a third party that is in the
business of distributing software, under which you make payment to the
third party based on the extent of your activity of conveying the
work, and under which the third party grants, to any of the parties
who would receive the covered work from you, a discriminatory patent
license (a) in connection with copies of the covered work conveyed by
you (or copies made from those copies), or (b) primarily for and in
connection with specific products or compilations that contain the
covered work, unless you entered into that arrangement, or that patent
license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
#### 12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under
this License and any other pertinent obligations, then as a
consequence you may not convey it at all. For example, if you agree to
terms that obligate you to collect a royalty for further conveying
from those to whom you convey the Program, the only way you could
satisfy both those terms and this License would be to refrain entirely
from conveying the Program.
#### 13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
#### 14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions
of the GNU General Public License from time to time. Such new versions
will be similar in spirit to the present version, but may differ in
detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies that a certain numbered version of the GNU General Public
License "or any later version" applies to it, you have the option of
following the terms and conditions either of that numbered version or
of any later version published by the Free Software Foundation. If the
Program does not specify a version number of the GNU General Public
License, you may choose any version ever published by the Free
Software Foundation.
If the Program specifies that a proxy can decide which future versions
of the GNU General Public License can be used, that proxy's public
statement of acceptance of a version permanently authorizes you to
choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
#### 15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT
WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE
DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
CORRECTION.
#### 16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR
CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT
NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR
LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM
TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER
PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
#### 17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
### How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these
terms.
To do so, attach the following notices to the program. It is safest to
attach them to the start of each source file to most effectively state
the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper
mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands \`show w' and \`show c' should show the
appropriate parts of the General Public License. Of course, your
program's commands might be different; for a GUI interface, you would
use an "about box".
You should also get your employer (if you work as a programmer) or
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. For more information on this, and how to apply and follow
the GNU GPL, see <http://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your
program into proprietary programs. If your program is a subroutine
library, you may consider it more useful to permit linking proprietary
applications with the library. If this is what you want to do, use the
GNU Lesser General Public License instead of this License. But first,
please read <http://www.gnu.org/philosophy/why-not-lgpl.html>.
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 16 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 707 B

After

Width:  |  Height:  |  Size: 423 B

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 620 B

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 824 B

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 11 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 929 B

+33
View File
@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="70px" height="70px" viewBox="0 0 70 70" style="enable-background:new 0 0 70 70;" xml:space="preserve">
<g>
<g>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="-1.3318" y1="43.7371" x2="67.0419" y2="26.0967">
<stop offset="0.1237" style="stop-color:#7866FF"/>
<stop offset="0.5376" style="stop-color:#FE2EB6"/>
<stop offset="0.8548" style="stop-color:#FD0486"/>
</linearGradient>
<polygon style="fill:url(#SVGID_1_);" points="67.3,16 43.7,0 0,31.1 11.1,70 58.9,60.3 "/>
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="45.9148" y1="38.9098" x2="67.6577" y2="9.0989">
<stop offset="0.1237" style="stop-color:#FF0080"/>
<stop offset="0.2587" style="stop-color:#FE0385"/>
<stop offset="0.4109" style="stop-color:#FA0C92"/>
<stop offset="0.5713" style="stop-color:#F41BA9"/>
<stop offset="0.7363" style="stop-color:#EB2FC8"/>
<stop offset="0.8656" style="stop-color:#E343E6"/>
</linearGradient>
<polygon style="fill:url(#SVGID_2_);" points="67.3,16 43.7,0 38,15.7 38,47.8 70,47.8 "/>
</g>
<g>
<rect x="13.4" y="13.4" style="fill:#000000;" width="43.2" height="43.2"/>
<rect x="17.4" y="48.5" style="fill:#FFFFFF;" width="16.2" height="2.7"/>
<g>
<path style="fill:#FFFFFF;" d="M17.4,19.1h6.9c5.6,0,9.5,3.8,9.5,8.9V28c0,5-3.9,8.9-9.5,8.9h-6.9V19.1z M21.4,22.7v10.7h3
c3.2,0,5.4-2.2,5.4-5.3V28c0-3.2-2.2-5.4-5.4-5.4H21.4z"/>
<polygon style="fill:#FFFFFF;" points="40.3,22.7 34.9,22.7 34.9,19.1 49.6,19.1 49.6,22.7 44.2,22.7 44.2,37 40.3,37 "/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

+66
View File
@@ -0,0 +1,66 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="120.1px" height="130.2px" viewBox="0 0 120.1 130.2" style="enable-background:new 0 0 120.1 130.2;" xml:space="preserve"
>
<g>
<linearGradient id="XMLID_2_" gradientUnits="userSpaceOnUse" x1="31.8412" y1="120.5578" x2="110.2402" y2="73.24">
<stop offset="0" style="stop-color:#FCEE39"/>
<stop offset="1" style="stop-color:#F37B3D"/>
</linearGradient>
<path id="XMLID_3041_" style="fill:url(#XMLID_2_);" d="M118.6,71.8c0.9-0.8,1.4-1.9,1.5-3.2c0.1-2.6-1.8-4.7-4.4-4.9
c-1.2-0.1-2.4,0.4-3.3,1.1l0,0l-83.8,45.9c-1.9,0.8-3.6,2.2-4.7,4.1c-2.9,4.8-1.3,11,3.6,13.9c3.4,2,7.5,1.8,10.7-0.2l0,0l0,0
c0.2-0.2,0.5-0.3,0.7-0.5l78-54.8C117.3,72.9,118.4,72.1,118.6,71.8L118.6,71.8L118.6,71.8z"/>
<linearGradient id="XMLID_3_" gradientUnits="userSpaceOnUse" x1="48.3607" y1="6.9083" x2="119.9179" y2="69.5546">
<stop offset="0" style="stop-color:#EF5A6B"/>
<stop offset="0.57" style="stop-color:#F26F4E"/>
<stop offset="1" style="stop-color:#F37B3D"/>
</linearGradient>
<path id="XMLID_3049_" style="fill:url(#XMLID_3_);" d="M118.8,65.1L118.8,65.1L55,2.5C53.6,1,51.6,0,49.3,0
c-4.3,0-7.7,3.5-7.7,7.7v0c0,2.1,0.8,3.9,2.1,5.3l0,0l0,0c0.4,0.4,0.8,0.7,1.2,1l67.4,57.7l0,0c0.8,0.7,1.8,1.2,3,1.3
c2.6,0.1,4.7-1.8,4.9-4.4C120.2,67.3,119.7,66,118.8,65.1z"/>
<linearGradient id="XMLID_4_" gradientUnits="userSpaceOnUse" x1="52.9467" y1="63.6407" x2="10.5379" y2="37.1562">
<stop offset="0" style="stop-color:#7C59A4"/>
<stop offset="0.3852" style="stop-color:#AF4C92"/>
<stop offset="0.7654" style="stop-color:#DC4183"/>
<stop offset="0.957" style="stop-color:#ED3D7D"/>
</linearGradient>
<path id="XMLID_3042_" style="fill:url(#XMLID_4_);" d="M57.1,59.5C57,59.5,17.7,28.5,16.9,28l0,0l0,0c-0.6-0.3-1.2-0.6-1.8-0.9
c-5.8-2.2-12.2,0.8-14.4,6.6c-1.9,5.1,0.2,10.7,4.6,13.4l0,0l0,0C6,47.5,6.6,47.8,7.3,48c0.4,0.2,45.4,18.8,45.4,18.8l0,0
c1.8,0.8,3.9,0.3,5.1-1.2C59.3,63.7,59,61,57.1,59.5z"/>
<linearGradient id="XMLID_5_" gradientUnits="userSpaceOnUse" x1="52.1736" y1="3.7019" x2="10.7706" y2="37.8971">
<stop offset="0" style="stop-color:#EF5A6B"/>
<stop offset="0.364" style="stop-color:#EE4E72"/>
<stop offset="1" style="stop-color:#ED3D7D"/>
</linearGradient>
<path id="XMLID_3057_" style="fill:url(#XMLID_5_);" d="M49.3,0c-1.7,0-3.3,0.6-4.6,1.5L4.9,28.3c-0.1,0.1-0.2,0.1-0.2,0.2l-0.1,0
l0,0c-1.7,1.2-3.1,3-3.9,5.1C-1.5,39.4,1.5,45.9,7.3,48c3.6,1.4,7.5,0.7,10.4-1.4l0,0l0,0c0.7-0.5,1.3-1,1.8-1.6l34.6-31.2l0,0
c1.8-1.4,3-3.6,3-6.1v0C57.1,3.5,53.6,0,49.3,0z"/>
<g id="XMLID_3008_">
<rect id="XMLID_3033_" x="34.6" y="37.4" style="fill:#000000;" width="51" height="51"/>
<rect id="XMLID_3032_" x="39" y="78.8" style="fill:#FFFFFF;" width="19.1" height="3.2"/>
<g id="XMLID_3009_">
<path id="XMLID_3030_" style="fill:#FFFFFF;" d="M38.8,50.8l1.5-1.4c0.4,0.5,0.8,0.8,1.3,0.8c0.6,0,0.9-0.4,0.9-1.2l0-5.3l2.3,0
l0,5.3c0,1-0.3,1.8-0.8,2.3c-0.5,0.5-1.3,0.8-2.3,0.8C40.2,52.2,39.4,51.6,38.8,50.8z"/>
<path id="XMLID_3028_" style="fill:#FFFFFF;" d="M45.3,43.8l6.7,0v1.9l-4.4,0V47l4,0l0,1.8l-4,0l0,1.3l4.5,0l0,2l-6.7,0
L45.3,43.8z"/>
<path id="XMLID_3026_" style="fill:#FFFFFF;" d="M55,45.8l-2.5,0l0-2l7.3,0l0,2l-2.5,0l0,6.3l-2.3,0L55,45.8z"/>
<path id="XMLID_3022_" style="fill:#FFFFFF;" d="M39,54l4.3,0c1,0,1.8,0.3,2.3,0.7c0.3,0.3,0.5,0.8,0.5,1.4v0
c0,1-0.5,1.5-1.3,1.9c1,0.3,1.6,0.9,1.6,2v0c0,1.4-1.2,2.3-3.1,2.3l-4.3,0L39,54z M43.8,56.6c0-0.5-0.4-0.7-1-0.7l-1.5,0l0,1.5
l1.4,0C43.4,57.3,43.8,57.1,43.8,56.6L43.8,56.6z M43,59l-1.8,0l0,1.5H43c0.7,0,1.1-0.3,1.1-0.8v0C44.1,59.2,43.7,59,43,59z"/>
<path id="XMLID_3019_" style="fill:#FFFFFF;" d="M46.8,54l3.9,0c1.3,0,2.1,0.3,2.7,0.9c0.5,0.5,0.7,1.1,0.7,1.9v0
c0,1.3-0.7,2.1-1.7,2.6l2,2.9l-2.6,0l-1.7-2.5h-1l0,2.5l-2.3,0L46.8,54z M50.6,58c0.8,0,1.2-0.4,1.2-1v0c0-0.7-0.5-1-1.2-1
l-1.5,0v2H50.6z"/>
<path id="XMLID_3016_" style="fill:#FFFFFF;" d="M56.8,54l2.2,0l3.5,8.4l-2.5,0l-0.6-1.5l-3.2,0l-0.6,1.5l-2.4,0L56.8,54z
M58.8,59l-0.9-2.3L57,59L58.8,59z"/>
<path id="XMLID_3014_" style="fill:#FFFFFF;" d="M62.8,54l2.3,0l0,8.3l-2.3,0L62.8,54z"/>
<path id="XMLID_3012_" style="fill:#FFFFFF;" d="M65.7,54l2.1,0l3.4,4.4l0-4.4l2.3,0l0,8.3l-2,0L68,57.8l0,4.6l-2.3,0L65.7,54z"
/>
<path id="XMLID_3010_" style="fill:#FFFFFF;" d="M73.7,61.1l1.3-1.5c0.8,0.7,1.7,1,2.7,1c0.6,0,1-0.2,1-0.6v0
c0-0.4-0.3-0.5-1.4-0.8c-1.8-0.4-3.1-0.9-3.1-2.6v0c0-1.5,1.2-2.7,3.2-2.7c1.4,0,2.5,0.4,3.4,1.1l-1.2,1.6
c-0.8-0.5-1.6-0.8-2.3-0.8c-0.6,0-0.8,0.2-0.8,0.5v0c0,0.4,0.3,0.5,1.4,0.8c1.9,0.4,3.1,1,3.1,2.6v0c0,1.7-1.3,2.7-3.4,2.7
C76.1,62.5,74.7,62,73.7,61.1z"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.8 KiB

+50
View File
@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="70px" height="70px" viewBox="0 0 70 70" style="enable-background:new 0 0 70 70;" xml:space="preserve">
<g>
<g>
<g>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="22.9451" y1="75.7869" x2="74.7868" y2="20.6415">
<stop offset="1.612903e-002" style="stop-color:#B35BA3"/>
<stop offset="0.4044" style="stop-color:#C41E57"/>
<stop offset="0.4677" style="stop-color:#C41E57"/>
<stop offset="0.6505" style="stop-color:#EB8523"/>
<stop offset="0.9516" style="stop-color:#FEBD11"/>
</linearGradient>
<polygon style="fill:url(#SVGID_1_);" points="49.8,15.2 36,36.7 58.4,70 70,23.1 "/>
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="17.7187" y1="73.2922" x2="69.5556" y2="18.1519">
<stop offset="1.612903e-002" style="stop-color:#B35BA3"/>
<stop offset="0.4044" style="stop-color:#C41E57"/>
<stop offset="0.4677" style="stop-color:#C41E57"/>
<stop offset="0.7043" style="stop-color:#EB8523"/>
</linearGradient>
<polygon style="fill:url(#SVGID_2_);" points="51.1,15.7 49,0 18.8,33.6 27.6,42.3 20.8,70 58.4,70 "/>
</g>
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="1.8281" y1="53.4275" x2="48.8245" y2="9.2255">
<stop offset="1.612903e-002" style="stop-color:#B35BA3"/>
<stop offset="0.6613" style="stop-color:#C41E57"/>
</linearGradient>
<polygon style="fill:url(#SVGID_3_);" points="49,0 11.6,0 0,47.1 55.6,47.1 "/>
<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="49.8935" y1="-11.5569" x2="48.8588" y2="24.0352">
<stop offset="0.5" style="stop-color:#C41E57"/>
<stop offset="0.6668" style="stop-color:#D13F48"/>
<stop offset="0.7952" style="stop-color:#D94F39"/>
<stop offset="0.8656" style="stop-color:#DD5433"/>
</linearGradient>
<polygon style="fill:url(#SVGID_4_);" points="55.3,47.1 51.1,15.7 49,0 41.7,23 "/>
</g>
<g>
<rect x="13.4" y="13.5" transform="matrix(-1 2.577289e-003 -2.577289e-003 -1 70.0288 70.081)" style="fill:#000000;" width="43.2" height="43.2"/>
<rect x="17.6" y="48.6" transform="matrix(1 -2.577289e-003 2.577289e-003 1 -0.1287 6.634109e-002)" style="fill:#FFFFFF;" width="16.2" height="2.7"/>
<path style="fill:#FFFFFF;" d="M17.4,19.1l8.2,0c2.3,0,4,0.6,5.2,1.8c1,1,1.5,2.4,1.5,4.1l0,0.1c0,1.5-0.3,2.6-1.1,3.5
c-0.7,0.9-1.6,1.6-2.8,2l4.4,6.4l-4.6,0l-3.7-5.5l-3.3,0l0,5.5l-3.9,0L17.4,19.1z M25.3,27.8c1,0,1.7-0.2,2.2-0.7
c0.5-0.5,0.8-1.1,0.8-1.8l0-0.1c0-0.9-0.3-1.5-0.8-1.9c-0.5-0.4-1.3-0.6-2.3-0.6l-3.9,0l0,5.1L25.3,27.8z"/>
<path style="fill:#FFFFFF;" d="M36,33.2l-1.9,0l0-3.3l2.5,0l0.6-3.8l-2.3,0l0-3.3l2.8,0l0.6-3.7l3.4,0l-0.6,3.7l3.7,0l0.6-3.7
l3.4,0l-0.6,3.7l1.9,0l0,3.3l-2.5,0L47,29.9l2.3,0l0,3.3l-2.8,0L45.8,37l-3.4,0l0.7-3.8l-3.7,0L38.7,37l-3.4,0L36,33.2z
M43.7,29.9l0.6-3.8l-3.7,0L40,29.9L43.7,29.9z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

+64
View File
@@ -0,0 +1,64 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 70 70" style="enable-background:new 0 0 70 70;" xml:space="preserve">
<g>
<g>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="1.7738" y1="31.2729" x2="40.1662" y2="31.2729">
<stop offset="0" style="stop-color:#905CFB"/>
<stop offset="6.772543e-002" style="stop-color:#776CF9"/>
<stop offset="0.1729" style="stop-color:#5681F7"/>
<stop offset="0.2865" style="stop-color:#3B92F5"/>
<stop offset="0.4097" style="stop-color:#269FF4"/>
<stop offset="0.5474" style="stop-color:#17A9F3"/>
<stop offset="0.7111" style="stop-color:#0FAEF2"/>
<stop offset="0.9677" style="stop-color:#0CB0F2"/>
</linearGradient>
<path style="fill:url(#SVGID_1_);" d="M39.7,47.9l-6.1-34c-0.4-2.4-1.2-4.8-2.7-7.1c-2-3.2-5.2-5.4-8.8-6.3
C7.9-2.9-2.6,11.3,3.6,23.9c0,0,0,0,0,0l14.8,31.7c0.4,1,1,2,1.7,2.9c1.2,1.6,2.8,2.8,4.7,3.4C34.4,64.9,42.1,56.4,39.7,47.9z"/>
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="5.3113" y1="9.6691" x2="69.2278" y2="43.8664">
<stop offset="0" style="stop-color:#905CFB"/>
<stop offset="6.772543e-002" style="stop-color:#776CF9"/>
<stop offset="0.1729" style="stop-color:#5681F7"/>
<stop offset="0.2865" style="stop-color:#3B92F5"/>
<stop offset="0.4097" style="stop-color:#269FF4"/>
<stop offset="0.5474" style="stop-color:#17A9F3"/>
<stop offset="0.7111" style="stop-color:#0FAEF2"/>
<stop offset="0.9677" style="stop-color:#0CB0F2"/>
</linearGradient>
<path style="fill:url(#SVGID_2_);" d="M67.4,26.5c-1.4-2.2-3.4-3.9-5.7-4.9L25.5,1.7l0,0c-1-0.5-2.1-1-3.3-1.3
C6.7-3.2-4.4,13.8,5.5,27c1.5,2,3.6,3.6,6,4.5L48,47.9c0.8,0.5,1.6,0.8,2.5,1.1C64.5,53.4,75.1,38.6,67.4,26.5z"/>
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="-19.2836" y1="70.8198" x2="55.9833" y2="33.1863">
<stop offset="0" style="stop-color:#3BEA62"/>
<stop offset="0.117" style="stop-color:#31DE80"/>
<stop offset="0.3025" style="stop-color:#24CEA8"/>
<stop offset="0.4844" style="stop-color:#1AC1C9"/>
<stop offset="0.6592" style="stop-color:#12B7DF"/>
<stop offset="0.8238" style="stop-color:#0EB2ED"/>
<stop offset="0.9677" style="stop-color:#0CB0F2"/>
</linearGradient>
<path style="fill:url(#SVGID_3_);" d="M67.4,26.5c-1.8-2.8-4.6-4.8-7.9-5.6c-3.5-0.8-6.8-0.5-9.6,0.7L11.4,36.1
c0,0-0.2,0.1-0.6,0.4C0.9,40.4-4,53.3,4,64c1.8,2.4,4.3,4.2,7.1,5c5.3,1.6,10.1,1,14-1.1c0,0,0.1,0,0.1,0l37.6-20.1
c0,0,0,0,0.1-0.1C69.5,43.9,72.6,34.6,67.4,26.5z"/>
<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="38.9439" y1="5.8503" x2="5.4232" y2="77.5093">
<stop offset="0" style="stop-color:#3BEA62"/>
<stop offset="9.397750e-002" style="stop-color:#2FDB87"/>
<stop offset="0.196" style="stop-color:#24CEA8"/>
<stop offset="0.3063" style="stop-color:#1BC3C3"/>
<stop offset="0.4259" style="stop-color:#14BAD8"/>
<stop offset="0.5596" style="stop-color:#10B5E7"/>
<stop offset="0.7185" style="stop-color:#0DB1EF"/>
<stop offset="0.9677" style="stop-color:#0CB0F2"/>
</linearGradient>
<path style="fill:url(#SVGID_4_);" d="M50.3,12.8c1.2-2.7,1.1-6-0.9-9c-1.1-1.8-2.9-3-4.9-3.5c-4.5-1.1-8.3,1-10.1,4.2L3.5,42
c0,0,0,0,0,0.1C-0.9,47.9-1.6,56.5,4,64c1.8,2.4,4.3,4.2,7.1,5c10.5,3.3,19.3-2.5,22.1-10.8L50.3,12.8z"/>
</g>
<g>
<rect x="13.4" y="13.4" style="fill:#000000;" width="43.2" height="43.2"/>
<rect x="17.5" y="48.5" style="fill:#FFFFFF;" width="16.2" height="2.7"/>
<polygon style="fill:#FFFFFF;" points="22.9,22.7 17.5,22.7 17.5,19.1 32.3,19.1 32.3,22.7 26.8,22.7 26.8,37 22.9,37 "/>
<path style="fill:#FFFFFF;" d="M32.5,28.1L32.5,28.1c0-5.1,3.8-9.3,9.3-9.3c3.4,0,5.4,1.1,7.1,2.8l-2.5,2.9c-1.4-1.3-2.8-2-4.6-2
c-3,0-5.2,2.5-5.2,5.6V28c0,3.1,2.1,5.6,5.2,5.6c2,0,3.3-0.8,4.7-2.1l2.5,2.5c-1.8,2-3.9,3.2-7.3,3.2
C36.4,37.3,32.5,33.2,32.5,28.1"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

+9 -240
View File
@@ -1,240 +1,9 @@
<?xml version="1.0" encoding="utf-8"?> <svg height="216.9" viewBox="0 0 216.7 216.9" width="216.7" xmlns="http://www.w3.org/2000/svg">
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <path clip-rule="evenodd" d="M216.7 108.45c0 29.833-10.533 55.4-31.6 76.7-.7.833-1.483 1.6-2.35 2.3-3.466 3.4-7.133 6.484-11 9.25-18.267 13.467-39.367 20.2-63.3 20.2-23.967 0-45.033-6.733-63.2-20.2-4.8-3.4-9.3-7.25-13.5-11.55-16.367-16.266-26.417-35.167-30.15-56.7-.733-4.2-1.217-8.467-1.45-12.8-.1-2.4-.15-4.8-.15-7.2 0-2.533.05-4.95.15-7.25 0-.233.066-.467.2-.7 1.567-26.6 12.033-49.583 31.4-68.95C53.05 10.517 78.617 0 108.45 0c29.933 0 55.484 10.517 76.65 31.55 21.067 21.433 31.6 47.067 31.6 76.9z" fill="#EEE" fill-rule="evenodd"/>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <path clip-rule="evenodd" d="M194.65 42.5l-22.4 22.4C159.152 77.998 158 89.4 158 109.5c0 17.934 2.852 34.352 16.2 47.7 9.746 9.746 19 18.95 19 18.95-2.5 3.067-5.2 6.067-8.1 9-.7.833-1.483 1.6-2.35 2.3-2.533 2.5-5.167 4.817-7.9 6.95l-17.55-17.55c-15.598-15.6-27.996-17.1-48.6-17.1-19.77 0-33.223 1.822-47.7 16.3-8.647 8.647-18.55 18.6-18.55 18.6-3.767-2.867-7.333-6.034-10.7-9.5-2.8-2.8-5.417-5.667-7.85-8.6 0 0 9.798-9.848 19.15-19.2 13.852-13.853 16.1-29.916 16.1-47.85 0-17.5-2.874-33.823-15.6-46.55-8.835-8.836-21.05-21-21.05-21 2.833-3.6 5.917-7.067 9.25-10.4 2.934-2.867 5.934-5.55 9-8.05L61.1 43.85C74.102 56.852 90.767 60.2 108.7 60.2c18.467 0 35.077-3.577 48.6-17.1 8.32-8.32 19.3-19.25 19.3-19.25 2.9 2.367 5.733 4.933 8.5 7.7 3.467 3.533 6.65 7.183 9.55 10.95z" fill="#3A3F51" fill-rule="evenodd"/>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="218px" <g clip-rule="evenodd">
height="218px" viewBox="0 0 218 218" enable-background="new 0 0 218 218" xml:space="preserve"> <path d="M78.7 114c-.2-1.167-.332-2.35-.4-3.55-.032-.667-.05-1.333-.05-2 0-.7.018-1.367.05-2 0-.067.018-.133.05-.2.435-7.367 3.334-13.733 8.7-19.1 5.9-5.833 12.984-8.75 21.25-8.75 8.3 0 15.384 2.917 21.25 8.75 5.834 5.934 8.75 13.033 8.75 21.3 0 8.267-2.916 15.35-8.75 21.25-.2.233-.416.45-.65.65-.966.933-1.982 1.783-3.05 2.55-5.065 3.733-10.916 5.6-17.55 5.6s-12.466-1.866-17.5-5.6c-1.332-.934-2.582-2-3.75-3.2-4.532-4.5-7.316-9.734-8.35-15.7z" fill="#0CF" fill-rule="evenodd"/>
<symbol id="hex_grid" viewBox="-114.25 -98.617 228.55 197.233"> <path d="M157.8 59.75l-15 14.65M30.785 32.526L71.65 73.25m84.6 84.25l27.808 28.78m1.855-153.894L157.8 59.75m-125.45 126l27.35-27.4" fill="none" stroke="#0CF" stroke-miterlimit="1" stroke-width="2"/>
<path d="M157.8 59.75l-16.95 17.2M58.97 60.604l17.2 17.15M59.623 158.43l16.75-17.4m61.928-1.396l18.028 17.945" fill="none" stroke="#0CF" stroke-miterlimit="1" stroke-width="7"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="none" stroke="#989898" stroke-width="0.5" stroke-linecap="square" stroke-miterlimit="1" d=" </g>
M72.15,90.3l4.7-2.7l4.65,2.7v5.4l-4.65,2.7l-4.7-2.7V90.3z M62.85,95.7l-4.65,2.7l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7V95.7l4.65,2.7 </svg>
l4.65-2.7 M62.85,90.3l4.65-2.7l4.65,2.7 M62.85,79.55v-5.4l4.65-2.7l4.65,2.7v5.4L67.5,82.2L62.85,79.55L58.2,82.2l-4.65-2.65
M72.15,74.15l4.7-2.7l4.65,2.7v5.4l-4.65,2.65l-4.7-2.65 M76.85,87.6v-5.4 M67.5,87.6v-5.4 M81.5,95.7l4.65,2.7l4.65-2.7l4.65,2.7
l4.65-2.7l4.65,2.7l4.65-2.7v-5.4l4.65-2.7v-5.4l-4.65-2.65v-5.4l4.65-2.7v-5.4l-4.65-2.7v-5.4l4.65-2.7v-5.4l-4.65-2.65v-5.4
l4.65-2.7v-5.4L109.4,31v-5.4l4.65-2.7v-5.4l-4.65-2.65v-5.4l4.65-2.7v-5.4l-4.65-2.7v-5.4l4.65-2.7v-5.4l-4.65-2.65v-5.4l4.65-2.7
V-31l-4.65-2.7v-5.4l4.65-2.7v-5.4l-4.65-2.65v-5.4l4.65-2.7v-5.4l-4.65-2.7v-5.4l4.65-2.7v-5.4l-4.65-2.65v-5.4l4.65-2.7v-5.4
l-4.65-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7l-4.7-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7
l-4.65-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7l-4.7-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7L7-98.4l-4.65,2.7l-4.65-2.7
l-4.65,2.7l-4.65-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7l-4.7-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7l-4.65-2.7
l-4.65,2.7l-4.65-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7l-4.7-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7v5.4l-4.65,2.7
v5.4l4.65,2.65v5.4l-4.65,2.7v5.4l4.65,2.7v5.4l-4.65,2.7v5.4l4.65,2.65v5.4l-4.65,2.7v5.4l4.65,2.7v5.4l-4.65,2.7v5.4l4.65,2.65
v5.4l-4.65,2.7v5.4l4.65,2.7v5.4l-4.65,2.7v5.4l4.65,2.65v5.4l-4.65,2.7V31l4.65,2.7v5.4l-4.65,2.7v5.4l4.65,2.65v5.4l-4.65,2.7
v5.4l4.65,2.7v5.4l-4.65,2.7v5.4l4.65,2.65v5.4l-4.65,2.7v5.4l4.65,2.7l4.65-2.7l4.65,2.7l4.65-2.7l4.65,2.7l4.65-2.7l4.7,2.7
l4.65-2.7l4.65,2.7l4.65-2.7l4.65,2.7l4.65-2.7l4.65,2.7l4.65-2.7l4.65,2.7l4.65-2.7l4.7,2.7l4.65-2.7l4.65,2.7l4.65-2.7l4.65,2.7
l4.65-2.7l4.65,2.7l4.65-2.7l4.65,2.7L7,95.7l4.65,2.7l4.65-2.7l4.65,2.7l4.65-2.7l4.7,2.7l4.65-2.7l4.65,2.7l4.65-2.7l4.65,2.7
l4.65-2.7 M44.25,95.7v-5.4l4.65-2.7l4.65,2.7 M44.25,79.55v-5.4l4.65-2.7l4.65,2.7v5.4L48.9,82.2L44.25,79.55L39.6,82.2
l-4.65-2.65 M58.2,87.6v-5.4 M48.9,87.6v-5.4 M53.55,63.35v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.7L53.55,63.35l-4.65,2.7l-4.65-2.7
v-5.4l4.65-2.7l4.65,2.7 M62.85,74.15l-4.65-2.7v-5.4 M53.55,74.15l4.65-2.7 M48.9,71.45v-5.4 M48.9,55.25v-5.4l4.65-2.65
l4.65,2.65v5.4 M67.5,71.45v-5.4l4.65-2.7l4.7,2.7v5.4 M67.5,66.05l-4.65-2.7 M58.2,49.85l4.65-2.65l4.65,2.65v5.4l-4.65,2.7
M72.15,63.35v-5.4l4.7-2.7l4.65,2.7v5.4l-4.65,2.7 M76.85,55.25v-5.4l4.65-2.65l4.65,2.65v5.4l-4.65,2.7 M67.5,55.25l4.65,2.7
M34.95,95.7v-5.4l4.65-2.7l4.65,2.7 M16.3,95.7v-5.4l4.65-2.7l4.65,2.7v5.4 M25.6,90.3l4.7-2.7l4.65,2.7 M25.6,79.55v-5.4l4.7-2.7
l4.65,2.7v5.4L30.3,82.2L25.6,79.55l-4.65,2.65l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7 M20.95,87.6v-5.4 M39.6,87.6v-5.4 M30.3,87.6
v-5.4 M7,95.7v-5.4l4.65-2.7l4.65,2.7 M-2.3,95.7v-5.4l4.65-2.7L7,90.3 M2.35,82.2l-4.65-2.65v-5.4l4.65-2.7L7,74.15v5.4L2.35,82.2
z M16.3,79.55l-4.65,2.65L7,79.55 M2.35,87.6v-5.4 M11.65,87.6v-5.4 M16.3,74.15l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4 M2.35,71.45
v-5.4L7,63.35l4.65,2.7 M2.35,49.85L7,47.2l4.65,2.65v5.4L7,57.95l-4.65-2.7V49.85L-2.3,47.2v-5.4l4.65-2.7L7,41.8v5.4
M11.65,55.25l4.65,2.7v5.4 M7,74.15l4.65-2.7 M7,57.95v5.4 M30.3,71.45v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.7 M16.3,57.95
l4.65-2.7l4.65,2.7v5.4l-4.65,2.7 M30.3,66.05l-4.7-2.7 M30.3,49.85l4.65-2.65l4.65,2.65v5.4l-4.65,2.7l-4.65-2.7V49.85l-4.7-2.65
v-5.4l-4.65-2.7v-5.4L25.6,31l4.7,2.7v5.4l-4.7,2.7 M11.65,49.85l4.65-2.65l4.65,2.65v5.4 M25.6,57.95l4.7-2.7 M34.95,57.95v5.4
M34.95,47.2v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.65 M25.6,31v-5.4l4.7-2.7l4.65,2.7V31l-4.65,2.7 M34.95,25.6l4.65-2.7l4.65,2.7
V31l-4.65,2.7L34.95,31 M30.3,39.1l4.65,2.7 M39.6,39.1v-5.4 M20.95,39.1l-4.65,2.7l-4.65-2.7v-5.4L16.3,31l4.65,2.7 M16.3,41.8
v5.4 M2.35,33.7L-2.3,31v-5.4l4.65-2.7L7,25.6V31L2.35,33.7z M7,25.6l4.65-2.7l4.65,2.7V31 M2.35,39.1v-5.4 M11.65,33.7L7,31
M7,41.8l4.65-2.7 M11.65,17.5L7,14.85v-5.4l4.65-2.7l4.65,2.7v5.4L11.65,17.5z M11.65,22.9v-5.4 M2.35,22.9v-5.4L7,14.85 M7,9.45
l-4.65-2.7v-5.4L7-1.35l4.65,2.7v5.4 M34.95,14.85v-5.4l4.65-2.7l4.65,2.7v5.4L39.6,17.5L34.95,14.85z M39.6,22.9v-5.4 M25.6,25.6
l-4.65-2.7v-5.4l4.65-2.65l4.7,2.65v5.4 M16.3,9.45l4.65-2.7l4.65,2.7v5.4 M34.95,9.45l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4
M11.65,1.35l4.65-2.7l4.65,2.7v5.4 M25.6,9.45l4.7-2.7 M30.3,17.5l4.65-2.65 M16.3,25.6l4.65-2.7 M20.95,17.5l-4.65-2.65
M76.85,49.85l-4.7-2.65v-5.4l4.7-2.7l4.65,2.7v5.4 M62.85,47.2v-5.4l4.65-2.7l4.65,2.7 M62.85,25.6l4.65-2.7l4.65,2.7V31
l-4.65,2.7L62.85,31V25.6l-4.65-2.7v-5.4 M72.15,25.6l4.7-2.7l4.65,2.7V31l-4.65,2.7l-4.7-2.7 M76.85,39.1v-5.4 M67.5,39.1v-5.4
M53.55,47.2v-5.4l4.65-2.7l4.65,2.7 M44.25,41.8l4.65-2.7l4.65,2.7 M44.25,25.6l4.65-2.7l4.65,2.7V31l-4.65,2.7L44.25,31
M62.85,31l-4.65,2.7L53.55,31 M58.2,39.1v-5.4 M48.9,39.1v-5.4 M53.55,14.85v-5.4l4.65-2.7l4.65,2.7v5.4L58.2,17.5L53.55,14.85
L48.9,17.5l-4.65-2.65 M48.9,22.9v-5.4 M53.55,9.45l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4 M44.25,9.45l4.65-2.7 M76.85,22.9v-5.4
l4.65-2.65l4.65,2.65v5.4l-4.65,2.7 M76.85,17.5l-4.7-2.65v-5.4l4.7-2.7l4.65,2.7v5.4 M67.5,22.9v-5.4l4.65-2.65 M67.5,17.5
l-4.65-2.65 M72.15,9.45l-4.65-2.7v-5.4l4.65-2.7l4.7,2.7v5.4 M62.85,9.45l4.65-2.7 M53.55,25.6l4.65-2.7 M44.25,63.35l-4.65,2.7
M39.6,55.25l4.65,2.7 M39.6,71.45l4.65,2.7 M67.5,49.85l4.65-2.65 M48.9,49.85l-4.65-2.65 M25.6,47.2l-4.65,2.65 M104.75,87.6
l-4.65,2.7l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65V87.6l4.65,2.7 M109.4,79.55l-4.65,2.65 M100.1,95.7v-5.4 M81.5,90.3l4.65-2.7
l4.65,2.7v5.4 M81.5,74.15l4.65-2.7l4.65,2.7v5.4l-4.65,2.65l-4.65-2.65 M90.8,79.55l4.65,2.65 M86.15,87.6v-5.4 M90.8,90.3
l4.65-2.7 M95.45,71.45v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.7L95.45,71.45l-4.65,2.7 M86.15,55.25l4.65,2.7v5.4l-4.65,2.7
l-4.65-2.7 M86.15,71.45v-5.4 M95.45,55.25v-5.4l4.65-2.65l4.65,2.65v5.4l-4.65,2.7L95.45,55.25l-4.65,2.7 M100.1,63.35v-5.4
M90.8,63.35l4.65,2.7 M109.4,63.35l-4.65,2.7 M104.75,71.45l4.65,2.7 M104.75,55.25l4.65,2.7 M100.1,79.55v-5.4 M100.1,47.2v-5.4
l4.65-2.7l4.65,2.7 M100.1,41.8l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4 M109.4,31l-4.65,2.7 M81.5,41.8l4.65-2.7l4.65,2.7v5.4
l-4.65,2.65 M86.15,22.9l4.65,2.7V31l-4.65,2.7L81.5,31 M100.1,31v-5.4l4.65-2.7l4.65,2.7 M90.8,31l4.65,2.7 M86.15,39.1v-5.4
M90.8,41.8l4.65-2.7 M86.15,17.5l4.65-2.65l4.65,2.65v5.4l-4.65,2.7 M90.8,14.85v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.65
M81.5,9.45l4.65-2.7l4.65,2.7 M86.15,6.75v-5.4l4.65-2.7l4.65,2.7v5.4 M100.1,14.85l4.65,2.65v5.4 M109.4,14.85l-4.65,2.65
M100.1,9.45l4.65-2.7l4.65,2.7 M95.45,1.35l4.65-2.7l4.65,2.7v5.4 M95.45,22.9l4.65,2.7 M109.4,47.2l-4.65,2.65 M90.8,47.2
l4.65,2.65 M104.75-9.45l-4.65,2.7l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65V-9.45l4.65,2.7 M109.4-17.5l-4.65,2.65 M100.1-1.35v-5.4
M90.8-1.35v-5.4l4.65-2.7 M81.5-6.75l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65v5.4L81.5-6.75v5.4l-4.65,2.7 M90.8-6.75l-4.65-2.7
M95.45-14.85L90.8-17.5v-5.4l4.65-2.7l4.65,2.7v5.4 M76.85-14.85l-4.7-2.65v-5.4l4.7-2.7l4.65,2.7v5.4 M86.15-14.85l4.65-2.65
M95.45-31l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4L95.45-31z M95.45-25.6V-31 M90.8-22.9l-4.65-2.7V-31l4.65-2.7 M86.15-31
l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7 M86.15-41.8v-5.4l4.65-2.65l4.65,2.65v5.4 M100.1-33.7l4.65,2.7v5.4l-4.65,2.7 M109.4-33.7
l-4.65,2.7 M95.45-47.2l4.65-2.65l4.65,2.65v5.4l-4.65,2.7 M104.75-41.8l4.65,2.7 M81.5-22.9l4.65-2.7 M104.75-25.6l4.65,2.7
M100.1-49.85v-5.4l4.65-2.7l4.65,2.7 M109.4-66.05l-4.65,2.7l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7 M104.75-63.35v5.4 M100.1-55.25
l-4.65-2.7v-5.4l4.65-2.7 M86.15-47.2l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7v5.4 M86.15-74.15l4.65,2.7v5.4l-4.65,2.7l-4.65-2.7v-5.4
L86.15-74.15v-5.4l4.65-2.65l4.65,2.65 M90.8-71.45l4.65-2.7l4.65,2.7 M95.45-63.35l-4.65-2.7 M90.8-55.25l4.65-2.7 M86.15-57.95
v-5.4 M95.45-74.15v-5.4l4.65-2.65l4.65,2.65v5.4 M81.5-71.45l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65 M81.5-82.2v-5.4l4.65-2.7
l4.65,2.7v5.4 M86.15-90.3v-5.4 M104.75-95.7v5.4l-4.65,2.7l-4.65-2.7v-5.4 M100.1-82.2v-5.4 M95.45-90.3l-4.65,2.7 M109.4-82.2
l-4.65,2.65 M104.75-90.3l4.65,2.7 M109.4-49.85l-4.65,2.65 M72.15-1.35v-5.4l4.7-2.7 M67.5,1.35l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7
M72.15-17.5l-4.65,2.65l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7 M67.5-14.85v5.4 M53.55-1.35v-5.4l4.65-2.7l4.65,2.7 M48.9,1.35
l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7 M44.25-22.9l4.65-2.7l4.65,2.7v5.4l-4.65,2.65l-4.65-2.65V-22.9l-4.65-2.7V-31 M53.55-17.5
l4.65,2.65v5.4 M48.9-9.45v-5.4 M53.55-33.7v-5.4l4.65-2.7l4.65,2.7v5.4L58.2-31L53.55-33.7z M62.85-22.9l-4.65-2.7V-31 M48.9-25.6
V-31l4.65-2.7 M48.9-31l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7 M48.9-41.8v-5.4l4.65-2.65l4.65,2.65v5.4 M76.85-25.6V-31l4.65-2.7
M76.85-31l-4.7-2.7v-5.4l4.7-2.7l4.65,2.7 M62.85-33.7L67.5-31v5.4 M72.15-39.1l-4.65-2.7v-5.4l4.65-2.65l4.7,2.65v5.4
M62.85-39.1l4.65-2.7 M72.15-33.7L67.5-31 M53.55-22.9l4.65-2.7 M58.2-14.85l4.65-2.65 M30.3,1.35l-4.7-2.7v-5.4l4.7-2.7l4.65,2.7
v5.4 M30.3-9.45v-5.4l4.65-2.65l4.65,2.65v5.4l-4.65,2.7 M16.3-1.35v-5.4l4.65-2.7l4.65,2.7 M30.3-14.85l-4.7-2.65v-5.4l4.7-2.7
l4.65,2.7v5.4 M25.6-17.5l-4.65,2.65L16.3-17.5v-5.4l4.65-2.7l4.65,2.7 M20.95-14.85v5.4 M16.3-6.75l-4.65-2.7v-5.4l4.65-2.65
M2.35,1.35l-4.65-2.7v-5.4l4.65-2.7L7-6.75v5.4 M7-17.5l-4.65,2.65L-2.3-17.5v-5.4l4.65-2.7L7-22.9V-17.5l4.65,2.65 M11.65-9.45
L7-6.75 M2.35-9.45v-5.4 M11.65-31L7-33.7v-5.4l4.65-2.7l4.65,2.7v5.4L11.65-31z M16.3-22.9l-4.65-2.7V-31 M2.35-25.6V-31L7-33.7
M7-39.1l-4.65-2.7v-5.4L7-49.85l4.65,2.65v5.4 M44.25-33.7L39.6-31l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7 M20.95-25.6V-31l4.65-2.7
l4.7,2.7v5.4 M20.95-47.2l4.65-2.65l4.7,2.65v5.4l-4.7,2.7l-4.65-2.7V-47.2l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7 M30.3-47.2
l4.65-2.65l4.65,2.65v5.4 M30.3-41.8l4.65,2.7 M25.6-33.7v-5.4 M34.95-33.7L30.3-31 M34.95-22.9l4.65-2.7 M20.95-31l-4.65-2.7
M16.3-39.1l4.65-2.7 M7-22.9l4.65-2.7 M34.95-55.25l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4L34.95-55.25v5.4 M25.6-49.85v-5.4
l4.7-2.7 M30.3-63.35l-4.7-2.7v-5.4l4.7-2.7l4.65,2.7v5.4 M25.6-66.05l-4.65,2.7l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7 M30.3-74.15
v-5.4l4.65-2.65l4.65,2.65v5.4l-4.65,2.7 M20.95-63.35v5.4 M7-49.85v-5.4l4.65-2.7l4.65,2.7 M2.35-47.2l-4.65-2.65v-5.4l4.65-2.7
L7-55.25 M2.35-63.35l-4.65-2.7v-5.4l4.65-2.7L7-71.45v5.4L2.35-63.35z M16.3-71.45l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65v5.4
M11.65-57.95v-5.4l4.65-2.7 M2.35-57.95v-5.4 M7-66.05l4.65,2.7 M11.65-74.15L7-71.45 M2.35-74.15v-5.4L7-82.2l4.65,2.65
M11.65-95.7v5.4L7-87.6l-4.65-2.7v-5.4 M20.95-95.7v5.4l-4.65,2.7l-4.65-2.7 M7-87.6v5.4 M16.3-87.6v5.4 M20.95-90.3l4.65,2.7v5.4
l-4.65,2.65 M30.3-79.55l-4.7-2.65 M30.3-95.7v5.4l-4.7,2.7 M48.9-95.7v5.4l-4.65,2.7l-4.65-2.7v-5.4 M34.95-82.2v-5.4l4.65-2.7
M30.3-90.3l4.65,2.7 M72.15-49.85v-5.4l4.7-2.7l4.65,2.7 M67.5-47.2l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7 M67.5-74.15l4.65,2.7v5.4
l-4.65,2.7l-4.65-2.7v-5.4L67.5-74.15v-5.4l4.65-2.65l4.7,2.65 M81.5-66.05l-4.65,2.7l-4.7-2.7 M72.15-71.45l4.7-2.7 M76.85-63.35
v5.4 M67.5-57.95v-5.4 M53.55-49.85v-5.4l4.65-2.7l4.65,2.7 M48.9-47.2l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7 M44.25-66.05v-5.4
l4.65-2.7l4.65,2.7v5.4l-4.65,2.7L44.25-66.05l-4.65,2.7 M62.85-66.05l-4.65,2.7l-4.65-2.7 M53.55-71.45l4.65-2.7l4.65,2.7
M58.2-57.95v-5.4 M48.9-57.95v-5.4 M48.9-74.15v-5.4l4.65-2.65l4.65,2.65v5.4 M48.9-79.55l-4.65-2.65v-5.4 M58.2-95.7v5.4
l-4.65,2.7l-4.65-2.7 M53.55-87.6v5.4 M58.2-79.55l4.65-2.65l4.65,2.65 M62.85-82.2v-5.4l4.65-2.7l4.65,2.7v5.4 M67.5-90.3v-5.4
M76.85-95.7v5.4l-4.7,2.7 M58.2-90.3l4.65,2.7 M44.25-17.5l-4.65,2.65 M39.6-9.45l4.65,2.7 M39.6-74.15l4.65,2.7 M39.6-57.95
l4.65,2.7 M44.25-49.85L39.6-47.2 M62.85-49.85L58.2-47.2 M16.3-49.85l-4.65,2.65 M44.25-82.2l-4.65,2.65 M76.85-90.3l4.65,2.7
M81.5-49.85l-4.65,2.65 M86.15,1.35l-4.65-2.7 M44.25-1.35l-4.65,2.7 M62.85-1.35l-4.65,2.7 M109.4-1.35l-4.65,2.7 M25.6-1.35
l-4.65,2.7 M-95.4,95.7v-5.4l4.65-2.7l4.65,2.7v5.4 M-86.1,90.3l4.7-2.7l4.65,2.7v5.4 M-104.7,95.7v-5.4l4.65-2.7l4.65,2.7
M-100.05,82.2l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7v5.4L-100.05,82.2z M-95.4,74.15l4.65-2.7l4.65,2.7v5.4l-4.65,2.65l-4.65-2.65
M-86.1,74.15l4.7-2.7l4.65,2.7v5.4l-4.65,2.65l-4.7-2.65 M-100.05,87.6v-5.4 M-90.75,87.6v-5.4 M-81.4,87.6v-5.4 M-109.35,87.6
l4.65,2.7 M-104.7,79.55l-4.65,2.65 M-109.35,55.25l4.65,2.7v5.4l-4.65,2.7 M-109.35,71.45l4.65,2.7 M-90.75,66.05l-4.65-2.7v-5.4
l4.65-2.7l4.65,2.7v5.4L-90.75,66.05v5.4 M-86.1,57.95l4.7-2.7l4.65,2.7v5.4l-4.65,2.7l-4.7-2.7 M-81.4,71.45v-5.4 M-100.05,71.45
v-5.4l4.65-2.7 M-95.4,57.95l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65v5.4 M-81.4,55.25v-5.4l4.65-2.65l4.65,2.65v5.4l-4.65,2.7
M-100.05,66.05l-4.65-2.7 M-104.7,57.95l4.65-2.7 M-86.1,41.8l-4.65-2.7v-5.4l4.65-2.7l4.7,2.7v5.4L-86.1,41.8z M-81.4,49.85
l-4.7-2.65v-5.4 M-100.05,49.85l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7v5.4 M-95.4,31l-4.65,2.7l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7V31
l4.65,2.7 M-86.1,31v-5.4l4.7-2.7l4.65,2.7V31l-4.65,2.7 M-100.05,39.1v-5.4 M-90.75,39.1l-4.65,2.7 M-109.35,39.1l4.65,2.7
M-104.7,31l-4.65,2.7 M-109.35,6.75l4.65,2.7v5.4l-4.65,2.65 M-86.1,14.85v-5.4l4.7-2.7l4.65,2.7v5.4l-4.65,2.65L-86.1,14.85z
M-81.4,22.9v-5.4 M-86.1,25.6l-4.65-2.7v-5.4l4.65-2.65 M-100.05,22.9v-5.4l4.65-2.65l4.65,2.65 M-100.05,6.75v-5.4l4.65-2.7
l4.65,2.7v5.4l-4.65,2.7L-100.05,6.75z M-81.4,6.75v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.7 M-90.75,6.75l4.65,2.7 M-95.4,14.85v-5.4
M-95.4,25.6l4.65-2.7 M-100.05,17.5l-4.65-2.65 M-104.7,9.45l4.65-2.7 M-109.35,22.9l4.65,2.7 M-86.1,47.2l-4.65,2.65
M-104.7,47.2l-4.65,2.65 M-11.6,95.7v-5.4l4.65-2.7l4.65,2.7 M-20.9,95.7v-5.4l4.65-2.7l4.65,2.7 M-16.25,82.2l-4.65-2.65v-5.4
l4.65-2.7l4.65,2.7v5.4L-16.25,82.2v5.4 M-2.3,79.55l-4.65,2.65l-4.65-2.65 M-6.95,82.2v5.4 M-30.2,95.7v-5.4l4.65-2.7l4.65,2.7
M-39.55,95.7v-5.4l4.7-2.7l4.65,2.7 M-39.55,79.55v-5.4l4.7-2.7l4.65,2.7v5.4l-4.65,2.65L-39.55,79.55l-4.65,2.65l-4.65-2.65
M-20.9,79.55l-4.65,2.65l-4.65-2.65 M-34.85,87.6v-5.4 M-25.55,87.6v-5.4 M-20.9,74.15l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4
M-30.2,74.15l4.65-2.7 M-25.55,66.05l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4 M-39.55,74.15l-4.65-2.7v-5.4l4.65-2.7l4.7,2.7v5.4
M-30.2,57.95l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65v5.4 M-39.55,63.35v-5.4l4.7-2.7 M-30.2,63.35l-4.65,2.7 M-11.6,74.15l4.65-2.7
l4.65,2.7 M-6.95,66.05l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4L-6.95,66.05v5.4 M-16.25,66.05l4.65-2.7 M-11.6,57.95l-4.65-2.7v-5.4
l4.65-2.65l4.65,2.65v5.4 M-16.25,55.25l-4.65,2.7 M-48.85,95.7v-5.4l4.65-2.7l4.65,2.7 M-58.15,95.7v-5.4l4.65-2.7l4.65,2.7
M-58.15,79.55v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.65L-58.15,79.55l-4.65,2.65l-4.65-2.65 M-44.2,87.6v-5.4 M-53.5,87.6v-5.4
M-67.45,95.7v-5.4l4.65-2.7l4.65,2.7 M-76.75,90.3l4.65-2.7l4.65,2.7 M-76.75,74.15l4.65-2.7l4.65,2.7v5.4l-4.65,2.65l-4.65-2.65
M-62.8,87.6v-5.4 M-72.1,87.6v-5.4 M-67.45,74.15l4.65-2.7l4.65,2.7 M-62.8,71.45v-5.4l4.65-2.7l4.65,2.7v5.4 M-62.8,66.05
l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4 M-76.75,63.35l4.65,2.7v5.4 M-62.8,55.25v-5.4l4.65-2.65l4.65,2.65v5.4l-4.65,2.7
M-67.45,63.35l-4.65,2.7 M-72.1,55.25l4.65,2.7 M-48.85,74.15l4.65-2.7 M-44.2,66.05l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7
M-53.5,49.85l4.65-2.65l4.65,2.65v5.4 M-53.5,66.05l4.65-2.7 M-53.5,55.25l4.65,2.7 M-48.85,47.2v-5.4l4.65-2.7l4.65,2.7v5.4
l-4.65,2.65 M-58.15,47.2v-5.4l4.65-2.7l4.65,2.7 M-58.15,25.6l4.65-2.7l4.65,2.7V31l-4.65,2.7l-4.65-2.7V25.6l-4.65-2.7v-5.4
M-48.85,25.6l4.65-2.7l4.65,2.7V31l-4.65,2.7l-4.65-2.7 M-44.2,39.1v-5.4 M-53.5,39.1v-5.4 M-62.8,49.85l-4.65-2.65v-5.4l4.65-2.7
l4.65,2.7 M-76.75,47.2v-5.4l4.65-2.7l4.65,2.7 M-76.75,25.6l4.65-2.7l4.65,2.7V31l-4.65,2.7l-4.65-2.7 M-58.15,31l-4.65,2.7
l-4.65-2.7 M-72.1,39.1v-5.4 M-62.8,39.1v-5.4 M-67.45,14.85v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.65L-67.45,14.85l-4.65,2.65
l-4.65-2.65 M-72.1,22.9v-5.4 M-62.8,6.75v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.7 M-72.1,6.75l4.65,2.7 M-44.2,22.9v-5.4l4.65-2.65
l4.7,2.65v5.4l-4.7,2.7 M-44.2,17.5l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7v5.4 M-48.85,14.85l-4.65,2.65l-4.65-2.65 M-53.5,22.9v-5.4
M-44.2,6.75v-5.4l4.65-2.7l4.7,2.7v5.4l-4.7,2.7 M-53.5,6.75l4.65,2.7 M-67.45,25.6l4.65-2.7 M-11.6,47.2v-5.4l4.65-2.7l4.65,2.7
M-11.6,41.8l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4 M-16.25,33.7L-20.9,31v-5.4l4.65-2.7l4.65,2.7V31 M-2.3,31l-4.65,2.7
M-30.2,47.2v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.65 M-39.55,41.8l4.7-2.7l4.65,2.7 M-34.85,22.9l4.65,2.7V31l-4.65,2.7l-4.7-2.7
M-20.9,31l-4.65,2.7L-30.2,31 M-34.85,39.1v-5.4 M-25.55,39.1v-5.4 M-20.9,25.6l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65v5.4
M-25.55,17.5l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7v5.4 M-25.55,6.75v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.7 M-30.2,14.85l-4.65,2.65
M-34.85,6.75l4.65,2.7 M-6.95,17.5l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7v5.4L-6.95,17.5v5.4l-4.65,2.7 M-11.6,14.85l-4.65,2.65
M-16.25,6.75l4.65,2.7 M-16.25,1.35l4.65-2.7l4.65,2.7v5.4 M-6.95,22.9l4.65,2.7 M-30.2,25.6l4.65-2.7 M-16.25,39.1l-4.65,2.7
M-67.45,47.2l-4.65,2.65 M-2.3,47.2l-4.65,2.65 M-34.85,49.85l-4.7-2.65 M-16.25,49.85l-4.65-2.65 M-81.4,39.1l4.65,2.7
M-11.6-1.35v-5.4l4.65-2.7l4.65,2.7 M-11.6-6.75l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65v5.4 M-16.25-14.85l-4.65-2.65v-5.4l4.65-2.7
l4.65,2.7v5.4 M-2.3-17.5l-4.65,2.65 M-20.9-1.35v-5.4l4.65-2.7 M-20.9-6.75l-4.65-2.7v-5.4l4.65-2.65 M-25.55-9.45l-4.65,2.7
l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65 M-30.2-6.75v5.4l-4.65,2.7 M-39.55-1.35v-5.4l4.7-2.7 M-34.85-14.85l-4.7-2.65v-5.4l4.7-2.7
l4.65,2.7v5.4 M-30.2-33.7v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.7L-30.2-33.7l-4.65,2.7l-4.7-2.7v-5.4l4.7-2.7l4.65,2.7 M-20.9-22.9
l-4.65-2.7V-31 M-34.85-25.6V-31 M-39.55-39.1l-4.65-2.7v-5.4l4.65-2.65l4.7,2.65v5.4 M-25.55-41.8v-5.4l4.65-2.65l4.65,2.65v5.4
l-4.65,2.7 M-6.95-31l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4L-6.95-31v5.4l-4.65,2.7 M-16.25-25.6V-31l4.65-2.7 M-16.25-41.8
l4.65,2.7 M-16.25-47.2l4.65-2.65l4.65,2.65v5.4 M-30.2-22.9l4.65-2.7 M-16.25-31l-4.65-2.7 M-6.95-25.6l4.65,2.7 M-44.2,1.35
l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7 M-58.15-1.35v-5.4l4.65-2.7l4.65,2.7 M-58.15-6.75l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65v5.4
M-62.8-14.85l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7v5.4 M-39.55-17.5l-4.65,2.65l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7 M-44.2-9.45v-5.4
M-53.5-14.85l4.65-2.65 M-62.8,1.35l-4.65-2.7v-5.4l4.65-2.7 M-76.75-6.75l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65v5.4L-76.75-6.75
v5.4 M-76.75-17.5v-5.4l4.65-2.7l4.65,2.7 M-67.45-17.5l-4.65,2.65 M-72.1-9.45l4.65,2.7 M-67.45-33.7v-5.4l4.65-2.7l4.65,2.7v5.4
L-62.8-31L-67.45-33.7z M-62.8-25.6V-31 M-72.1-25.6V-31l4.65-2.7 M-72.1-31l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7 M-76.75-39.1
l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65v5.4 M-62.8-41.8v-5.4l4.65-2.65l4.65,2.65v5.4l-4.65,2.7 M-44.2-25.6V-31l4.65-2.7 M-44.2-31
l-4.65-2.7v-5.4l4.65-2.7 M-48.85-33.7L-53.5-31l-4.65-2.7 M-48.85-22.9l-4.65-2.7V-31 M-53.5-41.8l4.65,2.7 M-58.15-22.9l4.65-2.7
M-58.15-49.85v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.65 M-48.85-55.25l4.65-2.7l4.65,2.7v5.4 M-58.15-71.45l4.65-2.7l4.65,2.7v5.4
l-4.65,2.7l-4.65-2.7V-71.45z M-48.85-71.45l4.65-2.7l4.65,2.7v5.4l-4.65,2.7l-4.65-2.7 M-44.2-57.95v-5.4 M-53.5-57.95v-5.4
M-76.75-49.85v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.65 M-67.45-55.25l4.65-2.7l4.65,2.7 M-76.75-55.25l-4.65-2.7v-5.4l4.65-2.7
l4.65,2.7v5.4 M-81.4-63.35l-4.7-2.7v-5.4l4.7-2.7l4.65,2.7v5.4 M-81.4-74.15v-5.4l4.65-2.65l4.65,2.65v5.4l-4.65,2.7
M-58.15-66.05l-4.65,2.7l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7 M-62.8-57.95v-5.4 M-72.1-74.15l4.65,2.7 M-67.45-66.05l-4.65,2.7
M-67.45-82.2v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.65L-67.45-82.2l-4.65,2.65 M-76.75-82.2v-5.4l4.65-2.7l4.65,2.7 M-72.1-90.3
v-5.4 M-62.8-90.3v-5.4 M-53.5-74.15v-5.4l4.65-2.65l4.65,2.65v5.4 M-58.15-82.2l4.65,2.65 M-58.15-87.6l4.65-2.7l4.65,2.7v5.4
M-53.5-90.3v-5.4 M-44.2-95.7v5.4l-4.65,2.7 M-62.8-74.15v-5.4 M-11.6-49.85v-5.4l4.65-2.7l4.65,2.7 M-20.9-49.85v-5.4l4.65-2.7
l4.65,2.7 M-16.25-63.35l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4L-16.25-63.35v5.4 M-2.3-66.05l-4.65,2.7l-4.65-2.7 M-11.6-71.45
l4.65-2.7l4.65,2.7 M-6.95-63.35v5.4 M-25.55-47.2l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7 M-39.55-55.25l4.7-2.7l4.65,2.7
M-39.55-71.45l4.7-2.7l4.65,2.7v5.4l-4.65,2.7l-4.7-2.7 M-20.9-71.45l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65v5.4 M-20.9-66.05
l-4.65,2.7l-4.65-2.7 M-25.55-74.15l-4.65,2.7 M-34.85-63.35v5.4 M-25.55-57.95v-5.4 M-34.85-74.15v-5.4l4.65-2.65l4.65,2.65
M-44.2-79.55l4.65-2.65l4.7,2.65 M-39.55-82.2v-5.4l4.7-2.7l4.65,2.7v5.4 M-34.85-90.3v-5.4 M-16.25-95.7v5.4l-4.65,2.7l-4.65-2.7
v-5.4 M-25.55-90.3l-4.65,2.7 M-20.9-82.2v-5.4 M-6.95-79.55l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7v5.4L-6.95-79.55v5.4 M-16.25-79.55
l4.65-2.65 M-11.6-87.6l-4.65-2.7 M-6.95-95.7v5.4 M-44.2-90.3l4.65,2.7 M-62.8-47.2l-4.65-2.65 M-44.2-47.2l-4.65-2.65
M-30.2-49.85l-4.65,2.65 M-2.3-49.85l-4.65,2.65 M-95.4-1.35v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.7 M-86.1-6.75l4.7-2.7
M-100.05,1.35l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7 M-95.4-17.5l-4.65,2.65l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7V-17.5z M-95.4-22.9
l4.65-2.7l4.65,2.7v5.4l-4.65,2.65l-4.65-2.65 M-81.4-14.85l-4.7-2.65 M-100.05-9.45v-5.4 M-90.75-14.85v5.4 M-109.35-9.45
l4.65,2.7 M-104.7-17.5l-4.65,2.65 M-109.35-41.8l4.65,2.7v5.4l-4.65,2.7 M-90.75-25.6V-31l4.65-2.7l4.7,2.7v5.4l-4.7,2.7
M-100.05-25.6V-31l4.65-2.7l4.65,2.7 M-100.05-47.2l4.65-2.65l4.65,2.65v5.4l-4.65,2.7l-4.65-2.7V-47.2l-4.65-2.65 M-90.75-41.8
l4.65,2.7v5.4 M-86.1-39.1l4.7-2.7 M-95.4-33.7v-5.4 M-109.35-25.6l4.65,2.7 M-100.05-31l-4.65-2.7 M-104.7-39.1l4.65-2.7
M-95.4-49.85v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.65 M-86.1-55.25l4.7-2.7 M-95.4-55.25l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4
M-100.05-63.35l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4 M-95.4-71.45l4.65-2.7l4.65,2.7 M-86.1-66.05l-4.65,2.7 M-109.35-57.95
l4.65,2.7v5.4l-4.65,2.65 M-109.35-74.15l4.65,2.7 M-104.7-66.05l-4.65,2.7 M-109.35-90.3l4.65,2.7v5.4l-4.65,2.65 M-81.4-79.55
l-4.7-2.65v-5.4l4.7-2.7l4.65,2.7 M-86.1-82.2l-4.65,2.65l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7 M-100.05-74.15v-5.4l4.65-2.65
M-95.4-87.6l-4.65-2.7v-5.4 M-81.4-95.7v5.4 M-90.75-95.7v5.4 M-90.75-79.55v5.4 M-104.7-55.25l4.65-2.7 M-100.05-79.55
l-4.65-2.65 M-104.7-87.6l4.65-2.7 M-81.4-47.2l-4.7-2.65 M-76.75-33.7L-81.4-31 M-81.4-25.6l4.65,2.7 M-67.45-1.35l-4.65,2.7
M-104.7-1.35l-4.65,2.7 M-81.4,1.35l-4.7-2.7 M-25.55,1.35l-4.65-2.7 M-53.5,1.35l4.65-2.7 M-2.3-1.35l-4.65,2.7 M-2.3,57.95
l4.65-2.7 M2.35,66.05l-4.65-2.7 M-2.3-39.1l4.65-2.7 M2.35-31l-4.65-2.7 M2.35-79.55L-2.3-82.2 M-2.3-87.6l4.65-2.7 M-2.3,9.45
l4.65-2.7 M2.35,17.5l-4.65-2.65"/>
</symbol>
<g id="Layer_1">
</g>
<g id="Layer_6">
<path fill-rule="evenodd" clip-rule="evenodd" fill="#EFEEEE" d="M217.5,108.95c0,29.833-10.533,55.399-31.6,76.7
c-0.7,0.833-1.484,1.6-2.351,2.3c-3.466,3.399-7.134,6.483-11,9.25c-18.267,13.467-39.366,20.2-63.3,20.2
c-23.967,0-45.033-6.733-63.2-20.2c-4.8-3.4-9.3-7.25-13.5-11.55c-16.367-16.267-26.417-35.167-30.15-56.7
c-0.733-4.2-1.217-8.467-1.45-12.8c-0.1-2.4-0.15-4.801-0.15-7.2c0-2.534,0.05-4.95,0.15-7.25c0-0.233,0.066-0.467,0.2-0.7
c1.567-26.6,12.033-49.583,31.4-68.95C53.85,11.017,79.417,0.5,109.25,0.5c29.934,0,55.483,10.517,76.65,31.55
C206.967,53.483,217.5,79.117,217.5,108.95z"/>
</g>
<g id="Layer_5">
<path fill-rule="evenodd" clip-rule="evenodd" fill="#010101" d="M195.45,43l-22.4,22.4c-8.833,13-13.25,27.867-13.25,44.6
c0,17.934,5.067,33.833,15.2,47.7l19,18.95c-2.5,3.066-5.2,6.066-8.1,9c-0.7,0.833-1.484,1.6-2.351,2.3
c-2.533,2.5-5.167,4.816-7.899,6.95L158.1,177.35c-13.934-10.733-30.133-16.1-48.6-16.1c-17.933,0-33.833,5.1-47.7,15.3
L43.25,195.15c-3.767-2.867-7.333-6.034-10.7-9.5c-2.8-2.801-5.417-5.667-7.85-8.601l19.15-19.2
c10.066-13.966,15.1-29.916,15.1-47.85c0-17.5-4.867-33.017-14.6-46.55l-21.05-21c2.833-3.6,5.917-7.067,9.25-10.4
c2.934-2.867,5.934-5.55,9-8.05L61.9,44.35C75.7,54.583,91.567,59.7,109.5,59.7c18.467,0,34.666-5.367,48.6-16.1L177.4,24.35
c2.899,2.367,5.732,4.933,8.5,7.7C189.367,35.583,192.55,39.233,195.45,43z"/>
</g>
<g id="Layer_4">
<defs>
<path id="SVGID_1_" d="M159.8,110c0-16.733,4.417-31.6,13.25-44.6l22.4-22.4c-2.9-3.767-6.083-7.417-9.55-10.95
c-2.768-2.767-5.601-5.333-8.5-7.7L158.1,43.6c-13.934,10.733-30.133,16.1-48.6,16.1c-17.933,0-33.8-5.117-47.6-15.35L41.55,24
c-3.066,2.5-6.066,5.183-9,8.05c-3.333,3.333-6.417,6.8-9.25,10.4l21.05,21c9.733,13.533,14.6,29.05,14.6,46.55
c0,17.934-5.034,33.884-15.1,47.85l-19.15,19.2c2.433,2.934,5.05,5.8,7.85,8.601c3.367,3.466,6.934,6.633,10.7,9.5L61.8,176.55
c13.867-10.2,29.767-15.3,47.7-15.3c18.467,0,34.666,5.366,48.6,16.1L175.65,194.9c2.732-2.134,5.366-4.45,7.899-6.95
c0.866-0.7,1.65-1.467,2.351-2.3c2.899-2.934,5.6-5.934,8.1-9l-19-18.95C164.867,143.833,159.8,127.934,159.8,110z"/>
</defs>
<clipPath id="SVGID_2_">
<use xlink:href="#SVGID_1_" overflow="visible"/>
</clipPath>
<g clip-path="url(#SVGID_2_)">
<use xlink:href="#hex_grid" width="228.55" height="197.233" x="-114.25" y="-98.617" transform="matrix(1.1415 0 0 -1.1415 105.5 107.75)" overflow="visible"/>
</g>
</g>
<g id="Layer_2">
<g>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#35C6F4" d="M79.1,110.95c-0.033-0.667-0.05-1.333-0.05-2
c0-0.7,0.017-1.366,0.05-2c0-0.067,0.017-0.134,0.05-0.2c0.434-7.367,3.333-13.733,8.7-19.1c5.9-5.833,12.983-8.75,21.25-8.75
c8.301,0,15.384,2.917,21.25,8.75c5.834,5.934,8.75,13.033,8.75,21.3c0,8.267-2.916,15.35-8.75,21.25
c-0.199,0.233-0.416,0.45-0.649,0.649c-0.967,0.934-1.983,1.784-3.05,2.551c-5.066,3.733-10.917,5.6-17.551,5.6
c-6.633,0-12.466-1.866-17.5-5.6c-1.333-0.934-2.583-2-3.75-3.2c-4.533-4.5-7.317-9.733-8.35-15.7
C79.3,113.334,79.167,112.15,79.1,110.95z M126.1,127.25l3.601,3.6L126.1,127.25z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="none" stroke="#35C6F4" stroke-width="2" stroke-miterlimit="1" d="
M158.6,60.25l-15,14.65 M31.7,33.1l40.75,40.65 M126.1,127.25l3.601,3.6 M157.05,158l27.65,28.6 M153.05,153.95l-10.75-11.2
M186.6,33l-28,27.25 M33.15,186.25l27.35-27.4"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="none" stroke="#35C6F4" stroke-width="7" stroke-miterlimit="1" d="
M158.6,60.25l-16.949,17.2 M59.4,61.35L76.6,78.5 M60.5,158.85l16.75-17.399 M153.05,153.95l4,4.05 M139.45,140.4l13.6,13.55"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

+9
View File
@@ -0,0 +1,9 @@
<svg height="216.9" viewBox="0 0 216.7 216.9" width="216.7" xmlns="http://www.w3.org/2000/svg">
<path clip-rule="evenodd" d="M216.7 108.45c0 29.833-10.533 55.4-31.6 76.7-.7.833-1.483 1.6-2.35 2.3-3.466 3.4-7.133 6.484-11 9.25-18.267 13.467-39.367 20.2-63.3 20.2-23.967 0-45.033-6.733-63.2-20.2-4.8-3.4-9.3-7.25-13.5-11.55-16.367-16.266-26.417-35.167-30.15-56.7-.733-4.2-1.217-8.467-1.45-12.8-.1-2.4-.15-4.8-.15-7.2 0-2.533.05-4.95.15-7.25 0-.233.066-.467.2-.7 1.567-26.6 12.033-49.583 31.4-68.95C53.05 10.517 78.617 0 108.45 0c29.933 0 55.484 10.517 76.65 31.55 21.067 21.433 31.6 47.067 31.6 76.9z" fill="#EEE" fill-rule="evenodd"/>
<path clip-rule="evenodd" d="M194.65 42.5l-22.4 22.4C159.152 77.998 158 89.4 158 109.5c0 17.934 2.852 34.352 16.2 47.7 9.746 9.746 19 18.95 19 18.95-2.5 3.067-5.2 6.067-8.1 9-.7.833-1.483 1.6-2.35 2.3-2.533 2.5-5.167 4.817-7.9 6.95l-17.55-17.55c-15.598-15.6-27.996-17.1-48.6-17.1-19.77 0-33.223 1.822-47.7 16.3-8.647 8.647-18.55 18.6-18.55 18.6-3.767-2.867-7.333-6.034-10.7-9.5-2.8-2.8-5.417-5.667-7.85-8.6 0 0 9.798-9.848 19.15-19.2 13.852-13.853 16.1-29.916 16.1-47.85 0-17.5-2.874-33.823-15.6-46.55-8.835-8.836-21.05-21-21.05-21 2.833-3.6 5.917-7.067 9.25-10.4 2.934-2.867 5.934-5.55 9-8.05L61.1 43.85C74.102 56.852 90.767 60.2 108.7 60.2c18.467 0 35.077-3.577 48.6-17.1 8.32-8.32 19.3-19.25 19.3-19.25 2.9 2.367 5.733 4.933 8.5 7.7 3.467 3.533 6.65 7.183 9.55 10.95z" fill="#3A3F51" fill-rule="evenodd"/>
<g clip-rule="evenodd">
<path d="M78.7 114c-.2-1.167-.332-2.35-.4-3.55-.032-.667-.05-1.333-.05-2 0-.7.018-1.367.05-2 0-.067.018-.133.05-.2.435-7.367 3.334-13.733 8.7-19.1 5.9-5.833 12.984-8.75 21.25-8.75 8.3 0 15.384 2.917 21.25 8.75 5.834 5.934 8.75 13.033 8.75 21.3 0 8.267-2.916 15.35-8.75 21.25-.2.233-.416.45-.65.65-.966.933-1.982 1.783-3.05 2.55-5.065 3.733-10.916 5.6-17.55 5.6s-12.466-1.866-17.5-5.6c-1.332-.934-2.582-2-3.75-3.2-4.532-4.5-7.316-9.734-8.35-15.7z" fill="#0CF" fill-rule="evenodd"/>
<path d="M157.8 59.75l-15 14.65M30.785 32.526L71.65 73.25m84.6 84.25l27.808 28.78m1.855-153.894L157.8 59.75m-125.45 126l27.35-27.4" fill="none" stroke="#0CF" stroke-miterlimit="1" stroke-width="2"/>
<path d="M157.8 59.75l-16.95 17.2M58.97 60.604l17.2 17.15M59.623 158.43l16.75-17.4m61.928-1.396l18.028 17.945" fill="none" stroke="#0CF" stroke-miterlimit="1" stroke-width="7"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

+92
View File
@@ -0,0 +1,92 @@
# <img width="24px" src="./Logo/256.png" alt="Sonarr"></img> Sonarr
Sonarr is a PVR for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available.
## Getting Started
- [Download](https://sonarr.tv/#download) (Linux, MacOS, Windows, Docker, etc.)
- [Installation](https://github.com/Sonarr/Sonarr/wiki/Installation)
- [FAQ](https://github.com/Sonarr/Sonarr/wiki/FAQ)
- [Wiki](https://github.com/Sonarr/Sonarr/wiki)
- [API Documentation](https://github.com/Sonarr/Sonarr/wiki/API)
## Support
- [Donate](https://sonarr.tv/donate)
- [Discord](https://discord.gg/M6BvZn5)
- [Reddit](https://www.reddit.com/r/sonarr)
## Features
### Current Features
- Support for major platforms: Windows, Linux, macOS, Raspberry Pi, etc.
- Automatically detects new episodes
- Can scan your existing library and download any missing episodes
- Can watch for better quality of the episodes you already have and do an automatic upgrade. *eg. from DVD to Blu-Ray*
- Automatic failed download handling will try another release if one fails
- Manual search so you can pick any release or to see why a release was not downloaded automatically
- Fully configurable episode renaming
- Full integration with SABnzbd and NZBGet
- Full integration with Kodi, Plex (notification, library update, metadata)
- Full support for specials and multi-episode releases
- And a beautiful UI
## Configuring Development Environment:
### Requirements
- [Visual Studio 2017](https://www.visualstudio.com/vs)
- [Git](https://git-scm.com/downloads)
- [NodeJS](https://nodejs.org/en/download)
- [Yarn](https://yarnpkg.com)
### Setup
- Make sure all the required software mentioned above are installed
- Clone the repository recursively to get Sonarr and it's submodules
- You can do this by running `git clone --recursive https://github.com/Sonarr/Sonarr.git`
- Install the required Node Packages using `yarn`
### Backend Development
- Run `yarn build` to build the UI
- Open `Sonarr.sln` in Visual Studio
- Make sure `Sonarr.Console` is set as the startup project
- Build `Sonarr.Windows` and `Sonarr.Mono` projects
- Build Solution
### UI Development
- Run `yarn watch` to build UI and rebuild automatically when changes are detected
- Run Sonarr.Console.exe (or debug in Visual Studio)
### Licenses
- [GNU GPL v3](http://www.gnu.org/licenses/gpl.html)
- Copyright 2010-2020
### Supporters
This project would not be possible without the support of our users and software providers. [**Become a sponsor or backer**](https://opencollective.com/sonarr) to help us out!
#### Sponsors
[![Sponsors](https://opencollective.com/sonarr/tiers/sponsor.svg)](https://opencollective.com/sonarr/contribute/sponsor-21443/checkout)
#### Flexible Sponsors
[![Flexible Sponsors](https://opencollective.com/sonarr/tiers/flexible-sponsor.svg?avatarHeight=54)](https://opencollective.com/sonarr/contribute/flexible-sponsor-21457/checkout)
#### Backers
[![Backers](https://opencollective.com/sonarr/tiers/backer.svg?avatarHeight=48)](https://opencollective.com/sonarr/contribute/backer-21442/checkout)
#### JetBrains
Thank you to [<img src="/Logo/Jetbrains/jetbrains.svg" alt="JetBrains" width="32"> JetBrains](http://www.jetbrains.com/) for providing us with free licenses to their great tools
* [<img src="/Logo/Jetbrains/teamcity.svg" alt="TeamCity" width="32"> TeamCity](http://www.jetbrains.com/teamcity/)
* [<img src="/Logo/Jetbrains/resharper.svg" alt="ReSharper" width="32"> ReSharper](http://www.jetbrains.com/resharper/)
* [<img src="/Logo/Jetbrains/dottrace.svg" alt="dotTrace" width="32"> dotTrace](http://www.jetbrains.com/dottrace/)
-1
View File
@@ -1 +0,0 @@
Write-Warning "DEPRECATED -- Please use build.sh instead."
+296 -104
View File
@@ -1,17 +1,22 @@
#! /bin/bash #! /bin/bash
msBuild='/c/Program Files (x86)/MSBuild/14.0/Bin' msBuildVersion='15.0'
outputFolder='./_output' outputFolder='./_output'
outputFolderMono='./_output_mono' outputFolderWindows='./_output_windows'
outputFolderOsx='./_output_osx' outputFolderLinux='./_output_linux'
outputFolderOsxApp='./_output_osx_app' outputFolderMacOS='./_output_macos'
testPackageFolder='./_tests/' outputFolderMacOSApp='./_output_macos_app'
testSearchPattern='*.Test/bin/x86/Release' testPackageFolder='./_tests'
testPackageFolderWindows='./_tests_windows'
testPackageFolderLinux='./_tests_linux'
sourceFolder='./src' sourceFolder='./src'
slnFile=$sourceFolder/NzbDrone.sln slnFile=$sourceFolder/Sonarr.sln
updateFolder=$outputFolder/NzbDrone.Update updateSubFolder=Sonarr.Update
updateFolderMono=$outputFolderMono/NzbDrone.Update
nuget='tools/nuget/nuget.exe'; nuget='tools/nuget/nuget.exe';
vswhere='tools/vswhere/vswhere.exe';
. ./version.sh
CheckExitCode() CheckExitCode()
{ {
"$@" "$@"
@@ -23,12 +28,44 @@ CheckExitCode()
return $status return $status
} }
ProgressStart()
{
echo "##teamcity[blockOpened name='$1']"
echo "##teamcity[progressStart '$1']"
}
ProgressEnd()
{
echo "##teamcity[progressFinish '$1']"
echo "##teamcity[blockClosed name='$1']"
}
UpdateVersionNumber()
{
if [ "$BUILD_NUMBER" != "" ]; then
echo "Updating Version Info"
verMajorMinorRevision=`echo "$buildVersion" | cut -d. -f1,2,3`
verBuild=`echo "${BUILD_NUMBER}" | cut -d. -f4`
BUILD_NUMBER=$verMajorMinorRevision.$verBuild
echo "##teamcity[buildNumber '$BUILD_NUMBER']"
sed -i "s/<AssemblyVersion>[0-9.*]\+<\/AssemblyVersion>/<AssemblyVersion>$BUILD_NUMBER<\/AssemblyVersion>/g" ./src/Directory.Build.props
sed -i "s/<AssemblyConfiguration>[\$()A-Za-z-]\+<\/AssemblyConfiguration>/<AssemblyConfiguration>${BRANCH:-dev}<\/AssemblyConfiguration>/g" ./src/Directory.Build.props
fi
}
CreateReleaseInfo()
{
if [ "$BUILD_NUMBER" != "" ]; then
echo "Create Release Info"
echo -e "# Do Not Edit\nReleaseVersion=$BUILD_NUMBER\nBranch=${BRANCH:-dev}" > $outputFolder/release_info
fi
}
CleanFolder() CleanFolder()
{ {
local path=$1 local path=$1
local keepConfigFiles=$2 local keepConfigFiles=$2
find $path -name "*.transform" -exec rm "{}" \; find $path -name "*.transform" -exec rm "{}" \;
if [ $keepConfigFiles != true ] ; then if [ $keepConfigFiles != true ] ; then
@@ -39,9 +76,6 @@ CleanFolder()
find $path -name "FluentValidation.resources.dll" -exec rm "{}" \; find $path -name "FluentValidation.resources.dll" -exec rm "{}" \;
find $path -name "App.config" -exec rm "{}" \; find $path -name "App.config" -exec rm "{}" \;
echo "Removing .less files"
find $path -name "*.less" -exec rm "{}" \;
echo "Removing vshost files" echo "Removing vshost files"
find $path -name "*.vshost.exe" -exec rm "{}" \; find $path -name "*.vshost.exe" -exec rm "{}" \;
@@ -52,19 +86,17 @@ CleanFolder()
find $path -depth -empty -type d -exec rm -r "{}" \; find $path -depth -empty -type d -exec rm -r "{}" \;
} }
AddJsonNet()
{
rm $outputFolder/Newtonsoft.Json.*
cp $sourceFolder/packages/Newtonsoft.Json.*/lib/net35/*.dll $outputFolder
cp $sourceFolder/packages/Newtonsoft.Json.*/lib/net35/*.dll $outputFolder/NzbDrone.Update
}
BuildWithMSBuild() BuildWithMSBuild()
{ {
export PATH=$msBuild:$PATH msBuildPath=`$vswhere -latest -products \* -requires Microsoft.Component.MSBuild -find MSBuild\\\\\*\*\\\\Bin\\\\MSBuild.exe`
CheckExitCode MSBuild.exe $slnFile //t:Clean //m msBuildPath=${msBuildPath/C:\\/\/c\/}
msBuildPath=${msBuildPath//\\/\/}
msBuildDir=$(dirname "$msBuildPath")
echo $msBuildDir
export PATH=$msBuildDir:$PATH
CheckExitCode MSBuild.exe $slnFile //p:Configuration=Release //p:Platform=x86 //t:Clean //m
$nuget restore $slnFile $nuget restore $slnFile
CheckExitCode MSBuild.exe $slnFile //p:Configuration=Release //p:Platform=x86 //t:Build //m //p:AllowedReferenceRelatedFileExtensions=.pdb CheckExitCode MSBuild.exe $slnFile //p:Configuration=Release //p:Platform=x86 //t:Build //m //p:AllowedReferenceRelatedFileExtensions=.pdb
} }
@@ -72,16 +104,28 @@ BuildWithMSBuild()
BuildWithXbuild() BuildWithXbuild()
{ {
export MONO_IOMAP=case export MONO_IOMAP=case
CheckExitCode xbuild /t:Clean $slnFile CheckExitCode msbuild /t:Clean $slnFile
mono $nuget restore $slnFile mono $nuget restore $slnFile
CheckExitCode xbuild /p:Configuration=Release /p:Platform=x86 /t:Build /p:AllowedReferenceRelatedFileExtensions=.pdb $slnFile CheckExitCode msbuild /p:Configuration=Release /p:Platform=x86 /t:Build /p:AllowedReferenceRelatedFileExtensions=.pdb $slnFile
}
LintUI()
{
ProgressStart 'ESLint'
CheckExitCode yarn lint
ProgressEnd 'ESLint'
ProgressStart 'Stylelint'
CheckExitCode yarn stylelint
ProgressEnd 'Stylelint'
} }
Build() Build()
{ {
echo "##teamcity[progressStart 'Build']" ProgressStart 'Build'
rm -rf $outputFolder rm -rf $outputFolder
rm -rf $testPackageFolder
if [ $runtime = "dotnet" ] ; then if [ $runtime = "dotnet" ] ; then
BuildWithMSBuild BuildWithMSBuild
@@ -91,23 +135,23 @@ Build()
CleanFolder $outputFolder false CleanFolder $outputFolder false
AddJsonNet
echo "Removing Mono.Posix.dll" echo "Removing Mono.Posix.dll"
rm $outputFolder/Mono.Posix.dll rm $outputFolder/Mono.Posix.dll
echo "##teamcity[progressFinish 'Build']" ProgressEnd 'Build'
} }
RunGulp() RunGulp()
{ {
echo "##teamcity[progressStart 'npm install']" ProgressStart 'yarn install'
npm-cache install npm || CheckExitCode npm install yarn install
echo "##teamcity[progressFinish 'npm install']" ProgressEnd 'yarn install'
echo "##teamcity[progressStart 'Running gulp']" LintUI
CheckExitCode npm run build
echo "##teamcity[progressFinish 'Running gulp']" ProgressStart 'Running gulp'
CheckExitCode yarn run build --production
ProgressEnd 'Running gulp'
} }
CreateMdbs() CreateMdbs()
@@ -127,121 +171,265 @@ CreateMdbs()
fi fi
} }
PatchMono()
{
local path=$1
# Below we deal with some mono incompatibilities with windows-only dotnet core/standard libs
# See: https://github.com/mono/mono/blob/master/tools/nuget-hash-extractor/download.sh
# That list defines assemblies that are prohibited from being loaded from the appdir, instead loading from mono GAC.
# We have debian dependencies to get these installed or facades from mono 5.10+
for assembly in System.IO.Compression System.Runtime.InteropServices.RuntimeInformation System.Net.Http System.Globalization.Extensions System.Text.Encoding.CodePages System.Threading.Overlapped
do
if [ -e $path/$assembly.dll ]; then
if [ -e $sourceFolder/Libraries/Mono/$assembly.dll ]; then
echo "Copy Mono-specific facade $assembly.dll (uses win32 interop)"
cp $sourceFolder/Libraries/Mono/$assembly.dll $path/$assembly.dll
else
echo "Remove $assembly.dll (uses win32 interop)"
rm $path/$assembly.dll
fi
fi
done
# Copy more stable version of Vectors for mono <5.12
if [ -e $path/System.Numerics.Vectors.dll ]; then
packageDir="$HOME/.nuget/packages/system.numerics.vectors/4.5.0"
if [ ! -d "$HOME/.nuget/packages/system.numerics.vectors/4.5.0" ]; then
# May reside in the NuGetFallback folder, which is harder to find
# Download somewhere to get the real cache populated
if [ $runtime = "dotnet" ] ; then
$nuget install System.Numerics.Vectors -Version 4.5.0 -Output ./_temp/System.Numerics.Vectors
else
mono $nuget install System.Numerics.Vectors -Version 4.5.0 -Output ./_temp/System.Numerics.Vectors
fi
rm -rf ./_temp/System.Numerics.Vectors
fi
# Copy the netstandard2.0 version rather than net46
cp "$packageDir/lib/netstandard2.0/System.Numerics.Vectors.dll" $path/
fi
}
PackageMono() PackageMono()
{ {
echo "##teamcity[progressStart 'Creating Mono Package']" ProgressStart 'Creating Mono Package'
rm -rf $outputFolderMono
cp -r $outputFolder $outputFolderMono rm -rf $outputFolderLinux
echo "Copying Binaries"
cp -r $outputFolder $outputFolderLinux
echo "Creating MDBs" echo "Creating MDBs"
CreateMdbs $outputFolderMono CreateMdbs $outputFolderLinux
echo "Removing PDBs" echo "Removing PDBs"
find $outputFolderMono -name "*.pdb" -exec rm "{}" \; find $outputFolderLinux -name "*.pdb" -exec rm "{}" \;
echo "Removing Service helpers" echo "Removing Service helpers"
rm -f $outputFolderMono/ServiceUninstall.* rm -f $outputFolderLinux/ServiceUninstall.*
rm -f $outputFolderMono/ServiceInstall.* rm -f $outputFolderLinux/ServiceInstall.*
echo "Removing native windows binaries Sqlite, MediaInfo" echo "Removing native windows binaries Sqlite, MediaInfo"
rm -f $outputFolderMono/sqlite3.* rm -f $outputFolderLinux/sqlite3.*
rm -f $outputFolderMono/MediaInfo.* rm -f $outputFolderLinux/MediaInfo.*
echo "Adding NzbDrone.Core.dll.config (for dllmap)" PatchMono $outputFolderLinux
cp $sourceFolder/NzbDrone.Core/NzbDrone.Core.dll.config $outputFolderMono
echo "Adding CurlSharp.dll.config (for dllmap)" echo "Adding Sonarr.Core.dll.config (for dllmap)"
cp $sourceFolder/NzbDrone.Common/CurlSharp.dll.config $outputFolderMono cp $sourceFolder/NzbDrone.Core/Sonarr.Core.dll.config $outputFolderLinux
echo "Renaming NzbDrone.Console.exe to NzbDrone.exe" # Remove Http binding redirect by renaming it
rm $outputFolderMono/NzbDrone.exe* # We don't need this anymore once our minimum mono version is 5.10
for file in $outputFolderMono/NzbDrone.Console.exe*; do sed -i "s/System.Net.Http/System.Net.Http.Mono/g" $outputFolderLinux/Sonarr.Console.exe.config
echo "Renaming Sonarr.Console.exe to Sonarr.exe"
rm $outputFolderLinux/Sonarr.exe*
for file in $outputFolderLinux/Sonarr.Console.exe*; do
mv "$file" "${file//.Console/}" mv "$file" "${file//.Console/}"
done done
echo "Removing NzbDrone.Windows" echo "Removing Sonarr.Windows"
rm $outputFolderMono/NzbDrone.Windows.* rm $outputFolderLinux/Sonarr.Windows.*
echo "Adding NzbDrone.Mono to UpdatePackage" echo "Adding Sonarr.Mono to UpdatePackage"
cp $outputFolderMono/NzbDrone.Mono.* $updateFolderMono cp $outputFolderLinux/Sonarr.Mono.* $outputFolderLinux/$updateSubFolder/
echo "##teamcity[progressFinish 'Creating Mono Package']" ProgressEnd 'Creating Mono Package'
} }
PackageOsx() PackageMacOS()
{ {
echo "##teamcity[progressStart 'Creating OS X Package']" ProgressStart 'Creating MacOS Package'
rm -rf $outputFolderOsx
cp -r $outputFolderMono $outputFolderOsx rm -rf $outputFolderMacOS
mkdir $outputFolderMacOS
echo "Copying Binaries"
cp -r $outputFolderLinux/* $outputFolderMacOS
echo "Adding Sonarr Launcher"
cp ./distribution/osx/Launcher/dist/Launcher $outputFolderMacOS/
mv $outputFolderMacOS/Sonarr.exe $outputFolderMacOS/Sonarr.exe.bak
mv $outputFolderMacOS/Launcher $outputFolderMacOS/Sonarr
mv $outputFolderMacOS/Sonarr.exe.bak $outputFolderMacOS/Sonarr.exe
chmod +x $outputFolderMacOS/Sonarr
echo "Adding Sonarr.Update Launcher"
cp ./distribution/osx/Launcher/dist/Launcher $outputFolderMacOS/Sonarr.Update/
mv $outputFolderMacOS/Sonarr.Update/Sonarr.Update.exe $outputFolderMacOS/Sonarr.Update/Sonarr.Update.exe.bak
mv $outputFolderMacOS/Sonarr.Update/Launcher $outputFolderMacOS/Sonarr.Update/Sonarr.Update
mv $outputFolderMacOS/Sonarr.Update/Sonarr.Update.exe.bak $outputFolderMacOS/Sonarr.Update/Sonarr.Update.exe
chmod +x $outputFolderMacOS/Sonarr.Update/Sonarr.Update
echo "Adding sqlite dylibs" echo "Adding sqlite dylibs"
cp $sourceFolder/Libraries/Sqlite/*.dylib $outputFolderOsx cp $sourceFolder/Libraries/Sqlite/*.dylib $outputFolderMacOS
echo "Adding MediaInfo dylib" echo "Adding MediaInfo dylib"
cp $sourceFolder/Libraries/MediaInfo/*.dylib $outputFolderOsx cp $sourceFolder/Libraries/MediaInfo/*.dylib $outputFolderMacOS
echo "Adding Startup script" ProgressEnd 'Creating MacOS Package'
cp ./osx/Sonarr $outputFolderOsx
echo "##teamcity[progressFinish 'Creating OS X Package']"
} }
PackageOsxApp() PackageMacOSApp()
{ {
echo "##teamcity[progressStart 'Creating OS X App Package']" ProgressStart 'Creating macOS App Package'
rm -rf $outputFolderOsxApp
mkdir $outputFolderOsxApp
cp -r ./osx/Sonarr.app $outputFolderOsxApp rm -rf $outputFolderMacOSApp
cp -r $outputFolderOsx $outputFolderOsxApp/Sonarr.app/Contents/MacOS mkdir $outputFolderMacOSApp
cp -r ./distribution/osx/Sonarr.app $outputFolderMacOSApp
mkdir -p $outputFolderMacOSApp/Sonarr.app/Contents/MacOS
echo "##teamcity[progressFinish 'Creating OS X App Package']" echo "Adding Sonarr Launcher"
cp ./distribution/osx/Launcher/dist/Launcher $outputFolderMacOSApp/Sonarr.app/Contents/MacOS/
mv $outputFolderMacOSApp/Sonarr.app/Contents/MacOS/Launcher $outputFolderMacOSApp/Sonarr.app/Contents/MacOS/Sonarr
chmod +x $outputFolderMacOSApp/Sonarr.app/Contents/MacOS/Sonarr
echo "Copying Binaries"
mkdir -p $outputFolderMacOSApp/Sonarr.app/Contents/MacOS/bin
cp -r $outputFolderLinux/* $outputFolderMacOSApp/Sonarr.app/Contents/MacOS/bin/
echo "Adding sqlite dylibs"
cp $sourceFolder/Libraries/Sqlite/*.dylib $outputFolderMacOSApp/Sonarr.app/Contents/MacOS/bin/
echo "Adding MediaInfo dylib"
cp $sourceFolder/Libraries/MediaInfo/*.dylib $outputFolderMacOSApp/Sonarr.app/Contents/MacOS/bin/
echo "Removing Update Folder"
rm -r $outputFolderMacOSApp/Sonarr.app/Contents/MacOS/bin/Sonarr.Update
echo "# Do Not Edit\nPackageVersion=${BUILD_NUMBER}\nPackageAuthor=[Team Sonarr](https://sonarr.tv)\nReleaseVersion=${BUILD_NUMBER}\nUpdateMethod=$PackageUpdater\nBranch=${Branch:-master}" > $outputFolderMacOSApp/Sonarr.app/Contents/MacOS/package_info
ProgressEnd 'Creating macOS App Package'
} }
PackageTests() PackageTestsMono()
{ {
echo "Packaging Tests" ProgressStart 'Creating Mono Test Package'
echo "##teamcity[progressStart 'Creating Test Package']"
rm -rf $testPackageFolder
mkdir $testPackageFolder
find $sourceFolder -path $testSearchPattern -exec cp -r -u -T "{}" $testPackageFolder \; rm -rf $testPackageFolderLinux
echo "Copying Binaries"
cp -r $testPackageFolder $testPackageFolderLinux
if [ $runtime = "dotnet" ] ; then if [ $runtime = "dotnet" ] ; then
$nuget install NUnit.ConsoleRunner -Version 3.2.0 -Output $testPackageFolder $nuget install NUnit.ConsoleRunner -Version 3.10.0 -Output $testPackageFolderLinux
else else
mono $nuget install NUnit.ConsoleRunner -Version 3.2.0 -Output $testPackageFolder mono $nuget install NUnit.ConsoleRunner -Version 3.10.0 -Output $testPackageFolderLinux
fi fi
cp $outputFolder/*.dll $testPackageFolder echo "Creating MDBs"
cp ./*.sh $testPackageFolder CreateMdbs $testPackageFolderLinux
echo "Creating MDBs for tests" echo "Removing PDBs"
CreateMdbs $testPackageFolder find $testPackageFolderLinux -name "*.pdb" -exec rm "{}" \;
rm -f $testPackageFolder/*.log.config PatchMono $testPackageFolderLinux
CleanFolder $testPackageFolder true echo "Adding Sonarr.Core.dll.config (for dllmap)"
cp $sourceFolder/NzbDrone.Core/Sonarr.Core.dll.config $testPackageFolderLinux
echo "Adding NzbDrone.Core.dll.config (for dllmap)" # Remove Http binding redirect by renaming it
cp $sourceFolder/NzbDrone.Core/NzbDrone.Core.dll.config $testPackageFolder # We don't need this anymore once our minimum mono version is 5.10
sed -i "s/System.Net.Http/System.Net.Http.Mono/g" $testPackageFolderLinux/Sonarr.Common.Test.dll.config
echo "Adding CurlSharp.dll.config (for dllmap)" cp ./test.sh $testPackageFolderLinux/
cp $sourceFolder/NzbDrone.Common/CurlSharp.dll.config $testPackageFolder dos2unix $testPackageFolderLinux/test.sh
echo "Copying CurlSharp libraries" echo "Removing Sonarr.Windows"
cp $sourceFolder/ExternalModules/CurlSharp/libs/i386/* $testPackageFolder rm $testPackageFolderLinux/Sonarr.Windows.*
echo "##teamcity[progressFinish 'Creating Test Package']" rm -f $testPackageFolderLinux/*.log.config
CleanFolder $testPackageFolderLinux true
ProgressEnd 'Creating Linux Test Package'
} }
CleanupWindowsPackage() PackageTestsWindows()
{ {
echo "Removing NzbDrone.Mono" ProgressStart 'Creating Windows Test Package'
rm -f $outputFolder/NzbDrone.Mono.*
echo "Adding NzbDrone.Windows to UpdatePackage" rm -rf $testPackageFolderWindows
cp $outputFolder/NzbDrone.Windows.* $updateFolder
echo "Copying Binaries"
cp -r $testPackageFolder $testPackageFolderWindows
if [ $runtime = "dotnet" ] ; then
$nuget install NUnit.ConsoleRunner -Version 3.10.0 -Output $testPackageFolderWindows
else
mono $nuget install NUnit.ConsoleRunner -Version 3.10.0 -Output $testPackageFolderWindows
fi
cp ./test.sh $testPackageFolderWindows
echo "Removing Sonarr.Mono"
rm -f $testPackageFolderWindows/Sonarr.Mono.*
rm -f $testPackageFolderWindows/*.log.config
CleanFolder $testPackageFolderWindows true
ProgressEnd 'Creating Windows Test Package'
}
PackageWindows()
{
ProgressStart 'Creating Windows Package'
rm -rf $outputFolderWindows
echo "Copying Binaries"
cp -r $outputFolder $outputFolderWindows
echo "Removing Sonarr.Mono"
rm -f $outputFolderWindows/Sonarr.Mono.*
echo "Adding Sonarr.Windows to UpdatePackage"
cp $outputFolderWindows/Sonarr.Windows.* $outputFolderWindows/$updateSubFolder/
ProgressEnd 'Creating Windows Package'
}
PublishArtifacts()
{
ProgressStart 'Publishing Artifacts'
# Tests
echo "##teamcity[publishArtifacts '$testPackageFolderWindows/** => tests.windows.zip']"
echo "##teamcity[publishArtifacts '$testPackageFolderLinux/** => tests.linux.zip']"
# Releases
echo "##teamcity[publishArtifacts '$outputFolderWindows/** => Sonarr.$BRANCH.$BUILD_NUMBER.windows.zip!Sonarr']"
echo "##teamcity[publishArtifacts '$outputFolderLinux/** => Sonarr.$BRANCH.$BUILD_NUMBER.linux.tar.gz!Sonarr']"
echo "##teamcity[publishArtifacts '$outputFolderMacOS/** => Sonarr.$BRANCH.$BUILD_NUMBER.macos.tar.gz!Sonarr']"
echo "##teamcity[publishArtifacts '$outputFolderMacOSApp/** => Sonarr.$BRANCH.$BUILD_NUMBER.macos.zip']"
# Debian Package
echo "##teamcity[publishArtifacts 'distribution/** => distribution.zip']"
ProgressEnd 'Publishing Artifacts'
} }
# Use mono or .net depending on OS # Use mono or .net depending on OS
@@ -256,10 +444,14 @@ case "$(uname -s)" in
;; ;;
esac esac
UpdateVersionNumber
Build Build
CreateReleaseInfo
RunGulp RunGulp
PackageMono PackageMono
PackageOsx PackageMacOS
PackageOsxApp PackageMacOSApp
PackageTests PackageTestsMono
CleanupWindowsPackage PackageTestsWindows
PackageWindows
PublishArtifacts
-5
View File
@@ -1,5 +0,0 @@
nzbdrone {version} {branch}; urgency=low
* Automatic Release.
-- NzbDrone <contact@nzbdrone.com> Mon, 26 Aug 2013 00:00:00 -0700
-12
View File
@@ -1,12 +0,0 @@
Section: web
Priority: optional
Maintainer: Sonarr <contact@nzbdrone.com>
Source: nzbdrone
Homepage: https://sonarr.tv
Vcs-Git: git@github.com:Sonarr/Sonarr.git
Vcs-Browser: https://github.com/Sonarr/Sonarr
Package: nzbdrone
Architecture: all
Depends: libmono-cil-dev (>= 3.2), sqlite3 (>= 3.7), mediainfo (>= 0.7.52)
Description: Sonarr is an internet PVR
-1
View File
@@ -1 +0,0 @@
nzbdrone_bin/* opt/NzbDrone
-13
View File
@@ -1,13 +0,0 @@
#!/usr/bin/make -f
# -*- makefile -*-
# Sample debian/rules that uses debhelper.
# This file was originally written by Joey Hess and Craig Small.
# As a special exception, when this file is copied by dh-make into a
# dh-make output file, you may use that output file without restriction.
# This special exception was added by Craig Small in version 0.37 of dh-make.
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
%:
dh $@
+7
View File
@@ -0,0 +1,7 @@
# Note, this script is only used for local dev tests, this is not the script used for building the official sonarr package
mkdir -p /${PWD}/../_output_debian
docker build -f docker-build/Dockerfile -t sonarr-packager ./docker-build
docker run --rm -v /${PWD}/../_output_linux:/data/sonarr_bin:ro -v /${PWD}:/data/build -v /${PWD}/../_output_debian:/data/output sonarr-packager
+63
View File
@@ -0,0 +1,63 @@
fromdos ./debian/*
cp -r ./debian ./debian_backup
BuildVersion=${dependent_build_number:-3.10.0.999}
BuildBranch=${dependent_build_branch:-master}
BootstrapVersion=`echo "$BuildVersion" | cut -d. -f1,2,3`
BootstrapUpdater="BuiltIn"
PackageUpdater="apt"
echo Version: "$BuildVersion" Branch: "$BuildBranch"
rm -r ./sonarr_bin/Sonarr.Update
chmod -R ugo-x,ugo+rwX,go-w ./sonarr_bin/*
echo Updating changelog for $BuildVersion
sed -i "s:{version}:$BuildVersion:g; s:{branch}:$BuildBranch:g;" debian/changelog
sed -i "s:{version}:$BuildVersion:g; s:{updater}:$PackageUpdater:g" debian/preinst debian/postinst debian/postrm
sed -i '/#BEGIN BUILTIN UPDATER/,/#END BUILTIN UPDATER/d' debian/preinst debian/postinst debian/postrm
echo "# Do Not Edit\nPackageVersion=$BuildVersion\nPackageAuthor=[Team Sonarr](https://sonarr.tv)\nReleaseVersion=$BuildVersion\nUpdateMethod=$PackageUpdater\nBranch=$BuildBranch" > package_info
echo Running debuild for $BuildVersion
if [ -z "${TEST_OUTPUT}" ]; then
debuild -b
else
debuild -us -uc -b
fi
# Restore debian directory to the original files
rm -rf ./debian
mv ./debian_backup ./debian
echo Updating changelog for $BootstrapVersion
sed -i "s:{version}:$BootstrapVersion:g; s:{branch}:$BuildBranch:g;" debian/changelog
sed -i "s:{version}:$BuildVersion:g; s:{updater}:$BootstrapUpdater:g" debian/preinst debian/postinst debian/postrm
sed -i '/#BEGIN BUILTIN UPDATER/d; /#END BUILTIN UPDATER/d' debian/preinst debian/postinst debian/postrm
echo "# Do Not Edit\nPackageVersion=$BootstrapVersion\nPackageAuthor=[Team Sonarr](https://sonarr.tv)\nReleaseVersion=$BuildVersion\nUpdateMethod=$BootstrapUpdater\nBranch=$BuildBranch" > package_info
echo Running debuild for $BootstrapVersion
if [ -z "${TEST_OUTPUT}" ]; then
debuild -b
else
debuild -us -uc -b
fi
echo Moving stuff around
mv ../sonarr_*.deb ./
mv ../sonarr_*.changes ./
rm ../sonarr_*.build
if [ -z "${TEST_OUTPUT}" ]; then
echo Signing Package
dpkg-sig -k 884589CE --sign builder "sonarr_${BuildVersion}_all.deb"
dpkg-sig -k 884589CE --sign builder "sonarr_${BootstrapVersion}_all.deb"
echo running alien
alien -r -v ./*.deb
else
echo "Exporting packages to ${TEST_OUTPUT}"
dpkg -e "sonarr_${BuildVersion}_all.deb" ${TEST_OUTPUT}/sonarr-build
dpkg -e "sonarr_${BootstrapVersion}_all.deb" ${TEST_OUTPUT}/sonarr-release
cp *.deb ${TEST_OUTPUT}/
fi
+6
View File
@@ -0,0 +1,6 @@
[*]
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
indent_style = space
indent_size = 2
+5
View File
@@ -0,0 +1,5 @@
sonarr ({version}) {branch}; urgency=low
* Automatic Release.
-- Sonarr <hello@sonarr.tv> Sun, 28 Jan 2018 00:00:00 -0700
+14
View File
@@ -0,0 +1,14 @@
#!/bin/sh -e
. /usr/share/debconf/confmodule
db_beginblock
db_input high sonarr/owning_user || true
db_input high sonarr/owning_group || true
db_endblock
db_go
db_input low sonarr/config_directory || true
db_go
exit 0
+22
View File
@@ -0,0 +1,22 @@
Section: web
Priority: optional
Maintainer: Sonarr <hello@sonarr.tv>
Source: sonarr
Homepage: https://sonarr.tv
Vcs-Git: git@github.com:Sonarr/Sonarr.git
Vcs-Browser: https://github.com/Sonarr/Sonarr
Build-Depends: debhelper (>= 9),
dh-systemd (>= 1.5),
mono-devel (>= 5.18),
libmono-cil-dev (>= 5.18),
cli-common-dev (>= 0.9+xamarin5)
Package: sonarr
Architecture: all
Provides: nzbdrone
Conflicts: nzbdrone
Replaces: nzbdrone
Depends: adduser, libsqlite3-0 (>= 3.7), libmediainfo0v5 (>= 0.7.52) | libmediainfo0 (>= 0.7.52), mono-runtime (>= 5.18), ca-certificates-mono, libmono-system-net-http4.0-cil (>= 4.0.0~alpha1), ${cli:Depends}, ${misc:Depends}
Recommends: libmediainfo0v5 (>= 18.03) | libmediainfo0 (>= 18.03)
Suggests: sqlite3 (>= 3.7), mediainfo (>= 0.7.52)
Description: Internet PVR
+24 -24
View File
@@ -1,24 +1,24 @@
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: nzbdrone Upstream-Name: sonarr
Source: https://github.com/Sonarr/Sonarr Source: https://github.com/Sonarr/Sonarr
Files: * Files: *
Copyright: 2010-2016 Sonarr <hello@sonarr.tv> Copyright: 2010-2016 Sonarr <hello@sonarr.tv>
License: GPL-3.0+ License: GPL-3.0+
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or the Free Software Foundation, either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
. .
This package is distributed in the hope that it will be useful, This package is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. GNU General Public License for more details.
. .
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
. .
On Debian systems, the complete text of the GNU General On Debian systems, the complete text of the GNU General
Public License version 3 can be found in "/usr/share/common-licenses/GPL-3". Public License version 3 can be found in "/usr/share/common-licenses/GPL-3".
+1
View File
@@ -0,0 +1 @@
sonarr_3.0.0.0_all.deb web optional
+2
View File
@@ -0,0 +1,2 @@
sonarr_bin/* usr/lib/sonarr/bin
package_info usr/lib/sonarr
+107
View File
@@ -0,0 +1,107 @@
#!/bin/sh
set -e
BUILD_VERSION={version}
UPDATER={updater}
. /usr/share/debconf/confmodule
db_get sonarr/owning_user
USER="$RET"
db_get sonarr/owning_group
GROUP="$RET"
db_get sonarr/config_directory
CONFDIR="$RET"
# Add User and Group
if ! getent group "$GROUP" >/dev/null; then
groupadd "$GROUP"
fi
if ! getent passwd "$USER" >/dev/null; then
adduser --system --no-create-home --ingroup "$GROUP" "$USER"
fi
if [ $1 = "configure" ]; then
# Migrate old Sonarr v3 alpha data dir from /var/opt/sonarr or user home
if [ -d "/var/opt/sonarr" ] && [ "$CONFDIR" != "/var/opt/sonarr" ] && [ ! -d "$CONFDIR" ]; then
varoptRoot="/var/opt/sonarr"
varoptAppData="$varoptRoot/.config/Sonarr"
sonarrUserHome=`getent passwd $USER | cut -d ':' -f 6`
sonarrAppData="$sonarrUserHome/.config/Sonarr"
if [ -f "$varoptRoot/sonarr.db" ]; then
# Handle /var/opt/sonarr/sonarr.db
mv "$varoptRoot" "$CONFDIR"
elif [ -f "$varoptAppData/sonarr.db" ]; then
# Handle /var/opt/sonarr/.config/Sonarr/sonarr.db
mv "$varoptAppData" "$CONFDIR"
rm -rf "$varoptRoot"
elif [ -f "$sonarrAppData/sonarr.db" ]; then
# Handle ~/.config/Sonarr/sonarr.db
mv "$sonarrAppData" "$CONFDIR"
rm -rf "$sonarrAppData"
else
mv "$varoptRoot" "$CONFDIR"
fi
chown -R $USER:$GROUP "$CONFDIR"
chmod -R 775 "$CONFDIR"
fi
# Migrate old NzbDrone data dir
if [ -d "/usr/lib/sonarr/nzbdrone-appdata" ] && [ ! -d "$CONFDIR" ]; then
NZBDRONE_DATA=`readlink /usr/lib/sonarr/nzbdrone-appdata`
if [ -f "$NZBDRONE_DATA/config.xml" ] && [ -f "$NZBDRONE_DATA/nzbdrone.db" ]; then
echo "Found NzbDrone database in $NZBDRONE_DATA, copying to $CONFDIR."
mkdir -p "$CONFDIR"
cp $NZBDRONE_DATA/config.xml $NZBDRONE_DATA/nzbdrone.db* "$CONFDIR/"
chown -R $USER:$GROUP "$CONFDIR"
chmod -R 775 "$CONFDIR"
else
echo "Missing NzbDrone database in $NZBDRONE_DATA, skipping migration."
fi
rm /usr/lib/sonarr/nzbdrone-appdata
fi
fi
# Create data directory
if [ ! -d "$CONFDIR" ]; then
mkdir -p "$CONFDIR"
chown -R $USER:$GROUP "$CONFDIR"
fi
#BEGIN BUILTIN UPDATER
# Apply patch if present
if [ "$UPDATER" = "BuiltIn" ] && [ -f /usr/lib/sonarr/bin_patch/release_info ]; then
# It shouldn't be possible to get a wrong bin_patch, but let's check anyway and throw it away if it's wrong
currentVersion=`cat /usr/lib/sonarr/bin_patch/release_info | grep 'ReleaseVersion=' | cut -d= -f 2`
currentRelease=`echo "$currentVersion" | cut -d. -f1,2,3`
currentBuild=`echo "$currentVersion" | cut -d. -f4`
targetVersion=$BUILD_VERSION
targetRelease=`echo "$targetVersion" | cut -d. -f1,2,3`
targetBuild=`echo "$targetVersion" | cut -d. -f4`
if [ "$currentRelease" = "$targetRelease" ] && [ "$currentBuild" -gt "$targetBuild" ]; then
echo "Applying $currentVersion from BuiltIn updater instead of downgrading to $targetVersion"
rm -rf /usr/lib/sonarr/bin
mv /usr/lib/sonarr/bin_patch /usr/lib/sonarr/bin
else
rm -rf /usr/lib/sonarr/bin_patch
fi
fi
#END BUILTIN UPDATER
# Set permissions on /usr/lib/sonarr
chown -R $USER:$GROUP /usr/lib/sonarr
# Update sonarr.service file
sed -i "s:User=sonarr:User=$USER:g; s:Group=sonarr:Group=$GROUP:g; s:-data=/var/lib/sonarr:-data=$CONFDIR:g" /lib/systemd/system/sonarr.service
#BEGIN BUILTIN UPDATER
if [ "$UPDATER" = "BuiltIn" ]; then
# If we upgraded, signal Sonarr to do an update check on startup instead of scheduled.
touch $CONFDIR/update_required
chown $USER:$GROUP $CONFDIR/update_required
fi
#END BUILTIN UPDATER
#DEBHELPER#
exit 0
+36
View File
@@ -0,0 +1,36 @@
#!/bin/sh
set -e
BUILD_VERSION={version}
UPDATER={updater}
if [ $1 = "abort-install" ]; then
# preinst was aborted, possibly due to NzbDrone still running.
# Nothing to do here
:
fi
# The bin directory is expected to be empty, unless the BuiltIn updater added files.
if [ $1 = "remove" ] && [ -d /usr/lib/sonarr/bin ]; then
rm -rf /usr/lib/sonarr/bin
fi
#BEGIN BUILTIN UPDATER
# Remove any existing patch if still present
if [ $1 = "remove" ] && [ -d /usr/lib/sonarr/bin_patch ]; then
rm -rf /usr/lib/sonarr/bin_patch
fi
#END BUILTIN UPDATER
# Purge the entire sonarr configuration directory.
# TODO: Maybe move a minimal backup to tmp?
if [ $1 = "purge" ] && [ -e /usr/share/debconf/confmodule ]; then
. /usr/share/debconf/confmodule
db_get sonarr/config_directory
CONFDIR="$RET"
if [ -d "$CONFDIR" ]; then
rm -rf "$CONFDIR"
fi
fi
#DEBHELPER#
+91
View File
@@ -0,0 +1,91 @@
#!/bin/sh
set -e
BUILD_VERSION={version}
UPDATER={updater}
# Deal with existing nzbdrone installs
#
# Existing nzbdrone packages do not have startup scripts and the process might still be running.
# If the user manually installed nzbdrone then the process might still be running too.
if [ $1 = "install" ]; then
psNzbDrone=`ps ax -o'user,pid,ppid,unit,args' | grep mono.*NzbDrone\\\\.exe || true`
if [ ! -z "$psNzbDrone" ]; then
# Get the user and optional systemd unit
psNzbDroneUser=`echo "$psNzbDrone" | tr -s ' ' | cut -d ' ' -f 1`
psNzbDroneUnit=`echo "$psNzbDrone" | tr -s ' ' | cut -d ' ' -f 4`
# Get the appdata from the cmdline or get it from the user dir
droneAppData=`echo "$psNzbDrone" | tr ' ' '\n' | grep -- "-data=" | cut -d= -f 2`
if [ "$droneAppData" = "" ]; then
droneUserHome=`getent passwd $psNzbDroneUser | cut -d ':' -f 6`
droneAppData="$droneUserHome/.config/NzbDrone"
fi
if [ "$psNzbDroneUnit" != "-" ] && [ -d /run/systemd/system ]; then
if [ "$psNzbDroneUnit" = "sonarr.service" ]; then
# Conflicts with our new sonarr.service so we have to remove it
echo "NzbDrone systemd startup detected at $psNzbDroneUnit, stopping and removing..."
deb-systemd-invoke stop $psNzbDroneUnit >/dev/null
if [ -f "/etc/systemd/system/$psNzbDroneUnit" ]; then
rm /etc/systemd/system/$psNzbDroneUnit
fi
if [ -f "/usr/lib/systemd/system/$psNzbDroneUnit" ]; then
rm /usr/lib/systemd/system/$psNzbDroneUnit
fi
deb-systemd-helper purge $psNzbDroneUnit >/dev/null
deb-systemd-helper unmask $psNzbDroneUnit >/dev/null
systemctl --system daemon-reload >/dev/null || true
else
# Just disable it, so the user can revisit the settings later
echo "NzbDrone systemd startup detected at $psNzbDroneUnit, stopping and disabling..."
deb-systemd-invoke stop $psNzbDroneUnit >/dev/null
deb-systemd-invoke mask $psNzbDroneUnit >/dev/null
fi
else
# We don't support auto migration for other startup methods, so bail.
# This leaves the sonarr package in an incomplete state.
echo "ps: $psNzbDrone"
echo "Error: An existing Sonarr v2 (NzbDrone) process is running. Remove the NzbDrone auto-startup prior to installing sonarr."
exit 1
fi
# We don't have the debconf configuration yet so we can't migrate the data.
# Instead we symlink so postinst knows where it's at.
if [ -f "/usr/lib/sonarr/nzbdrone-appdata" ]; then
rm "/usr/lib/sonarr/nzbdrone-appdata"
else
mkdir -p "/usr/lib/sonarr"
fi
ln -s $droneAppData /usr/lib/sonarr/nzbdrone-appdata
fi
fi
#BEGIN BUILTIN UPDATER
# Check for supported upgrade paths
if [ $1 = "upgrade" ] && [ "$UPDATER" = "BuiltIn" ] && [ -f /usr/lib/sonarr/bin/release_info ]; then
# If we allow the Built-In updater to upgrade from 3.0.1.123 to 3.0.2.500 and now apt is catching up to 3.0.2.425
# then we need to deal with that 500->425 'downgrade'.
# We do that by preserving the binaries and using those instead for postinst.
currentVersion=`cat /usr/lib/sonarr/bin/release_info | grep 'ReleaseVersion=' | cut -d= -f 2`
currentRelease=`echo "$currentVersion" | cut -d. -f1,2,3`
currentBuild=`echo "$currentVersion" | cut -d. -f4`
targetVersion=$BUILD_VERSION
targetRelease=`echo "$targetVersion" | cut -d. -f1,2,3`
targetBuild=`echo "$targetVersion" | cut -d. -f4`
if [ -d /usr/lib/sonarr/bin_patch ]; then
rm -rf /usr/lib/sonarr/bin_patch
fi
# Check if the existing version is already an upgrade for the included build
if [ "$currentRelease" = "$targetRelease" ] && [ "$currentBuild" -gt "$targetBuild" ]; then
echo "Preserving $currentVersion from BuiltIn updater instead of downgrading to $targetVersion"
cp -r /usr/lib/sonarr/bin /usr/lib/sonarr/bin_patch
fi
fi
#END BUILTIN UPDATER
#DEBHELPER#
exit 0
+21
View File
@@ -0,0 +1,21 @@
#!/usr/bin/make -f
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
EXCLUDE_MODULEREFS = crypt32 httpapi __Internal ole32.dll libmonosgen-2.0
%:
dh $@ --with=systemd --with=cli
# No init script, only systemd
override_dh_installinit:
true
# Sonarr likes debug symbols for logging
override_dh_clistrip:
override_dh_makeclilibs:
override_dh_clideps:
dh_clideps -d -r $(patsubst %,--exclude-moduleref=%,$(EXCLUDE_MODULEREFS))
@@ -0,0 +1,2 @@
ignores msbuild
ignores libmediainfo0v5
+17
View File
@@ -0,0 +1,17 @@
[Unit]
Description=Sonarr Daemon
After=network.target
[Service]
User=sonarr
Group=sonarr
UMask=002
Type=simple
ExecStart=/usr/bin/mono --debug /usr/lib/sonarr/bin/Sonarr.exe -nobrowser -data=/var/lib/sonarr
TimeoutStopSec=20
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
+21
View File
@@ -0,0 +1,21 @@
Template: sonarr/owning_user
Type: string
Default: sonarr
Description: Sonarr user:
Specify the user that is used to run Sonarr. The user will be created if it does not already exist.
The default 'sonarr' should work fine for most users. You can specify the user group next.
Template: sonarr/owning_group
Type: string
Default: sonarr
Description: Sonarr group:
Specify the group that is used to run Sonarr. The group will be created if it does not already exist.
If the user doesn't already exist then this group will be used as the user's primary group.
Any media files created by Sonarr will be writeable by this group.
It's advisable to keep the group the same between download client, Sonarr and media centers.
Template: sonarr/config_directory
Type: string
Default: /var/lib/sonarr
Description: Config directory:
Specify the directory where Sonarr stores the internal database and metadata. Media content will be stored elsewhere.
+23
View File
@@ -0,0 +1,23 @@
FROM ubuntu:xenial AS builder
ENV DEBIAN_FRONTEND noninteractive
ENV MONO_VERSION 5.18
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF && \
echo "deb http://download.mono-project.com/repo/debian stable-xenial/snapshots/$MONO_VERSION main" > /etc/apt/sources.list.d/mono-official-stable.list && \
apt-get update && apt-get install -y \
devscripts build-essential tofrodos \
dh-make dh-systemd \
cli-common-dev \
mono-complete \
sqlite3 libcurl3 mediainfo
RUN apt-cache policy mono-complete
RUN apt-cache policy cli-common-dev
COPY debian-start.sh /debian-start.sh
RUN fromdos /debian-start.sh
WORKDIR /data
VOLUME [ "/data/sonarr_bin", "/data/build", "/data/output" ]
CMD /debian-start.sh
+18
View File
@@ -0,0 +1,18 @@
echo "Debian Build Dev bootstrap..."
export TEST_OUTPUT=/data/output
mkdir ${TEST_OUTPUT}
mkdir /data/temp
cp -rf /data/build/debian.sh /data/temp
cp -rf /data/build/debian /data/temp
cp -rf /data/sonarr_bin /data/temp/sonarr_bin
cd /data/temp
ls -al .
fromdos debian.sh
sh debian.sh
+459
View File
@@ -0,0 +1,459 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.
When we speak of free software, we are referring to freedom of use,
not price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard. To achieve this, non-free programs must be
allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
+28
View File
@@ -0,0 +1,28 @@
Code reused from duplicati, licensed under LGPL 2.1
Modified for Sonarr by Taloth Saldono
see here for the original source: https://github.com/duplicati/duplicati/tree/679981d29f8a6e445d3c1e6d41e72a673ffaa653/Installer/OSX
License
-------
Sonarr as a whole is licensed under GPL 3.0 as specified in the git repository root.
But to preserve the original intent of the duplicati project, the modified versions of the sources in this folder are dual licensed under LGPL 2.1 and GPL 3.0.
Note: This exception can be freely removed in any copy of Sonarr sources as per LGPL/GPL licensing terms.
A copy of the LGPL 2.1 license is included in the LICENSE.LGPL.md file.
Purpose
-------
The Launcher is a bootstrap/shim application that checks if the appropriate version of mono is installed and subsequently use it to execute Sonarr.
By using a separate application, instead of a shell script, this allows the user to assign certain operating system permissions to Sonarr specifically.
Compiling the Launcher
----------------------
You need an OSX installation with xcode
Then run compile.sh in a terminal
The generated dist/Launcher can be renamed to Sonarr and Sonarr.Update to serve as shims to run Sonarr.exe and Sonarr.Update.exe respectively.
BIN
View File
Binary file not shown.
+32
View File
@@ -0,0 +1,32 @@
#import "run-with-mono.h"
#import "PFMoveApplication.h"
int const MONO_VERSION_MAJOR = 5;
int const MONO_VERSION_MINOR = 20;
int main() {
@autoreleasepool {
// Use our own executable name so the same compiled binary to be used for forks
NSString * const FileName = NSProcessInfo.processInfo.arguments[0].lastPathComponent;
// Sonarr.Update.exe
NSString * const ASSEMBLY = [NSString stringWithFormat:@"%@.exe", FileName];
// Sonarr Update
NSString * const APP_NAME = [FileName stringByReplacingOccurrencesOfString:@"." withString:@" "];
// -sonarrupdate
NSString * const PROCESS_NAME = [NSString stringWithFormat:@"-%@", [FileName stringByReplacingOccurrencesOfString:@"." withString:@""].lowercaseString];
@try
{
PFMoveToApplicationsFolderIfNecessary();
}
@catch (NSException * ex)
{
NSLog(@"Translocation/Quarantine check failed, starting normally. Reason: %@", ex.reason);
}
return [RunWithMono runAssemblyWithMono:APP_NAME procnamesuffix:PROCESS_NAME assembly:ASSEMBLY major:MONO_VERSION_MAJOR minor:MONO_VERSION_MINOR];
}
}
@@ -0,0 +1,32 @@
//
// PFMoveApplication.h, version 1.24
// LetsMove
//
// Created by Andy Kim at Potion Factory LLC on 9/17/09
//
// The contents of this file are dedicated to the public domain.
#ifdef __cplusplus
extern "C" {
#endif
#import <Foundation/Foundation.h>
/**
Moves the running application to ~/Applications or /Applications if the former does not exist.
After the move, it relaunches app from the new location.
DOES NOT work for sandboxed applications.
Call from \c NSApplication's delegate method \c -applicationWillFinishLaunching: method. */
void PFMoveToApplicationsFolderIfNecessary(void);
/**
Check whether an app move is currently in progress.
Returns YES if LetsMove is currently in-progress trying to move the app to the Applications folder, or NO otherwise.
This can be used to work around a crash with apps that terminate after last window is closed.
See https://github.com/potionfactory/LetsMove/issues/64 for details. */
BOOL PFMoveIsInProgress(void);
#ifdef __cplusplus
}
#endif
@@ -0,0 +1,565 @@
//
// PFMoveApplication.m, version 1.24
// LetsMove
//
// Created by Andy Kim at Potion Factory LLC on 9/17/09
//
// The contents of this file are dedicated to the public domain.
#import "PFMoveApplication.h"
#import <AppKit/AppKit.h>
#import <Security/Security.h>
#import <dlfcn.h>
#import <sys/mount.h>
@interface LetsMove : NSObject
@end
@implementation LetsMove
+ (NSBundle *)bundle {
return [NSBundle bundleForClass:self];
}
@end
// Strings
// These are macros to be able to use custom i18n tools
#define _I10NS(nsstr) NSLocalizedStringFromTableInBundle(nsstr, @"MoveApplication", [LetsMove bundle], nil)
#define kStrMoveApplicationCouldNotMove _I10NS(@"Could not move to Applications folder")
#define kStrMoveApplicationQuestionTitle _I10NS(@"Move to Applications folder?")
#define kStrMoveApplicationQuestionTitleHome _I10NS(@"Move to Applications folder in your Home folder?")
#define kStrMoveApplicationQuestionMessage _I10NS(@"I can move myself to the Applications folder if you'd like.")
#define kStrMoveApplicationButtonMove _I10NS(@"Move to Applications Folder")
#define kStrMoveApplicationButtonDoNotMove _I10NS(@"Do Not Move")
#define kStrMoveApplicationQuestionInfoWillRequirePasswd _I10NS(@"Note that this will require an administrator password.")
#define kStrMoveApplicationQuestionInfoInDownloadsFolder _I10NS(@"This will keep your Downloads folder uncluttered.")
// Needs to be defined for compiling under 10.5 SDK
#ifndef NSAppKitVersionNumber10_5
#define NSAppKitVersionNumber10_5 949
#endif
// By default, we use a small control/font for the suppression button.
// If you prefer to use the system default (to match your other alerts),
// set this to 0.
#define PFUseSmallAlertSuppressCheckbox 1
static NSString *AlertSuppressKey = @"moveToApplicationsFolderAlertSuppress";
static BOOL MoveInProgress = NO;
// Helper functions
static NSString *PreferredInstallLocation(BOOL *isUserDirectory);
static BOOL IsInApplicationsFolder(NSString *path);
static BOOL IsInDownloadsFolder(NSString *path);
static BOOL IsApplicationAtPathRunning(NSString *path);
static BOOL IsApplicationAtPathNested(NSString *path);
static NSString *ContainingDiskImageDevice(NSString *path);
static BOOL Trash(NSString *path);
static BOOL DeleteOrTrash(NSString *path);
static BOOL AuthorizedInstall(NSString *srcPath, NSString *dstPath, BOOL *canceled);
static BOOL CopyBundle(NSString *srcPath, NSString *dstPath);
static NSString *ShellQuotedString(NSString *string);
static void Relaunch(NSString *destinationPath);
// Main worker function
void PFMoveToApplicationsFolderIfNecessary(void) {
// Make sure to do our work on the main thread.
// Apparently Electron apps need this for things to work properly.
if (![NSThread isMainThread]) {
dispatch_async(dispatch_get_main_queue(), ^{
PFMoveToApplicationsFolderIfNecessary();
});
return;
}
// Skip if user suppressed the alert before
if ([[NSUserDefaults standardUserDefaults] boolForKey:AlertSuppressKey]) return;
// Path of the bundle
NSString *bundlePath = [[NSBundle mainBundle] bundlePath];
// Check if the bundle is embedded in another application
BOOL isNestedApplication = IsApplicationAtPathNested(bundlePath);
// Skip if the application is already in some Applications folder,
// unless it's inside another app's bundle.
if (IsInApplicationsFolder(bundlePath) && !isNestedApplication) return;
// OK, looks like we'll need to do a move - set the status variable appropriately
MoveInProgress = YES;
// File Manager
NSFileManager *fm = [NSFileManager defaultManager];
// Are we on a disk image?
NSString *diskImageDevice = ContainingDiskImageDevice(bundlePath);
// Since we are good to go, get the preferred installation directory.
BOOL installToUserApplications = NO;
NSString *applicationsDirectory = PreferredInstallLocation(&installToUserApplications);
NSString *bundleName = [bundlePath lastPathComponent];
NSString *destinationPath = [applicationsDirectory stringByAppendingPathComponent:bundleName];
// Check if we need admin password to write to the Applications directory
BOOL needAuthorization = ([fm isWritableFileAtPath:applicationsDirectory] == NO);
// Check if the destination bundle is already there but not writable
needAuthorization |= ([fm fileExistsAtPath:destinationPath] && ![fm isWritableFileAtPath:destinationPath]);
// Setup the alert
NSAlert *alert = [[[NSAlert alloc] init] autorelease];
{
NSString *informativeText = nil;
[alert setMessageText:(installToUserApplications ? kStrMoveApplicationQuestionTitleHome : kStrMoveApplicationQuestionTitle)];
informativeText = kStrMoveApplicationQuestionMessage;
if (needAuthorization) {
informativeText = [informativeText stringByAppendingString:@" "];
informativeText = [informativeText stringByAppendingString:kStrMoveApplicationQuestionInfoWillRequirePasswd];
}
else if (IsInDownloadsFolder(bundlePath)) {
// Don't mention this stuff if we need authentication. The informative text is long enough as it is in that case.
informativeText = [informativeText stringByAppendingString:@" "];
informativeText = [informativeText stringByAppendingString:kStrMoveApplicationQuestionInfoInDownloadsFolder];
}
[alert setInformativeText:informativeText];
// Add accept button
[alert addButtonWithTitle:kStrMoveApplicationButtonMove];
// Add deny button
NSButton *cancelButton = [alert addButtonWithTitle:kStrMoveApplicationButtonDoNotMove];
[cancelButton setKeyEquivalent:[NSString stringWithFormat:@"%C", 0x1b]]; // Escape key
// Setup suppression button
[alert setShowsSuppressionButton:YES];
if (PFUseSmallAlertSuppressCheckbox) {
NSCell *cell = [[alert suppressionButton] cell];
[cell setControlSize:NSSmallControlSize];
[cell setFont:[NSFont systemFontOfSize:[NSFont smallSystemFontSize]]];
}
}
// Activate app -- work-around for focus issues related to "scary file from internet" OS dialog.
if (![NSApp isActive]) {
[NSApp activateIgnoringOtherApps:YES];
}
if ([alert runModal] == NSAlertFirstButtonReturn) {
NSLog(@"INFO -- Moving myself to the Applications folder");
// Move
if (needAuthorization) {
BOOL authorizationCanceled;
if (!AuthorizedInstall(bundlePath, destinationPath, &authorizationCanceled)) {
if (authorizationCanceled) {
NSLog(@"INFO -- Not moving because user canceled authorization");
MoveInProgress = NO;
return;
}
else {
NSLog(@"ERROR -- Could not copy myself to /Applications with authorization");
goto fail;
}
}
}
else {
// If a copy already exists in the Applications folder, put it in the Trash
if ([fm fileExistsAtPath:destinationPath]) {
// But first, make sure that it's not running
if (IsApplicationAtPathRunning(destinationPath)) {
// Give the running app focus and terminate myself
NSLog(@"INFO -- Switching to an already running version");
[[NSTask launchedTaskWithLaunchPath:@"/usr/bin/open" arguments:[NSArray arrayWithObject:destinationPath]] waitUntilExit];
MoveInProgress = NO;
exit(0);
}
else {
if (!Trash([applicationsDirectory stringByAppendingPathComponent:bundleName]))
goto fail;
}
}
if (!CopyBundle(bundlePath, destinationPath)) {
NSLog(@"ERROR -- Could not copy myself to %@", destinationPath);
goto fail;
}
}
// Trash the original app. It's okay if this fails.
// NOTE: This final delete does not work if the source bundle is in a network mounted volume.
// Calling rm or file manager's delete method doesn't work either. It's unlikely to happen
// but it'd be great if someone could fix this.
if (!isNestedApplication && diskImageDevice == nil && !DeleteOrTrash(bundlePath)) {
NSLog(@"WARNING -- Could not delete application after moving it to Applications folder");
}
// Relaunch.
Relaunch(destinationPath);
// Launched from within a disk image? -- unmount (if no files are open after 5 seconds,
// otherwise leave it mounted).
if (diskImageDevice && !isNestedApplication) {
NSString *script = [NSString stringWithFormat:@"(/bin/sleep 5 && /usr/bin/hdiutil detach %@) &", ShellQuotedString(diskImageDevice)];
[NSTask launchedTaskWithLaunchPath:@"/bin/sh" arguments:[NSArray arrayWithObjects:@"-c", script, nil]];
}
MoveInProgress = NO;
exit(0);
}
// Save the alert suppress preference if checked
else if ([[alert suppressionButton] state] == NSOnState) {
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:AlertSuppressKey];
}
MoveInProgress = NO;
return;
fail:
{
// Show failure message
alert = [[[NSAlert alloc] init] autorelease];
[alert setMessageText:kStrMoveApplicationCouldNotMove];
[alert runModal];
MoveInProgress = NO;
}
}
BOOL PFMoveIsInProgress() {
return MoveInProgress;
}
#pragma mark -
#pragma mark Helper Functions
static NSString *PreferredInstallLocation(BOOL *isUserDirectory) {
// Return the preferred install location.
// Assume that if the user has a ~/Applications folder, they'd prefer their
// applications to go there.
NSFileManager *fm = [NSFileManager defaultManager];
/*
NSArray *userApplicationsDirs = NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSUserDomainMask, YES);
if ([userApplicationsDirs count] > 0) {
NSString *userApplicationsDir = [userApplicationsDirs objectAtIndex:0];
BOOL isDirectory;
if ([fm fileExistsAtPath:userApplicationsDir isDirectory:&isDirectory] && isDirectory) {
// User Applications directory exists. Get the directory contents.
NSArray *contents = [fm contentsOfDirectoryAtPath:userApplicationsDir error:NULL];
// Check if there is at least one ".app" inside the directory.
for (NSString *contentsPath in contents) {
if ([[contentsPath pathExtension] isEqualToString:@"app"]) {
if (isUserDirectory) *isUserDirectory = YES;
return [userApplicationsDir stringByResolvingSymlinksInPath];
}
}
}
}
*/
// No user Applications directory in use. Return the machine local Applications directory
if (isUserDirectory) *isUserDirectory = NO;
return [[NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSLocalDomainMask, YES) lastObject] stringByResolvingSymlinksInPath];
}
static BOOL IsInApplicationsFolder(NSString *path) {
// Check all the normal Application directories
NSArray *applicationDirs = NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSAllDomainsMask, YES);
for (NSString *appDir in applicationDirs) {
if ([path hasPrefix:appDir]) return YES;
}
// Also, handle the case that the user has some other Application directory (perhaps on a separate data partition).
if ([[path pathComponents] containsObject:@"Applications"]) return YES;
return NO;
}
static BOOL IsInDownloadsFolder(NSString *path) {
NSArray *downloadDirs = NSSearchPathForDirectoriesInDomains(NSDownloadsDirectory, NSAllDomainsMask, YES);
for (NSString *downloadsDirPath in downloadDirs) {
if ([path hasPrefix:downloadsDirPath]) return YES;
}
return NO;
}
static BOOL IsApplicationAtPathRunning(NSString *bundlePath) {
bundlePath = [bundlePath stringByStandardizingPath];
#if MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_5
// Use the new API on 10.6 or higher to determine if the app is already running
if (floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_5) {
for (NSRunningApplication *runningApplication in [[NSWorkspace sharedWorkspace] runningApplications]) {
NSString *runningAppBundlePath = [[[runningApplication bundleURL] path] stringByStandardizingPath];
if ([runningAppBundlePath isEqualToString:bundlePath]) {
return YES;
}
}
return NO;
}
#endif
// Use the shell to determine if the app is already running on systems 10.5 or lower
NSString *script = [NSString stringWithFormat:@"/bin/ps ax -o comm | /usr/bin/grep %@/ | /usr/bin/grep -v grep >/dev/null", ShellQuotedString(bundlePath)];
NSTask *task = [NSTask launchedTaskWithLaunchPath:@"/bin/sh" arguments:[NSArray arrayWithObjects:@"-c", script, nil]];
[task waitUntilExit];
// If the task terminated with status 0, it means that the final grep produced 1 or more lines of output.
// Which means that the app is already running
return [task terminationStatus] == 0;
}
static BOOL IsApplicationAtPathNested(NSString *path) {
NSString *containingPath = [path stringByDeletingLastPathComponent];
NSArray *components = [containingPath pathComponents];
for (NSString *component in components) {
if ([[component pathExtension] isEqualToString:@"app"]) {
return YES;
}
}
return NO;
}
static NSString *ContainingDiskImageDevice(NSString *path) {
NSString *containingPath = [path stringByDeletingLastPathComponent];
struct statfs fs;
if (statfs([containingPath fileSystemRepresentation], &fs) || (fs.f_flags & MNT_ROOTFS))
return nil;
NSString *device = [[NSFileManager defaultManager] stringWithFileSystemRepresentation:fs.f_mntfromname length:strlen(fs.f_mntfromname)];
NSTask *hdiutil = [[[NSTask alloc] init] autorelease];
[hdiutil setLaunchPath:@"/usr/bin/hdiutil"];
[hdiutil setArguments:[NSArray arrayWithObjects:@"info", @"-plist", nil]];
[hdiutil setStandardOutput:[NSPipe pipe]];
[hdiutil launch];
[hdiutil waitUntilExit];
NSData *data = [[[hdiutil standardOutput] fileHandleForReading] readDataToEndOfFile];
NSDictionary *info = nil;
#if MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_5
if (floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_5) {
info = [NSPropertyListSerialization propertyListWithData:data options:NSPropertyListImmutable format:NULL error:NULL];
}
else {
#endif
#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_10
info = [NSPropertyListSerialization propertyListFromData:data mutabilityOption:NSPropertyListImmutable format:NULL errorDescription:NULL];
#endif
#if MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_5
}
#endif
if (![info isKindOfClass:[NSDictionary class]]) return nil;
NSArray *images = (NSArray *)[info objectForKey:@"images"];
if (![images isKindOfClass:[NSArray class]]) return nil;
for (NSDictionary *image in images) {
if (![image isKindOfClass:[NSDictionary class]]) return nil;
id systemEntities = [image objectForKey:@"system-entities"];
if (![systemEntities isKindOfClass:[NSArray class]]) return nil;
for (NSDictionary *systemEntity in systemEntities) {
if (![systemEntity isKindOfClass:[NSDictionary class]]) return nil;
NSString *devEntry = [systemEntity objectForKey:@"dev-entry"];
if (![devEntry isKindOfClass:[NSString class]]) return nil;
if ([devEntry isEqualToString:device])
return device;
}
}
return nil;
}
static BOOL Trash(NSString *path) {
BOOL result = NO;
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_8
if (floor(NSAppKitVersionNumber) >= NSAppKitVersionNumber10_8) {
result = [[NSFileManager defaultManager] trashItemAtURL:[NSURL fileURLWithPath:path] resultingItemURL:NULL error:NULL];
}
#endif
#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_11
if (!result) {
result = [[NSWorkspace sharedWorkspace] performFileOperation:NSWorkspaceRecycleOperation
source:[path stringByDeletingLastPathComponent]
destination:@""
files:[NSArray arrayWithObject:[path lastPathComponent]]
tag:NULL];
}
#endif
// As a last resort try trashing with AppleScript.
// This allows us to trash the app in macOS Sierra even when the app is running inside
// an app translocation image.
if (!result) {
NSAppleScript *appleScript = [[[NSAppleScript alloc] initWithSource:
[NSString stringWithFormat:@"\
set theFile to POSIX file \"%@\" \n\
tell application \"Finder\" \n\
move theFile to trash \n\
end tell", path]] autorelease];
NSDictionary *errorDict = nil;
NSAppleEventDescriptor *scriptResult = [appleScript executeAndReturnError:&errorDict];
if (scriptResult == nil) {
NSLog(@"Trash AppleScript error: %@", errorDict);
}
result = (scriptResult != nil);
}
if (!result) {
NSLog(@"ERROR -- Could not trash '%@'", path);
}
return result;
}
static BOOL DeleteOrTrash(NSString *path) {
NSError *error;
if ([[NSFileManager defaultManager] removeItemAtPath:path error:&error]) {
return YES;
}
else {
// Don't log warning if on Sierra and running inside App Translocation path
if ([path rangeOfString:@"/AppTranslocation/"].location == NSNotFound)
NSLog(@"WARNING -- Could not delete '%@': %@", path, [error localizedDescription]);
return Trash(path);
}
}
static BOOL AuthorizedInstall(NSString *srcPath, NSString *dstPath, BOOL *canceled) {
if (canceled) *canceled = NO;
// Make sure that the destination path is an app bundle. We're essentially running 'sudo rm -rf'
// so we really don't want to fuck this up.
if (![[dstPath pathExtension] isEqualToString:@"app"]) return NO;
// Do some more checks
if ([[dstPath stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length] == 0) return NO;
if ([[srcPath stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length] == 0) return NO;
int pid, status;
AuthorizationRef myAuthorizationRef;
// Get the authorization
OSStatus err = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment, kAuthorizationFlagDefaults, &myAuthorizationRef);
if (err != errAuthorizationSuccess) return NO;
AuthorizationItem myItems = {kAuthorizationRightExecute, 0, NULL, 0};
AuthorizationRights myRights = {1, &myItems};
AuthorizationFlags myFlags = (AuthorizationFlags)(kAuthorizationFlagInteractionAllowed | kAuthorizationFlagExtendRights | kAuthorizationFlagPreAuthorize);
err = AuthorizationCopyRights(myAuthorizationRef, &myRights, NULL, myFlags, NULL);
if (err != errAuthorizationSuccess) {
if (err == errAuthorizationCanceled && canceled)
*canceled = YES;
goto fail;
}
static OSStatus (*security_AuthorizationExecuteWithPrivileges)(AuthorizationRef authorization, const char *pathToTool,
AuthorizationFlags options, char * const *arguments,
FILE **communicationsPipe) = NULL;
if (!security_AuthorizationExecuteWithPrivileges) {
// On 10.7, AuthorizationExecuteWithPrivileges is deprecated. We want to still use it since there's no
// good alternative (without requiring code signing). We'll look up the function through dyld and fail
// if it is no longer accessible. If Apple removes the function entirely this will fail gracefully. If
// they keep the function and throw some sort of exception, this won't fail gracefully, but that's a
// risk we'll have to take for now.
security_AuthorizationExecuteWithPrivileges = (OSStatus (*)(AuthorizationRef, const char*,
AuthorizationFlags, char* const*,
FILE **)) dlsym(RTLD_DEFAULT, "AuthorizationExecuteWithPrivileges");
}
if (!security_AuthorizationExecuteWithPrivileges) goto fail;
// Delete the destination
{
char *args[] = {"-rf", (char *)[dstPath fileSystemRepresentation], NULL};
err = security_AuthorizationExecuteWithPrivileges(myAuthorizationRef, "/bin/rm", kAuthorizationFlagDefaults, args, NULL);
if (err != errAuthorizationSuccess) goto fail;
// Wait until it's done
pid = wait(&status);
if (pid == -1 || !WIFEXITED(status)) goto fail; // We don't care about exit status as the destination most likely does not exist
}
// Copy
{
char *args[] = {"-pR", (char *)[srcPath fileSystemRepresentation], (char *)[dstPath fileSystemRepresentation], NULL};
err = security_AuthorizationExecuteWithPrivileges(myAuthorizationRef, "/bin/cp", kAuthorizationFlagDefaults, args, NULL);
if (err != errAuthorizationSuccess) goto fail;
// Wait until it's done
pid = wait(&status);
if (pid == -1 || !WIFEXITED(status) || WEXITSTATUS(status)) goto fail;
}
AuthorizationFree(myAuthorizationRef, kAuthorizationFlagDefaults);
return YES;
fail:
AuthorizationFree(myAuthorizationRef, kAuthorizationFlagDefaults);
return NO;
}
static BOOL CopyBundle(NSString *srcPath, NSString *dstPath) {
NSFileManager *fm = [NSFileManager defaultManager];
NSError *error = nil;
if ([fm copyItemAtPath:srcPath toPath:dstPath error:&error]) {
return YES;
}
else {
NSLog(@"ERROR -- Could not copy '%@' to '%@' (%@)", srcPath, dstPath, error);
return NO;
}
}
static NSString *ShellQuotedString(NSString *string) {
return [NSString stringWithFormat:@"'%@'", [string stringByReplacingOccurrencesOfString:@"'" withString:@"'\\''"]];
}
static void Relaunch(NSString *destinationPath) {
// The shell script waits until the original app process terminates.
// This is done so that the relaunched app opens as the front-most app.
int pid = [[NSProcessInfo processInfo] processIdentifier];
// Command run just before running open /final/path
NSString *preOpenCmd = @"";
NSString *quotedDestinationPath = ShellQuotedString(destinationPath);
// OS X >=10.5:
// Before we launch the new app, clear xattr:com.apple.quarantine to avoid
// duplicate "scary file from the internet" dialog.
if (floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_5) {
// Add the -r flag on 10.6
preOpenCmd = [NSString stringWithFormat:@"/usr/bin/xattr -d -r com.apple.quarantine %@", quotedDestinationPath];
}
else {
preOpenCmd = [NSString stringWithFormat:@"/usr/bin/xattr -d com.apple.quarantine %@", quotedDestinationPath];
}
NSString *script = [NSString stringWithFormat:@"(while /bin/kill -0 %d >&/dev/null; do /bin/sleep 0.1; done; %@; /usr/bin/open %@) &", pid, preOpenCmd, quotedDestinationPath];
[NSTask launchedTaskWithLaunchPath:@"/bin/sh" arguments:[NSArray arrayWithObjects:@"-c", script, nil]];
}
+16
View File
@@ -0,0 +1,16 @@
#!/bin/bash
# -fobjc-arc: enables ARC
# -fmodules: enables modules so you can import with `@import AppKit;`
# -mmacosx-version-min=10.6: support older OS X versions, this might increase the binary size
if [ ! -d "../dist" ]; then mkdir ../dist; fi
clang PFMoveApplication.m -fno-objc-arc -fmodules -mmacosx-version-min=10.6 -c -o PFMoveApplication.o
clang run-with-mono.m Launcher.m PFMoveApplication.o -fobjc-arc -fmodules -mmacosx-version-min=10.6 -o ../dist/Launcher
rm PFMoveApplication.o
if [ "$1" == "install" ] && [ "$2" != "" ]; then
echo "Installing to $2"
cp ../dist/Launcher $2
chmod +x $2
fi
@@ -0,0 +1,11 @@
@import Foundation;
@import AppKit;
@interface RunWithMono : NSObject {
}
+ (void) openDownloadLink:(NSButton*)button;
+ (bool) showDownloadMonoDialog:(NSString *)appName major:(int)major minor:(int)minor;
+ (int) runAssemblyWithMono:(NSString *)appName procnamesuffix:(NSString *)procnamesuffix assembly:(NSString *)assembly major:(int) major minor:(int) minor;
@end
@@ -0,0 +1,258 @@
#import "run-with-mono.h"
@import Foundation;
@import AppKit;
NSString * const VERSION_TITLE = @"Cannot launch %@";
NSString * const VERSION_MSG = @"%@ requires the Mono Framework version %d.%d or later.";
NSString * const DOWNLOAD_URL = @"http://www.mono-project.com/download/stable/#download-mac";
// Helper method to see if the user has requested debug output
bool D() {
NSString* v = [[[NSProcessInfo processInfo]environment]objectForKey:@"DEBUG"];
if (v == nil || v.length == 0 || [v isEqual:@"0"] || [v isEqual:@"false"] || [v isEqual:@"f"])
return false;
return true;
}
// Wrapper method to invoke commandline operations and return the string output
NSString *runCommand(NSString *program, NSArray<NSString *> *arguments) {
NSPipe *pipe = [NSPipe pipe];
NSFileHandle *file = pipe.fileHandleForReading;
NSTask *task = [[NSTask alloc] init];
task.launchPath = program;
task.arguments = arguments;
task.standardOutput = pipe;
[task launch];
NSData *data = [file readDataToEndOfFile];
[file closeFile];
[task waitUntilExit];
NSString *cmdOutput = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
if (cmdOutput == nil || cmdOutput.length == 0)
return nil;
return [cmdOutput stringByTrimmingCharactersInSet:
[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}
// Checks if the Mono version is greater than or equal to the desired version
bool isValidMono(NSString *mono, int major, int minor) {
NSFileManager *fileManager = [NSFileManager defaultManager];
if (mono == nil)
return false;
if (![fileManager fileExistsAtPath:mono] || ![fileManager isExecutableFileAtPath:mono])
return false;
NSString *versionInfo = runCommand(mono, @[@"--version"]);
NSRange rg = [versionInfo rangeOfString:@"Mono JIT compiler version \\d+\\.\\d+" options:NSRegularExpressionSearch];
if (rg.location != NSNotFound) {
versionInfo = [versionInfo substringWithRange:rg];
if (D()) NSLog(@"Matched version: %@", versionInfo);
rg = [versionInfo rangeOfString:@"\\d+\\.\\d+" options:NSRegularExpressionSearch];
if (rg.location != NSNotFound) {
versionInfo = [versionInfo substringWithRange:rg];
if (D()) NSLog(@"Matched version: %@", versionInfo);
NSArray<NSString *> *versionComponents = [versionInfo componentsSeparatedByString:@"."];
if ([versionComponents[0] intValue] < major)
return false;
if ([versionComponents[0] intValue] == major && [versionComponents[1] intValue] < minor)
return false;
return true;
}
}
return false;
}
// Attempts to locate a mono with a valid version
NSString *findMono(int major, int minor) {
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *currentMono = runCommand(@"/usr/bin/which", @[@"mono"]);
if (D()) NSLog(@"which mono: %@", currentMono);
if (isValidMono(currentMono, major, minor)) {
if (D()) NSLog(@"Found mono with: %@", currentMono);
return currentMono;
}
NSArray *probepaths = @[@"/usr/local/bin/mono", @"/Library/Frameworks/Mono.framework/Versions/Current/bin/mono", @"/opt/local/bin/mono"];
for(NSString* probepath in probepaths) {
if (D()) NSLog(@"Trying mono with: %@", probepath);
if (isValidMono(probepath, major, minor)) {
if (D()) NSLog(@"Found mono with: %@", probepath);
return probepath;
}
}
if (D()) NSLog(@"Failed to find Mono, returning: %@", nil);
return nil;
}
// Check Bundle for quarantine
void checkBundle() {
NSString * const bundlePath = [[NSBundle mainBundle] bundlePath];
NSString * const attributes = runCommand(@"/usr/bin/xattr", @[@"-l", bundlePath]);
if (D()) NSLog(@"Attributes: %@", attributes);
if ([attributes containsString:@"com.apple.quarantine:"]) {
runCommand(@"/usr/bin/xattr", @[@"-dr", @"com.apple.quarantine", bundlePath]);
NSLog(@"Removed quarantine attribute from bundle");
}
}
@implementation RunWithMono
+ (void) openDownloadLink:(NSButton*)button {
if (D()) NSLog(@"Clicked Download");
runCommand(@"/usr/bin/open", @[DOWNLOAD_URL]);
}
// Shows the download dialog, prompting to download Mono
+ (bool) showDownloadMonoDialog:(NSString *)appName major:(int)major minor:(int)minor {
NSAlert *alert = [[NSAlert alloc] init];
[alert setInformativeText:[NSString stringWithFormat:VERSION_MSG, appName, major, minor]];
[alert setMessageText:[NSString stringWithFormat:VERSION_TITLE, appName]];
[alert addButtonWithTitle:@"Cancel"];
[alert addButtonWithTitle:@"Retry"];
[alert addButtonWithTitle:@"Download"];
NSButton *downloadButton = [[alert buttons] objectAtIndex:2];
[downloadButton setTarget:self];
[downloadButton setAction:@selector(openDownloadLink:)];
NSModalResponse btn = [alert runModal];
if (btn == NSAlertFirstButtonReturn) {
if (D()) NSLog(@"Clicked Cancel");
return true;
}
else if (btn == NSAlertSecondButtonReturn) {
if (D()) NSLog(@"Clicked Retry");
return false;
}
return true;
}
// Top-level method, finds Mono with an appropriate version and launches the assembly
+ (int) runAssemblyWithMono: (NSString *)appName procnamesuffix:(NSString *)procnamesuffix assembly:(NSString *)assembly major:(int) major minor:(int) minor {
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *assemblyPath;
bool found = false;
NSString *localPath = NSProcessInfo.processInfo.arguments[0].stringByDeletingLastPathComponent;
NSString *resourcePath = [[NSBundle mainBundle] resourcePath];
NSArray *paths = @[
localPath,
[NSString pathWithComponents:@[localPath, @"bin"]],
resourcePath,
[NSString pathWithComponents:@[resourcePath, @"bin"]]
];
for (NSString* entryFolder in paths) {
if (D()) NSLog(@"Checking folder: %@", entryFolder);
assemblyPath = [NSString pathWithComponents:@[entryFolder, assembly]];
if ([fileManager fileExistsAtPath:assemblyPath]) {
found = true;
break;
}
}
if (!found) {
NSLog(@"Assembly file not found");
return 1;
}
if (D()) NSLog(@"assemblyPath: %@", assemblyPath);
checkBundle();
NSString *currentMono = findMono(major, minor);
while (currentMono == nil) {
NSLog(@"No valid mono found!");
bool close = [self showDownloadMonoDialog:appName major:major minor:minor];
if (close)
return 1;
currentMono = findMono(major, minor);
}
// Setup dylib fallback loading
NSMutableArray * dylibPath = [NSMutableArray arrayWithObject:assemblyPath.stringByDeletingLastPathComponent];
// Update the PATH to use the specified mono version
if ([currentMono hasPrefix:@"/"])
{
NSString * curMonoBinDir = currentMono.stringByDeletingLastPathComponent;
NSString * curMonoDir = curMonoBinDir.stringByDeletingLastPathComponent;
NSString * curMonoLibDir = [NSString pathWithComponents:@[curMonoDir, @"lib"]];
NSString * curEnvPath = [NSString stringWithUTF8String:getenv("PATH")];
NSString * newEnvPath = [NSString stringWithFormat:@"%@:%@", curMonoBinDir, curEnvPath];
setenv("PATH", newEnvPath.UTF8String, 1);
[dylibPath addObject:curMonoLibDir];
NSLog(@"Added %@ to PATH", curMonoBinDir);
}
// Setup libsqlite?
/* if [[ -f '/opt/local/lib/libsqlite3.0.dylib' ]]; then
export DYLD_FALLBACK_LIBRARY_PATH="/opt/local/lib:$DYLD_FALLBACK_LIBRARY_PATH"
fi
*/
[dylibPath addObjectsFromArray:@[@"$HOME/lib", @"/usr/local/lib", @"/lib", @"/usr/lib"]];
setenv("DYLD_FALLBACK_LIBRARY_PATH", [dylibPath componentsJoinedByString:@":"].UTF8String, 1);
if (D()) NSLog(@"Running %@ --debug %@", currentMono, assemblyPath);
// Copy commandline arguments
NSMutableArray* arguments = [[NSMutableArray alloc] init];
// Disabled suffix for now coz it's confusing and not preserved on in-app restart
[arguments addObject:currentMono];
//[arguments addObject:[currentMono stringByAppendingString:procnamesuffix]];
[arguments addObject:@"--debug"];
[arguments addObjectsFromArray:[[NSProcessInfo processInfo] arguments]];
// replace the executable-path with the assembly path
[arguments replaceObjectAtIndex:2 withObject:assemblyPath];
// Try switch to mono using execv
char * cPath = strdup([currentMono UTF8String]);
char ** cArgs;
char ** pArgNext = cArgs = malloc(sizeof(*cArgs) * ([arguments count] + 1));
for (NSString *s in arguments) {
*pArgNext++ = strdup([s UTF8String]);
}
*pArgNext = NULL;
int ret = execv(cPath, cArgs);
if (ret != 0)
NSLog(@"Failed execv with errno @d", errno);
// execv failed, cleanup
pArgNext = cArgs;
for (NSString *s in arguments) {
free(*pArgNext++);
}
free(cArgs);
free(cPath);
return -1;
}
@end
@@ -23,11 +23,11 @@
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>APPL</string> <string>APPL</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>2.0</string> <string>3.0</string>
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>xmmd</string> <string>xmmd</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>2.0</string> <string>3.0</string>
<key>NSAppleScriptEnabled</key> <key>NSAppleScriptEnabled</key>
<string>YES</string> <string>YES</string>
</dict> </dict>
+62
View File
@@ -0,0 +1,62 @@
#!/bin/sh
#get the bundle's MacOS directory full path
DIR=$(cd "$(dirname "$0")"; pwd)
#change these values to match your app
EXE_PATH="$DIR/Sonarr.exe"
APPNAME="Sonarr"
#set up environment
if [[ -x '/opt/local/bin/mono' ]]; then
# Macports and mono-supplied installer path
export PATH="/opt/local/bin:$PATH"
elif [[ -x '/usr/local/bin/mono' ]]; then
# Homebrew-supplied path to mono
export PATH="/usr/local/bin:$PATH"
fi
export DYLD_FALLBACK_LIBRARY_PATH="$DIR"
if [ -e /Library/Frameworks/Mono.framework ]; then
MONO_FRAMEWORK_PATH=/Library/Frameworks/Mono.framework/Versions/Current
export PATH="$MONO_FRAMEWORK_PATH/bin:$PATH"
export DYLD_FALLBACK_LIBRARY_PATH="$DYLD_FALLBACK_LIBRARY_PATH:$MONO_FRAMEWORK_PATH/lib"
fi
if [[ -f '/opt/local/lib/libsqlite3.0.dylib' ]]; then
export DYLD_FALLBACK_LIBRARY_PATH="/opt/local/lib:$DYLD_FALLBACK_LIBRARY_PATH"
fi
export DYLD_FALLBACK_LIBRARY_PATH="$DYLD_FALLBACK_LIBRARY_PATH:$HOME/lib:/usr/local/lib:/lib:/usr/lib"
#mono version check
REQUIRED_MAJOR=4
REQUIRED_MINOR=6
VERSION_TITLE="Cannot launch $APPNAME"
VERSION_MSG="$APPNAME requires Mono Runtime Environment(MRE) $REQUIRED_MAJOR.$REQUIRED_MINOR or later."
DOWNLOAD_URL="http://www.mono-project.com/download/#download-mac"
MONO_VERSION="$(mono --version | grep 'Mono JIT compiler version ' | cut -f5 -d\ )"
# if [[ -o DEBUG ]]; then osascript -e "display dialog \"MONO_VERSION: $MONO_VERSION\""; fi
MONO_VERSION_MAJOR="$(echo $MONO_VERSION | cut -f1 -d.)"
MONO_VERSION_MINOR="$(echo $MONO_VERSION | cut -f2 -d.)"
if [ -z "$MONO_VERSION" ] \
|| [ $MONO_VERSION_MAJOR -lt $REQUIRED_MAJOR ] \
|| [ $MONO_VERSION_MAJOR -eq $REQUIRED_MAJOR -a $MONO_VERSION_MINOR -lt $REQUIRED_MINOR ]
then
osascript \
-e "set question to display dialog \"$VERSION_MSG\" with title \"$VERSION_TITLE\" buttons {\"Cancel\", \"Download...\"} default button 2" \
-e "if button returned of question is equal to \"Download...\" then open location \"$DOWNLOAD_URL\""
echo "$VERSION_TITLE"
echo "$VERSION_MSG"
exit 1
fi
MONO_EXEC="exec mono --debug"
#run app using mono
$MONO_EXEC "$EXE_PATH"
+7
View File
@@ -0,0 +1,7 @@
REM SET BUILD_NUMBER=1
REM SET BRANCH=develop
echo ##teamcity[progressStart 'Building setup file']
inno\ISCC.exe sonarr.iss
echo ##teamcity[progressFinish 'Building setup file']
echo ##teamcity[publishArtifacts 'distribution\windows\setup\output\*.exe']

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 51 KiB

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

+103
View File
@@ -0,0 +1,103 @@
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
#define AppName "Sonarr"
#define AppPublisher "Team Sonarr"
#define AppURL "https://sonarr.tv/"
#define ForumsURL "https://forums.sonarr.tv/"
#define AppExeName "Sonarr.exe"
#define BuildNumber "3.0"
#define BuildNumber GetEnv('BUILD_NUMBER')
#define BranchName GetEnv('BRANCH')
[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{56C1065D-3523-4025-B76D-6F73F67F7F71}
AppName={#AppName}
AppVersion=3.0
AppPublisher={#AppPublisher}
AppPublisherURL={#AppURL}
AppSupportURL={#ForumsURL}
AppUpdatesURL={#AppURL}
UsePreviousAppDir=no
DefaultDirName={commonappdata}\Sonarr\bin
DisableDirPage=yes
DefaultGroupName={#AppName}
DisableProgramGroupPage=yes
OutputBaseFilename=Sonarr.{#BranchName}.{#BuildNumber}.windows
SolidCompression=yes
AppCopyright=Creative Commons 3.0 License
AllowUNCPath=False
UninstallDisplayIcon={app}\Sonarr.exe
DisableReadyPage=True
CompressionThreads=2
Compression=lzma2/normal
AppContact={#ForumsURL}
VersionInfoVersion={#BuildNumber}
SetupLogging=yes
[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
[Tasks]
Name: "desktopIcon"; Description: "{cm:CreateDesktopIcon}"
Name: "windowsService"; Description: "Install Windows Service (Starts when the computer starts as the LocalService user, you will need to change the user to access network shares)"; GroupDescription: "Start automatically"; Flags: exclusive unchecked
Name: "startupShortcut"; Description: "Create shortcut in Startup folder (Starts when you log into Windows)"; GroupDescription: "Start automatically"; Flags: exclusive
Name: "none"; Description: "Do not start automatically"; GroupDescription: "Start automatically"; Flags: exclusive unchecked
[Files]
Source: "..\..\..\_output_windows\Sonarr.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "..\..\..\_output_windows\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[Icons]
Name: "{group}\{#AppName}"; Filename: "{app}\{#AppExeName}"; Parameters: "/icon"
Name: "{commondesktop}\{#AppName}"; Filename: "{app}\{#AppExeName}"; Parameters: "/icon"; Tasks: desktopIcon
Name: "{userstartup}\{#AppName}"; Filename: "{app}\Sonarr.exe"; WorkingDir: "{app}"; Tasks: startupShortcut
[InstallDelete]
Name: "{commonappdata}\NzbDrone\bin"; Type: filesandordirs
[Run]
Filename: "{app}\Sonarr.Console.exe"; StatusMsg: "Removing previous Windows Service"; Parameters: "/u"; Flags: runhidden waituntilterminated;
Filename: "{app}\Sonarr.Console.exe"; Description: "Enable Access from Other Devices"; StatusMsg: "Enabling Remote access"; Parameters: "/registerurl"; Flags: postinstall runascurrentuser runhidden waituntilterminated; Tasks: startupShortcut none;
Filename: "{app}\Sonarr.Console.exe"; StatusMsg: "Installing Windows Service"; Parameters: "/i"; Flags: runhidden waituntilterminated; Tasks: windowsService
Filename: "{app}\Sonarr.exe"; Description: "Open Sonarr Web UI"; Flags: postinstall skipifsilent nowait; Tasks: windowsService;
Filename: "{app}\Sonarr.exe"; Description: "Start Sonarr"; Flags: postinstall skipifsilent nowait; Tasks: startupShortcut none;
[UninstallRun]
Filename: "{app}\Sonarr.Console.exe"; Parameters: "/u"; Flags: runhidden waituntilterminated skipifdoesntexist
[Code]
function PrepareToInstall(var NeedsRestart: Boolean): String;
var
ResultCode: Integer;
begin
Exec('net', 'stop nzbdrone', '', 0, ewWaitUntilTerminated, ResultCode)
Exec('sc', 'delete nzbdrone', '', 0, ewWaitUntilTerminated, ResultCode)
end;
function Framework472IsNotInstalled(): Boolean;
var
bSuccess: Boolean;
regVersion: Cardinal;
begin
Result := True;
bSuccess := RegQueryDWordValue(HKLM, 'Software\Microsoft\NET Framework Setup\NDP\v4\Full', 'Release', regVersion);
if (True = bSuccess) and (regVersion >= 461808) then begin
Result := False;
end;
end;
function InitializeSetup(): Boolean;
begin
if Framework472IsNotInstalled() then begin
MsgBox('Sonarr requires Microsoft .NET Framework 4.7.2 or higher.'#13#13
'Please use Windows Update to install this version'#13
'or download it from https://dotnet.microsoft.com/download/dotnet-framework.', mbInformation, MB_OK);
result := false;
end else
result := true;
end;
+22
View File
@@ -0,0 +1,22 @@
FROM ubuntu:xenial
ENV DEBIAN_FRONTEND noninteractive
ARG MONO_VERSION=5.20
ARG MONO_URL=stable-xenial/snapshots/$MONO_VERSION
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF && \
echo "deb http://download.mono-project.com/repo/debian $MONO_URL main" > /etc/apt/sources.list.d/mono-official-stable.list && \
apt-get update && apt-get install -y \
tofrodos tzdata \
mono-complete \
sqlite3 mediainfo \
&& rm -rf /var/lib/apt/lists/*
COPY startup.sh /startup.sh
RUN fromdos /startup.sh
WORKDIR /data/
VOLUME ["/data/_tests_linux", "/data/_output_linux", "/data/_tests_results"]
CMD bash /startup.sh
+29
View File
@@ -0,0 +1,29 @@
FROM ubuntu:xenial
ENV DEBIAN_FRONTEND noninteractive
ARG MONO_VERSION=5.20
ARG MONO_URL=stable-xenial/snapshots/$MONO_VERSION
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF && \
echo "deb http://download.mono-project.com/repo/debian $MONO_URL main" > /etc/apt/sources.list.d/mono-official-stable.list && \
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 2009837CBFFD68F45BC180471F4F90DE2A9B4BF8 && \
echo "deb http://apt.sonarr.tv/ubuntu xenial main" > /etc/apt/sources.list.d/sonarr.list && \
apt-get update && apt-get install -y \
tofrodos tzdata \
sonarr \
sqlite3 mediainfo \
&& rm -rf /var/lib/apt/lists/*
RUN apt-get update && apt-get install -y \
libmono-system-runtime4.0-cil \
libmono-system-net-http4.0-cil \
&& rm -rf /var/lib/apt/lists/*
COPY startup.sh /startup.sh
RUN fromdos /startup.sh
WORKDIR /data/
VOLUME ["/data/_tests_linux", "/data/_output_linux", "/data/_tests_results"]
CMD bash /startup.sh
+15
View File
@@ -0,0 +1,15 @@
echo "Preparing Test..."
mkdir -p /data/test
cp -r /data/_tests_linux/* /data/test/
cp -r /data/_output_linux /data/test/bin
cd /data/test
runTest()
{
bash test.sh Linux $1
cp TestResult.xml /data/_tests_results/TestResult_$1.xml
}
runTest Integration
runTest Unit
+121
View File
@@ -0,0 +1,121 @@
opt_parallel=
opt_version=
opt_mode=both
while getopts 'pv:m:r?h' c
do
case $c in
p) opt_parallel=1 ;;
v) opt_version=$OPTARG ;;
m) opt_mode=$OPTARG ;;
r) opt_report=1 ;;
?|h) printf "Usage: %s [-p] [-v mono-ver] [-m sonarr|complete]\n" $0
printf " -p run parallel\n"
printf " -v run specified mono version\n"
printf " -m run only mono-'complete' or 'sonarr' package variants\n"
printf " -r only report\n"
exit 2
esac
done
# NOTE:
# each container has a 1gb tmpfs mounted since it greatly speeds up the normally intensive db operations
# make sure that the docker host has enough memory to handle about ~300 MB per container, so 2-3 GB total
# excess goes to the swap and will slow down the entire system
MONO_VERSIONS=""
# Future versions
MONO_VERSIONS="$MONO_VERSIONS 6.10=preview-xenial"
# Semi-Supported versions
MONO_VERSIONS="$MONO_VERSIONS 6.8 6.6 6.4 6.0"
# Supported versions
MONO_VERSIONS="$MONO_VERSIONS 5.20 5.18"
# Legacy unsupported versions (but appear to work)
MONO_VERSIONS="$MONO_VERSIONS 5.16 5.14 5.12"
# Legacy unsupported versions
MONO_VERSIONS="$MONO_VERSIONS 5.10 5.8 5.4 5.0"
#MONO_VERSIONS="$MONO_VERSIONS 4.8=stable-wheezy/snapshots/4.8"
if [ "$opt_version" != "" ]; then
MONO_VERSIONS="$opt_version"
fi
mkdir -p ${PWD}/../../_tests_results
prepOne() {
local MONO_VERSION_PAIR=$1
MONO_VERSION_SPLIT=(${MONO_VERSION_PAIR//=/ })
MONO_VERSION=${MONO_VERSION_SPLIT[0]}
MONO_URL=${MONO_VERSION_SPLIT[1]:-"stable-xenial/snapshots/$MONO_VERSION"}
echo "Building Test Docker for mono $MONO_VERSION"
if [ "$opt_mode" != "sonarr" ]; then
docker build -t sonarr-test-$MONO_VERSION --build-arg MONO_VERSION=$MONO_VERSION --build-arg MONO_URL=$MONO_URL --file mono/complete/Dockerfile mono
fi
if [ "$opt_mode" != "complete" ] && [ "$MONO_VERSION" != "5.0" ]; then
docker build -t sonarr-test-$MONO_VERSION-sonarr --build-arg MONO_VERSION=$MONO_VERSION --build-arg MONO_URL=$MONO_URL --file mono/sonarr/Dockerfile mono
fi
}
runOne() {
local MONO_VERSION_PAIR=$1
MONO_VERSION_SPLIT=(${MONO_VERSION_PAIR//=/ })
MONO_VERSION=${MONO_VERSION_SPLIT[0]}
echo "Running Test Docker for mono $MONO_VERSION"
if [ "$opt_mode" != "sonarr" ]; then
dockerArgs="--rm"
dockerArgs="$dockerArgs -v /${PWD}/../../_tests_linux:/data/_tests_linux:ro"
dockerArgs="$dockerArgs -v /${PWD}/../../_output_linux:/data/_output_linux:ro"
dockerArgs="$dockerArgs -v /${PWD}/../../_tests_results/mono-$MONO_VERSION:/data/_tests_results"
dockerArgs="$dockerArgs --mount type=tmpfs,destination=//data/test,tmpfs-size=1g"
docker run $dockerArgs sonarr-test-$MONO_VERSION
fi
if [ "$opt_mode" != "complete" ] && [ "$MONO_VERSION" != "5.0" ]; then
dockerArgs="--rm"
dockerArgs="$dockerArgs -v /${PWD}/../../_tests_linux:/data/_tests_linux:ro"
dockerArgs="$dockerArgs -v /${PWD}/../../_output_linux:/data/_output_linux:ro"
dockerArgs="$dockerArgs -v /${PWD}/../../_tests_results/mono-$MONO_VERSION-sonarr:/data/_tests_results"
dockerArgs="$dockerArgs --mount type=tmpfs,destination=//data/test,tmpfs-size=1g"
docker run $dockerArgs sonarr-test-$MONO_VERSION-sonarr
fi
echo "Finished Test Docker for mono $MONO_VERSION"
}
if [ "$opt_report" != "1" ]; then
if [ "$opt_parallel" == "1" ]; then
for MONO_VERSION_PAIR in $MONO_VERSIONS; do
prepOne "$MONO_VERSION_PAIR"
done
fi
for MONO_VERSION_PAIR in $MONO_VERSIONS; do
if [ "$opt_parallel" == "1" ]; then
runOne "$MONO_VERSION_PAIR" &
else
prepOne "$MONO_VERSION_PAIR"
runOne "$MONO_VERSION_PAIR"
fi
done
if [ "$opt_parallel" == "1" ]; then
echo "Waiting for all runs to finish"
wait
echo "Finished all runs"
fi
fi
grep "<test-run" ../../_tests_results/**/*.xml | sed -r 's/.*?mono-([0-9.]+(-s)?).*?_([IU]).*?\.xml.*?failed="([0-9]*)".*/\1\t\3:\tfailed \4/g' | sort -V -t.
+25
View File
@@ -0,0 +1,25 @@
{
"remove-empty-rulesets": true,
"always-semicolon": true,
"color-case": "lower",
"block-indent": " ",
"color-shorthand": false,
"element-case": "lower",
"eof-newline": true,
"leading-zero": true,
"quotes": "double",
"sort-order-fallback": "abc",
"space-before-colon": "",
"space-after-colon": " ",
"space-before-combinator": " ",
"space-after-combinator": " ",
"space-between-declarations": "\n",
"space-before-opening-brace": " ",
"space-after-opening-brace": "\n",
"space-after-selector-delimiter": " ",
"space-before-selector-delimiter": "",
"space-before-closing-brace": "\n",
"strip-spaces": true,
"tab-size": true,
"unitless-zero": false
}
+335
View File
@@ -0,0 +1,335 @@
{
"indent": {
"value": " ",
"FunctionExpression": 1,
"ArrayExpression": 1,
"ObjectExpression": 1
},
"lineBreak": {
"value": "\n",
"before": {
"ArrayPatternClosing": 0,
"ArrayPatternComma": 0,
"ArrayPatternOpening": 0,
"ArrowFunctionExpressionArrow": 0,
"ArrowFunctionExpressionClosingBrace": ">=1",
"ArrowFunctionExpressionOpeningBrace": 0,
"AssignmentExpression": ">=1",
"AssignmentOperator": 0,
"BlockStatement": 0,
"BreakKeyword": ">=1",
"CallExpression": -1,
"CallExpressionClosingParentheses": -1,
"CallExpressionOpeningParentheses": 0,
"CatchClosingBrace": ">=1",
"CatchKeyword": 0,
"CatchOpeningBrace": 0,
"ClassDeclaration": ">=1",
"ClassDeclarationClosingBrace": ">=1",
"ClassDeclarationOpeningBrace": 0,
"ConditionalExpression": ">=1",
"DeleteOperator": ">=1",
"DoWhileStatement": ">=1",
"DoWhileStatementClosingBrace": ">=1",
"DoWhileStatementOpeningBrace": 0,
"ElseIfStatement": 0,
"ElseIfStatementClosingBrace": ">=1",
"ElseIfStatementOpeningBrace": 0,
"ElseStatement": 0,
"ElseStatementClosingBrace": ">=1",
"ElseStatementOpeningBrace": 0,
"EmptyStatement": -1,
"EndOfFile": -1,
"FinallyClosingBrace": ">=1",
"FinallyKeyword": -1,
"FinallyOpeningBrace": 0,
"ForInStatement": ">=1",
"ForInStatementClosingBrace": ">=1",
"ForInStatementExpressionClosing": 0,
"ForInStatementExpressionOpening": 0,
"ForInStatementOpeningBrace": 0,
"ForStatement": ">=1",
"ForStatementClosingBrace": ">=1",
"ForStatementExpressionClosing": "<2",
"ForStatementExpressionOpening": 0,
"ForStatementOpeningBrace": 0,
"FunctionDeclaration": ">=1",
"FunctionDeclarationClosingBrace": ">=1",
"FunctionDeclarationOpeningBrace": 0,
"FunctionExpression": 0,
"FunctionExpressionClosingBrace": 1,
"FunctionExpressionOpeningBrace":0,
"IIFEClosingParentheses": 0,
"IfStatement": ">=1",
"IfStatementClosingBrace": ">=1",
"IfStatementOpeningBrace": 0,
"LogicalExpression": -1,
"MemberExpressionClosing": 0,
"MemberExpressionOpening": 0,
"MemberExpressionPeriod": -1,
"MethodDefinition": ">=1",
"ObjectExpressionClosingBrace": "<=1",
"ObjectPatternClosingBrace": 0,
"ObjectPatternComma": 0,
"ObjectPatternOpeningBrace": 0,
"ParameterDefault": 0,
"Property": "<=2",
"PropertyValue": 0,
"ReturnStatement": -1,
"SwitchClosingBrace": ">=1",
"SwitchOpeningBrace": 0,
"ThisExpression": -1,
"ThrowStatement": ">=1",
"TryClosingBrace": ">=1",
"TryKeyword": -1,
"TryOpeningBrace": 0,
"VariableDeclaration": ">=1",
"VariableDeclarationSemiColon": 0,
"VariableDeclarationWithoutInit": ">=1",
"VariableName": ">=1",
"VariableValue": 0,
"WhileStatement": ">=1",
"WhileStatementClosingBrace": ">=1",
"WhileStatementOpeningBrace": 0
},
"after": {
"ArrayPatternClosing": 0,
"ArrayPatternComma": 0,
"ArrayPatternOpening": 0,
"ArrowFunctionExpressionArrow": 0,
"ArrowFunctionExpressionClosingBrace": -1,
"ArrowFunctionExpressionOpeningBrace": ">=1",
"AssignmentExpression": ">=1",
"AssignmentOperator": 0,
"BlockStatement": 0,
"BreakKeyword": -1,
"CallExpression": -1,
"CallExpressionClosingParentheses": -1,
"CallExpressionOpeningParentheses": -1,
"CatchClosingBrace": ">=0",
"CatchKeyword": 0,
"CatchOpeningBrace": ">=1",
"ClassDeclaration": ">=1",
"ClassDeclarationClosingBrace": ">=1",
"ClassDeclarationOpeningBrace": ">=1",
"ConditionalExpression": ">=1",
"DeleteOperator": ">=1",
"DoWhileStatement": ">=1",
"DoWhileStatementClosingBrace": 0,
"DoWhileStatementOpeningBrace": ">=1",
"ElseIfStatement": ">=1",
"ElseIfStatementClosingBrace": ">=1",
"ElseIfStatementOpeningBrace": ">=1",
"ElseStatement": ">=1",
"ElseStatementClosingBrace": ">=1",
"ElseStatementOpeningBrace": ">=1",
"EmptyStatement": -1,
"FinallyClosingBrace": ">=1",
"FinallyKeyword": -1,
"FinallyOpeningBrace": ">=1",
"ForInStatement": ">=1",
"ForInStatementClosingBrace": ">=1",
"ForInStatementExpressionClosing": -1,
"ForInStatementExpressionOpening": "<2",
"ForInStatementOpeningBrace": ">=1",
"ForStatement": ">=1",
"ForStatementClosingBrace": ">=1",
"ForStatementExpressionClosing": -1,
"ForStatementExpressionOpening": "<2",
"ForStatementOpeningBrace": ">=1",
"FunctionDeclaration": ">=1",
"FunctionDeclarationClosingBrace": ">=1",
"FunctionDeclarationOpeningBrace": ">=1",
"FunctionExpression": 0,
"FunctionExpressionClosingBrace": -1,
"FunctionExpressionOpeningBrace": 1,
"IIFEOpeningParentheses": 0,
"IfStatement": ">=1",
"IfStatementClosingBrace": ">=1",
"IfStatementOpeningBrace": ">=1",
"LogicalExpression": -1,
"MemberExpressionClosing": 0,
"MemberExpressionOpening": 0,
"MemberExpressionPeriod": 0,
"MethodDefinition": ">=1",
"ObjectExpressionOpeningBrace": "<=1",
"ObjectPatternClosingBrace": 0,
"ObjectPatternComma": 0,
"ObjectPatternOpeningBrace": 0,
"ParameterDefault": 0,
"Property": -1,
"PropertyName": 0,
"ReturnStatement": -1,
"SwitchCaseColon": ">=1",
"SwitchClosingBrace": ">=1",
"SwitchOpeningBrace": ">=1",
"ThisExpression": 0,
"ThrowStatement": ">=1",
"TryClosingBrace": 0,
"TryKeyword": -1,
"TryOpeningBrace": ">=1",
"VariableDeclaration": ">=1",
"VariableDeclarationSemiColon": ">=1",
"VariableValue": -1,
"WhileStatement": ">=1",
"WhileStatementClosingBrace": ">=1",
"WhileStatementOpeningBrace": ">=1"
}
},
"whiteSpace": {
"value": " ",
"removeTrailing": 1,
"before": {
"ArgumentComma": 0,
"ArgumentList": 0,
"ArgumentListArrayExpression": 0,
"ArgumentListFunctionExpression": 1,
"ArgumentListObjectExpression": 0,
"ArrayExpressionClosing": 0,
"ArrayExpressionComma": 0,
"ArrayExpressionOpening": 1,
"AssignmentOperator": 1,
"BinaryExpression": 0,
"BinaryExpressionOperator": 1,
"BlockComment": 1,
"CallExpression": 1,
"CatchClosingBrace": 1,
"CatchKeyword": 1,
"CatchOpeningBrace": 1,
"CatchParameterList": 0,
"CommaOperator": 0,
"ConditionalExpressionAlternate": 1,
"ConditionalExpressionConsequent": 1,
"DoWhileStatementClosingBrace": 1,
"DoWhileStatementConditional": 1,
"DoWhileStatementOpeningBrace": 1,
"ElseIfStatementClosingBrace": 1,
"ElseIfStatementOpeningBrace": 1,
"ElseStatementClosingBrace": 1,
"ElseStatementOpeningBrace": 1,
"EmptyStatement": 0,
"ExpressionClosingParentheses": 0,
"FinallyClosingBrace": 1,
"FinallyKeyword": -1,
"FinallyOpeningBrace": 1,
"ForInStatement": 1,
"ForInStatementClosingBrace": 1,
"ForInStatementExpressionClosing": 0,
"ForInStatementExpressionOpening": 1,
"ForInStatementOpeningBrace": 1,
"ForStatement": 1,
"ForStatementClosingBrace": 1,
"ForStatementExpressionClosing": 0,
"ForStatementExpressionOpening": 1,
"ForStatementOpeningBrace": 1,
"ForStatementSemicolon": 0,
"FunctionDeclarationClosingBrace": 1,
"FunctionDeclarationOpeningBrace": 1,
"FunctionExpressionClosingBrace": 1,
"FunctionExpressionOpeningBrace": 1,
"IfStatementClosingBrace": 1,
"IfStatementConditionalClosing": 0,
"IfStatementConditionalOpening": 1,
"IfStatementOpeningBrace": 1,
"LineComment": 1,
"LogicalExpressionOperator": 1,
"MemberExpressionClosing": 0,
"ObjectExpressionClosingBrace": 1,
"ParameterComma": 0,
"ParameterList": 0,
"Property": 1,
"PropertyName": 1,
"PropertyValue": 1,
"SwitchDiscriminantClosing": 0,
"SwitchDiscriminantOpening": 1,
"ThrowKeyword": 1,
"TryClosingBrace": 1,
"TryKeyword": -1,
"TryOpeningBrace": 1,
"UnaryExpressionOperator": 0,
"VariableName": 1,
"VariableValue": 1,
"WhileStatementClosingBrace": 1,
"WhileStatementConditionalClosing": 0,
"WhileStatementConditionalOpening": 1,
"WhileStatementOpeningBrace": 1
},
"after": {
"ArgumentComma": 1,
"ArgumentList": 0,
"ArgumentListArrayExpression": 1,
"ArgumentListFunctionExpression": 1,
"ArgumentListObjectExpression": 0,
"ArrayExpressionClosing": 0,
"ArrayExpressionComma": 1,
"ArrayExpressionOpening": 0,
"AssignmentOperator": 1,
"BinaryExpression": 0,
"BinaryExpressionOperator": 1,
"BlockComment": 1,
"CallExpression": 0,
"CatchClosingBrace": 1,
"CatchKeyword": 1,
"CatchOpeningBrace": 1,
"CatchParameterList": 0,
"CommaOperator": 1,
"ConditionalExpressionConsequent": 1,
"ConditionalExpressionTest": 1,
"DoWhileStatementBody": 1,
"DoWhileStatementClosingBrace": 1,
"DoWhileStatementOpeningBrace": 1,
"ElseIfStatementClosingBrace": 1,
"ElseIfStatementOpeningBrace": 1,
"ElseStatementClosingBrace": 1,
"ElseStatementOpeningBrace": 1,
"EmptyStatement": 0,
"ExpressionOpeningParentheses": 0,
"FinallyClosingBrace": 1,
"FinallyKeyword": -1,
"FinallyOpeningBrace": 1,
"ForInStatement": 1,
"ForInStatementClosingBrace": 1,
"ForInStatementExpressionClosing": 1,
"ForInStatementExpressionOpening": 0,
"ForInStatementOpeningBrace": 1,
"ForStatement": 1,
"ForStatementClosingBrace": 1,
"ForStatementExpressionClosing": 1,
"ForStatementExpressionOpening": 0,
"ForStatementOpeningBrace": 1,
"ForStatementSemicolon": 1,
"FunctionDeclarationClosingBrace": 0,
"FunctionDeclarationOpeningBrace": 0,
"FunctionExpressionClosingBrace": 0,
"FunctionExpressionOpeningBrace": 0,
"FunctionName": 0,
"FunctionReservedWord": 0,
"IfStatementClosingBrace": 1,
"IfStatementConditionalClosing": 0,
"IfStatementConditionalOpening": 0,
"IfStatementOpeningBrace": 1,
"LogicalExpressionOperator": 1,
"MemberExpressionOpening": 0,
"ObjectExpressionClosingBrace": 0,
"ObjectExpressionOpeningBrace": 1,
"ParameterComma": 1,
"ParameterList": 0,
"PropertyName": 0,
"PropertyValue": 0,
"SwitchDiscriminantClosing": 1,
"SwitchDiscriminantOpening": 0,
"ThrowKeyword": 1,
"TryClosingBrace": 1,
"TryKeyword": -1,
"TryOpeningBrace": 1,
"UnaryExpressionOperator": 0,
"VariableName": 1,
"WhileStatementClosingBrace": 1,
"WhileStatementConditionalClosing": 1,
"WhileStatementConditionalOpening": 0,
"WhileStatementOpeningBrace": 1
}
}
}
+1
View File
@@ -0,0 +1 @@
**/JsLibraries/**
+293
View File
@@ -0,0 +1,293 @@
{
"parser": "babel-eslint",
"env": {
"browser": true,
"commonjs": true,
"node": true,
"es6": true
},
"globals": {
"expect": false,
"chai": false,
"sinon": false
},
"parserOptions": {
"ecmaVersion": 6,
"sourceType": "module",
"ecmaFeatures": {
"modules": true,
"impliedStrict": true
}
},
"plugins": [
"filenames",
"react"
],
"settings": {
"react": {
"version": "detect"
}
},
"rules": {
"filenames/match-exported": ["error"],
# ECMAScript 6
"arrow-body-style": [0],
"arrow-parens": ["error", "always"],
"arrow-spacing": ["error", { "before": true, "after": true }],
"constructor-super": "error",
"generator-star-spacing": "off",
"no-class-assign": "error",
"no-confusing-arrow": "error",
"no-const-assign": "error",
"no-dupe-class-members": "error",
"no-duplicate-imports": "error",
"no-new-symbol": "error",
"no-this-before-super": "error",
"no-useless-escape": "error",
"no-useless-computed-key": "error",
"no-useless-constructor": "error",
"no-var": "warn",
"object-shorthand": ["error", "properties"],
"prefer-arrow-callback": "error",
"prefer-const": "warn",
"prefer-reflect": "off",
"prefer-rest-params": "off",
"prefer-spread": "warn",
"prefer-template": "error",
"require-yield": "off",
"template-curly-spacing": ["error", "never"],
"yield-star-spacing": "off",
# Possible Errors
"comma-dangle": "error",
"no-cond-assign": "error",
"no-console": "off",
"no-constant-condition": "warn",
"no-control-regex": "error",
"no-debugger": "off",
"no-dupe-args": "error",
"no-dupe-keys": "error",
"no-duplicate-case": "error",
"no-empty": "warn",
"no-empty-character-class": "error",
"no-ex-assign": "error",
"no-extra-boolean-cast": "error",
"no-extra-parens": ["error", "functions"],
"no-extra-semi": "error",
"no-func-assign": "error",
"no-inner-declarations": "error",
"no-invalid-regexp": "error",
"no-irregular-whitespace": "error",
"no-negated-in-lhs": "error",
"no-obj-calls": "error",
"no-regex-spaces": "error",
"no-sparse-arrays": "error",
"no-unexpected-multiline": "error",
"no-unreachable": "warn",
"no-unsafe-finally": "error",
"use-isnan": "error",
"valid-jsdoc": "off",
"valid-typeof": "error",
# Best Practices
"accessor-pairs": "off",
"array-callback-return": "warn",
"block-scoped-var": "warn",
"consistent-return": "off",
"curly": "error",
"default-case": "error",
"dot-location": ["error", "property"],
"dot-notation": "error",
"eqeqeq": ["error", "smart"],
"guard-for-in": "error",
"no-alert": "warn",
"no-caller": "error",
"no-case-declarations": "error",
"no-div-regex": "error",
"no-else-return": "error",
"no-empty-function": ["error", {"allow": ["arrowFunctions"]}],
"no-empty-pattern": "error",
"no-eval": "error",
"no-extend-native": "error",
"no-extra-bind": "error",
"no-fallthrough": "error",
"no-floating-decimal": "error",
"no-implicit-coercion": ["error", {
"boolean": false,
"number": true,
"string": true,
"allow": [/* "!!", "~", "*", "+" */]
}],
"no-implicit-globals": "error",
"no-implied-eval": "error",
"no-invalid-this": "off",
"no-iterator": "error",
"no-labels": "error",
"no-lone-blocks": "error",
"no-loop-func": "error",
"no-magic-numbers": ["off", {"ignoreArrayIndexes": true, "ignore": [0, 1] }],
"no-multi-spaces": "error",
"no-multi-str": "error",
"no-native-reassign": ["error", {"exceptions": ["console"]}],
"no-new": "off",
"no-new-func": "error",
"no-new-wrappers": "error",
"no-octal": "error",
"no-octal-escape": "error",
"no-param-reassign": "off",
"no-process-env": "off",
"no-proto": "error",
"no-redeclare": "error",
"no-return-assign": "warn",
"no-script-url": "error",
"no-self-assign": "error",
"no-self-compare": "error",
"no-sequences": "error",
"no-throw-literal": "error",
"no-unmodified-loop-condition": "error",
"no-unused-expressions": "error",
"no-unused-labels": "error",
"no-useless-call": "error",
"no-useless-concat": "error",
"no-void": "error",
"no-warning-comments": "off",
"no-with": "error",
"radix": ["error", "as-needed"],
"vars-on-top": "off",
"wrap-iife": ["error", "inside"],
"yoda": "error",
# Strict Mode
"strict": ["error", "never"],
# Variables
"init-declarations": ["error", "always"],
"no-catch-shadow": "error",
"no-delete-var": "error",
"no-label-var": "error",
"no-restricted-globals": "off",
"no-shadow": "error",
"no-shadow-restricted-names": "error",
"no-undef": "error",
"no-undef-init": "off",
"no-undefined": "off",
"no-unused-vars": ["error", { "args": "none", "ignoreRestSiblings": true }],
"no-use-before-define": "error",
# Node.js and CommonJS
"callback-return": "warn",
"global-require": "error",
"handle-callback-err": "warn",
"no-mixed-requires": "error",
"no-new-require": "error",
"no-path-concat": "error",
"no-process-exit": "error",
# Stylistic Issues
"array-bracket-spacing": ["error", "never"],
"block-spacing": ["error", "always"],
"brace-style": ["error", "1tbs", { "allowSingleLine": false }],
"camelcase": "off",
"comma-spacing": ["error", {"before": false, "after": true}],
"comma-style": ["error", "last"],
"computed-property-spacing": ["error", "never"],
"consistent-this": ["error", "self"],
"eol-last": "error",
"func-names": "off",
"func-style": ["error", "declaration"],
"indent": ["error", 2, {"SwitchCase": 1}],
"key-spacing": ["error", {"beforeColon": false, "afterColon": true}],
"keyword-spacing": ["error", { "before": true, "after": true}],
"lines-around-comment": ["error", { "beforeBlockComment": true, "afterBlockComment": false }],
"max-depth": ["error", {"maximum": 5}],
"max-nested-callbacks": ["error", 4],
"max-statements": "off",
"max-statements-per-line": ["error", { "max": 1 }],
"new-cap": ["error", {"capIsNewExceptions": ["$.Deferred", "DragDropContext", "DragLayer", "DragSource", "DropTarget"]}],
"new-parens": "error",
"newline-after-var": "off",
"newline-before-return": "off",
"newline-per-chained-call": "off",
"no-array-constructor": "error",
"no-bitwise": "error",
"no-continue": "error",
"no-inline-comments": "off",
"no-lonely-if": "warn",
"no-mixed-spaces-and-tabs": "error",
"no-multiple-empty-lines": ["error", { "max": 1 }],
"no-negated-condition": "warn",
"no-nested-ternary": "error",
"no-new-object": "error",
"no-plusplus": "off",
"no-restricted-syntax": "off",
"no-spaced-func": "error",
"no-ternary": "off",
"no-trailing-spaces": "error",
"no-underscore-dangle": ["error", { "allowAfterThis": true }],
"no-unneeded-ternary": "error",
"no-whitespace-before-property": "error",
"object-curly-spacing": ["error", "always"],
"one-var": ["error", "never"],
"one-var-declaration-per-line": ["error", "always"],
"operator-assignment": ["off", "never"],
"operator-linebreak": ["error", "after"],
"quote-props": ["error", "as-needed"],
"quotes": ["error", "single"],
"require-jsdoc": "off",
"semi": "error",
"semi-spacing": ["error", { "before": false, "after": true }],
"sort-vars": "off",
"space-before-blocks": ["error", "always"],
"space-before-function-paren": ["error", "never"],
"space-in-parens": "off",
"space-infix-ops": "off",
"space-unary-ops": "off",
"spaced-comment": "error",
"wrap-regex": "error",
# React
"react/jsx-boolean-value": [2, "always"],
"react/jsx-uses-vars": 2,
"react/jsx-closing-bracket-location": 2,
"react/jsx-tag-spacing": ["error"],
"react/jsx-curly-spacing": [2, "never"],
"react/jsx-equals-spacing": [2, "never"],
"react/jsx-indent-props": [2, 2],
"react/jsx-indent": [2, 2],
"react/jsx-key": 2,
"react/jsx-no-bind": [2, { "allowArrowFunctions": true }],
"react/jsx-no-duplicate-props": [2, { "ignoreCase": true }],
"react/jsx-max-props-per-line": [2, { "maximum": 2 }],
"react/jsx-handler-names": [2, { "eventHandlerPrefix": "(on|dispatch)", "eventHandlerPropPrefix": "on" }],
"react/jsx-no-undef": 2,
"react/jsx-pascal-case": 2,
"react/jsx-uses-react": 2,
// Explicitly disabled in case we want to enable them again
"react/no-did-mount-set-state": 0,
"react/no-did-update-set-state": 0,
"react/no-direct-mutation-state": 2,
"react/no-multi-comp": [2, { "ignoreStateless": true }],
"react/no-unknown-property": 2,
"react/prefer-es6-class": 2,
"react/prop-types": 2,
"react/react-in-jsx-scope": 2,
"react/self-closing-comp": 2,
"react/sort-comp": 2,
"react/jsx-wrap-multilines": 2
}
}
+12
View File
@@ -0,0 +1,12 @@
{
"js": {
"indent_size": 2,
"indent_char": " ",
"indent_level": 2,
"indent_with_tabs": false,
"preserve_newlines": true,
"brace_style": "collapse",
"max_preserve_newlines": 2,
"jslint_happy": true
}
}

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