* Fixed a unit test in ArchiveService
* Image scaling fixes
* removing test
* Added new layout mode (enum only) and cleaned up manga reader and wrote extra documentation
* Aligned code with cleanup
* Adding reverse classes for manga reading
* Disable options for layout modes that doesn't make sense.
* Cleaned up manga reader menu items to link to preferences options directly
* Work in progress, but rendering the correct page numbers for double. Need to rework caching logic so we can use existing image objects
* Pagination logic is now properly increasing page number an extra when double layout mode
* I can't figure out cachedImages to work properly with double pages, but doing it in a way where it handles downloading the image (and etag cache) + rendering the url, seems to work really well
* Double original fix, also flex squish fix
* Implemented last page on double which will load next chapter.
Fixed a bug where if GetImage from ReaderController threw an error, the chapter directory would be emptied, but the folder itself wasn't deleted.
* Fixed a bad if for double manga
* double class fix
* Cleanup up some console.logs
* Adjusted the caching for images in a reading session so they cache for 2 mins
* fixing webtoon image issue
* Tweaked the caching of images to 10 mins for reading. Fixed a bug where after webtoon, single image layout would be selected. Tweaked logic for handling prev/next pages on chapter boundaries.
* Fixed an issue where 2nd page would be skipped
* Fixed an issue where 2nd page would be skipped
* Fixed a skip page issue
* Misc css fixes
Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>
* Moved the Server Settings out into a button on nav header
* Refactored Mange Users page to the new design (skeleton). Implemented skeleton code for Invite User.
* Hashed out more of the code, but need to move all the email code to a Kavita controlled API server due to password credentials.
* Cleaned up some warnings
* When no user exists for an api key in Plugin controller, throw 401.
* Hooked in the ability to check if the Kavita instance can be accessed externally so we can determine if the user can invite or not.
* Hooked up some logic if the user's server isn't accessible, then default to old flow
* Basic flow is working for confirm email. Needs validation, error handling, etc.
* Refactored Password validation to account service
* Cleaned up the code in confirm-email to work much better.
* Refactored the login page to have a container functionality, so we can reuse the styles on multiple pages (registration pages). Hooked up the code for confirm email.
* Messy code, but making progress. Refactored Register to be used only for first time user registration. Added a new register component to handle first time flow only.
* Invite works much better, still needs a bit of work for non-accessible server setup. Started work on underlying manage users page to meet new design.
* Changed (you) to a star to indicate who you're logged in as.
* Inviting a user is now working and tested fully.
* Removed the register member component as we now have invite and confirm components.
* Editing a user is now working. Username change and Role/Library access from within one screen. Email changing is on hold.
* Cleaned up code for edit user and disabled email field for now.
* Cleaned up the code to indicate changing a user's email is not possible.
* Implemented a migration for existing accounts so they can validate their emails and still login.
* Change url for email server
* Implemented the ability to resend an email confirmation code (or regenerate for non accessible servers). Fixed an overflow on the confirm dialog.
* Took care of some code cleanup
* Removed 3 db calls from cover refresh and some misc cleanup
* Fixed a broken test
* Refactored all files to have Interfaces within the same file. Started moving over to file-scoped namespaces.
* Refactored common methods for getting underlying file's cover, pages, and extracting into 1 interface.
* More refactoring around removing dependence on explicit filetype testing for getting information.
* Code is buildable, tests are broken. Huge refactor (not completed) which makes most of DirectoryService testable with a mock filesystem (and thus the services that utilize it).
* Finished porting DirectoryService to use mocked filesystem implementation.
* Added a null check
* Added a null check
* Finished all unit tests for DirectoryService.
* Some misc cleanup on the code
* Fixed up some bugs from refactoring scan loop.
* Implemented CleanupService testing and refactored more of DirectoryService to be non-static.
Fixed a bug where cover file cleanup wasn't properly finding files due to a regex bug.
* Fixed an issue in CleanupBackup() where we weren't properly selecting database files older than 30 days. Finished CleanupService Tests.
* Refactored Flatten and RemoveNonImages to directory service to allow CacheService to be testable.
* Finally have CacheService tested. Rewrote GetCachedPagePath() to be much more straightforward & performant.
* Updated DefaultParserTests.cs to contain all existing tests and follow new test layout format.
* All tests fixed up
* Added the ability to see when a scan started at.
* filename based hashing now uses last write time as well to ensure if the underlying file changes it sends a new copy
* Fixed a bug where we would reset dark mode on the book reader to dark mode if our site was on dark mode, despite user setting light mode.
* Added a single feed entry when some sort of collection, reading list, etc doesn't have anything in it.
* Allow + in the normalization to prevent some series that use + to denote the sequel from not getting merged together.
* 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