* 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
* Do not allow non-admins to change their passwords when authentication is disabled
* Clean up the login page so that input field text is black
* cleanup some resizing when typing a password and having a lot of users
* Changed the LastActive for a user to not just be login, but also when they open an already authenticated session.
# Added
- Added: Ability to check for updates (stable-only) and be notified with a changelog. This is a first pass implementation.
- Added: Ability to use SignalR within Kavita (websockets)
=====================================
* (some debug code present). Implemented the ability to check and log if the server is up to date or not.
* Fixed a bug for dark mode where anchor buttons wouldn't have the correct font color.
Suppress filter/sort button if there is no filters to show.
Debug: Active indicators for users currently on your server.
Refactored code to send update notification only to admins. Admins now get a popup where they can open the Github release (docker users can just close).
* Fixed an issue where getLibraryNames on first load would call for as many cards there was on the screen. Now we call it much earlier and the data is cached faster.
* Fixed a dark mode bug from previous commit
* Release notes is now rendered markdown
* Implemented the ability to check for an update ad-hoc. Response will come via websocket to all admins.
* Fixed a missing padding
* Cleanup, added some temp code to carousel
* Cleaned up old stat stuff from dev config and added debug only flow for checking for update
* Misc cleanup
* Added readonly to one variable
* Fixed In Progress not showing for all series due to pagination bug
* Fixed the In progress API returning back series that had another users progress on them. Added SplitQuery which speeds up query significantly.
* SplitQuery in GetRecentlyAdded for a speed increase on API.
Fixed the logic on VersionUpdaterService to properly send on non-dev systems.
Disable the check button once it's triggered once since the API does a task, so it can't return anything.
* Cleaned up the admin actions to be more friendly on mobile.
* Cleaned up the message as we wait for SingalR to notify the user
* more textual changes
* Code smells