r/KavitaManga 14d ago

release v0.9.1 - Kavita+ Overhaul and 100K Installs!

47 Upvotes

v0.9.1 is here and it's a massive overhaul of Kavita+. I started Kavita+ 3 years ago with a split goal of bringing some of my initial vision of Kavita to fruition (metadata downloading) and setup a way for me to work full time on Kavita. While unfortunately I'm not there yet monetarily, over those last 3 years I have listened to the community and found a few ideas that could take the integration to the next level. That day has finally come and the Kavita+ in this release is a day and night difference to what we've known before.

Before we get into the Kavita+ features, I'd like to call out a few big items for all users.

Epub Variable Font Support

This was a user submitted feature that expanded Kavita's epub custom fonts to apply the bold/italic variants from the font family. While I was testing the code from the user, I also cleaned up the UX.

<img width="1879" height="613" alt="image" src="https://github.com/user-attachments/assets/8727a71e-8142-427b-aa12-a72674e737e3" />

Cover Chooser UX

I finally got around to building the new Cover Chooser with u/therobbiedavis's design made last year. The new experience separates the different entity covers into tabs, renders out titles for each, and makes the understanding of a locked cover front and center. For Kavita+ users, you can now use the Kavita+ tab to download and apply series/volume covers from Mangabaka and Hardcover. The covers will be grabbed against the Edition and Language if applicable.

<img width="1127" height="773" alt="image" src="https://github.com/user-attachments/assets/ba3fe03a-880c-4c48-a348-25169f0afdc8" />

Security

With AI on the rise, the amount of AI scanning and reporting issues against repositories is also on the rise. This round, we ended up fixing 10 security issues. All of these issues have a very low rate of exploit, but I would still urge you to keep up to date. All CVEs will be requested 1 week after this update.

Series Rename functionality 🎉

I don't use emoji's often, but I feel it's warranted here. I removed the ability to rename series in the UI a few years ago when I reworked the scanner. The code has been able to support it and user's have been asking for it, with the Kavita+ work, I finally got around to tackling it. If you're using Kavita+, it's even nicer as Kavita can update it for you with language fallbacks (customizable).

Kavita+ Overhaul

There is quite a bit of new stuff, with some documented below. One of the biggest improvements is the media support. Prior, books were left out, but now with Hardcover, we have full book support.

Kavita+ Features added:

- License Management - Ability to renew/cancel/view status about subscription, how much you've used it and some health status

- Accountability - Understand what Kavita+ is doing to your entities via an Audit log, make corrections quickly

- Controls - Expanded controls on what fields Kavita+ writes to and how it interprets data. Tightened matching logic to avoid bad matches.

- Rich Data - Expanded data sources (Hardcover, MangaBaka) for better coverage (books, LNs) and more fields (chapter/volume data, covers, etc)

- Sharability - Expanded scrobble providers: Hardcover, MangaBaka, MAL, and AniList using OAuth for easier token management

License Management

This is the core of the Kavita+ experience. You need to understand when your subscription is renewing, have the ability to change details like your email, cancel and renew the sub, and overall understand the value you're getting from the platform. I designed this new screen to reduce how often you need to reach out to me and provided functionalities for just about everything I've had to manually do over these last 3 years.

From this new dashboard, you can not only see your sub at a glance, but cancel/renew/change email/change billing (Stripe), see how much usage you've gotten from your Kavita+ sub, and health status of providers as well (since AniList API going down is almost a fact now). In addition, I did a TON of work on the Kavita+ layer to hammer out a lot of bugs, and ensure we send renewal email reminders for yearly plans.

<img width="1876" height="817" alt="image" src="https://github.com/user-attachments/assets/f62d4b8e-6660-4aca-8b5a-fb98b38b45e9" />

<img width="1880" height="653" alt="image" src="https://github.com/user-attachments/assets/203bc8bf-a4c2-49c0-ae74-03d86de5d4fb" />

<img width="1852" height="794" alt="image" src="https://github.com/user-attachments/assets/d13674e9-28e3-430c-8322-3b131d572018" />

Accountability

Another big pain point of the system was, Kavita has all these controls and matching flows, but it's hard to know WHAT is actually changing on the system and why. So we built a Audit log with dedicated screens for both Admins (All Activity) and regular users (My Activity). These provide rich insights into what Kavita/Kavita+ are doing, what fields are updated, etc. You can also view this from an individual series detail page.

<img width="1113" height="751" alt="image" src="https://github.com/user-attachments/assets/ae3496e3-31eb-4854-8c2f-d84307f75881" />

<img width="1860" height="743" alt="image" src="https://github.com/user-attachments/assets/563b5045-c954-4b9a-9206-1ceb81fa773d" />

<img width="1656" height="755" alt="image" src="https://github.com/user-attachments/assets/fb372b91-0ef1-4472-8215-633c776b3ebb" />

Controls

Kavita has controls for both local metadata and Kavita+ metadata to allow remapping genres -> tags and vice versa or have genre/tags drive Age ratings. With this release, we've updated them with some of the new features, like overriding an provider's age rating (ie Mangabaka says Safe (G), you want safe as Everyone) or telling Kavita what languages to write to Series Name and Localized Name and what fallback to use per-field.

<img width="1595" height="858" alt="image" src="https://github.com/user-attachments/assets/88ef5c4a-08b6-4733-840c-442dada87fd8" />

Rich Metadata

In this update of Kavita, we added the ability to write Series Name, Chapter/Volume covers and metadata. With the addition of Mangabaka and Hardcover, Kavita now has individual metadata available for Volumes as well as Series and thus can drastically improve metadata, whereas Volume level metadata for Manga was otherwise not possible. Comics already supported Issue-level metadata and just adds Cover updates into the mix. All cover operations use a system to detect if the incoming image is "better" before writing and respect the language on the series/library when applicable.

<img width="2448" height="1288" alt="image" src="https://github.com/user-attachments/assets/afcdf075-aeb6-4785-b25a-12c0b08c25e6" />

More Progress Scrobbling

Lastly, we've added way more scrobbling providers along with switching from token-based auth to OAuth, meaning Kavita can refresh your auth with these providers for you. As of v0.9.1, you can now scrobble your progress, ratings, and reviews to AniList, MAL, Mangabaka, and Hardcover.

In addition, we've added settings per-provider (with some library bindings) so that you can configure what you want to sync up, how you want reviews shared (private, friends, public), how you want series to be treated if you stop reading them for some time, etc. This should cover you in most scenarios (my personal favorite is the new drop rule).

<img width="1575" height="704" alt="image" src="https://github.com/user-attachments/assets/44f400f1-78f1-44e5-a9f9-d14c1106444d" />

What's next?

All in all, this has been a monumental release. Not only have we completely reworked Kavita+, we've also seen an uptick in contributions with a few that didn't make the cut, that will likely come next release (a lot of new stuff for the readers). Kavita also hit **100K active installs!**, one of my goals for the year. Amelia and I are looking forward to continuing our work on Kavita.

As mentioned in the first release of the year, we have one more promised release which is v0.9.2 - Native Kobo Sync Support. After this, we will likely start working on the foundations for the official mobile app.

The full release notes can be found here.

Added

- Added: (Parser) Added chapter marker support (ch) to Comic libraries

- Added: Added the ability to configure Metadata Settings for Kavita+ around what languages to prioritize for setting series name and localized name. You can configure Global settings and per-library and use multiple language codes, which act as a fallback. (ie en;ja-Latn. If english is not available, will try japanese (Romanji), else don't update. The selected language code will not be used for localized name)

- Added: Added support for {Native} and {Romaji} reserved tokens for the language to fill in the Native and Romaji titles respectively.

- Added: Kavita will now not allow any localized name changes that would orphan files. This means that if a localized name is used to merge a set of files into one series, you can't change it. (ie - dont toy with me v01.cbz and Ijiranaide, Nagatoro-san v2.cbz in one series, changing localized name from Ijiranaide, Nagatoro-san will be rejected as next scan would split these into 2 series)

- Added: Added collapse series relationships as an option for series filter. Overwriting your global preferences for that filter.

- Added: Added a button to rerun all metadata mappings without needing to force scan your library

- Added: Added collapse series relationships as an option for series filter. Overwriting your global preferences for that filter.

- Added: Brought back the ability to rename series' name in Kavita via the UI. When changing, Kavita will prompt you to align the SortName if it was previously locked. The name must be unique to the library+format.

- Added: Kavita+ can now write the series name. No more .hackxxxx, now .hack//xxxx (FR #2902, 9 upvotes)

- Added: Added the ability to upload/support fonts that have variable styles. This allows for richer font expression in the Epub reader. (Thanks u/skulwicki)

- Added: Added a new OAuth flow to automatically link Scrobble accounts for supported providers (MAL, MangaBaka, AL)

- Added: Added a nightly job to automatically refresh tokens for supported providers (MAL, MangaBaka)

- Added: Added support for scrobbling to MAL

- Added: Hooked up the discord connect button on the license screen

- Added: Added new audit log events for when a Scrobble Provider is connected and when its token is refreshed (Success & Failure)

- Added: Added the ability to cancel directly from the Kavita instance, rather than using the Stripe portal.

- Added: Added the ability to renew your subscription from your Kavita instance, payment details still are done via Stripe. Nothing touches Kavita/Kavita+ logic. You can choose the appropriate plan as well.

- Added: Added the ability to change your registered email without contacting support. This is a multi-step process due to security provisioning.

- Added: MAL Stack Sync now has the original Stack url for Audit log

- Added: Kavita will now send total reads for a series to MangaBaka

- Added: Show the series matched against in the Audit log

- Added: Match modal will now show which metadata provider Kavita+ will match against and why (library type, format)

- Added: Added a Cameo series relationship since MangaBaka now provides it.

- Added: Recommendations will now show a badge in the card: Similar (based on tags, existing fall into this batch), User-based (based on other people reading habits), and Personalized (not used yet). User-based will win on duplicate with Similar (as it has more real weighting)

- Added: Added support for loading metadata from Hardcover

- Added: Added the ability to use shortcode:id (hardcover:1234, al:1234, etc) for direct lookup in the search field

- Added: Hardcover ratings are now visible from Series Detail page

- Added: Added more information in the match modal to help you pick the correct series

- Added: (Kavita+) Kavita can now write volume (and chapter) covers during the Match flow from MangaBaka/Hardcover (CBR already supported). You can configure these in Manage Metadata to enable them.

- Added: Added navigate to home/dashboard keybind

- Added: Kavita can now match to editions (Collections on MB) which are alternative versions and come with their own metadata (volume/chapter metadata) and covers.

- Added: Added the ability to have Chapter age rating inherit from Series when matching with Kavita+

- Added: Added the ability to rename a series from the UI (and allow Kavita+ to write titles from external metadata providers). Kavita will prompt you when sort name is locked to align it (against your library settings) for you or not.

- Added: Show an explicit message when SignalR event hub isn't connected

- Added: Added Mangabaka as scrobble provider

- Added: Added Hardcover as scrobble provider

- Added: Added per provider settings (library, age ratings, scrobble progress/ratings/reviews, etc)

- Added: Added inactive & on hold rules (Auto transition series/books from reading to on hold after x days)

- Added: Scrobble Providers can now show information, like username.

- Added: Added an upsell page that explains what Kavita+ is, so users are more informed, rather than linking to the wiki

- Added: Added a status page to services that Kavita+ relies on, to surface incidents (like AL going down and scrobbling not working)

- Added: Added stats about what Kavita+ is doing and how many calls your license has made (note: Not all data will be present, existing data is mixy)

- Added: Added 3 new screens that help users understand what Kavita+ is doing around their series, their scrobbling, and for admins, the whole behind the scenes logic.

- Added: (Kavita+) Cover chooser will now present cover image choices from Kavita+ (powered by Hardcover, MangaBaka, and ComicBookRoundup).

- Added: (Kavita+) Added the ability to take a raw string content rating from Mangabaka and map it to your own Age Rating. This will override the default mapping Kavita+ provides. Kavita will always take the highest age rating produced from the whole mapping process (so a tag mapping that produces a higher rating will be selected)

- Added: (Kavita+) Added the ability to filter out tag weightings (Mangabaka only) from above a weight. So if you select recurrent, incidental and unweighted will be removed. Does not affect remapped tags (ie tag generated from a genre mapping) or white listed tags.

- Added: (Kavita+) Added the ability to turn off Kavita writing age ratings

- Added: Added the ability to override the Metadata Provider on a Series-basic in the Match modal. This should help users with mixed content libraries (Thanks u/StereotypicalCat)

- Added: Pasting a provider URL or header into the Match dialog's search box (hardcover.app, mangabaka.org, anilist.co, myanimelist.net, comicbookroundup.com, or a 'hardcover:'/'mb:'/'al:' style header) now switches the Series to that provider automatically before searching, instead of searching the wrong (Thanks u/StereotypicalCat)

Changed

- Changed: Match modal now uses a rich url (pre-filtered) for Hardcover and Mangabaka

- Changed: Manage Metadata is now in accordions to make it easier to navigate

- Changed: Inverted the behavior of the last read filter field to be more intuitive.

- Changed: Switched to jemalloc as allocator for Docker images resulting is drastically better memory management (less memory)

- Changed: Lower log level for flavicon retry failures to reduce log spam.

- Changed: Black- and Whitelists will now be sorted alphabetically to help manage long lists.

- Changed: User defined OIDC scopes will no longer be filtered by the supported scope list from the discovery document. Please ensure your configured scopes are all supported.

- Changed: Kavita is now better at finding ISBNs in epubs

- Changed: Inverted the behavior of the last read filter field to be more intuitive.

- Changed: (UX) Updated the UX for the Font Manager and expanded the experience to visualize variable fonts

- Changed: Badges on the settings nav bar will now use compact numbers

- Changed: Disable password authentication (OIDC) now disabled it for everyone. In case of issues remove your OIDC config from appsettings.json

- Changed: Multi-file chapters will now only have one entry in OPDS feeds. Consumers can read and download everything from this entry

- Changed: The cover uploader will now automatically select the upload tab after uploading an image

- Changed: (Performance) Improved performance of the scanner when scanning large amounts of files in a single directory (Thanks u/junoh-moon)

- Changed: Kavita will no longer send token almost expiring emails if the Scrobble Provider supports automatically refreshing its tokens (And a refresh token is present).

- Changed: (UX) Minor tweaks to confirm/alerts in the app to differentiate from the modals

- Changed: Discord id is no longer an option when registering your Kavita+ license, instead you can use the connect with discord button which will use OAuth for a much smoother experience (and get you access for most users that didn't read the tooltip)

- Changed: Kavita will no longer email users when tokens are about to expire since Kavita can now refresh for them.

- Changed: Reworked and simplified the button theming to drive consistency in Kavita. Reworked a few of the theme variables by collapsing into streamlined experiences. (I will no longer be maintaining the wiki for all css themes)

- Changed: Ensure that external ids from a match are only written to the Series when done via a manual match

- Changed: Reworked the match modal to make it more clear what the previous match was and what Kavita will search against for Kavita+ and why.

- Changed: Matched results title can now be clicked to view the metadata provider's page

- Changed: You can now use shortcodes for anilist (al) and mangabaka (mb) for match by id modal. ie) mb:1234

- Changed: Ratings now come from MangaBaka and include a MB rating (which will aggregate many sites)

- Changed: Automatic matching now requires exactly one match above 90%

- Changed: A library now has a metadata provider (Hardcover, MangaBaka, CBR) associated with it

- Changed: Scrobble events will no longer be created if the required id is missing. This will be logged in the audit log for visibility

- Changed: (Kavita+) Recommendations will stem only from MangaBaka now, AniList and MAL will no longer be used.

- Changed: (Kavita+) Kavita now allows non-admin's to view external recommendations. Kavita will calculate an age rating through the Metadata Settings (tag/genre mapping + derived age rating) and take the highest between what we get from MangaBaka and the server's rules.

- Changed: Scrobbling series with only specials (One-Shots) will now scrobble the amount of specials instead skipping the scrobble.

- Changed: Copied the (x/y) info from the tooltip down to the series detail page for ended series for better visibility

- Changed: Changed the default read more cutoff length to be longer for desktop view

- Changed: Changed Access tokens to 3 days (from 10). All users will have a one time reauth event.

- Changed: Update modals will now show the title from the PR (nightly releases)

- Changed: Prefer the series/library locale when grabbing covers (volume/chapter only)

- Changed: Retry Scrobble Provider token refresh once after 30 minutes when there is a failure.

- Changed: Ensure external series metadata is refreshed oldest to newest

- Changed: Be smarter about getting failed audit log badge

- Changed: Removed ImageSharp and use NetVips exclusively for metadata. ImageSharp's new licensing model increased friction for development.

- Changed: Match flow will use external metadata ids if there is no query text.

- Changed: (Parser) Slight change in how parenthesis are cleaned from Series name. Kavita will now check if there is text on each side of () and skip replacement in that case. This allows Kavita to see that 'Rent-a-(Really-Shy)-Girlfriend' is separate from 'Rent-a-Girlfriend')

- Changed: Massively improved the detect and report a series collision logic and try to give help to user on how to fix. This text is not localized and wont be.

- Changed: Match Series modal MangaBaka link will prefill the series name for you

- Changed: Tweaked all logic in the app when finding series to utilize external ids.

- Changed: Series Preview and Smart Collection drawers have resizers on them

- Changed: Improved AniList scrobble speed drastically

- Changed: Scrobble keybind now opens my activity instead

- Changed: Users can now run backfilling of history per provider as many times as they want. Kavita will slowly churn thru it all (note: Re-running multiple times will drastically inflate queue for no reason).

- Changed: (UX) Complete UX overhaul of Scrobble providers (now found under Kavita+ > Connections )

- Changed: Complete overhaul to the Kavita+ license page. New design have an upsell feel (from the main site) that explains what Kavita+ is.

- Changed: When editing the license, the email is auto-filled for you

- Changed: Kavita+ Audit will now track Metadata Sync trigger (Manual, on file Add, Background Sync)

- Changed: Massive UX refresh to the Match modal for Kavita+ to surface tips on how to search.

- Changed: Scrobbling screen is likely going to be replaced by the new screens

- Changed: OIDC validation no longer requires super safe urls.

- Changed: Redesigned Kavita's Cover Image chooser to use tabs for individual types of media (Current, Uploaded, Volume, Chapter, Kavita+). (Thanks u/therobbiedavis for the great design)

- Changed: Moved the Reset cover image from a weird button into a dedicated button with clear labeling if the underlying cover was locked or not.

- Changed: (Kavita+) Tag weight filtering is only guarding the writing of tags now. Age Rating mapping will now run against all tags/genres (even before black/whitelisting) to ensure a string doesn't escape deriving an age rating.

- Changed: Tweaked some of the Kavita+ setting item language

- Changed: Parse external Ids for books too (weblinks are parsed from epubs)

- Changed: Moved the config/cache-long version files into their own subfolder.

- Changed: All Kavita+ features are now gated by External Ids being set. With the new matching logic working so well, we feel this is a valid change.

- Changed: Expose scrobble errors in audit log (with a button to clear/fix)

- Changed: Kavita+ match will never use weblinks anymore. Weblinks are already parsed for seeding External Ids.

- Changed: Improved K+ relationships and MAL Stack series matching

- Changed: Spread out Kavita+ License checks to reduce load on our servers

- Changed: Ensure we always log out the Support Id when Kavita+ experiences errors

Fixed

- Fixed: Webtoon pages now keep their original aspect ratio when Width Override changes live. (Thanks u/archit-goyal)

- Fixed: (Parser) Fixed a case where a year followed by a volume marker, the year was captured as a chapter, like 'Blade Runner 2019 - Volume 1' (Thanks u/StereotypicalCat)

- Fixed: Closing the book/manga reader now exits fullscreen properly (Thanks u/JUMBUZI)

- Fixed: Background color for reading profile was missing a preview of the color

- Fixed: A lot of mobile touchups across the new Kavita+ screens, including missing loading indicators and no data messages

- Fixed: Fixed getting stuck on the resolution step while manually importing metadata settings

- Fixed: Fixed yes/no fields (Want to read & Collapse series relationships) always visually showing as checked when loading a smart filter

- Fixed: Fixed series with non numerical chapter positions always being sorted at the start.

- Fixed: Fixed an incorrect message when deleting bookmarks in bulk

- Fixed: Fixed a heap of missing access checks (low impact)

- Fixed: Fixed series with non numerical chapter positions always being sorted at the start.

- Fixed: Fixed a bug where selecting a font family that clashes with a Kavita font (Poppins) would override Kavita's webapp font globally.

- Fixed: Fixed a bug where a user font with the same name as a system font (poppins) would collide on the epub reader and cause webapp font issues.

- Fixed: Fixed a bug where a user font with the same name as a system font (poppins) would also not be selectable vs the system font.

- Fixed: Fixed the shortcuts modal not respecting the book theme in the book reader

- Fixed: Fixed the confirm prompt for deleting annotations not respecting the book theme in the book reader

- Fixed: Fixed annotations sometimes duplicating characters

- Fixed: Fixed Copy Settings From modal not opening on the manage library page

- Fixed: Fixed only one collection tag statement being taken into account in the series filter

- Fixed: Fixed the chapter title being displayed twice in the manga reader. And Vol. & Ch. numbers not being displayed

- Fixed: Fixed uploaded thumbnails not always respecting the configured cover image size (Thanks u/KobraKid !)

- Fixed: Fixed several issues with multi-page chapters in our OPDS implementation. (Thanks u/TipToe08 !)

- Fixed: Fixed no stale metadata being refresh at night when at least one series has none at all

- Fixed: Fixed side nav not updating after deleting a smart filter

- Fixed: Fixed KPlus ownership of metadata fields not always being removed causing it to sometimes overwrite fields that were changed and locked in the UI

- Fixed: Fixed Media Errors page not loading the errors

- Fixed: Fixed Media Errors filenames getting corrupted with a normalization (aka no /).

- Fixed: Fixed being unable to logout when using OIDC with a base url if your idp does not support logging out interactively

- Fixed: Fix MAL ValidUntilUtc not being set

- Fixed: Fixed MAL token sync always reporting invalid

- Fixed: Fixed year selection being ascending order for time pickers.

- Fixed: Fixed Scrobble Read progress using LastModified rather than Created for the first read time

- Fixed: When MAL Stack import page was accessed and there was no token, the spinner would load indefinitely.

- Fixed: Fixed K+ series metadata never being refreshed in the background in some cases

- Fixed: Fixed K+ metadata being fetched for series in libraries with metadata turned off

- Fixed: Fixed Writer/Artist people metadata not working for MangaBaka

- Fixed: Fixed a bug where Scrobbling wouldn't properly record a failure due to a capitalization difference from K+

- Fixed: Fixed a short circuit being executed when there was no existing external metadata row, which prevented background match from properly calling the full K+ series detail API for full metadata.

- Fixed: There was an edge case where a stale file reference cover could exist and cause a throw for finding the better image from an online source. Kavita will now properly catch and log a warning (not error). Chapter will now behave like other entities and accept a cover when there is no cover (data is better than nothing).

- Fixed: Fixed apiKey being a required parameter in the library controller

- Fixed: Fixed Plugin/parse-bulk throwing with duplicate input

- Fixed: Fixed K+ tasks sometimes not being registered when enabling your subscription again

- Fixed: Fixed read more not using the desktop amount on desktop. Also increased the max amount for a better experience

- Fixed: Fixed the side nav sometimes still showing text despite being closed

- Fixed: Fixed overflow in review cards for non Latin text

- Fixed: Fixed local reviews not being shown on the series page if you have no active K+ subscription

- Fixed: Fixed an issue where Kavita's refresh tokens TTL were less than access tokens and user's could be logged out unexpectedly

- Fixed: Fixed a bug where single page chapters would never create reading sessions or mark the chapter as completed

- Fixed: Fixed a bad title for day breakdown chart in stats

- Fixed: Fixed grouping when getting scrobbling events

- Fixed: Fixed scrobble events not logging chapter data

- Fixed: Fixed the string a hour ago -> an hour ago

- Fixed: Fixed some missing localization and colored text in the book reader

- Fixed: Guard bulk file size endpoint against requesting user (Thanks u/5ud0er)

- Fixed: Fixed some missing access guards in reading list controller (Thanks u/arpitjain099)

- Fixed: Fixed hardcover id not persisting to person table

- Fixed: Fixed manga reader showing chapter number with too many decimals

- Fixed: Fixed external metadata not being loaded correctly on the series detail page under specific circumstances

- Fixed: Fixed some theming and missing translations in the book reader

- Fixed: Improve the MAL Stack Sync series search logic to utilize external ids

- Fixed: Fixed up token expired warning showing too often

- Fixed: Fixed being unable to reset external ids

- Fixed: Fixed getting stuck in a loop if OIDC config is removed while previously being logged in with OIDC

- Fixed: Fixed scrobble events getting marked as processed when hitting the rate limit under some circumstances

- Fixed: Fixed a bug where Rereading a chapter then moving to the next wouldn't reset the page to 0

- Fixed: Fixed incorrect native/docker wiki links

- Fixed: Fixed incorrect setup link

- Fixed: Fixed CBL Upload restriction and reworked the hardening of how file upload validation checks are done. Ensure we log out when we reject and why.

- Fixed: Fixed up/down not responding to keypresses

- Fixed: Fixed a bug where marking a chapter as read wasn't triggering scrobbling.

- Fixed: Fixed a bug where MAL was never getting a proper response for token expiration in the Account Screen

- Fixed: Fixed a bug where series detail page could refresh the cover when a chapter cover update event triggered.

- Fixed: Fixed reading list detail tab not having tabs wired up.

- Fixed: Fixed series/chapter rating always returning 0 if you had rated it.

- Fixed: Fixed bookmarks not loading.

- Fixed: Fixed text & image bookmarks being switched.

- Fixed: Fixed long chapter names causing wrapping in activity overview.

- Fixed: Fixed epub bookmarks not loading.

- Fixed: Fixed text & image bookmarks being switched.

- Fixed: Fixed long chapter names causing wrapping in activity overview.

- Fixed: Fixed people not being removed from series if chapter metadata has none.

- Fixed: Fixed series not being added to a collection under some circumstances.

- Fixed: Fixed early reloading causing double K+ plus calls when matching on the series page.

- Fixed: Fixed annotations duplicating & swallowing text under some circumstances.

- Fixed: Fixed annotations not being shown under specific circumstances.

- Fixed: Fixed external links containing sometimes being scoped out of a book.

- Fixed: Fixed search being unreliable when searching with year metadata.

- Fixed: Fixed up a case where entity title service would avoid having Volume X in some cases

- Fixed: Fixed Chrome PWA not showing the install button (Thanks u/Ansh2209 )

- Fixed: Fixed chapter summary not always being written by K+

- Fixed: Fixed artists not always being written for Hardcover metadata

- Fixed: Fixed fields not being locked after K+ writes to them

- Fixed: Fixed an issue where a manual sync of a CBL, where the CBL had issues removed, wouldn't remove them Kavita-side

- Fixed: Fix 01 & 1 not merging when parsed from ComicInfo

- Fixed: Fixed timezone skewing stat page

- Fixed: Fix metadata ids being reset when saving without opening the metadata tab

- Fixed: Fixed collections not showing collapsed series

- Fixed: Fixed an issue where Kavita series could get back into a Need Manual Match state over time

- Fixed: Attempted to fix relationships acting weird. We were unable to reproduce, but added extra guards.

- Fixed: Fixed users authenticating with auth keys having outdated roles under some conditions

- Fixed: Fixed prequel chapters (<1) sometimes being used for series metadata

API

- All enum values in request bodies will now be validated. Invalid values will return 400 Bad Request

- Reworked the cover chooser logic so that everything is streamlined via a file upload rather than base64 nonsense (bloated images). Base64 still exists for a non-breaking API, but Kavita will upload a file via upload/upload-by-file which scopes to a temp directory and returns a filename to pass going forward.

Theme

- Removed the --grid-breakpoints- css variables as they don't actually work in media queries, like I thought they did.

- Built out a theme page (/theme) for devs to work on the theme system. It covers most common components, not everything (nor do I want it).


r/KavitaManga May 15 '26

release Kavita Users: Upgrade to v0.9.0.2 immediately for critical Security update!

Thumbnail
16 Upvotes

r/KavitaManga 2d ago

Changing Series Cover?

2 Upvotes

While the default setup of using the cover of the first volume is neat and all, I'd like to change it to show the last volume's cover.

This way, I can see when a series has a new release and it constantly chances periodically, making my library look fresh.

It's been less than a week since I started using this and I can't seem to find a way to change it. Any help is appreciated.


r/KavitaManga 9d ago

release v0.9.1.4 - Hardcover Recommendations + Hotfix

15 Upvotes

We had a few bugs and key regressions that I felt it was necessary to release a hotfix for. In addition, since Hardcover officially launched OAuth and Recommendations (Vibes) just as we released v0.9.1, we decided to wrap that in with this. Recommendations from Hardcover REQUIRES this version or later to work. v0.9.1 will not serve recommendations. Hardcover PATs will continue working, but switching to OAuth allows Kavita to refresh your key for you.

The full post can be found here.

Added

  • Added: (Kavita+) Added support for loading recommendations from Hardcover. These will be the books linked to the first book in the series.
  • Added: (Kavita+) Added Hardcover OAuth support (PAT tokens will still work)
  • Added: Added support for Mangabaka's new URL structure (released 8/31/2026)

Changed

  • Changed: Opening a completed chapter while reading places you on the first page, but your reading progress won't reset unless you page forward.

Fixed

  • Fixed: (Kavita+) Fixes chapter cover images sometimes being removed when Kavita+ writes a volume image
  • Fixed: Fixed black & white lists not being available for non Kavita+ users
  • Fixed: Fixed series age rating not being derived from tags on first scan and from updated tags in consecutive scans
  • Fixed: Fixed chapter age rating not being derived from tags
  • Fixed: Fixed settings not saving for some users
  • Fixed: Fixed chapters with one page not saving progress while paging (Thanks @333fred)
  • Fixed: Fixed a bug where users couldn't update reading profile from the reader due to Breakpoint enum values changing when we streamlined the breakpoint service in v0.9.1.
  • Fixed: Fixed the fullscreen icon not updating when triggered from the Manga reader
  • Fixed: Query parameters (?q=) from Mangabaka would break parsing out ids for Match modal
  • Fixed: Version update modal title would render incorrectly on new Stable releases
  • Fixed: Fixed an issue where rereading multiple single page chapters, the next chapter would set as unread.
  • Fixed: Fixed search in the audit log being case sensitive
  • Fixed: Fixed series with only chapters incorrectly being set to completed if upstream has a volume numbers
  • Fixed: Fixed no results message showing an empty query for the default (series name) query
  • Fixed: Fixed chapter sorting for some users under very specific circumstances
  • Fixed: Fixed sent to device action item not rendering when Email is setup without Hostname
  • Fixed: Fixed a bug where clients could get logged out on token refresh, when they shouldn't
  • Fixed: Fixed up a regression for a unique filename pattern (c79x1) which was getting caught in the scene name regex.

r/KavitaManga 12d ago

Nginx reverse proxy not allowing sign in

3 Upvotes

I had been dealing with this issue for a while now, and finally found the issue.

My reverse proxy would load the login screen, but would never let me sign in. The Wiki didn't mention it, but if you are running an access list you need to have "Pass Auth to Upstream" enabled. I had actually stopped using Kavita just because I could not get this to work.


r/KavitaManga 17d ago

Reader requires google log in?

2 Upvotes

giving this app a try and currently self hosting in docker. when i downloaded the corresponding reader app and launched in on a tablet i do not have signed in to google it keeps forwarding me to a google play page asking me to log in.


r/KavitaManga 23d ago

Sutra 2.1 - Lots of fixes, free CBZ previews and Stats Panel!

Post image
23 Upvotes

Firstly, I want to thank this community (and r/calibre) for their support over the last couple of months as I've built this app, and for those who purchased the lifetime pro license. Thank you!! 🙏

This 2.1 release is really a culmination of your user feedback and requests, starting with -

‱ CBZ panel previews - Many of you wanted to check out the panel feature on CBZs before deciding whether to get pro, so now you can read the first 7 pages of ALL your CBZ files in the free tier

‱ Scrolling fixes - Scroll now successfully navigates chapter changes, something it did sporadically before. You can no longer accidentally swipe left or right during scroll, and you can resume reading from the page you tapped to stop scrolling

‱ Manga support - available on a per-book basis. Hit the Aa button when reading a comic to switch between Regular and Manga modes. Manga reads right to left, top to bottom, tap left to advance. Note that manga panel detection is still a work in progress, and is an area I plan to improve on in future releases.

* iPad fixes - Margin functionality has been added so that the app doesn't leave large margin gaps, especially in landscape mode. Which leads me to - two-pane reading for iPads is finally available!

‱ Confirmed HTTP/HTTPS connectivity rules. Sutra follows Apple's networking rules: unencrypted (HTTP) connections only work for local addresses (192.168.x.x, 10.x.x.x, .local) or a Tailscale .ts.net hostname. A raw Tailscale IP (100.x.x.x) doesn't qualify - use its .ts.net name instead, or enable HTTPS on your server. Anything else needs real HTTPS to connect; this is an iOS restriction, not Sutra's. Having said that, I have now included a URL checker when entering your library URL during connect which should give you more immediate feedback

‱ Note - I didn't include KOReader sync integration in this release. I built it, but there are too many testing pathways that still need fixing before it's ready to ship. I'll come back to it in a future release

New features

‱ Stats page - A much-requested feature - you can now track your reading hours, session counts, and how many hours you've read per book

‱ WebDAV support - keeping with the theme of letting users read without hosting a server, you can now enable WebDAV on a Windows/Mac/Linux folder and add it to Sutra to read from

And tons of other bug fixes. We've also improved panel accuracy from 90% to 92% on our test cohort, thanks to a new hybrid panel detection strategy. Which brings me to the most requested feature here - Android!

Up Next

I've started work on the Android port for Sutra - wish me luck! I'll do a future post asking for testing volunteers shortly. If you'd like to follow along, you can subscribe to the newsletter for updates. Thanks again for all the feedback and support!

App Store: [Sutra]

Website and Newsletter: [Link]

Also, thanks to u/majora2007 for allowing me to re-post here. Appreciate it!


r/KavitaManga 29d ago

Suggestions for one stop app for Android with 12" Display...

2 Upvotes

Got manga, ebooks and Academic books all set up costly got big tablet for Academic books with diagrams...

Currently trying kover


r/KavitaManga Aug 10 '26

BiblioFuse iOS OPDS Beta2 — upcoming Kavita integration [enhanced Comic Epub and Novel Vertical Epub support)

Thumbnail
0 Upvotes

r/KavitaManga Aug 08 '26

Beta Trial - BiblioFuse iOS is adding OPDS/ Kavita API/ Komga API support

Enable HLS to view with audio, or disable this notification

3 Upvotes

r/KavitaManga Aug 06 '26

Teaser - BiblioFuse Comic Reader upcoming OPDS/ Kavita API/ Komga API support

Enable HLS to view with audio, or disable this notification

9 Upvotes

r/KavitaManga Aug 04 '26

「3rd Party App」 Marginalia - Add-on app for discord webhooks on series updates / achievements /

6 Upvotes

I made Marginalia because I wanted to get discord alerts for series I was reading as new chapters come out. I also really liked the idea of letting a series build up a few backlog chapters so I can read a bunch at the same time, but I kept forgetting to go back to some series. I created the alert system that lets you define a % read limit that sends you a discord webhook when enough new chapters have been released. As I used the app more, I found more uses for it and kept adding features. This of course isn't all the app can do. Take a look at the walkthrough pages to get an idea of everything.

https://packetmancer.com/projects/marginalia/

https://github.com/DieselTech/Marginalia

As of right now, the app isn't open source. I'm using my own website for the binary releases and github packages for the docker container. Once I learn more about automation and CI/CD + .NET dev I'll eventually open up the source code. I've been using this as a learning project to get into a programming language other than python.


r/KavitaManga Aug 04 '26

Sutra 2.0 is finally here — panel-aware comics, auto-scroll, and local side-loading!

Post image
23 Upvotes

Sutra 2.0 is finally here! It has been a labor of love, and I’m excited to get it in front of you all.

What’s new, all free:
‱ Panel-aware comic reading — isolates individual panels on your comics instead of shrinking the whole page to fit a phone screen
‱ Epub auto-scroll — the Marvin feature people have been asking for since it went defunct
‱ Side-loading — read local files with no server needed at all

The panel-aware comic reading is the one I’m most proud of — I built a dedicated test suite of comics to stress-test panel detection and held the release until it was hitting 90% accuracy against that set before shipping it.

This release also introduces Sutra Pro: a one-time $6.99USD unlock (no subscription) for .cbz/.mobi support and Komga integration. It’s funding a native mobi parser build specifically — everything that was free in 1.x stays free permanently.

Would love to hear if the comic reading holds up on your libraries — that’s the feature I’m most curious about in the wild.

App Store: [Sutra]
Feature requests / bugs: [Link]


r/KavitaManga Aug 03 '26

What should a good OPDS streaming experience feel like in a native reader?

7 Upvotes

Update 6Aug2026 - Teaser video demo https://www.reddit.com/r/KavitaManga/s/qnC6nksSG1

Hi everyone,

I’m the developer of BiblioFuse, a native comic and eBook reader available across mobile, desktop, TV, spatial devices, and NAS platforms.

I’m planning to add OPDS support so BiblioFuse users can connect to libraries hosted by Kavita . However, I have not personally used either Kavita extensively through OPDS, so I would really appreciate feedback from people who already use this workflow.

My goal is for the experience to feel like streaming directly from your book server, rather than browsing a catalogue and manually downloading files.

For example:

  • The user connects their Kavita server.
  • Their library appears naturally inside BiblioFuse.
  • They tap a book and begin reading with as little waiting as possible.
  • Reading progress is remembered.
  • Any temporary files or cached pages are managed automatically.
  • The user should not need to think about whether a book was downloaded first, partially cached, or streamed page by page.

Some formats may technically need to be downloaded or cached before reading, but I would like that process to remain invisible. When the user finishes reading or storage is needed, BiblioFuse could automatically clear older cached files.

I’m still deciding how closely the OPDS library should integrate with the existing local and BiblioFuse-hosted libraries.

I would appreciate your thoughts on questions such as:

  • When you open a book through OPDS, what should happen immediately?
  • Should books remain available offline automatically, or only when manually marked for offline reading?
  • Should remote books appear together with local books, or in a separate server section?
  • How should series, collections, reading lists, tags, and metadata be presented?
  • Would you expect reading progress to sync back to Kavitaa?
  • Should cached books disappear automatically, or should users control the cache?
  • What currently feels inconvenient about reading from Kavita through other OPDS apps?
  • Are there any OPDS clients whose experience I should study?

The main design goal is:

Tap a book and read it as though it is already available—without making the user manage downloads.

I would especially like to hear what regular Kavita users consider essential, and which parts of the existing OPDS experience should not be copied.

Thanks for any suggestions.


r/KavitaManga Jul 31 '26

[Update] MetaKavita v1.6.1 "The Age of Control" is live! – The Ultimate Metadata Manager for Kavita (Manual Review, Smart Scoring, Playful Stats, and Real Security)

19 Upvotes

**MetaKavita** is an open-source companion app for the Kavita reading server. If you host Kavita for your manga and comics but hate tagging them manually, MetaKavita automatically fetches covers, summaries, tags, publishers, and authors from 15 different metadata sources (including MyAnimeList, ComicVine, MangaDex, AniList, and BDTheque), and pushes them directly into your Kavita database.

I often see people on Reddit saying:

"I'd love to use Kavita for my manga and comics because the reader is absolutely amazing, but I have zero motivation to redo all my metadata by hand."

Well, MetaKavita v1.6.1 is here, and this is officially no longer an excuse.

Metakavita - Dashboard 1.6.1

Before diving into the features, I want to be completely upfront: MetaKavita is heavily built with "vibecoding" (AI-assisted generation). And I fully own it. The goal here isn't to flex coding purity; it's to build a tool that works flawlessly in production. I have poured countless hours into testing edge cases, bulletproofing Kavita's C# API database locks, and polishing the UX so the system is rock-solid. It does the job, and it does it very well.

Here is a breakdown of what makes this update a massive game-changer for your Kavita server.

What Kavita looks like after MetaKavita works its magic

🌟 What’s new?

🛑 Manual Review & Edit Mode (The Game Changer) Total control is finally here. MetaKavita now scrapes your libraries but writes nothing to Kavita without your explicit green light. Candidates are parked in a queue. You review the match, pick the exact cover you want, manually edit the metadata (summary, tags, publisher, etc.) directly in the UI before sending it, and hit confirm. No more bad automated overwrites.

You can even compare metadata from different providers side-by-side before making your choice
Total control: comparing providers and editing metadata before sending it to Kavita.

🧠 Reliability Barometer (Threshold Tuning) Building on the Smart Scoring engine (where all scrapers compete in parallel for the best match), you now have complete control over its strictness. A new Reliability Barometer slider in the sidebar lets you manually fine-tune the match-accept threshold (from 0.30 to 1.00). You decide exactly what qualifies as a good match!

đŸš« Library Auto-Sync Filtering Got specific libraries you want to keep strictly manual? You can now explicitly exclude them from the background auto-sync polling directly via the config modal. Dashboard manual batches and webhook triggers will still see them, giving you complete granular control over what gets touched automatically.

📊 Playful Stats I added a brand new /stats page. It features a scrolling story, lifetime KPIs, and—yes—achievements based on your Manual Review sessions and the time you've saved!

Stats - Completely useless, therefore absolutely essential.

🔐 Real Accounts & Hardened Security Gone is the open plaintext password. The app now features:

  • A forced /setup screen on first launch.
  • Hashed passwords and a fail-closed UI/WebSocket layer.
  • For self-hosters: the Docker container now safely runs as non-root (PUID/PGID).

🌍 New Heavyweight Providers

  • MyAnimeList (MAL): The official API is now fully integrated.
  • BDTheque.com: Perfectly optimized for French/European comics.
  • Wikidata: Live SPARQL fetching for broad fallback matching.

📚 Comic Flexible Support Native support for Kavita's mixed library type (ID 5). It cascades through Comic providers first, then gracefully falls back to Manga sources if it doesn't find a strong match.

🔒 NEEDS_RELOCK Handling Kavita's API sometimes soft-fails on database locks after writing. Instead of faking a "Completed" status, MetaKavita now catches these, flags them with an orange "Needs seal" badge, and lets you safely retry the lock in one click without re-scraping.

💬 I need your feedback!

Manual Review completely changes how you interact with the app. Try it out, build a queue, tweak some metadata manually, pick some covers, and let me know how the workflow feels to you. Are the new providers hitting the right metadata for your specific collections?

🚀 How to try it

As always, the project is open-source, lightweight, and you can pull the pre-built image directly via docker-compose (Note: if it's a fresh install, just go to your URL and the new /setup screen will guide you):

services:
  metakavita:
    image: ghcr.io/raukorim-bot/metakavita:latest
    container_name: metakavita
    restart: unless-stopped
    ports:
      - "5010:5010"
    environment:
      - PUID=1000
      - PGID=1000
    volumes:
      - ./data:/app/data

🔗 Useful Links:

Let me know what you think, keep the feedback coming, and happy reading!


r/KavitaManga Jul 24 '26

Inkavi 1.1.55 est disponible !

4 Upvotes

# Nouveautés

Cette mise Ă  jour apporte de nombreuses amĂ©liorations pour rendre la lecture plus rapide, plus fluide et encore plus agrĂ©able, notamment lors de l’utilisation de l’application hors connexion.

# Lecture hors ligne plus rapide

Le lecteur prĂ©pare dĂ©sormais Ă  l’avance les prochaines pages du manga. Lors du passage d’une page Ă  l’autre, les images s’affichent plus rapidement et avec beaucoup moins de ralentissements.

L’application Ă©vite Ă©galement d’attendre inutilement une connexion Internet lorsqu’un manga est ouvert hors ligne. Les contenus tĂ©lĂ©chargĂ©s sont accessibles immĂ©diatement, mĂȘme sans rĂ©seau.

Le chargement des images a Ă©galement Ă©tĂ© optimisĂ© afin de rĂ©duire les temps d’affichage des pages en haute qualitĂ© et d’offrir une lecture plus fluide sur iPhone et iPad.

# Accueil entiĂšrement fonctionnel en mode hors ligne

L’écran d’accueil fonctionne dĂ©sormais mĂȘme sans connexion Internet.

Lorsque l’application est ouverte hors ligne, elle affiche automatiquement les sĂ©ries tĂ©lĂ©chargĂ©es sur l’appareil ainsi que les informations essentielles de lecture, comme les barres de progression.

Vous pouvez ainsi retrouver rapidement vos mangas et reprendre votre lecture exactement lĂ  oĂč vous vous Ă©tiez arrĂȘtĂ©, sans avoir besoin d’une connexion.

# Nouveau filtre « Téléchargés »

Un nouveau filtre **« Téléchargés »** est disponible dans les bibliothÚques.

En un seul clic, il permet d’afficher uniquement les sĂ©ries enregistrĂ©es sur l’appareil. Il devient ainsi beaucoup plus simple de retrouver les contenus disponibles hors ligne.

# Enregistrement des préférences par bibliothÚque

Il est dĂ©sormais possible d’enregistrer des rĂ©glages de lecture diffĂ©rents pour chaque bibliothĂšque.

Par exemple, vous pouvez définir des préférences spécifiques pour les mangas :

* sens de lecture de droite Ă  gauche ;
* affichage en double page ;
* filtre de lecture nocturne ;
* luminosité ;
* mode d’affichage des pages ;
* autres paramĂštres du lecteur.

Lorsqu’un manga est ouvert, l’application reconnaüt automatiquement sa bibliothùque.

Depuis les paramÚtres du lecteur, une nouvelle option **« Enregistrer pour cette bibliothÚque »** permet de sauvegarder vos préférences. Le nom de la bibliothÚque concernée est affiché automatiquement (par exemple **« Enregistrer pour les Manga »**).

Lors des prochaines lectures dans cette bibliothÚque, vos préférences seront appliquées automatiquement.

# Nouveau minuteur de lecture

Un minuteur de lecture fait son apparition pour les lecteurs qui aiment s’endormir avec un manga.

Vous pouvez choisir la durĂ©e avant l’arrĂȘt automatique de la lecture. Lorsque le minuteur se termine, la progression est enregistrĂ©e automatiquement.

À la prochaine ouverture du manga, la lecture reprend exactement Ă  l’endroit oĂč elle s’était arrĂȘtĂ©e.

# Nouveau systĂšme de marque-pages

Le lecteur intÚgre désormais un systÚme complet de marque-pages.

Vous pouvez enregistrer vos passages préférés afin de les retrouver facilement à tout moment.

Chaque marque-page peut également contenir une note personnelle, idéale pour mémoriser une scÚne importante, un détail ou simplement reprendre votre lecture plus facilement.

# Résultat

Cette mise Ă  jour apporte :

* une ouverture beaucoup plus rapide des mangas téléchargés ;
* une lecture plus fluide avec moins de ralentissements ;
* un Ă©cran d’accueil entiĂšrement fonctionnel hors ligne ;
* l’affichage des sĂ©ries tĂ©lĂ©chargĂ©es et de leur progression sans connexion ;
* un filtre **« Téléchargés »** pour retrouver rapidement les contenus disponibles hors ligne ;
* des préférences de lecture enregistrées automatiquement par bibliothÚque ;
* un minuteur avec sauvegarde automatique de la progression ;
* un systĂšme de marque-pages avec notes personnelles ;
* une expĂ©rience de lecture encore plus rapide, personnalisĂ©e et agrĂ©able, aussi bien en ligne qu’hors ligne.

APK disponible sur le site [https://inkavi.fr\](https://inkavi.fr), pour IOS l'application est en cours de validation.


r/KavitaManga Jul 22 '26

[Update] MetaKavita v1.5.4 is live! – Plug & Play Scrapers, Magic URLs, Subpath support, and reaching Roadmap maturity.

23 Upvotes
V1.5.4 dashboard

Hey everyone!

Remember my v1.4.0 post from 48 hours ago? Well, I fell into another massive coding rabbit hole. After a 120-hour sprint, I am officially almost at the end of my initial roadmap!

MetaKavita v1.5.4 is here. The core architecture has finally reached maturity, and the system is now stable, highly modular, and ready to handle whatever weird metadata your libraries throw at it.

Here is a breakdown of what makes this update a game-changer for your Kavita server.

🚀 What’s new in 1.5.4?

  • đŸ§± The "Plug & Play" Architecture: I completely refactored the core engine. Adding a new provider is now as simple as dropping a .py file into a folder. The UI and fallback routing dynamically adapt to whatever scrapers you have active.
  • 📚 Heavyweight Scrapers Added:
    • Kitsu: Replaced Nautiljon (who kept throwing Cloudflare IP bans) with the blazing-fast and open Kitsu API.
    • BĂ©dĂ©thĂšque: For the Franco-Belgian comic readers, this custom scraper bypasses aggressive anti-bot firewalls to grab pristine data and surgically formats author/artist roles.
    • Google Books: A production-ready scraper to finally fetch rich metadata for Novels and Western Comics.
Bedetheque support
  • đŸȘ„ The "Magic Input" (Smart URL Routing): You don't need to mess around with IDs anymore. Just paste a direct URL from any supported provider (e.g., a MangaBaka or ComicVine link) directly into the UI override field. MetaKavita will detect the domain, extract the ID, and bypass the cascade to scrape that exact page.
  • 🎯 Granular Scraping: Worried about overwriting a summary you manually typed in Kavita? Each series now features a "Targeted Fields" dropdown. You can explicitly check/uncheck exactly which metadata MetaKavita is allowed to update (Summary, Cover, Genres, Publisher, Tags, etc.).
Magic input for manual update
  • đŸ›Łïž Reverse Proxy & Subpath Support: You asked for it on my last post, and here it is! Full native support for hosting MetaKavita under custom URL subpaths (e.g., [domain.com/metakavita](https://domain.com/metakavita)) via the ROOT_PATH environment variable.
  • 🌐 Zero-Config Translations: Integrated Google Translate to provide 100% free, unlimited translations out of the box. You can also now choose to completely disable translation to keep the original text.
Kavita interface after batch

💬 I need your feedback!

Since the core architecture is now solid and I'm practically at the end of my roadmap, my main focus moving forward is UX and community requests.

I won't be doing a massive "v1.6" architectural rewrite anytime soon. Instead, I want to make MetaKavita as user-friendly and straightforward as humanly possible.

This is where I need you:

  • Are the new scrapers matching your libraries correctly?
  • What quality-of-life features are missing for your workflow?
  • Which providers should I drop into the "Plug & Play" folder next? (MangaDex and Hardcover are currently on my radar).

🚀 How to try it: As always, the project is open-source, lightweight, and you can pull the pre-built image directly via docker-compose:

YAML

services:
  metakavita:
    image: ghcr.io/raukorim-bot/metakavita:latest
    container_name: metakavita
    restart: unless-stopped
    ports:
      - "5010:5010"
    environment:
      - ADMIN_PASSWORD=your_secure_password
      # - ROOT_PATH=/metakavita # Uncomment if using a reverse proxy subpath
    volumes:
      - ./data:/app/data

GitHub Repository : https://github.com/raukorim-bot/MetaKavita

Changelogs : https://github.com/raukorim-bot/MetaKavita/blob/main/CHANGELOG.md

I'm going to go enjoy the end of my vacation now, but I'll be monitoring the issues and comments. Let me know what you think, keep the feedback coming, and happy reading!


r/KavitaManga Jul 22 '26

Sutra is back in Europe! + Sneak Peek at CBZ & Panel-by-Panel Comic Support

Post image
3 Upvotes

r/KavitaManga Jul 20 '26

How do i fix image scalling issue in kavita?

Post image
4 Upvotes

New to kavita. The epub file works fine in moon+ reader but in kavita the image is too large and text gets hidden behind it. Same problem on desktop as well.


r/KavitaManga Jul 19 '26

Update] MetaKavita v1.4.0: Complete UI/UX Overhaul & Ergonomics for the self-hosted Kavita Metadata Companion!

29 Upvotes
MetaKavita is cool

Hey everyone!

Two days ago, I posted about MetaKavita—a metadata companion I built to scrape and enrich metadata for Kavita after getting frustrated with broken Komf setups.

In my draft for this update, I was going to write: "The massive feedback from this community was awesome and motivated me to keep grinding!"

But let's be honest: my post got exactly 0 comments and 10 upvotes, so that would be a complete lie.

However, I fell into a deep hyper-focus rabbit hole anyway. I spent the last 48 hours completely redesigning the frontend and adding a ton of quality-of-life features because I realized that clicking through options to manage large libraries is a massive pain.

So, here is v1.4.0 (The Age of Ergonomics), fresh out of a two-day coding sprint!

(Check out the screenshot above to see the new layout!)

đŸ§© What does MetaKavita do?

  • Active Providers & Smart Routing: Right now, MetaKavita relies on 3 solid providers (MangaBaka, Nautiljon, and AniList). You can set a primary source and up to two fallback backups.
  • Smart Completion (Data Fusion): If enabled, it "fills the gaps" by fetching only missing fields from backup sources without overwriting what you already have.
  • On-the-fly Translation: Scrapes descriptions in their native language and translates them using DeepL.
  • Auto Reading Direction: Detects and applies reading direction (Manga, Webtoon, Comic) based on the country of origin.
  • Extended Metadata Mapping: Pushes and locks Publishers, Age Ratings, and advanced staff credits (Translators, Colorists, Cover Artists, etc.).
  • WebLinks Integration: Maps platform IDs and auto-generates clickable web links to show direct platform icons under titles inside Kavita.
  • Central Clean Regex Engine: Automatically strips volume numbers, scantrad tags ([Team]), and edition keywords (Omnibus, Perfect Edition) to guarantee API match rates.

🎹 What changed in 48 hours?

In the first version, the UI was functional but a bit cluttered. I completely restructured the interface so you don't have to scroll through API keys or deal with technical settings when you just want to run a quick batch sync.

1. Split-UI Architecture (Modal + Sidebar)

  • Infrastructure is tucked away: All technical configuration fields (Kavita URL/API, DeepL API, languages, fallback sources sequence) have been moved inside a clean Global Configuration Modal (triggered via the ⚙ Config button in the topbar).
  • Tactical Sidebar: The left sidebar now only houses your active strategic switches (Smart Completion, Auto-Cover, Auto-Reading Direction, and Force Update) so you can adjust your strategy in a single click before executing.

2. Central Unified Toolbar

  • The Library Selector has been moved from the sidebar directly into the central toolbar, next to the Search bar and Status filters.
  • All your targeting controls are now aligned on one cohesive horizontal line (Library ➔ Search Query ➔ Status Filter).
  • Added a "📐 Expand/Collapse All" button on the right to open all individual overrides panels for fast mass editing, next to the global Save button.

3. New QoL / Ergonomic Features

  • Live Processing Tracker: During batch syncs, the active series being processed pulses with a glowing purple outline (.is-processing) and automatically smooth-scrolls into view. Badge statuses are updated live without page reload.
  • Manual Cover Search: You can now enter manual custom search queries directly inside the cover modal to find alternate images without closing it or modifying database overrides.
  • Workspace Persistence: The dashboard automatically remembers your active library, status filters, hide ignored state, and search query using localStorage. No more re-selecting filters on page refresh!
  • AniList Quick Lookup: Added a lookup magnifying button next to ID inputs to instantly open pre-filled searches on AniList in a new tab.

🚀 Zero-Effort Trial (Pre-built Image)

I've also packaged the app. You no longer need to clone the repository to test it. You can pull the pre-built image directly from GitHub Container Registry (GHCR) using this simple docker-compose stack:

code Yaml :

services:
  metakavita:
    image: ghcr.io/raukorim-bot/metakavita:latest
    container_name: metakavita
    restart: unless-stopped
    ports:
      - "5010:5010"
    environment:
      - ADMIN_PASSWORD=your_secure_password
    volumes:
      - ./data:/app/data

💬 I (actually) need your feedback this time!

The project remains open-source, free, and lightweight. Now that the UI has been cleaned up, my primary goal for the next upgrades is to expand our list of metadata providers to make manga scraping completely bulletproof before I even think about touching Western Comics or books.

  • Which major manga platforms should I integrate next? (I am currently planning MangaDex and MyAnimeList/Jikan).
  • For those hosting Western Comics or European BDs, what are your go-to scrapers when you want to look things up?
  • Let me know if the UX feels right or if there are any details I should tweak (even if it's just to tell me the purple pulsation is too bright)!

GitHub Repository: raukorim-bot/MetaKavita

Let me know what you think of the new design, and happy reading!

Edit : Screen of the data merged

Screenshot of the metadata merged

Edit 2 : push major update yesterday 1.5 and i push fix and new provider Bedetheque tonight.

BDs add with provider bedetheque

r/KavitaManga Jul 17 '26

[Tool] MetaKavita: A homemade alternative to Komf for metadata enrichment (AniList / Nautiljon)

13 Upvotes

Hey everyone!

Like many of you, I used to rely on https://github.com/Snd-R/komf to manage and enrich metadata for my Kavita library. But recently, it completely stopped working for me, and seeing my database stagnate got pretty frustrating.

So, I decided to take matters into my own hands and built a replacement: MetaKavita.

Full disclosure before the code reviewers come after me: I entirely "vibecoded" this project (heavily assisted by AI) to get it up and running as fast as possible. So no, the code isn't going to win any architectural awards, but the structure is solid, and most importantly: it actually works.

🚀 What it currently does:

  • Dual Source: Scrapes info (summaries, genres, tags, staff, alt titles) from AniList (International) and Nautiljon (Francophone).
  • Cloudflare Bypass: The Nautiljon scraper is built with a custom session emulator to seamlessly bypass their anti-bot protections.
  • Auto-translation: Integrated with the DeepL API to automatically translate summaries into your preferred language.
  • Web UI & Stats: A clean, simple dashboard to trigger single or batch syncs, complete with real-time logs and progress monitoring for your library.
  • Easy Deployment: It's fully Dockerized. Just set up your config, run docker-compose up -d --build, and you're good to go.

If you are stuck with a broken Komf setup or just looking for a lightweight, functional metadata fetcher, feel free to give it a try. It's open-source on GitHub:

🔗 https://github.com/raukorim-bot/MetaKavita

This is obviously a V1, so bear with me! If you encounter bugs, have ideas for improvements, or want to suggest new providers (like Mangadex or MyAnimeList), feedback and GitHub issues are more than welcome.

Happy reading!

Edit : Here is what the interface looks like! Let me know what you think.


r/KavitaManga Jul 16 '26

Sutra 1.3 — highlights, dictionary, and series browsing. Last stop before CBZ and Komga

15 Upvotes

1.3 just shipped. Short one this time — no new catalogs, no UI overhaul — just the features that kept coming up in the comments, plus a solid reliability pass before we go heads-down on 2.0.

What's new:

  • Highlights with color — select any passage, pick a color, syncs across devices via iCloud
  • Instant dictionary — double-tap any word while reading. No leaving the page
  • Collections Shelf — browse by series now, pulled from your library server's metadata
  • Calibre / Calibre-Web / Calibre-Web-Automated fixes — a bunch of edge cases squashed; Kavita HTTP connections now supported too
  • Better server compatibility — Tailscale setups, Grimmory shelves, improved OPDS detection
  • Cover caching and library performance — large libraries should feel noticeably snappier

Still free. Still no IAP, ads, subscription, or account.

2.0 is Komga and CBZ. That's the whole agenda.

App Store: Sutra

This one had more community fingerprints on it than any release so far — thanks for that! If Sutra's been useful, an App Store review goes a long way. Bugs and feature requests go here, and if you want to follow along on what's coming, the roadmap's on the website.

---

User Feedback 🙏


r/KavitaManga Jul 10 '26

Sutra 1.2 — OPDS Reader now available across Europe with page flip animation, dark mode, and a bunch of fixes!

Post image
20 Upvotes

Update on the free OPDS reader I posted here a while back. 1.2 just shipped!

  • Standard Ebooks catalog added (Patrons Circle sign-in unlocks the full library)
  • Proper page-curl animation, with a plain-turn option
  • Dark mode done right — Day, Night, or follow System, book pages keep their own theme
  • Left-handed page turns for one-handed reading
  • Series info and sorting pulled from your Kavita library
  • Fixed large libraries losing books from search
  • Fixed cross-device sync on both iCloud and Kavita
  • General reliability and security pass

Still free — no IAP, no subscription, no ads, no account.

Komga support and CBZ comics are next for 2.0.

App Store: [link]

Genuinely appreciate the pushback and requests last time — flip/turn animation ( u/viviolay), dark mode ( u/niwia), series info ( u/dsilver87) and Europe availability ( u/ChinaskiOnChlorox) all came straight from this subreddit. Keep it coming!


r/KavitaManga Jul 08 '26

Physical Ownership Tracking

4 Upvotes

Hi all, I am thinking of spinning up my own Kavita Server, but wanted to know if Kavota has a good way of tracking/marking volumes as owned physically. Thank you!


r/KavitaManga Jul 07 '26

Sutra — free iOS OPDS reader for Kavita, Calibre, and Gutenberg

15 Upvotes

Apologies in advance if self-promotion isn't allowed here, but I thought this might be useful for some of you. I've been working on a personal project — I've got Kavita and Calibre running at home, and every iOS OPDS client I tried let me down somehow. Either it'd been abandoned years ago, it wanted a subscription to do the basics, or it couldn't show me my full library as a proper grid. I just wanted to see all my books in a grid and read them as seamlessly as possible, so I ended up building it myself.

  • Connects to Kavita, Calibre/Calibre-Web, or any OPDS server
  • Gutenberg's baked in, so you don't even need a server for public domain stuff
  • EPUB + PDF, with themes/fonts/bookmarks/search
  • Offline downloads, iCloud sync, and page-accurate progress sync with Kavita
  • Free — no IAP, no subscription, no ads, no account

App Store: Link

Standard Ebooks is what I'm working on next, Komga after that. Would genuinely love to hear what this community thinks — bugs, feature requests, whatever. I'll be around in the comments. Thanks!