Commit graph

54 commits

Author SHA1 Message Date
Joe Milazzo
c10acb1279
Security Event Logging & Bugfixes (#1882)
* Fixed bookmarking failing to convert to webp

* Brought the ag-swipe/ng-swipe code into Kavita due to being abandoned by developer and angular requirements.

* Fixed average reading time per week finally

* Cleaned up some extra decimals on time duration pipe

* Don't try to update index.html for base url on local. Fixed ag-swipe on prod mode.

* Updated a link on theme manager to point to the new github

* Range knobs should be primary color on firefox too

* Implemented the ability to get thumbnails of pages inside an archive or pdf.

* Updated packages and fixed opds-ps 1.2 issue

* Fixed lock file

* Allow Kavita's Swagger to hit instances with CORS

* Added IP/Request logging for Security Audits

* Linked up Summary tag from CBL into Kavita.

* Redid the migration so SecurityEvent now has UTC date as well.

* Split security logging to a separate file

* Update to new versions of checkout and setup

* Added a PR check on PR body to ensure that it doesn't contain any characters that break our discord hook.

* Updating action

* optimize regex in action

* Fixed an issue where fit to width would cause the actual height of the image to be shown for pagination bars, instead of rendered.

* Added some new code in GetPageFromFiles to ensure pages that exceed array map down to last file.

* Added comment about robots

* Fixed up unit tests for new ReaderService signature

* Kavita now cleans up empty reading lists at night

* Don't allow nightly cleanup to run if we are running media conversion tasks

* Fixed some bugs in typeahead, it should behave much more reliably.

* Fix an issue where emulate comic book wasn't extending to the bottom properly

* Added support for Series Chapter 001 Volume 001

* Refactor XFrameOptions="SameOrigins" out to allow users to override in appsettings.json.

* Added a rate limiter for some endpoints, but it doesn't seem to be triggering

---------

Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>
2023-03-16 13:57:34 -07:00
Joe Milazzo
3f24dc7392
Reading List Fixes (#1784)
* Add ability to save readinglist comicinfo fields in Chapter.

* Added the appropriate fields and migration for Reading List generation.

* Started the reading list code

* Started building out the CBL import code with some initial unit tests.

* Fixed first unit test

* Started refactoring control code into services and writing unit tests for ReadingLists. Found a logic issue around reading list title between create/update. Will be corrected in this branch with unit tests.

* Can't figure out how to mock UserManager, so had to uncomment a few tests.

* Tooltip for total pages read shows the full number

* Tweaked the math a bit for average reading per week.

* Fixed up the reading list unit tests. Fixed an issue where when inserting chapters into a blank reading list, the initial reading list item would have an order of 1 instead of 0.

* Cleaned up the code to allow the reading list code to be localized easily and fixed up a bug in last PR.

* Fixed a sorting issue on reading activity

* Tweaked the code around reading list actionables not showing due to some weird filter.

* Fixed edit library settings not opening on library detail page

* Fixed a bug where reading activity dates would be out of order due to a bug in how charts works. A temp hack has been added.

* Disable promotion in edit reading list modal since non-admins can (and should have) been able to use it.

* Fixed a bug where non-admins couldn't update their OWN reading lists. Made uploading a cover image for readinglists now check against the user's reading list access to allow non-admin's to set images.

* Fixed an issue introduced earlier in PR where adding chapters to reading list could cause order to get skewed.

* Fixed another regression from earlier commit

* Hooked in Import CBL flow. No functionality yet.

* Code is a mess. Shifting how the whole import process is going to be done. Commiting so I can pivot drastically.

* Very rough code for first step is done.

* Ui has started, I've run out of steam for this feature.

* Cleaned up the UI code a bit to make the step tracker nature easier without a dedicated component.

* Much flow implementation and tweaking to how validation checks and what is sent back.

* Removed import via cbl code as it's not done. Pushing to next release.
2023-02-12 08:20:51 -08:00
Joe Milazzo
d09e458e85
Angular 15 (#1765)
* Refactored some code in BookService to make the code easier to understand

* More lint fixes

* Use npm ci for installs in pipeline

* Fixed build system again by deleting nodejs. New build system uses package-lcok going forward.
2023-01-30 10:47:34 -08:00
Joe Milazzo
f64f232e51
Angular 15 (#1764)
* Updated ngx-virtual-scroller

* Removed the karma test config as it's breaking migration

* Reverted to pre angular 15

* Upgraded packages and reverted target to ES6 for older devices

* It's broken. Need to also find the safari version for old Ipads

* Fixes some code in default pipe and many updates to packages. Removed support for old iOS versions as it restricted Kavita from using newer features. Build still broken.

* More progress in getting build working on Angular 15. Removed polyfills.ts for new angular config

* Remove all.css for icons and use scss instead

* Removed stuff that isn't needed

* Migrated extended linting to eslint, ran on project and updated issues. Removed a duplicate component that did nothing. Fixed a few places where lifecycle hooks werent being called as interface wasn't implemented.

* App builds correctly. Source maps are still needed.

* Fixed source maps and removed more testing stuff. I will re-add later in another release when I figure out how to properly tackle dependencies on backend.

* Reverted back to old source map definition
2023-01-30 06:27:52 -08:00
Joe Milazzo
45b854e1d0
[Manga Reader] Swipe Support (#1735)
* Fixed a loading indicator that is always on

* Started to add swipe directive

* Implemented the ability to swipe to navigate pages in manga reader.

* Swipe to paginate seems to be working reliably

* Removed a bunch of junk from csproj and added a debug menu for testing on phone to smooth out experience.

* Fixed a bug where reading list detail wouldn't render the set image of the reading list.

* Added some instructions and code to allow connecting to dev instance easier.

* Fixed up paging with keyboard where to ensure that when we hit the end of the scroll, we don't go to the next page instantly, but rather make the user press the key once more.

* Fixed reading list image not properly renderering on reading list detail page.

* Solved the swiping bug, need to play with threshold again.

* Swipe is now working. Need to decide if I'm going to support reversing the direction with reading direction.

* Hooked up swipe with reading direction code

* Cleaned up some direction code to align to a new enum

* Feature complete
2023-01-09 06:48:18 -08:00
Joe Milazzo
2464a30bc2
Manga Reader Work (#1729)
* Instead of augmenting prefetcher to move across chapter bounds, let's try to instead just load 5 images (which the browser will cache) from next/prev so when it loads, it's much faster.

* Trialing loading next/prev chapters 5 pages to have better next page loading experience.

* Tweaked GetChapterInfo API to actually apply conditional includeDimensions parameter.

* added a basic language file for upcoming work

* Moved the bottom menu up a bit for iOS devices with handlebars.

* Fixed fit to width on phones still having a horizontal scrollbar

* Fixed a bug where there is extra space under the image when fit to width and on a phone due to pagination going to far.

* Changed which variable we use for right pagination calculation

* Fixing fit to height

- Fixing height calc to account for horizontal scroll bar height.

* Added a comment for the height scrollbar fix

* Adding screenfull package

# Added:
- Added screenfull package to handle cross-platform browser fullscreen code

# Removed:
- Removed custom fullscreen code

* Fixed a bug where switching from webtoon reader to other layout modes wouldn't render anything. Webtoon continuous scroll down is now broken.

* Fixed it back to how it was and all is good. Need to call detectChanges explicitly.

* Removed an additional undeeded save progress call on loadPage

* Laid out the test case to move the page snapping to the backend with full unit tests. Current code is broken just like UI layer.

* Refactored the snap points into the backend and ensure that it works correctly.

* Fixed a broken unit test

* Filter out spammy hubs/messages calls in the logs

* Swallow all noisy messages that are from RequestLoggingMiddleware when the log level is on Information or above.

* Added a common loading component to the app. Have yet to refactor all screens to use this.

* Bump json5 from 2.2.0 to 2.2.3 in /UI/Web

Bumps [json5](https://github.com/json5/json5) from 2.2.0 to 2.2.3.
- [Release notes](https://github.com/json5/json5/releases)
- [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md)
- [Commits](https://github.com/json5/json5/compare/v2.2.0...v2.2.3)

---
updated-dependencies:
- dependency-name: json5
  dependency-type: indirect
...

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

* Alrigned all the loading messages and styles throughout the app

* Webtoon reader will use max width of all images to ensure images align well.

* On Original scaling mode, users can use the keyboard to scroll around the images without pagination kicking off.

* Removed console logs

* Fixed a public vs private issue

* Fixed an issue around some cached files getting locked due to NetVips holding them during file size calculations.

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-07 09:14:22 -06:00
Joe Milazzo
02daa5ed56
Feature/stats finishoff (#1720)
* Added ability to click on genres, tags, and people to view all items in a modal.

* Made it so we can click and open a filtered search from generic list

* Fixed broken epub pagination area due to a typo in a query selector

* Added day breakdown, wrapping up stats
2023-01-03 17:41:10 -08:00
Joe Milazzo
1a729adf40
OPDS Enhancements (#1687)
* Bump express from 4.17.2 to 4.18.2 in /UI/Web

Bumps [express](https://github.com/expressjs/express) from 4.17.2 to 4.18.2.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.17.2...4.18.2)

---
updated-dependencies:
- dependency-name: express
  dependency-type: indirect
...

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

* Bump decode-uri-component from 0.2.0 to 0.2.2 in /UI/Web

Bumps [decode-uri-component](https://github.com/SamVerschueren/decode-uri-component) from 0.2.0 to 0.2.2.
- [Release notes](https://github.com/SamVerschueren/decode-uri-component/releases)
- [Commits](https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.2)

---
updated-dependencies:
- dependency-name: decode-uri-component
  dependency-type: indirect
...

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

* Bump qs and express in /UI/Web

Bumps [qs](https://github.com/ljharb/qs) and [express](https://github.com/expressjs/express). These dependencies needed to be updated together.

Updates `qs` from 6.5.3 to 6.11.0
- [Release notes](https://github.com/ljharb/qs/releases)
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/qs/compare/v6.5.3...v6.11.0)

Updates `express` from 4.17.2 to 4.18.2
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.17.2...4.18.2)

---
updated-dependencies:
- dependency-name: qs
  dependency-type: indirect
- dependency-name: express
  dependency-type: indirect
...

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

* Added genre and authors to Series level, added summary to volume and chapter level.

Force order on reading list title as Chunky enforces their own sort order and doesn't respect the spec.

* Moved all the reading list formatting logic to the backend. This allows us to re-use the UI logic for OPDS streams.

* Fixed a broken unit test

* Code smells

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-10 09:07:55 -08:00
Joe Milazzo
c361e66b35
Basic Stats (#1673)
* Refactored ResponseCache profiles into consts

* Refactored code to use an extension method for getting user library ids.

* Started server statistics, added a charting library, and added a table sort column (not finished)

* Refactored code and have a fully working example of sortable headers. Still doesn't work with default sorting state, will work on that later.

* Implemented file size, but it's too expensive, so commented out.

* Added a migration to provide extension and length/size information in the DB to allow for faster stat apis.

* Added the ability to force a library scan from library settings.

* Refactored some apis to provide more of a file breakdown rather than just file size.

* Working on visualization of file breakdown

* Fixed the file breakdown visual

* Fixed up 2 visualizations

* Added back an api for member names, started work on top reads

* Hooked up the other library types and username/days.

* Preparing to remove top reads and refactor into Top users

* Added LibraryId to AppUserProgress to help with complex lookups.

* Added the new libraryId hook into some stats methods

* Updated api methods to use libraryId for progress

* More places where LibraryId is needed

* Added some high level server stats

* Got a ton done on server stats

* Updated default theme (dark) to be the default root variables. This will allow user themes to override just what they want, rather than maintain their own css variables.

* Implemented a monster query for top users by reading time. It's very slow and can be cleaned up likely.

* Hooked up top reads. Code needs a big refactor. Handing off for Robbie treatment and I'll switch to User stats.

* Implemented last 5 recently read series (broken) and added some basic css

* Fixed recently read query

* Cleanup the css a bit, Robbie we need you

* More css love

* Cleaned up DTOs that aren't needed anymore

* Fixed top readers query

* When calculating top readers, don't include read events where nothing is read (0 pages)

* Hooked up the date into GetTopUsers

* Hooked top readers up with days and refactored and cleaned up componets not used

* Fixed up query

* Started on a day by day breakdown, but going to take a break from stats.

* Added a temp task to run some migration manually for stats to work

* Ensure OPDS-PS uses new libraryId for progress reporting

* Fixed a code smell

* Adding some styling

* adding more styles

* Removed some debug stuff from user stats

* Bump qs from 6.5.2 to 6.5.3 in /UI/Web

Bumps [qs](https://github.com/ljharb/qs) from 6.5.2 to 6.5.3.
- [Release notes](https://github.com/ljharb/qs/releases)
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/qs/compare/v6.5.2...v6.5.3)

---
updated-dependencies:
- dependency-name: qs
  dependency-type: indirect
...

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

* Tweaked some code for bad data cases

* Refactored a chapter lookup to remove un-needed Volume join in 5 places across the code.

* API push

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-07 06:01:49 -08:00
Joe Milazzo
e520861e33
Fresh Nightly Installs Work (#1659)
* Bump loader-utils from 2.0.3 to 2.0.4 in /UI/Web

Bumps [loader-utils](https://github.com/webpack/loader-utils) from 2.0.3 to 2.0.4.
- [Release notes](https://github.com/webpack/loader-utils/releases)
- [Changelog](https://github.com/webpack/loader-utils/blob/v2.0.4/CHANGELOG.md)
- [Commits](https://github.com/webpack/loader-utils/compare/v2.0.3...v2.0.4)

---
updated-dependencies:
- dependency-name: loader-utils
  dependency-type: indirect
...

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

* Removed a very old cgecj from Nov 2021 when data/appsettings was moved to config/

* Added some notes about migration

* Removed a file that shouldn't have been there.

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-17 13:52:10 -08:00
Joe Milazzo
15e09a0cf1
Fixed Series Relations Schema (#1654)
* Bump loader-utils from 2.0.2 to 2.0.3 in /UI/Web

Bumps [loader-utils](https://github.com/webpack/loader-utils) from 2.0.2 to 2.0.3.
- [Release notes](https://github.com/webpack/loader-utils/releases)
- [Changelog](https://github.com/webpack/loader-utils/blob/v2.0.3/CHANGELOG.md)
- [Commits](https://github.com/webpack/loader-utils/compare/v2.0.2...v2.0.3)

---
updated-dependencies:
- dependency-name: loader-utils
  dependency-type: indirect
...

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

* Fixed is want to read coming back as a string and not working correctly.

* Changed from to Continue to be more explicit

* Added the first migration which exports data as a csv in temp/. This is the backup in case data is lost in the migration.

* Note for later

* Fixed the migration for the series relation so when deleting any series on any edge of the relationship, the SeriesRelation row deletes.

* Change buttons back to titles on series detail page

* Wrote the code to import relations from the backup.

* Added an additional version check to avoid file io on migration.

* Code cleanup

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-15 06:45:02 -08:00
Joe Milazzo
38a169818b
Bookmark and Reader bugs (#1632)
* Updated swiper and some packages for reported security issues

* Fixed reading lists promotion not working

* Refactor RenameFileForCopy to use iterative recursion, rather than functional.

* Ensured that bookmarks are fetched and ordered by Created date.

* Fixed a bug where bookmarks were coming back in the correct order, but due to filenames, would not sort correctly.

* Default installs to Debug log level given errors users have and Debug not being too noisy

* Added jumpbar to bookmarks page

* Now added jumpbar to bookmarks

* Refactored some code into pipes and added some debug messaging for prefetcher

* Try loading next and prev chapter's first/last page to cache so it renders faster

* Updated GetImage to do a bound check on max page.

Fixed a critical bug in how manga reader updates image elements src to prefetch/load pages. I was not creating a new reference which broke Angular's ability to update DOM on changes.

* Refactored the image setting code to use a single method which tries to use a cached image always.

* Refactored code to use getPage which favors cache and simplifies image creation code
2022-11-02 20:10:19 -05:00
Joe Milazzo
6ea9f2c73e
Scan Loop Fortification (#1573)
* Cleanup some messaging in the scan loop to be more context bearing

* Added Response Caching to Series Detail for 1 min, due to the heavy nature of the call.

* Refactored code to make it so that processing of series runs sync correctly.

Added a log to inform the user of corrupted volume from buggy code in v0.5.6.

* Moved folder watching out of experimental

* Fixed an issue where empty folders could break the scan loop

* Another fix for when dates aren't valid, the scanner wouldn't get the proper min and would throw an exception (develop)

* Implemented the ability to edit release year from the UI for a series.

* Added a unit test for some new logic

* Code smells

* Rewrote the handler for suspending watching to be more resilient and ensure no two threads have a race condition.

* More error handling for when a ScanFolder is invoked but multiple series belong to that folder, log it to the user and default to a library scan.

* ScanSeries now will check for kavitaignores higher than it's own folder and respect library level.

* Fixed an issue where image series with a folder name containing the word "folder" could get ignored as it thought the image was a cover image.

When a series folder is moved or deleted, skip parent ignore finding.

* Removed some old files, added in scanFolder a check if the series found for a folder is in a book library and if so to always do a library scan (as books are often nested into one folder with  multiple series). Added some unit tests

* Refactored some scan loop logic into ComicInfo, wrote tests and updated some documentation to make the fields more clear.

* Added a test for GetLastWriteTime based on recent bug

* Cleaned up some redundant code

* Fixed a bad merge

* Code smells

* Removed a package that's no longer used.

* Ensure we check against ScanQueue on ScanFolder enqueuing

* Documentation and more bullet proofing to ensure Hangfire checks work more as expected
2022-10-09 09:23:41 -07:00
Korakot Santiudommongkol
3cdf8df1db
Nested Menus (#1554)
* added initial submenu

* added submenu - needs a bit of more work

* removed admin and nonadmin action split

* the whole menu is build under the resetactions function

* removed download from seriesAction

* changed submenu layout
changed submenu toggle icon
fix for the hovering of submenu toggle

* moved the cdMarkForCheck in the subscribe block
2022-09-23 07:37:30 -07:00
Joseph Milazzo
00f0ad5a3f
Misc Enhancements (#1525)
* Moved the data connection for the Database out of appsettings.json and hardcoded it. This will allow for more customization and cleaner update process.

* Removed unneeded code

* Updated pdf viewer to 15.0.0 (pdf 2.6), which now supports east-asian fonts

* Fixed up some regex parsing for volumes that have a float number.

* Fixed a bug where the tooltip for Publication Status wouldn't show

* Fixed some weird parsing rules where v1.1 would parse as volume 1 chapter 1

* Fixed a bug where bookmarking button was hidden for admins without bookmark role (due to migration)

* Unified the star rating component in series detail to match metadata filter.

* Fixed a bug in the bulk selection code when using shift selection, where the inverse of what was selected would be toggled.

* Fixed some old code where if on all series page, only English as a language would return. We now return all languages of all libraries.

* Updated api/metadata/languages documentation

* Refactored some bookmark api names: get-bookmarks -> chapter-bookmarks, get-all-bookmarks -> all-bookmarks, get-series-bookmarks -> series-bookmarks, etc.

* Refactored all cases of createSeriesFilter to filterUtiltityService.

Added ability to search for a series on Bookmarks page.

Fixed a bug where people filters wouldn't respect the disable flag froms ettings.

* Cleaned up a bit of the circular downloader code.

* Implemented Russian Parsing

* Fixed an issue where some users that had a missing theme entry wouldn't be able to update their user preferences.

* Refactored normalization to exclude !, thus allowing series with ! to be different from each other.

* Fixed a migration exit case

* Fixed broken unit test
2022-09-13 16:59:26 -07:00
Joseph Milazzo
b38a26f92b
Angular 14 (#1420)
* Updated to Angular 14

* Fixed all new tslint issues

* Fixed a routing bug for Angular 14

* Updated ngBootstrap and bootstrap. Fixed side nav item not highlighting on route change

* Refactored how default dark styles are done

* Migrated everything to a typed form

* Bump versions by dotnet-bump-version.

* Fixed a regression where click areas need an explicit z-index

* Cleanup some css

* Bumped docnet back to the alpha which has our downstream fixes

* Updated dependencies to later versions. Mainly just NetVips with some archive fixes.

* Fixed broken unit tests (due to some fixes in SharpCompress that changed byte arrays, but not visible quality)
2022-08-09 06:02:41 -07:00
Joseph Milazzo
88b5ebeb69
Security Hotfix (#1415)
* Updated ngx-extended-pdf-viewer to 14.5.2 + misc security vuln

* Hooked up remove from want to read AND fixed a bug in the logic that was removing everything BUT what was passed.

Allow for bookmarks to have date info for better ordering.

* Implemented a quick way to set darkneses level on manga reader for when nightlight just isn't dark enough

* Added Japanese Series name support in the Parser

* Updated our security file with our Huntr.

* Fixed a security vulnerability where through the API, an unauthorized user could delete/modify reading lists that did not belong to them.

Fixed a bug where when creating a reading list with the name of another users, the API would throw an exception (but reading list would still get created)

* Ensure all reading list apis are authorized

* Ensured all APIs require authentication, except those that explicitly don't. All APIs are default requiring Authentication.

Fixed a security vulnerability which would allow a user to take over an admin account.

* Fixed a bug where cover-upload would accept filenames that were not expected.

* Explicitly check that a user has access to the pdf file before we serve it back.

* Enabled lock out when invalid user auth occurs. After 5 invalid auths, the user account will be locked out for 10 mins.
2022-08-08 13:47:37 -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
4fd4ca6f07
Release Shakeout (#1340)
* Fixed a bug where analyze series would not force a re-analysis. Fixed a bug where if files weren't changed since last analysis, then series word count got reset to 0.

* Fixed epub images not loading in detail drawer

* Fixed a bug on double page layout where the reader would be wonky when moving to and from mobile layout.

* package-lock.json updated

* Cleaned up some wording

* Moved a conditional on jump bar

* Bugfix for Double Page Rendering skipping pages (#1339)

* Bump versions by dotnet-bump-version.

* Double (Manga) fixes

. Fixed: *ngIf condition, last page loading Double
. Added: isLoose, pageAmount, and CanvasImageNextDouble to keep track of double sequence breaks (nn/n/w)
. Fixed: ShouldRenderReverseDouble and pageAmount conditions
. Added: Setting isLoose on loadPage()
. Added: canvasImageNextDouble in loadPage()

Co-authored-by: majora2007 <josephmajora@gmail.com>

* Added comments for Magunjun's PR.

Co-authored-by: Marcelo Guimarães Junior <75567460+magujun@users.noreply.github.com>
2022-06-28 15:40:06 -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
3ab3a10ae7
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
2022-06-15 14:43:32 -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
742cfd3293
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
2022-05-30 16:50:12 -05:00
Joseph Milazzo
63475722ea
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>
2022-05-27 07:08:54 -07:00
Joseph Milazzo
713e20ebf4 Tweaked when we calculate min reading time 2022-05-25 17:48:50 -05:00
Joseph Milazzo
c1490d6e86
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>
2022-05-25 14:53:39 -07:00
Joseph Milazzo
e630e0b2c9
Filtering Bugfixes (#1220)
* Cleaned up random strings and unified them in one place.

* Implemented the ability to disable typeaheads

* Refactored disable state to disable controls on filter

* Fixed an overflow regression on title

* Updated ComicInfo DTO which had some bad properties on it

* Cleaned up some code around disabled typeaheads/filters

* Fixed typeaheads causing resets to state and mucking up filter presets

* Fixed state not refreshing between page loads

* Fixed a bad parsing for My Charms Are Wasted on Kuroiwa Medaka - Ch. 37.5 - Volume Extras

* Cleanup within the metadata filter to reuse logic and minimize extra loops.

* Fixed a timing issue with typeahead and first load for people

* Fixed a bug in Publication Status for a given library, which would fail due to not performing some of the query in memory. Removed a custom index on Series table that wasn't used and potentially caused constraint issues.

* Added a wiki link for stats collections

* Security bump

* Fixed the regex
2022-04-16 16:29:11 -07:00
Joseph Milazzo
3bbb02f574
On Deck + Misc Fixes and Changes (#1215)
* Added playwright and started writing e2e tests.

* To make things easy, disabled other browsers while I get confortable. Added a login flow (assumes my dev env)

* More tests on login page

* Lots more testing code, trying to figure out auth code.

* Ensure we don't track DBs inside config

* Added a new date property for when chapters are added to a series which helps with OnDeck calculations. Changed a lot of heavy api calls to use IEnumerable to stream repsonse to UI.

* Fixed OnDeck with a new field for when last chapter was added on Series. This is a streamlined way to query.

Updated Reading List with NormalizedTitle, CoverImage, CoverImageLocked.

* Implemented the ability to read a random item in the reading list and for the reading list to be intact for order.

* Tweaked the style for webtoon to not span the whole width, but use max width

* When we update a cover image just send an event so we don't need to have logic for when updates occur

* Fixed a bad name for entity type on cover updates

* Aligned the edit collection tag modal to align with new tab design

* Rewrote code for picking the first file for metadata to ensure it always picks the correct file, esp if the first chapter of a series starts with a float (1.1)

* Refactored setting LastChapterAdded to ensure we do it on the Series.

* Updated Chapter updating in scan loop to avoid nested for loop and an additional loop.

* Fixed a bug where locked person fields wouldn't persist between scans.

* Updated Contributing to reflect how to view the swagger api
2022-04-11 15:43:40 -07:00
Joseph Milazzo
428516b224
Post Release Shakeout (Hotfix Testing) (#1200)
* Fixed an issue where when falling back to folder parsing, sometimes the folder name wouldn't parse well, like "Foo 50" which parses as "Foo". Now the fallback will check if we have a solid series parsed from filename before we attempt to parse a folder.

* Ensure SortName is set during a scan loop even if locked and it's empty string.

* Added some null checks for metadata update

* Fixed a bug where Updating a series name with a name of an existing series wouldn't properly check for existing series.

* Tweaked the logic of OnDeck to consider LastChapterCreated from all chapters in a series, not just those with progress.

* Fixed a bug where the hamburger menu was still visible on login/registration page despite not functioning

* Tweaked the logic of OnDeck to consider LastChapterCreated from all chapters in a series, not just those with progress.

* Removed 2 unused packages from ui

* Fixed some bugs around determining what the current installed version is in Announcements

* Use AnyAsync for a query to improve performance

* Fixed up some fallback code

* Tests are finally fixed
2022-04-05 07:39:03 -07:00
Joseph Milazzo
0622d8a874
New Feature Stats (#1179)
* When searching, search against normalized names.

* Added new stat fields
2022-03-27 06:16:43 -07:00
Joseph Milazzo
242d8b106d
Bugfixes (#1177)
* Fixed an underline on hover of pagination link

* Ensure title of companion bar eats full width if there is no filter

* If a user doesn't have the Download role, they will not be able to download over OPDS.

* Fixed a bug where after going into webtoon reader mode then leaving, the bookmark effect would continue using the webtoon mode styling

* Fixed a bug where continuous reader wasn't being triggered due to moving scrollbar to body and a floating point percision error on scroll top

* Fixed how continuous trigger is shown so that we properly adjust scroll on the top (for prev chapter)

* Fixed a bad merge that broke saving any edits to series metadata

* When a epub key is not correct, even after we correct it, ignore the inlining of the style so the book is at least still readable.

* Disabled double rendering (this feature is being postponed to a later release)

* Disabled user setting and forced it to Single on any save

* Removed cache directory from UpdateSettings validation as we don't allow changing it.

* Fix security issue with url parse

* After all migrations run, update the installed version in the Database. Send that installed version on the stat service.

* Dependency bot to update some security stuff

* Some misc code cleanup and fixes on the typeahead (still broken)
2022-03-25 16:38:13 -07:00
Joseph Milazzo
2a4d0d1cd1
Manga Reader Refresh (#1137)
* Refactored manga reader to use a regular image element for all cases except for split page rendering

* Fixed a weird issue where ordering of routes broke redireciton in one case.

* Added comments to a lot of the enums and refactored READER_MODE to be ReaderMode and much more clearer on function.

* Added bookmark effect on image renderer

* Implemented keyboard shortcut modal

* Introduced the new layout mode into the manga reader, updated preferences, and updated bookmark to work for said functionality. Need to implement renderer now

* Hooked in ability to show double pages but all the css is broken. Committing for help from Robbie.

* Fixed an issue where Language tag in metadata edit wasn't being updated

* Fixed up some styling on mobile for edit series detail

* Some css fixes

* Hooked in ability to set background color on reader (not implemented in reader). Optimized some code in ArchiveService to avoid extra memory allocations.

* Hooked in background color, generated the migration

* Fixed a bug when paging to cover images, full height would be used instead of full-width for cover images

* New option in reader to show screen hints (on by default). You can disable in user preferences which will stop showing pagination overlay hints

* Lots of fixes for double rendering mode

* Bumped the amount of cached pages to 8

* Fixed an issue where dropdowns weren't being locked on form manipulation
2022-03-07 09:35:27 -08:00
Joseph Milazzo
ba77954d5c
Metadata Editing from the UI! (#1135)
* Added the skeleton code for layout, hooked up Age Rating, Publication Status, and Tags

* Tweaked message of Scan service to Finished scan of to better indicate the total scan time

* Hooked in foundation for person typeaheads

* Fixed people not populating typeaheads on load

* For manga/comics, when parsing, set the SeriesSort from ComicInfo if it exists.

* Implemented the ability to override and create new genre tags. Code is ready to flush out the rest.

* Ability to update metadata from the UI is hooked up. Next is locking.

* Updated typeahead to allow for non-multiple usage. Implemented ability to update Language tag in Series Metadata.

* Fixed a bug in GetContinuePoint for a case where we have Volumes, Loose Leaf chapters and no read progress.

* Added ETag headers on Images to allow for better caching (bookmarks and images in manga reader)

* Built out UI code to show locked indication to user

* Implemented Series locking and refactored a lot of styles in typeahead to make the lock setting work, plus misc cleanup.

* Added locked properties to dtos. Updated typeahead loading indicator to not interfere with close button if present

* Hooked up locking flags in UI

* Integrated regular field locking/unlocking

* Removed some old code

* Prevent input group from wrapping

* Implemented some basic layout for metadata on volume/chapter card modal. Refactored out all metadata from Chapter object in terms of UI and put into a separate call to ensure speedy delivery and simplicity of code.

* Refactored code to hide covers section if not an admin

* Implemented ability to modify a chapter/volume cover from the detail modal

* Removed a few variables and change cover image modal

* Added bookmark to single chapter view

* Put a temp fix in for a ngb v12 z-index bug (reported). Bumped ngb to 12.0 stable and fixed some small rendering bugs

* loading buttons ftw

* Lots of cleanup, looks like the story is finished

* Changed action name from Info to Details

* Style tweaks

* Fixed an issue where Summary would assume it's locked due to a subscription firing on setting the model

* Fixed some misc bugs

* Code smells

Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>
2022-03-04 13:04:15 -08:00
Joseph Milazzo
4bd9f243f2
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>
2022-02-18 07:03:19 -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
97b1249a0e
Angular Upgrade (#1059)
* Upgraded to Angular 12

* Bump ng-bootstrap for upgrade

* Angular 13 upgrade, ng-bootstrap bump

* Angular 13 upgrade (broken)

* Angular 13 upgrade. CSS is broken completely

* Angular 13 upgrade is complete.
2022-02-11 15:23:26 -08:00
Joseph Milazzo
03112d3f8f
New Search (#1029)
* Implemented a basic version of enhanced search where we can return multiple types of entities in one go. Current unoptimized version is twice as expensive as normal search, but under NFR. Currently 200ms max.

* Worked in some basic code for grouped typeahead search component. Keyboard navigation is working.

* Most of the code is in place for the typeahead. Needs css work and some accessibility work.

* Hooked up filtering into all-series. Added debouncing on search, clear input field now works. Some optimizations related to memory cleanup

* Added ability to define a custom placeholder

* Hooked in noResults template and logic

* Fixed a duplicate issue in Collection tag searching and commented out old code. OPDS still needs some updates.

* Don't trigger inputChanged when reopening/clicking on input.

* Added Reading list to OPDS search

* Added a new image component so all the images can be lazyloaded without logic duplication

* Added a maxWidth/Height on the image component

* Search css update

* cursor fixes

* card changes

- fixing border radius on cards
- adding bottom card color

* Expose intenral state of if the search component has focus

* Adjusted the accessibility to not use complex keys and just use tab instead since this is a search, not a typeahead

* Cleaned up dead code, removed angular-ng-complete library as it's no longer used.

* Fixes for mobile search

* Merged code

* Fixed a bad merge and some nav bar styling

* Cleaned up the focus code for nav bar

* Removed focusIndex and just use hover state. Fixed clicking on items

* fixing overlay overlap issue

Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>
2022-02-04 08:28:49 -08:00
Joseph Milazzo
c6d1311560
Misc Bugfixes (#1015)
* Fixed some security issues in dev env

* When deleting folders in bookmark cleanup, delete empty folders correctly.

* When a new library is created and cards are added, cards can have a blank library name. Card library name code is reworked to be much lighter on memory.

* Added a config for github issues to disable blank issues.

* Skip any sort of directory iteration code if we haven't deleted any bookmarks.

* Fixed a bug where some style overrides were duplicating. Now logic is much more targetted, only applying to the correct tags.

* Applied sorting to the filtering apis.

* Reverted one of my changes for a better version Robbie did.
2022-01-31 08:50:13 -08:00
dependabot[bot]
920f187cd4
Bump follow-redirects from 1.13.0 to 1.14.7 in /UI/Web (#929)
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.13.0 to 1.14.7.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.13.0...v1.14.7)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-01-13 08:11:57 -08:00
Joseph Milazzo
384ebcef5c
Tachiyomi Enhancements (#845)
* Added a new endpoint to get all Series with Progress info.

* Fixed up some potential NPEs during scan

* Commented out filter code, not ready for it.

* Fixed up a parsing case for european comics

* Refactored FilterDto to allow for specifying multiple formats to return.

* Refactored FilterDto to allow for specifying multiple formats to return.

* Refactored the UI to show OPDS as 3rd Party Clients since Tachiyomi now uses OPDS url scheme for authentication.
2021-12-10 13:04:52 -08:00
Joseph Milazzo
e7619e6b0a
Local Metadata Integration Part 1 (#817)
* Started with some basic plumbing with comic info parsing updating Series/Volume.

* We can now get chapter title from comicInfo.xml

* Hooked in the ability to store people into the chapter metadata.

* Removed no longer used imports, fixed up some foreign key constraints on deleting series with person linked.

* Refactored Summary out of the UI for Series into SeriesMetadata. Updated application to .net 6. There is a bug in metadata code for updating.

* Removed the parallel.ForEach with a normal foreach which lets us use async. For I/O heavy code, shouldn't change much.

* Refactored scan code to only check extensions with comic info, fixed a bug on scan events not using correct method name, removed summary field (still buggy)

* Fixed a bug where on cancelling a metadata request in modal, underlying button would get stuck in a disabled state.

* Changed how metadata selects the first volume to read summary info from. It will now select the first non-special volume rather than Volume 1.

* More debugging and found more bugs to fix

* Redid all the migrations as one single one. Fixed a bug with GetChapterInfo returning null when ChapterMetadata didn't exist for that Chapter.

Fixed an issue with mapper failing on GetChapterMetadata. Started work on adding people and a design for people.

* Fixed a bug where checking if file modified now takes into account if file has been processed at least once. Introduced a bug in saving people to series.

* Just made code compilable again

* Fixed up code. Now people for series and chapters add correctly without any db issues.

* Things are working, but I'm not happy with how the management of Person is. I need to take into account that 1 person needs to map to an image and role is arbitrary.

* Started adding UI code to showcase chapter metadata

* Updated workflow to be .NET 6

* WIP of updating card detail to show the information more clearly and without so many if statements

* Removed ChatperMetadata and store on the Chapter itself. Much easier to use and less joins.

* Implemented Genre on SeriesMetadata level

* Genres and People are now removed from Series level if they are no longer on comicInfo

* PeopleHelper is done with unit tests. Everything is working.

* Unit tests in place for Genre Helper

* Starting on CacheHelper

* Finished tests for ShouldUpdateCoverImage. Fixed and added tests in ArchiveService/ScannerService.

* CacheHelper is fully tested

* Some DI cleanup

* Scanner Service now calls GetComicInfo for books. Added ability to update Series Sort name from metadata files (mainly epub as comicinfo doesn't have a field)

* Forgot to move a line of code

* SortName now populates from metadata (epub only, ComicInfo has no tags)

* Cards now show the chapter title name if it's set on hover, else will default back to title.

* Fixed a major issue with how MangaFiles were being updated with LastModified, which messed up our logic for avoiding refreshes.

* Woohoo, more tests and some refactors to be able to test more services wtih mock filesystem. Fixed an issue where SortName was getting set as first chapter, but the Series was in a group.

* Refactored the MangaFile creation code into the DbFactory where we also setup the first LastModified update.

* Has file changed bug is now finally fixed

* Remove dead genres, refactor genre to use title instead of name.

* Refactored out a directory from ShouldUpdateCoverImage() to keep the code clean

* Unit tests for ComicInfo on BookService.

* Refactored series detail into it's own component

* Series-detail now received refresh metadata events to refresh what's on screen

* Removed references to Artist on PersonRole as it has no metadata mapping

* Security audit

* Fixed a benchmark

* Updated JWT Token generator to use new methods in .NET 6

* Updated all the docker and build commands to use net6.0

* Commented out sonar scan since it's not setup for net6.0 yet.
2021-12-02 09:02:34 -08:00
Joseph Milazzo
50429777d0
Webtoon Polish (#734)
* Removed some code for a feature I'm not taking further

* Webtoon reader will now use fit to width instead of original to prevent overflow for high res images

* Added an effect when a user bookmarks an image in the reader

* Split the prefetching from the current page calculation code. Dynamically set width on images if they are wider than device screen.

* Dragging on the slider now shows the value on tooltip

* Slider now updates for non-webtoon reader mode when you drag it.

* Fixed a bunch of package security issues

* Updated dependencies for security

* Tweaked the current page check to use top 25% of screen to trigger the page change.
2021-11-08 09:34:06 -08:00
Joseph Milazzo
75b4d8eb8e
Comic Parser Enhancements + Security Updates (#729)
* Bump path-parse from 1.0.6 to 1.0.7 in /UI/Web

Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

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

* Bump tar from 6.0.5 to 6.1.11 in /UI/Web

Bumps [tar](https://github.com/npm/node-tar) from 6.0.5 to 6.1.11.
- [Release notes](https://github.com/npm/node-tar/releases)
- [Changelog](https://github.com/npm/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-tar/compare/v6.0.5...v6.1.11)

---
updated-dependencies:
- dependency-name: tar
  dependency-type: indirect
...

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

* Bump tmpl from 1.0.4 to 1.0.5 in /UI/Web

Bumps [tmpl](https://github.com/daaku/nodejs-tmpl) from 1.0.4 to 1.0.5.
- [Release notes](https://github.com/daaku/nodejs-tmpl/releases)
- [Commits](https://github.com/daaku/nodejs-tmpl/commits/v1.0.5)

---
updated-dependencies:
- dependency-name: tmpl
  dependency-type: indirect
...

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

* Added a comic parsing case for HDoujin Downloader when the series is going to have Chapter/Issue with a series that has a year/number in the title (Batman 2016)

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-11-05 07:53:03 -07:00
Joseph Milazzo
2727dfa7b9
Book Polishing (#639)
* Downgraded ExCSS, the new version has a regression that breaks toCss().

* Cleaned up the next/prev disabling to work more reliably.

Fixed an issue with double arrow on next not disappearing after hitting last page then going back one page.

* Cleaned up some css padding on the side nav progress bar

* Remove the ability to save

* Updated colors of nav bar and side drawer to be darker to separate them from the reader

* Fixed a missed element

* Removed dead code

* Removed TODO, it can't be changed

* Refactored bookmarking on the book progress to have pinpoint accuracy for remembering scroll position. Now will choose the top line on the page.

* Fixed a style issue when applying dark mode from light mode in book reader
2021-10-05 17:42:43 -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
83f8e25478
Continuous Reading for Webtoons & I Just Couldn't Stop Coding (#574)
* Fixed an issue from perf tuning where I forgot to send Pages to frontend, breaking reader.

* Built out continuous reading for webtoon reader. Still has some issues with triggering.

* Refactored GetUserByUsernameAsync to have a new flavor and allow the caller to pass in bitwise flags for what to include. This has a get by username or id variant. Code is much cleaner and snappier as we avoid many extra joins when not needed.

* Cleanup old code from UserRepository.cs

* Refactored OPDS to use faster API lookups for User

* Refactored more code to be cleaner and faster.

* Refactored GetNext/Prev ChapterIds to ReaderService.

* Refactored Repository methods to their correct entity repos.

* Refactored DTOs and overall cleanup of the code.

* Added ability to press 'b' to bookmark a page

* On hitting last page, save progress forcing last page to be read. Adjusted logic for the top and bottom spacers for triggering next/prev chapter load

* When at top or moving between chapters, scrolling down then up will now trigger page load. Show a toastr to inform the user of a change in chapter (it can be really fast to switch)

* Cleaned up scroll code

* Fixed an issue where loading a chapter with last page bookmarked, we'd load lastpage - 1

* Fixed last page of webtoon reader not being resumed on loading said chapter due to a difference in how max page is handled between infinite scroller and manga reader.

* Removed some comments

* Book reader shouldn't look at left/right tap to paginate elems for position bookmarking. Missed a few areas for saving while in incognito mode

* Added a benchmark to test out a sort code

* Updated the read status on reading list to use same style as other places

* Refactored GetNextChapterId to bring the average response time from 1.2 seconds to 400ms.

* Added a filter to add to list when there are more than 5 reading lists

* Added download reading list (will be removed, just saving for later). Fixes around styling on reading lists

* Removed ability to download reading lists

* Tweaked the logic for infinite scroller to be much smoother loading next/prev chapter. Added a bug marker for a concurrency bug.

* Updated the top spacer so that when you hit the top, you stay at the page height and can now just scroll up.

* Got the logic for scrolling up. Now just need the CSS then cont infinite scroller will be working

* More polishing on infinite scroller

* Removed IsSpecial on volumeDto, which is not used anywhere.

* Cont Reading inf scroller edition is done.

* Code smells and fixed package.json explore script
2021-09-11 11:47:12 -07:00
Joseph Milazzo
cf7a9aa71e
Reading Lists & More (#564)
* Added continous reading to the book reader. Clicking on the max pages to right of progress bar will now go to last page.

* Forgot a file for continous book reading

* Fixed up some code regarding transitioning between chapters. Arrows now show to represent a chapter transition.

* Laid the foundation for reading lists

* All foundation is laid out. Actions are wired in the UI. Backend repository is setup. Redid the migration to have ReadingList track modification so we can order them for the user.

* Updated add modal to have basic skeleton

* Hooked up ability to fetch reading lists from backend

* Made a huge performance improvement to GetChapterIdsForSeriesAsync() by reducing a JOIN and an iteration loop. Improvement went from 2 seconds -> 200 ms.

* Implemented the ability to add all chapters in a series to a reading list.

* Fixed issue with adding new items to reading list not being in a logical order. Lots of work on getting all the information around the reading list view. Added some foreign keys back to chapter so delete should clean up after itself.

* Added ability to open directly the series

* Reading List Items now have progress attached

* Hooked up list deletion and added a case where if doesn't exist on load, then redirect to library.

* Lots of changes. Introduced a dashboard component for the main app. This will sit on libraries route for now and will have 3 tabs to show different sections.

Moved libraries reel down to bottom as people are more likely to access recently added or in progress than explore their whole library.

Note: Bundles are messed up, they need to be reoptimized and routes need to be updated.

* Added pagination to the reading lists api and implemented a page to show all lists

* Cleaned up old code from all-collections component so now it only handles all collections and doesn't have the old code for an individual collection

* Hooked in actions and navigation on reading lists

* When the user re-arranges items, they are now persisted

* Implemented remove read, but performance is pretty poor. Needs to be optimized.

* Lots of API fixes for adding items to a series, returning items, etc. Committing before fixing incorrect fetches of items for a readingListId.

* Rewrote the joins for GetReadingListItemDtosByIdAsync() to not return extra records.

* Remove bug marker now that it is fixed

* Refactor update-by-series to move more of the code to a re-usable function for update-by-volume/chapter APIs

* Implemented the ability to add via series, volume or chapter.

* Added OPDS support for reading lists. This included adding VolumeId to the ReadingListDto.

* Fixed a bug with deleting items

* After we create a library inform user that a scan has started

* Added some extra help information for users on directory picker, since linux users were getting confused.

* Setup for the reading functionality

* Fixed an issue where opening the edit series modal and pressing save without doing anything would empty collection tags. Would happen often when editing cover images.

* Fixed get-next-chapter for reading list. Refactored all methods to use the new GetUserIdByUsernameAsync(), which is much faster and uses less memory.

* Hooked in prev chapter for continuous reading with reading list

* Hooked up the read code for manga reader and book reader to have list id passed

* Manga reader now functions completely with reading lists

* Implemented reading list and incognito mode into book reader

* Refactored some common reading code into reader service

* Added support for "Series -  - Vol. 03 Ch. 023.5 - Volume 3 Extras.cbz" format that can occur with FMD2.

* Implemented continuous reading with a reading list between different readers. This incurs a 3x performance hit on the book info api.

* style changes. Don't emit an event if position of draggable item hasn't changed

* Styling and added the edit reading list flow.

* Cleaned up some extra spaces when actionables isn't shown. Lots of cleanup for promoted lists.

* Refactored some filter code to a common service

* Added an RBS check in getting Items for a given user.

* Code smells

* More smells
2021-09-08 12:03:27 -05: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
2fd02f0d2b
Custom Cover Images (#499)
* Added some documentation. Removed Require Admin Role from Search Tags. Added Summary to be updated on UpdateTag.

* Added Swagger xml doc generation to beef up the documentation. Started adding xml comments to the APIs. This is a needed, slow task for upcoming Plugins system.

* Implemented the ability to upload a custom series image to override the existing cover image.

Refactored some code out to use ImageService and added more documentation

* When a page cache fails, delete cache directory so user can try to reload.

* Implemented the ability to lock a series cover image such that after user uploads something, it wont get refreshed by Kavita.

* Implemented the ability to reset cover image for series by unlocking

* Kick off a series refresh after a cover is unlocked.

* Ability to press enter to load a url

* Ability to reset selection

* Cleaned up cover chooser such that reset is nicer, errors inform user to use file upload, series edit modal now doesn't use scrollable body. Mobile tweaks. CoverImageLocked is now sent to the UI.

* More css changes to look better

* When no bookmarks, don't show both markups

* Fixed issues where images wouldn't refresh after cover image was changed.

* Implemented the ability to change the cover images for collection tags.

* Added property and API for chapter cover image update

* Added UI code to prepare for updating cover image for chapters. need to rearrange components

* Moved a ton of code around to separate card related screens into their own module.

* Implemented the ability to update a chapter/volume cover image

* Refactored action for volume to say edit to reflect modal action

* Fixed issue where after editing chapter cover image, the underlying card wouldn't update

* Fixed an issue where we were passing volumeId to the reset chapter lock. Changed some logic in volume cover image generation.

* Automatically apply when you hit reset cover image
2021-08-15 10:36:47 -07:00
Joseph Milazzo
89b68bc301
Download Refactor (#483)
# Added
- New: Cards when processing a download shows a spinner for the progress of the download

# Changed
- Changed: Downloads now always take the backend filename and are streamed in a more optimal manner, reducing the javascript processing that was needed previously.
==================================

* Started refactor of downloader to be more UX friendly and much faster.

* Completed refactor of Volume download to use a new mechanism. Downloads are streamed over and filename used exclusively from header. Backend has additional DB calls to get the Series Name information to make filenames nice.

* download service has been updated so all download functions use new event based observable. Duplicates code for downloading, but much cleaner and faster.

* Small code cleanup
2021-08-11 16:01:44 -05:00