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.
This is just a bit more than a hotfix, but mainly focused on some polish after more users got their hands on the v0.8 along with the updated Image library. From the community support, v0.8 looks to have gone off really well with only a few users reporting minor data loss. Thanks to everyone joining support and bringing up edge cases that were missed.
I would also like to remind users that you can upvote and comment (or create your own) feature requests on out Github Discussions page.
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?
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).
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.
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! 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.
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.
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.
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+ 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.
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)
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.
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.
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.
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 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 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.
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.
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.
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.
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:
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.
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.
Sorry for the second hotfix. The first one didn't take.
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.