* Moved the data connection for the Database out of appsettings.json and hardcoded it. This will allow for more customization and cleaner update process.
* Removed unneeded code
* Updated pdf viewer to 15.0.0 (pdf 2.6), which now supports east-asian fonts
* Fixed up some regex parsing for volumes that have a float number.
* Fixed a bug where the tooltip for Publication Status wouldn't show
* Fixed some weird parsing rules where v1.1 would parse as volume 1 chapter 1
* Fixed a bug where bookmarking button was hidden for admins without bookmark role (due to migration)
* Unified the star rating component in series detail to match metadata filter.
* Fixed a bug in the bulk selection code when using shift selection, where the inverse of what was selected would be toggled.
* Fixed some old code where if on all series page, only English as a language would return. We now return all languages of all libraries.
* Updated api/metadata/languages documentation
* Refactored some bookmark api names: get-bookmarks -> chapter-bookmarks, get-all-bookmarks -> all-bookmarks, get-series-bookmarks -> series-bookmarks, etc.
* Refactored all cases of createSeriesFilter to filterUtiltityService.
Added ability to search for a series on Bookmarks page.
Fixed a bug where people filters wouldn't respect the disable flag froms ettings.
* Cleaned up a bit of the circular downloader code.
* Implemented Russian Parsing
* Fixed an issue where some users that had a missing theme entry wouldn't be able to update their user preferences.
* Refactored normalization to exclude !, thus allowing series with ! to be different from each other.
* Fixed a migration exit case
* Fixed broken unit test
* 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
* Updating series detail cover
# Fixed
- Fixed: Fixed an issue where the series detail cover would resize too large on ultra wide displays.
* Fixing typos
* 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
* Tweaked log messaging for library scan when no files were scanned.
* When a theme that is set gets removed due to a scan, inform the user to refresh.
* Fixed a typo and make Darkness -> Brightness
* Make download theme files allowed to be invoked by non-authenticated users, to allow new users to get the default theme.
* Hide all series side nav item if there are no libraries exposed to the user
* Fixed an API for Tachiyomi when syncing progress
* Fixed dashboard not responding to Series Removed and Added events.
Ensure we send SeriesRemoved events when they are deleted.
* Reverted Hangfire SQLite due to aborted jobs being resumed, when they shouldnt. Fixed some scan loop issues where cover gen wouldn't be invoked always on new libraries.
* Added a no data section to collection detail.
* Remove an optimization for skipping the whole library scan as it wasn't reliable
* When resetting password, ensure the input is colored correctly
* Fixed setting new password after resetting, throwing an error despite it actually being successful.
Fixed incorrect messaging for Password Reset page.
* Fixed a bug where reset password would show the side nav button and skew the page.
Updated a lot of references to use Typed version for formcontrols.
* Removed a migration from 0.5.0, 6 releases ago.
* Added a null check so we don't throw an exception when connecting with signalR on unauthenticated users.
* Refactored invite user flow to separate error handling on create user flow and email flow. This should help users that have unique situations.
* Switch to using files to check LastWriteTime. Debug code in for Robbie to test on rclone
* Updated Parser namespace. Changed the LastWriteTime to check all files and folders.
* Fixed a bug where typeahead wouldn't automatically show results on relationship screen without an additional click.
* Tweaked the code which checks if a modification occured to check on seconds rather than minutes
* Clear cache will now clear temp/ directory as well.
* Fixed an issue where Chrome was caching api responses when it shouldn't had.
* Added a cleanup temp code
* Ensure genres get removed during series scan when removed from metadata.
* Fixed a bug where all epubs with a volume would show as Volume 0 in reading list
* When a scan is in progress, don't let the user delete the library.
* Update to use SQLIte for Hangfire to retain information on tasks
* Updated all external links to have noopener noreferrer
* When watching folders, ensure the folders exist before creating watchers.
* Tweaked the messaging for Email Service and added link to the project.
* Sort series by chapter number only when some chapters have no volume information
* Implement a Default static instance of ChapterSortComparer
* Further use Default static Comparers
* Add missing ToLit() as per comments
* Refactored Library Watcher to use Hangfire under the hood.
* Support .kavitaignore at root level.
* Refactored a lot of the library watching code to process faster and handle when FileSystemWatcher runs out of internal buffer space. It's still not perfect, but good enough for basic use.
* Make folder watching as experimental and default it to off by default.
* Revert #1479
* Tweaked the messaging for OPDS to remove a note about download role.
Moved some code closer to where it's used.
* Cleaned up how the events widget reports
* Fixed a null issue when deleting series in the UI
* Cleaned up some debug code
* Added more information for when we skip a scan
* Cleaned up some logging messages in CoverGen tasks
* More log message tweaks
* Added some debug to help identify a rare issue
* Fixed a bug where save bookmarks as webp could get reset to false when saving other server settings
* Updated some documentation on library watcher.
* Make LibraryWatcher fire every 5 mins
* Fixed a bootstrap bug
* Fixed repeating images on collection detail
* Fixed up some logic in library watcher which wasn't processing all of the queue.
* When parsing non-epubs in Book library, use Manga parsing for Volume support to better support Light Novels
* Fixed some bugs with the tachiyomi plugin api's for progress tracking
* Tweaked a Migration to log correctly only if something is going to be done.
* Refactored Reading List Controller code into a dedicated service and cleaned up some methods that aren't needed anymore.
* Fixed a bug where adding a new item to a reading list wasn't adding it at the end.
* Fixed an issue where collection page would re-render the same covers on multiple items.
* Fixed a missing margin-top which made the page extras drawer not render correctly and hence unclosable on small screens.
* Added some timeout on manage users screen to give data time to flush.
Added a dedicated token log for account flows, in case url encoding plays a part (but from testing it doesn't).
* Reverted back to building for ES6 instead of es2020 for old Safari 12.5.5 browsers (10MB difference in build size).
* Cleaned up the logic in removing series not found during scan loop.
* Tweaked the timings for Library Watcher to 1 min and reprocess queue every 30 seconds.
* Added a ToList() to avoid a bug where a person could be removed from a list while iterating over the list.
* When deleting a series, want to read page will now automatically remove that series from the view.
* Fixed a series lookup which was ignoring format
* Ignore XML comment warnings
* Removed a note since it was already working that way
* Fixed unit test
* Updated scan time for watcher to 30 seconds for non-dev. Moved ScanFolder off the Scan queue as it doesn't need to be there. Updated loggers
* Fixed jumpbar missing
* Tweaked the messaging for CoverGen
* When we return early due to nothing being done on library and series scan, make sure we kick off other tasks that need to occur.
* Fixed a foreign constraint issue on Volumes when we were adding to a new series.
* Fixed a case where when picking normalized series, capitalization differences wouldn't stack when they should.
* Reduced the logging output on dev and prod settings.
* Fixed a bug in the code that finds the highest directory from a file, where we were not checking against a normalized path.
* Cleaned up some code
* Fixed broken unit tests
* Hooked in a server setting to enable/disable folder watching
* Validated the file rename change event
* Validated delete file works
* Tweaked some logic to determine if a change occurs on a folder or a file.
* Added a note for an upcoming branch
* Some minor changes in the loop that just shift where code runs.
* Implemented ScanFolder api
* Ensure we restart watchers when we modify a library folder.
* Fixed a unit test
* Misc fixes
- Fixed modal being stretched when not needed.
- Fixed Logo vertical align
- Fixed drawer content scroll, and from it being squished due to overridden by bootstrap.
* series detail cover image stretch fix
- Fixes: Fixes series detail cover image being stretched on larger resolutions
* fixing empty lists scrollbar
* Fixing want to read error
* fixing unnecessary scrollbar
* Fixing recently updated tooltip
* When we navigate from a page then back, resume back on the last scroll key (if clicked)
* Resume jump key position when navigating back to a page. Removed some extra blank space on collection detail when a collection doesn't have a summary or cover image.
* Ignore progress events on series cards
* Added a url to swagger for /, which could be reverse proxy url