Releases: Kareadita/Kavita
v0.7.5 - Remove from On Deck
Kavita+ Users, After updating, please DM/Email me to get your license reset for re-registering (Kavita+ -> Edit tab).
Another release so quickly? I'm trying out a new way to release Kavita releases to bring things faster and minimize the amount of regression testing I have to do each release. For the next few releases, each release will contain one or two features along with the usual bugfixes and tweaks.
For those that have signed up for Kavita+, I want to thank you so much for giving it a shot. I have new features planned, but I want to ensure the foundation is solid first. I have been alerted of a few users that are having their fingerprints change during system reboots and whatnot. I believe I have fixed this. You will need to get in contact (email or dm on discord) with your license key and I will reset you in the backend.
I sincerely apologize for the inconvenience and thank you for your understanding while I work out supporting so many platforms for fingerprinting in an open source project (it makes it very challenging). Again, after updating, please DM/Email me to get your license reset for re-registering (Kavita+ -> Edit tab).
One last thing on Kavita+, I understand that it is becoming difficult to communicate changes happening on Kavita+ and even Kavita as the services tie in together. I am working on setting up a solution to make it easier to get informed. In the meantime, Watching for releases in Github or joining discord and subscribing to Kavita+ (or other roles) will be the best.
A reminder if you are having any issues with Kavita+ to reach out in Discord. If you have ideas for new features, please add on Feat Hub.
Now back to Kavita! This release we see the addition of two cool features: Remove from On Deck and Overall Ratings. Overall ratings is a new feature that allows any series within your Kavita instance to show the average rating from other users (in addition to you own). A nice feature that drives more intra-server communication, something I'm looking to explore more in the future.
The big feature is Remove from On Deck. On deck are series that have recently had a new chapter within 7 days or reading activity within 3 weeks. These numbers are now customizable, but what if you have a series you just started reading but didn't vibe with. It would be annoying seeing it every day on your On Deck. You could previously mark as unread or just wait (or read a bunch of stuff to move it further down the list). Now, you can just remove it. Once removed, it wont be shown until you create any reading progress on it. You can remove it as many times as you need.
Added
- Added: (Kavita+) Added favorite count on AL and MAL ratings. Click them to see the favorite count from users.
- Added: Added the ability to change cache memory amount from the Admin dashboard
- Added: Kavita users can now see the overall review from all user ratings for a given series. This rating will show in addition to your rating. Your rating + overall rating. You can click on the rating indicator to add your own.
- Added: Admins can now configure the amount of progress time or last item added range for on deck calculation
- Added: Added the ability for users to remove series from on deck. A series will no longer appear on 'On Deck' until a new chapter is read by that user.
- Added: Added the ability to see the last reading date for a volume or chapter in the details drawer. Hover over the clock to get the full timestamp.
Changed
- Changed: (Kavita+) Review cards will now show an icon to indicate where the review is from. This may take some time to show as reviews are cached for some days in Kavita+
- Changed: (Kavita+) Changed the fingerprinting method for Kavita+ (this requires re-registering after pinging me). Sorry for the issues.
- Changed: (Kavita+) Don't allow Comic Libraries to do any scrobbling as there aren't any Comic Scrobbling providers yet
- Changed: Kavita+ tab now links directly to the FAQ
- Changed: Don't log that we are checking license when no license is set (no checking was taking place)
- Changed: Added an FAQ link on the Kavita+ tab
- Changed: Don't query Kavita+ for ratings on comic libraries as there are no upstream providers yet.
- Changed: Unified all caching in Kavita under one cache (Kavita+, favicons, etc) which is controlled by Cache setting in appsettings.json or via the Admin page.
- Changed: Upped the default cache memory requirements to 75MB.
- Changed: (Performance) Reduced a DB lookup for many reader based APIs.
- Changed: Ignore .caltrash folders during scan for users that use Calibre's managed directory as library folder
Fixed
- Fixed: Jumbar keys were a little hard to click on
- Fixed: Fixed an issue where libraries that don't allow scrobbling could be scrobbled when generating past history with read events when a scrobble token was added
- Fixed: The min/max year on metadata filter was not a number input type.
- Fixed: Fixed the disabled tabs color contrast due to bootstrap undocumented changes
- Fixed: Fixed an issue where Cache key was using Port instead.
- Fixed: Fixed an issue where get latest progress would throw an exception if there was no progress due to LINQ and MAX query
- Fixed: Fixed a bug where Send To Device on a series card (like from library details) wouldn't actually send anything
- Fixed: Ensure we sync to the DB for what's in appsettings.json for Cache Key
- Fixed: Fixed a bug where if you have multiple libraries pointing to the same folder (for whatever reason), the Scan Folder api could be rejected.
- Fixed: Handle more appropriately if the publication date from an epub is empty to avoid a bad parse error
v0.7.4 - Kavita+ Launch
This release is special to me because it is the launch of Kavita+, a subscription service which adds bonus features to the base Kavita, that otherwise wouldn't be feasible to include. Please note, this service is offered by me (majora2007), who is the main developer of Kavita. Kavita+ will not start gate keeping features from the base Kavita nor will it take over my development time. This is a way for me to raise money so that I can donate more of my time into Kavita and make it the best self-hosted reading software out there.
Kavita+ requires a monthly subscription of 4$/month/server instance (You can try if for 50% off with FREETRIAL
promo code). Once unlocked, all users of the server will gain access to the premium features.
What comes with Kavita+? The initial release brings a few cool features:
- Scrobbling to AniList
- External Reviews
- External Ratings
- Recommendations (both what's on your server and what's not)
- Removal of the donation link
All these features can be read about in detail on our Wiki. If you are an Open Collective member, please reach out to me, if I have not already reached out. I will give you Kavita+ for free if you are donating at least the price of the subscription or a few months off if you've been donating. Third Party developers integrating with Kavita will also receive a subscription for free.
With Kavita+ out of the way, this release also contains a TON of polish and some nice enhancements I was trying a few releases back, like Plex-like Collection and Reading List covers:
I spent a lot of time working on fixing bugs across Kavita and within the readers themselves, including some very hard to reproduce ones, like characters being cutoff on the epub reader on some devices. I would encourage you all to read through the changelog and if you're experiencing a bug that doesn't seem to be in here or on Github, please raise it, else it will likely not get fixed.
For those that were waiting on Localization, don't fret. Although not in this release, I am still planning on it for next or the release after. I have a lot of QoL items for next release that I've been waiting to get to.
I want to reiterate that Kavita+ is an optional service and a way to fund me to continue to pour my time into Kavita. I have many plans to enhance Kavita over the years and a few more for Kavita+. I look forward to the feedback from you all and the future of Kavita.
Added
- Added: Added a whole new section for reviews (both Kavita user's, your own, and external) on the series detail page
- Added: Added ability to configure the amount of RAM for caching Kavita+ data (recs, reviews, and ratings). This is managed in appsettings.json via 'Cache' option. Defaults to 50MB.
- Added: Added ability to view external Recommendations for manga/book series. If user is an admin without Age Rating restrictions, external recommendations will show.
- Added: Added the ability for users to configure AniList as a scrobbling provider (on a Kavita+ licensed server) to scrobble reviews, ratings, want to read, and reading progress.
- Added: User Review can now have a short tagline to bring a high level information without users having to read the long review.
- Added: New user option to opt-into sharing Series reviews with other users in the server.
- Added: Added a hover-over to the progress bars in the app to know exact percentage of reading for a chapter/volume/series.
- Added: Added a new stat for reporting for last read time. This helps identify how many servers are in use versus just running Kavita.
- Added: Reading Lists and Collections without a manual cover set will generate a custom merged image based on chapter covers or series covers, assuming there is at least 4. These will be randomly generated every 24 hours. You may need to regenerate covers to take advantage as in v0.7.4, cover generation now forces aspect ratio and size.
- Added: Added the ability to disable scrobbling on a per-series per-user basis or at a library level. By default, Comic Libraries will have scrobbling turned off as there are no comic-based scrobbling providers.
- Added: Added the ability to see scrobbling errors for the admin, so they can be fixed (usually fixing series name or adding a anilist/mal weblink)
- Added: Added new spoiler tag css variables: --review-spoiler-bg-color and --review-spoiler-text-color (these are for spoliers within reviews from AniList)
Changed
- Changed: Reviews are now under the Series Metadata and in a card format to allow for a more streamlined experience. Your review will always be first with a star.
- Changed: User Reviews now have an optional tagline and a new UX
- Changed: Reviews will now show reviews from other users on the server, if they've opted-in.
- Changed: Tweaked the wording on registration page to ensure users understand email is required but does not need to be valid.
- Changed: Changed how enums show in the documentation so you can see both their name and value.
- Changed: JWTs will expire after 10 days due to the nature of how user's read content and devices sleep
- Changed: Many images were optimized and added to response compression
- Changed: Edit Series modal name field should be readonly as it is directly mapped to file metadata or filename parsed. It shouldn't be changeable via the UI.
- Changed: Made all UI components to be standalone, which results in slightly faster load times across the app
- Changed: Switched how we cound words in epub to handle languages that don't have spaces.
- Changed: Aligned a few apis to use default pagination, allowing for a small optimization.
- Changed: Changed how Kavita creates cover images to force the aspect ratio and prevent skewing, when comics or webtoons have non-standard ratios. You will need to regenerate all covers for it to take effect.
- Changed: Optimized aspect ratios for custom library images to avoid shift layout.
- Changed: Moved the series detail page down a bit to be inline with first row of actionables.
- Changed: Refactored the code to not throw generic 500 toasts on the UI and instead only specific errors will show
- Changed: Updated ExCss, which helps inline styles on books. Much more styles are now supported for inlining from css3 spec.
- Changed: Donation link will now be removed if the server admin has an active subscription license.
- Changed: Collection detail page will now default sort by sort name
- Changed: When performing a scan series, force a recount of words/pages to ensure read time gets updated.
- Changed: Sped up the query for getting libraries and added caching for that api, which is helpful for users with larger library counts.
Fixed
- Fixed: Fixed a bug where updating the user's last active time wasn't writing to database and causing a logout event
- Fixed: Fixed some errors on bad opds url generation and improved it further to use host name if set.
- Fixed: Fixed a bug where weblinks with a comma in it, wouldn't be addable
- Fixed: Fixed a bug where trying to extract png favicon from a web link would skip valid pngs.
- Fixed: Fixed an issue where a series trying to choose the first cover image wouldn't work reliably
- Fixed: Fixed a UI only issue where it would look like duplicate series were recently added when they weren't
- Fixed: Fixed a bug where IP Addresses was not called out in settings, which needs a restart to take effect.
- Fixed: Fixed a bug where chapters within a volume could be unordered in the UI info screen.
- Fixed: Fixed a bunch of blank space on reading list detail page
- Fixed: Fixed yet another edge case for getting series cover image where first volume is higher than 1 and the rest is just loose leaf chapters.
- Fixed: Fixed a small css issue where the border to the tab wouldn't respect the border radius
- Fixed: Fixed a long standing bug where series and volume covers could blank out after a conversion task. This should no longer happen.
- Fixed: Fixed an issue in the epub reader where html tags within an anchor could break the navigation code for inner-links.
- Fixed: Fixed a bug in GetContinueChapter where a special could appear ahead of a loose leaf chapter.
- Fixed: Fixed an edge case bug for picking the correct cover image for a series.
- Fixed: Fixed a bug where typeahead x wouldn't clear out the input field.
- Fixed: Don't allow duplicates for reading list characters.
- Fixed: Fixed a bug where when calculating recently updated, series with the same name but different libraries could get grouped.
- Fixed: Fixed an issue with fit to height where there could still be a small amount of scroll due to a timing issue with the image loading.
- Fixed: Fixed inability to progress to next chapter when last page is a spread and the user is using split rendering
- Fixed: Fixed grid breakpoint css variables not using the ones from variables due to a missing import.
- Fixed: Fixed a bug where when switching from webtoon back to a non-webtoon reading mode, if the browser size isn't large enough for double, the reader wouldn't go to single mode.
- Fixed: Fixed a bug with arrow on sortable table header
- Fixed: Fixed an issue with epub column layout cutting off text
- Fixed: Fixed a bug where there is a little bit of space under fit to height ...
v0.7.3.1 - Hotfix
A reader bug slipped through release testing, so here's a hotfix for everyone.
Changed
- Changed: When deleting a library, give the library name in the prompt
- Changed: Directory Picker will now sort libraries as some OSes don't return paths sorted
Fixed
- Fixed: Fixed an issue with fit to width on mobile from last release
- Fixed: Fixed an issue where creating a new library, advanced settings wouldn't persist
- Fixed: Fixed an issue where kbd tags with paper theme would render incorrectly
- Fixed: Fixed an issue where wrong cover could be chosen for series in an edge case setup
- Fixed: Fixed an issue where typing in the autocomplete for directory picker would throw errors
v0.7.3 - The Quality of Life Update
v0.7.3 is here and quite quickly from the last release. v0.7.3 was originally designed to be a release where I would bring a really awesome set of features I've been dreaming about, but unfortunately, I hit challenge after challenge each step of the way. Instead of making the community wait months for me to solve all the challenges with them, I decided to release early and keep working on them slowly in the background. With that in mind, you will still see some nice additions to Kavita in this release and a heck of a lot of polish all around. Let's get into it.
Web Links
This is something I am most excited about and have been really enjoying, especially for something coming in v0.7.4. Web links are external websites that have some relation to a series, like an AniList entry, a Plex entry, etc. A series can have many different weblinks and Kavita will attempt to download a favicon for the website, else fallback to Kavita's own icon (you can raise a PR and submit one yourself).
Streamlined EncodeAs
Kavita has offered the ability to save covers and bookmarks in WebP or the default png for quite some versions, but in Kavita v0.7.3, we added AVIF support. What if users wanted to save their media in AVIF instead of WebP? This release, we redesigned the encoding process so you have full control over what is used. (Note: You MUST update the Save As Encoding if you were previously using WebP. This update will not carry that over for you.)
Media Errors
This is one I took inspiration from Komga, but have you ever had Kavita not pickup on a file and wondered why? Did you not want to search through the logs to figure it out? Well now, you can just go to Admin -> Media and see a list of all issues present during a scan (and even when you open Epubs for reading). This is extremely helpful and should help those with massive collections find what Kavita doesn't process.
EPUB Love
This release I also spent a lot of time working on the epub parser so that Kavita could support reading list and collection generation from epubs, much like we have with ComicInfo.xml. Tons of work went into table of content generation (when there isn't one in the epub file), link mapping, css support, etc. Overall the book reader should perform much better and have more true-to-the-book rendering.
Overall this release is full of quality of life enhancements and polish. Next release I have something interesting in store. Thank you to all that have helped out in this release, especially those who gathered the many favicons. I appreciate all you do.
Added
- Added: Kavita will now report basic information to the user on when media errors occur, like invalid structural metadata (epubs) or bad archives. This can be found in Admin -> Media tab. Please provide feedback so we can tweak the experience.
- Added: Kavita can now create Collections from title-type='collection' tags and reading lists when accompanied by display-seq and a count > 0. See the wiki for updated documentation.
- Added: Epubs can now use the refines=file-as to explicitly set sort title, which will override taking from belongs-to-collection or calibre:series
- Added: Added basic ISBN search which will show the chapter
- Added: Explicitly capture more people roles from Epubs. Now, translator, artist, publisher, editor, etc can all be extracted from refines tags.
- Added: Added support for building reading lists and collections from Epubs
- Added: Paper book reader theme
- Added: Added the ability to import multiple comma separated links from the Web tag from ComicInfo.xml and view them on Chapter level details
- Added: Added the ability to add multiple links at Series level and thus the ability to click them from within Kavita
- Added: Weblinks can now fallback to Kavita hosted favicons (on our main site), thus enabling a way for the community to submit ones which Kavita cannot parse that will benefit all installs.
- Added: Added ISBN support for Chapters in Kavita. This can be parsed from epubs (isbn) or ComicInfo.xml (GTIN from 2.1 Spec). For GTIN, note that ISBN-10 are not supported. Valid ISBNs only will be saved, invalids will be rejected.
- Added: Kavita now supports AVIF (8-bit only) out of the box. 10-bit will not work.
- Added: You can now use AVIF for saving Kavita managed files (covers, bookmarks, favicons)
Changed
- Changed: Removed an additional ComicInfo read when comicinfo is null when trying to load. But we've already done it once earlier, so there really isn't any point.
- Changed: How we check if a container is docker or not has been streamlined and hopefully more reliable (This fixes saving server settings for Unraid issues)
- Changed: Expanded Table of Contents generation (aka where Kavita tries to generate a simple one with epub doesn't have one) to also check for navigation.xhtml as well as toc.xhtml.
- Changed: Updated EpubReader to v3.3.0 which adds Epub 3.3 support
- Changed: Added more page hacks when invalid keys are used in the epub when rewriting anchors
- Changed: Updated the app to Angular 16. No user facing changes.
- Changed: Strip more forms of comments (especially ones that shouldn't be in CSS files) from CSS before parsing/inlining in epub reader
- Changed: Handle if ExCSS throws an exception during inlining and attempt to fallback to scoping css instead of inlining.
- Changed: When there are duplicate files that make up a volume, show the count on series detail page, like we do with chapters
- Changed: Authentication now expires after 2 days. Refresh tokens will attempt to keep user logged in by refreshing authentication every 10 minutes.
- Changed: Removed old migrations for Kavita startup. Only migrations from v0.72 onwards are present.
- Changed: Disable login button when a login is in-progress. This can help prevent lock out.
- Changed: (API) Added NoContent responses when APIs don't find entities
- Changed: Reading list page refreshes after updating info in the modal
- Changed: Updated initial install default keys to be 256 bits for the encryption. You may be logged out and have to reauthenticate or change your token key to "super secret unguessable key" and restart (which will allow Kavita to regenerate the key for you). This is in config/appsettings.json
- Changed: Modified the docker entrypoint script to copy in the appsettings.json config rather than manually write a new one via echo
- Changed: When rounding bytes to human readable (ie 2MB), if there is a decimal that is not .0, show it
- Changed: (BREAKING CHANGE) Save Bookmarks/Covers as WebP has been removed. There is a new setting called Encode Media As. This will allow you to select PNG, WebP, and AVIF. All Kavita managed media (bookmarks, covers, favicons) will use that globally. You cannot convert from WebP/AVIF back to PNG. For covers, you will have to regenerate them. Bookmarks and favicons cannot be changed back. (favicons can be deleted manually by admin and regenerated naturally)
- Changed: Streamlined tasks for convert to offer just a single task that does everything.
- Changed: Moved to using pre-calculated extension for sending stats rather than doing it on the fly
- Changed: When adding a rating for a series for the first time, don't prompt to write a review.
- Changed: Refresh tokens will now reauthenticate every 10 mins to ideally never let a user have to log out
- Changed: Expanded the range of time in which a version update check can occur
- Changed: Reading list page refreshes after updating info in the modal
Fixed
- Fixed: Added better fallback implementation for building table of contents based on the many different ways epubs are packed and referenced.
- Fixed: Fixed docker users unable to save settings
- Fixed: Fixed a bug in mappings (keys/files) to pages that caused some links not to map appropriately.
- Fixed: Fixed a bug where continue reading was wrong in an edge case scenario
- Fixed: Fixed another edge case where continue reading opened the wrong chapter
- Fixed: Fixed an issue where jumpbar would be disabled when it shouldn't, like on bookmarks page
- Fixed: Fixed processing logic error that if StoryArcNumber is empty, then multiple StoryArc's are not processed (similar would occur if multiple StoryArcNumber's are present for a single StoryArc).
- Fixed: Fixed inclusion of spaces in multiple StoryArc's due to ', ' as a common CSV format.
- Fixed: Fixed a bug where an empty space could throw an error when creating a library.
- Fixed: Fixed a bug where spreads could stretch on PC
- Fixed: Fixed a bug where reading list dates couldn't be cleared out
- Fixed: Fixed an issue where create library wouldn't take into account advanced settings
- Fixed: Fixed an issue where selection of the first chapter of a series to pull series-level metadata could fail in cases where you had Volume 2 and Chapter 1, Volume 2 would be selected.
- Fixed: Fixed a bug which caused refresh token to always return invalid
- Fixed: Fixed a bug where Kavita couldn't parse Series name when there was no volume/chapter keywords and a chapter range (ie Series 001-003)
- Fixed: Encode filenames before sending them to the UI for downloading to prevent non-english characters being replaced by underscore
- Fixed: Added support to parse ComicInfo.xml when they have empty single tags
- Fixed: Fixed a bug where spreads could stretch on PC in manga reader
- Fixed: Fixed a bug where reading list dates couldn't be cleared out
- Fixed: Fixed an issue where create library wouldn't take into account advanced settings
- Fixed: Fixed an issue where selection of the first chapter of a series to pull series-level metadata could fail in cases where you had Volume 2 and Chapter 1, Volume 2 would be selected.
- Fixed: Fixed a bug where scan series wouldn't trigger word count analysis...
v0.7.2 - Reading Lists, CBL Support, OPDS Flattening and More!
v0.7.2 is finally here and it brings not only a ton of bugfixes, but also some really important additions for Comic collectors. The theme of this release is Stability and Reading Lists, but as you know, along the way new ideas spark.
Let's start with some big hitters:
CBL & Reading List Enhancements
Kavita now has support for Bulk CBL Import and has drastically cleaned up the reading list experience, esp if you have more than 100 chapters in a reading list. First of all, virtualization for reading lists, a range year to understand the years in which the reading list spans, all characters will be shown on reading list detail page, and some cleanup on the styling. Next is CBL import, which is a reading list format that allows easy sharing. Kavita can handle multiple at a time and uses a wizard to process each and every list, prompting you when there are issues to reduce having to delete the list and restart. If CBLs are something you haven't heard of, check out Diesel's lists here.
Epub Reader
The Epub reader got some love this release with Vertical reading support. If you're a fan of reading up and down, you now can! Thanks to @CKolle for taking this effort up, not only do we have Vertical reading support, the code around orienting and aligning images in the reader has been spruced up and should result in a much better experience all around.
Base URL Support
This has been a big ask since day one and we now have it. Thanks to @gmahomarf for helping me get it done and others for helping test it in many different situations. Please note that Base Url is not supported in Docker environments with a non-root user, due to permissions limitations. If this interests you, please raise a PR with a fix.
All in all, there is a ton of polish and performance improvements in this release. Next release will be some time off, I have something big prepared but it will take quite some time to get implemented and polished. I look forward to it landing as I'm sure everyone will enjoy this feature. I also want to give a shout out to the community for following through and raising a ton of issues. As we can all see, it has helped me close them out.
Note: We now have a themes repository. If you are maintaining your own or want to share it with others, please raise a PR for inclusion.
Please update KavitaEmail to latest if you are running your own version. Docker users will need to setup from scratch due to removal of Environment variables
NOTE: If covers don't show, do a hard refresh so new UI code is working
Added
- Added: Added the ability to import CBL files into Kavita via reading list page or side nav. Kavita uses a multi-step process to ensure you aren't wasting your time on the import. Kavita can handle multiple cbls being imported in one go.
- Added: Added noindex to prevent SEO from indexing user's sites.
- Added: (epub reader) Vertical reading mode support added to the web-based book reader. This feature is particularly useful for reading genres like Japanese light novels. (Thanks @CKolle)
- Added: Edit Reading Lists now allows selection of cover image from existing items
- Added: Updated Kavita's OPDS-PS implementation to v1.2 to align with upcoming Panels enhancements
- Added: Added a new Login role which allows you to log in. Admins can now disable accounts by removing the role from user accounts.
- Added: Series detail page will now show a progress bar under the series image to give a hint to how far completed the series is to being read.
- Added: New user setting to collapse series that have relationships in the library view. This means if you have Batman and Batman the Sequel linked, only Batman will show on library page.
- Added: (epub reader) If a page only contains a single image. It gets positioned to the center in column mode
- Added: (epub reader) Added a check for if the current page only contains a single image. Happens during loading as to not have the image pop in place.
- Added: Base Url support. This will not work if using Docker with non-root setup. (Thanks @gmahomarf )
- Added: Added ability to read from incognito from the main series detail button
- Added: Reading Lists can now have Starting Month/Year and Ending Month/Year. You can use the UI to set it, but during processing of reading list it will be recalculated and set if calculation output is valid. These fields are aimed at showing you a span of a reading list run.
- Added: CBL Import of upcoming fields (StartYear, StartMonth, EndYear, EndMonth) mapping to the fields above. When importing via CBL, the CBL will take precedence over any calculations. Will not stick if another item added/removed from the list afterwards.
- Added: New API which allows getting thumbnails (cover image size) for pages within a pdf or archive/image media
- Added: If CBL has a Summary tag, it will now set the summary in Kavita (this is a proposed enhancement to CBL format)
- Added: Added parsing support for Series Chapter 001 Volume 001
- Added: Added ability to override Kavita's XFrameOptions via appsetting.json XFrameOptions key. This is useful for Organizer setups without having to strip from the header.
- Added: Added rate limiting for a few APIs
- Added: There is now a donate button on the side nav for all users.
- Added: Added the ability to create reading lists from ComicInfo StoryArc and AlternativeSeries. The implementation matches Komga to ensure consistent experience for users. Comma-separated values are supported in StoryArc and AlternativeSeries and will build pairs for ordering.
- Added: Plugin/Authenticate will now return a refresh token with the payload
- Added: Added ability to emulate comic book with single renderer. This only shows on spread (wide) images
- Added: New API endpoint to allow scanning all libraries at once
- Added: All Login dtos now have the active KavitaVersion to make external apps able to handle what version of the API they are connecting with.
Changed
- Changed: Updated to .NET 7
- Changed: Enabled nullability analysis in the application. This lets developers catch more edge cases easier
- Changed: Prompt the user when they are about to delete multiple series via bulk actions
- Changed: When skipping over folders in a scan, inform the UI event widget
- Changed: Adjusted the folder watcher to turn off folder watching if too many restarts get triggered
- Changed: Don't scan .@_thumb directory on QNAP systems
- Changed: Some time displays in hours will now show days or minutes. This is mainly on the stats page to give an easier way to understand the data.
- Changed: When hovering over the jumpbar, it will now show how many series for that letter.
- Changed: User Management account now merges Pending users with other members. Users will still show if they are pending via a badge and different options will be present. This will allow admin's to change a pending user's roles and library access at any time. Side effect is legacy accounts that existed prior to email requirement can now be managed.
- Changed: After editing a series metadata, run cleanup code for tags, people, and genres to ensure unused entities are removed instead of waiting for a nightly job
- Changed: (epub reader) Previously the preserveAspectRatio got ignored due to lacking max-width. Meaning that whether an image's aspectRatio gets changed is decided by the book. Because of this, most cover image's aspect ratio would not be preserved. This is now not the case.
- Changed: When inviting a user, the email is attempted to send on a background thread to not block the UI for up to 30 seconds (
- Changed: Reading History for user now users average hour read rather than reading events to bring more meaningful data
- Changed: Many reports of numbers (like 2000 series) are now comma separated
- Changed: Reading list page will now show all characters from the underlying chapters
- Changed: Reading list detail page will now restrict drag-and-drop reordering if there are more than 100 items. In this case, virtualization will be used and the reorder numbers in Page Settings can be used instead.
- Changed: Updated a link on theme manager to point to the new github repo for themes
- Changed: Kavita will now cleanup reading lists with no items at night
- Changed: Don't allow nightly cleanup to run if we are currently running a media conversion (like webp conversion)
- Changed: Added back the online user indicator on manage users page
- Changed: Updated many inputs to be more friendly on mobile
- Changed: More aggressively lock to prevent race conditions when editing People, Genres, Tags in Scan loop.
- Changed: All widget events will now show the title (browser tooltip) to read the cutoff words
- Changed: Further flattened the OPDS structure so now after a series you have all the items then the acquire links. Max depth is 2 from a series (plus acquire link) (Thanks @therobbiedavis for driving this home)
- Changed: Optimized the Size property in OPDS acquire links to use pre-computed size to avoid an I/O operation
- Changed: Sped up Age Rating rendering on the UI
- Changed: All image access requires an ApiKey in the url
- Changed: Updated a ton of dependencies including PDF.js to 3.x branch
- Changed: Tightened up spacing on login page
- Changed: Disabled IpAddresses and Port controls on server settings for docker users
- Changed: OPDS queries all use pagination, instead of just some of them
- Changed: When testing email service, an actual email will send to the user when email service is custom (Requires KavitaEmail v0.1.15.0)
- Changed: Font Swapping enabled to improve first load
- Changed: When typing a series name, min, or max filter, press enter to apply metadata filters.
- Changed: Cleaned up the documentation around MaxCount and TotalCount in Series info
- Changed: Slig...
v0.7.1.4 Hotfix: Synology Fix
If you are on nightly, you can stay on your current nightly, you will not receive an update. If you are on stable and have been having issues updating to v0.7.1, use this version. From our Synology tester, this will fix your issues.
Fixed
- Fixed: You can no longer run the docker as non-root (Reverts functionality as it was breaking Synology installs)
v0.7.1 - Stats Hotfix
Well, I knew adding 73K lines of code in the last release would cause a few bumps in the release and it looks like I was right. A few users have pointed out some minor issues that escaped release testing and this hotfix closes those issues.
If anyone wants to help ensure these type of hotfixes aren't necessary, please join our Release Tester role in discord and help out in release testing. It's about a week of your time before release and drastically helps catch issues before they go out to our users.
Known Issues
- Synology users are having issues running their docker containers, likely due to PGID/PUID issues. If anyone is familiar with Synology, please comment on the open issue or jump in discord and engage a team member. There is a workaround in the issue.
Fixed
- Fixed: Fixed a bug where SignalR wasn't sending events to the UI (and broke Komf)
- Fixed: Advanced tab on Library settings was not working
- Fixed: Added timeouts on some regex parsing to prevent malicious filenames timeout attack
- Fixed: Some users in GMT+1 were having invalid utc dates, new migration to manually correct those.
- Fixed: Fixed an issue where convert covers to webp was saving an invalid path and made covers look like they didn't exist
v0.7 - Who doesn't like Stats?
Important
You and users MUST log out and log back in after updating for Kavita to function correctly!
v0.7 is finally here and boy is it big! When I started v0.7, I had planned for just a reader refresh and stats, but due to the 4 vacations I had during the development, so much more got added in. This is a massive update with many areas touched, tweaked, and added to, including a lot of bug fixes brought by our community. Let's start with the name of the release.
Stats:
Since the beginning of Kavita, I've always wanted rich metadata and cool stats to understand how much my users and I are reading, what's hot on the server, when is the most popular day for reading, etc. That's what the main feature of this release is about. Adding this cool contextual information into Kavita and presenting to not only the admin, but letting the users see their individual statistics. For example, I've learned since I started this project 2 years ago till this year, I've read 200K pages of manga. I hope you all enjoy the statistics and if you have any ideas, jump on our feature site and let me know.
Image Reader:
Last release I had already started a major cleanup of the image reader (or what I usually call the manga reader), but wasn't able to wrap it up and give it the polish needed before the release, so this release window, I polished until I thought I was looking at a mirror. My focus was not only on improvement on layout but also getting the double page reader down correct and that's what I did. I worked closely with a few members of the community (Thank you @hgourvest and @handy1928) to ensure the double reader works exactly as you'd expect and along the way, added a cool new effect to emulate a comic book page spine). I also added the ability to change pages with swipes, something users have requested. I still have some more items planned, but for now, the reader is solid.
Customization:
Everyone loves customization and so do I, which is why this release I made progress on an overarching set of features I want to add to Kavita. This customization added gives you the power to choose how content from libraries gets included or processed. With the new Library Settings, you can configure certain libraries to not show on any dashboards, in search results, or recommendations or a mix and match. In addition, you can allow or deny the auto creation of Collections (driven from SeriesGroup tag) and just to top it all off, add a custom image for the library icon, so it's easier to distinguish. I hope you enjoy the flexibility these enhancements bring and look forward to what I have in store in future releases.
Manga Manager:
I want to also give a big shout-out to @ThePromidius, the creator of our Tachiyomi plugin, who has built what I believe to be the best ComicInfo tagger around, Manga Manager. Over the past year, he has been putting a lot of time and effort into a rework of his tool and recently released the beta. It's insanely fast and has the potential to outshine all other tools out there. I encourage you to check it out. I have taken a role in his project to help him deliver on a combined vision.
Authentication:
Not so much as something new, more of an alert. All users must re-authenticate (log out then in again) for this release. I made some internal changes in the authentication tokens to allow for some optimizations in our API layer. Again, All users must re-authenticate after update.
Lastly, I want to shout out to some miscellaneous enhancements, like OPDS which received a touch up to include more metadata (authors, genres) in the feeds or to prepend reading order number in reading lists due to Chunky not respecting the spec. Kavita also now auto-creates Collections if SeriesGroup tag is filled out. If you're wondering what about reading lists, I got you covered (in another release). I worked up the code but didn't have time to polish it all out.
With all things said, I appreciate the community for coming out and helping with support and reporting issues and feature requests. Many feature requests were implemented in this release. Thank you to everyone that has reported issues. I encourage the community to speak up if they are facing issues so I can get them fixed.
Added
- Added: Added a new setting under Media to allow covers to be saved as WebP. This results in a x3 savings. There is no task to perform the conversion, just use Refresh Covers on the library.
- Added: Series Detail page now has a dedicated Want to Read button for toggling and also let's you quickly see this is in your want to read list.
- Added: Series Detail page will now show a tag badge showing unread chapters when there is reading progress on the Series Image.
- Added: When there is progress on a series, the continue point will now pretty print under the series cover image. This will only work with volumes and loose leaf chapters. Specials are not shown due to spacing issues.
- Added: Added the ability to turn off folder watching for individual libraries in new library settings Advanced tab.
- Added: Added the ability to turn off including a library's series on Dashboard page.
- Added: Added the ability to turn off including a library's series on Recommended page.
- Added: Added the ability to turn off including a library's series and any derived info in search results.
- Added: Added the ability to upload custom images for libraries (only visible in side nav). Customize to your hearts content!
- Added: Added release date on the reading list item, if it's set in the underlying chapter.
- Added: Added an Open API spec generator that gets saved with codebase. This enables external API reference
- Added: From library settings, admins can now kick off a forced series scan, which ignores last scan date and will act more like a first time scan. This is expensive, but useful if you need to run a full scan after Kavita has migrations.
- Added: New task called Analyze Files which is used to run a one time migration that scans all files and calculates extension and file size information about them for the statistics view.
- Added: Added many new visualizations for server-wide statistics: Total Series, Total Volumes, Total Files, Total Size, Total Genres/People, Top 5 release years, Most active users, Popular Libraries (by read events), Popular Series (by read events), Recently read series, Top Readers (with breakdown of Comics/Manga/Books reading hours and against time periods), Format breakdown and size, Publication Status breakdown, Reading History over time, and most popular reading day.
- Added: Added basic user stats: Total Pages Read, Time Spent Reading, Chapters Read, Last Active, Reading History
- Added: Added back old PDF to image rendering code just for Tachiyomi, so users can get maximum use from the application.
- Added: Added Genre and Authors to Series level OPDS feeds.
- Added: Added summary to Volume and Chapter feeds.
- Added: New API for getting a given chapter's pages' file dimensions
- Added: Added a Save preferences button to save a few preferences from the manga reader directly to user settings.
- Added: Double and Double (manga) now have a shadow effect to emulate a real comic book. You can enabled this via user settings under 'Emulate comic book'
- Added: Added percentage of a given library and average hours read per week to user stats
- Added: When there are multiple files for a chapter, show a count card on the series detail to help user understand duplicates exist.
- Added: Added Size throughout the UI and in the APIs for CDisplayEx integration
- Added: Ability to provide environment variables PUID and PGID which allow running Kavita as a non-root user in a Docker container. If you do not specify these variables, Kavita will run as root. If specified, user and group 'kavita' will be created in the container with the specified UID and GID if they don't already exist. Kavita will then run as that user. (Thank you @mikeymakesit for the contribution)
- Added: More aggressive pre-caching for next and previous chapters. This allows for less lag spikes when switching to another chapter in continuous reading mode on the second page on slower networks.
- Added: Manga reader now has swipe support. You can swipe left, right, up, and down. Swipe will trigger the appropriate page change based on reading direction and reading mode (up/down or left/right). If there is area to scroll, the reader will make sure you hit the end and require another swipe to trigger the page change.
- Added: Users can now click the Words Read count on user stats to view a year over year count
- Added: Added a new Yearly stat table for counting files over the years. This is not hooked up to the UI, but will be in a later release.
- Added: Added new statistics for analytics (Kavita Stats): users with emulate comic book enabled, percentage of libraries with folder watching enabled, percentage of libraries included in search/dashboard/recommended, total reading hours, is server storing cover images as webP.
- Added: New server setting for Host name. If the server sits behind a reverse proxy, this can be set in Host Name and host name will be used for link generation and accessibility checks (aka if the server can be reached from outside the network) will be skipped, thus an email will always send.
- Added: Added the ability to allow a library to generate Collections from SeriesGroup tag in ComicInfo.xml
- Added: New setting in Library settings which allows for Auto Collection generation to be turned off for a library.
- Added: Added a new JWT Claim to allow getting UserId throughout the codebase. All users will need to reauthenticate.
- Added: Added UTC Dates throughout the application. They are not exposed in API, but will come later with localization work. Fo...
v0.6.1 - Security Patches + Hotfix
I took a one week vacation after the v0.6.0 release and it seemed there were a few issues that cropped up, so here is the hotfix. This hotfix fixes high utilization that a few users have reported. If you were one of these users, after this hotfix you should be clear to turn on folder watching again. If you're experiencing issues, please drop by support again.
In addition, there were a few security vulnerabilities exposed via Huntr. As usual, the details will be disclosed after a few days. Also a few parsing changes made release broke grouping for light novels that were not tagged correctly. This hack was added back in to help users not have to re-tag thousands of files (but I do encourage it).
Lastly a small but annoying bug where when reading in the manga reader, going backwards or moving to the next chapter could cause the screen to not update the image but the page changed. This is now squashed for good.
Added
- Added: Added a jumpbar to bookmarks page
Changed
- Changed: Updated all non-authenticated APIs to return more generic messaging back to the user and log more detailed information to avoid any attack vectors.
- Changed: Log level defaults to Debug as it's no longer noisy
- Changed: Swapped out SQLite for Memory backstore for Hangfire
- Changed: Added DisableConcurrentExecution on ProcessChange to avoid duplication when multiple threads execute at once for Library Watching
- Changed: When parsing epubs, if there is a volume in the epub title, try to parse and group. This is beneficial for Light Novels which are generally tagged this way. Last release, we changed logic to prefer metadata, but most files are not properly tagged.
- Changed: When scanning files, exit earlier from parser when file is a cover image.
- Changed: When inviting or editing a user, when Admin role is selected, all other roles are disabled as they aren't applicable.
- Changed: When there are no collections, don't point the user to the wiki unless they are an admin
Fixed
- Fixed: Fixed the black background present when the e-reader's color theme was set to 'White'
- Fixed: Fixed security issue (https://huntr.dev/bounties/55cd91b3-1d94-4d34-8d7f-86660b41fd65/)
- Fixed: Fixed security issue (https://huntr.dev/bounties/bebd0cd6-18ec-469c-b6ca-19ffa9db0699/)
- Fixed: Fixed a bug where promoting a reading list would fail
- Fixed: Fixed a bug where bookmarks wouldn't load in the reader in the order they were saved
- Fixed: Fixed a bug where state variables weren't being updated correctly and pages could get stuck. This also fixes paging backwards not working
- Fixed: Fixed a bug where Hangfire could cause high CPU/RAM utilization for some users due to slower process change execution.
- Fixed: Fixed delete series sometimes not triggering on series detail page
- Fixed: Fixed some parsing logic for how we treat specials like Annual and Omnibus. This now handles more cases and fixes a few that broke last release.
- Fixed: Fixed a bug where Log Level Information wouldn't show proper log output
- Fixed: Fixed a case in ComicInfo fallback where and invalid ComicInfo location wasn't picked up
- Fixed: Fixed a typo in the toast notification for marking multiple items as unread and made capitalization consistent (Thanks @pssandhu )
Known Issue
- Double page renderer seems to be occasionally missing pages. I am working on addressing this for v0.7
v0.6.0 - Polish, Polish, Polish + Send To Support!
This release has been an interesting time. Originally a small release with a big impact (auto updating) has turned into a release just about polishing and battle testing the scan loop from last release. Rewriting the scan loop last release was a huge effort and despite being diligent with testing with our nightly testers, bugs still slipped through. I wanted to take a step back and get Kavita sorted out before moving forward with new features, but I couldn't leave you with just fixes, so I made it action packed instead. With that, let's get into what's in this release.
Let's start with some big asks since the initial release of Kavita--the ability to send files directly to users devices. This is something Calibre has that avid book readers on Kindle need. Over the past few releases, I've been laying the ground work for this and with v0.6, we finally get to use it and from what the nightly users express, it's awesome. Any user in Kavita can setup devices with an email, this could be your Kindle email, your personal email, or anything. Give it a name and from any epub or pdf, you can send the file or files to your device. Currently this is limited to epub and pdf as there are no readers that support cbz, etc. However, if you have use cases, reach out. In order to use this, you must run your own KavitaEmail service.
Speaking of email, you know what's annoying? Having to have an email when you sign up for Kavita. Even though Kavita doesn't validate your email or require you to put in a real email, users have still complained about it. In this release, I updated the flows to better reflect this. Invite user will still ask for one but make it known it can be anything (although if it's not a real email an invite email will not send). When users sign up or an admin sets up the account, the email field is optional. On top of all this, Kavita now has a new Profile tab in User Settings which allows a central place to update and see their profile information and add/change it.
From emails to profiles, another big ask was Kid accounts. Many users have large libraries and want to restrict some profiles to certain levels of content. This is a tricky one as not all file formats are the same. PDFs and Epubs don't have an Age Rating field like CB* files, which expose it via the ComicInfo standard. Luckily, Kavita can store this information for you. With that, you can now setup Age Restrictions on accounts and grant those accounts the ability to maintain their own rating or not. Age Restrictions restricts all content that is higher than the rating set. If there are Unknowns (which is the default state), Kavita let's you set whether that is allowed for said profile or not. This restriction is applied at the highest level. So if you have one issue that is Mature while account is on Teen, the whole series will be purged from the user, including any promoted reading lists or collections.
That's a lot of heavy hitters, but I have more to talk about. This one is my favorite, Folder Watching. Folder Watching was introduced last release as an experimental feature and after much battle testing and reworking the code, I've cracked the code and gotten it to a really stable place. I personally have been running it for the last month without issue. This essentially brings your content into your server without having to wait for nightly scans. Do note, it is not designed for moving massive amounts of content over a long period of time into your library. It will still work, but you might get some partial series you have to manually cleanup.
Lastly, I want to talk more about the polish that this release is all about. Not only did the scan loop get major polish, from the release notes you'll see so did the parser, reader bugs (like double page layout now works consistently), and many quality of life enhancements.
A few shout outs on features as well:
- We are finally done with Tachiyomi. We have a PR open into the main application and it's been slotted into a release by the Tachiyomi developers. Huge thanks to @ThePromidius (who recently joined our Kavita team after 6+ months of battling Kotlin in development of our extension) for taking on this effort and working with our users to get it polished out.
- The Kavita Tachiyomi Extension (the preview build) contains full progress tracking support and has been working perfectly for the past month.
- Kavita now has a Readarr connection hook, which can do what Folder Watching does, without having to have it enabled. If you have Folder Watching enabled, you do not need the hook. This will be available in Readarr once Readarr releases next version.
To wrap up, I want to call out to some issues that cropped up in v0.5.6. As mentioned in the opening, the code was tested a ton but things slipped through. After you update, you need to pay attention to your logs. Your logs will indicate corrupted volumes or series that you need to manually cleanup from Kavita. This is an unfortunate reality, but luckily doesn't require data loss.
If you've still read to this point, props to you. If you've been enjoying Kavita, please consider donating or becoming a supporter. It makes a huge difference for me to continue pouring thousands of hours into the project (not just coding but support). Thank you again to my current supporters and those whom have donated.
Added
- Added: New Role for allowing users to bookmark. Bookmarking can consume a considerable amount of resources on the host system, so a role needs to be introduced to restrict this action. By default, existing users will have this role off (admins excluded, they have all abilities).
- Added: Kavita is now using Tiered Compilation and Dynamic PGO. These are techniques by .NET to analyze the application as it runs and optimize on the fly. This just means Kavita over time will get faster without any extra work by me or you.
- Added: Users can now search for a series on Bookmarks page. No other filter is active.
- Added: Implemented Russian filename parsing for Manga and Comics
- Added: When in the manga reader, you can now double click to bookmark pages.
- Added: When a user reads the full series of anything that is Completed or Cancelled and exists on their Want to Read list, Kavita will now remove the item from said Want to Read list on a nightly basis. This can be triggered at any time from Tasks page.
- Added: Kavita can now filter against release year (min, max, or both). If only min, all series that have a release year of or greater than the min are returned. If only max, all series that have a release year or less than or equal will be returned. Lastly if both, any series that fits in that range is returned.
- Added: Kavita can now sort by release year.
- Added: Added a new setting to manage how many log files exists in terms of days, since Kavita uses splitting on days now.
- Added: Added new stats for tracking to help with some of the reader feature utilization for some upcoming redesign/polish work
- Added: User's can now setup devices for readers that cannot access Kavita via web, but can receive files via email.
- Added: User's can now send pdf and epub files to devices via the context menu. Users MUST have their own email service setup in order to do this.
- Added: Added -화, -회, -장 for volume parsing for Korean filenames (Thanks @DeltaLaboratory for handling this)
- Added: Added -회 for chapter parsing for Korean filenames (Thanks @DeltaLaboratory for handling this)
- Added: New validation added to Edit Series modal to ensure Name and SortName are required
- Added: Series cover selection will now show all volume images or all chapter images (if only chapters exist)
- Added: New user setting to disable transition effects (animations) in the app. Great for e-ink readers.
- Added: When browsing on screens with infinite scroll, the scroller will now try to resume to the approximate location (nearest jump key) when navigating back.
- Added: Added the ability to edit Release Year on the Series
- Added: Admins can now setup restricted profiles for their users (or users can restrict themselves). A restricted profile will restrict content that does not match their Age Restriction rating. For example, all content on the server that is Mature would be hidden from a user with a Age Restriction of Teen. Age restrictions do not apply to admin accounts.
- Added: A new role called 'Change Restriction' now exists to allow a user to change their own age restriction.
- Added: Added a new Series relation called Edition. (A generic relation with no Parent relation)
Changed
- Changed: Swapped out the default logger with Serilog, which enables more expressive logs and powerful Sinks
- Changed: Log file rolling is enabled by default and now uses a day by day format. The new format will be kavitayyyyMMdd.log.
- Changed: Logging levels now affect other types of loggers from libraries and are now handled by Kavita. So Debug can provide rich logs, while Information can keep the other loggers to Error to keep the logs clean. Loggers have been significantly cleaned up and Debug is safe to use without so much spam. Trace will now have that same spammy output.
- Changed: Removed the data connection for the database out of appsettings.json and hard coded it. This is a prerequisite for auto updating.
- Changed: Updated pdf viewer to 15.0.0 (pdf.js 2.6) which now supports east-asian fonts.
- Changed: Unified the star rating design in series detail to match metadata filter.
- Changed: Changed Normalization to not strip ! from the resulting string. This requires an expensive migration which will take time on first load of this version. This will allow users to have series that differ ...