* Bump loader-utils from 2.0.3 to 2.0.4 in /UI/Web
Bumps [loader-utils](https://github.com/webpack/loader-utils) from 2.0.3 to 2.0.4.
- [Release notes](https://github.com/webpack/loader-utils/releases)
- [Changelog](https://github.com/webpack/loader-utils/blob/v2.0.4/CHANGELOG.md)
- [Commits](https://github.com/webpack/loader-utils/compare/v2.0.3...v2.0.4)
---
updated-dependencies:
- dependency-name: loader-utils
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
* Fixed want to read button on series detail not performing the correct action
* Started the library settings. Added ability to update a cover image for a library.
Updated backup db to also copy reading list (and now library) cover images.
* Integrated Edit Library into new settings (not tested) and hooked up a wizard-like flow for new library.
* Fixed a missing update event in backend when updating a library.
* Disable Save when form invalid. Do inline validation on Library name when user types to ensure the name is valid.
* Trim library names before you check anything
* General code cleanup
* Implemented advanced settings for library (include in dashboard, search, recommended) and ability to turn off folder watching for individual libraries.
Refactored some code to streamline perf in some flows.
* Removed old components replaced with new modal
* Code smells
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* 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
* Fixed a bug with RBS on non-admin accounts
* Fixed a bug where get next/prev chapter wouldn't respect floating point volume numbers
* Fixed a bad migration version check
* When building kavita ignore exclusions, ignore blank lines.
* Hooked up the GetFullSeriesByAnyName to check against OriginalName exactly
* Refactored some code for building ignore from library root, to keep the code cleaner
* Tweaked some messaging
* Fixed a bad directory join when a change event occurs in a nested series folder.
* Fixed a bug where cover generation would prioritize a special if there were only chapters in the series.
* Fixed a bug where you couldn't update a series modal if there wasn't a release year present
* Fixed an issue where renaming the Series in Kavita wouldn't allow ScanSeries to see the files, and thus would delete the Series.
* Added an additional check with Hangfire to make sure ScanFolder doesn't kick off a change when a bunch of changes come through for the same directory, but a job is already running.
* Added more documentation
* Migrated more response caching to profiles and merged 2 apis into one, since they do the same thing.
* Fixed a bug where NotApplicable age ratings were breaking Recently Updated Series
* Cleaned up some cache profiles
* More caching
* Provide response caching on Get Next/Prev Chapter
* 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
* Introduced a lock for DB work during the scan to hopefully reduce the concurrency issues
* Don't allow multiple theme scans to occur
* Fixed bulk actions not having all actions due to nested actionable menu changes
* Refactored the Scan loop to be synchronous to avoid any issues. After first loop, no real performance issues.
* Updated the LibraryWatcher when under many internal buffer full issues, to suspend watching for a full hour, to allow whatever downloading to complete.
* Removed Semaphore as it's not needed anymore
* Updated the output for logger to explicitly say from Kavita (if you're pushing to Seq)
* Fixed a broken test
* Fixed ReleaseYear not populating due to a change from a contributor around how to populate ReleaseYear.
* Ensure when scan folder runs, that we don't double enqueue the same tasks.
* Fixed user settings not loading the correct tab
* Changed the Release Year -> Release
* Added more refresh hooks in reader to hopefully ensure faster refreshes
* Reset images between chapter loads to help flush image faster. Don't show broken image icon when an image is still loading.
* Fixed the prefetcher not properly loading the correct images and hence, allowing a bit of lag between chapter loads.
* Code smells
* 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
* Tweaked the logging output
* Started implementing some basic idea for devices
* Updated Email Service with new API routes
* Implemented basic DB structure and some APIs to prep for the UI and flows.
* Added an abstract class to make Unit testing easier.
* Removed dependency we don't need
* Updated the UI to be able to show devices and add new devices. Email field will update the platform if the user hasn't interacted with it already.
* Added ability to delete a device as well
* Basic ability to send files to devices works
* Refactored Action code to pass ActionItem back and allow for dynamic children based on an Observable (api).
Hooked in ability to send a chapter to a device. There is no logic in the FE to validate type.
* Fixed a broken unit test
* Implemented the ability to edit a device
* Code cleanup
* Fixed a bad success message
* Fixed broken unit test from updating mock layer
* Fixed entrypoint writing bad json (from develop)
* Fixed a bug where log file could write out a crap ton of information (serializing Series object) when a db error occurs.
* Fixed an issue with scan loop where concurrency issues could occur on new series being added.
* Tweaked the logger to suppress some noisy logs when using Debug log level.
* Fixed a regression with epub parsing from v3.2 of Vers-One's release
* Fixed up folder watching to work more reliable. Validated in production.
* Code cleanup
* Moved LibraryWatcher to utilize a queue for calculating the change event to ensure the Watcher doesn't get overwhelmed on large moves.
* Fixed a security vulnerability (https://huntr.dev/bounties/8a3e652f-d6bf-436e-877e-0eaf5c69ef95/). This will be disclosed in Stable release changelog.
* Tweaked the log message template
* Removed some dead code from Configuration json patcher
* Fixed a bug with the ComicInfo finding to properly handle root level.
Fixed a bug where sometimes scanner wouldn't choose the first file with ComicInfo for filling out information.
* Added new setting for managing how many logs files are allowed, just like how backups work.
* Added unit tests for new CleanupLogs code
* Fixed a bug where manga reader background color wasn't actually sending from the UI
* Added new stats for tracking to help understand usage in the app and what features are used or not.
* Fixed Stats url
* Fixed a bug where volumes that had larger than 1 difference wouldn't properly return next/prev chapter (for continuous reader)
* Remove a redundant test step in build pipeline, since it's already done at PR stage.
* Updated dockerfile to use the new Heath check endpoint
* Allow force to pass through to scan loop
* Removed some old config stuff from a safety check on config in entrypoint.sh
* Fixed broken unit tests due to new RBS check and how we setup mock data.
* 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.
* 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.
* 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
* Staging the code for the new scan loop.
* Implemented a basic idea of changes on drives triggering scan loop. Issues: 1. Scan by folder does not work, 2. Queuing system is very hacky and needs a separate thread, 3. Performance degregation could be very real.
* Started writing unit test for new loop code
* Implemented a basic method to scan a folder path with ignore support (not implemented, code in place)
* Added some code to the parser to build out the idea of processing series in batches based on some top level folder.
* Scan Series now uses the new code (folder based parsing) and now handles the LocalizedSeries issue.
* Got library scan working with the new folder-based scan loop. Updated code to set FolderPath (for improved scan times and partial scan support).
* Wrote some notes on update library scan loop.
* Removed migration for merge
* Reapplied the SeriesFolder migration after merge
* Refactored a check that used multiple db calls into one.
* Made lots of progress on ignore support, but some confusion on underlying library. Ticket created. On hold till then.
* Updated Scan Library and Scan Series to exit early if no changes are on the underlying folders that need to be scanned.
* Implemented the ability to have .kavitaignore files within your directories and Kavita will parse them and ignore files and directories based on rules within them.
* Fixed an issue where ignore files nested wouldn't stack with higher level ignores
* Wrote out some basic code that showcases how we can scan series or library based on file events on the underlying system. Very buggy, needs lots of edge case testing and logging and dupplication checking.
* Things are working kinda. I'm getting lost in my own code and complexity. I'm not sure it's worth it.
* Refactored ScanFiles out to Directory Service.
* Refactored more code out to keep the code clean.
* More unit tests
* Refactored the signature of ParsedSeries to use IList. Started writing unit tests and reworked the UpdateLibrary to work how it used to with new scan loop code (note: using async update library/series does not work).
* Fixed the bug where processSeriesInfos was being invoked twice per series and made the code work very similar to old code (except loose leaf files dont work) but with folder based scanning.
* Prep for unit tests (updating broken ones with new implementations)
* Just some notes. Not sure I want to finish this work.
* Refactored the LibraryWatcher with some comments and state variables.
* Undid the migrations in case I don't move forward with this branch
* Started to clean the code and prepare for finishing this work.
* Fixed a bad merge
* Updated signatures to cleanup the code and commit to the new strategy for scanning.
* Swapped out the code with async processing of series on a small library
* The new scan loop is working in both Sync and Async methods. The code is slow and not optimized. This represents a good point to start polling and applying optimizations.
* Refactored UpdateSeries out of Scanner and into a dedicated file.
* Refactored how ProcessTasks are awaited to allow more async
* Fixed an issue where side nav item wouldn't show correct highlight and migrated to OnPush
* Moved where we start to stopwatch to encapsulate the full scan
* Cleaned up SignalR events to report correctly (still needs a redesign)
* Remove the "remove" code until I figure it out
* Put in extremely expensive series deletion code for library scan.
* Have Genre and Tag update the DB immediately to avoid dup issues
* Taking a break
* Moving to a lock with People was successful. Need to apply to others.
* Refactored code for series level and tag and genre with new locking strategy.
* New scan loop works. Next up optimization
* Swapped out the Kavita log with svg for faster load
* Refactored metadata updates to occur when the series are being updated.
* Code cleanup
* Added a new type of generic message (Info) to inform the user.
* Code cleanup
* Implemented an optimization which prevents any I/O (other than an attribute lookup) for Library/Series Scan. This can bring a recently updated library on network storage (650 series) to fully process in 2 seconds.
Fixed a bug where File Analysis was running everytime for each non-epub file.
* Fixed ARM x64 builds not being able to view PDF cover images due to a bad update in DocNet.
* Some code cleanup
* Added experimental signalr update code to have a more natural refresh of library-detail page
* Hooked in ability to send new series events to UI
* Moved all scan (file scan only) tasks into Scan Queue. Made it so scheduled ScanLibraries will now check if any existing task is being run and reschedule for 3 hours, and 10 mins for scan series.
* Implemented the info event in the events widget and added a clear all button to dismiss all infos and errors. Added --event-widget-info-bg-color
* Remove --drawer-background-color since it's not used
* When new series added, inject directly into the view.
* Some debug code cleanup
* Fixed up the unit tests
* Ensure all config directories exist on startup
* Disabled Library Watching (that will go in next build)
* Ensure update for series is admin only
* Lots of code changes, scan series kinda works, specials are splitting, optimizations are failing. Demotivated on this work again.
* Removed SeriesFolder migration
* Added the SeriesFolder migration
* Added a new pipe for dates so we can provide some nicer defaults. Added folder path to the series detail.
* The scan optimizations now work for NTFS systems.
* Removed a TODO
* Migrated all the times to use DateTime.Now and not Utc.
* Refactored some repo calls to use the includes flag pattern
* Implemented a check for the library scan optimization check to validate if the library was updated (type change, library rename, folder change, or series deleted) and let the optimization be bypassed.
* Added another optimization which will use just folder attribute of last write time if the drive is not NTFS.
* Fixed a unit test
* Some code cleanup