* Updated to net7.0
* Updated GA to .net 7
* Updated System.IO.Abstractions to use New factory.
* Converted Regex into SourceGenerator in Parser.
* Updated more regex to source generators.
* Enabled Nullability and more regex changes throughout codebase.
* Parser is 100% GeneratedRegexified
* Lots of nullability code
* Enabled nullability for all repositories.
* Fixed another unit test
* Refactored some code around and took care of some todos.
* Updating code for nullability and cleaning up methods that aren't used anymore. Refctored all uses of Parser.Normalize() to use new extension
* More nullability exercises. 500 warnings to go.
* Fixed a bug where custom file uploads for entities wouldn't save in webP.
* Nullability is done for all DTOs
* Fixed all unit tests and nullability for the project. Only OPDS is left which will be done with an upcoming OPDS enhancement.
* Use localization in book service after validating
* Code smells
* Switched to preview build of swashbuckle for .net7 support
* Fixed up merge issues
* Disable emulate comic book when on single page reader
* Fixed a regression where double page renderer wouldn't layout the images correctly
* Updated to swashbuckle which support .net 7
* Fixed a bad GA action
* Some code cleanup
* More code smells
* Took care of most of nullable issues
* Fixed a broken test due to having more than one test run in parallel
* I'm really not sure why the unit tests are failing or are so extremely slow on .net 7
* Updated all dependencies
* Fixed up build and removed hardcoded framework from build scripts. (this merge removes Regex Source generators). Unit tests are completely busted.
* Unit tests and code cleanup. Needs shakeout now.
* Adjusted Series model since a few fields are not-nullable. Removed dead imports on the project.
* Refactored to use Builder pattern for all unit tests.
* Switched nullability down to warnings. It wasn't possible to switch due to constraint issues in DB Migration.
* Introduced a new claim on the Token to get UserId as well as Username, thus allowing for many places of reduced DB calls. All users will need to reauthenticate.
Introduced UTC Dates throughout the application, they are not exposed in all DTOs, that will come later when we fully switch over. For now, Utc dates will be updated along side timezone specific dates.
Refactored get-progress/progress api to be 50% faster by reducing how much data is loaded from the query.
* Speed up the following apis:
collection/search, download/bookmarks, reader/bookmark-info, recommended/quick-reads, recommended/quick-catchup-reads, recommended/highly-rated, recommended/more-in, recommended/rediscover, want-to-read/
* Added a migration to sync all dates with their new UTC counterpart.
* Added LastReadingProgressUtc onto ChapterDto for some browsing apis, but not all.
Added LastReadingProgressUtc to reading list items.
Refactored the migration to run raw SQL which is much faster.
* Added LastReadingProgressUtc onto ChapterDto for some browsing apis, but not all.
Added LastReadingProgressUtc to reading list items.
Refactored the migration to run raw SQL which is much faster.
* Fixed the unit tests
* Fixed an issue with auto mapper which was causing progress page number to not get sent to UI
* series/volume has chapter last reading progress
* Added filesize and library name on reading list item dto for CDisplayEx.
* Some minor code cleanup
* Forgot to fill a field
* Bump loader-utils from 2.0.3 to 2.0.4 in /UI/Web
Bumps [loader-utils](https://github.com/webpack/loader-utils) from 2.0.3 to 2.0.4.
- [Release notes](https://github.com/webpack/loader-utils/releases)
- [Changelog](https://github.com/webpack/loader-utils/blob/v2.0.4/CHANGELOG.md)
- [Commits](https://github.com/webpack/loader-utils/compare/v2.0.3...v2.0.4)
---
updated-dependencies:
- dependency-name: loader-utils
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
* Fixed want to read button on series detail not performing the correct action
* Started the library settings. Added ability to update a cover image for a library.
Updated backup db to also copy reading list (and now library) cover images.
* Integrated Edit Library into new settings (not tested) and hooked up a wizard-like flow for new library.
* Fixed a missing update event in backend when updating a library.
* Disable Save when form invalid. Do inline validation on Library name when user types to ensure the name is valid.
* Trim library names before you check anything
* General code cleanup
* Implemented advanced settings for library (include in dashboard, search, recommended) and ability to turn off folder watching for individual libraries.
Refactored some code to streamline perf in some flows.
* Removed old components replaced with new modal
* Code smells
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Recreated Kavita Logging with Serilog instead of Default. This needs to be move out of the appsettings now, to allow auto updater to patch.
* Refactored the code to be completely configured via Code rather than appsettings.json. This is a required step for Auto Updating.
* Added in the ability to send logs directly to the UI only for users on the log route. Stopping implementation as Alerts page will handle the rest of the implementation.
* Fixed up the backup service to not rely on Config from appsettings.json
* Tweaked the Logging levels available
* Moved everything over to File-scoped namespaces
* Moved everything over to File-scoped namespaces
* Code cleanup, removed an old migration and changed so debug logging doesn't print sensitive db data
* Removed dead code
* 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>
* Updated dependencies. SharpCompress has been updated to v2.1.0 which should fix pdf rendering on pi/arm64 devices.
* Removed some dependencies not needed and updated the Backup code to account for themes and ensure everything gets copied every time.
* Fixed a bug where GetNextChapter would return a loose leaf chapter from a special when it should return nothing.
* Fixed a bug in events widget when an update comes in after a user refreshes, the active event counter could get out of sync, thus showing "Nothing going on here"
Refactored the events widget to be named appropriately.
* Refactored code to have errors during threaded tasks propagate to the UI via events widget (css still needed).
Removed ScanLibraryError in favor of generic Error event.
* Fixed up some code and added ability to remove the event from events widget
* Fixed a bug where modifiying certain fields, like summary, wouldn't lock the field
* Fixed a few bugs where lock state was not being set in the DB correctly nor were certain combinations of locking fields and editing fields.
* Removed debug code
* Updated the discord alert to tag new group
* Refactored cover upload to actually handle uploading a temp file via url on the backend so that users can user change cover by url. Fixed up some bugs that occured when chaning the image container in a previous PR.
* Code cleanup
* Cleaned up the css on the error items
* Code cleanup
* Took care of some notes in the code
* Fixed an issue where Extra might get flagged as special too early, if in a word like Extraordinary
* Moved Tag cleanup code into Scanner service. Added a SplitQuery to another heavy API. Refactored Scan loop to remove parallelism and use async instead.
* Lots of rework on the codebase to support detailed messages and easier management of message sending. Need to take a break on this work.
* Progress is being made, but slowly. Code is broken in this commit.
* Progress is being made, but slowly. Code is broken in this commit.
* Fixed merge issue
* Fixed unit tests
* CoverUpdate is now hooked into new ProgressEvent structure
* Refactored code to remove custom observables and have everything use standard messages$
* Refactored a ton of instances to NotificationProgressEvent style and tons of the UI to respect that too. UI is still a bit buggy, but wholistically the work is done.
* Working much better. Sometimes events come in too fast. Currently cover update progress doesn't display on UI
* Fixed unit tests
* Removed SignalREvent to minimize internal event types. Updated the UI to use progress bars. Finished SiteThemeService.
* Merged metadata refresh progress events and changed library scan events to merge cleaner in the UI
* Changed RefreshMetadataProgress to CoverUpdateProgress to reflect the event better.
* Theme Cleanup (#1089)
* Fixed e-ink theme not properly applying correctly
* Fixed some seed changes. Changed card checkboxes to use our themed ones
* Fixed recently added carousel not going to recently-added page
* Fixed an issue where no results found would show when searching for a library name
* Cleaned up list a bit, typeahead dropdown still needs work
* Added a TODO to streamline series-card component
* Removed ng-lazyload-image module since we don't use it. We use lazysizes
* Darken card on hover
* Fixing accordion focus style
* ux pass updates
- Fixed typeahead width
- Fixed changelog download buttons
- Fixed a select
- Fixed various input box-shadows
- Fixed all anchors to only have underline on hover
- Added navtab hover and active effects
* more ux pass
- Fixed spacing on theme cards
- Fixed some light theme issues
- Exposed text-muted-color for theme card subtitle color
* UX pass fixes
- Changed back to bright green for primary on dark theme
- Changed fa icon to black on e-ink
* Merged changelog component
* Fixed anchor buttons text decoration
* Changed nav tabs to have a background color instead of open active state
* When user is not authenticated, make sure we set default theme (dark)
* Cleanup on carousel
* Updated Users tab to use small buttons with icons to align with Library tab
* Cleaned up brand to not underline, removed default link underline on hover in dropdown and pill tabs
* Fixed collection detail posters not rendering
Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>
* Bump versions by dotnet-bump-version.
* Tweaked some of the emitting code
* Some css, but pretty bad. Robbie please save me
* Removed a todo
* styling update
* Only send filename on FileScanProgress
* Some console.log spam cleanup
* Various updates
* Show events widget activity based on activeEvents
* progress bar color updates
* Code cleanup
Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>
* Cleaned up some old code in download bookmark that could create pointless temp folders.
* Fixed a bad http call on reading list remove read and cleaned up the messaging
* Undid an optimization in finding cover image due to it perfoming depth first rather than breadth.
* Updated CleanComicInfo to have Translators and CoverArtists, which were previously missing.
* Renamed Refresh Metadata to Refresh Covers on the UI, given Metadata refresh is done in Scan.
* Library detail will now retain the search query in the UI. Reduced the amount of api calls to the backend on load.
* Reverted allowing the filter to reside in the UI (even though it does work).
* Updated the Age Rating to match the v2.1 spec.
* Fixed a bug where progress wasn't being saved
* Fixed line height not having any effect due to not applying to children elements in the reader
* Fixed some wording for Refresh Covers confirmation
* Delete Series will now send an event to the UI informing that series was deleted.
* Change Progress widget to show Refreshing Covers for
* When we exit early due to potential missing folders/drives in a scan, tell the UI that scan is 100% done.
* Fixed manage library not supressing scan loader when a complete came in
* Fixed a spelling difference for Publication Status between filter and series detail
* Fixed a bug where collection detail page would flash on first load due to duplicate load events
* Added bookmarks to backups
* Fixed issues where fullscreen mode would break infinite scroller contiunous reader
* Refactored all files to have Interfaces within the same file. Started moving over to file-scoped namespaces.
* Refactored common methods for getting underlying file's cover, pages, and extracting into 1 interface.
* More refactoring around removing dependence on explicit filetype testing for getting information.
* Code is buildable, tests are broken. Huge refactor (not completed) which makes most of DirectoryService testable with a mock filesystem (and thus the services that utilize it).
* Finished porting DirectoryService to use mocked filesystem implementation.
* Added a null check
* Added a null check
* Finished all unit tests for DirectoryService.
* Some misc cleanup on the code
* Fixed up some bugs from refactoring scan loop.
* Implemented CleanupService testing and refactored more of DirectoryService to be non-static.
Fixed a bug where cover file cleanup wasn't properly finding files due to a regex bug.
* Fixed an issue in CleanupBackup() where we weren't properly selecting database files older than 30 days. Finished CleanupService Tests.
* Refactored Flatten and RemoveNonImages to directory service to allow CacheService to be testable.
* Finally have CacheService tested. Rewrote GetCachedPagePath() to be much more straightforward & performant.
* Updated DefaultParserTests.cs to contain all existing tests and follow new test layout format.
* All tests fixed up
* Implemented a new widget to show when operations are occuring in the backend (tasks + progress events). Fixed an oversight on progress reporting where I sent 100F instead of 1F.
* Hooked in more progress events for tasks on the backend. Cleaned up code and integrated some RBS into it. CSS needed.
* Show a colored icon when events are active
* Added some styling to the progress widget
* Updated some signatures to avoid a ToArray() within a loop.
* Use UpdateSeries directly when adding new series, rather than a modified version for new series only.
* Refactored some messages for scanner loop to reduce duplicate code and write messages more clear. Hooked in a RefreshMetadataProgress event (no UI changes).
* Fixed a bug on docker where backup service was using different logic than non-docker, which isn't needed after config change last release.
* Allow user to make more than 1 backup per day
* Implemented a select all checkbox for library access modal
* Fixed an issue where backups were failing due to files being in config directory
* Changed up the exception messages to be more clear when a unique constraint fails on adding a new series.
* Added the actual index that is causing the conflict.
* Refactored all the config files for Kavita to be loaded from config/. This will allow docker to just mount one folder and for Update functionality to be trivial.
* Cleaned up documentation around new update method.
* Updated docker files to support config directory
* Removed entrypoint, no longer needed
* Update appsettings to point to config directory for logs
* Updated message for docker users that are upgrading
* Ensure that docker users that have not updated their mount points from upgrade cannot start the server
* Code smells
* More cleanup
* Added entrypoint to fix bind mount issues
* Updated README with new folder structure
* Fixed build system for new setup
* Updated string path if user is docker
* Updated the migration flow for docker to work properly and Fixed LogFile configuration updating.
* Migrating docker images is now working 100%
* Fixed config from bad code
* Code cleanup
Co-authored-by: Chris Plaatjes <kizaing@gmail.com>
* Implemented methods to parse out the whole ComicInfo file and a mock ComicInfo from epub files.
* Removed unused imports. ScanSeries needs to cleanup deleted chapters and call RefreshMetadata. Ensure after scan we cleanup tags without any series.
* Random cleanup
* Added some comments about data getting stale and not updating.
* Removed old Summary methods in favor of the ComicInfo versions
* Added a missing property
* Fixed unit test
* Updating wording on card item when total pages is 0, to be just "Cannot Read" since it could be a non-archive file
* Refactored cover images to be stored on disk. This first commit has the extraction to disk and the metadata service to handle updating when applicable.
* Refactored code to have the actual save to cover image directory done by ImageService.
* Implemented the ability to override cover images.
* Some cleanup on Image service
* Implemented the ability to cleanup old covers nightly
* Added a migration to migrate existing covers to new cover image format (files).
* Refactored all CoverImages to just be the filename, leaving the Join with Cover directory to higher level code.
* Ensure when getting user progress, we pick the first.
* Added cleanup cover images for deleted tags. Don't pull any cover images that are blank.
* After series update, clear out cover image. No change on UI, but just keeps things clear before metadata refresh hits
* Refactored image formats for covers to ImageService.
* Fixed an issue where after refactoring how images were stored, the cleanup service was deleting them after each scan.
* Changed how ShouldUpdateCoverImage works to check if file exists or not even if cover image is locked.
* Fixed unit tests
* Added caching back to cover images.
* Caching on series as well
* Code Cleanup items
* Ensure when checking if a file exists in MetadataService, that we join for cover image directory. After we scan library, do one last filter to delete any series that have 0 pages total.
* Catch exceptions so we don't run cover migration if this is first time run.
* After a scan, only clear out the cache directory and not do a deep clean.
* Implemented the ability to backup custom locked covers only.
* Fixed unit tests
* Trying to figure out why GA crashes when running MetadataServiceTests.cs
* Some debugging on GA tests not running
* Commented out tests that were causing issues in GA.
* Fixed an issue where series cover images wouldn't migrate
* Fixed the updating of links to actually do all series and not just locked
# 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>