* Implemented methods to parse out the whole ComicInfo file and a mock ComicInfo from epub files.
* Removed unused imports. ScanSeries needs to cleanup deleted chapters and call RefreshMetadata. Ensure after scan we cleanup tags without any series.
* Random cleanup
* Added some comments about data getting stale and not updating.
* Removed old Summary methods in favor of the ComicInfo versions
* Added a missing property
* Fixed unit test
* Updating wording on card item when total pages is 0, to be just "Cannot Read" since it could be a non-archive file
* Refactored cover images to be stored on disk. This first commit has the extraction to disk and the metadata service to handle updating when applicable.
* Refactored code to have the actual save to cover image directory done by ImageService.
* Implemented the ability to override cover images.
* Some cleanup on Image service
* Implemented the ability to cleanup old covers nightly
* Added a migration to migrate existing covers to new cover image format (files).
* Refactored all CoverImages to just be the filename, leaving the Join with Cover directory to higher level code.
* Ensure when getting user progress, we pick the first.
* Added cleanup cover images for deleted tags. Don't pull any cover images that are blank.
* After series update, clear out cover image. No change on UI, but just keeps things clear before metadata refresh hits
* Refactored image formats for covers to ImageService.
* Fixed an issue where after refactoring how images were stored, the cleanup service was deleting them after each scan.
* Changed how ShouldUpdateCoverImage works to check if file exists or not even if cover image is locked.
* Fixed unit tests
* Added caching back to cover images.
* Caching on series as well
* Code Cleanup items
* Ensure when checking if a file exists in MetadataService, that we join for cover image directory. After we scan library, do one last filter to delete any series that have 0 pages total.
* Catch exceptions so we don't run cover migration if this is first time run.
* After a scan, only clear out the cache directory and not do a deep clean.
* Implemented the ability to backup custom locked covers only.
* Fixed unit tests
* Trying to figure out why GA crashes when running MetadataServiceTests.cs
* Some debugging on GA tests not running
* Commented out tests that were causing issues in GA.
* Fixed an issue where series cover images wouldn't migrate
* Fixed the updating of links to actually do all series and not just locked
* Removed some extra spam for the console
* Implemented the code to update RowVersion, which is our concurrency check
* Fixed a critical issue where more than one bookmark could occur for a given chapter due to a race condition. Now we use concurrency checks and we also gracefully allow more than one row, by only grabbing first.
* Cleaned up the logic for IHasConcurencyToken and updated the setters to be private.
* Lots of comments and when deleting a library, remove any user progress items for which chapters don't exist.
* When deleting a Series, cleanup user progress rows.
* Now after a scan of library, if a series is removed, collection tags are pruned as well if there are no longer any series bound to it.
* Updated the image on the Readme to show a better picture
* Small code cleanup to remove null check modifier as I check for null just before then
* Fixed images loading multiple times due to using function in binding with random. You can now click chapter images to read that chapter specifically.
* Fixed cards being different sizes when read vs unread
* Moved over Robbie's workflow changes from notifier. Commented out activity indicators as that is not shipping with this release.
* Remove code that isn't needed
* Reverted GA
* Changed GA to trigger only when HEAD is updated