Releases: Kareadita/Kavita
v0.7.11.1 - Hotfix
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.
v0.7.11 - 3 Years of Development
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.
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 ...
v0.7.10.2 - Hotfix 2
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
v0.7.10.1 - Hotfix
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
v0.7.10 - Bugfixes
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
v0.7.9 - Customization
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.
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.
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 (kizaing) 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.
- Fix...
v0.7.8 - New Filtering System
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.
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
v0.7.7 - Localization!
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
v0.7.6 - Personal Table of Contents + Rating Overhaul
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)
v0.7.5 - Remove from On Deck
Kavita+ Users, After updating, please DM/Email me to get your license reset for re-registering (Kavita+ -> Edit tab).
Another release so quickly? I'm trying out a new way to release Kavita releases to bring things faster and minimize the amount of regression testing I have to do each release. For the next few releases, each release will contain one or two features along with the usual bugfixes and tweaks.
For those that have signed up for Kavita+, I want to thank you so much for giving it a shot. I have new features planned, but I want to ensure the foundation is solid first. I have been alerted of a few users that are having their fingerprints change during system reboots and whatnot. I believe I have fixed this. You will need to get in contact (email or dm on discord) with your license key and I will reset you in the backend.
I sincerely apologize for the inconvenience and thank you for your understanding while I work out supporting so many platforms for fingerprinting in an open source project (it makes it very challenging). Again, after updating, please DM/Email me to get your license reset for re-registering (Kavita+ -> Edit tab).
One last thing on Kavita+, I understand that it is becoming difficult to communicate changes happening on Kavita+ and even Kavita as the services tie in together. I am working on setting up a solution to make it easier to get informed. In the meantime, Watching for releases in Github or joining discord and subscribing to Kavita+ (or other roles) will be the best.
A reminder if you are having any issues with Kavita+ to reach out in Discord. If you have ideas for new features, please add on Feat Hub.
Now back to Kavita! This release we see the addition of two cool features: Remove from On Deck and Overall Ratings. Overall ratings is a new feature that allows any series within your Kavita instance to show the average rating from other users (in addition to you own). A nice feature that drives more intra-server communication, something I'm looking to explore more in the future.
The big feature is Remove from On Deck. On deck are series that have recently had a new chapter within 7 days or reading activity within 3 weeks. These numbers are now customizable, but what if you have a series you just started reading but didn't vibe with. It would be annoying seeing it every day on your On Deck. You could previously mark as unread or just wait (or read a bunch of stuff to move it further down the list). Now, you can just remove it. Once removed, it wont be shown until you create any reading progress on it. You can remove it as many times as you need.
Added
- Added: (Kavita+) Added favorite count on AL and MAL ratings. Click them to see the favorite count from users.
- Added: Added the ability to change cache memory amount from the Admin dashboard
- Added: Kavita users can now see the overall review from all user ratings for a given series. This rating will show in addition to your rating. Your rating + overall rating. You can click on the rating indicator to add your own.
- Added: Admins can now configure the amount of progress time or last item added range for on deck calculation
- Added: Added the ability for users to remove series from on deck. A series will no longer appear on 'On Deck' until a new chapter is read by that user.
- Added: Added the ability to see the last reading date for a volume or chapter in the details drawer. Hover over the clock to get the full timestamp.
Changed
- Changed: (Kavita+) Review cards will now show an icon to indicate where the review is from. This may take some time to show as reviews are cached for some days in Kavita+
- Changed: (Kavita+) Changed the fingerprinting method for Kavita+ (this requires re-registering after pinging me). Sorry for the issues.
- Changed: (Kavita+) Don't allow Comic Libraries to do any scrobbling as there aren't any Comic Scrobbling providers yet
- Changed: Kavita+ tab now links directly to the FAQ
- Changed: Don't log that we are checking license when no license is set (no checking was taking place)
- Changed: Added an FAQ link on the Kavita+ tab
- Changed: Don't query Kavita+ for ratings on comic libraries as there are no upstream providers yet.
- Changed: Unified all caching in Kavita under one cache (Kavita+, favicons, etc) which is controlled by Cache setting in appsettings.json or via the Admin page.
- Changed: Upped the default cache memory requirements to 75MB.
- Changed: (Performance) Reduced a DB lookup for many reader based APIs.
- Changed: Ignore .caltrash folders during scan for users that use Calibre's managed directory as library folder
Fixed
- Fixed: Jumbar keys were a little hard to click on
- Fixed: Fixed an issue where libraries that don't allow scrobbling could be scrobbled when generating past history with read events when a scrobble token was added
- Fixed: The min/max year on metadata filter was not a number input type.
- Fixed: Fixed the disabled tabs color contrast due to bootstrap undocumented changes
- Fixed: Fixed an issue where Cache key was using Port instead.
- Fixed: Fixed an issue where get latest progress would throw an exception if there was no progress due to LINQ and MAX query
- Fixed: Fixed a bug where Send To Device on a series card (like from library details) wouldn't actually send anything
- Fixed: Ensure we sync to the DB for what's in appsettings.json for Cache Key
- Fixed: Fixed a bug where if you have multiple libraries pointing to the same folder (for whatever reason), the Scan Folder api could be rejected.
- Fixed: Handle more appropriately if the publication date from an epub is empty to avoid a bad parse error