Commit graph

31 commits

Author SHA1 Message Date
Joseph Milazzo
0eac193248
New Scan Loop (#1447)
* 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
2022-08-19 05:42:38 -07:00
Joseph Milazzo
af4f35da5b
Better Caching & Global Downloads (#1372)
* Fixed a bug where cache TTL was using a field which always was 0.

* Updated Scan Series task (from UI) to always re-calculate what's on file and not rely on last update. This leads to more reliable results, despite extra overhead.

* Added image range processing on images for the reader, for slower networks or large files

* On manga (single) try to use prefetched image, rather than re-requesting an image on pagination

* Reduced some more latency when rendering first page of next chapter via continuous reading mode

* Fixed a bug where metadata filter, after updating a typeahead, collapsing filter area then re-opening, the filter would still be applied, but the typeahead wouldn't show the modification.

* Coded an idea around download reporting, commiting for history, might not go with it.

* Refactored the download indicator into it's own component. Cleaning up some code for download within card component

* Another throw away commit. Put in some temp code, not working but not sure if I'm ditching entirely.

* Updated download service to enable range processing (so downloads can resume) and to reduce re-zipping if we've just downloaded something.

* Refactored events widget download indicator to the correct design. I will be moving forward with this new functionality.

* Added Required fields to ProgressDTO

* Cleaned up the event widget and updated existing download progress to indicate preparing the download, rather than the download itself.

* Updated dependencies for security alerts

* Refactored all download code to be streamlined and globally handled

* Updated ScanSeries to find the highest folder path before library, not just within the files. This could lead to scan series missing files due to nested folders on same parent level.

* Updated the caching code to use a builtin annotation. Images are now caching correctly.

* Fixed a bad redirect on an auth guard

* Tweaked how long we allow cache for, as the cover update now doesn't work well.

* Fixed a bug on downloading bookmarks from multiple series, where it would just choose the first series id for the temp file.

* Added an extra check for downloading bookmarks

* UI Security updates, Fixed a bug on bookmark reader, the reader on last page would throw some errors and not show No Next Chapter toast.

* After scan, clear temp

* Code smells
2022-07-13 07:45:14 -07:00
Joseph Milazzo
9b2e61695a
Double Page Rendering (#1333)
* First commit

Enabling double layout mode (and minor fixes)

* Second commit

* bug-fix/side-nav-icon

Side nav icons were not aligned to centred.

* bug-fix/side-nav-icon

Side navigation icons were not aligned centred.

* Squashed commit of the following:

commit d796bcdc0a
Author: majora2007 <josephmajora@gmail.com>
Date:   Thu May 26 00:24:25 2022 +0000

    Bump versions by dotnet-bump-version.

commit 3c92b6d8a5
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Wed May 25 19:11:01 2022 -0500

    Fixed the logic for caluclating time to read on comics

commit e7617862a5
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Wed May 25 17:49:45 2022 -0500

    Don't use plural if there is only 1 hour for reading

commit 713e20ebf4
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Wed May 25 17:48:50 2022 -0500

    Tweaked when we calculate min reading time

commit c0f7dd39a2
Author: majora2007 <josephmajora@gmail.com>
Date:   Wed May 25 22:10:42 2022 +0000

    Bump versions by dotnet-bump-version.

commit c1490d6e86
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Wed May 25 16:53:39 2022 -0500

    Word Count (#1286)

    * Adding some code for Robbie

    * See more on series detail metadata area is now at the bottom on the section

    * Cleaned up subtitle headings to use a single class for offset with actionables

    * Added some markup for the new design, waiting for Robbie to finish it off

    * styling age-rating badge

    * Started hooking up basic analyze file service and hooks in the UI. Basic code to implement the count is implemented and in benchmarks.

    * Hooked up analyze ui to backend

    * Refactored Series Detail metadata area to use a new icon/title design

    * Cleaned up the new design

    * Pushing for robbie to do css

    * Massive performance improvement to scan series where we only need to scan folders reported that have series in them, rather than the whole library.

    * Removed theme page as we no longer need it. Added WordCount to DTOs so the UI can show them. Added new pipe to format numbers in compact mode.

    * Hooked up actual reading time based on user's words per hour

    * Refactor some magic numbers to consts

    * Hooked in progress reporting for series word count

    * Hooked up analyze files

    * Re-implemented time to read on comics

    * Removed the word Last Read

    * Show proper language name instead of iso tag on series detail page. Added some error handling on word count code.

    * Reworked error handling

    * Fixed some security vulnerabilities in npm.

    * Handle a case where there are no text nodes and instead of returning an empty list, htmlagilitypack returns null.

    * Tweaked the styles a bit on the icon-and-title

    * Code cleanup

    Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>

commit 0a70ac35dc
Author: majora2007 <josephmajora@gmail.com>
Date:   Wed May 25 19:39:11 2022 +0000

    Bump versions by dotnet-bump-version.

commit a9a1ec02ca
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Wed May 25 14:25:53 2022 -0500

    Implemented the ability to parse some volume and chapter keywords for chinese. (#1285)

commit 1247f450e2
Author: majora2007 <josephmajora@gmail.com>
Date:   Wed May 25 17:21:56 2022 +0000

    Bump versions by dotnet-bump-version.

commit 1a128a3af4
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Wed May 25 12:05:16 2022 -0500

    Implemented the ability to read format tag and force special status. (#1284)

commit a0e1ba8d67
Author: majora2007 <josephmajora@gmail.com>
Date:   Mon May 23 23:30:19 2022 +0000

    Bump versions by dotnet-bump-version.

commit e0a2fc615f
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Mon May 23 18:19:52 2022 -0500

    UX Changes, Tasks, WebP, and More! (#1280)

    * When account updates occur for a user, send an event to them to tell them to refresh their account information (if they are on the site at the time). This way if we revoke permissions, the site will reactively adapt.

    * Some cleanup on the user preferences to remove some calls we don't need anymore.

    * Removed old bulk cleanup bookmark code as it's no longer needed.

    * Tweaked the messaging for stat collection to reflect what we collect now versus when this was initially implemented.

    * Implemented the ability for users to configure their servers to save bookmarks as webP. Reorganized the tabs for Admin dashboard to account for upcoming features.

    * Implemented the ability to bulk convert bookmarks (as many times as the user wants).

    Added a display of Reoccurring Jobs to the Tasks admin tab. Currently it's just placeholder, but will be enhanced further later in the release.

    * Tweaked the wording around the convert switch.

    * Moved System actions to the task tab

    * Added a controller just for Tachiyomi so we can have dedicated APIs for that client. Deprecated an existing API on the Reader route.

    * Fixed the unit tests

commit dd83b6a9a1
Author: majora2007 <josephmajora@gmail.com>
Date:   Sat May 21 23:36:25 2022 +0000

    Bump versions by dotnet-bump-version.

commit 16eb1e3e8e
Author: Joseph Milazzo <josephmajora@gmail.com>
Date:   Sat May 21 18:24:18 2022 -0500

    version bump (#1271)

commit f4f91fa5a9
Author: majora2007 <josephmajora@gmail.com>
Date:   Sat May 21 23:03:49 2022 +0000

    Bump versions by dotnet-bump-version.

commit 1801afd4a7
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Sat May 21 17:52:57 2022 -0500

    Updated the readme to reflect new UX and some tweaks to wordings. (#1270)

commit bcad2e4a55
Author: majora2007 <josephmajora@gmail.com>
Date:   Sat May 21 02:18:06 2022 +0000

    Bump versions by dotnet-bump-version.

commit 81082508f2
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Fri May 20 21:05:09 2022 -0500

    Release Shakeout Part 2 (#1267)

    * Fixed manga reader and removed debug code

    * Removed some console.logs

commit 92010379f1
Author: majora2007 <josephmajora@gmail.com>
Date:   Fri May 20 23:00:48 2022 +0000

    Bump versions by dotnet-bump-version.

commit a062341564
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Fri May 20 17:50:17 2022 -0500

    Release Shakeout (#1266)

    * Fixed an issue with fit to screen where spread images would fail to generate a paging area long enough.

    * Fixed pagination placement on original scaling

    * Fixed an issue with webtoon reader not reporting scroll events due to a fix from manga reader.

    * Fixing select on black book-reader theme

    * Fixing canvas split centering

    * Fixed a bug with white mode in book reader not rendering correctly. When bookmarking new pages after previously have viewing bookmarks for a series, ensure we clear out the temp cache else your new files wont be visible till next day.

    * Use grid on related tab

    * Clear bookmarks was not hooked up. Bulk add to collection didn't have label hidden

    * Fixed bug where filter might stay open between pages

    * Fixed typo on relationship for Adaptation

    * Contains was missing from series relation modal

    * Tweaked some methods and wording on reading list page

    * Cleaned up the phrasing when we abort a scan.

    * Fixed issue where typeahead wasn't reopening and it wasn't filtering selected options

    * Fixed some typeahead bugs and decreased interval for docker health check

    * Cleaned up and fixed some logic with receiving cover image update events

    Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>

commit 49d8a7c6ca
Author: majora2007 <josephmajora@gmail.com>
Date:   Thu May 19 12:24:13 2022 +0000

    Bump versions by dotnet-bump-version.

commit f2b1cd55f0
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Thu May 19 07:14:18 2022 -0500

    Remove Light and E-Ink theme (#1263)

    * Refactored code to show action bar instead of drawer in immersive mode

    * Card grid

    * adding margin for pagination gap

    * Fixed a rare routing case that wouldn't redirect

    * Fixed a bug where series detail would show blank filtering

    * Fixing image scaling and library card spacing

    * Refactored some methods to be static

    * Adding card grid to series detail

    * Fixed a bug with webtoon going to non-webtoon mode, resulting in black screen.

    * Ensure emails are trimmed when trying to invite.

    * Don't show More In if there is only 1 item in there on library recommended tab

    * Fixed some bugs around locking metadata fields where the correct param wasn't being sent to backend.

    * Added some UI error messaging when the email doesn't match the confirm-email (or rather any email in the system).

    * Fixed some pages where actions weren't working (library detail) and removed some actionable buttons where they didn't make sense

    * Refactored the series detail to use Robbie's new grid system.

    * some styling fixes

    * Styling fixes

    - Removing select border gap
    - fixing switches on lite theme
    - fixing search result text-light

    * better css var naming

    * changing search lite text color override

    * fixing as per feedback

    * Removing boolean from being visible in bookreader

    * Fixed some bugs in bulk operations not being visible on light/eink screens. Added --bulk-selection-highlight-text-color and --bulk-selection-text-color.

    * Wrote basic code to remove other themes. Need a migration instead.

    * Added a migration to remove light/e-ink themes and migrate users over to Dark theme by default.

    * Fixed unit tests

    Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>

commit 876e19177e
Author: majora2007 <josephmajora@gmail.com>
Date:   Thu May 19 00:46:22 2022 +0000

    Bump versions by dotnet-bump-version.

commit 1961b41268
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Wed May 18 19:31:49 2022 -0500

    Last batch of bugfixes (#1262)

    * Refactored code to show action bar instead of drawer in immersive mode

    * Card grid

    * adding margin for pagination gap

    * Fixed a rare routing case that wouldn't redirect

    * Fixed a bug where series detail would show blank filtering

    * Fixing image scaling and library card spacing

    * Refactored some methods to be static

    * Adding card grid to series detail

    * Fixed a bug with webtoon going to non-webtoon mode, resulting in black screen.

    * Ensure emails are trimmed when trying to invite.

    * Don't show More In if there is only 1 item in there on library recommended tab

    * Fixed some bugs around locking metadata fields where the correct param wasn't being sent to backend.

    * Added some UI error messaging when the email doesn't match the confirm-email (or rather any email in the system).

    * Fixed some pages where actions weren't working (library detail) and removed some actionable buttons where they didn't make sense

    * Refactored the series detail to use Robbie's new grid system.

    * some styling fixes

    * Styling fixes

    - Removing select border gap
    - fixing switches on lite theme
    - fixing search result text-light

    * better css var naming

    * changing search lite text color override

    * fixing as per feedback

    * Removing boolean from being visible in bookreader

    * Fixed some bugs in bulk operations not being visible on light/eink screens. Added --bulk-selection-highlight-text-color and --bulk-selection-text-color.

    Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>

commit 6f23a3bc6d
Author: majora2007 <josephmajora@gmail.com>
Date:   Sun May 15 21:31:42 2022 +0000

    Bump versions by dotnet-bump-version.

commit 92fb185f20
Author: Robbie Davis <robbie@therobbiedavis.com>
Date:   Sun May 15 17:21:17 2022 -0400

    Adding code to make sure bottom actionbar is applied on layout change (#1258)

commit bb791b7789
Author: majora2007 <josephmajora@gmail.com>
Date:   Sun May 15 19:44:47 2022 +0000

    Bump versions by dotnet-bump-version.

commit cdc4931770
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Sun May 15 14:34:53 2022 -0500

    Reader scroll area fix (#1257)

    * Changes to make the pagination area scrollable (not working, debug code for Robbie)

    * Adjusted the html to be easier to understand and more streamlined

    * Fixed inability to scroll in manga reader over pagination areas for everything but the bottom bar

    * Book reader now allows you to scroll over pagination area

commit ccb6414e9e
Author: majora2007 <josephmajora@gmail.com>
Date:   Sat May 14 22:13:24 2022 +0000

    Bump versions by dotnet-bump-version.

commit d458a823ef
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Sat May 14 17:02:58 2022 -0500

    More Reader Bugfixes (#1255)

    * Added css to center images

    * Better scaling css

    * Removing vertical height css for actionbar calc

    * Fixed a bug where book settings couldn't be saved due to typo in model

    * fixing height across layouts

    * Fixed an issue where column mode would reset to user preference default between continuous reader loads

    * Fixing some more logic

    * Reading direction arrow keys now flip

    * Small code cleanup on Robbie's code

    Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>

commit be5b997259
Author: majora2007 <josephmajora@gmail.com>
Date:   Sat May 14 00:40:11 2022 +0000

    Bump versions by dotnet-bump-version.

commit f701f8e599
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Fri May 13 19:30:37 2022 -0500

    Book Reader Bugfixes (#1254)

    * Fixed image scoping breaking and books not being able to load images

    * Cleaned up a lot of variables and added more jsdoc. After shifting the margin, we try to recover the column layout width,height, and scroll posisiton.

    * Tap to paginate is working on first load now

    * On resize, rescroll to attempt to avoid breakage

    * Fixed transparent background for action bar on white theme

    * Moved some lists to immutable arrays

    * Actually fixed backgournd now

    * Fixed some settings not updating in book reader on load

    * Put some code in place to test out opening menu with clicking on the document

    * Fixed settings not propagating to the reader

    * Fixing 2 column when loading annd ios mobile

    * Fixed an issue where paging to prev page would sometimes skip the first page.

    * Fixing previous page skipping first page of chapter

    * removing console logs

    * Save progress when we page

    * Click on document to show the side nav

    * Removed columns auto because it could render more columns than applicable. Don't explicitly call saveProgress on prev page, as we already do in another call.

    Adjusted the logic to calculate windowHeight and width to be the same throughout the reader.

    * Setting select fix and settings polish

    * Fixed awkward tooltip wording

    * Added a message for when there is nothing to show on recommended tab

    * Removed bug marker, there was no bug after all

    * Fixing book title truncation in action bar

    * When counting volumes or chapters that have range, count the max part of the range for publication status.

    * Fixing TOC rendering issue

    * Styling fixes

    - Fixed an issue where the image height in the book reader was the column height plus padding so it was breaking pagination calc.
    - Centered book reader setting pills
    - Made inactive setting pill into a ghost button
    - Fixed spacing across the reader settings drawer

    * Added a bit of code to allow us to disable buttons before we click for next chapter load

    * Removed titles from action bars

    * The next page button will now show as the primary color to indicate to the user what the next forward page is.

    * Added a view series to bookmark page and removed actions from header since it didn't work

    * Fixed a bug where pagination wasn't mutating url state

    * Lots of changes, code is kinda working.

    Added Immersive Mode, but didn't generate migration.

    Added concept of virtual pages with ability to see them. Math is still slightly off.

    Cleaned up prefetching code so we do it much earlier.

    Added some code that doesn't work to disable buttons with virtual paging included.

    * When turning immersive mode on, force tap to paginate

    * Refactored out the book reader state as it wasn't very beneficial

    * Fixed total virtual page calculation

    * Next/prev page seems to be working pretty well

    * Applied Robbie's virtual page logic and fixed a bug in prev page code

    * Changed the next page to use same virtual page logic

    * Getting back and forward working...somehow.

    * removing redundant code

    * Fixing book title overflow from new action bar changes

    * Polishing pagination styles

    * Changing chapter to section

    * Fixing up other book reader themes

    * Fixed the login header being off-center

    * Fixing styling to follow approach

    * Refactored the pagination buttons to properly call next/prev page based on reading direction

    * Drawer pagination buttons now respect when there is no chapters (prev/next)

    * Everything except disabling buttons when on last possible page working

    * Added Book Reader immersive mode migration

    * Disable next/prev buttons for continuous reading before we request next/prev chapter if there is no chapter.

    * Show a tooltip for the title

    * Fixed unit test

    Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>

commit dfcc2f0813
Author: majora2007 <josephmajora@gmail.com>
Date:   Mon May 9 01:01:46 2022 +0000

    Bump versions by dotnet-bump-version.

commit 2723a6cd10
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Sun May 8 19:52:15 2022 -0500

    Book Reader Redesign with e-ink focus (#1246)

    * Refactored the drawer into offcanvas component. Had to write some hacks to emulate how bootstrap's javascript implementation works as ngBootstrap doesn't have a component yet.

    * Cleaned up some of the code

    * Rewrote drawer to align it with the new design

    * First pass, refactored table of content into it's own component

    * Refactored all of the settings logic into a separate component. Everything is broken.

    * More settings on on reactive form

    * More code cleanup on settings

    * Misc fixes around the drawer code. Fixed a bug where range sliders were inheriting background color of normal text inputs

    * Fixed dark mode with book reader.

    We now clear the theme from the main app so book reader is self-contained. Styles for dark mode are injected into the reading-section. Styles that were previously in scss are now only for the actual menu system.

    * Cleaned up drawer styling on header

    * Removed an ngIf statement for click to paginate

    * Tweaked the accent style to have smaller font size and adjusted style on light mode. Cleaned up some clearTimeout code in a further effort to streamline codebase.

    * Refactored Dark mode into a basic theme. Currently styles are hardcoded.

    * Patched book theme in from themes branch

    * Patched in the backend for Book Theme (not tested yet)

    * Fixed a bug in seeding code for book themes. Started integration of themes into the reader settings

    * Everything except managing themes is working. Themes are a bit shakey, having second thoughts if we should have them or not.

    * Reverted the ability to do custom user book themes. Code is stable with system themes.

    * Stablize the Styles (#1128)

    * Fixed a bug where adding multiple series to reading list would throw an error on UI, but it was successful.

    * When a series has a reading list, we now show the connection on Series detail.

    * Removed all baseurl code from UI and not-connected component since we no longer use it.

    * Fixed tag badges not showing a border. Added last read time to the series detail page

    * Fixed up error interceptor to remove no-connection code

    * Changed implementation for series detail. Book libraries will never send chapters back. Volume 0 volumes will not be sent in volumes ever. Fixed up more renaming logic on books to send more accurate representations to the UI.

    * Cleaned up the selected tab and tab display logic

    * Fixed a bad where statement in reading lists for series

    * Fixed up tab logic again

    * Fixed a small margin on search backdrop

    * Made badge expander button smaller to align with badges

    * Fixed a few UIs due to .form-group and .form-row being removed

    * Updated Theme component page to help with style testing

    * Added more components to theme tester

    * Cleaned up some styling

    * Fixed opacity on search item hover

    * Bump versions by dotnet-bump-version.

    * Tweaked the accordion styles for light mode

    * Set dark book theme as default. Refactored resetSettings to be much cleaner

    * Started the refactor to allow book themes to affect global css variables

    * Fixed some issues with my css variable declarations

    * Fixed a close model state update

    * Lots of work, but dark mode on the book reader is basically done. We have to code the themes much like the site themes

    * Some black theme enhancements

    * Started working on column layout in book reader.

    * Cleaned up the CSS on Reader Settings

    * Hooked up reading direction

    * Got column and double column layout working

    * Implemented some basic virtual paging and hooked in book color theme and layout mode into user preferences.

    * Migration wrote, can edit page layout and color theme on book reader. Removed book dark mode since no longer needed.

    Fixed a bug on login/register forms where when input is focused, text is white and not black.

    * When loading book reader, apply column layout.

    * Lots of work around 2 column layout, working on images not splitting. Still not working, committing so i can merge develop in and validate code with new manga reader.

    * Fixed images being split into 2 BUT regression on each page boundary, total reading height is smaller and smaller

    * Fixed some rendering bugs where toggling column layouts would shrink images on screen constantly.

    Fixed a bug where bottom bar wouldn't render on column layout in some conditions (this might need to be reworked)

    * Started progress on progress work

    * Updated .NET to 6.0.4

    * Fixed a bug where DataContextModelSnapshot was being removed on build thus new migrations were broken.

    * Tweaked the code around progress saving so that we don't loose track of last scroll element on page load

    * Trying to restore progress, but stuck

    * Extra merge stuff

    * Fixed a bug where volumes that are a range fail to generate series detail

    * No gutters on whole app. Book reader backend now applies the image class automatically at the backend.

    * Added wiki documentation into invite user flow and register admin user to help users understand email isn't required and they can host their own service.

    * Removed bottom padding

    * Refactored the document height to be set and removed on nav service, so the book reader and manga reader aren't broken.

    * Fixed the height of the action bar to simplify logic and keep the code cleaner. Refactored book service image scoping to be much more streamlined and efficient

    * Fixed the height of action bar to 62px and adjusted code to use the hardcoded px. (code commented)

    * Removed commented out code from fixed action bar height

    * Progress restoration seems to be working

    * Code cleanup

    * Ensure the bottom action bar is at the bottom of the viewport on small pages

    * Fixed book fonts not setting properly and added OpenDyslexic font.

    * Fixed up some font issues

    * Updated drawer so all sections are open by default

    * Switched some LINQ to use MinBy

    * When navigating between pages and column layout, adjust the shift for the user.

    * Removed some debug code

    * Blacklist .qpkg folders and don't scan Recently-Snapshot or recycle folders.

    * Renamed the scale width to be scoped to kavita to avoid conflicts.

    * Refactored ngx-sliders out to use normal range instead. Changed up the preferences to separate image and book settinngs into own accordion.

    * updated user preferences for new migration options (not committed yet)

    * Removed some debug code

    * Remove console.logs

    * Migration committed, let's release this to users.

    * A lot of crazy code just to ensure that when you close drawer the toggle reflectst that state.

* bug-fix/typos and linting

* Update API.csproj

* Squashed commit of the following:

commit d796bcdc0a
Author: majora2007 <josephmajora@gmail.com>
Date:   Thu May 26 00:24:25 2022 +0000

    Bump versions by dotnet-bump-version.

commit 3c92b6d8a5
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Wed May 25 19:11:01 2022 -0500

    Fixed the logic for caluclating time to read on comics

commit e7617862a5
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Wed May 25 17:49:45 2022 -0500

    Don't use plural if there is only 1 hour for reading

commit 713e20ebf4
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Wed May 25 17:48:50 2022 -0500

    Tweaked when we calculate min reading time

commit c0f7dd39a2
Author: majora2007 <josephmajora@gmail.com>
Date:   Wed May 25 22:10:42 2022 +0000

    Bump versions by dotnet-bump-version.

commit c1490d6e86
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Wed May 25 16:53:39 2022 -0500

    Word Count (#1286)

    * Adding some code for Robbie

    * See more on series detail metadata area is now at the bottom on the section

    * Cleaned up subtitle headings to use a single class for offset with actionables

    * Added some markup for the new design, waiting for Robbie to finish it off

    * styling age-rating badge

    * Started hooking up basic analyze file service and hooks in the UI. Basic code to implement the count is implemented and in benchmarks.

    * Hooked up analyze ui to backend

    * Refactored Series Detail metadata area to use a new icon/title design

    * Cleaned up the new design

    * Pushing for robbie to do css

    * Massive performance improvement to scan series where we only need to scan folders reported that have series in them, rather than the whole library.

    * Removed theme page as we no longer need it. Added WordCount to DTOs so the UI can show them. Added new pipe to format numbers in compact mode.

    * Hooked up actual reading time based on user's words per hour

    * Refactor some magic numbers to consts

    * Hooked in progress reporting for series word count

    * Hooked up analyze files

    * Re-implemented time to read on comics

    * Removed the word Last Read

    * Show proper language name instead of iso tag on series detail page. Added some error handling on word count code.

    * Reworked error handling

    * Fixed some security vulnerabilities in npm.

    * Handle a case where there are no text nodes and instead of returning an empty list, htmlagilitypack returns null.

    * Tweaked the styles a bit on the icon-and-title

    * Code cleanup

    Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>

commit 0a70ac35dc
Author: majora2007 <josephmajora@gmail.com>
Date:   Wed May 25 19:39:11 2022 +0000

    Bump versions by dotnet-bump-version.

commit a9a1ec02ca
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Wed May 25 14:25:53 2022 -0500

    Implemented the ability to parse some volume and chapter keywords for chinese. (#1285)

commit 1247f450e2
Author: majora2007 <josephmajora@gmail.com>
Date:   Wed May 25 17:21:56 2022 +0000

    Bump versions by dotnet-bump-version.

commit 1a128a3af4
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Wed May 25 12:05:16 2022 -0500

    Implemented the ability to read format tag and force special status. (#1284)

commit a0e1ba8d67
Author: majora2007 <josephmajora@gmail.com>
Date:   Mon May 23 23:30:19 2022 +0000

    Bump versions by dotnet-bump-version.

commit e0a2fc615f
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Mon May 23 18:19:52 2022 -0500

    UX Changes, Tasks, WebP, and More! (#1280)

    * When account updates occur for a user, send an event to them to tell them to refresh their account information (if they are on the site at the time). This way if we revoke permissions, the site will reactively adapt.

    * Some cleanup on the user preferences to remove some calls we don't need anymore.

    * Removed old bulk cleanup bookmark code as it's no longer needed.

    * Tweaked the messaging for stat collection to reflect what we collect now versus when this was initially implemented.

    * Implemented the ability for users to configure their servers to save bookmarks as webP. Reorganized the tabs for Admin dashboard to account for upcoming features.

    * Implemented the ability to bulk convert bookmarks (as many times as the user wants).

    Added a display of Reoccurring Jobs to the Tasks admin tab. Currently it's just placeholder, but will be enhanced further later in the release.

    * Tweaked the wording around the convert switch.

    * Moved System actions to the task tab

    * Added a controller just for Tachiyomi so we can have dedicated APIs for that client. Deprecated an existing API on the Reader route.

    * Fixed the unit tests

commit dd83b6a9a1
Author: majora2007 <josephmajora@gmail.com>
Date:   Sat May 21 23:36:25 2022 +0000

    Bump versions by dotnet-bump-version.

commit 16eb1e3e8e
Author: Joseph Milazzo <josephmajora@gmail.com>
Date:   Sat May 21 18:24:18 2022 -0500

    version bump (#1271)

commit f4f91fa5a9
Author: majora2007 <josephmajora@gmail.com>
Date:   Sat May 21 23:03:49 2022 +0000

    Bump versions by dotnet-bump-version.

commit 1801afd4a7
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Sat May 21 17:52:57 2022 -0500

    Updated the readme to reflect new UX and some tweaks to wordings. (#1270)

commit bcad2e4a55
Author: majora2007 <josephmajora@gmail.com>
Date:   Sat May 21 02:18:06 2022 +0000

    Bump versions by dotnet-bump-version.

commit 81082508f2
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Fri May 20 21:05:09 2022 -0500

    Release Shakeout Part 2 (#1267)

    * Fixed manga reader and removed debug code

    * Removed some console.logs

commit 92010379f1
Author: majora2007 <josephmajora@gmail.com>
Date:   Fri May 20 23:00:48 2022 +0000

    Bump versions by dotnet-bump-version.

commit a062341564
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Fri May 20 17:50:17 2022 -0500

    Release Shakeout (#1266)

    * Fixed an issue with fit to screen where spread images would fail to generate a paging area long enough.

    * Fixed pagination placement on original scaling

    * Fixed an issue with webtoon reader not reporting scroll events due to a fix from manga reader.

    * Fixing select on black book-reader theme

    * Fixing canvas split centering

    * Fixed a bug with white mode in book reader not rendering correctly. When bookmarking new pages after previously have viewing bookmarks for a series, ensure we clear out the temp cache else your new files wont be visible till next day.

    * Use grid on related tab

    * Clear bookmarks was not hooked up. Bulk add to collection didn't have label hidden

    * Fixed bug where filter might stay open between pages

    * Fixed typo on relationship for Adaptation

    * Contains was missing from series relation modal

    * Tweaked some methods and wording on reading list page

    * Cleaned up the phrasing when we abort a scan.

    * Fixed issue where typeahead wasn't reopening and it wasn't filtering selected options

    * Fixed some typeahead bugs and decreased interval for docker health check

    * Cleaned up and fixed some logic with receiving cover image update events

    Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>

commit 49d8a7c6ca
Author: majora2007 <josephmajora@gmail.com>
Date:   Thu May 19 12:24:13 2022 +0000

    Bump versions by dotnet-bump-version.

commit f2b1cd55f0
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Thu May 19 07:14:18 2022 -0500

    Remove Light and E-Ink theme (#1263)

    * Refactored code to show action bar instead of drawer in immersive mode

    * Card grid

    * adding margin for pagination gap

    * Fixed a rare routing case that wouldn't redirect

    * Fixed a bug where series detail would show blank filtering

    * Fixing image scaling and library card spacing

    * Refactored some methods to be static

    * Adding card grid to series detail

    * Fixed a bug with webtoon going to non-webtoon mode, resulting in black screen.

    * Ensure emails are trimmed when trying to invite.

    * Don't show More In if there is only 1 item in there on library recommended tab

    * Fixed some bugs around locking metadata fields where the correct param wasn't being sent to backend.

    * Added some UI error messaging when the email doesn't match the confirm-email (or rather any email in the system).

    * Fixed some pages where actions weren't working (library detail) and removed some actionable buttons where they didn't make sense

    * Refactored the series detail to use Robbie's new grid system.

    * some styling fixes

    * Styling fixes

    - Removing select border gap
    - fixing switches on lite theme
    - fixing search result text-light

    * better css var naming

    * changing search lite text color override

    * fixing as per feedback

    * Removing boolean from being visible in bookreader

    * Fixed some bugs in bulk operations not being visible on light/eink screens. Added --bulk-selection-highlight-text-color and --bulk-selection-text-color.

    * Wrote basic code to remove other themes. Need a migration instead.

    * Added a migration to remove light/e-ink themes and migrate users over to Dark theme by default.

    * Fixed unit tests

    Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>

commit 876e19177e
Author: majora2007 <josephmajora@gmail.com>
Date:   Thu May 19 00:46:22 2022 +0000

    Bump versions by dotnet-bump-version.

commit 1961b41268
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Wed May 18 19:31:49 2022 -0500

    Last batch of bugfixes (#1262)

    * Refactored code to show action bar instead of drawer in immersive mode

    * Card grid

    * adding margin for pagination gap

    * Fixed a rare routing case that wouldn't redirect

    * Fixed a bug where series detail would show blank filtering

    * Fixing image scaling and library card spacing

    * Refactored some methods to be static

    * Adding card grid to series detail

    * Fixed a bug with webtoon going to non-webtoon mode, resulting in black screen.

    * Ensure emails are trimmed when trying to invite.

    * Don't show More In if there is only 1 item in there on library recommended tab

    * Fixed some bugs around locking metadata fields where the correct param wasn't being sent to backend.

    * Added some UI error messaging when the email doesn't match the confirm-email (or rather any email in the system).

    * Fixed some pages where actions weren't working (library detail) and removed some actionable buttons where they didn't make sense

    * Refactored the series detail to use Robbie's new grid system.

    * some styling fixes

    * Styling fixes

    - Removing select border gap
    - fixing switches on lite theme
    - fixing search result text-light

    * better css var naming

    * changing search lite text color override

    * fixing as per feedback

    * Removing boolean from being visible in bookreader

    * Fixed some bugs in bulk operations not being visible on light/eink screens. Added --bulk-selection-highlight-text-color and --bulk-selection-text-color.

    Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>

commit 6f23a3bc6d
Author: majora2007 <josephmajora@gmail.com>
Date:   Sun May 15 21:31:42 2022 +0000

    Bump versions by dotnet-bump-version.

commit 92fb185f20
Author: Robbie Davis <robbie@therobbiedavis.com>
Date:   Sun May 15 17:21:17 2022 -0400

    Adding code to make sure bottom actionbar is applied on layout change (#1258)

commit bb791b7789
Author: majora2007 <josephmajora@gmail.com>
Date:   Sun May 15 19:44:47 2022 +0000

    Bump versions by dotnet-bump-version.

commit cdc4931770
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Sun May 15 14:34:53 2022 -0500

    Reader scroll area fix (#1257)

    * Changes to make the pagination area scrollable (not working, debug code for Robbie)

    * Adjusted the html to be easier to understand and more streamlined

    * Fixed inability to scroll in manga reader over pagination areas for everything but the bottom bar

    * Book reader now allows you to scroll over pagination area

commit ccb6414e9e
Author: majora2007 <josephmajora@gmail.com>
Date:   Sat May 14 22:13:24 2022 +0000

    Bump versions by dotnet-bump-version.

commit d458a823ef
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Sat May 14 17:02:58 2022 -0500

    More Reader Bugfixes (#1255)

    * Added css to center images

    * Better scaling css

    * Removing vertical height css for actionbar calc

    * Fixed a bug where book settings couldn't be saved due to typo in model

    * fixing height across layouts

    * Fixed an issue where column mode would reset to user preference default between continuous reader loads

    * Fixing some more logic

    * Reading direction arrow keys now flip

    * Small code cleanup on Robbie's code

    Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>

commit be5b997259
Author: majora2007 <josephmajora@gmail.com>
Date:   Sat May 14 00:40:11 2022 +0000

    Bump versions by dotnet-bump-version.

commit f701f8e599
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Fri May 13 19:30:37 2022 -0500

    Book Reader Bugfixes (#1254)

    * Fixed image scoping breaking and books not being able to load images

    * Cleaned up a lot of variables and added more jsdoc. After shifting the margin, we try to recover the column layout width,height, and scroll posisiton.

    * Tap to paginate is working on first load now

    * On resize, rescroll to attempt to avoid breakage

    * Fixed transparent background for action bar on white theme

    * Moved some lists to immutable arrays

    * Actually fixed backgournd now

    * Fixed some settings not updating in book reader on load

    * Put some code in place to test out opening menu with clicking on the document

    * Fixed settings not propagating to the reader

    * Fixing 2 column when loading annd ios mobile

    * Fixed an issue where paging to prev page would sometimes skip the first page.

    * Fixing previous page skipping first page of chapter

    * removing console logs

    * Save progress when we page

    * Click on document to show the side nav

    * Removed columns auto because it could render more columns than applicable. Don't explicitly call saveProgress on prev page, as we already do in another call.

    Adjusted the logic to calculate windowHeight and width to be the same throughout the reader.

    * Setting select fix and settings polish

    * Fixed awkward tooltip wording

    * Added a message for when there is nothing to show on recommended tab

    * Removed bug marker, there was no bug after all

    * Fixing book title truncation in action bar

    * When counting volumes or chapters that have range, count the max part of the range for publication status.

    * Fixing TOC rendering issue

    * Styling fixes

    - Fixed an issue where the image height in the book reader was the column height plus padding so it was breaking pagination calc.
    - Centered book reader setting pills
    - Made inactive setting pill into a ghost button
    - Fixed spacing across the reader settings drawer

    * Added a bit of code to allow us to disable buttons before we click for next chapter load

    * Removed titles from action bars

    * The next page button will now show as the primary color to indicate to the user what the next forward page is.

    * Added a view series to bookmark page and removed actions from header since it didn't work

    * Fixed a bug where pagination wasn't mutating url state

    * Lots of changes, code is kinda working.

    Added Immersive Mode, but didn't generate migration.

    Added concept of virtual pages with ability to see them. Math is still slightly off.

    Cleaned up prefetching code so we do it much earlier.

    Added some code that doesn't work to disable buttons with virtual paging included.

    * When turning immersive mode on, force tap to paginate

    * Refactored out the book reader state as it wasn't very beneficial

    * Fixed total virtual page calculation

    * Next/prev page seems to be working pretty well

    * Applied Robbie's virtual page logic and fixed a bug in prev page code

    * Changed the next page to use same virtual page logic

    * Getting back and forward working...somehow.

    * removing redundant code

    * Fixing book title overflow from new action bar changes

    * Polishing pagination styles

    * Changing chapter to section

    * Fixing up other book reader themes

    * Fixed the login header being off-center

    * Fixing styling to follow approach

    * Refactored the pagination buttons to properly call next/prev page based on reading direction

    * Drawer pagination buttons now respect when there is no chapters (prev/next)

    * Everything except disabling buttons when on last possible page working

    * Added Book Reader immersive mode migration

    * Disable next/prev buttons for continuous reading before we request next/prev chapter if there is no chapter.

    * Show a tooltip for the title

    * Fixed unit test

    Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>

commit dfcc2f0813
Author: majora2007 <josephmajora@gmail.com>
Date:   Mon May 9 01:01:46 2022 +0000

    Bump versions by dotnet-bump-version.

commit 2723a6cd10
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Sun May 8 19:52:15 2022 -0500

    Book Reader Redesign with e-ink focus (#1246)

    * Refactored the drawer into offcanvas component. Had to write some hacks to emulate how bootstrap's javascript implementation works as ngBootstrap doesn't have a component yet.

    * Cleaned up some of the code

    * Rewrote drawer to align it with the new design

    * First pass, refactored table of content into it's own component

    * Refactored all of the settings logic into a separate component. Everything is broken.

    * More settings on on reactive form

    * More code cleanup on settings

    * Misc fixes around the drawer code. Fixed a bug where range sliders were inheriting background color of normal text inputs

    * Fixed dark mode with book reader.

    We now clear the theme from the main app so book reader is self-contained. Styles for dark mode are injected into the reading-section. Styles that were previously in scss are now only for the actual menu system.

    * Cleaned up drawer styling on header

    * Removed an ngIf statement for click to paginate

    * Tweaked the accent style to have smaller font size and adjusted style on light mode. Cleaned up some clearTimeout code in a further effort to streamline codebase.

    * Refactored Dark mode into a basic theme. Currently styles are hardcoded.

    * Patched book theme in from themes branch

    * Patched in the backend for Book Theme (not tested yet)

    * Fixed a bug in seeding code for book themes. Started integration of themes into the reader settings

    * Everything except managing themes is working. Themes are a bit shakey, having second thoughts if we should have them or not.

    * Reverted the ability to do custom user book themes. Code is stable with system themes.

    * Stablize the Styles (#1128)

    * Fixed a bug where adding multiple series to reading list would throw an error on UI, but it was successful.

    * When a series has a reading list, we now show the connection on Series detail.

    * Removed all baseurl code from UI and not-connected component since we no longer use it.

    * Fixed tag badges not showing a border. Added last read time to the series detail page

    * Fixed up error interceptor to remove no-connection code

    * Changed implementation for series detail. Book libraries will never send chapters back. Volume 0 volumes will not be sent in volumes ever. Fixed up more renaming logic on books to send more accurate representations to the UI.

    * Cleaned up the selected tab and tab display logic

    * Fixed a bad where statement in reading lists for series

    * Fixed up tab logic again

    * Fixed a small margin on search backdrop

    * Made badge expander button smaller to align with badges

    * Fixed a few UIs due to .form-group and .form-row being removed

    * Updated Theme component page to help with style testing

    * Added more components to theme tester

    * Cleaned up some styling

    * Fixed opacity on search item hover

    * Bump versions by dotnet-bump-version.

    * Tweaked the accordion styles for light mode

    * Set dark book theme as default. Refactored resetSettings to be much cleaner

    * Started the refactor to allow book themes to affect global css variables

    * Fixed some issues with my css variable declarations

    * Fixed a close model state update

    * Lots of work, but dark mode on the book reader is basically done. We have to code the themes much like the site themes

    * Some black theme enhancements

    * Started working on column layout in book reader.

    * Cleaned up the CSS on Reader Settings

    * Hooked up reading direction

    * Got column and double column layout working

    * Implemented some basic virtual paging and hooked in book color theme and layout mode into user preferences.

    * Migration wrote, can edit page layout and color theme on book reader. Removed book dark mode since no longer needed.

    Fixed a bug on login/register forms where when input is focused, text is white and not black.

    * When loading book reader, apply column layout.

    * Lots of work around 2 column layout, working on images not splitting. Still not working, committing so i can merge develop in and validate code with new manga reader.

    * Fixed images being split into 2 BUT regression on each page boundary, total reading height is smaller and smaller

    * Fixed some rendering bugs where toggling column layouts would shrink images on screen constantly.

    Fixed a bug where bottom bar wouldn't render on column layout in some conditions (this might need to be reworked)

    * Started progress on progress work

    * Updated .NET to 6.0.4

    * Fixed a bug where DataContextModelSnapshot was being removed on build thus new migrations were broken.

    * Tweaked the code around progress saving so that we don't loose track of last scroll element on page load

    * Trying to restore progress, but stuck

    * Extra merge stuff

    * Fixed a bug where volumes that are a range fail to generate series detail

    * No gutters on whole app. Book reader backend now applies the image class automatically at the backend.

    * Added wiki documentation into invite user flow and register admin user to help users understand email isn't required and they can host their own service.

    * Removed bottom padding

    * Refactored the document height to be set and removed on nav service, so the book reader and manga reader aren't broken.

    * Fixed the height of the action bar to simplify logic and keep the code cleaner. Refactored book service image scoping to be much more streamlined and efficient

    * Fixed the height of action bar to 62px and adjusted code to use the hardcoded px. (code commented)

    * Removed commented out code from fixed action bar height

    * Progress restoration seems to be working

    * Code cleanup

    * Ensure the bottom action bar is at the bottom of the viewport on small pages

    * Fixed book fonts not setting properly and added OpenDyslexic font.

    * Fixed up some font issues

    * Updated drawer so all sections are open by default

    * Switched some LINQ to use MinBy

    * When navigating between pages and column layout, adjust the shift for the user.

    * Removed some debug code

    * Blacklist .qpkg folders and don't scan Recently-Snapshot or recycle folders.

    * Renamed the scale width to be scoped to kavita to avoid conflicts.

    * Refactored ngx-sliders out to use normal range instead. Changed up the preferences to separate image and book settinngs into own accordion.

    * updated user preferences for new migration options (not committed yet)

    * Removed some debug code

    * Remove console.logs

    * Migration committed, let's release this to users.

    * A lot of crazy code just to ensure that when you close drawer the toggle reflectst that state.

* bug-fix/typos & linting

* Add files via upload

* bug-fix/double layout

html: image-1 <img> needed closing
scss: full-height needed display: inline-block (not grid)

* bug-fix/itemsPerPage

Set items per page to 112 (%8=0, %7=0)

* Revert "Add files via upload"

This reverts commit 446e3e0f04.

Revert upload package.json

* bugfix/user-preferences

Fixed a bug with the BookReader panel id missing brackets which prevented the accordion from functioning correctly.

* Squashed commit of the following:

commit ebbb3ec86b
Merge: 24d90527 2ed0aca8
Author: marcelo <mguimaraes@okanagan.bc.ca>
Date:   Fri Jun 17 21:15:42 2022 -0700

    Merge remote-tracking branch 'upstream/develop' into develop

commit 2ed0aca866
Author: majora2007 <josephmajora@gmail.com>
Date:   Thu Jun 16 17:20:39 2022 +0000

    Bump versions by dotnet-bump-version.

commit 9c851b0f0e
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Thu Jun 16 12:08:09 2022 -0500

    Directory Picker Rework (#1325)

    * Started on the directory picker refactor.

    * Coded some basic working version. Needs styling and variable cleanup

    * code cleanup

    * Implemented the ability to expose swagger on non-development servers.

    * Implemented the ability to expose swagger on non-development servers.

commit 0f5a7ee6fa
Author: majora2007 <josephmajora@gmail.com>
Date:   Thu Jun 16 14:09:35 2022 +0000

    Bump versions by dotnet-bump-version.

commit c8418d127c
Author: Robbie Davis <robbie@therobbiedavis.com>
Date:   Thu Jun 16 09:50:23 2022 -0400

    Bugfix for sticky tabs on firefox (#1322)

    * Updating calcs for firefox

    * Removing unused code

    * Fixed up browser discrepencies

    * Review updates

    * Review updates

    * Added debouncing to scroll

    * Fixed a janky scroll issue with overscrolling

    * Cleaned up the code to use renderer and injectable document for SSR.

    * Removing sticky tabs

    Co-authored-by: Joseph Milazzo <joseph.v.milazzo@gmail.com>

commit 5b829af531
Author: majora2007 <josephmajora@gmail.com>
Date:   Wed Jun 15 21:57:45 2022 +0000

    Bump versions by dotnet-bump-version.

commit 3ab3a10ae7
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Wed Jun 15 16:43:32 2022 -0500

    New PDF Reader (#1324)

    * Refactored all the code that opens the reader to use a unified function. Added new library and setup basic pdf reader route.

    * Progress saving is implemented. Targeting ES6 now.

    * Customized the toolbar to remove things we don't want, made the download button download with correct filename. Adjusted zoom setting to work well on first load regardless of device.

    * Stream the pdf file to the UI rather than handling the download ourselves.

    * Started implementing a custom toolbar.

    * Fixed up the jump bar calculations

    * Fixed filtering being broken

    * Pushing up for Robbie to cleanup the toolbar layout

    * Added an additional button. Working on logic while robbie takes styling

    * Tried to fix the code for robbie

    * Tweaks for fonts

    * Added button for book mode, but doesn't seem to work after renderer is built

    * Removed book mode

    * Removed the old image caching code for pdfs as it's not needed with new reader

    * Removed the interfaces to extract images from pdf.

    * Fixed original pagination area not scaling correctly

    * Integrated series remove events to library detail

    * Cleaned up the getter naming convention

    * Cleaned up some of the manga reader code to reduce cluter and improve re-use

    * Implemented Japanese parser support for volume and chapters.

    * Fixed a bug where resetting scroll in manga reader wasn't working

    * Fixed a bug where word count grew on each scan.

    * Removed unused variable

    * Ensure we calculate word count on files with their own cache timestamp

    * Adjusted size of reel headers

    * Put some code in for moving on original image with keyboard, but it's not in use.

    * Cleaned up the css for the pdf reader

    * Cleaned up the code

    * Tweaked the list item so we show scrollbar now when fully read

commit 384fac68c4
Author: majora2007 <josephmajora@gmail.com>
Date:   Tue Jun 14 15:18:27 2022 +0000

    Bump versions by dotnet-bump-version.

commit 78f0bad144
Author: Robbie Davis <robbie@therobbiedavis.com>
Date:   Tue Jun 14 11:01:06 2022 -0400

    dynamic height for series detail (#1321)

    * Adding dynamic height function

    * pushing change requests

    * Moved method to getter

    * Changed carousel reel to onpush strat

    Co-authored-by: Joseph Milazzo <joseph.v.milazzo@gmail.com>

commit 1edf23d8c3
Author: majora2007 <josephmajora@gmail.com>
Date:   Tue Jun 14 12:20:50 2022 +0000

    Bump versions by dotnet-bump-version.

commit 791e852596
Author: Robbie Davis <robbie@therobbiedavis.com>
Date:   Tue Jun 14 08:07:28 2022 -0400

    Fixing sticky tabs overlapping title on longer titles (#1320)

commit 549b889639
Author: majora2007 <josephmajora@gmail.com>
Date:   Mon Jun 13 21:51:00 2022 +0000

    Bump versions by dotnet-bump-version.

commit bbc48a5f5b
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Mon Jun 13 16:37:49 2022 -0500

    Infinite Scroll + List View + Cover Upload Redesign (#1319)

    * Started with the redesign of the cover image chooser redesign to be less click intensive for volume/chapter images.

    Made some headings bold in card detail drawer.

    * Tweaked the styles

    * Moved where the info cards show

    * Added an ability to open a page settings drawer

    * Cleaned up some old code that isn't needed anymore.

    * Started implementing a list view. Refactored some title code to a dedicated component

    * List view implemented but way too many API calls. Either need caching or adjusting the SeriesDetail api.

    * Fixed a bug where if the progress bar didn't render on a card item while a download was in progress, the download indicator would be removed.

    * Large refactor to move a lot of the needed fields to the chapter and volume dtos for series detail. All fields are noted when only used in series detail.

    * Implemented cards for other tabs (except related)

    * Fixed the unit test which needed a mocked reader service call.

    * More cleanup around age rating and removing old code from the refactor. Commented out sorting till i feel motivated to work on that.

    * Some cleanup and restored cards as initial layout. Time to test this out and see if there is value add.

    * Added ability for Chapters tab to show the volume chapters belong to (if applicable)

    * Adding style fixes

    * Cover image updates, don't allow the first image (which is what is currently set) to respond to cover changes.

    Hide the ID field on list item for series detail.

    * Refactored the title for list item to be injectable

    * Cleaned up the selection code to make it less finicky on mobile when tap scrolling.

    * Refactored chapter tab to show volume as well on list view.

    * Ensure word count shows for Volumes

    * Started adding virtual scrolling, pushing up so Robbie can mess around

    * Started adding virtual scrolling, pushing up so Robbie can mess around

    * Fixed a bug where all chapters would come under specials

    * Show title data as accent if set.

    * Style fixes for virtual scroller

    * Restyling scroll

    * Implemented a way to show storyline with virtual scrolling

    * Show Word Count for chapters and cleaned up some logics.

    * I might have card layout working with virtual scroll code.

    * Some cleanup to hide more system like properties from info bar on series detail page. Fixed some missing time estimate info on storyline chapters.

    * Fixed a regression on series service when I integrated VolumeTitle.

    * Refactored read time to the backend. Added WordCount to the volume itself so we don't need to calculate on frontend. When asking to analyze files from a series, force the calculation.

    * Fixed SeriesDetail api code

    * Fixed up the code in the drawer to better update list/card mode

    * Basic infinite scroll implemented, however due to how we are updating the list to render, we are re-rending cards that haven't been touched.

    * Updated how we render and layout data for infinite scroll on library detail. It's almost there.

    * Started laying foundation for loading pages backwards.

    Removed lazy loading of images since we are now using virtual paging.

    * Hooked in some basic code to allow user to load a prev page with infinite scroll.

    * Fixed up series detail api and undid the non-lazy loaded images.

    Changed the router to help with this infinite loading on Firefox issue.

    * Fixed up some naming issues with Series Detail and added a new test.

    * This is an infinite scroll without pagination implementation. It is not fully done, but off to a good start. Virtual scroller with jump bar is working pretty well, def needs more polishing and tweaking. There are hacks in this implementation that need to be revisited.

    * Refactored code so that we don't use any pagination and load all results by default.

    * Misc code cleanup from build warnings.

    * Cleaned up some logic for how to display titles in list view.

    * More title cleanup for specials

    * Hooked up page layout to user preferences and renamed an existing user pref name to match the dto.

    * Swapped out everything but storyline with virtual-scroller over CDK

    * Removed CDK from series detail.

    * Default value for migration on page layout

    * Updating card layout for library detail page

    * fixing height for mobile

    * Moved scrollbar

    * Tweaked some styling for layouts when there is no data

    * Refactored the series cards into their own component to make it re-usable.

    * More tweaks on series info cards layout and enhanced a few pages with trackby functions.

    * Removed some dead code

    * Added download on series detail to actionables to fit in with new scroll strategy.

    * Fixed language not being updated and sent to the backend for series update.

    * Fixed a bad migration (if you ran any prior migration in this branch, you need to undo before you use this commit)

    * Adding sticky tabs

    * fixed mobile gap on sticky tab

    * Enhanced the card title for books to show number up front.

    * Adjusted the gutters on admin dashboard

    * Removed debug code

    * Removing duplicate book title

    * Cleaned up old references to cdk scroller

    * Implemented a basic jump bar scaling algorithm. Not perfect, but works pretty well.

    * Code smells

    Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>

commit f0f0e23e88
Author: majora2007 <josephmajora@gmail.com>
Date:   Fri Jun 10 15:05:27 2022 +0000

    Bump versions by dotnet-bump-version.

commit 54e94bfcb2
Author: Marcelo Guimarães Junior <75567460+magujun@users.noreply.github.com>
Date:   Fri Jun 10 07:52:42 2022 -0700

    bugfix/user-preferences-accordion (#1307)

    * Add files via upload

    * Revert "Add files via upload"

    This reverts commit 446e3e0f04.

    Revert upload package.json

    * bugfix/user-preferences

    Fixed a bug with the BookReader panel id missing brackets which prevented the accordion from functioning correctly.

commit 0124620e36
Author: majora2007 <josephmajora@gmail.com>
Date:   Wed Jun 8 00:06:51 2022 +0000

    Bump versions by dotnet-bump-version.

commit 77b8551620
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Tue Jun 7 18:48:25 2022 -0500

    Bugfix/reader issues (#1311)

    * Updated the design of icon and text to show a label.

    * Fixed a bug when fit to height and there is overflow on horizontal, the pagination area is stuck to the original width and after scrolling right, the pagination area doesn't move.

    * Attempt to fix a border showing on eink readers white mode with book reader

    * Removed debug code

    * Added back in pagination controls

    * fixing viewport overflow issue

    * Ensure volume detail drawer shows all pages for the volume, not just first chapter. Don't show release date when it's not a real date. Non-ongoing series will now show a different icon.

    * Fixing drawer viewport issue

    * Fix for book cover extending across multiple pages (#1269)

    * Attaching book-reader scale style to parent instead of image

    * Fixing some width issues on images

    * Making sure max-height is respected

    * Fixing duplicate styles which caused excessive breaks

    * Updated the readme to reflect new UX and some tweaks to wordings. (#1270)

    * Bump versions by dotnet-bump-version.

    * version bump (#1271)

    * Bump versions by dotnet-bump-version.

    * UX Changes, Tasks, WebP, and More! (#1280)

    * When account updates occur for a user, send an event to them to tell them to refresh their account information (if they are on the site at the time). This way if we revoke permissions, the site will reactively adapt.

    * Some cleanup on the user preferences to remove some calls we don't need anymore.

    * Removed old bulk cleanup bookmark code as it's no longer needed.

    * Tweaked the messaging for stat collection to reflect what we collect now versus when this was initially implemented.

    * Implemented the ability for users to configure their servers to save bookmarks as webP. Reorganized the tabs for Admin dashboard to account for upcoming features.

    * Implemented the ability to bulk convert bookmarks (as many times as the user wants).

    Added a display of Reoccurring Jobs to the Tasks admin tab. Currently it's just placeholder, but will be enhanced further later in the release.

    * Tweaked the wording around the convert switch.

    * Moved System actions to the task tab

    * Added a controller just for Tachiyomi so we can have dedicated APIs for that client. Deprecated an existing API on the Reader route.

    * Fixed the unit tests

    * Bump versions by dotnet-bump-version.

    * Implemented the ability to read format tag and force special status. (#1284)

    * Bump versions by dotnet-bump-version.

    * Implemented the ability to parse some volume and chapter keywords for chinese. (#1285)

    * Bump versions by dotnet-bump-version.

    * Word Count (#1286)

    * Adding some code for Robbie

    * See more on series detail metadata area is now at the bottom on the section

    * Cleaned up subtitle headings to use a single class for offset with actionables

    * Added some markup for the new design, waiting for Robbie to finish it off

    * styling age-rating badge

    * Started hooking up basic analyze file service and hooks in the UI. Basic code to implement the count is implemented and in benchmarks.

    * Hooked up analyze ui to backend

    * Refactored Series Detail metadata area to use a new icon/title design

    * Cleaned up the new design

    * Pushing for robbie to do css

    * Massive performance improvement to scan series where we only need to scan folders reported that have series in them, rather than the whole library.

    * Removed theme page as we no longer need it. Added WordCount to DTOs so the UI can show them. Added new pipe to format numbers in compact mode.

    * Hooked up actual reading time based on user's words per hour

    * Refactor some magic numbers to consts

    * Hooked in progress reporting for series word count

    * Hooked up analyze files

    * Re-implemented time to read on comics

    * Removed the word Last Read

    * Show proper language name instead of iso tag on series detail page. Added some error handling on word count code.

    * Reworked error handling

    * Fixed some security vulnerabilities in npm.

    * Handle a case where there are no text nodes and instead of returning an empty list, htmlagilitypack returns null.

    * Tweaked the styles a bit on the icon-and-title

    * Code cleanup

    Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>

    * Bump versions by dotnet-bump-version.

    * Tweaked when we calculate min reading time

    * Don't use plural if there is only 1 hour for reading

    * Fixed the logic for caluclating time to read on comics

    * Bump versions by dotnet-bump-version.

    * Drawers, Estimated Reading Time, Korean Parsing Support (#1297)

    * Started building out idea around detail drawer. Need code from word count to continue

    * Fixed the logic for caluclating time to read on comics

    * Adding styles

    * more styling fixes

    * Cleaned up the styles a bit more so it's at least functional. Not sure on the feature, might abandon.

    * Pulled Robbie's changes in and partially migrated them to the drawer.

    * Add offset overrides for offcanvas so it takes our header into account

    * Implemented a basic time left to finish the series (or at least what's in Kavita). Rough around the edges.

    * Cleaned up the drawer code.

    * Added Quick Catch ups to recommended page. Updated the timeout for scan tasks to ensure we don't run 2 at the same time.

    * Quick catchups implemented

    * Added preliminary support for Korean filename parsing. Reduced an array alloc that is called many thousands of times per scan.

    * Fixing drawer overflow

    * Fixed a calculation bug with average reading time.

    * Small spacing changes to drawer

    * Don't show estimated reading time if the user hasn't read anything

    * Bump eventsource from 1.1.1 to 2.0.2 in /UI/Web

    Bumps [eventsource](https://github.com/EventSource/eventsource) from 1.1.1 to 2.0.2.
    - [Release notes](https://github.com/EventSource/eventsource/releases)
    - [Changelog](https://github.com/EventSource/eventsource/blob/master/HISTORY.md)
    - [Commits](https://github.com/EventSource/eventsource/compare/v1.1.1...v2.0.2)

    ---
    updated-dependencies:
    - dependency-name: eventsource
      dependency-type: direct:production
    ...

    Signed-off-by: dependabot[bot] <support@github.com>

    * Added image to series detail drawer

    Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

    * Bump versions by dotnet-bump-version.

    * Time Estimation Cleanup (#1301)

    * Moved the calculation for time to read to the backend. Tweaked some logic around showing est time to complete.

    * Added debug logging to help pinpoint a duplicate issue in Kavita.

    * More combination logic is error checked in a special way for Robbie to reproduce an issue.

    * Migrated chapter detail card to use backend for time calculation. Ensure we take all chapters into account for volume time calcs

    * Tweaked messaging for some critical logs to include file

    * Ensure pages count uses comma separated number

    * Moved Hangfire annotations to interface level. Adjusted word count service to always recalculate when user requests via analyze series files.

    * Bump versions by dotnet-bump-version.

    * Jump Bar Testing (#1302)

    * Implemented a basic jump bar for the library view. This currently just interacts with existing pagination controls and is not inlined with infinite scroll yet. This is a first pass implementation.

    * Refactored time estimates into the reading service.

    * Cleaned up when the jump bar is shown to mimic pagination controls

    * Cleanup up code in reader service.

    * Scroll to card when selecting a jump key that is shown on the current page.

    * Ensure estimated times always has the smaller number on left hand side.

    * Fixed a bug with a missing vertical rule

    * Fixed an off by 1 pixel for search overlay

    * Bump versions by dotnet-bump-version.

    * Jumpbar Tweaks (#1305)

    * Adjusted the detail drawer to be slightly larger.

    * Attempted to shorten the jump bar on smaller screens. Robbie needs to take a look at this.

    * Adding plex-like styling to jumpbar

    * style fixes

    * style fixes

    * More fixes *sigh*

    * fix height issue

    * Fixing jumpbar on mobile

    * viewport height fix

    * added --primary-color-scrollbar for overflow across the app

    Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>

    * Bump versions by dotnet-bump-version.

    Co-authored-by: Joseph Milazzo <joseph.v.milazzo@gmail.com>
    Co-authored-by: majora2007 <josephmajora@gmail.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

    * Bump versions by dotnet-bump-version.

    * Close drawer when opening a chapter to read

    * The actionables were not working on chapters in the detail drawer for a volume. Added a distinct read action instead of having the user to have hidden knowledge you can click the cover images.

    * Debug code in.

    Fixed a bug where book reader pagination wasn't covering from top to bottom when immersive mode was on.

    Trying to better ensure images don't span multiple virtual pages in column mode.

    Changed icon/title so label is bolded

    * Updated some dependencies for security issues. Fixed up the fix for images on column view wrapping to next virtual page. Lots of css tweaks to the layout code to make it easier to work with.

    * When switching from column layout to default, scroll back to where the user was.

    * Fixed some overlap on default mode with bottom bar

    * Series Detail uses the cover image update mechanism builtin, instead of the old way to handle.

    Added some text when there is no summary on a volume/chapter.

    * Side nav filter now has clear button within field. Filter no longer shows when side nav is collapsed.

    Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit 0906ca49a9
Author: majora2007 <josephmajora@gmail.com>
Date:   Mon Jun 6 15:02:51 2022 +0000

    Bump versions by dotnet-bump-version.

commit da312e3cee
Author: Robbie Davis <robbie@therobbiedavis.com>
Date:   Mon Jun 6 10:47:19 2022 -0400

    Fix for book cover extending across multiple pages (#1269)

    * Attaching book-reader scale style to parent instead of image

    * Fixing some width issues on images

    * Making sure max-height is respected

    * Fixing duplicate styles which caused excessive breaks

    * Updated the readme to reflect new UX and some tweaks to wordings. (#1270)

    * Bump versions by dotnet-bump-version.

    * version bump (#1271)

    * Bump versions by dotnet-bump-version.

    * UX Changes, Tasks, WebP, and More! (#1280)

    * When account updates occur for a user, send an event to them to tell them to refresh their account information (if they are on the site at the time). This way if we revoke permissions, the site will reactively adapt.

    * Some cleanup on the user preferences to remove some calls we don't need anymore.

    * Removed old bulk cleanup bookmark code as it's no longer needed.

    * Tweaked the messaging for stat collection to reflect what we collect now versus when this was initially implemented.

    * Implemented the ability for users to configure their servers to save bookmarks as webP. Reorganized the tabs for Admin dashboard to account for upcoming features.

    * Implemented the ability to bulk convert bookmarks (as many times as the user wants).

    Added a display of Reoccurring Jobs to the Tasks admin tab. Currently it's just placeholder, but will be enhanced further later in the release.

    * Tweaked the wording around the convert switch.

    * Moved System actions to the task tab

    * Added a controller just for Tachiyomi so we can have dedicated APIs for that client. Deprecated an existing API on the Reader route.

    * Fixed the unit tests

    * Bump versions by dotnet-bump-version.

    * Implemented the ability to read format tag and force special status. (#1284)

    * Bump versions by dotnet-bump-version.

    * Implemented the ability to parse some volume and chapter keywords for chinese. (#1285)

    * Bump versions by dotnet-bump-version.

    * Word Count (#1286)

    * Adding some code for Robbie

    * See more on series detail metadata area is now at the bottom on the section

    * Cleaned up subtitle headings to use a single class for offset with actionables

    * Added some markup for the new design, waiting for Robbie to finish it off

    * styling age-rating badge

    * Started hooking up basic analyze file service and hooks in the UI. Basic code to implement the count is implemented and in benchmarks.

    * Hooked up analyze ui to backend

    * Refactored Series Detail metadata area to use a new icon/title design

    * Cleaned up the new design

    * Pushing for robbie to do css

    * Massive performance improvement to scan series where we only need to scan folders reported that have series in them, rather than the whole library.

    * Removed theme page as we no longer need it. Added WordCount to DTOs so the UI can show them. Added new pipe to format numbers in compact mode.

    * Hooked up actual reading time based on user's words per hour

    * Refactor some magic numbers to consts

    * Hooked in progress reporting for series word count

    * Hooked up analyze files

    * Re-implemented time to read on comics

    * Removed the word Last Read

    * Show proper language name instead of iso tag on series detail page. Added some error handling on word count code.

    * Reworked error handling

    * Fixed some security vulnerabilities in npm.

    * Handle a case where there are no text nodes and instead of returning an empty list, htmlagilitypack returns null.

    * Tweaked the styles a bit on the icon-and-title

    * Code cleanup

    Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>

    * Bump versions by dotnet-bump-version.

    * Tweaked when we calculate min reading time

    * Don't use plural if there is only 1 hour for reading

    * Fixed the logic for caluclating time to read on comics

    * Bump versions by dotnet-bump-version.

    * Drawers, Estimated Reading Time, Korean Parsing Support (#1297)

    * Started building out idea around detail drawer. Need code from word count to continue

    * Fixed the logic for caluclating time to read on comics

    * Adding styles

    * more styling fixes

    * Cleaned up the styles a bit more so it's at least functional. Not sure on the feature, might abandon.

    * Pulled Robbie's changes in and partially migrated them to the drawer.

    * Add offset overrides for offcanvas so it takes our header into account

    * Implemented a basic time left to finish the series (or at least what's in Kavita). Rough around the edges.

    * Cleaned up the drawer code.

    * Added Quick Catch ups to recommended page. Updated the timeout for scan tasks to ensure we don't run 2 at the same time.

    * Quick catchups implemented

    * Added preliminary support for Korean filename parsing. Reduced an array alloc that is called many thousands of times per scan.

    * Fixing drawer overflow

    * Fixed a calculation bug with average reading time.

    * Small spacing changes to drawer

    * Don't show estimated reading time if the user hasn't read anything

    * Bump eventsource from 1.1.1 to 2.0.2 in /UI/Web

    Bumps [eventsource](https://github.com/EventSource/eventsource) from 1.1.1 to 2.0.2.
    - [Release notes](https://github.com/EventSource/eventsource/releases)
    - [Changelog](https://github.com/EventSource/eventsource/blob/master/HISTORY.md)
    - [Commits](https://github.com/EventSource/eventsource/compare/v1.1.1...v2.0.2)

    ---
    updated-dependencies:
    - dependency-name: eventsource
      dependency-type: direct:production
    ...

    Signed-off-by: dependabot[bot] <support@github.com>

    * Added image to series detail drawer

    Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

    * Bump versions by dotnet-bump-version.

    * Time Estimation Cleanup (#1301)

    * Moved the calculation for time to read to the backend. Tweaked some logic around showing est time to complete.

    * Added debug logging to help pinpoint a duplicate issue in Kavita.

    * More combination logic is error checked in a special way for Robbie to reproduce an issue.

    * Migrated chapter detail card to use backend for time calculation. Ensure we take all chapters into account for volume time calcs

    * Tweaked messaging for some critical logs to include file

    * Ensure pages count uses comma separated number

    * Moved Hangfire annotations to interface level. Adjusted word count service to always recalculate when user requests via analyze series files.

    * Bump versions by dotnet-bump-version.

    * Jump Bar Testing (#1302)

    * Implemented a basic jump bar for the library view. This currently just interacts with existing pagination controls and is not inlined with infinite scroll yet. This is a first pass implementation.

    * Refactored time estimates into the reading service.

    * Cleaned up when the jump bar is shown to mimic pagination controls

    * Cleanup up code in reader service.

    * Scroll to card when selecting a jump key that is shown on the current page.

    * Ensure estimated times always has the smaller number on left hand side.

    * Fixed a bug with a missing vertical rule

    * Fixed an off by 1 pixel for search overlay

    * Bump versions by dotnet-bump-version.

    * Jumpbar Tweaks (#1305)

    * Adjusted the detail drawer to be slightly larger.

    * Attempted to shorten the jump bar on smaller screens. Robbie needs to take a look at this.

    * Adding plex-like styling to jumpbar

    * style fixes

    * style fixes

    * More fixes *sigh*

    * fix height issue

    * Fixing jumpbar on mobile

    * viewport height fix

    * added --primary-color-scrollbar for overflow across the app

    Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>

    * Bump versions by dotnet-bump-version.

    Co-authored-by: Joseph Milazzo <joseph.v.milazzo@gmail.com>
    Co-authored-by: majora2007 <josephmajora@gmail.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit 24d905275c
Author: magujun <guimaraesjunior.marcelo@gmail.com>
Date:   Sun Jun 5 23:41:02 2022 -0700

    bugfix/user-preferences

    Fixed a bug with the BookReader panel id missing brackets which prevented the accordion from functioning correctly.

commit fbdf8dfe8a
Author: majora2007 <josephmajora@gmail.com>
Date:   Thu Jun 2 14:40:21 2022 +0000

    Bump versions by dotnet-bump-version.

commit a19f4641f4
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Thu Jun 2 09:22:21 2022 -0500

    Jumpbar Tweaks (#1305)

    * Adjusted the detail drawer to be slightly larger.

    * Attempted to shorten the jump bar on smaller screens. Robbie needs to take a look at this.

    * Adding plex-like styling to jumpbar

    * style fixes

    * style fixes

    * More fixes *sigh*

    * fix height issue

    * Fixing jumpbar on mobile

    * viewport height fix

    * added --primary-color-scrollbar for overflow across the app

    Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>

commit 7f51ea2d0f
Author: majora2007 <josephmajora@gmail.com>
Date:   Mon May 30 22:02:06 2022 +0000

    Bump versions by dotnet-bump-version.

commit 742cfd3293
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Mon May 30 16:50:12 2022 -0500

    Jump Bar Testing (#1302)

    * Implemented a basic jump bar for the library view. This currently just interacts with existing pagination controls and is not inlined with infinite scroll yet. This is a first pass implementation.

    * Refactored time estimates into the reading service.

    * Cleaned up when the jump bar is shown to mimic pagination controls

    * Cleanup up code in reader service.

    * Scroll to card when selecting a jump key that is shown on the current page.

    * Ensure estimated times always has the smaller number on left hand side.

    * Fixed a bug with a missing vertical rule

    * Fixed an off by 1 pixel for search overlay

commit 64c0b5a71e
Author: majora2007 <josephmajora@gmail.com>
Date:   Sun May 29 15:01:47 2022 +0000

    Bump versions by dotnet-bump-version.

commit 8e69b6cfc0
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Sun May 29 09:50:59 2022 -0500

    Time Estimation Cleanup (#1301)

    * Moved the calculation for time to read to the backend. Tweaked some logic around showing est time to complete.

    * Added debug logging to help pinpoint a duplicate issue in Kavita.

    * More combination logic is error checked in a special way for Robbie to reproduce an issue.

    * Migrated chapter detail card to use backend for time calculation. Ensure we take all chapters into account for volume time calcs

    * Tweaked messaging for some critical logs to include file

    * Ensure pages count uses comma separated number

    * Moved Hangfire annotations to interface level. Adjusted word count service to always recalculate when user requests via analyze series files.

commit 99d603bb80
Author: magujun <guimaraesjunior.marcelo@gmail.com>
Date:   Sat May 28 08:08:25 2022 -0700

    Revert "Add files via upload"

    This reverts commit 446e3e0f04.

    Revert upload package.json

commit 446e3e0f04
Author: Marcelo Guimarães Junior <75567460+magujun@users.noreply.github.com>
Date:   Fri May 27 17:45:38 2022 -0700

    Add files via upload

commit 85b4ad0c58
Author: majora2007 <josephmajora@gmail.com>
Date:   Fri May 27 14:20:33 2022 +0000

    Bump versions by dotnet-bump-version.

commit 63475722ea
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Fri May 27 09:08:54 2022 -0500

    Drawers, Estimated Reading Time, Korean Parsing Support (#1297)

    * Started building out idea around detail drawer. Need code from word count to continue

    * Fixed the logic for caluclating time to read on comics

    * Adding styles

    * more styling fixes

    * Cleaned up the styles a bit more so it's at least functional. Not sure on the feature, might abandon.

    * Pulled Robbie's changes in and partially migrated them to the drawer.

    * Add offset overrides for offcanvas so it takes our header into account

    * Implemented a basic time left to finish the series (or at least what's in Kavita). Rough around the edges.

    * Cleaned up the drawer code.

    * Added Quick Catch ups to recommended page. Updated the timeout for scan tasks to ensure we don't run 2 at the same time.

    * Quick catchups implemented

    * Added preliminary support for Korean filename parsing. Reduced an array alloc that is called many thousands of times per scan.

    * Fixing drawer overflow

    * Fixed a calculation bug with average reading time.

    * Small spacing changes to drawer

    * Don't show estimated reading time if the user hasn't read anything

    * Bump eventsource from 1.1.1 to 2.0.2 in /UI/Web

    Bumps [eventsource](https://github.com/EventSource/eventsource) from 1.1.1 to 2.0.2.
    - [Release notes](https://github.com/EventSource/eventsource/releases)
    - [Changelog](https://github.com/EventSource/eventsource/blob/master/HISTORY.md)
    - [Commits](https://github.com/EventSource/eventsource/compare/v1.1.1...v2.0.2)

    ---
    updated-dependencies:
    - dependency-name: eventsource
      dependency-type: direct:production
    ...

    Signed-off-by: dependabot[bot] <support@github.com>

    * Added image to series detail drawer

    Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit d796bcdc0a
Author: majora2007 <josephmajora@gmail.com>
Date:   Thu May 26 00:24:25 2022 +0000

    Bump versions by dotnet-bump-version.

commit 3c92b6d8a5
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Wed May 25 19:11:01 2022 -0500

    Fixed the logic for caluclating time to read on comics

commit e7617862a5
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Wed May 25 17:49:45 2022 -0500

    Don't use plural if there is only 1 hour for reading

commit 713e20ebf4
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Wed May 25 17:48:50 2022 -0500

    Tweaked when we calculate min reading time

commit c0f7dd39a2
Author: majora2007 <josephmajora@gmail.com>
Date:   Wed May 25 22:10:42 2022 +0000

    Bump versions by dotnet-bump-version.

commit c1490d6e86
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Wed May 25 16:53:39 2022 -0500

    Word Count (#1286)

    * Adding some code for Robbie

    * See more on series detail metadata area is now at the bottom on the section

    * Cleaned up subtitle headings to use a single class for offset with actionables

    * Added some markup for the new design, waiting for Robbie to finish it off

    * styling age-rating badge

    * Started hooking up basic analyze file service and hooks in the UI. Basic code to implement the count is implemented and in benchmarks.

    * Hooked up analyze ui to backend

    * Refactored Series Detail metadata area to use a new icon/title design

    * Cleaned up the new design

    * Pushing for robbie to do css

    * Massive performance improvement to scan series where we only need to scan folders reported that have series in them, rather than the whole library.

    * Removed theme page as we no longer need it. Added WordCount to DTOs so the UI can show them. Added new pipe to format numbers in compact mode.

    * Hooked up actual reading time based on user's words per hour

    * Refactor some magic numbers to consts

    * Hooked in progress reporting for series word count

    * Hooked up analyze files

    * Re-implemented time to read on comics

    * Removed the word Last Read

    * Show proper language name instead of iso tag on series detail page. Added some error handling on word count code.

    * Reworked error handling

    * Fixed some security vulnerabilities in npm.

    * Handle a case where there are no text nodes and instead of returning an empty list, htmlagilitypack returns null.

    * Tweaked the styles a bit on the icon-and-title

    * Code cleanup

    Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>

commit 0a70ac35dc
Author: majora2007 <josephmajora@gmail.com>
Date:   Wed May 25 19:39:11 2022 +0000

    Bump versions by dotnet-bump-version.

commit a9a1ec02ca
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Wed May 25 14:25:53 2022 -0500

    Implemented the ability to parse some volume and chapter keywords for chinese. (#1285)

commit 1247f450e2
Author: majora2007 <josephmajora@gmail.com>
Date:   Wed May 25 17:21:56 2022 +0000

    Bump versions by dotnet-bump-version.

commit 1a128a3af4
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Wed May 25 12:05:16 2022 -0500

    Implemented the ability to read format tag and force special status. (#1284)

commit a0e1ba8d67
Author: majora2007 <josephmajora@gmail.com>
Date:   Mon May 23 23:30:19 2022 +0000

    Bump versions by dotnet-bump-version.

commit e0a2fc615f
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Mon May 23 18:19:52 2022 -0500

    UX Changes, Tasks, WebP, and More! (#1280)

    * When account updates occur for a user, send an event to them to tell them to refresh their account information (if they are on the site at the time). This way if we revoke permissions, the site will reactively adapt.

    * Some cleanup on the user preferences to remove some calls we don't need anymore.

    * Removed old bulk cleanup bookmark code as it's no longer needed.

    * Tweaked the messaging for stat collection to reflect what we collect now versus when this was initially implemented.

    * Implemented the ability for users to configure their servers to save bookmarks as webP. Reorganized the tabs for Admin dashboard to account for upcoming features.

    * Implemented the ability to bulk convert bookmarks (as many times as the user wants).

    Added a display of Reoccurring Jobs to the Tasks admin tab. Currently it's just placeholder, but will be enhanced further later in the release.

    * Tweaked the wording around the convert switch.

    * Moved System actions to the task tab

    * Added a controller just for Tachiyomi so we can have dedicated APIs for that client. Deprecated an existing API on the Reader route.

    * Fixed the unit tests

commit dd83b6a9a1
Author: majora2007 <josephmajora@gmail.com>
Date:   Sat May 21 23:36:25 2022 +0000

    Bump versions by dotnet-bump-version.

commit 16eb1e3e8e
Author: Joseph Milazzo <josephmajora@gmail.com>
Date:   Sat May 21 18:24:18 2022 -0500

    version bump (#1271)

commit f4f91fa5a9
Author: majora2007 <josephmajora@gmail.com>
Date:   Sat May 21 23:03:49 2022 +0000

    Bump versions by dotnet-bump-version.

commit 1801afd4a7
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Sat May 21 17:52:57 2022 -0500

    Updated the readme to reflect new UX and some tweaks to wordings. (#1270)

commit bcad2e4a55
Author: majora2007 <josephmajora@gmail.com>
Date:   Sat May 21 02:18:06 2022 +0000

    Bump versions by dotnet-bump-version.

commit 81082508f2
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Fri May 20 21:05:09 2022 -0500

    Release Shakeout Part 2 (#1267)

    * Fixed manga reader and removed debug code

    * Removed some console.logs

commit 92010379f1
Author: majora2007 <josephmajora@gmail.com>
Date:   Fri May 20 23:00:48 2022 +0000

    Bump versions by dotnet-bump-version.

commit a062341564
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Fri May 20 17:50:17 2022 -0500

    Release Shakeout (#1266)

    * Fixed an issue with fit to screen where spread images would fail to generate a paging area long enough.

    * Fixed pagination placement on original scaling

    * Fixed an issue with webtoon reader not reporting scroll events due to a fix from manga reader.

    * Fixing select on black book-reader theme

    * Fixing canvas split centering

    * Fixed a bug with white mode in book reader not rendering correctly. When bookmarking new pages after previously have viewing bookmarks for a series, ensure we clear out the temp cache else your new files wont be visible till next day.

    * Use grid on related tab

    * Clear bookmarks was not hooked up. Bulk add to collection didn't have label hidden

    * Fixed bug where filter might stay open between pages

    * Fixed typo on relationship for Adaptation

    * Contains was missing from series relation modal

    * Tweaked some methods and wording on reading list page

    * Cleaned up the phrasing when we abort a scan.

    * Fixed issue where typeahead wasn't reopening and it wasn't filtering selected options

    * Fixed some typeahead bugs and decreased interval for docker health check

    * Cleaned up and fixed some logic with receiving cover image update events

    Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>

commit 49d8a7c6ca
Author: majora2007 <josephmajora@gmail.com>
Date:   Thu May 19 12:24:13 2022 +0000

    Bump versions by dotnet-bump-version.

commit f2b1cd55f0
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Thu May 19 07:14:18 2022 -0500

    Remove Light and E-Ink theme (#1263)

    * Refactored code to show action bar instead of drawer in immersive mode

    * Card grid

    * adding margin for pagination gap

    * Fixed a rare routing case that wouldn't redirect

    * Fixed a bug where series detail would show blank filtering

    * Fixing image scaling and library card spacing

    * Refactored some methods to be static

    * Adding card grid to series detail

    * Fixed a bug with webtoon going to non-webtoon mode, resulting in black screen.

    * Ensure emails are trimmed when trying to invite.

    * Don't show More In if there is only 1 item in there on library recommended tab

    * Fixed some bugs around locking metadata fields where the correct param wasn't being sent to backend.

    * Added some UI error messaging when the email doesn't match the confirm-email (or rather any email in the system).

    * Fixed some pages where actions weren't working (library detail) and removed some actionable buttons where they didn't make sense

    * Refactored the series detail to use Robbie's new grid system.

    * some styling fixes

    * Styling fixes

    - Removing select border gap
    - fixing switches on lite theme
    - fixing search result text-light

    * better css var naming

    * changing search lite text color override

    * fixing as per feedback

    * Removing boolean from being visible in bookreader

    * Fixed some bugs in bulk operations not being visible on light/eink screens. Added --bulk-selection-highlight-text-color and --bulk-selection-text-color.

    * Wrote basic code to remove other themes. Need a migration instead.

    * Added a migration to remove light/e-ink themes and migrate users over to Dark theme by default.

    * Fixed unit tests

    Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>

commit 876e19177e
Author: majora2007 <josephmajora@gmail.com>
Date:   Thu May 19 00:46:22 2022 +0000

    Bump versions by dotnet-bump-version.

commit 1961b41268
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Wed May 18 19:31:49 2022 -0500

    Last batch of bugfixes (#1262)

    * Refactored code to show action bar instead of drawer in immersive mode

    * Card grid

    * adding margin for pagination gap

    * Fixed a rare routing case that wouldn't redirect

    * Fixed a bug where series detail would show blank filtering

    * Fixing image scaling and library card spacing

    * Refactored some methods to be static

    * Adding card grid to series detail

    * Fixed a bug with webtoon going to non-webtoon mode, resulting in black screen.

    * Ensure emails are trimmed when trying to invite.

    * Don't show More In if there is only 1 item in there on library recommended tab

    * Fixed some bugs around locking metadata fields where the correct param wasn't being sent to backend.

    * Added some UI error messaging when the email doesn't match the confirm-email (or rather any email in the system).

    * Fixed some pages where actions weren't working (library detail) and removed some actionable buttons where they didn't make sense

    * Refactored the series detail to use Robbie's new grid system.

    * some styling fixes

    * Styling fixes

    - Removing select border gap
    - fixing switches on lite theme
    - fixing search result text-light

    * better css var naming

    * changing search lite text color override

    * fixing as per feedback

    * Removing boolean from being visible in bookreader

    * Fixed some bugs in bulk operations not being visible on light/eink screens. Added --bulk-selection-highlight-text-color and --bulk-selection-text-color.

    Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>

commit 6f23a3bc6d
Author: majora2007 <josephmajora@gmail.com>
Date:   Sun May 15 21:31:42 2022 +0000

    Bump versions by dotnet-bump-version.

commit 92fb185f20
Author: Robbie Davis <robbie@therobbiedavis.com>
Date:   Sun May 15 17:21:17 2022 -0400

    Adding code to make sure bottom actionbar is applied on layout change (#1258)

commit bb791b7789
Author: majora2007 <josephmajora@gmail.com>
Date:   Sun May 15 19:44:47 2022 +0000

    Bump versions by dotnet-bump-version.

commit cdc4931770
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Sun May 15 14:34:53 2022 -0500

    Reader scroll area fix (#1257)

    * Changes to make the pagination area scrollable (not working, debug code for Robbie)

    * Adjusted the html to be easier to understand and more streamlined

    * Fixed inability to scroll in manga reader over pagination areas for everything but the bottom bar

    * Book reader now allows you to scroll over pagination area

commit ccb6414e9e
Author: majora2007 <josephmajora@gmail.com>
Date:   Sat May 14 22:13:24 2022 +0000

    Bump versions by dotnet-bump-version.

commit d458a823ef
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Sat May 14 17:02:58 2022 -0500

    More Reader Bugfixes (#1255)

    * Added css to center images

    * Better scaling css

    * Removing vertical height css for actionbar calc

    * Fixed a bug where book settings couldn't be saved due to typo in model

    * fixing height across layouts

    * Fixed an issue where column mode would reset to user preference default between continuous reader loads

    * Fixing some more logic

    * Reading direction arrow keys now flip

    * Small code cleanup on Robbie's code

    Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>

commit be5b997259
Author: majora2007 <josephmajora@gmail.com>
Date:   Sat May 14 00:40:11 2022 +0000

    Bump versions by dotnet-bump-version.

commit f701f8e599
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Fri May 13 19:30:37 2022 -0500

    Book Reader Bugfixes (#1254)

    * Fixed image scoping breaking and books not being able to load images

    * Cleaned up a lot of variables and added more jsdoc. After shifting the margin, we try to recover the column layout width,height, and scroll posisiton.

    * Tap to paginate is working on first load now

    * On resize, rescroll to attempt to avoid breakage

    * Fixed transparent background for action bar on white theme

    * Moved some lists to immutable arrays

    * Actually fixed backgournd now

    * Fixed some settings not updating in book reader on load

    * Put some code in place to test out opening menu with clicking on the document

    * Fixed settings not propagating to the reader

    * Fixing 2 column when loading annd ios mobile

    * Fixed an issue where paging to prev page would sometimes skip the first page.

    * Fixing previous page skipping first page of chapter

    * removing console logs

    * Save progress when we page

    * Click on document to show the side nav

    * Removed columns auto because it could render more columns than applicable. Don't explicitly call saveProgress on prev page, as we already do in another call.

    Adjusted the logic to calculate windowHeight and width to be the same throughout the reader.

    * Setting select fix and settings polish

    * Fixed awkward tooltip wording

    * Added a message for when there is nothing to show on recommended tab

    * Removed bug marker, there was no bug after all

    * Fixing book title truncation in action bar

    * When counting volumes or chapters that have range, count the max part of the range for publication status.

    * Fixing TOC rendering issue

    * Styling fixes

    - Fixed an issue where the image height in the book reader was the column height plus padding so it was breaking pagination calc.
    - Centered book reader setting pills
    - Made inactive setting pill into a ghost button
    - Fixed spacing across the reader settings drawer

    * Added a bit of code to allow us to disable buttons before we click for next chapter load

    * Removed titles from action bars

    * The next page button will now show as the primary color to indicate to the user what the next forward page is.

    * Added a view series to bookmark page and removed actions from header since it didn't work

    * Fixed a bug where pagination wasn't mutating url state

    * Lots of changes, code is kinda working.

    Added Immersive Mode, but didn't generate migration.

    Added concept of virtual pages with ability to see them. Math is still slightly off.

    Cleaned up prefetching code so we do it much earlier.

    Added some code that doesn't work to disable buttons with virtual paging included.

    * When turning immersive mode on, force tap to paginate

    * Refactored out the book reader state as it wasn't very beneficial

    * Fixed total virtual page calculation

    * Next/prev page seems to be working pretty well

    * Applied Robbie's virtual page logic and fixed a bug in prev page code

    * Changed the next page to use same virtual page logic

    * Getting back and forward working...somehow.

    * removing redundant code

    * Fixing book title overflow from new action bar changes

    * Polishing pagination styles

    * Changing chapter to section

    * Fixing up other book reader themes

    * Fixed the login header being off-center

    * Fixing styling to follow approach

    * Refactored the pagination buttons to properly call next/prev page based on reading direction

    * Drawer pagination buttons now respect when there is no chapters (prev/next)

    * Everything except disabling buttons when on last possible page working

    * Added Book Reader immersive mode migration

    * Disable next/prev buttons for continuous reading before we request next/prev chapter if there is no chapter.

    * Show a tooltip for the title

    * Fixed unit test

    Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>

commit dfcc2f0813
Author: majora2007 <josephmajora@gmail.com>
Date:   Mon May 9 01:01:46 2022 +0000

    Bump versions by dotnet-bump-version.

commit 2723a6cd10
Author: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Date:   Sun May 8 19:52:15 2022 -0500

    Book Reader Redesign with e-ink focus (#1246)

    * Refactored the drawer into offcanvas component. Had to write some hacks to emulate how bootstrap's javascript implementation works as ngBootstrap doesn't have a component yet.

    * Cleaned up some of the code

    * Rewrote drawer to align it with the new design

    * First pass, refactored table of content into it's own component

    * Refactored all of the settings logic into a separate component. Everything is broken.

    * More settings on on reactive form

    * More code cleanup on settings

    * Misc fixes around the drawer code. Fixed a bug where range sliders were inheriting background color of normal text inputs

    * Fixed dark mode with book reader.

    We now clear the theme from the main app so book reader is self-contained. Styles for dark mode are injected into the reading-section. Styles that were previously in scss are now only for the actual menu system.

    * Cleaned up drawer styling on header

    * Removed an ngIf statement for click to paginate

    * Tweaked the accent style to have smaller font size and adjusted style on light mode. Cleaned up some clearTimeout code in a further effort to streamline codebase.

    * Refactored Dark mode into a basic theme. Currently styles are hardcoded.

    * Patched book theme in from themes branch

    * Patched in the backend for Book Theme (not tested yet)

    * Fixed a bug in seeding code for book themes. Started integration of themes into the reader settings

    * Everything except managing themes is working. Themes are a bit shakey, having second thoughts if we should have them or not.

    * Reverted the ability to do custom user book themes. Code is stable with system themes.

    * Stablize the Styles (#1128)

    * Fixed a bug where adding multiple series to reading list would throw an error on UI, but it was successful.

    * When a series has a reading list, we now show the connection on Series detail.

    * Removed all baseurl code from UI and not-connected component since we no longer use it.

    * Fixed tag badges not showing a border. Added last read time to the series detail page

    * Fixed up error interceptor to remove no-connection code

    * Changed implementation for series detail. Book libraries will never send chapters back. Volume 0 volumes will not be sent in volumes ever. Fixed up more renaming logic on books to send more accurate representations to the UI.

    * Cleaned up the selected tab and tab display logic

    * Fixed a bad where statement in reading lists for series

    * Fixed up tab logic again

    * Fixed a small margin on search backdrop

    * Made badge expander button smaller to align with badges

    * Fixed a few UIs due to .form-group and .form-row being removed

    * Updated Theme component page to help with style testing

    * Added more components to theme tester

    * Cleaned up some styling

    * Fixed opacity on search item hover

    * Bump versions by dotnet-bump-version.

    * Tweaked the accordion styles for light mode

    * Set dark book theme as default. Refactored resetSettings to be much cleaner

    * Started the refactor to allow book themes to affect global css variables

    * Fixed some issues with my css variable declarations

    * Fixed a close model state update

    * Lots of work, but dark mode on the book reader is basically done. We have to code the themes much like the site themes

    * Some black theme enhancements

    * Started working on column layout in book reader.

    * Cleaned up the CSS on Reader Settings

    * Hooked up reading direction

    * Got column and double column layout working

    * Implemented some basic virtual paging and hooked in book color theme and layout mode into user preferences.

    * Migration wrote, can edit page layout and color theme on book reader. Removed book dark mode since no longer needed.

    Fixed a bug on login/register forms where when input is focused, text is white and not black.

    * When loading book reader, apply column layout.

    * Lots of work around 2 column layout, working on images not splitting. Still not working, committing so i can merge develop in and validate code with new manga reader.

    * Fixed images being split into 2 BUT regression on each page boundary, total reading height is smaller and smaller

    * Fixed some rendering bugs where toggling column layouts would shrink images on screen constantly.

    Fixed a bug where bottom bar wouldn't render on column layout in some conditions (this might need to be reworked)

    * Started progress on progress work

    * Updated .NET to 6.0.4

    * Fixed a bug where DataContextModelSnapshot was being removed on build thus new migrations were broken.

    * Tweaked the code around progress saving so that we don't loose track of last scroll element on page load

    * Trying to restore progress, but stuck

    * Extra merge stuff

    * Fixed a bug where volumes that are a range fail to generate series detail

    * No gutters on whole app. Book reader backend now applies the image class automatically at the backend.

    * Added wiki documentation into invite user flow and register admin user to help users understand email isn't required and they can host their own service.

    * Removed bottom padding

    * Refactored the document height to be set and removed on nav service, so the book reader and manga reader aren't broken.

    * Fixed the height of the action bar to simplify logic and keep the code cleaner. Refactored book service image scoping to be much more streamlined and efficient

    * Fixed the height of action bar to 62px and adjusted code to use the hardcoded px. (code commented)

    * Removed commented out code from fixed action bar height

    * Progress restoration seems to be working

    * Code cleanup

    * Ensure the bottom action bar is at the bottom of the viewport on small pages

    * Fixed book fonts not setting properly and added OpenDyslexic font.

    * Fixed up some font issues

    * Updated drawer so all sections are open by default

    * Switched some LINQ to use MinBy

    * When navigating between pages and column layout, adjust the shift for the user.

    * Removed some debug code

    * Blacklist .qpkg folders and don't scan Recently-Snapshot or recycle folders.

    * Renamed the scale width to be scoped to kavita to avoid conflicts.

    * Refactored ngx-sliders out to use normal range instead. Changed up the preferences to separate image and book settinngs into own accordion.

    * updated user preferences for new migration options (not committed yet)

    * Removed some debug code

    * Remove console.logs

    * Migration committed, let's release this to users.

    * A lot of crazy code just to ensure that when you close drawer the toggle reflectst that state.

* Current Develop

* First commit

Enables double page rendering
Fixes typos

* Enabling double page rendering

. Changed image-2 src to canvasImage2 (handled by the server)
. Enabled the layout mode selector in the reader menu
. Changed the display to inline-block for the .full-height class
. Disabled the position and transform for the .fit-to-height-double-offset class
. Enabled the layout mode selector in the user preferences menu
. Fixed some typos =)

* Double page rendering fixes

. Added instantiation of canvasImagePrev and canvasImageNext
. Changed loadPage() checking of wide images before loading canvasImage2
. Changed nextPage() and prevPage() to correctly handle wide images
. Fixed some typos =)

* Fixed Double (Manga)

. Fixed: Checking ReverseDoublePage to handle manga reading direction
. Changed: Commented out some console logging
. Added: Wide class CSS to handle wide images with height < window height
. Changed: ShouldRenderDoublePage & ShouldRenderReverseDouble
. Changed: nextPage() & prevPage() to correctly set pageAmount
. Changed: isCoverImage() to accept pageNum param
. Changed: loadPage() to set canvasImagePrev.src & canvasImageNext.src depending on DoubleReversed
. Added: tsconfig.json esModuleInterop & allowSyntheticDefaultImports

* Fixed Double (Manga)

.Removed: Old commented out code
.Added: Check isCoverImage() on nextPage()

* Fixed a bug where page wasn't re-rendering about layout change.

Optimized the loadPage code to render faster.

Fixed a bug where whole renderPage() function was executing when it shouldn't.

* Indentation cleanup

* Allow the user to update their user settings and persist for new layout mode in manga reader

* Merged more develop in

* Bump versions by dotnet-bump-version.

* Fixed a bug where there was no pagination on the dashboard and it would take some time to load (#1329)

* Bump versions by dotnet-bump-version.

* More rebasing

* Bump versions by dotnet-bump-version.

* Fixed up some missing refactors from mag.

* Hopefully the last rebase

* Double Page Rendering (#1334)

* Fixed Double (Manga)

. Changed: Layout mode set to preferencesDto on UsersController
. Removed ConsoleLogger import
. Removed console.logs
. Added: HostListener for changing layout to Single on portrait device orientation
. Fixed: renderPage() bug
. Changed: Simplified loadPage()
. Added: ChangeOccurred to call loadPage() on layoutMode change
. Fixed: Dragable vs Draggable typos
.

* Fixed Double Orientation Check

. Fixed: Orientation check to switch from Double to Single on Portrait (HostListener) comparison sign was inverted.

* Reader orientation change

. Changed: Removed unnecessary innerWidth x innerHeight check

* Reader orientation change fixes

. Added: Check for innerWidth > innerHeight as guard clause

* Cleaned up some debug code

Co-authored-by: magujun <guimaraesjunior.marcelo@gmail.com>
Co-authored-by: Marcelo Guimarães Junior <75567460+magujun@users.noreply.github.com>
Co-authored-by: marcelo <mguimaraes@okanagan.bc.ca>
2022-06-27 09:00:01 -07:00
Joseph Milazzo
2ab0aedd22
Swagger, Tachiyomi, and some new settings (#1331)
* Fixed up swagger generation

* Updated Tachiyomi's latest-chapter to hopefully solve some sync issues.

* Fixed #1279 with table of contents due to new EPubReader

* When errors occur, show the event widget icon in red

* Lots of documentation added and tweaked some wording around backups and swagger

* For promidius

* Return proper ChapterDTO

* Hacks for Promidius

* Cleanup code

* No loose leaf, send max chapter

* One more encode change

* Implemented code per promiduius' requirements

* Fixed a bug in the epub parsing where even if you had a series index and series group, but didn't have the series in the title, Kavita wouldn't group them properly.

* Removed some extra comment

* Implemented the ability to change a library's type after it's been setup. This displays a warning explaining the dangers of it.

* Removed some whitespace

* Blur descriptions based on read status for list item view to avoid spoilers

* Tweaked placement of a tooltip due to new series detail styles

* Hooked up a user preference for bluring unread summaries. Fixed a bug in refresh token where we would cause re-authentication when it shouldn't be needed.
2022-06-25 15:52:21 -07:00
Joseph Milazzo
bbc48a5f5b
Infinite Scroll + List View + Cover Upload Redesign (#1319)
* Started with the redesign of the cover image chooser redesign to be less click intensive for volume/chapter images.

Made some headings bold in card detail drawer.

* Tweaked the styles

* Moved where the info cards show

* Added an ability to open a page settings drawer

* Cleaned up some old code that isn't needed anymore.

* Started implementing a list view. Refactored some title code to a dedicated component

* List view implemented but way too many API calls. Either need caching or adjusting the SeriesDetail api.

* Fixed a bug where if the progress bar didn't render on a card item while a download was in progress, the download indicator would be removed.

* Large refactor to move a lot of the needed fields to the chapter and volume dtos for series detail. All fields are noted when only used in series detail.

* Implemented cards for other tabs (except related)

* Fixed the unit test which needed a mocked reader service call.

* More cleanup around age rating and removing old code from the refactor. Commented out sorting till i feel motivated to work on that.

* Some cleanup and restored cards as initial layout. Time to test this out and see if there is value add.

* Added ability for Chapters tab to show the volume chapters belong to (if applicable)

* Adding style fixes

* Cover image updates, don't allow the first image (which is what is currently set) to respond to cover changes.

Hide the ID field on list item for series detail.

* Refactored the title for list item to be injectable

* Cleaned up the selection code to make it less finicky on mobile when tap scrolling.

* Refactored chapter tab to show volume as well on list view.

* Ensure word count shows for Volumes

* Started adding virtual scrolling, pushing up so Robbie can mess around

* Started adding virtual scrolling, pushing up so Robbie can mess around

* Fixed a bug where all chapters would come under specials

* Show title data as accent if set.

* Style fixes for virtual scroller

* Restyling scroll

* Implemented a way to show storyline with virtual scrolling

* Show Word Count for chapters and cleaned up some logics.

* I might have card layout working with virtual scroll code.

* Some cleanup to hide more system like properties from info bar on series detail page. Fixed some missing time estimate info on storyline chapters.

* Fixed a regression on series service when I integrated VolumeTitle.

* Refactored read time to the backend. Added WordCount to the volume itself so we don't need to calculate on frontend. When asking to analyze files from a series, force the calculation.

* Fixed SeriesDetail api code

* Fixed up the code in the drawer to better update list/card mode

* Basic infinite scroll implemented, however due to how we are updating the list to render, we are re-rending cards that haven't been touched.

* Updated how we render and layout data for infinite scroll on library detail. It's almost there.

* Started laying foundation for loading pages backwards.

Removed lazy loading of images since we are now using virtual paging.

* Hooked in some basic code to allow user to load a prev page with infinite scroll.

* Fixed up series detail api and undid the non-lazy loaded images.

Changed the router to help with this infinite loading on Firefox issue.

* Fixed up some naming issues with Series Detail and added a new test.

* This is an infinite scroll without pagination implementation. It is not fully done, but off to a good start. Virtual scroller with jump bar is working pretty well, def needs more polishing and tweaking. There are hacks in this implementation that need to be revisited.

* Refactored code so that we don't use any pagination and load all results by default.

* Misc code cleanup from build warnings.

* Cleaned up some logic for how to display titles in list view.

* More title cleanup for specials

* Hooked up page layout to user preferences and renamed an existing user pref name to match the dto.

* Swapped out everything but storyline with virtual-scroller over CDK

* Removed CDK from series detail.

* Default value for migration on page layout

* Updating card layout for library detail page

* fixing height for mobile

* Moved scrollbar

* Tweaked some styling for layouts when there is no data

* Refactored the series cards into their own component to make it re-usable.

* More tweaks on series info cards layout and enhanced a few pages with trackby functions.

* Removed some dead code

* Added download on series detail to actionables to fit in with new scroll strategy.

* Fixed language not being updated and sent to the backend for series update.

* Fixed a bad migration (if you ran any prior migration in this branch, you need to undo before you use this commit)

* Adding sticky tabs

* fixed mobile gap on sticky tab

* Enhanced the card title for books to show number up front.

* Adjusted the gutters on admin dashboard

* Removed debug code

* Removing duplicate book title

* Cleaned up old references to cdk scroller

* Implemented a basic jump bar scaling algorithm. Not perfect, but works pretty well.

* Code smells

Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>
2022-06-13 14:37:49 -07:00
Joseph Milazzo
e0a2fc615f
UX Changes, Tasks, WebP, and More! (#1280)
* When account updates occur for a user, send an event to them to tell them to refresh their account information (if they are on the site at the time). This way if we revoke permissions, the site will reactively adapt.

* Some cleanup on the user preferences to remove some calls we don't need anymore.

* Removed old bulk cleanup bookmark code as it's no longer needed.

* Tweaked the messaging for stat collection to reflect what we collect now versus when this was initially implemented.

* Implemented the ability for users to configure their servers to save bookmarks as webP. Reorganized the tabs for Admin dashboard to account for upcoming features.

* Implemented the ability to bulk convert bookmarks (as many times as the user wants).

Added a display of Reoccurring Jobs to the Tasks admin tab. Currently it's just placeholder, but will be enhanced further later in the release.

* Tweaked the wording around the convert switch.

* Moved System actions to the task tab

* Added a controller just for Tachiyomi so we can have dedicated APIs for that client. Deprecated an existing API on the Reader route.

* Fixed the unit tests
2022-05-23 16:19:52 -07:00
Joseph Milazzo
2723a6cd10
Book Reader Redesign with e-ink focus (#1246)
* Refactored the drawer into offcanvas component. Had to write some hacks to emulate how bootstrap's javascript implementation works as ngBootstrap doesn't have a component yet.

* Cleaned up some of the code

* Rewrote drawer to align it with the new design

* First pass, refactored table of content into it's own component

* Refactored all of the settings logic into a separate component. Everything is broken.

* More settings on on reactive form

* More code cleanup on settings

* Misc fixes around the drawer code. Fixed a bug where range sliders were inheriting background color of normal text inputs

* Fixed dark mode with book reader.

We now clear the theme from the main app so book reader is self-contained. Styles for dark mode are injected into the reading-section. Styles that were previously in scss are now only for the actual menu system.

* Cleaned up drawer styling on header

* Removed an ngIf statement for click to paginate

* Tweaked the accent style to have smaller font size and adjusted style on light mode. Cleaned up some clearTimeout code in a further effort to streamline codebase.

* Refactored Dark mode into a basic theme. Currently styles are hardcoded.

* Patched book theme in from themes branch

* Patched in the backend for Book Theme (not tested yet)

* Fixed a bug in seeding code for book themes. Started integration of themes into the reader settings

* Everything except managing themes is working. Themes are a bit shakey, having second thoughts if we should have them or not.

* Reverted the ability to do custom user book themes. Code is stable with system themes.

* Stablize the Styles (#1128)

* Fixed a bug where adding multiple series to reading list would throw an error on UI, but it was successful.

* When a series has a reading list, we now show the connection on Series detail.

* Removed all baseurl code from UI and not-connected component since we no longer use it.

* Fixed tag badges not showing a border. Added last read time to the series detail page

* Fixed up error interceptor to remove no-connection code

* Changed implementation for series detail. Book libraries will never send chapters back. Volume 0 volumes will not be sent in volumes ever. Fixed up more renaming logic on books to send more accurate representations to the UI.

* Cleaned up the selected tab and tab display logic

* Fixed a bad where statement in reading lists for series

* Fixed up tab logic again

* Fixed a small margin on search backdrop

* Made badge expander button smaller to align with badges

* Fixed a few UIs due to .form-group and .form-row being removed

* Updated Theme component page to help with style testing

* Added more components to theme tester

* Cleaned up some styling

* Fixed opacity on search item hover

* Bump versions by dotnet-bump-version.

* Tweaked the accordion styles for light mode

* Set dark book theme as default. Refactored resetSettings to be much cleaner

* Started the refactor to allow book themes to affect global css variables

* Fixed some issues with my css variable declarations

* Fixed a close model state update

* Lots of work, but dark mode on the book reader is basically done. We have to code the themes much like the site themes

* Some black theme enhancements

* Started working on column layout in book reader.

* Cleaned up the CSS on Reader Settings

* Hooked up reading direction

* Got column and double column layout working

* Implemented some basic virtual paging and hooked in book color theme and layout mode into user preferences.

* Migration wrote, can edit page layout and color theme on book reader. Removed book dark mode since no longer needed.

Fixed a bug on login/register forms where when input is focused, text is white and not black.

* When loading book reader, apply column layout.

* Lots of work around 2 column layout, working on images not splitting. Still not working, committing so i can merge develop in and validate code with new manga reader.

* Fixed images being split into 2 BUT regression on each page boundary, total reading height is smaller and smaller

* Fixed some rendering bugs where toggling column layouts would shrink images on screen constantly.

Fixed a bug where bottom bar wouldn't render on column layout in some conditions (this might need to be reworked)

* Started progress on progress work

* Updated .NET to 6.0.4

* Fixed a bug where DataContextModelSnapshot was being removed on build thus new migrations were broken.

* Tweaked the code around progress saving so that we don't loose track of last scroll element on page load

* Trying to restore progress, but stuck

* Extra merge stuff

* Fixed a bug where volumes that are a range fail to generate series detail

* No gutters on whole app. Book reader backend now applies the image class automatically at the backend.

* Added wiki documentation into invite user flow and register admin user to help users understand email isn't required and they can host their own service.

* Removed bottom padding

* Refactored the document height to be set and removed on nav service, so the book reader and manga reader aren't broken.

* Fixed the height of the action bar to simplify logic and keep the code cleaner. Refactored book service image scoping to be much more streamlined and efficient

* Fixed the height of action bar to 62px and adjusted code to use the hardcoded px. (code commented)

* Removed commented out code from fixed action bar height

* Progress restoration seems to be working

* Code cleanup

* Ensure the bottom action bar is at the bottom of the viewport on small pages

* Fixed book fonts not setting properly and added OpenDyslexic font.

* Fixed up some font issues

* Updated drawer so all sections are open by default

* Switched some LINQ to use MinBy

* When navigating between pages and column layout, adjust the shift for the user.

* Removed some debug code

* Blacklist .qpkg folders and don't scan Recently-Snapshot or recycle folders.

* Renamed the scale width to be scoped to kavita to avoid conflicts.

* Refactored ngx-sliders out to use normal range instead. Changed up the preferences to separate image and book settinngs into own accordion.

* updated user preferences for new migration options (not committed yet)

* Removed some debug code

* Remove console.logs

* Migration committed, let's release this to users.

* A lot of crazy code just to ensure that when you close drawer the toggle reflectst that state.
2022-05-08 17:52:15 -07:00
Joseph Milazzo
553f9b0d98
Fixes, Tweaks, and Series Filtering (#1217)
* From previous fix, added the other locking conditions on the update series metadata.

* Fixed a bug where custom series, collection tag, and reading list covers weren't being removed on cleanup.

* Ensure reading list detail has a margin to align to the standard

* Refactored some event stuff to use dedicated consts. Introduced a new event when users read something, which can update progress bars on cards.

* Added recomended and library tags to the library detail page. This will eventually offer more custom analytics

* Cleanup some code onc arousel

* Adjusted scale to height/width css to better fit

* Small css tweaks to better center images in the manga reader in both axis. This takes care of double page rendering as well.

* When a special has a Title set in the metadata, on series detail page, show that on the card rather than filename.

* Fixed a bug where when paging in manga reader, the scroll to top wasn't working due to changing where scrolling is done

* More css goodness for rendering images in manga reader

* Fixed a bug where clearing a typeahead externally wouldn't clear the x button

* Fixed a bug where filering then using keyboard would select wrong option

* Added a new sorting field for Last Chapter Added (new field) to get a similar on deck feel.

* Tweaked recently updated to hit the NFR of 500ms (300ms fresh start) and still give a much better experience.

* Refactored On deck to now go to all series and also sort by last updated. Recently Added Series now loads all series with sort by created.

* Some tweaks on css for cover image chooser

* Fixed a bug in pagination control where multiple pagination events could trigger on load and thus multiple requests for data on parent controller.

* Updated edit series modal to show when the last chapter was added and when user last read it.

* Implemented a highlight on the fitler button when a filter is active.

* Refactored metadata filter screens to perserve the filters in the url and thus when navigating back and forth, it will retain. users should click side nav to reset the state.

* Hide middle section on companion bar on phones

* Cleaned up some prefilters and console.logs

* Don't open drawer by default when a filter is active
2022-04-14 14:55:06 -07:00
Joseph Milazzo
4a93b5c715
Feature/enhancements and more (#1166)
* Moved libraryType into chapter info

* Fixed a bug where you could not reset cover on a series

* Patched in relevant changes from another polish branch

* Refactored invite user setup to shift the checking for accessibility to the backend and always show the link. This will help with users who have some unique setups in docker.

* Refactored invite user to always print the url to setup a new account.

* Single page renderer uses canvasImage rather than re-requesting and relying on cache

* Fixed a rendering issue where fit to split on single on a cover wouldn't force width scaling just for that image

* Fixed a rendering bug with split image functionality

* Added title to copy button

* Fixed a bug in GetContinuePoint when a chapter is added to an already read volume and a new chapter is added loose leaf. The loose leaf would be prioritized over the volume chapter.

Refactored 2 methods from controller into service and unit tested.

* Fixed a bug on opening a volume in series detail that had a chapter added to it after the volume (0 chapter) was read would cause a loose leaf chapter to be opened.

* Added mark as read/actionables on Files in volume detail modal. Fixed a bug where we were showing the wrong page count in a volume detail modal.

* Removed OnDeck page and replaced it with a pre-filtered All-Series. Hooked up the ability to pass read state to the filter via query params. Fixed some spacing on filter post bootstrap update.

* Fixed up some poor documentation on FilterDto.

* Some string equals enhancements to reduce extra allocations

* Fixed an issue when trying to download via a url, to remove query parameters to get the format

* Made an optimization to Normalize method to reduce memory pressure by 100MB over the course of a scan (16k files)

* Adjusted the styles on dashboard for first time setup and used a routerlink rather than href to avoid a fresh load.

* Use framgment on router link

* Hooked in the ability to search by release year (along with series optionally) and series will be returned back.

* Fixed a bug in the filter format code where it was sending the wrong type

* Only show clear all on typeahead when there are at least one selected item

* Cleaned up the styles of the styles of the typeahead

* Removed some dead code

* Implemented the ability to filter against a series name.

* Fixed filter top offset

* Ensure that when we add or remove libraries, the side nav of users gets updated.

* Tweaked the width on the mobile side nav

* Close side nav on clicking overlay on mobile viewport

* Don't show a pointer if the carousel section title is not actually selectable

* Removed the User profile on the side nav so home is always first. Tweaked styles to match

* Fixed up some poor documentation on FilterDto.

* Fixed a bug where Latest read date wasn't being set due to an early short circuit.

* When sending the chapter file, format the title of the FeedEntry more like Series Detail.

* Removed dead code
2022-03-21 07:26:49 -07:00
Joseph Milazzo
e41b455d09
Bugfixes and Cover Chooser Upgrades (#1146)
* Fixed a bug where GetNextChapter would return a loose leaf chapter from a special when it should return nothing.

* Fixed a bug in events widget when an update comes in after a user refreshes, the active event counter could get out of sync, thus showing "Nothing going on here"

Refactored the events widget to be named appropriately.

* Refactored code to have errors during threaded tasks propagate to the UI via events widget (css still needed).

Removed ScanLibraryError in favor of generic Error event.

* Fixed up some code and added ability to remove the event from events widget

* Fixed a bug where modifiying certain fields, like summary, wouldn't lock the field

* Fixed a few bugs where lock state was not being set in the DB correctly nor were certain combinations of locking fields and editing fields.

* Removed debug code

* Updated the discord alert to tag new group

* Refactored cover upload to actually handle uploading a temp file via url on the backend so that users can user change cover by url. Fixed up some bugs that occured when chaning the image container in a previous PR.

* Code cleanup

* Cleaned up the css on the error items

* Code cleanup
2022-03-16 15:02:24 -07:00
Joseph Milazzo
eddbb7ab18
Event Widget Update (#1098)
* Took care of some notes in the code

* Fixed an issue where Extra might get flagged as special too early, if in a word like Extraordinary

* Moved Tag cleanup code into Scanner service. Added a SplitQuery to another heavy API. Refactored Scan loop to remove parallelism and use async instead.

* Lots of rework on the codebase to support detailed messages and easier management of message sending. Need to take a break on this work.

* Progress is being made, but slowly. Code is broken in this commit.

* Progress is being made, but slowly. Code is broken in this commit.

* Fixed merge issue

* Fixed unit tests

* CoverUpdate is now hooked into new ProgressEvent structure

* Refactored code to remove custom observables and have everything use standard messages$

* Refactored a ton of instances to NotificationProgressEvent style and tons of the UI to respect that too. UI is still a bit buggy, but wholistically the work is done.

* Working much better. Sometimes events come in too fast. Currently cover update progress doesn't display on UI

* Fixed unit tests

* Removed SignalREvent to minimize internal event types. Updated the UI to use progress bars. Finished SiteThemeService.

* Merged metadata refresh progress events and changed library scan events to merge cleaner in the UI

* Changed RefreshMetadataProgress to CoverUpdateProgress to reflect the event better.

* Theme Cleanup (#1089)

* Fixed e-ink theme not properly applying correctly

* Fixed some seed changes. Changed card checkboxes to use our themed ones

* Fixed recently added carousel not going to recently-added page

* Fixed an issue where no results found would show when searching for a library name

* Cleaned up list a bit, typeahead dropdown still needs work

* Added a TODO to streamline series-card component

* Removed ng-lazyload-image module since we don't use it. We use lazysizes

* Darken card on hover

* Fixing accordion focus style

* ux pass updates

- Fixed typeahead width
- Fixed changelog download buttons
- Fixed a select
- Fixed various input box-shadows
- Fixed all anchors to only have underline on hover
- Added navtab hover and active effects

* more ux pass

- Fixed spacing on theme cards
- Fixed some light theme issues
- Exposed text-muted-color for theme card subtitle color

* UX pass fixes

- Changed back to bright green for primary on dark theme
- Changed fa icon to black on e-ink

* Merged changelog component

* Fixed anchor buttons text decoration

* Changed nav tabs to have a background color instead of open active state

* When user is not authenticated, make sure we set default theme (dark)

* Cleanup on carousel

* Updated Users tab to use small buttons with icons to align with Library tab

* Cleaned up brand to not underline, removed default link underline on hover in dropdown and pill tabs

* Fixed collection detail posters not rendering

Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>

* Bump versions by dotnet-bump-version.

* Tweaked some of the emitting code

* Some css, but pretty bad. Robbie please save me

* Removed a todo

* styling update

* Only send filename on FileScanProgress

* Some console.log spam cleanup

* Various updates

* Show events widget activity based on activeEvents

* progress bar color updates

* Code cleanup

Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>
2022-02-18 18:57:37 -08:00
Joseph Milazzo
568ea9fd3a
Custom Theme Support (#1077)
* Started the migration to bootstrap 5. Introduced a breakpoint system that bootstrap reflects for our screens.

* sr only migrated

* mr/ml -> me/ms

* pl/pr -> ps/pe

* btn-block

* removed input-group-append

* Added form-label to all labels

* Added some style overrides for inputs

* Replaced form-group with mb-3

* Ignore journal files

* Update media to d-flex/flex-grow-1

* Fixed reading list detail page

* For develop builds, don't inline critical styles

* Fixed some downstream security issues

* Fixed a layout issue in series detail

* Fixed issue with btn-light not having background color. Updated layout for series detail metadata

* Cleaned up nav search

* Laid out the organization for custom theme components. Update _inputs.scss with variable overrides and depending on theme, it will just work.

* Lots of theming work

* Added inputs to the theme page

* Login and input placeholder changes

- Fixed login screen centering issue on all devices
- Changed the format of the login screen
- Change the input placeholder color

* Added checkbox styles

* Refactored tagbadges and removed some ngdeep selectors

* Added nav bar component and refactored some styles into event widget

* Cleaned nav events again and made dedicated popover body

* Finished pagination component

* Fixed up some styles with buttons

* refactored dropdown component

* Update accordion component

* Refactored breadcrumbs and rating star. Fixed a missing style for cards

* Fixed some styling issues on person badge, added modal component, and some global styles

* Finished moving everything within dark to component files

* Fixed up filter buttons, move card styles into a component theme, fixed slider style

* Refactored library card and grouped typeahead

* Updated normal typeahead component and reduced amount of ngdeep selector

* Refactored grid breakpoints to be available by css variable, but it's hardcoded into the app

* Ensure breakpoints are defined per theme

* Fixed up some styling overrides and customization for nav links and alt button

* Removed some deep styles, moved css out of splash container and brough back labels for login page

* Finished css variable refactor

* Refactored all the theme variable definitions into files for each theme.

* Added back bootstrap overrides

* Added a note about bootstrap theme colors being not-possible to swap out at runtime

* Cleaned up some dead code

* Implemented the ability to set a custom theme on the site. Cleaned up misc code throughout.

* Additional changes

- Fixed nav where "kavita" was not hiding correctly on small viewports
- Fixed search bar to make the behavior more consistent
- Fixed accordion buttons
- Changed accordion buttons to be more responsive
- Added radio button colors
- Fixed radios on theme test page
- Changed login and reset password card layouts to be more consistent.
- Added primary color shade for when darker shading is needed.

* Built a basic site, allow the user to apply different themes, refactored nav service code out.

* Implemented the ability update a user's theme

* Added unit tests for Scan and Get Content in SiteThemeService.

* Fixed a bug in the login code and Pref code which wasn't joining on SiteTheme table. Wrote Unit tests and the UI component to manage current theme.

* Implemented scan so that it manages custom themes with unit tests

* Component updates

- Repositioning style ordering
- Adding indicator override
- Adding select styles

* SignlaR integration, some fixes when creating custom entities, one single migration. Just login functionality left.

* More ui updated

- Added .no-hover to prevent hover on elements where not needed
- Changed all selects I could find to appropriate class
- Changed up nav tabs to work more like bootstrap tabs than pills
- Added padding to top of some containers to make styles consistent
- Added ability to change navbar fontawesome icon colors
- removed some unecessary inline styling
- Changed radio button to appropriate class
- Toned down primate color, a bit too bright for dark theme.
- Added ability to change button fontawesome icon color

* nav-tab fix for series-detail

* Added themes folder to gitignore

* Adding card overlay

* Fixing up light theme

* Everything is done. Only bug is that color-scheme isn't being set properly from css variable.

* Checkboxes have pointer by default. Confirm/Confirm email use default (dark) theme by default

* Fixed an error where color-scheme wasn't reflecting correctly on themes on first load

* Fixed user preferences not available on login

* Changing dual radios to switches and color tweaks

* disabled primary APCA fix

* button APCA fixes

* Fixed some timing issues with first load and image service

* Fixed swiper issues from upgrade

* Changed themes to be scss files again and adjusted Seed code

* Migrated carousel to css variables. Fixed a broken animation for search.

* Cleaned up some backend smells

* Fixed white border outline on nav tabs, added some variables for header

* Nav bar has been css variable-ified

* Added some basic eink stuff to make the app useable

Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>
2022-02-16 07:12:38 -08:00
Joseph Milazzo
67ba5e302f
Refactored the way cover images are updated from SignalR to use an explicit event that is sent at a granular level for a given type of entity. (#1046)
Fixed a bad event listener for RefreshMetadata (now removed) to update metadata on Series Detail. Now uses ScanService, which indicates a series has completed a scan.
2022-02-07 17:44:06 -08:00
Joseph Milazzo
52ab01571b
Removed showing toasts when series are added to the server since cards will show automatically. Hide events widget unless you're an admin. Changed an API signature to match the data that's being sent back. (#979) 2022-01-22 07:56:07 -08:00
Joseph Milazzo
e248cf7579
UI Updates + New Events (#806)
* Implemented ability to see downloads users are performing on the events widget.

* Fixed a bug where version update task was calling wrong code

* Fixed a bug where when checking for updates, the event wouldn't be pushed to server with correct name.

Added update check to the event widget rather than opening a modal on the user.

* Relaxed password requirements to only be 6-32 characters and inform user on register form about the requirements

* Removed a ton of duplicate logic for series cards where the logic was already defined in action service

* Fixed OPDS total items giving a rounded number rather than total items.

* Fixed off by one issue on OPDS pagination
2021-11-29 12:19:36 -08:00
Joseph Milazzo
281352001d
Feature/progress widget (#760)
* Implemented a new widget to show when operations are occuring in the backend (tasks + progress events). Fixed an oversight on progress reporting where I sent 100F instead of 1F.

* Hooked in more progress events for tasks on the backend. Cleaned up code and integrated some RBS into it. CSS needed.

* Show a colored icon when events are active

* Added some styling to the progress widget
2021-11-15 14:50:14 -08:00
Joseph Milazzo
f6bfabde4c
Backend Bugfixes and Enhanced Selections (#754)
* Updated some signatures to avoid a ToArray() within a loop.

* Use UpdateSeries directly when adding new series, rather than a modified version for new series only.

* Refactored some messages for scanner loop to reduce duplicate code and write messages more clear. Hooked in a RefreshMetadataProgress event (no UI changes).

* Fixed a bug on docker where backup service was using different logic than non-docker, which isn't needed after config change last release.

* Allow user to make more than 1 backup per day

* Implemented a select all checkbox for library access modal
2021-11-14 08:20:12 -08:00
Joseph Milazzo
69246d80fb
OPDS Fix (#737)
* Removed the Nothing here message when feeds are empty to conform to spec.

* Don't show toast on new series added when user is reading

* I forgot to add unique Ids to each feed, thus breaking Panels integration.
2021-11-09 16:56:11 -08:00
Joseph Milazzo
78f3ccf889
Scanner & Parser Changes (#735)
* Fixed a bug where partial volume support got missed on the epub parser.

* When a drive is unavailable during when a scan starts, abort so user doesn't loose half library if their networked drive goes down.

* Moved format for card details to highest level (since all chapters/files have same format) and added date added to each file to help when new chapters/files are added and grouped into a volume.

* Implemented handling on the UI when a series is deleted

* Added case for series removal for series detail

* Only redirect for this series
2021-11-09 04:51:45 -08:00
Joseph Milazzo
6adf092668
When the DB fails to save, log out all the series the user should look into for constraint issues and push a message to the admins connected to webui. (#687) 2021-10-18 08:45:39 -07:00
Joseph Milazzo
2183bf2d59
Misc Bugfixes (#637)
* Use null coalescing for comicinfo

* Removed Sentry. The integrations were not providing any userful information.

* Updated to the latest versions of dependencies
2021-10-04 17:18:42 -07:00
Joseph Milazzo
a5b6bf1b52
Disable Authentication & Login Page Rework (#619)
* Implemented the ability to disable authentication on a server instance. Admins will require authentication, but non-admin accounts can be setup without any password requirements.

* WIP for new login page.

* Reworked code to handle disabled auth better. First time user flow is moved into the user login component.

* Removed debug code

* Removed home component, shakeout testing is complete.

* remove a file accidently committed

* Fixed a code smell from last PR

* Code smells
2021-10-02 11:23:58 -05:00
Joseph Milazzo
ce2f4b6a9f
Polishing and Bugfixes (#613)
* Added a new field to Library for showing Last Scan time for a library.

Manage library page now shows last scan for each library. Tweaked the websocket code to make scan progress a bit more reliable.

* Updated docnet to provide ARM support from our recent PR. Pi users can now have a version for PDF support out of the box.

* Parser is now culture invariant to hopefully fix an issue on Italian systems not detecting . correctly

* Added the ability for the collection detail page to update when a new series is added.

* Fixed an issue where multiple chapters stacked in a volume and reading in incognito, wouldn't sort the chapters and would open the wrong one.

* Code smell
2021-10-01 08:13:55 -07:00
Joseph Milazzo
0ac54e682f
Warn on Refresh Metadata (#610)
* Warn the user about the dangers of refresh metadata and promote them to use a scan instead.

* Removed presence hub and moved it over to message hub.

When a library scan is in progress, now a spinner will show on manage libraries page.

* Code cleanup
2021-09-30 17:36:58 -07:00
Joseph Milazzo
04e1051ec9
Fixed a circular reference. Touched up long press on card items for mobile devices to now be so sensitive for triggering selection code. (#609) 2021-09-30 10:11:18 -04:00
Joseph Milazzo
56cf7be799
Scan Chunking (#604)
* Some performance refactoring around getting Library and avoid a byte[] copy for getting cover images for epubs.

* Initial commit. Rewrote the main series scan loop to use chunks of data at a time. Not fully shaken out.

* Hooked in the ability for the UI to react to series being added or removed from the DB.

* Cleaned up the messaging in the scan loop to be more clear.

* Metadata scan and scan work as expected and populate data to the UI. There is a slow down in speed for overall operation.

Scan series and refresh series metadata does not work fully.

* Fixed a bug where MangaFiles were not having LastModified Updated correctly, meaning they were opening archives every scan.

* Modified the code to be more realistic to the underlying file

* Updated ScanService to properly handle deleted files and not result in a higher-level scan.

* Shuffled around volume related repo apis to the volume repo rather than being in series.

* Rewrote scan series to be much cleaner and more concise on the flow. Fixed an issue in UpdateVolumes such that the debug code to log out removed volumes could throw an exception and actually break updating volumes.

* Refactored the code to set MangaFile last modified timestamp into the MangaFile entity.

* Added Series Name to ScanSeries event

* Added additional checks in ScanSeries to ensure we never go outside the library folder.

Added extra debug messages for when a metadata refresh doesn't actually make changes and for when we regen cover images.

* More logging statements saying where they originate from. Fixed a critical bug which caused only 1 chunk to ever be processed.

* Fixed a concurrency issue with natural sorter which could cause issues in ArchiveService.cs.

* Log cleanups

* Fixed an issue with logging out total time of a scan.

* Only show added toastrs for admins. When kicking off a refresh metadata for series, make sure we regenerate all cover images.

* Code smells on benchmark despite it being ignored
2021-09-30 06:08:05 -07:00
Joseph Milazzo
cf4fd2cb9c
Bugs, Enhancements, and Performance (#580)
* Added parser case for "The Duke of Death and His Black Maid - Ch. 177 - The Ball (3).cbz"

* Removed a file that is created and modified every test run.

* Fixed a bad parser case for "Batman Beyond 02 (of 6) (1999)" which was consuming too many characters

* Removed a lot of "Volume" parsing for Comics that don't make sense. This is prep work for the upcoming Comic Rework release.

* Reworked a lot of parsing cases for comics based on naming conventions observed from releases found online.

* Added a way for external scripts to use a user api key to authenticate

* Fixed an issue if the manga only had one page, the bottom menu would be missing page and chapter controls.

* Fixed a bug where on small phones, nav bar could overflow due to scroll to top

* Tweaked a lot of regex for manga parsing to handle some cases where poorly named files, like "Vol. 03 Ch. 21" would end up parsing as Series "Vol. 03".

* Even more handling of parser cases. Manga parser should be as it was but more robust to handle bad naming.

* Fixed: Don't force metadata refresh on Scan Series, only on refresh metadata

* Implemented the ability to automatically refresh after a series scan based on when server finishes. Remove a duplicate API call from series detail.

* Removed another API call for series metadata that isn't needed.

* Refactored Message creation to a factory, hardcoded strings are centralized, and RefreshSeriesMetadata sends an event and is refactored to be async.

* Fixed a bug when really poorly named files are within a folder that contains the series name, fallback couldn't occur due to it being taken as root folder. Now we detect said condition and will go one level higher, resulting in potentially more I/O, but the series will not be deleted.

* Added the Read in Incognito context item for Chapter cards

* Skip an additional check for series summary for series that aren't EPUB or Archive formats.

* Fixed an issue where cover image generation could occur due to a bad check on LastWriteTime on the underlying file.

* Added some extra comic parser tests

* Added a ScanLibrary event (not hooked up in UI)

* Performance improvement on metadata service. Now when we scan for cover image changes, we emit when a change occurs and only then do we update parent entities (array copy).

* Removed an hr from series detail and ensure we update the cover image for series when scan series finishes.

* Updated the infinite scroller to use a Flags pattern for the debug mode. Updated a few logical conditions for mobile.

* Removed the concurrency check on row progress as if too many calls hit the DB, it will throw, but it doesn't matter.

Fixed a bad logic code which could cause scrolling after hitting the bottom of the chapter.

* Ensure prefetching uses totalPages + 1 since we pass in totalPages as - 1 from manga reader

* Fixed issue where last page of webtoon wouldn't be prefetched due to a < instead of <= on prefetching code

* Implemented ability to send images from archives to the UI without incurring any extra memory pressure.

* Dropdown menus now have a darker background

* Webtoon reader now works on mobile.

* Fixed how keyboard presses for up/down/left/right work with MANGA_UD reading mode. See issue #579

* Fixed cont reader for webtoons on mobile

* Fixed a small issue where top spacer would too quickly switch to prev chapter

* Updated user preferences to use same slider style. Removed some css that is not used.

* Added comic parser case for "Saga 001 (2012) (Digital) (Empire-Zone)"

* Added accessibility toggle to reading list order and aligned sliders to all use the same style.

* Removed a todo for checking on new image serving code. It works great.

* Fixed a missing await

* Auth guard will now check if an existing toast is present giving same message before poping the toast.

* Fixed alignment on phones for reading lists

* Moved sorters so they aren't resused between multiple threads. Slightly higher memory footprint.

* Fixed a broken unit test

* Code smells

* More unit test fixing
2021-09-15 11:06:29 -07:00
Joseph Milazzo
e479f17aa6
v0.4.4 polishing (#515)
* Fixed a bad comparision between JsonElement and null.

* Removed console.logs. Fixed bug in edit collection detail page where summary wouldn't update after editing it.

* Removed a UI package that is no longer used.

Fixed an issue where MarkVolumeAsUnread was using an old set of APIs and now uses the new, faster API.
2021-08-22 09:42:47 -07:00
Joseph Milazzo
2a76092566
Update Notification Refactor (#511)
* Replaced profile links to anchors so we can open in new tab if we like

* Refactored how update checking works. We now explicitly check and send back on the same API. We have a weekly job that will push an update to the user.

* Implemented a changelog tab

* Ported over a GA fix for using ' in PR bodies.

* Don't check cert for Github
2021-08-19 18:49:53 -05:00
Joseph Milazzo
e9ec6671d5
Bookmarking Pages within the Reader (#469)
# Added
- Added: Added the ability to bookmark certain pages within the manga (image) reader and later download them from the series context menu. 

# Fixed
- Fixed: Fixed an issue where after adding a new folder to an existing library, a scan wouldn't be kicked off
- Fixed: In some cases, after clicking the background of a modal, the modal would close, but state wouldn't be handled as if cancel was pushed

# Changed
- Changed: Admin contextual actions on cards will now be separated by a line to help differentiate. 
- Changed: Performance enhancement on an API used before reading

# Dev
- Bumped dependencies to latest versions

=============================================
* Bumped versions of dependencies and refactored bookmark to progress.

* Refactored method names in UI from bookmark to progress to prepare for new bookmark entity

* Basic code is done, user can now bookmark a page (currently image reader only).

* Comments and pipes

* Some accessibility for new bookmark button

* Fixed up the APIs to work correctly, added a new modal to quickly explore bookmarks (not implemented, not final).

* Cleanup on the UI side to get the modal to look decent

* Added dismissed handlers for modals where appropriate

* Refactored UI to only show number of bookmarks across files to simplify delivery. Admin actionables are now separated by hr vs non-admin actions.

* Basic API implemented, now to implement the ability to actually extract files.

* Implemented the ability to download bookmarks.

* Fixed a bug where adding a new folder to an existing library would not trigger a scan library task.

* Fixed an issue that could cause bookmarked pages to get copied out of order.

* Added handler from series-card component
2021-08-10 18:18:07 -05:00
Joseph Milazzo
2809233de0
Update Notifier (#464)
# 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
2021-08-09 08:52:24 -05:00