* Updated to net7.0
* Updated GA to .net 7
* Updated System.IO.Abstractions to use New factory.
* Converted Regex into SourceGenerator in Parser.
* Updated more regex to source generators.
* Enabled Nullability and more regex changes throughout codebase.
* Parser is 100% GeneratedRegexified
* Lots of nullability code
* Enabled nullability for all repositories.
* Fixed another unit test
* Refactored some code around and took care of some todos.
* Updating code for nullability and cleaning up methods that aren't used anymore. Refctored all uses of Parser.Normalize() to use new extension
* More nullability exercises. 500 warnings to go.
* Fixed a bug where custom file uploads for entities wouldn't save in webP.
* Nullability is done for all DTOs
* Fixed all unit tests and nullability for the project. Only OPDS is left which will be done with an upcoming OPDS enhancement.
* Use localization in book service after validating
* Code smells
* Switched to preview build of swashbuckle for .net7 support
* Fixed up merge issues
* Disable emulate comic book when on single page reader
* Fixed a regression where double page renderer wouldn't layout the images correctly
* Updated to swashbuckle which support .net 7
* Fixed a bad GA action
* Some code cleanup
* More code smells
* Took care of most of nullable issues
* Fixed a broken test due to having more than one test run in parallel
* I'm really not sure why the unit tests are failing or are so extremely slow on .net 7
* Updated all dependencies
* Fixed up build and removed hardcoded framework from build scripts. (this merge removes Regex Source generators). Unit tests are completely busted.
* Unit tests and code cleanup. Needs shakeout now.
* Adjusted Series model since a few fields are not-nullable. Removed dead imports on the project.
* Refactored to use Builder pattern for all unit tests.
* Switched nullability down to warnings. It wasn't possible to switch due to constraint issues in DB Migration.
* Don't show "not much going on" when we are actively downloading
* Swipe to paginate is now behind a flag in the user preferences.
* Added a new server setting for host name, if the server sits behind a reverse proxy. If this is set, email link generation will use it and will not perform any checks on accessibility (thus email will always send)
* Refactored the code that checks if the server is accessible to check if host name is set, and thus return rue if so.
* Added back the system drawing library for markdown parsing.
* Fixed a validation error
* Fixed a bug where folder watching could get re-triggered when it was disabled at a server level.
* Made the manga reader loader absolute positioned for better visibility
* Indentation
* Added ReadingList age rating from all series and started on some unit tests for the new flows.
* Wrote more unit tests for Reading Lists
* Added ability to restrict user accounts to a given age rating via admin edit user modal and invite user. This commit contains all basic code, but no query modifications.
* When updating a reading list's title via UI, explicitly check if there is an existing RL with the same title.
* Refactored Reading List calculation to work properly in the flows it's invoked from.
* Cleaned up an unused method
* Promoted Collections no longer show tags where a Series exists within them that is above the user's age rating.
* Collection search now respects age restrictions
* Series Detail page now checks if the user has explicit access (as a user might bypass with direct url access)
* Hooked up age restriction for dashboard activity streams.
* Refactored some methods from Series Controller and Library Controller to a new Search Controller to keep things organized
* Updated Search to respect age restrictions
* Refactored all the Age Restriction queries to extensions
* Related Series no longer show up if they are out of the age restriction
* Fixed a bad mapping for the update age restriction api
* Fixed a UI state change after updating age restriction
* Fixed unit test
* Added a migration for reading lists
* Code cleanup
* Updated a typo in manage tasks of Reoccuring -> Recurring
* Fixed a bug in MinimumNumberFromRange where a regex wasn't properly constructed which could skew results.
* Fixed a bug where Volume numbers that were a float wouldn't render correctly in the manga reader menu.
* Added the ability to double click on the image to bookmark it. Optimized the bookmark and unbookmark flows to remove 2 DB calls and reworked some flow of calls to speed it up.
Fixed some logic where when using double (manga) flow, both of the images wouldn't show the bookmark effect, despite both of them being saved. Likewise, fixed a bug where both images weren't updating UI state, so switching from double (manga) to single, the second image wouldn't show as bookmarked without a refresh.
* Double click works perfectly for bookmarking
* Collection cover image chooser will now prompt with all series covers by default.
Reset button is now moved up to the first slot if applicable.
* When a Completed series is fully read by a user, a nightly task will now remove that series from their Want to Read list.
* Added ability to trigger Want to Read cleanup from Tasks page.
* Moved the brightness readout to the label line and fixed a bootstrap migration bug where small buttons weren't actually small.
* Implemented ability to filter against release year (min or max or both).
* Fixed a log message that wasn't properly formatted when scan finished an no files changes.
* Cleaned up some code and merged some methods
* Implemented sort by Release year metadata filter.
* Fixed the code that finds ComicInfo.xml inside archives to only check the root and check explicitly for casing, so it must be ComicInfo.xml.
* Dependency updates
* Refactored some strings into consts and used TriggerJob rather than just enqueuing
* Fixed the prefetcher which wasn't properly loading in the correct order as it was designed.
* Cleaned up all traces of CircularArray from MangaReader
* Removed a debug code
* Fixed a bug with webtoon reader in fullscreen mode where continuous reader wouldn't trigger
* When cleaning up series from users' want to read lists, include both completed and cancelled.
* Fixed a bug where small images wouldn't have the pagination area extend to the bottom on manga reader
* Added a new method for hashing during prod builds and ensure we always use aot
* Fixed a bug where the save button wouldn't enable when color change occured.
* Cleaned up some issues in one of contributor's PR.
* Recreated Kavita Logging with Serilog instead of Default. This needs to be move out of the appsettings now, to allow auto updater to patch.
* Refactored the code to be completely configured via Code rather than appsettings.json. This is a required step for Auto Updating.
* Added in the ability to send logs directly to the UI only for users on the log route. Stopping implementation as Alerts page will handle the rest of the implementation.
* Fixed up the backup service to not rely on Config from appsettings.json
* Tweaked the Logging levels available
* Moved everything over to File-scoped namespaces
* Moved everything over to File-scoped namespaces
* Code cleanup, removed an old migration and changed so debug logging doesn't print sensitive db data
* Removed dead code
* Allow .NET to optimize code as it's running.
* Implemented the ability to restrict users Bookmark ability. By default, users will need to now opt-in to get bookmark roles.
* Fixed a tachiyomi progress syncing logic bug
* 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
* Implemented the ability to disable authentication on a server instance. Admins will require authentication, but non-admin accounts can be setup without any password requirements.
* WIP for new login page.
* Reworked code to handle disabled auth better. First time user flow is moved into the user login component.
* Removed debug code
* Removed home component, shakeout testing is complete.
* remove a file accidently committed
* Fixed a code smell from last PR
* Code smells