* Swapped out SQLite for Memory, but the one from hangfire. Added DisableConcurrentExecution on ProcessChange to avoid duplication when multiple threads execute at once.
* Fixed the Hangfire SQL issues with CPU/ram utilization some users are facing
* Fixed a case in SharpCompress fallback where an invalid ComicInfo wasn't picked up.
* When parsing epubs, if there is a volume in the epub title, try to parse and group. This is beneficial for Light Novels which are generally tagged this way.
* Fixed delete series in series detail not triggering
* Fixed some parsing logic for how we treat specials, like Annual and Omnibus.
* When scanning files, if the file is the cover image (loose leaf image), we reject it more quickly than previously.
* Added a potential bug marker
* Fixed a bug where Info was only showing Error level loggers
* Code smells
* Cleanup some messaging in the scan loop to be more context bearing
* Added Response Caching to Series Detail for 1 min, due to the heavy nature of the call.
* Refactored code to make it so that processing of series runs sync correctly.
Added a log to inform the user of corrupted volume from buggy code in v0.5.6.
* Moved folder watching out of experimental
* Fixed an issue where empty folders could break the scan loop
* Another fix for when dates aren't valid, the scanner wouldn't get the proper min and would throw an exception (develop)
* Implemented the ability to edit release year from the UI for a series.
* Added a unit test for some new logic
* Code smells
* Rewrote the handler for suspending watching to be more resilient and ensure no two threads have a race condition.
* More error handling for when a ScanFolder is invoked but multiple series belong to that folder, log it to the user and default to a library scan.
* ScanSeries now will check for kavitaignores higher than it's own folder and respect library level.
* Fixed an issue where image series with a folder name containing the word "folder" could get ignored as it thought the image was a cover image.
When a series folder is moved or deleted, skip parent ignore finding.
* Removed some old files, added in scanFolder a check if the series found for a folder is in a book library and if so to always do a library scan (as books are often nested into one folder with multiple series). Added some unit tests
* Refactored some scan loop logic into ComicInfo, wrote tests and updated some documentation to make the fields more clear.
* Added a test for GetLastWriteTime based on recent bug
* Cleaned up some redundant code
* Fixed a bad merge
* Code smells
* Removed a package that's no longer used.
* Ensure we check against ScanQueue on ScanFolder enqueuing
* Documentation and more bullet proofing to ensure Hangfire checks work more as expected
* Fixed inputs not showing inline validation due to a missing class
* Fixed some checks
* Increased the button size on manga reader (develop)
* Migrated a type cast to a pure pipe
* Sped up the check for if SendTo should render on the menu
* Don't allow user to bookmark in bookmark mode
* Fixed a bug where Scan Series would skip over Specials due to how new scan loop works.
* Fixed scroll to top button persisting when navigating between pages
* Edit Series modal now doesn't have a lock field for Series, which can't be locked as it is inheritently locked.
Added some validation to ensure Name and SortName are required.
* Fixed up some spacing
* Fixed actionable menu not opening submenu on mobile
* Cleaned up the layout of cover image on series detail
* Show all volume or chapters (if only one volume) for cover selection on series
* Don't open submenu to right if there is no space
* Fixed up cover image not allowing custom saves of existing series/chapter/volume images.
Fixed up logging so console output matches log file.
* Implemented the ability to turn off css transitions in the UI.
* Updated a note internally
* Code smells
* Added InstallId when pinging the email service to allow throughput tracking
* Optimize CleanTitle
* Optimize MangaEditionRegex
* Optimize special regexes
* Refactor manga|comic special parsing into simple tests
* Word bind the special regexps. Support additional "special" use cases.
* Updates to address PR comments
* CleanTitle benchmarking
* Use a smaller Comics Data set for benchmarking
* 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.
* 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