* Lots of cleanup on the warnings in the solution. Deprecated IsLastWriteLessThan and made a new method HasFileBeenModifiedSince.
* Added some tests for the new extension method.
* Changed filter import to use correct import
* Scan Series now uses Refresh Metadata for Series, rather than library one.
* Fixed an issue where cover generation wasn't properly taking forced update into consideration. Removed a case of cover generation for no reason.
* Fixed series downloads not triggering backend call
* Replaced profile links to anchors so we can open in new tab if we like
* Refactored how update checking works. We now explicitly check and send back on the same API. We have a weekly job that will push an update to the user.
* Implemented a changelog tab
* Ported over a GA fix for using ' in PR bodies.
* Don't check cert for Github
* Don't show bookmark context actionable for books
* Fixed an issue where when adding a collection tag, the logic wouldn't assume the tag already existed in DB and would reset it.
* After editing a series on library page, ensure we refresh collection tags.
* Reload recently added section after changing a series
* Moved all Stat logger events to Debug
* Refactored scroll logic into a single service to keep the code consistent.
* ImageService had a stream reset before writting out to array. Added logging statment for updating series metadata. Removed ConcurencyCheck due to bad update issue for CollectionTag.
* Added a new screen which lets you quickly see all your bookmarks for a given user.
* Built user bookmark page in user settings. Moved user settings to it's own lazy loaded module. Removed unneded debouncing from downloader and just used throttleTime instead.
* Removed a not-yet implemented tab from series modal
* Fixed a bug in clear bookmarks and adjusted icons within anchors to have proper styling
* Removed some extra spam for the console
* Implemented the code to update RowVersion, which is our concurrency check
* Fixed a critical issue where more than one bookmark could occur for a given chapter due to a race condition. Now we use concurrency checks and we also gracefully allow more than one row, by only grabbing first.
* Cleaned up the logic for IHasConcurencyToken and updated the setters to be private.
* Lots of comments and when deleting a library, remove any user progress items for which chapters don't exist.
* When deleting a Series, cleanup user progress rows.
* Now after a scan of library, if a series is removed, collection tags are pruned as well if there are no longer any series bound to it.
* Updated the image on the Readme to show a better picture
* Small code cleanup to remove null check modifier as I check for null just before then
* Fixed images loading multiple times due to using function in binding with random. You can now click chapter images to read that chapter specifically.
* Fixed cards being different sizes when read vs unread
* Moved over Robbie's workflow changes from notifier. Commented out activity indicators as that is not shipping with this release.
* Remove code that isn't needed
* Reverted GA
* Changed GA to trigger only when HEAD is updated
* 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
* Updating docker action
* adding version to message
* adding way to get PR title and body
* Adding input pass to workflows
Workflow dispatches may not get push header info. Switching logic to pass needed title and body info through just in case.
* adding token
The description on this action is awful, it didn't mention needing a token. I found this solution from the repo's issues
* parsing pr body
* Updating parsing
* Updating docker workflow
* Reverting back to default variables
* fixing syntax error
* removing heading syntax
* updating parse
* Updating parsing
* Updating docker workflow
* trying to remove newline
* updating parsing
* Replacement in parsing
* Update sonar-scan.yml
* testing passing pr body via artifact
* Updating action version
* syntax fix
* Updating write
* Updating write
* testing artifact
* consolidating nightly-docker into main workflow
* pulling stable into main
* Updating docker action
* adding version to message
* adding way to get PR title and body
* Adding input pass to workflows
Workflow dispatches may not get push header info. Switching logic to pass needed title and body info through just in case.
* adding token
The description on this action is awful, it didn't mention needing a token. I found this solution from the repo's issues
* parsing pr body
* Updating parsing
* Updating docker workflow
* Reverting back to default variables
* fixing syntax error
* removing heading syntax
* updating parse
* Updating parsing
* Updating docker workflow
* trying to remove newline
* updating parsing
* Replacement in parsing
* Update sonar-scan.yml
* testing passing pr body via artifact
* Updating action version
* syntax fix
* Updating write
* Updating write
* testing artifact
* consolidating nightly-docker into main workflow
* Updating docker action
* adding version to message
* adding way to get PR title and body
* Adding input pass to workflows
Workflow dispatches may not get push header info. Switching logic to pass needed title and body info through just in case.
* adding token
The description on this action is awful, it didn't mention needing a token. I found this solution from the repo's issues
* parsing pr body
* Updating parsing
* Updating docker workflow
* Reverting back to default variables
* fixing syntax error
* removing heading syntax
* updating parse
* Updating parsing
* Updating docker workflow
* trying to remove newline
* updating parsing
* Replacement in parsing
* Update sonar-scan.yml
* testing passing pr body via artifact
* Updating action version
* syntax fix
* Updating write
* Updating write
* Updating docker action
* adding version to message
* adding way to get PR title and body
* Adding input pass to workflows
Workflow dispatches may not get push header info. Switching logic to pass needed title and body info through just in case.
* adding token
The description on this action is awful, it didn't mention needing a token. I found this solution from the repo's issues
* parsing pr body
* Updating parsing
* Updating docker workflow
* Reverting back to default variables
* fixing syntax error
* removing heading syntax
* updating parse
* Updating parsing
* Updating docker workflow
* trying to remove newline
* updating parsing
* Replacement in parsing
* Update sonar-scan.yml
* testing passing pr body via artifact
* Updating action version
* syntax fix
* Updating write
* Updating docker action
* adding version to message
* adding way to get PR title and body
* Adding input pass to workflows
Workflow dispatches may not get push header info. Switching logic to pass needed title and body info through just in case.
* adding token
The description on this action is awful, it didn't mention needing a token. I found this solution from the repo's issues
* parsing pr body
* Updating parsing
* Updating docker workflow
* Reverting back to default variables
* fixing syntax error
* removing heading syntax
* updating parse
* Updating parsing
* Updating docker workflow
* trying to remove newline
* updating parsing
* Replacement in parsing
* Update sonar-scan.yml
* testing passing pr body via artifact
* Updating action version
* syntax fix
* Updating docker action
* adding version to message
* adding way to get PR title and body
* Adding input pass to workflows
Workflow dispatches may not get push header info. Switching logic to pass needed title and body info through just in case.
* adding token
The description on this action is awful, it didn't mention needing a token. I found this solution from the repo's issues
* parsing pr body
* Updating parsing
* Updating docker workflow
* Reverting back to default variables
* fixing syntax error
* removing heading syntax
* updating parse
* Updating parsing
* Updating docker workflow
* trying to remove newline
* updating parsing
* Replacement in parsing
* Update sonar-scan.yml
* testing passing pr body via artifact
* Updating syntax
* Updating docker action
* adding version to message
* adding way to get PR title and body
* Adding input pass to workflows
Workflow dispatches may not get push header info. Switching logic to pass needed title and body info through just in case.
* adding token
The description on this action is awful, it didn't mention needing a token. I found this solution from the repo's issues
* parsing pr body
* Updating parsing
* Updating docker workflow
* Reverting back to default variables
* fixing syntax error
* removing heading syntax
* updating parse
* Updating parsing
* Updating docker workflow
* trying to remove newline
* updating parsing
* Replacement in parsing
* Update sonar-scan.yml
* Updating docker action
* adding version to message
* adding way to get PR title and body
* Adding input pass to workflows
Workflow dispatches may not get push header info. Switching logic to pass needed title and body info through just in case.
* adding token
The description on this action is awful, it didn't mention needing a token. I found this solution from the repo's issues
* parsing pr body
* Updating parsing
* Updating docker workflow
* Reverting back to default variables
* fixing syntax error
* removing heading syntax
* updating parse
* Updating parsing
* Updating docker workflow
* trying to remove newline
# 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
* Updating docker action
* adding version to message
* adding way to get PR title and body
* Adding input pass to workflows
Workflow dispatches may not get push header info. Switching logic to pass needed title and body info through just in case.
* adding token
The description on this action is awful, it didn't mention needing a token. I found this solution from the repo's issues
* parsing pr body
* Updating parsing
* Updating docker workflow
* Reverting back to default variables
* fixing syntax error
* removing heading syntax
* updating parse
* Updating parsing
* Updating docker workflow
* Updating docker action
* adding version to message
* adding way to get PR title and body
* Adding input pass to workflows
Workflow dispatches may not get push header info. Switching logic to pass needed title and body info through just in case.
* adding token
The description on this action is awful, it didn't mention needing a token. I found this solution from the repo's issues
* parsing pr body
* Updating parsing
* Updating docker workflow
* Reverting back to default variables
* fixing syntax error
* removing heading syntax
* updating parse
* Updating parsing
* Updating docker action
* adding version to message
* adding way to get PR title and body
* Adding input pass to workflows
Workflow dispatches may not get push header info. Switching logic to pass needed title and body info through just in case.
* adding token
The description on this action is awful, it didn't mention needing a token. I found this solution from the repo's issues
* parsing pr body
* Updating parsing
* Updating docker workflow
* Reverting back to default variables
* fixing syntax error
* removing heading syntax
* updating parse