498 Commits

Author SHA1 Message Date
Joseph Milazzo
9c57984bff
Scan Issues (#470)
* Fixed an oversight where unique file extensions for KavitaStats wouldn't ignore case.

* Fixed an issue where series were getting removed then re-added due to bad logic when comparing if the series from disk matched the series in DB based on format.
2021-08-10 19:05:16 -05:00
majora2007
7e36c56416 Bump versions by dotnet-bump-version. 2021-08-10 23:25:23 +00:00
Joseph Milazzo
e9ec6671d5
Bookmarking Pages within the Reader (#469)
# Added
- Added: Added the ability to bookmark certain pages within the manga (image) reader and later download them from the series context menu. 

# Fixed
- Fixed: Fixed an issue where after adding a new folder to an existing library, a scan wouldn't be kicked off
- Fixed: In some cases, after clicking the background of a modal, the modal would close, but state wouldn't be handled as if cancel was pushed

# Changed
- Changed: Admin contextual actions on cards will now be separated by a line to help differentiate. 
- Changed: Performance enhancement on an API used before reading

# Dev
- Bumped dependencies to latest versions

=============================================
* Bumped versions of dependencies and refactored bookmark to progress.

* Refactored method names in UI from bookmark to progress to prepare for new bookmark entity

* Basic code is done, user can now bookmark a page (currently image reader only).

* Comments and pipes

* Some accessibility for new bookmark button

* Fixed up the APIs to work correctly, added a new modal to quickly explore bookmarks (not implemented, not final).

* Cleanup on the UI side to get the modal to look decent

* Added dismissed handlers for modals where appropriate

* Refactored UI to only show number of bookmarks across files to simplify delivery. Admin actionables are now separated by hr vs non-admin actions.

* Basic API implemented, now to implement the ability to actually extract files.

* Implemented the ability to download bookmarks.

* Fixed a bug where adding a new folder to an existing library would not trigger a scan library task.

* Fixed an issue that could cause bookmarked pages to get copied out of order.

* Added handler from series-card component
2021-08-10 18:18:07 -05:00
majora2007
d1d7df9291 Bump versions by dotnet-bump-version. 2021-08-09 14:00:29 +00:00
Joseph Milazzo
2809233de0
Update Notifier (#464)
# Added
- Added: Ability to check for updates (stable-only) and be notified with a changelog. This is a first pass implementation. 
- Added: Ability to use SignalR within Kavita (websockets)
=====================================

* (some debug code present). Implemented the ability to check and log if the server is up to date or not.

* Fixed a bug for dark mode where anchor buttons wouldn't have the correct font color.

Suppress filter/sort button if there is no filters to show.

Debug: Active indicators for users currently on your server.

Refactored code to send update notification only to admins. Admins now get a popup where they can open the Github release (docker users can just close).

* Fixed an issue where getLibraryNames on first load would call for as many cards there was on the screen. Now we call it much earlier and the data is cached faster.

* Fixed a dark mode bug from previous commit

* Release notes is now rendered markdown

* Implemented the ability to check for an update ad-hoc. Response will come via websocket to all admins.

* Fixed a missing padding

* Cleanup, added some temp code to carousel

* Cleaned up old stat stuff from dev config and added debug only flow for checking for update

* Misc cleanup

* Added readonly to one variable

* Fixed In Progress not showing for all series due to pagination bug

* Fixed the In progress API returning back series that had another users progress on them. Added SplitQuery which speeds up query significantly.

* SplitQuery in GetRecentlyAdded for a speed increase on API.

Fixed the logic on VersionUpdaterService to properly send on non-dev systems.

Disable the check button once it's triggered once since the API does a task, so it can't return anything.

* Cleaned up the admin actions to be more friendly on mobile.

* Cleaned up the message as we wait for SingalR to notify the user

* more textual changes

* Code smells
2021-08-09 08:52:24 -05:00
therobbiedavis
867b8e5c8a Bump versions by dotnet-bump-version. 2021-08-05 14:33:30 +00:00
Chris Plaatjes
5d2c2deb61
Feature/docker cleanup (#459)
## Changes
- Cleaned up and fixed old docker files
2021-08-05 10:13:27 -04:00
therobbiedavis
d508bbf3a1 Bump versions by dotnet-bump-version. 2021-08-03 18:07:13 +00:00
Chris Plaatjes
d10607cd25
Consolidating Stable Docker Tags
## Changes
- Combined stable and version tags into 1 task for workflow efficency
2021-08-03 13:58:31 -04:00
therobbiedavis
12390639ec Bump versions by dotnet-bump-version. 2021-08-02 15:35:50 +00:00
Robbie Davis
dcafdd1ef1
Feature/version bump (#457)
## Changes
- Unprotected dev branch
- Added automated version bump on pushes to develop (merge PRs)
2021-08-02 11:28:24 -04:00
Robbie Davis
912469de12
Feature/version bump (#456)
** Changes
- Workflow changes
2021-08-02 09:54:57 -04:00
Robbie Davis
74dc6fd5dc Updating workflow, removing branch creation 2021-08-02 08:55:26 -04:00
Robbie Davis
84c88fdf3d Workflow fixes 2021-08-02 08:46:01 -04:00
Robbie Davis
514547a2b2 Updating workflow 2021-08-02 08:34:45 -04:00
Robbie Davis
e3cfbadd9d
Feature/version bump test (#449)
## Changes
- Reconfigured Github workflow for better visibility
- Added automated version bump on merge push to Develop branch
2021-08-02 08:22:33 -04:00
Joseph Milazzo
2f8af9f8e6
Fixed the In progress API returning back series that didn't belong (#453)
* Fixed the In progress API returning back series that had another users progress on them. Added SplitQuery which speeds up query significantly.

* Try out putting PR body into notification
2021-07-30 09:02:17 -05:00
Robbie Davis
1ec8f6235f Updating version-bump.yml 2021-07-30 09:30:55 -04:00
Robbie Davis
8676b81821 Adding version bump workflow 2021-07-30 08:56:03 -04:00
Joseph Milazzo
fd6fa2fce4
Bugfix/in progress (#452)
# Fixed
- Fixed: Fixed an issue in In Progress where it would not pull the series with correct pagination due to the unique situation with the query. All series that are in progress should now return. 
============================
* Fixed In Progress not showing for all series due to pagination bug

* Version bump
2021-07-29 19:57:06 -05:00
Joseph Milazzo
01007dee28
Refactored logs to use a logs/ folder and also roll over after 10MB. … (#448)
# Changed
- Changed: Log files now roll (kavita, kavita1, etc) up to 5 files, each with a max of 10MB each. After all 5 files fill up, they will roll over. (Closes #446 )
=============================

* Refactored logs to use a logs/ folder and also roll over after 10MB. A maximum of 5 logs will persist (50MB of log data).

* Updated entrypoint to accommodate rolling logs

Co-authored-by: Chris Plaatjes <kizaing@gmail.com>
2021-07-28 15:37:13 -05:00
Joseph Milazzo
58856c0d70
Filtering Bugs (#447)
# Fixed
- Fixed: Fixed an issue with filtering, after applying a filter, the cards on screen did not update with the correct information
- Fixed: Pagination is now slighlty smaller (only 8 pages) as on mobile, it was cutting off screen.

# Changed
- Changed: During library scan and series updates, Series names for Epubs will now trim excess white space
===============================================

* Fixed issue where some formats could get returned with another format filter.

* Filtering was not properly flushing DOM on filter change, updated trackbyidentity to account for filter

* One more fix for the filtering bug

* Made pagination UI slightly smaller to better fit on mobile phones. Trim() series names for Epub files and Trim() on series update for appropriate fields.

* Removed a no longer needed animation.
2021-07-28 14:11:49 -05:00
Joseph Milazzo
55dd9e7f1e
Supress max page error on bookmark api and just adjust the pages for the user. (#445)
# Changed
- Changed: Suppress max page error on bookmark api and just adjust the pages for the user.
2021-07-27 20:10:40 -05:00
Joseph Milazzo
b9f20f4d19
Filtering First Pass (#442)
# Added
- Added: Added "In Progress" view to see everything you are currently reading
- Added: Added the ability to filter series based on format from "In Progress", "Recently Added", "Library Detail" pages.
- Added: Added total items to the above pages to showcase total series within Kavita

==============================
* Added filtering to recently added

* Cleaned up the documentation on the APIs and removed params no longer needed.

* Implemented Filtering on library detail, in progress, and recently added for format. UI is non-final.

* Moved filtering to an expander panel

* Cleaned up filtering UI a bit

* Cleaned up some code and added titles on touched pages

* Fixed recently added not re-rendering page

* Removed commented out code

* Version bump

* Added an animation to the filtering section

* Stashing changes, needing to switch lazy loading libraries out due to current version not trigging on dom mutation events

* Finally fixed all the lazy loading issues and made it so pagination works without reloading the whole page.
2021-07-27 18:39:53 -05:00
Joseph Milazzo
434bcdae4c
Ignore Mac metadata hidden files ._* (#443)
* Implemented the ability to completely ignore all MacOS ._ files. They are ignored for all I/O operations (on all OSes)
2021-07-27 10:24:23 -05:00
Joseph Milazzo
a349f16ed4 Merge branch 'develop' of https://github.com/Kareadita/Kavita into develop 2021-07-25 19:45:34 -05:00
Joseph Milazzo
3c9f73ce2c
Performance/cache epub (#438)
Changed: (Performance) Added the ability for epubs to cache, allowing faster page load for users with network mounted storage. (Fixes Investigate caching epubs (benefit for network mounted users) #433 )
2021-07-25 19:43:37 -05:00
Joseph Milazzo
ff25565584 Merge branch 'develop' of https://github.com/Kareadita/Kavita into develop 2021-07-25 19:38:15 -05:00
Joseph Milazzo
3dbe7eec1f
Feature/manual db backup (#437)
Added: New button in manage server to manually create a backup of DB (Fixes Add on demand DB backup from Admin Dashboard #322)
2021-07-25 19:34:55 -05:00
Joseph Milazzo
f8579b8311 Merge branch 'develop' of https://github.com/Kareadita/Kavita into develop 2021-07-25 17:55:17 -05:00
Joseph Milazzo
66f40656dd
Bugfix/reader progress (#435)
Fixed: Fixed an issue where marking a series as Unread when the DB gets skewed with duplicate progress rows for that item, would break. Now we cleanup any extra rows we see during the operation.
2021-07-25 17:31:42 -05:00
Robbie Davis
2209a65d52 Adding automated docker version tag for stable releases
- Added set to parse version to x.x.x format for tag. (This is the same way we parse for sentry release maps)

- Added additional build and push step for docker with parse version as tag.
2021-07-25 13:20:38 -04:00
Joseph Milazzo
9dfb1a3d27 Merge branch 'main' into develop 2021-07-25 11:07:43 -05:00
Joseph Milazzo
d97e81d53e
Release v0.4.3 (#414)
* Ensure that after we assign a role to a user, we show it immediately

* Cached libraryType api as that is not going to change in a viewing session. Moved some components around to tighten bundles.

* Cleaned up more TODOs

* Refactored Configuration to use getter and setters so that the interface is a lot cleaner. Updated HashUtil to use JWT Secret instead of Machine name (as docker machine name is random each boot).

* Added debug code to Startup for Chris to test with on Docker

* Removed debug code

* Version bump, readme updates
v0.4.3
2021-07-25 10:50:16 -05:00
Joseph Milazzo
4f3461710c
More Polishing (#428)
# Added
- Added: Added a new button on admin dashboard to clear cache for the whole server

# Changed
- Changed: Moved the download logs to the new System page
- Changed: Tag Badges now show the correct cursor to help indication actions. For example, Collection badges on series detail page can be clicked, while type cannot.

# Fixed
- Fixed: Fixed an issue in develop builds where Pagination no longer worked due to Header not being exposed
- Fixed: After Scanning a series, clear out any cached chapters

=======================================================
* After Scanning a series, clear out any cached chapters.


* Implemented cursor overrides for tag badges

* Fixed pagination no longer working due to Pagination header not being able to be read from the UI.

* Fixed some css things with icons within tagbadges not taking the selection mode styling

* Moved download logs button to the system page

* Implemented the ability to clear cache for the whole server from admin dashboard

* Removed debug code

* Up the Regex Timeout for the Github Build System
2021-07-24 19:14:38 -05:00
Joseph Milazzo
107b70226c
Feature/performance pdf (#427)
* Added Timeout for Regex matching to ensure malicious filenames don't crash system

* Refactored GetCoverImage to use series format rather than library type

* Refactored download logs to use the download service

* Fixed accent color not looking well on light theme

* Refactored series format into dedicated component and added to search results

* Switch to using MemoryManager for Streams to attempt to minimize GC pressure and reduced bitmap manipulation for transparency hack.

* Refactored PDF extraction to re-use the same MemoryStream for all pages

* Debug code for another issue that only users with OpenMediaVault can run
2021-07-24 17:17:28 -05:00
Joseph Milazzo
81dfd63250
Feature/performance pdf (#426)
#  Added
- Added: Added series format information to the search typeahead to help identify duplicate series in libraries

# Fixed
- Fixed: Fixed accent color not looking well on light theme
- Fixed: Attempted to fix the memory issues with PDF reading on Docker. Uses a Memory Pool for streams and removes a bitmap operation for fixing books with transparent backgrounds (#424)

# Changed
- Changed: Refactored download logs to use the same download code as rest of Kavita 

# Dev stuff
- Added timeout for Regex's to make sure during matching, malicious filenames doesn't crash user system
- Refactored a missing GetCoverImage to use Series Format rather than old Library Type

==================================================
* Added Timeout for Regex matching to ensure malicious filenames don't crash system

* Refactored GetCoverImage to use series format rather than library type

* Refactored download logs to use the download service

* Fixed accent color not looking well on light theme

* Refactored series format into dedicated component and added to search results

* Switch to using MemoryManager for Streams to attempt to minimize GC pressure and reduced bitmap manipulation for transparency hack.
2021-07-24 16:17:13 -05:00
Joseph Milazzo
78ad01f5ae
Fixed a bug where a new lirary scan would break due to scan series not properly filtering out parsed series (#423) 2021-07-23 21:52:57 -05:00
Joseph Milazzo
ebd4ec25bf
Shakeout Fixes (#422)
# Fixed
- Fixed: Clean the pdf extension from Series title for PDF types
- Fixed: Fixed a bug where a forced metadata refresh wouldn't trigger a volume to force a refresh of cover image
- Fixed: Fixed an issue where Removing series no longer on disk would not use the Series Format and thus after deleting files, they would not be removed.
- Fixed: Fixed an issue with reading a single image file, where the cache code would not properly move the file
- Fixed: For Specials, Get Next/Prev Chapter should use the filename instead of arbitrary Number (which is always 0). Use the same sorting logic when requesting volumes on series detail, so sorting can happen in the backend.

# Added
- Added: (Accessibility) Nearly every page has had a title set for it 

===============================================================================

* Clean the pdf extension from ParseSeries

* Fixed a bug where forced metadata refresh wouldn't trigger the volume to update it's image.

* Added titles to most pages to help distinguish back/forward history.

Fixed a bug in the scanner which didn't account for Format when calculating if we need to remove a series not on disk.

* For Specials, Get Next/Prev Chapter should use the filename instead of arbitrary Number (which is always 0). Use the same sorting logic when requesting volumes on series detail, so sorting can happen in the backend.

* Fixed unit tests
2021-07-23 18:02:14 -05:00
Joseph Milazzo
29edadb506 Updated readme 2021-07-23 12:10:02 -05:00
Joseph Milazzo
199ab7946c
Fixed Docker not being able to parse PDF Images (#418)
* Fixed an issue with downloading pdf files

* Bumped sentry version to latest

* Refactored PDF Page to image extraction to a private method. Bumped Sentry version in backend.

* Fixed issue with PDFs not being parsable (image) within Docker due to libgdiplus not being installed.
2021-07-23 10:35:26 -05:00
Joseph Milazzo
b0df67cdda
PDF Support + MORE!!!! (#416)
# Added
- Added support for PDFs within Kavita. PDFs will open in the Manga reader and you can read through them as images. PDFs are heavier than archives, so they may take longer to open for reading. (Fixes #187)

# Changed
- Changed: Major change in how Kavita libraries work. Kavita libraries will now allow for mixed media types, that means you can have raw images, archives, epubs, and pdfs all within your Manga library. In the case that the same Series exists between 2 different types of medias, they will be separated and an icon will show to help you identify the types. The correct reader will open regardless of what library you are on. Note: Nightly users need to delete their Raw Images libraries before updating.

# Fixed
- Fixed: Fixed an issue where checking if a file was modified since last scan always returned true, meaning we would do more I/O than was needed (Fixes #415)
- Fixed: There wasn't enough spacing on the top menu bar on the Manga reader
- Fixed: Fixed a bug where user preferences dark mode control always showed true, even if you were not using dark mode

# Dev stuff
- For image extraction, if there is only 1 image we will extract  just that, else we will extract only images
- Refactored all the Parser code out of the ScannerService into a self contained class. The class should be created for any scans, allowing multiple tasks to run without any chance of cross over.



* Fixed indentation for cs files

* Fixed an issue where the logic for if a file had been modified or not was not working and always saying modified, meaning we were doing more file I/O than needed.

* Implemented the ability to have PDF books. No reader functionality.

* Implemented a basic form of scanning for PDF files. Reworked Image based libraries to remove the need to separate in a special library and instead just work within the Manga/Comic library.

* Removed the old library types.

* Removed some extra code around old raw library types

* Fully implemented PDF support into Kavita by using docnet. Removed old libraries we tried that did not work. PDFs take about 200ms to save the file to disk, so they are much slower than reading archives.

* Refactored Libraries so that they can have any file extension and the UI will decide which reader to use.

* Reworked the Series Parsing code.

We now use a separate instance for each task call, so there should be no cross over if 2 tasks are running at the same time.

Second, we now store Format with the Series, so we can have duplicate Series with the same name, but a different type of files underneath.

* Fixed PDF transparency issues

- Used this code to fix an issue when a PDF page doesn't have a background. https://github.com/GowenGit/docnet/issues/8#issuecomment-538985672

- This also fixes the same issue for cover images

* Fixed an issue where if a raw image was in a directory with non-image files, those would get moved to cache when trying to open the file.

* For image extraction, if there is only 1 image, just copy that to cache instead of everything else in the directory that is an image.

* Add some spacing to the top menu bar

* Added an icon to the card to showcase the type of file

* Added a tag badge to the series detail page

* Fixed a bug in user preferences where dark mode control would default to true, even if you weren't on it

* Fixed some tests up

* Some code smells

Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>
2021-07-22 21:13:24 -05:00
Joseph Milazzo
b8165b311c
Misc Polishing (#413)
* Ensure that after we assign a role to a user, we show it immediately

* Cached libraryType api as that is not going to change in a viewing session. Moved some components around to tighten bundles.

* Cleaned up more TODOs
* Refactored Configuration to use getter and setters so that the interface is a lot cleaner. Updated HashUtil to use JWT Secret instead of Machine name (as docker machine name is random each boot).
2021-07-20 21:39:44 -05:00
Robbie Davis
ef5b22b585
Fixing up a sizing issue while keeping a restriction on height for webtoons (#412)
- increased the max-height to incorporate a percentage width for responsive scaling.
- Removed image-centering. No longer needed.
2021-07-20 20:36:40 -05:00
Joseph Milazzo
e226c2b074
Fixed a bug where collections wouldn't update after updating collection tags from series detail (#411) 2021-07-20 13:48:14 -05:00
Joseph Milazzo
c2d84ed0eb
UI Stat issue (#410)
* Fixed an issue on stats not sending from the UI
2021-07-20 12:34:29 -05:00
Robbie Davis
27be13a201
Fixing poster image (#409)
- Removing width to prevent stretching
- Adding alignment to center image within container
2021-07-20 12:26:02 -05:00
Joseph Milazzo
b11bb0e3b5
Extra Stat collection (#407)
* Cleaned up error interceptor to avoid sending auth errors (when a 500 occurs) to sentry as auth errors aren't issues.

* Added extra stat collection

* Fixed a bad gitignore which ignored anything in a stats directory
2021-07-20 11:32:37 -05:00
Joseph Milazzo
b9a06d3586
More Webtoon Fixes (#406)
* Fixed an issue where "blank" images could occur at the end of a webtoon if the users scrolls up and down when near the last page, due to a gap in checking if prefetch range is within totalPages bound.

* Fixed goto first/last page not triggering webtoon reader to move. Disabled reading direction when in webtoon reader.

* Added some DOM Purging, images that are +/- bufferPages (5) from you will no longer reside in DOM. This helps on low end phones.
2021-07-20 10:22:04 -05:00
Joseph Milazzo
eb88967545
Webtoon Reader Fixup (#405)
* Navigate users to library page instead of home to prevent history block.

* Cleaned up the Contributing to describe new code structure

* Fixed a critical bug for how we find files for a chapter download (use ChapterId for lookup, not MangaFile.Id). Refactored how downloading works on the UI side to use the backend's filename whenever possible, else provide a custom name (and use backend's extension) for bundled downloads.

* Fixed a bug where scroll intersection wasn't working on books without a table of content, even though it should have.

* If user is using a direct url and hits an authentication guard, cache the url, allow authentication, then redirect them to said url

* Added a transaction for bookmarking due to a rare case (in dev machines) where bookmark progress can duplicate

* Re-enabled webtoon preference in reader settings. Refactored gotopage into it's own, dedicated handler to simplify logic.

* Moved the prefetching code to occur whenever the page number within infinite scroller changes. This results in an easier to understand functioning.

* Fixed isElementVisible() which was not properly calculating element visibility

* GoToPage going forwards is working as expected, going backwards is completly broken

* After performing a gotopage, make sure we update the scrolling direction based on the delta.

* Removed some stuff thats not used, split the prefetching code up into separate functions to prepare for a rewrite.

* Reworked prefetching to ensure we have a buffer of pages around ourselves. It is not fully tested, but working much better than previous implementation. Will be enhanced with DOM Pruning.

* Cleaned up some old cruft from the backend code

* Cleaned up the webtoon page change handler to use setPageNum, which will handle the correct prefetching of next/prev chapter

* More cleanup around the codebase

* Refactored the code to use a map to keep track of what is loaded or not, which works better than max/min in cases where you jump to a page that doesn't have anything preloaded and loads images out of order

* Fixed a bad placement of code for when you are unauthenticated, the code will now redirect to the original location you requested before you had to login.

* Some cleanup. Fixed the scrolling issue with prev page, spec seems to not work on intersection observer. using 0.01 instead of 0.0.
2021-07-19 18:55:01 -05:00