* Moved Collapse Series with relationships into a user preference rather than library setting.
* Fixed bookmarks not converting to webp after initial save
* Fixed a bug where when merging we'd print out a duplicate series error when we shouldn't have
* Fixed a bug where clicking on a genre or tag from server stats wouldn't load all-series page in a filtered state.
* Implemented the ability to have Login role and thus disable accounts.
* Ensure first time flow gets the Login role
* Refactored user management screen so that pending users can be edited or deleted before the end user accepts the invite. A side effect is old legacy users that were here before email was required can now be deleted.
* Show a progress bar under the main series image on larger viewports to show whole series progress.
* Removed code no longer needed
* Cleanup tags, people, collections without connections after editing series metadata.
* Moved the Entity Builders to the main project
* 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.
* Fixed a scaling issue in the epub reader, where images could scale when they shouldn't.
* Removed some caching on library/ api and added more output for a foreign key constraint
* Hooked in Restricted Profile stat collection
* Added a new boolean on age restrictions to explicitly allow unknowns or not. Since unknown is the default state of metadata, if users are allowed access to Unknown, age restricted content could leak.
* Fixed a bug where sometimes series cover generation could fail under conditions where only specials existed.
* Fixed foreign constraint issue when cleaning up series not seen at end of scan loop
* Removed an additional epub parse when scanning and handled merging differently
* Code smell
* 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
* 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
* 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