Kavita

Kavita is a fast, feature rich, cross platform reading server. Built with the goal of being a full solution for all your reading needs. Setup your own server and share your reading collection with your friends and family.

GPL-3.0 License

Stars
5K
Committers
95

Bot releases are hidden (Show)

Kavita - v0.8.0 - Comic & Collection Overhaul and PDF Settings Finally! Latest Release

Published by majora2007 6 months ago

Have you ever thought to yourself that you'd like to switch the foundation of your house from slab to pier and beam? Well, that's essentially what I've done with this release, and not only that, I had to do it without a single picture falling off the walls. This release comprises a whopping 48K lines of code added and 5.5K removed throughout 400 files.

In order for me to achieve my vision of Kavita being the best software out there for reading, sometimes sacrifices have to be made. When I started building Kavita, I had never thought of what it would be today nor the part it would take in my life. It was simply a tool for me to consume and collect Manga since Ubooquity didn't have support for rich metadata. As users came along, so did the scope. Some features were added with limited knowledge, like comics, and that lack of knowledge in the beginning became a problem for heavy comic collectors. In order to build towards my vision of being the best, I had to rewrite large portions of how Kavita functions, work closely with the community, and deliver the best product I could. I want to first and foremost thank @DieselTech, who has been a key component in this. He has been pushing me relentlessly over the past year and has had a major hand in shaping the features, working with hardcore collectors from other servers (Mylar, Komga, and the CBL initiative).

Now, let's get into the meat and potatoes. What is new in this release?

Comic Overhaul

In order to support these hardcore users, Kavita needs to align with the tools already in the space, primarily Mylar and CBL. Mylar serves as the collection tool, aligning with Comic Vine for standards of naming and tagging, while CBL provides a rich repository of reading lists to make navigating comics easier. One of the most important differences between the old 'Comic' library and the new 'Comic Vine' library is that the Volume number is always the year and is used in the generation of the Series title. The new library type is strictly for those who abide by the rules laid out by Comic Vine and CBL. CBL works around these assumptions for linking up issues from many series into one reading list.

But that's not all. Comics are unique; they can have Issue Ω, which should be between Issues 8 and 9, or how about issue 18.HU? These are unique situations that didn't particularly go well with Kavita's number-based system. Through a feat of engineering, Kavita can now support these situations and, not only that, will soon allow the admins to actually change the sort order, a feature which, to my knowledge, no other software supports. This also means that Issue 0 (which can happen in Manga too) is now supported.

From the massive amount of testing, users have reported that this new library meets their needs perfectly. There are other small things, like Annual Series relationships, updates to CBL Import flows, etc., but the major points are above. This feature took 30K lines of code and 3 weeks of development for me to deliver to the testers (plus 2 weeks more of testing).

Collection Overhaul

While we are on the topic of reworking major code, let's talk about collections. When I first coded these, I made a really bad call and tied them with Series (so a series belongs to a collection), but as I started working on new collection-related features, I realized how bad of a call this was. I needed collections to be user-based, like want-to-read or reading lists. While this isn't really needed now, it will be with a future update.

So, yet again, I had to plan on how to migrate user data to the new collections without data loss and rework a ton of code. These new collections are user-based, and through a new Role, non-admins can even promote their own collections and share them with the server. While I was in there, I also made bulk promote/demote easier. Another easy 5K lines of code added and just over 1K removed.

Misc

Finally, the large, foundational features are over, and we can talk about some of the smaller things, like finally adding PDF settings a year after adding a PDF reader. Yikes. That's right, I finally got around to it and added PDF settings, along with also adding tap-to-paginate to the PDF reader.

Another area that has been receiving attention is Themes. Kavita saw an influx of new themes recently (and a few bug fixes too). Quite a few users are using these themes, and they look pretty good. Check them out on our Theme Repo. It's really easy to build your own, so if you have an interest, I highly encourage you to give it a go.

Another thing you might have noticed is Kavita+ enhancements. Quite a few small things were updated, but the most important is that Kavita+ will now auto-fetch data when you add new series and slowly work in the background to fetch external metadata. I have more planned around reporting on the data and managing bad matches against Kavita+, especially as I am still planning on basic metadata fetching, but I have found that this drastically improves load times on new series and makes the experience much better.

Lastly, I mentioned this last release, but Diesel has been hard at work on a complete revamp of the wiki. As of v0.8, we have moved over to the new wiki. Older installs wiki links will no longer work. Thanks again to @DieselTech for yet another monumental add to Kavita.

Important

  • Important! Once you update to this release there are manually steps needed! You MUST perform a forced library scan on all libraries to migrate properly to the new foundation. Failure to do so may result in data loss.

  • This is a massive update, all progress data will be exported on the first run to config/progress_export.csv. The migrations may take up to 10 minutes to migrate. Do not stop midway, you will break your db and need to restore from a backup.

  • Kavita+ users: As mentioned last release, you are expected to stay up to date - 2 releases. Old Kavita+ APIs will be shutdown shortly after v0.8. You can update to v0.7.14 as the minimum.

  • The default emailer was supposed to be turned off last release. I held it longer to give time. The emailer will be turned off after the v0.8 release.

  • This is a MASSIVE update, some data loss can be expected. I spent weeks trying to minimize any data loss and have provided an export. I apologize ahead of time if any occurs. If you are running into issues, do not hesitate to reach out to support on discord.

Added

  • Added: Added a new library type aimed at Light Novels. This will use card list layout by default (overriding user preferences) and is eligible for Kavita+ metadata/scrobbling. The regular book library no longer is Kavita+ eligible.
  • Added: Added a label on Library settings modal to help admins know which libraries are eligible for Kavita+ scrobbling/metadata pull.
  • Added: (Kavita+) Implemented a background prefetch task that will slowly refresh series from Kavita+ (reviews, recs, ratings).
  • Added: (Kavita+) Kavita will now prefetch data from Kavita+ on new series. This and the prefetch background task is limited to 50 series per 12 hours. Loading on-demand will still work as normal and is not restricted.
  • Added: Chapters now sort by SortOrder. SortOrder is generated from chapter number, but can be overridden (in a future update). This allows for custom sorting for issues that aren't purely numerical. SortOrder will handle cases like 19, 19.HU, 19.BD, 20 without any user intervention.
  • Added: You can now have Chapter 0, -1, etc.
  • Added: This fully supports chapters with non-numeric issue numbers, like Alpha, 19.HU, etc.
  • Added: Added a new library type: Comic Vine which is aimed at users of Mylar or have well tagged libraries following Comic Vine. This library works different and can support multiple folders with the same series parallel to library root.
  • Added: New Series Relationship of Annual.
  • Added: Imprints are now read from ComicInfo, will display on the UI and can be filtered.
  • Added: (Scanner) Added a new LowestFolderPath. This is the lowest path that contains all the series files and is used by ScanFolder/Series to avoid extra work.
  • Added: Added support for Locations and Teams, including the filtering for them
  • Added: There is a one-time progress export to config/progress_export.csv in case of data loss.
  • Added: Added Sort order to be visible on chapter detail drawer.
  • Added: (Kavita+) Added Mal Username/ClientId integration into Kavita for upcoming Kavita+ integrations.
  • Added: Added the ability to view (your) or all users (if admin) progress for that given chapter via the chapter detail drawer.
  • Added: (Kavita+) Added a pie chart to Server Stats that shows how many eligible series have metadata fetched from Kavita+. This pairs well with the background job that fills out your server over time. (This will be expanded upon in a future update)
  • Added: (Parser) Added parser support for Thai language volume and chapters (Thanks @gozilla-paradise)
  • Added: Finally added PDF Reader Settings
  • Added: (PDF Reader) Added tap to paginate to the pdf reader.
  • Added: Collections can now be created by non-admins
  • Added: Collections can now be promoted by non-admins (given they have the Promote role).
  • Added: Added bulk flows for Promotion and Deletion. If you select cards that are not owned by you, nothing will happen to those cards.
  • Added: OPDS feeds will now send description information when applicable for underlying volume/chapters.

Changed

  • Changed: (Kavita+) Removed Book library from Scrobbling/Metadata pull. Books being in Google Books was far and few in-between. This is a temporary solution until Hardcover support is implemented, which has good Book (and some Comic) support. If you have light novels, change to the LN library type. The scanner works the same.
  • Changed: Allow users to send files to their devices without having host name set for Email settings
  • Changed: (Theme) side-nav-color is now side-nav-text-color
  • Changed: (Theme) Added carousel-btn-color (for carousel buttons) and badge-text-color (for badge text)
  • Changed: When iOS users are trying to download files greater than 200MB, they will be given an additional warning that iOS may fail to download due to arbitrary limits each device has.
  • Changed: Specials will now order by SP marker numbers, else fallback to natural sort
  • Changed: Loose Leaf volumes are now encoded with the number -100000 instead of 0. This now means users can have a Volume 0 without issue.
  • Changed: Search will now search against a chapter range and will also fallback if there is no title (comicinfo title) to the range.
  • Changed: Clean up a log message when no files found, to ensure the admin checks the Library settings as well.
  • Changed: Image Library is now more aligned to reported usage
  • Changed: Changed chapter title format to Chapter {number} - {title} (assuming title exists), else Chapter {number}. For Books, nothing has changed.
  • Changed: Series Detail metadata area will collapse automatically on desktop if there are too many tags.
  • Changed: Comic/Comic Vine libraries will never show Storyline or Volumes (unless there are no issues/specials or multiple volumes exist)
  • Changed: Minor changes to how PDFs parse to make them a tad more smart. Nothing major, will do the overhaul later.
  • Changed: Trim strings from ComicInfo more aggressively to prevent weird parsing for things like Number.
  • Changed: Optimized a lot of the scanner and cleaned up the code deeply.
  • Changed: (Parser) Adjusted the special parsing for Annuals to account for 'Series Annual \d'
  • Changed: Dependency and security updates
  • Changed: Added a flag to the CBL import to use Comic Vine parsing for CBL Import (and set to true as all CBLs to my knowledge are using this new library).
  • Changed: Kavita now handles non-float numbers from CBL Imports (including special cases for comics)
  • Changed: (Kavita+) During library setting modal, changing type will now automatically change the Allow Scrobbling control, if the underlying library type is not Kavita+ applicable.
  • Changed: Normalize all paths during the scanner to ensure everything is always the same.
  • Changed: Added the csv files to the backup as those are used in manual migrations and likely good to have.
  • Changed: (Kavita+) When a rate limit error comes in after the pre-check, retry after the wait window instead of waiting for the next scrobble window.
  • Changed: Some epubs have incorrect metadata where the series is parsing with a volume. To help users, Kavita will override this on Light Novel library type to merge into the correct series.
  • Changed: Added a bit of a loader when deleting a lot of series with bulk actions.
  • Changed: Tweaked some wording about the changelog component to better indicate to nightly users that are not on the latest stable-based nightlies.
  • Changed: When using Force Scan on library settings, automatically close the modal.
  • Changed: (Scanner) Change pdf parser so if it's a library type book, we override chapters as chapter number is RARELY used and mainly results in false positives.
  • Changed: (Scanner) Fixed up the parsing so that book parser will coerced when the series in the metadata is wrong but there is a volume tag in said series, it will override.
  • Changed: Added a fallback to the series detail page to handle bad pdf parses (until the upcoming pdf parser rewrite comes) to avoid no cards showing.
  • Changed: Turned down the amount of debug logging from the library watcher and moved them to trace.
  • Changed: Added some code so that while the device is offline, the UI wont try to refresh JWT and likewise, when turned back online, a JWT Refresh will be called to hopefully extend the session.
  • Changed: Collections will show who created them under the card. For the time being, actionables (...) will show for all cards. This system will be getting an overhaul in the future. You still wont be able to interact with another user's collections.
  • Changed: Changed some of the format icons to some better looking icons
  • Changed: Added a filter in Edit Collections > Series tab to quickly find series to remove in large collections
  • Changed: Updated all email templates to have rel noopener noreferrer
  • Changed: When checking Kavita+ license, show a loading spinner first.
  • Changed: Reduced amount of Kavita+ license checks
  • Changed: Send to Device now works without Hostname set.
  • Changed: Switched all links over to the new wiki

Fixed

  • Fixed: Fixed a security bug from .NET (CVE-2024-21409)
  • Fixed: Fixed an issue around being able to delete series with external recommendations.
  • Fixed: Fixed up the delete series flow so that the boolean returned is used in the UI to pop the correct toaster.
  • Fixed: Fixed an oversight where emailers without authentication wouldn't work
  • Fixed: Fixed a bug with looping around to volume 1 at the end of a reading session when it shouldn't
  • Fixed: Fixed a case where an exception was thrown, scanner wasn't existing and instead invoked metadata service with bad entities
  • Fixed: Fixed some bad styling on Chapter metadata (drawer)
  • Fixed: Fixed a bad localization on edit reading list modal.
  • Fixed: Fixed another check around rescheduling Kavita+ tasks once a valid check came through. There was a lack of a checking mechanism and Kavita was doing more than needed.
  • Fixed: I believe the Foreign Key constraint issue is solved once and for all
  • Fixed: Fixed a rendering bug on CBL validation where the UI reports success but also a warning message appears
  • Fixed: Fixed a bug where Translators couldn't be updated in Edit Series Modal.
  • Fixed: Fixed a manual migration that had to run before the db was migrated and it didn't check if the db even existed yet.
  • Fixed: Scanner was clearing temp directory when it shouldn't have been, which could replace db migration backup.
  • Fixed: Added an argument exception when reording a list has a number that's less than 0, throw. This usually happens with bad metadata in ComicInfo's. Perhaps when there is a -1 chapter, it's using number instead of order.
  • Fixed: Stats and Tasks were missing localization
  • Fixed: Fixed an issue where the new downloading code would unzip epubs on volume/series download
  • Fixed: Fixed a bug where opening library settings from ... on library detail page wouldn't have library type.
  • Fixed: Fixed a bug where the UI wasn't properly sending the custom cron data to the backend.
  • Fixed: Fixed a bug where weblink's in a card detail drawer wasn't rendering the favicon
  • Fixed: Fixed an issue where progress bar css variable was being overridden by bootstrap
  • Fixed: Fixed a bug where selecting bulk mode on in customize side nav wouldn't allow you to ever enable order numbers again.
  • Fixed: (Parser) Fixed a parsing case for 'Cynthia The Mission - c000 - c006 (v06)'
  • Fixed: Fixed an issue where uploading a custom cover wasn't respecting Cover Size setting (Thanks Elry)
  • Fixed: Fixed a bug where an epub with an empty link element could break Kavita's epub reader (Thanks @YodaDaCoda)
  • Fixed: (Kavita+) Fixed External reviews not showing the Go to Review due to an API change.
  • Fixed: Fixed an issue where applying a custom theme was not working immediately or consistently
  • Fixed: Fixed bad messaging around test email failing
  • Fixed: Fixed an issue when changing email address, after validating, it wouldn't mark as confirmed.
  • Fixed: Panels wasn't properly showing images on Series due to a bug on their app (Thanks Dani)
  • Fixed: Panels wasn't properly syncing read status with Kavita (Thanks Dani)
  • Fixed: Avoid possible username enumeration in login or reset-password endpoints due to message translations (Thanks @YodaDaCoda)
  • Fixed: Ensure we cannot create multiple collections in bulk flow if we use ENTER Key
  • Fixed: When clicking Gmail/Outlook buttons on email form, the form wasn't allowing saving even though fields changed.
  • Fixed: (Panels) Panels has fixed a few bugs with Kavita. v3.4.1 (beta) and above should be used

Removed

  • Removed: Removed .kavitaignore file support as Library Exclude patterns are much easier to use and flexible enough.

API

  • NOTE CDisplayEx, Panels, Tachiyomi, and Komf have all been tested with v0.8. Aidoku and Kavya (Paperback) are in progress.
  • VolumeDto reverted the float on Number field back to int
  • ChapterDto Range will be the chapter number. If a special, will be the special name. MinNumber can always be checked for the special encoding
  • Encoding: Special (100000), Loose Leaf Volume (-100000).
  • stats/user/reading-history has a dto change, making ChapterNumber a float instead of a string.
  • Tachiyomi routes now use their own Dto to avoid having to break apis there.
  • Added SortOrder on the ChapterDto. This is a float that can be used to order the chapters within the Volume. By default, all APIs will already order by this.
  • SeriesMetadataDto (for updating series metadata) now has Teams, Locations, Imprints and their lock fields: teamLocked, locationLocked, imprintLocked.
  • Changed library/ -> library/libraries for getting all libraries
  • All Collection apis were updated, however most of the underlying DTO is the same.
  • SeriesMetadata DTO no longer has Collections or needs them for the POST (as they are no longer tied with this entity)
  • series/ (deprecated) no longer handles filtering for collections. Use v2 api.
Kavita - v0.7.14 - iOS Webtoon Fixes, Built-in Email, and a new Wiki!

Published by majora2007 8 months ago

A small on the surface, large under the hood release for everyone. This release first off fixes the webtoon reader for our iOS users. Many have validated and want to thank the community for helping me test and @thundernerd for doing some basic POC to help me drive it home. In addition to this, Want to Read had a critical bug in the architecture (that somehow slipped noticed for over a year now) where if one user adds a series to want to read, then another does, it will override the other. And lastly, for Kavita+ users, this is foundational release for the upcoming Basic Metadata feature. All data, like reviews, recommendations, and ratings are now stored in your DB. This leads to very quick response times and sets up the system for future data synchronization.

Another big feature in this release is KavitaEmail is no longer required for those that want to use email (and me hosting an email service for everyone is no more). All email settings are built into the application and this has allowed me to streamline how Kavita works around email. Before, it was a mess of having to call an external system, check if the system was accessible externally, etc. Now, you MUST setup a host name (reverse proxy domain) and the email settings to use any email functionality. Due to this, all the flows got polished and should be much more consistent for users.

Lastly, while it looks so small, it was over 3K lines of code, but volume numbers are now float-based, meaning if a volume is < 1, it will now properly show on book library series detail page. In addition to this, Omnibus (Volume 1-2) is now much better supported and Kavita+ will get Volume 2 when you read an Omnibus vs Volume 1 previously.

That wraps the v0.7.x series of releases. Next release series (v0.8.x) will be focusing mainly on the new Magazine library type, PDF parsing enhancements, and likely the new comic library.

New Wiki

Lastly I want to call out a massive thanks to @DieselTech who has been leading a redesign of our wiki. Safe to say, at least 100 hours have been poured into re-organizing and updating a ton of the content from our old wiki into a brand new system. It looks slick and should be much easier to understand and search against. While we aren't yet ready to roll out, be on the look out next release for the full release. For those that want a sneak peak, you can check it out here.

Old Email Service

As mentioned, this release contains built-in email functionality. The old emailer will remain on for 1 week after this release to give time for people to update. If you are stuck on an old version, please reach out so we can help understand why and get you updated.

Kavita+

Kavita+ is designed to work with the latest - 2 releases. If you are further than that out of date, it may no longer work appropriately. It is important to stay up to date.

Added

  • Added: Added limited parsing support for c01-c04. Normally, c01-04 is used.
  • Added: Admins can now write custom cron notation for Scans, Backup, and Cleanup tasks. Cleanup cannot be disabled as it is required for Kavita to function smoothly. Ideal to always leave at midnight.
  • Added: (Kavita+) New filter for Average Rating. This will allow you to filter on series that have an external average rating. Note: This only applies to series that have metadata pulled down from Kavita+.
  • Added: (Kavita+) Kavita will now store Kavita+ external ratings, reviews, and recommendations in your Database. This will increase performance and lays the foundation for the upcoming basic metadata from Kavita+. Data is refreshed ad-hoc after 2 weeks and cached in memory for 48 hours.
  • Added: (Kavita+) New button in Edit Series modal that allows the series to be invalidated (or removed from blocklist) and force refresh from Kavita+ on next series detail page view.
  • Added: (Kavita+) User's can now see error messages and a different icon on Scrobbling History when a series fails to scrobble.
  • Added: (Kavita+) Sort by Average Rating
  • Added: Added a new role that makes a user account read only. This means they cannot change anything themselves (Age Restriction, Email, Password, Forgot Password, API Key). This is not intended for users to use, but for the demo instance.
  • Added: Added a popup that will tell users that are over 3 releases behind to update.
  • Added: New setting in Email settings to let you use Customized Template files. If this is true, Kavita will pick templates from config/templates rather than internal storage. Fallback is available. You then own the onset to stay up to date with email template changes.
  • Added: Added back the ability to delete your own review
  • Added: Added the ability to delete collection tags via actionables on collection detail page.
  • Added: Added buttons that allows users to quickly autofill gmail/outlook email settings
  • Added: Added the changelog to the Admin System tab (in case users don't see it in the announcements page).

Changed

  • Changed: (Kavita+) Changed how Series Detail api works to drastically reduce memory needs
  • Changed: (Kavita+) Removed Bust Kavita+ cache button from Admin -> Tasks screen as it's no longer needed.
  • Changed: (Kavita+) Series that don't match against Kavita+ will now be stored in a table and not be retried again.
  • Changed: (Kavita+) When scrobbling, check if a series is blacklisted or not before trying. When an unknown series comes back, add it to the blacklist (so we don't waste time trying when it will never match)
  • Changed: Updated system tab with a link to localization and new feature request site
  • Changed: Massive refactor to change how Volume numbers are represented within Kavita to support volumes that are < 1 on the UI. This means 0.5 books will now work going forward.
  • Changed: Lots of autocomplete hints added to help password managers and browsers autofill login/registration/passwords.
  • Changed: Adjusted OPDS-PS lastReadDate to adhere to ISO 8061 as per the spec and what Panels expects for proper sync.
  • Changed: Supressed image requests on the logs as they are quite noisy
  • Changed: Hostname setting is in general admin settings as well as email, as it's not 100% tied to email functionality
  • Changed: Kavita will now confirm before you delete a device
  • Changed: Email is now baked into Kavita. If email is not setup then all flows will now just work. The extra security measures will only work with email being setup (and HostName set). Kavita will no longer try to identify if the server is accessible externally. You will have to set HostName and setup the emailer going forward.
  • Changed: Series detail title (series title) now shows a loading indicator showcasing all the important apis that are loading
  • Changed: If Kavita+ license check throws an exception, just assume license is invalid and let the scheduled task check again (or the user manually)
  • Changed: Changelog now shows if you're on a nightly and which stable it's based off.
  • Changed: Split the main email template into base.html and fixed some bad closing tags. This should make customizing email templates easier.
  • Changed: Removed the up/down arrow keys on webtoon reader moving full pages. Use up/down for scroll and space for a bit at a time.
  • Changed: Updated the Kavita templates to be more modern (in terms of the code) and easier to customize.

Fixed

  • Fixed: Fixed UI not being able to render search for non-admin users
  • Fixed: Remove from On Deck wasn't refreshing the dashboard
  • Fixed: Fixed up the display and logic around when there is a series collision, to help the user understand more
  • Fixed: Fixed a bug where the UI filter could send out of date information to the backend which threw an error.
  • Fixed: (Kavita+) Fixed a bug where external reviews would show as local
  • Fixed: Fixed webtoon reader being unusable on iOS (Thanks @thundernerd for the help)
  • Fixed: Series detail page was making a ton of api calls that weren't needed.
  • Fixed: Fixed a bug where scrobbling tab could duplicate
  • Fixed: Fixed a bunch of warnings about ordering and take with search queries
  • Fixed: Want to Read had a critical issue where a user could undo your want to read.
  • Fixed: Fixed bulk select of chapters leaving the last one off.
  • Fixed: On non-authenticated flows, the nav bar will no longer flash on refresh.
  • Fixed: Fixed inability to right click highlighted text in the book reader
  • Fixed: Fixed reading activity graphic not taking the full width like it should
  • Fixed: Fixed some spacing on the Continue/Read button on reading list page
  • Fixed: Fixed an issue where download indicators on cards would should on different series
  • Fixed: Don't have validations on the login screen
  • Fixed: Support for the 'pageNumber' parameter in OPDS API smart-filter/{Id}. (Thanks @charles7668 )
  • Fixed: Fixed and polished a lot of the email flows.
  • Fixed: Fixed a bug where send to device didn't properly send the correct end event
  • Fixed: LSIO dockers weren't properly recognized as Docker, Kavita now checks for LSIO_FIRST_PARTY environment variable
  • Fixed: Fixed an issue with // being generated for some invite links (
  • Fixed: Fixed an issue where a new library could render as blank in the UI
  • Fixed: Fixed an issue when creating a new library, that new library wouldn't be included in folder watching
  • Fixed: Fixed a bad encoding of dates for lastReadDate on OPDS-PS streams. Panels has already updated implemenation to help progress sync work more smoothly.
  • Fixed: Fixed a bug where non Kavita+ users wouldn't see reviews.
  • Fixed: Handled a rare case where a cover image wouldn't exist when creating a merged image for a reading list/collection.
  • Fixed: Fixed a bad comparison on code that pushes update notification users to admins.
  • Fixed: Fixed an issue where continue point for a totally unread series would start on the special and not chapter 1.
  • Fixed: Fixed an issue in webtoon reader where it would load the next chapter and be all black.

API

  • Volume Number field is deprecated in favor of MinNumber and MaxNumber (if the volume is a range). You can switch to MinNumber and ignore MaxNumber. (Volume Number will not be removed for at least 6 months to give time for apps to update)
Kavita - v0.7.13 - Downloading Improvments

Published by majora2007 9 months ago

A quick and small update for you all with a focus on Kavita+ and a regression that appeared from NetVips, which is responsible for generating cover images, causing black and white covers.

A word to all Kavita+ users, many of you have user's with AniList tokens that have expired. Your users need to go to User settings > Account and generate a new one to continue scrobbling. Also don't forget to register your discord user id and gain access to the exclusive channels. We have been sharing some of the progress on the big items and I would love more feedback.

We have over 10K active installs on old versions. If you're running Kavita, please update! You're missing out on the good stuff.

Make sure you know that the docker repo has CHANGED.
New repo here: https://hub.docker.com/r/jvmilazz0/kavita - You just need to switch your image to jvmilazz0/kavita:latest

If you are on 0.7.6+ you can update directly to 0.7.13 otherwise you need to update incrementally to prevent data loss (v0.5.6 > v0.7.1.4 > v0.7.3.1 > v0.7.6 > v0.7.13)

Added

  • Added: Added the ability to delete a library from side nav menu
  • Added: (Kavita+) Kavita now alerts the user on visiting their homepage that their AniList token needs rotating to continue scrobbling

Changed

  • Changed: (Kavita+) Kavita will now clear out existing, non-processed scrobbling events when a Series is put on hold.
  • Changed: Lots of dependency updates
  • Changed: Downloading a Volume (consisting of multiple chapter archives) or a Full Series will not auto extract and re-zip for you.
  • Changed: Enhanced the messaging around events widget for downloading/preparing a download.
  • Changed: Min length for a user review is now only 5 characters
  • Changed: Downloads will download as cbz
  • Changed: Under User settings > Account tab, Email and AniList token will now inform user if the email is not validated or if AniList token needs to be regenerated (as they expire every few months)
  • Changed: (Kavita+) Kavita will quit faster during scrobbling events whenever rate limit is hit or token is expired.
  • Changed: (Kavita+) Switched Kavita to use a new dedicated API to allow data to load on the screen faster and all at once leading to less page shift.
  • Changed: (Kavita+) If a license is still on disk, but the subscription is not active, Kavita will not schedule Kavita+ tasks at all.
  • Changed: Streamlined some code around downloading for upcoming enhancements
  • Changed: Updated dependencies, including NetVips for some regressions around cover generation.
  • Changed: Major improvement to messaging when a series collides with another series in a parallel folder to library root. Explicitly give more information.
  • Changed: Localization files now have cache busting to help on new releases not reflecting all keys
  • Changed: Removed XFrameOptions and replaced with AllowIFraming as true/false. This will control multiple headers for Organizer
  • Changed: Shortened the time in which Kavita will check for an update an inform user. Originally 5-6 hours, now 1-2. We have over 10k users on old installs that haven't updated.

Fixed

  • Fixed: On non-authenticated flows, the nav bar will no longer flash on refresh.
  • Fixed: Fixed inablity to right click highlighted text in the book reader
  • Fixed: Fixed reading activity graphic not taking the full width like it should
  • Fixed: Fixed some spacing on the Continue/Read button on reading list page
  • Fixed: Fixed an issue where download indicators on cards would should on different series
  • Fixed: Don't have validations on the login screen
  • Fixed: Fixed More in Genre not using a localized string for title
  • Fixed: When a series updates to completed and there was a next estimated chapter card, make sure it gets cleared.
  • Fixed: Fixed bookmarks having + in the filename when not needed
  • Fixed: Fixed bookmarks not showing the download indicator
  • Fixed: Fixed bookmarks not showing page count in card
  • Fixed: Fixed a bad localization string for chapter actions from within the card detail drawer
  • Fixed: Restore PDF layout menu (Thanks @tjarls)
  • Fixed: Fixed an issue where tab could flash on user preferences due to some delay waiting for a license check.
  • Fixed: Ensure only admins can see files when searching
  • Fixed: Fixed a bug where Edit Series Modal made it look like the language tag was set, but it wasn't
Kavita - v0.7.12 - Happy New Year

Published by majora2007 10 months ago

Happy New Year! A new year and a new set of plans for the year. I wanted to get this first release out quickly so I can share my plans as I'm bursting with excitement. The release is pretty small and mainly focused on bugs I found during my holiday. With that out of the way, let's talk about Kavita this year.

Process Change

First off, I will be changing how feature requests are handled. Going forward, Kavita will solely use Github Discussions for feature requests. Normal support will be done still via Issues and Discord and bugs of course via Issues. I tried many different things over the last 3 years. Given the scope of the application, I need something a bit more robust. The current feature site, while is nice, doesn't send alerts to users, leaving me without a means to communicate when I'm actually ready to start a feature. Discord is just too chaotic and we lack visibility. All feature requests over 10 votes have been migrated over to Discussions already. Please go visit and engage so we can drive some of these home.

Next, let's talk about shaping features. Once a feature is on discussions and I agree, I will be taking this feature to my Kavita+ discord users to help shape the feature into the final solution. I usually rely on a few users for advice, but going forward, Kavita+ users (which many would consider power users) will have a strong say in shaping features going forward. Feedback is always welcome from non-Kavita+ users, but I want to utilize power users to drive features going forward. You can go to Kavita+ tab to link your Discord User Id with your Kavita+ license, which will grant you access to the hidden channels.

Lastly, the subreddit will be shutdown this year. I no longer use Reddit and unfortunately have to keep it as the subreddit needs questions answered. I hope you all can respect my decision and can migrate to discord for future discussions/support.

Website/Wiki

The website is drastically out of date and quite bad. Originally I copied it from Lidarr, which I was one of the original developers, and meant to update it to a new look and feel, but never got around to it. This is finally the year to take action. A new design and stack has already been chosen and @therobbiedavis is taking lead on driving the effort.

In addition to the new website, I will be creating a blog. I need a centralized place to post updates that may not be tied to a release (like this post). The new website will host the blog and I will post releases there as well.

The wiki is also in need of some love. It's quite difficult keeping it up to date myself. @DieselTech and @ThePromidius have helped a ton in that regard to updating, but we are in need of a deep redesign of the information and a new technology to allow better searching. We are investigating new software and are planning a complete revamp over this year. If anyone is knowledgeable about Kavita and wants to contribute, please reach out in discord.

The Features

Kavita+

I have a few key features for Kavita+ that I want to test and if successful, deliver to you all. The first up is Metadata. Komf is a great tool that already exists, but some users want something a bit simpler and that is where Kavita+ comes in. When I first started Kavita, I always had the goal of metadata integration but soon I learned how disjointed everything is and it seemed like adding it would become a full time job instead of letting me build out Kavita. As Kavita+ already has metadata from AniList, I see an opportunity to trial metadata integration.

At the end of 2023, Robbie mentioned to me Hardcover, a potential integration point for Kavita+ that has similar features as AniList -- reviews, ratings, scrobblings, and metadata for books (and some limited comics). After speaking with their development team, this seems feasible to build out. I will be doing a deep dive later this year to bring these features into Kavita+. This also means if metadata support is built out, it will benefit from Hardcover.

Lastly, as mentioned above, Kavita+ users will become critical to shaping and expanding on community ideas once accepted. Link your discord user id via Kavita and you will be granted access into the hidden channels to participate in defining the scope of an idea and provide feedback post implementation before it ships to stable users.

PDF

PDF as many of you know has always been Kavita's weakest point. PDFs have no tools existing for metadata, have the worst and most inconsistent naming patterns out there and overall have just not been a good fit within Kavita. I want to change that this year. First off I want to polish the reader. I've been using a reader that doesn't have many hooks nor does it have the ability to save the reading preferences. I had originally opened an issue for information on how people use Kavita, but the comments were underwhelming. I will be looking to my Kavita+ users to help shape this feature and deliver a good experience.

Many users also collect magazines and I think it's high time a separate library type with different parsing is built out. Like I did with the image library last year, I will be adding a new library type explicitly for Magazines with a limited set of metadata and some UI differences. PDF parsing overall will be updated to be more robust and work better overall.

Comics

Comics are quite complicated and work differently than I had thought when users asked me many years to add comic support. This year I will be trialing a new library type that mimics ComicVine's format, which is the standard for Mylar and comics in general. As is the theme, my Kavita+ users, including @DieselTech will be helping me drive the end solution.

Kobo Sync

The last major feature is Kobo sync. I bought a Kobo and am excited to reverse engineer the protocol to allow native sync with Kavita, much like calibre-web has. Originally this was planned as a Kavita+ feature, but after looking more into it, Kavita can service it without problem.

There are more items on my list as well, but let's leave a bit to surprise. I'm sure everyone can tell these are huge items with that will take tons of time. I'm really excited for this year and what I can achieve.

Remember to use the new Docker Central Repo!

Added

  • Added: (Kavita+) Added the ability to view the provider of a recommendation on the card itself and in the preview drawer.
  • Added: (Kavita+) Added the ability to reset your Kavita+ license key without having to reach out to me.
  • Added: (Kavita+) Added the ability to add your Discord UserId during Kavita+ license registration which will grant access to hidden channels for feature curtailing.

Changed

  • Changed: When opening up an external series review, show the source of the review.
  • Changed: Streamlined the design slightly for a user's personal review
  • Changed: There is now inline form validation on the User Review Modal
  • Changed: Removed the tagline from user/external reviews.
  • Changed: (Scanner) When a series has a single special and a total count of 1 or less, assume it's completed
  • Changed: Lots of love around the messaging when interacting with users that do not use real emails.
  • Changed: Enhanced the messaging around users without valid emails interacting with change email flow.
  • Changed: Validation messaging added on change username flow, including showing the valid characters.
  • Changed: Don't log apikey in logs
  • Changed: Updated the donate link to point to a wiki explaining the donation options and that Kavita+ is the only way to remove the donate button.

Fixed

  • Fixed: Fixed a bug where user reviews wouldn't be rendered on the UI if they didn't have a tagline, even though it's optional.
  • Fixed: Ensure my own review orders in front of other local user reviews
  • Fixed: When a user resets the API key, tell connected clients to refresh their account details
  • Fixed: Moved bulk operations bar back to the top of the page where it belongs on series detail
  • Fixed: When using back on side nav after having a filter applied, clear the filter.
  • Fixed: Cleaned up the error handling around Kavita+ registering of a license.
  • Fixed: Fix the issue of an extra space appearing after the end of the series detail page. (Thanks @charles7668 )
  • Fixed: Fixed a bug with email link generation when using a base url, where too many characters could be trimmed (Thanks @charles7668 )
  • Fixed: Change username wouldn't update the correct field which was used in login flow
  • Fixed: Fixed a bug where when filtering was disabled (reading list page), the jumpbar also got disabled.
  • Fixed: Fixed a bug where library watching was trying to be turned on before we had saved the new value from server settings.
  • Fixed: Fixed a bug where the check email button success message was missing a space before the version number.
  • Fixed: Fixed a delay in the UI after a bookmark is created/deleted (Thanks @charles7668 )
  • Fixed: Fixed webtoon mode not allowing bookmarking (Thanks @charles7668 )
  • Fixed: Fixed a config issue where not all of Weblate's language codes would show up

Removed

  • Removed: (Kavita+) Removed the ability to scrobble reviews as the conditions are strict and doesn't make much sense to do it from Kavita.
Kavita - v0.7.11.2 - Hotfix 2

Published by majora2007 10 months ago

Unfortunately a few more bugs surfaced after the last hotfix, one being a problem with extracting weblink id's for Kavita+ matching along with an annoying bug with side nav being wiped out for fresh install admins. This is the last release for the year.

Remember to use the new Docker Central Repo! Updates are not going to the old one.

Changed

  • Changed: Backups now show the version of Kavita in the filename
  • Changed: Moved some cleanup tasks within another task to ensure everything is processed at the same time.
  • Changed: Changed the readme to point to the correct type of projects.
  • Changed: (Kavita+) When sending requests to Kavita+, MangaDex Ids will be sent as well to prepare for a potential enhancement next year.

Fixed

  • Fixed: Fixed unneeded slowness in the image api as some debug code got left in there
  • Fixed: Fixed invalid date showing on tasks screen
  • Fixed: Fixed a long standing parser bug where series would parse as Love Hina Vol. 30 Chapter 22 when the file was Love Hina Vol. 30 Chapter 22 - Vol 30 Omakes
  • Fixed: (Kavita+) Fixed a bug where Kavita+ wasn't being sent the ids from Weblinks
  • Fixed: Fixed a loader showing on the webtoon reader when it shouldn't have
  • Fixed: Fixed a critical issue where fresh installs that invite a user have their own admin account's side nav and dashboard streams wiped out
  • Fixed: Fixed a bug where Smart filters would always evaluate to descending sort
  • Fixed: Fixed a bug where some progress bars wouldn't report series progress correctly

Known Issue

  • Some users on iOS are reporting issues with the webtoon reader. I spent a week working with one user but unfortunately unable to reproduce. I will look into buying an iOS device next year.
Kavita - v0.7.11.1 - Hotfix

Published by majora2007 11 months ago

An unfortunate bug slipped in last minute with the release which would cause LastModified fields to be updated at night when a cleanup task ran to cap progress to 100% (in cases where a user reads 10 pages, swaps the file for one with only 8 pages).

This hotfix will fix that skewing, however, it is likely the task has already ran. You can restore your DB backup from prior to updating (Dec 3rd).

I'm sorry about the data loss.

Fixed

  • Fixed: Fixed a critical bug where the cleanup task would break ordering of progress events. This would cause your On Deck to skew.
Kavita - v0.7.11 - 3 Years of Development

Published by majora2007 11 months ago

Warning: There is a bug identified that causes minor data skewing. An update will be published soon (before 8th) with the hotfix. If you have updated, copy one of your backups from config/backups for the day of the update and restore the DB.

12/5 - Assets have been swapped

With this release, I've hit 3 years of developing Kavita. Originally starting out after using Ubooquity and feeling limited by the lack of metadata and other solutions not aligning with my sense of UX, I started this project as a personal project to not only have a simple reader and organizer like Plex, but also learn .NET. Fast forward to now and Kavita has grown to be a name brand product and my vision has drastically expanded from a simple self project to becoming the Plex of the reading world. After 3 years of building this project solo (with some help from a few users here and there), I would think it would be nearly complete, yet I find myself with more work than ever as the ideas keep flowing.

Before we jump into this release, let's take a look back at some of the major features I've released this year:

  • User and Server Stats (160 hours)
  • Double Page reader (100 hours)
  • CBL & Reading List Improvements (40 hours)
  • Vertical Reading support in Epub reader
  • Base URL Support
  • WebP and AVIF support
  • Kavita+ (and the review overhaul that went along with it) (600+ hours)
  • Dynamic covers for collections and reading lists (3 hours)
  • Personal Bookmarks in the Epub reader (12 hours)
  • Full app localization (80 hours)
  • A complete filtering overhaul with deep customization on how you filter (300 hours)
  • Smart Filters and customization of your side nav and Dashboard with those streams (300 hours)

This year has been huge in terms of delivering features to the users and also the transformation the underlying codebase has undergone to support these features. Overall, I've delivered 141 new features, 301 changes, and 277 fixes. It has been a tremendous year indeed and much appreciation needs to go to @DieselTech and @scare376 who are basically the only nightly testers to test releases before it hits stable and provide a ton of support in the discord.

I'm looking forward to next year where I will finally get to work on some much needed features, like a complete PDF overhaul, kobo sync support, the start of the mobile app, and some really cool Kavita+ ideas that I've been discussing in the discord (join if you want to give your opinion).

With that said, this last release I had to take a step back and focus on the polish. There were a few performance issues and styling issues that were starting to nag me and after delivering such a huge update, I needed something a bit easier to relax with. This release is focused on polishing the application and I think this first pass brings a lot of nice smoothing to the edges in the app. I have more planned that I will sprinkle in next year.

First up is the .kavitaignore, which is a file you can place within any directory and apply glob syntax patterns which will exclude files and folders. While this is really powerful, it is an advanced feature that many don't use and requires updating your filesystem. I took a hard look, opened an issue and collected feedback from a few users and decided, let's bubble up this feature to the UI. .kavitaignore will be removed next year in the v0.8.x series of releases and instead, admins can now use the File Type switches and the Exclude Patterns in the Library Settings modal. I believe this will lead to higher adoption.

Next is a minor feature that has huge feel--image loading. I overhauled the image loading code to be much smoother. Images fade in and the lazy loading is much more performant. You should immediately notice the difference. Along with this image loading, a lot of the readers got bugfixes and attention to close out some of the bugs that were reported.

284079184-1468a1ad-66ab-48c6-a7dd-a9f8a6fbe696

Lastly, let's talk about Smart Filters. As we all know, I had to do a few hotfixes due to some code around the smart filters and unfortunately, there were still more bugs in the system. This release should have all the bugs worked out. The testers and I really ensured it's working well. I wrote a migration to try and reduce data loss, but you might find some filters are broken. This is the cost of writing over 10K lines of new code around one feature and only 2 users helping with testing (Seriously, we need help, please join our nightly testing channel and help out).

Aside from the encoding issues, I realized that not all Smart filters need to be binded to the side nav or dashboard. I ended up building quite a few utility filters to identify series that have missing metadata, series that I started reading but forgot about, etc. With this release, in the user settings dropdown (top right of screen), you can now view all your Smart Filters and load them quickly.

One last thing I want to call out for those that read all the changes. I did a ton of polishing on the Publication Status code for a series to make it smarter than before. Books with just one book or series that are just a single special will mark as Completed. Kavita will fallback much better for Series that have a total Count in how it matches against Volumes or Chapters. These will need a force scan to pickup, but I think overall, leads to a much better experience.

Added

  • Added: You can now see your total progress in the series from within the manga/image reader.
  • Added: Added a Smart Filters page so you can see all your filters and click to load them. The new page is accessed from your user settings (top right dropdown on nav). The smart filter will show red if the filter was not able to be migrated and needs to be recreated by you.
  • Added: New Library Type for Image. This is a placeholder while I gather feedback to avoid a bug in non-image types. If you are a primary user of loose leaf image series, please try this out with a test library. This library type may be removed in the future without a data migration. This is exclusively here to gather feedback after solutioning Loose leaf image issues from the open discussion.
  • Added: Epub's marc role of creator now maps to writer
  • Added: Library Settings now has File types setting which allows you to turn on/off different types of file types from the scanner.
  • Added: Library Settings now has an exclude patterns control which allows you to ignore folders or file patterns.
  • Added: Added the ability to search for bookmarked series and open up the bookmark reader directly (this is image based bookmarks)
  • Added: Added a nightly task (cleanup task) that will ensure all user's progress on a chapter is at max the chapter's pages, in the case it was replaced with one that has less pages.

Changed

  • Changed: All filtering encode/decode code is now purely in the backend. There is no noticeable differences when interacting with the filter. This will avoid a lot of headache with the filtering system.
  • Changed: All Series page will now render out the title of the smart filter if it's set instead of All Series.
  • Changed: Manage users page in admin dashboard has a new look and feel
  • Changed: Added a fade in and changed the way Kavita lazy loads images for a much better experience (large improvement on all series page as well)
  • Changed: Icon buttons will now longer show an active state when focused
  • Changed: Replaced the underlying library for Reading Day breakdown chart
  • Changed: On Desktop, by default all series metadata will show (for series metadata). I'm looking for feedback from users.
  • Changed: Series detail metadata (summary and tags) will now be expanded to a limit by default on desktop. I'm looking for feedback from users.
  • Changed: Metadata filter now animates as it expands/collapses
  • Changed: Optimized dashboard page to allow better stream loading so there is less jank
  • Changed: Migrated to using a lighter way of loading lazy loaded modules
  • Changed: Updated some logs so we can avoid a potential log injection
  • Changed: Improved the webtoon reader to better find where you are after quickly scrolling.
  • Changed: Next estimated chapter will not show the time anymore
  • Changed: Card titles are now center aligned by default
  • Changed: On cards, don't show the progress bar unless there is at least one page read
  • Changed: Cover chooser no longer has an apply button. Upon adding or selecting a cover, it will instantly take effect.
  • Changed: Made the jump bar transition instant which feels much better with the new image loading.
  • Changed: Updated Angular to v17
  • Changed: Next estimated chapter now looks much better
  • Changed: Changed how loose-leaf images are parsed within Kavita to work much better and fallback to more natural grouping. They will now grab the series name from the folder name, use any in-between folders for extracting volume/chapter numbers and if none found, treat the image as a special. (Thank you to users that commented on the discussion issue)
  • Changed: Next Estimated Chapter title is now shorthand and localized, in case your locale doesn't use ~ or it doesn't go before the date
  • Changed: User settings tabs now defer load, meaning a probably very slight speed increase on slower networks
  • Changed: Spruced up the Image Parser to handle more volume and chapter parsing from filenames when it's needed.
  • Changed: .kavitaignore files have been deprecated and will log a warning to the logs whenever one is found. They will currently still function but be removed in the v0.8 release.
  • Changed: On smaller viewports, modals will open in fullscreen.
  • Changed: Next Chapter is now Upcoming to better indicate what the feature does
  • Changed: epub reader now has a close book within the settings itself
  • Changed: Major performance enhancements done to the update series metadata API which should help when Komf hammers the API when Kavita adds a large amount of new series
  • Changed: (Scanner) If a series has a total count of 1 and there is only a special, consider the publication status completed (good for omnibus releases).
  • Changed: On smaller viewports, the customize dashboard/sidenav screen has drag'n'drop disabled.
  • Changed: Improved some image loading code in the Manga reader to help with slow loading images causing the reader to pause or show a black page. This is not fully complete, just a bit better.
  • Changed: Series relations in the dropdown are now alphabetically sorted

Fixed

  • Fixed: (Kavita+) Want to read wasn't scrobbling to AniList
  • Fixed: Fixed a bug where bookmarks page wasn't actually getting the series back from the API.
  • Fixed: Fixed bad encodings with smart filters across UI/Backend
  • Fixed: Fixed a bug on calculating average reading hours per week. Thanks @duplaja for the help on the math.
  • Fixed: Fixed pagination not working consistently in scroll mode due to some changes a few releases ago in Epub reader
  • Fixed: Fixed a bug that when you had the line overlay in epub reader, when you hit escape it closed the book instead of first closing the overlay.
  • Fixed: Fixed a bug where directory picker was not listing when no path passed
  • Fixed: Fixed a bug where Kavita was too aggressive to complete a series. It is back to explicitly needing to match total count.
  • Fixed: Fixed a bug where publication status was getting set to Ended when it shouldn't. Ended should only be set when there is at least a Count within any chapter.
  • Fixed: Lots of localization areas were updated with missing keys
  • Fixed: Fixed a long standing, difficult bug where on docker, when adding a book to an existing series, the series read time could get set to < 1 hour.
  • Fixed: Fixed book-reader skipping the end of chapters in 2 column mode (Thank you @Hobogrammer)
  • Fixed: Fixed a bug in nightly where clicking on menu/actionbar could trigger pagination in the epub reader
  • Fixed: Fixed an edge case where the filter didn't have the correct comparison when switching from a multi-select to a single string type.
  • Fixed: Fixed a database foreign constraint issue (in most cases, this is fixed. A few edge cases still exist). This fix comes at the cost of the first scan being 50% slower and subsequent scans slightly slower to process.
  • Fixed: Fixed a bug where directory picker typeahead was not opening correctly
  • Fixed: Fixed an issue where email links can have only https:/ instead of https://
  • Fixed: Fixed all people fields in Edit Series not reflecting the locked status. All locked fields are now singular.
  • Fixed: Fixed a bug where single epubs without a volume or chapter number in their title could get marked as non-special and thus not render on the series detail page (or render twice)
  • Fixed: Fixed publication status to have an override for calculation by checking if there is only 1 book and the type is epub/pdf, then setting it to Completed
  • Fixed: Fixed a bug where searching for a person and clicking said search result wouldn't load up the filtered screen.
  • Fixed: Fixed a bug where scanning a series wouldn't properly update the cover when applicable
  • Fixed: Fixed an issue when scanning a series, 2 additional tasks would be done (word count and cover gen) when only one of each was needed.
  • Fixed: Fixed a bug where you could move 2 pages in immersion mode with the action bar menu open
  • Fixed: Fixed a ton of bugs in the epub reader around paging when you wouldn't expect to
  • Fixed: When busting Kavita+ cache, also bust recommendations
  • Fixed: Fixed an edge case where a logged in user would setup a user account then hit back and their side nav would not restore.
  • Fixed: (Kavita+) Fixed a bug where if you add and remove a series multiple times from want to read, before scrobbling Kavita identifies the correct end state and scrobbles that, but those other events never got marked as processed.

API

  • POST /series/metadata payload has been updated so locked fields for people (writersLocked) are now singular (writerLocked).
Kavita - v0.7.10.2 - Hotfix 2

Published by majora2007 12 months ago

Sorry for the second hotfix. The first one didn't take.

Fixed

  • Fixed: Seriously fixed the invite user flow this time
  • Fixed: Fixed a lack of an error being presented to the UI when inviting a user failed
Kavita - v0.7.10.1 - Hotfix

Published by majora2007 12 months ago

Unfortunately in the last release, the fix that I made to smart filters did not take and part of the encoder/decoder broke. This hotfix fixes it, however, you will likely have to manually fix every filter. I really apologize for this, but the underlying issue escaped over a month of testing and the fix was minor but impacting.

In other news, I worked with Dani this weekend from the Panels team and built a few APIs for them to hook in and report progress to Kavita via the API. This new Panels should be coming in the coming week.

Added

  • Added: Added APIs for Panels to synchronize progress. This means as of this version, OPDS-PS with Panels explicitly will not automatically track progress.

Changed

  • Changed: Added a saveProgress flag as optional on page streaming links for other apps if they want to suppress the progress saving feature.

Fixed

  • Fixed: Fixed: Fixed a bug from v0.7.10 that caused smart filters to fail to load/save due to encoding issues.
  • Fixed: Fixed a bug where side nav wasn't properly using the correct name for rendering
Kavita - v0.7.10 - Bugfixes

Published by majora2007 12 months ago

Another release so soon? Unfortunately, a critical bug was found from v0.7.9 which prevented inviting new users to Kavita servers which means I had to cut the release short. This release is mainly bug fixes, but there is one new feature for you, which so far from testing is pretty cool.

This release adds a new feature called Next Estimated Chapter. By using the underlying volumes and chapters in a Series and when Kavita Scanned them, as long as there is enough information and the Series is On Going or Ended, Kavita will calculate when the next chapter/volume should be available to read. The dates are of course estimated and from testing and a lot of math, I believe I've accounted for the different acquisition methods to predict a pretty close date. I am also exploring potentially expanding this to provide more accurate dates from external metadata via Kavita+.

This release also adds some changes to how Kavita talks to the DB to help with some contention. Please raise an issue if you're suddenly seeing issues in day to day use.

I will likely continue v0.7.11 with more bugfixes, as I've let them build up due to building out such big features.

Note: There was a build pipeline issue and docker users on the Stable were shipped an early version of the Next Expected Chapter. This release has completely different code

Added

  • Added: Added a button in Tasks to bust locale cache, which can sometimes get stuck
  • Added: Added a new chapter/volume card (list view not implemented yet) for Series that are On Going or Ended, that uses the delta times between each chapter being added to estimate when the next chapter should be available on the server.

Changed

  • Changed: When testing email service, when successful, it will return the version number back to you. Email version will not show when using default mailer.
  • Changed: Tweaked the pooling for DB Connections. This should reduce database is locked and other contention issues.
  • Changed: Don't create a scrobbling event when there is literally no reading progress
  • Changed: Favicons on series detail all now have a bit of rounding
  • Changed: Epub marc:relators will now map illustrator to Inker instead of Letterer
  • Changed: When you are no longer authenticated in the UI, Kavita no longer pops a toasts and just redirects you
  • Changed: Email flows will now check the email to see if it's in a valid format. If not, it will skip any email code and let you know that due to not having a valid-looking email, no email is sent and check the logs.
  • Changed: Tweaked the wording for invite user modal.
  • Changed: After inviting a user, the invite modal will hide the instructions from the pre-invite step.
  • Changed: (Kavita+) If scrobbling a series that is already completed in AniList and Kavita is not completed, Kavita+ will no longer update the status to in progress.
  • Changed: Updated Translations

Fixed

  • Fixed: Fixed a bug where a Ended series could get flagged as Completed Publication Status
  • Fixed: Fixed an issue where sorting by Last Read progress could incorrectly order the series if another user had recently read that Series.
  • that Series.
  • Fixed: Fixed an issue where Smart Filters that had a value with a space would resume as a Smart Filter with +, thus breaking the filter.
  • Fixed: Fixed an issue where table of contents in dark mode in the pdf reader wouldn't be readable
  • Fixed: Fixed a bug where the filter wouldn't reflect the correct sorting icon when loading a smart filter
  • Fixed: Fixed an issue where email links could generate with // in them
  • Fixed: Don't allow the scanner to accept any themes with a space in their filename
  • Fixed: When saving an email url, ensure ending / is removed
  • Fixed: Fixed a parsing issue on non-English systems where ComicInfo had a , instead of a .
  • Fixed: Fixed a bug where Series last read date could be updated just by opening a chapter in the reader
  • Fixed: Fixed an annoying issue where non-English OS Locale's could have weird grouping with chapters that are not whole numbers
  • Fixed: Fixed an issue where favicons that have a url starting with www. wasn't properly saving to directory
  • Fixed: Fixed a bug where notification in events widget when there was a problem reading epub word count didn't show the filename like it should have. Same issue with when a Series has an issue, the series name wasn't being shown.
  • Fixed: Fixed a bug where side nav wasn't refreshing automatically when a user renamed a library
  • Fixed: Fixed a bug where the typeahead in Series Metadata would blank out the field when adding 2 new tags in one go
  • Fixed: Fixed an issue in cover chooser for a volume where the first try it wouldn't save the cover image
  • Fixed: Fixed a bug where the redirection after needing manual authentication wasn't working
  • Fixed: Some users complained that locale was missing when saving preferences from the reader.
  • Fixed: Fixed an edge case where a series of only volumes and a special, the special would be chosen for Series Metadata
  • Fixed: Fixed a critical issue where new users weren't able to be created due to a constraint with default streams.
  • Fixed: Fixed some bad series name parsing with pure Korean filenames.
  • Fixed: Fixed up some minor styling issues on the admin dashboard.

Removed

  • Removed: Removed a bunch of migrations from v0.7.2 through v0.7.6
Kavita - v0.7.9 - Customization

Published by majora2007 almost 1 year ago

v0.7.9 is here and brings along with it major changes in the customization that Kavita provides it's users out of the box. This has been something I've been wanting to work on for over a year now, but as with all things, finding time and balancing new features and their order doesn't always go as planned.

This release brings 3 major customization features: Dashboard, Side Nav, and External Sources plus Series Preview for Kavita+ users. These features are for all users, not just admins. Let's dive in.

Dashboard

Have you ever wanted On Deck to work differently? Do you not need Newly Added series on your dashboard or perhaps want a filtered list of series easily available? This feature is for you. As of this release, you can first build a custom filter and save it as a Smart Filter. This is a live filter that can be modified at any time and will reflect everywhere it's binded. From the Home Side Nav item, click the actionable dots and then Customize. You can now turn the visibility on/off of Kavita provided Streams, add your own smart filters to your Dashboard and even reorder everything.

Side Nav

Not only do we have a customized dashboard, but the side nav got some love as well. If you're a large comic collector, you'll know that the best practice is to split your series into libraries by Publisher (to avoid collision on the same series name released in different years). This can be frustrating as that leaves you with over 200 different libraries and adds so much clutter on your screen.

This new feature changes that. First, only 10 items will ever render by default with a More button to show more items under the fold, taking inspiration from YouTube and Plex. Then, like with Dashboard customization, you can reorder, bind smart filters, or turn on/off the visibility of some libraries. Bulk selection tools are available to help those users with many libraries.

image

External Sources

External sources plays on the Side Nav customization by allowing you to setup a link on your side nav that upon being clicked will open your friend's server up already authenticated as you. This is just the start, after rolling this out to our nightly users discussion sparked and in the future I will be adding the ability to allow searching media in your friend's server directly from your own instance (Kavita+ only).

Series Preview (Kavita+)

For those that have Kavita+, they are likely very familiar with the Recommendations tab. When looking at recommendations, you will see your own Series that you own and external ones (if you are an admin). The problem is, it's a bit annoying clicking on each external series, switching tabs, reading about it, then coming back to Kavita. So I fixed that. Now, a drawer will open and bring that metadata to you, making it quick for you to read about the series right from within Kavita.

image

This release has been pretty large in terms of the features and refactoring that had to be done to bring these features to you all. Just the side nav rework took 6k lines of code to do :/ I'm extremely pleased with how my vision came to fruition and look forward to seeing the customizations you all create. The next release should be the last of the v0.7.x series of releases and is the last foundational piece that has to happen before I can do any work on the mobile app.

Important Announcements

  • With Smart Filters released, I want to see what creations you can come up with. Join us in by taking a pic of your smart filter creations and sharing them with the community here. If you find something missing to let you express yourself, please raise a thread in our new feature-requests channel.
  • This is the last call to voice your opinion on if Image-based series are removed as a feature from Kavita. Please add your voice here if you need this functionality, otherwise, upvote the original post if you don't need or agree with removal.
  • The wiki for once is up to date with information around these new features. Check out how customizations work or how the reworked metadata filtering from last release works.
  • Note: All docker images have been moved to jvmilazz0/kavita, jvmilazz0/kavitaemail. Please make sure you switch over to this repository going forward

Added

  • Added: Added the ability to save metadata filters into a Smart Filter. This is a dynamic query that can be bound to your dashboard.
  • Added: All users can now customize their own dashboard and re-order the streams Kavita provides out of the box, turn them on/off, and bind your Smart Filters to your dashboard.
  • Added: You can now re-order, turn on/off libraries, system default side nav items and add your own smart filters and external sources (see below) to the side nav.
  • Added: Added the ability to link to external sources (aka server's your friends may host). These can then be bound to your Sidenav and provide a one click to that server which will auto login.
  • Added: New API (plugin/version) which can use the api key to get the current Kavita install version.
  • Added: Added WantToRead filter so SmartFilters can be created that utilize want to read status in creative ways.
  • Added: OPDS now has a dedicated section for SmartFilters
  • Added: Added a new Sort By for Reading Progress
  • Added: Added a new Filter Field (and Input type) to select Series based on Last Read time of the user. This new field uses a date picker so you can build filters like: Series that haven't been read since 1/1/2023 that have over 80% progress on ordered by most progress to least aka a 'Finish it Off list'
  • Added: (Kavita+) Added an up-sell to 1 year per some users requests. New payment link set.
  • Added: Kavita+ users can now preview local and external series with more metadata by clicking a recommendation card. This new drawer will allow users to get a quick glance of information. You can still open the new browser tab from the drawer or directly from the card. As data is cached in Kavita+ API, it may take some time for extended details to propagate.
  • Added: Plugin Authenticate and Version APIs will now capture unauthorized rejections and log out to config/logs/security.log. APIs that perform this logging are documented.
  • Added: (Kavita+) Users can now add a local recommendation to their Want to Read list directly from the Series Preview drawer
  • Added: (Kavita+) When previewing a local series from Recommendations tab, if the local series is lacking metadata (at least summary and genres need to be present), then external metadata will be used.
  • Added: When a user logs in, log their IP

Changed

  • Changed: OPDS will now mimic applicable ordering and streams from your Dashboard. Note: More In Genre and Recently Updated are not supported. Likewise, OPDS All Libraries will now order in the order of your Side Nav.
  • Changed: Selected options from filter's typeahead wont show as an option anymore.
  • Changed: Some filter fields will now show the unit on the UI to help users understand how it functions
  • Changed: Kavita now logs extra information and in different conditions when a login fails
  • Changed: Ignore #recycle directories, which is a special folder on Synology
  • Changed: Floats are allowed for reading progress inputs
  • Changed: Added a note about folder watching waiting 10 mins to trigger in library settings
  • Changed: When a book does not contain a volume number or have volume in the filename, consider it standalone and as such, mark it as Completed Publication Status.
  • Changed: Side Nav now only shows Home + 10 other items. Other items are found behind the More fold.
  • Changed: Allow API key/OPDS url component to toggle show/hide instead of the previous just showing.
  • Changed: Updated underlying PDF library to latest
  • Changed: Filter fields are now sorted alphabetically
  • Changed: Giant Size format from ComicInfo will now be treated as a special
  • Changed: (Kavita+) Review's will now be rejected from creating a scrobble event if they wont meet AniList's criteria. This will be changed in future if more scrobble providers are added.

Fixed

  • Fixed: Fixed stats tab acting up from injection in Stable
  • Fixed: Floating point tolerance for reading percentage when using Read Progress Filter
  • Fixed: Fixed a bug where some OS don't support all locales by default. For those, catch any exceptions and default to the raw language code.
  • Fixed: Summary wasn't being sent to the backend for filtering
  • Fixed: Fixed a bug where non-admins could see Scan on the library actionables (but not actually invoke it)
  • Fixed: Fixed a bug where tablet viewports couldn't open the metadata filter
  • Fixed: Fixed up a lot of the css around the filters.
  • Fixed: Fixed up a bug where filter would un-collapse even though we were using a drawer.
  • Fixed: Fixed an issue where the manga reader could get delayed when rendering the next page due to slow network activity because it was waiting for the last prefetch page to load instead of moving to the prefetched page immediately.
  • Fixed: Fixed external rating tooltip not showing the title of Google Books
  • Fixed: Fixed a bad parser case where volume num could get parsed as chapter num.
  • Fixed: Fixed up a lot of missing localization strings
  • Fixed: Fixed a bug where Not Contains on Tags and People wasn't behaving correctly (Thanks @CianH for the PR)
  • Fixed: Fixed a bug where images in the release notes on update notification modal would go outside the modal's width.
  • Fixed: Fixed a bunch of locations where UTC dates had the wrong time
  • Fixed: Fixed a bug where users with no libraries shared could actually obtain access to series from non-shared libraries
  • Fixed: Fixed an issue where after you update your settings, the new preferences didn't send back with the refresh account api and thus locale switching didn't work correctly.
  • Fixed: Fixed a bug where virtualized lists were not having the correct order for order numbers mode. (reading list detail page when over 100 items)

Removed

  • Removed: Recommended tab on Library detail is now removed. Everything can be created as a Smart Filter.
Kavita - v0.7.8 - New Filtering System

Published by majora2007 about 1 year ago

Another major feature has been reworked as I lay down those foundational changes you may hear me talk about. Kavita now has a brand new filtering system to enable users to really poke and prod their media. This was a huge undertaking ensuring a flexible system could be built and allow new features to be added upon it.

image

This new filtering allows for you to not only reproduce what was already there, but expand and AND your statements together. I originally sought out building a recursive system, but unfortunately I kept hitting difficulties in coding the UI, that I decided to simplify. I can always enhance later if needed. You will noticed many different combinations and new fields. I've added quite a few new fields, but if you have creative ideas, please do raise a feature request for them. I'm interested in expanding the filters even further to allow you to craft some unique filters.

In this update, I also spruced up the OPDS implementations thanks to some nice feature hub requests that got me thinking. I personally don't use OPDS, but I think for those that do, you'll notice it's a much better experience. No more formats at the end of the series names (as we put that in the description) and series descriptions are actually sending (they have been hooked up, but weren't being set, oops). While I was fixing those, I added new feeds for want to read, to make the experience the best it can be. If you've heard about the OPDS2 work, Kavita will be adding it as well. I've been involved in the discussions with Readium about the spec along with Komga, Codex, and Panels.

Lastly, localization has seen major progress. The community has really stepped up and as of me writing these release notes, Kavita is fully translated to Korean, Chinese (Simplified), and basically Italian (1 word...). Many other languages have over 80% strings translated. I've also fixed a ton of missed strings throughout the app. Thank you so much to those that have added their own languages. It's really cool seeing the application translated.

That wraps the big features. As I've been mentioning many times in these release notes, my focus for the v0.7.x releases are major foundational changes that I need so I can start the mobile apps for Kavita. I've unfortunately been struck by the Return to Office plague and due to this, have much less time to work on Kavita, so updates may slow (plus I have yet another holiday this month).

Added

  • Added: From Reading list, you can now click on a character tag and open a pre-filtered search screen.
  • Added: OPDS feeds now include a new section for Want to Read series
  • Added: Admins now have the ability to change the cover image size. The options are: Default (320x455), Medium (640x909), Large (900x1277), Extra Large (1265x1795) (Thanks @Ark1369)
  • Added: User day breakdown stat graph is now visible on a user stats page
  • Added: Added an id for komf userscript to help it inject into Kavita's UI without relying on strings, given localization.
  • Added: You can now filter by Path, which is the highest folder for a Series.
  • Added: You can now filter by filepath, which is the full path of a file, including extension. This is much slower than Path, but still useable.
  • Added: You can now filter by Series Summary (to help you find series with missing metadata)
  • Added: New filter comparison called Must Contains which does just that, ensures that the values provided are in every series.
  • Added: Added ability to delete single collections from card actions.

Changed

  • Changed: Revamped how metadata filtering works to allow custom combinations, searching for information on nested properties, etc.
  • Changed: OPDS Series names will no longer show (Format) in the series name. It will be displayed in the summary field instead along with the summary if one is set.
  • Changed: If the language tag isn't properly set, then series detail wont show it anymore.
  • Changed: Changed the HTTP Cache for all-languages API
  • Changed: API key and OPDS url are now hidden by default. You can still copy from them or you can unhide if you want to manually copy.
  • Changed: Merged images (collections and reading lists) now work differently. If there is only 1 image to select, it will use that image. If there are 2, they will be side by side, 3 will be two on top and one centered below, 4 will the the existing. This will ensure there is always a cover to view.
  • Changed: Cover image on reading list detail page will now show as it's always available. Collection page still has the restraint of requiring a summary to show the cover image.
  • Changed: Folder watching will now appropriately ignore changes that occur in blacklisted folders
  • Changed: Rating tooltip and stars are bigger on mobile
  • Changed: (Kavita+) Scrobble token validity checks are removed before writing a scrobble event to the DB
  • Changed: (Kavita+) Added a lot more logging to Scrobbling operations to help debug issues, in case users are having them.
  • Changed: (Performance) Optimized the license check code so that users without any license entered would still take advantage of the cache layer.
  • Changed: (Performance) 10x speed improvement for checking if a library allowed scrobbling when opening up series detail page
  • Changed: (Kavita+) Reviews are now mixed to show a better spectrum. You will always get the first and last 2 and a selection from the middle. This should help you get a fuller picture if the series is a good read for you.
  • Changed: The Epub reader now has much better handling of highlighting when text is underneath the tap to paginate area. You can now highlight under it naturally. (Thanks @gmahomarf for driving this)
  • Changed: (Performance) Removed single DB calls in many APIs.
  • Changed: Updated transloco library which fixes older iOS browsers not being able to load Kavita
  • Changed: Don't fully fail series metadata update if we can't cleanup due to another DB operation happening. This should help komf users that are hitting the api in short succession from having high CPU usage or long response times
  • Changed: New languages for localization

Fixed

  • Fixed: Fixed a bug where OPDS Feeds for Libraries, Collections, and Reading lists were not sending the image back in the XML
  • Fixed: Fixed a bug where Series summary wasn't being sent over OPDS
  • Fixed: Fixed a lot of localization keys
  • Fixed: Fixed up Kavita rating on Series detail page not starting at the same place as other sections
  • Fixed: Fixed reading list page being laggy when scrolling
  • Fixed: Fixed a potential bug where series name could be taken from a chapter that isn't the first ordered (very unlikely) for epubs.
  • Fixed: Fixed a bug where Volume 1.5 could be selected for series-level metadata over Volume 1.
  • Fixed: Fixed a bug where expanding chapters on list item view would adjust spacing in a weird way
  • Fixed: Fixed an annoying, harmless DB error when reconnecting signalR event streams, that said the entity has changed since.
  • Fixed: Fixed paper background on epub reader not loading under base url
  • Fixed: Makes Kavita and the entrypoint script executable, which removes the need to do that on every startup of the container, additionally is one step closer (still needs other changes) to potentially make the docker image run as rootless.
  • Fixed: Fixed a bug where a user adds their own favicon and the check fails due to not stripping www.

API

  • Changed: (API) The following APIs have a v2 counterpart with the existing being deprecated. I will support them for a few releases until enough of user base updates their installs:
    series/on-deck
    series/recently-added
    series/recently-updated
    series/ (post one)
    series/all
    want-to-read/
    reader/bookmarks

Known Issues

  • Server Stats tab is broken. It requires selecting then refreshing your browser
Kavita - v0.7.7 - Localization!

Published by majora2007 about 1 year ago

This release is a milestone for me as it marks the completion of everything I initially envisioned for Kavita when I first launched the project and gained my first user feedback. Kavita has grown tremendously over the past few years of building it and has been shaped in ways I would have never known when I first set off to build the project. With all that said, I want to thank all our users for their continued support and ideas to shape the product and my wife, who allows for me to put so much of my time into this project. I have many things planned for the future and I look forward to your feedback.

Without further ado, localization has finally landed in Kavita! For those that read my changelogs, you'll know that last release I had already dropped 60 hours of work keying all the strings in the app. Since then, the community and I have added another 30. This has been a huge effort. Localization is no easy task and as of this launch, there is no 100% localized translations. Going forward, localizations will be released on nightly as they are ready and with the stables. Users can always manually pull the files if needed. If you want to help us translate Kavita into your language of choice, please check out our Weblate.

For those that have tried out Kavita+, I want to first thank you. I see very active traffic and everyone I have spoken to has provided great feedback. Please use of feature hub if you have ideas for Kavita or Kavita+. I have more plans for Kavita+ in the future, however, I have some critical Kavita features that need to get released before I can work on them.

Lastly Kavita is now officially on Linuxserver.io! A huge thanks to Aptalca and Linuxserver.io team for their collaboration in creating and releasing the docker image!

This is not a Kavita issue, but Panels has been made aware and fixed an issue in their code which prevented images to load from Kavita OPDS connections. This will be available on an upcoming release from Panels. Thank you @howdy-im-david for driving this effort.

Added

  • Added: Kavita now supports localization. A new language will only appear when both Frontend and Backend localization files exist. If a localization key is missing in a user's locale, English will be the fallback. Note: Some items are not yet localized.
  • Added: Epub books will now populate weblinks by joining dc:identifier tags with url: values.
  • Added: Added progress bars on the readme to help motivate users to get all the languages translated
  • Added: Added a new shield on the readme that shows how many active installs Kavita has (for those that have opted into Stats)

Changed

  • Changed: Updated all fonts to be woff2 which are faster to load and render
  • Changed: Many strings were unified, sometimes less verbose, sometimes more.
  • Changed: All dates are now sent in UTC and displayed in local timezone
  • Changed: Compact numbers (3.2K -> 3,200) are now respecting your locale (so Turkish users will see 3,2 B)
  • Changed: Last Added To -> Last Item Added to be more clear in Edit Series info section.
  • Changed: (Not user facing) Login page now accepts a user's apiKey and will auto login with that. This is for an upcoming feature.

Fixed

  • Fixed: Fixed character tags being empty in item list
  • Fixed: Fixed a bug where Scan series task wasn't properly updating underlying chapter metadata when it should have.
  • Fixed: Fixed a bug where downloads could trigger on lazy loaded module boundaries
  • Fixed: Fixed a bug where remove from on deck would should for all series cards when it shouldn't have
  • Fixed: Fixed a bug where virtualized reading list page (> 100 items) wasn't showing the correct order in the input box
  • Fixed: Fixed library detail page showing duplicate series during a scan
  • Fixed: (Kavita+) Fixed a case where when setting up initial rates for scrobbling, Kavita could print as if a user had rate limit
  • Fixed: Fixed a bug with reading lists where re-ordering via the input wouldn't respect order
  • Fixed: Fixed a bug with double slash in opds url
Kavita - v0.7.6 - Personal Table of Contents + Rating Overhaul

Published by majora2007 about 1 year ago

v0.7.6 is here with a small feature enhancement of your own personal table of contents (named bookmarks for epub reader). I often find myself reading cooking books and while there is an official ToC, I often want to bookmark my favorite recipes with my own description. Well, now I can. This small feature opens up a lot of architecture for future epub related work. Do note this is not possible in the pdf reader. It has become clear that the current offerings for pdf reader is not flexible enough for the work I want to do and I have started planning a revamp of all things pdf within Kavita.

This release also adds Google Book rating support for Kavita+ users. While Google Books is not ideal, it is something and from internal testing, there is value add. I have found some other platforms and will be working to find some value add from them if possible.

Lastly, ratings have been overhauled to allow half stars. You can now go from 0-5 with step increments of 0.5. For Kavita+ users, scrobbling is already aware of mapping to your target AniList rating scheme, so no change there. You can now also rate a series as 0 stars (but you should likely just delete the series). Series without a rating with show as N/A. This change should allow for more expressive ratings.

In other news, Localization support is in progress. I've already worked on it for 50 hours and it looks like I have 50 hours more just to get the English foundation implemented. So let's expect v0.7.7 to be just localization.

Added

  • Added: Added Personal Table of Contents (called Bookmarks on epub). The idea is that sometimes you want to bookmark certain parts of pages to get back to quickly later. This mechanism will allow you to do that without having to edit the underlying ToC. This is only available on epub currently. PDF Reader is planned.
  • Added: (Kavita+) Google Play ratings will now show on normal books
  • Added: (Kavita+) Added the ability to see the Series the Rating is matched with. You will see an Entry in the tooltip of the rating.
  • Added: New css variable --rating-star-color

Changed

  • Changed: Changed Kavita+ Payment link to support Google Pay
  • Changed: Added a button to update modal to show how to update for those unaware
  • Changed: Darkened the link text color on tables to make it more readable
  • Changed: (Kavita+) When scrobbling, send the first and last times the series was read by the user. This will ensure a better completion and start data in AniList (this will not overwrite existing data)
  • Changed: Updated the icons for MAL and AniList under rating icons to look cleaner.
  • Changed: Moved the nightly backup job (if nightly) to 2am to prevent contention with other nightly maintenance items that might lock the db and prevent a copy from being made
  • Changed: When calculating overall average rating of server, if only review is yours, don't include it.
  • Changed: When calculating overall average rating of server, scale to percentage (* 20) to match all other rating scales.
  • Changed: Ratings can now be decimals from 0-5 with a step of 0.5.
  • Changed: Series without any rating will now show N/A to indicate the user hasn't added a rating yet. 0% now means the series is that bad.
  • Changed: When calculating overall rating for a series from within the Server, don't include series that have not been rated
  • Changed: List item cards on desktop will now show more properties, like size, weblinks, etc
  • Changed: List items on series detail will now show Characters and Tags on desktop. These properties are helpful for more H related content.

Fixed

  • Fixed: Fixed default token key not being long enough and Kavita not auto-generating it (this may impact Kavita+ user's fingerprint. Just contact me for a reset)
  • Fixed: Fixed duplicate events occurring on newly added series from a scan
  • Fixed: Somehow the version update checker wasn't hooked up, it's back. It checks on startup and every 4-6 hours randomly.
  • Fixed: Fixed backups not backing up favicons in the correct folder
  • Fixed: Fixed the bookmark overlay on mobile to work with touch events. Since suppressing the native control, Kavita has a copy for the highlighted selection.
  • Fixed: Fixed side nav on mobile without donate link not fully covering the height of the screen when no donation link is present
  • Fixed: Only trigger the task conversion warning on Media screen if you've touched the appropriate control.
  • Fixed: Fixed a bug where bookmark directory wasn't able to be changed.
  • Fixed: Fixed a bug where see More wouldn't show if there were just characters due to missing that check.
  • Fixed: (Kavita+) If a chapter has a range 1-6 and is fully read, when calculating highest chapter for Scrobbling, use the 6.
  • Fixed: Fixed a number of additional network calls occurring from editing series metadata
  • Fixed: Don't try to backup the DB if it doesn't exist. This will stop errors in log on first start.
  • Fixed: Fixed a bug where reading progress wouldn't add a series back onto On Deck

Removed

  • Removed: Removed manual Migrate Series Relations migration from v0.7 release (5 releases ago)
Kavita - v0.7.5 - Remove from On Deck

Published by majora2007 over 1 year ago

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.

image

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
Kavita - v0.7.4 - Kavita+ Launch

Published by majora2007 over 1 year ago

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.

image

image

image

image

image

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:

image

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 in manga reader
  • Fixed: Fixed an issue in directory picker where if you had two folders with the same name, the 2nd to last wouldn't be clickable.
  • Fixed: Fixed an issue where a series with only tags would show See More, but there wouldn't be anything more to see
Kavita - v0.7.3.1 - Hotfix

Published by majora2007 over 1 year ago

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
Kavita - v0.7.3 - The Quality of Life Update

Published by majora2007 over 1 year ago

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).

image

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 nor cover generation.
  • Fixed: Fixed a bug where reading list ending month wouldn't render correctly
  • Fixed: Fixed a slight offset in reading list item not read badge
  • Fixed: Fixed a bug where reading list month wasn't rendering correctly
Kavita - v0.7.2 - Reading Lists, CBL Support, OPDS Flattening and More!

Published by majora2007 over 1 year ago

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: Slight memory consumption savings in Manga reader under bookmark mode.
  • Changed: Moved the bookmarks directory setting to Media tab
  • Changed: Reading list page is now in alphabetical order

Fixed

  • Fixed: Fixed a bug where custom file uploads for entities wouldn't save in webP.
  • Fixed: Fixed a bug where cover chooser base64 to image would fail to write webp files.
  • Fixed: Fixed a bug where convert to webP covers wasn't taking care of Series, Volumes, Reading Lists, Collections, and Libraries.
  • Fixed: Fixed a bug where clearing metadata filter of series name didn't clear the actual field.
  • Fixed: Fixed an issue where setting the localizedSeries on an existing Series could cause duplication or other strange issues
  • Fixed: Fixed a bug where clicking on a genre or tag from server stats wouldn't load all series page in a filtered state
  • Fixed: Fixed a bug where some epubs would report more pages than actual. Fixed by switching to reading order based count rather than raw HTML files
  • Fixed: Checking for updates is now fixed
  • Fixed: Fixed average reading time per week on user stats page
  • Fixed: Slider knobs on firefox should be the primary color, not just on Chrome
  • Fixed: Fixed our api site not being able to hit Kavita instances due to a CORS exception
  • Fixed: Fixed clicking on first page number in progess bar on epub reader's menu not jumping to beginning of the epub
  • Fixed: Fixed a bug where on phone viewports and fit to width, a lot of blank space could show under the image
  • Fixed: Fixed a bug where emulate book mode wasn't fully extending to the bottom of the screen
  • Fixed: Fixed lots of code in the typeahead to make it more stable
  • Fixed: Removed calls to a nonexistent api on manage users page
  • Fixed: Fixed a bug in refresh token to make it more reliable with refreshing and handling invalid tokens. Adjusted when we refresh the token to be longer before expiration.
  • Fixed: Fixed a bug where some images would report the wrong MIME type
  • Fixed: Fixed a bug where continue point would fail to get if a chapter had a range (ie 1-11) inside a volume (volume 1).
  • Fixed: Fixed an issue where an image might be cut off in fit to height in manga reader
  • Fixed: Fixed a sizing issue on page splitting in manga reader
  • Fixed: Fixed a minor issue where search bar when focused would be too big
  • Fixed: Fixed alignment on download icon for download indicators in cards that was slightly offset
  • Fixed: Include progress information on Want To Read API
  • Fixed: Fixed an issue where alert styles were missing
  • Fixed: Fixed an issue where when OPDS was disabled, user preferences page wouldn't alert the user.
  • Fixed: Fixed a regression where confirm-email was validating for a real email, when it's not required
  • Fixed: Fixed fit to height not properly aligning the image in manga reader
  • Fixed: Fixed a bug where epub 3.2 tags were being ignored for series grouping
  • Fixed: Fixed a long standing bug where PublicationStatus wasn't being set correctly in some conditions where it should have
  • Fixed: Fixed bookmark mode not having access to critical page dimensions for the reader. Fetching bookmark info api now returns dimensions by default.
  • Fixed: Fixed pagination scaling code for different fitting options in manga reader
  • Fixed: Fixed missing code to persist page split in manga reader
  • Fixed: Fixed library last scan being stored in UTC, but expected server time
  • Fixed: Fixed a bug where after a series is scanned, generate covers for series didn't respect webp cover generation setting
  • Fixed: Fixed an edge case in finding next/prev chapter when there were only volumes with the same chapter number across all files.
  • Fixed: Fixed theme color on site manifest not being black
  • Fixed: Fixed a bug where reading list item didn't have a not read badge.
  • Fixed: Fixed a bug where resetting to default theme when a theme was deleted was throwing an exception and failing.
  • Fixed: Fixed up a case where getVolume repo method always assumed there was a volume by that Id. (komf)

Breaking API Changes

  • All image access requires an ApiKey with the query parameter in the url. Tachiyomi, Paperback (Kavya), and CDisplayEx have updates to address this. This is backwards compatible. Old servers will ignore the key.
Kavita - v0.7.1.4 Hotfix: Synology Fix

Published by majora2007 over 1 year ago

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)