Kavita Changelog

What's new in Kavita 0.8.1

Apr 23, 2024
  • Added:
  • Added: Added SortOrderLocked field for upcoming ability to set it in the UI, allowing customization of sort order on Series Detail page. (This is not yet in the UI, just in the DB and code)
  • Changed:
  • Changed: Changed how often the 1 version out of date check occurs to be every 4-6 hours instead of 1-2 hours.
  • Changed: Allow jumpbar to function on pages as long as there is no custom sort
  • Changed: When refusing OPDS download due to lack of role, use 403 Forbid.
  • Changed: Don't show any of the internal information on publication status tooltip when the total items is set to 0 (or unset)
  • Changed: Updated Comic Vine library when falling back to taking Series name from directory because no Volume tag exists, don't clean specials from the directory name.
  • Fixed:
  • Fixed: Fixed a bug where some series detail pages have a ton of extra space
  • Fixed: Fixed a bug where series folders with nested specials would get a bad LowestSeriesFolder meaning series scans wouldn't do anything important.
  • Fixed: Fixed a bug with default ordering failing when a series has a special
  • Fixed: Fixed a bug where the very out of date modal wouldn't have the correct number of version out of date.
  • Fixed: Fixed a bug where stacked image chapters wouldn't move all the files over to cache
  • Fixed: Fixed an oversight where brightness control in manga reader wasn't applying to webtoon reader
  • Fixed: Drastically sped up switching between card/list mode on series detail for large series
  • Fixed: Fixed Continue -100000 when a series is read on series detail page
  • Fixed: When parsing from fallback libraries, use comic parsing only for Comic/Comic Vine library types.
  • Fixed: Fixed a bug where weblinks remove would not work well. Now it works more like you would assume.
  • Fixed: Fixed a bug where active tab wouldn't default to volumes on comic libraries when there were no issues or specials.
  • Fixed: Fixed a bug where progress bar on kavita+ metadata progress wasn't showing red.
  • Fixed: Fixed a bug where on Chrome bootstrap sliders were blue and not the primary color.
  • Fixed: Fixed a bug where chapters could duplicate due to some regions using ',' as a decimal separator. Now in Kavita, whenever we stringify any numbers, it will always choose English's way as that is how it was designed.
  • Fixed: Fixed a case where non-English locales wouldn't parse floats correctly for x.x chapters.
  • Fixed: Fixed an exception being thrown on startup for fresh users
  • API:
  • Deprecated series/chapter-metadata API in favor of just including the metadata with all chapter entities.

New in Kavita 0.8.0 (Apr 13, 2024)

  • Added:
  • Added: Added a new library type aimed at Light Novels. This will use card list layout by default (overriding user preferences) and is eligible for Kavita+ metadata/scrobbling. The regular book library no longer is Kavita+ eligible.
  • Added: Added a label on Library settings modal to help admins know which libraries are eligible for Kavita+ scrobbling/metadata pull.
  • Added: (Kavita+) Implemented a background prefetch task that will slowly refresh series from Kavita+ (reviews, recs, ratings).
  • Added: (Kavita+) Kavita will now prefetch data from Kavita+ on new series. This and the prefetch background task is limited to 50 series per 12 hours. Loading on-demand will still work as normal and is not restricted.
  • Added: Chapters now sort by SortOrder. SortOrder is generated from chapter number, but can be overridden (in a future update). This allows for custom sorting for issues that aren't purely numerical. SortOrder will handle cases like 19, 19.HU, 19.BD, 20 without any user intervention.
  • Added: You can now have Chapter 0, -1, etc.
  • Added: This fully supports chapters with non-numeric issue numbers, like Alpha, 19.HU, etc.
  • Added: Added a new library type: Comic Vine which is aimed at users of Mylar or have well tagged libraries following Comic Vine. This library works different and can support multiple folders with the same series parallel to library root.
  • Added: New Series Relationship of Annual.
  • Added: Imprints are now read from ComicInfo, will display on the UI and can be filtered.
  • Added: (Scanner) Added a new LowestFolderPath. This is the lowest path that contains all the series files and is used by ScanFolder/Series to avoid extra work.
  • Added: Added support for Locations and Teams, including the filtering for them
  • Added: There is a one-time progress export to config/progress_export.csv in case of data loss.
  • Added: Added Sort order to be visible on chapter detail drawer.
  • Added: (Kavita+) Added Mal Username/ClientId integration into Kavita for upcoming Kavita+ integrations.
  • Added: Added the ability to view (your) or all users (if admin) progress for that given chapter via the chapter detail drawer.
  • Added: (Kavita+) Added a pie chart to Server Stats that shows how many eligible series have metadata fetched from Kavita+. This pairs well with the background job that fills out your server over time. (This will be expanded upon in a future update)
  • Added: (Parser) Added parser support for Thai language volume and chapters (Thanks @gozilla-paradise)
  • Added: Finally added PDF Reader Settings
  • Added: (PDF Reader) Added tap to paginate to the pdf reader.
  • Added: Collections can now be created by non-admins
  • Added: Collections can now be promoted by non-admins (given they have the Promote role).
  • Added: Added bulk flows for Promotion and Deletion. If you select cards that are not owned by you, nothing will happen to those cards.
  • Added: OPDS feeds will now send description information when applicable for underlying volume/chapters.
  • Changed:
  • Changed: (Kavita+) Removed Book library from Scrobbling/Metadata pull. Books being in Google Books was far and few in-between. This is a temporary solution until Hardcover support is implemented, which has good Book (and some Comic) support. If you have light novels, change to the LN library type. The scanner works the same.
  • Changed: Allow users to send files to their devices without having host name set for Email settings
  • Changed: (Theme) side-nav-color is now side-nav-text-color
  • Changed: (Theme) Added carousel-btn-color (for carousel buttons) and badge-text-color (for badge text)
  • Changed: When iOS users are trying to download files greater than 200MB, they will be given an additional warning that iOS may fail to download due to arbitrary limits each device has.
  • Changed: Specials will now order by SP marker numbers, else fallback to natural sort
  • Changed: Loose Leaf volumes are now encoded with the number -100000 instead of 0. This now means users can have a Volume 0 without issue.
  • Changed: Search will now search against a chapter range and will also fallback if there is no title (comicinfo title) to the range.
  • Changed: Clean up a log message when no files found, to ensure the admin checks the Library settings as well.
  • Changed: Image Library is now more aligned to reported usage
  • Changed: Changed chapter title format to Chapter {number} - {title} (assuming title exists), else Chapter {number}. For Books, nothing has changed.
  • Changed: Series Detail metadata area will collapse automatically on desktop if there are too many tags.
  • Changed: Comic/Comic Vine libraries will never show Storyline or Volumes (unless there are no issues/specials or multiple volumes exist)
  • Changed: Minor changes to how PDFs parse to make them a tad more smart. Nothing major, will do the overhaul later.
  • Changed: Trim strings from ComicInfo more aggressively to prevent weird parsing for things like Number.
  • Changed: Optimized a lot of the scanner and cleaned up the code deeply.
  • Changed: (Parser) Adjusted the special parsing for Annuals to account for 'Series Annual d'
  • Changed: Dependency and security updates
  • Changed: Added a flag to the CBL import to use Comic Vine parsing for CBL Import (and set to true as all CBLs to my knowledge are using this new library).
  • Changed: Kavita now handles non-float numbers from CBL Imports (including special cases for comics)
  • Changed: (Kavita+) During library setting modal, changing type will now automatically change the Allow Scrobbling control, if the underlying library type is not Kavita+ applicable.
  • Changed: Normalize all paths during the scanner to ensure everything is always the same.
  • Changed: Added the csv files to the backup as those are used in manual migrations and likely good to have.
  • Changed: (Kavita+) When a rate limit error comes in after the pre-check, retry after the wait window instead of waiting for the next scrobble window.
  • Changed: Some epubs have incorrect metadata where the series is parsing with a volume. To help users, Kavita will override this on Light Novel library type to merge into the correct series.
  • Changed: Added a bit of a loader when deleting a lot of series with bulk actions.
  • Changed: Tweaked some wording about the changelog component to better indicate to nightly users that are not on the latest stable-based nightlies.
  • Changed: When using Force Scan on library settings, automatically close the modal.
  • Changed: (Scanner) Change pdf parser so if it's a library type book, we override chapters as chapter number is RARELY used and mainly results in false positives.
  • Changed: (Scanner) Fixed up the parsing so that book parser will coerced when the series in the metadata is wrong but there is a volume tag in said series, it will override.
  • Changed: Added a fallback to the series detail page to handle bad pdf parses (until the upcoming pdf parser rewrite comes) to avoid no cards showing.
  • Changed: Turned down the amount of debug logging from the library watcher and moved them to trace.
  • Changed: Added some code so that while the device is offline, the UI wont try to refresh JWT and likewise, when turned back online, a JWT Refresh will be called to hopefully extend the session.
  • Changed: Collections will show who created them under the card. For the time being, actionables (...) will show for all cards. This system will be getting an overhaul in the future. You still wont be able to interact with another user's collections.
  • Changed: Changed some of the format icons to some better looking icons
  • Changed: Added a filter in Edit Collections > Series tab to quickly find series to remove in large collections
  • Changed: Updated all email templates to have rel noopener noreferrer
  • Changed: When checking Kavita+ license, show a loading spinner first.
  • Changed: Reduced amount of Kavita+ license checks
  • Changed: Send to Device now works without Hostname set.
  • Changed: Switched all links over to the new wiki
  • Fixed:
  • Fixed: Fixed a security bug from .NET (CVE-2024-21409)
  • Fixed: Fixed an issue around being able to delete series with external recommendations.
  • Fixed: Fixed up the delete series flow so that the boolean returned is used in the UI to pop the correct toaster.
  • Fixed: Fixed an oversight where emailers without authentication wouldn't work
  • Fixed: Fixed a bug with looping around to volume 1 at the end of a reading session when it shouldn't
  • Fixed: Fixed a case where an exception was thrown, scanner wasn't existing and instead invoked metadata service with bad entities
  • Fixed: Fixed some bad styling on Chapter metadata (drawer)
  • Fixed: Fixed a bad localization on edit reading list modal.
  • Fixed: Fixed another check around rescheduling Kavita+ tasks once a valid check came through. There was a lack of a checking mechanism and Kavita was doing more than needed.
  • Fixed: I believe the Foreign Key constraint issue is solved once and for all
  • Fixed: Fixed a rendering bug on CBL validation where the UI reports success but also a warning message appears
  • Fixed: Fixed a bug where Translators couldn't be updated in Edit Series Modal.
  • Fixed: Fixed a manual migration that had to run before the db was migrated and it didn't check if the db even existed yet.
  • Fixed: Scanner was clearing temp directory when it shouldn't have been, which could replace db migration backup.
  • Fixed: Added an argument exception when reording a list has a number that's less than 0, throw. This usually happens with bad metadata in ComicInfo's. Perhaps when there is a -1 chapter, it's using number instead of order.
  • Fixed: Stats and Tasks were missing localization
  • Fixed: Fixed an issue where the new downloading code would unzip epubs on volume/series download
  • Fixed: Fixed a bug where opening library settings from ... on library detail page wouldn't have library type.
  • Fixed: Fixed a bug where the UI wasn't properly sending the custom cron data to the backend.
  • Fixed: Fixed a bug where weblink's in a card detail drawer wasn't rendering the favicon
  • Fixed: Fixed an issue where progress bar css variable was being overridden by bootstrap
  • Fixed: Fixed a bug where selecting bulk mode on in customize side nav wouldn't allow you to ever enable order numbers again.
  • Fixed: (Parser) Fixed a parsing case for 'Cynthia The Mission - c000 - c006 (v06)'
  • Fixed: Fixed an issue where uploading a custom cover wasn't respecting Cover Size setting (Thanks Elry)
  • Fixed: Fixed a bug where an epub with an empty link element could break Kavita's epub reader (Thanks @YodaDaCoda)
  • Fixed: (Kavita+) Fixed External reviews not showing the Go to Review due to an API change.
  • Fixed: Fixed an issue where applying a custom theme was not working immediately or consistently
  • Fixed: Fixed bad messaging around test email failing
  • Fixed: Fixed an issue when changing email address, after validating, it wouldn't mark as confirmed.
  • Fixed: Panels wasn't properly showing images on Series due to a bug on their app (Thanks Dani)
  • Fixed: Panels wasn't properly syncing read status with Kavita (Thanks Dani)
  • Fixed: Avoid possible username enumeration in login or reset-password endpoints due to message translations (Thanks @YodaDaCoda)
  • Fixed: Ensure we cannot create multiple collections in bulk flow if we use ENTER Key
  • Fixed: When clicking Gmail/Outlook buttons on email form, the form wasn't allowing saving even though fields changed.
  • Fixed: (Panels) Panels has fixed a few bugs with Kavita. v3.4.1 (beta) and above should be used
  • Removed:
  • Removed: Removed .kavitaignore file support as Library Exclude patterns are much easier to use and flexible enough.
  • API:
  • NOTE CDisplayEx, Panels, Tachiyomi, and Komf have all been tested with v0.8. Aidoku and Kavya (Paperback) are in progress.
  • VolumeDto reverted the float on Number field back to int
  • ChapterDto Range will be the chapter number. If a special, will be the special name. MinNumber can always be checked for the special encoding
  • Encoding: Special (100000), Loose Leaf Volume (-100000).
  • stats/user/reading-history has a dto change, making ChapterNumber a float instead of a string.
  • Tachiyomi routes now use their own Dto to avoid having to break apis there.
  • Added SortOrder on the ChapterDto. This is a float that can be used to order the chapters within the Volume. By default, all APIs will already order by this.
  • SeriesMetadataDto (for updating series metadata) now has Teams, Locations, Imprints and their lock fields: teamLocked, locationLocked, imprintLocked.
  • Changed library/ -> library/libraries for getting all libraries
  • All Collection apis were updated, however most of the underlying DTO is the same.
  • SeriesMetadata DTO no longer has Collections or needs them for the POST (as they are no longer tied with this entity)
  • series/ (deprecated) no longer handles filtering for collections. Use v2 api.

New in Kavita 0.7.14 (Feb 8, 2024)

  • Added:
  • Added: Added limited parsing support for c01-c04. Normally, c01-04 is used.
  • Added: Admins can now write custom cron notation for Scans, Backup, and Cleanup tasks. Cleanup cannot be disabled as it is required for Kavita to function smoothly. Ideal to always leave at midnight.
  • Added: (Kavita+) New filter for Average Rating. This will allow you to filter on series that have an external average rating. Note: This only applies to series that have metadata pulled down from Kavita+.
  • Added: (Kavita+) Kavita will now store Kavita+ external ratings, reviews, and recommendations in your Database. This will increase performance and lays the foundation for the upcoming basic metadata from Kavita+. Data is refreshed ad-hoc after 2 weeks and cached in memory for 48 hours.
  • Added: (Kavita+) New button in Edit Series modal that allows the series to be invalidated (or removed from blocklist) and force refresh from Kavita+ on next series detail page view.
  • Added: (Kavita+) User's can now see error messages and a different icon on Scrobbling History when a series fails to scrobble.
  • Added: (Kavita+) Sort by Average Rating
  • Added: Added a new role that makes a user account read only. This means they cannot change anything themselves (Age Restriction, Email, Password, Forgot Password, API Key). This is not intended for users to use, but for the demo instance.
  • Added: Added a popup that will tell users that are over 3 releases behind to update.
  • Added: New setting in Email settings to let you use Customized Template files. If this is true, Kavita will pick templates from config/templates rather than internal storage. Fallback is available. You then own the onset to stay up to date with email template changes.
  • Added: Added back the ability to delete your own review
  • Added: Added the ability to delete collection tags via actionables on collection detail page.
  • Added: Added buttons that allows users to quickly autofill gmail/outlook email settings
  • Added: Added the changelog to the Admin System tab (in case users don't see it in the announcements page).
  • Changed:
  • Changed: (Kavita+) Changed how Series Detail api works to drastically reduce memory needs
  • Changed: (Kavita+) Removed Bust Kavita+ cache button from Admin -> Tasks screen as it's no longer needed.
  • Changed: (Kavita+) Series that don't match against Kavita+ will now be stored in a table and not be retried again.
  • Changed: (Kavita+) When scrobbling, check if a series is blacklisted or not before trying. When an unknown series comes back, add it to the blacklist (so we don't waste time trying when it will never match)
  • Changed: Updated system tab with a link to localization and new feature request site
  • Changed: Massive refactor to change how Volume numbers are represented within Kavita to support volumes that are < 1 on the UI. This means 0.5 books will now work going forward.
  • Changed: Lots of autocomplete hints added to help password managers and browsers autofill login/registration/passwords.
  • Changed: Adjusted OPDS-PS lastReadDate to adhere to ISO 8061 as per the spec and what Panels expects for proper sync.
  • Changed: Supressed image requests on the logs as they are quite noisy
  • Changed: Hostname setting is in general admin settings as well as email, as it's not 100% tied to email functionality
  • Changed: Kavita will now confirm before you delete a device
  • Changed: Email is now baked into Kavita. If email is not setup then all flows will now just work. The extra security measures will only work with email being setup (and HostName set). Kavita will no longer try to identify if the server is accessible externally. You will have to set HostName and setup the emailer going forward.
  • Changed: Series detail title (series title) now shows a loading indicator showcasing all the important apis that are loading
  • Changed: If Kavita+ license check throws an exception, just assume license is invalid and let the scheduled task check again (or the user manually)
  • Changed: Changelog now shows if you're on a nightly and which stable it's based off.
  • Changed: Split the main email template into base.html and fixed some bad closing tags. This should make customizing email templates easier.
  • Changed: Removed the up/down arrow keys on webtoon reader moving full pages. Use up/down for scroll and space for a bit at a time.
  • Changed: Updated the Kavita templates to be more modern (in terms of the code) and easier to customize.
  • Fixed:
  • Fixed: Fixed UI not being able to render search for non-admin users
  • Fixed: Remove from On Deck wasn't refreshing the dashboard
  • Fixed: Fixed up the display and logic around when there is a series collision, to help the user understand more
  • Fixed: Fixed a bug where the UI filter could send out of date information to the backend which threw an error.
  • Fixed: (Kavita+) Fixed a bug where external reviews would show as local
  • Fixed: Fixed webtoon reader being unusable on iOS (Thanks @Thundernerd for the help)
  • Fixed: Series detail page was making a ton of api calls that weren't needed.
  • Fixed: Fixed a bug where scrobbling tab could duplicate
  • Fixed: Fixed a bunch of warnings about ordering and take with search queries
  • Fixed: Want to Read had a critical issue where a user could undo your want to read.
  • Fixed: Fixed bulk select of chapters leaving the last one off.
  • Fixed: On non-authenticated flows, the nav bar will no longer flash on refresh.
  • Fixed: Fixed inability to right click highlighted text in the book reader
  • Fixed: Fixed reading activity graphic not taking the full width like it should
  • Fixed: Fixed some spacing on the Continue/Read button on reading list page
  • Fixed: Fixed an issue where download indicators on cards would should on different series
  • Fixed: Don't have validations on the login screen
  • Fixed: Support for the 'pageNumber' parameter in OPDS API smart-filter/{Id}. (Thanks @charles7668 )
  • Fixed: Fixed and polished a lot of the email flows.
  • Fixed: Fixed a bug where send to device didn't properly send the correct end event
  • Fixed: LSIO dockers weren't properly recognized as Docker, Kavita now checks for LSIO_FIRST_PARTY environment variable
  • Fixed: Fixed an issue with // being generated for some invite links (
  • Fixed: Fixed an issue where a new library could render as blank in the UI
  • Fixed: Fixed an issue when creating a new library, that new library wouldn't be included in folder watching
  • Fixed: Fixed a bad encoding of dates for lastReadDate on OPDS-PS streams. Panels has already updated implemenation to help progress sync work more smoothly.
  • Fixed: Fixed a bug where non Kavita+ users wouldn't see reviews.
  • Fixed: Handled a rare case where a cover image wouldn't exist when creating a merged image for a reading list/collection.
  • Fixed: Fixed a bad comparison on code that pushes update notification users to admins.
  • Fixed: Fixed an issue where continue point for a totally unread series would start on the special and not chapter ...

New in Kavita 0.7.13 (Jan 19, 2024)

  • Added:
  • Added: Added the ability to delete a library from side nav menu
  • Added: (Kavita+) Kavita now alerts the user on visiting their homepage that their AniList token needs rotating to continue scrobbling
  • Changed:
  • Changed: (Kavita+) Kavita will now clear out existing, non-processed scrobbling events when a Series is put on hold.
  • Changed: Lots of dependency updates
  • Changed: Downloading a Volume (consisting of multiple chapter archives) or a Full Series will not auto extract and re-zip for you.
  • Changed: Enhanced the messaging around events widget for downloading/preparing a download.
  • Changed: Min length for a user review is now only 5 characters
  • Changed: Downloads will download as cbz
  • Changed: Under User settings > Account tab, Email and AniList token will now inform user if the email is not validated or if AniList token needs to be regenerated (as they expire every few months)
  • Changed: (Kavita+) Kavita will quit faster during scrobbling events whenever rate limit is hit or token is expired.
  • Changed: (Kavita+) Switched Kavita to use a new dedicated API to allow data to load on the screen faster and all at once leading to less page shift.
  • Changed: (Kavita+) If a license is still on disk, but the subscription is not active, Kavita will not schedule Kavita+ tasks at all.
  • Changed: Streamlined some code around downloading for upcoming enhancements
  • Changed: Updated dependencies, including NetVips for some regressions around cover generation.
  • Changed: Major improvement to messaging when a series collides with another series in a parallel folder to library root. Explicitly give more information.
  • Changed: Localization files now have cache busting to help on new releases not reflecting all keys
  • Changed: Removed XFrameOptions and replaced with AllowIFraming as true/false. This will control multiple headers for Organizer
  • Changed: Shortened the time in which Kavita will check for an update an inform user. Originally 5-6 hours, now 1-2. We have over 10k users on old installs that haven't updated.
  • Fixed:
  • Fixed: On non-authenticated flows, the nav bar will no longer flash on refresh.
  • Fixed: Fixed inablity to right click highlighted text in the book reader
  • Fixed: Fixed reading activity graphic not taking the full width like it should
  • Fixed: Fixed some spacing on the Continue/Read button on reading list page
  • Fixed: Fixed an issue where download indicators on cards would should on different series
  • Fixed: Don't have validations on the login screen
  • Fixed: Fixed More in Genre not using a localized string for title
  • Fixed: When a series updates to completed and there was a next estimated chapter card, make sure it gets cleared.
  • Fixed: Fixed bookmarks having + in the filename when not needed
  • Fixed: Fixed bookmarks not showing the download indicator
  • Fixed: Fixed bookmarks not showing page count in card
  • Fixed: Fixed a bad localization string for chapter actions from within the card detail drawer
  • Fixed: Restore PDF layout menu (Thanks @tjarls)
  • Fixed: Fixed an issue where tab could flash on user preferences due to some delay waiting for a license check.
  • Fixed: Ensure only admins can see files when searching
  • Fixed: Fixed a bug where Edit Series Modal made it look like the language tag was set, but it wasn't

New in Kavita 0.7.12 (Jan 7, 2024)

  • Added:
  • Added: (Kavita+) Added the ability to view the provider of a recommendation on the card itself and in the preview drawer.
  • Added: (Kavita+) Added the ability to reset your Kavita+ license key without having to reach out to me.
  • Added: (Kavita+) Added the ability to add your Discord UserId during Kavita+ license registration which will grant access to hidden channels for feature curtailing.
  • Changed:
  • Changed: When opening up an external series review, show the source of the review.
  • Changed: Streamlined the design slightly for a user's personal review
  • Changed: There is now inline form validation on the User Review Modal
  • Changed: Removed the tagline from user/external reviews.
  • Changed: (Scanner) When a series has a single special and a total count of 1 or less, assume it's completed
  • Changed: Lots of love around the messaging when interacting with users that do not use real emails.
  • Changed: Enhanced the messaging around users without valid emails interacting with change email flow.
  • Changed: Validation messaging added on change username flow, including showing the valid characters.
  • Changed: Don't log apikey in logs
  • Changed: Updated the donate link to point to a wiki explaining the donation options and that Kavita+ is the only way to remove the donate button.
  • Fixed:
  • Fixed: Fixed a bug where user reviews wouldn't be rendered on the UI if they didn't have a tagline, even though it's optional.
  • Fixed: Ensure my own review orders in front of other local user reviews
  • Fixed: When a user resets the API key, tell connected clients to refresh their account details
  • Fixed: Moved bulk operations bar back to the top of the page where it belongs on series detail
  • Fixed: When using back on side nav after having a filter applied, clear the filter.
  • Fixed: Cleaned up the error handling around Kavita+ registering of a license.
  • Fixed: Fix the issue of an extra space appearing after the end of the series detail page. (Thanks @charles7668 )
  • Fixed: Fixed a bug with email link generation when using a base url, where too many characters could be trimmed (Thanks @charles7668 )
  • Fixed: Change username wouldn't update the correct field which was used in login flow
  • Fixed: Fixed a bug where when filtering was disabled (reading list page), the jumpbar also got disabled.
  • Fixed: Fixed a bug where library watching was trying to be turned on before we had saved the new value from server settings.
  • Fixed: Fixed a bug where the check email button success message was missing a space before the version number.
  • Fixed: Fixed a delay in the UI after a bookmark is created/deleted (Thanks @charles7668 )
  • Fixed: Fixed webtoon mode not allowing bookmarking (Thanks @charles7668 )
  • Fixed: Fixed a config issue where not all of Weblate's language codes would show up
  • Removed:
  • Removed: (Kavita+) Removed the ability to scrobble reviews as the conditions are strict and doesn't make much sense to do it from Kavita.

New in Kavita 0.7.11.2 Hotfix 2 (Dec 12, 2023)

  • Changed:
  • Changed: Backups now show the version of Kavita in the filename
  • Changed: Moved some cleanup tasks within another task to ensure everything is processed at the same time.
  • Changed: Changed the readme to point to the correct type of projects.
  • Changed: (Kavita+) When sending requests to Kavita+, MangaDex Ids will be sent as well to prepare for a potential enhancement next year.
  • Fixed:
  • Fixed: Fixed unneeded slowness in the image api as some debug code got left in there
  • Fixed: Fixed invalid date showing on tasks screen
  • Fixed: Fixed a long standing parser bug where series would parse as Love Hina Vol. 30 Chapter 22 when the file was Love Hina Vol. 30 Chapter 22 - Vol 30 Omakes
  • Fixed: (Kavita+) Fixed a bug where Kavita+ wasn't being sent the ids from Weblinks
  • Fixed: Fixed a loader showing on the webtoon reader when it shouldn't have
  • Fixed: Fixed a critical issue where fresh installs that invite a user have their own admin account's side nav and dashboard streams wiped out
  • Fixed: Fixed a bug where Smart filters would always evaluate to descending sort
  • Fixed: Fixed a bug where some progress bars wouldn't report series progress correctly

New in Kavita 0.7.11.1 (Dec 5, 2023)

  • Fixed: Fixed a critical bug where the cleanup task would break ordering of progress events. This would cause your On Deck to skew.

New in Kavita 0.7.11 (Dec 3, 2023)

  • Added:
  • Added: You can now see your total progress in the series from within the manga/image reader.
  • Added: Added a Smart Filters page so you can see all your filters and click to load them. The new page is accessed from your user settings (top right dropdown on nav). The smart filter will show red if the filter was not able to be migrated and needs to be recreated by you.
  • Added: New Library Type for Image. This is a placeholder while I gather feedback to avoid a bug in non-image types. If you are a primary user of loose leaf image series, please try this out with a test library. This library type may be removed in the future without a data migration. This is exclusively here to gather feedback after solutioning Loose leaf image issues from the open discussion.
  • Added: Epub's marc role of creator now maps to writer
  • Added: Library Settings now has File types setting which allows you to turn on/off different types of file types from the scanner.
  • Added: Library Settings now has an exclude patterns control which allows you to ignore folders or file patterns.
  • Added: Added the ability to search for bookmarked series and open up the bookmark reader directly (this is image based bookmarks)
  • Added: Added a nightly task (cleanup task) that will ensure all user's progress on a chapter is at max the chapter's pages, in the case it was replaced with one that has less pages.
  • Changed:
  • Changed: All filtering encode/decode code is now purely in the backend. There is no noticeable differences when interacting with the filter. This will avoid a lot of headache with the filtering system.
  • Changed: All Series page will now render out the title of the smart filter if it's set instead of All Series.
  • Changed: Manage users page in admin dashboard has a new look and feel
  • Changed: Added a fade in and changed the way Kavita lazy loads images for a much better experience (large improvement on all series page as well)
  • Changed: Icon buttons will now longer show an active state when focused
  • Changed: Replaced the underlying library for Reading Day breakdown chart
  • Changed: On Desktop, by default all series metadata will show (for series metadata). I'm looking for feedback from users.
  • Changed: Series detail metadata (summary and tags) will now be expanded to a limit by default on desktop. I'm looking for feedback from users.
  • Changed: Metadata filter now animates as it expands/collapses
  • Changed: Optimized dashboard page to allow better stream loading so there is less jank
  • Changed: Migrated to using a lighter way of loading lazy loaded modules
  • Changed: Updated some logs so we can avoid a potential log injection
  • Changed: Improved the webtoon reader to better find where you are after quickly scrolling.
  • Changed: Next estimated chapter will not show the time anymore
  • Changed: Card titles are now center aligned by default
  • Changed: On cards, don't show the progress bar unless there is at least one page read
  • Changed: Cover chooser no longer has an apply button. Upon adding or selecting a cover, it will instantly take effect.
  • Changed: Made the jump bar transition instant which feels much better with the new image loading.
  • Changed: Updated Angular to v17
  • Changed: Next estimated chapter now looks much better
  • Changed: Changed how loose-leaf images are parsed within Kavita to work much better and fallback to more natural grouping. They will now grab the series name from the folder name, use any in-between folders for extracting volume/chapter numbers and if none found, treat the image as a special. (Thank you to users that commented on the discussion issue)
  • Changed: Next Estimated Chapter title is now shorthand and localized, in case your locale doesn't use ~ or it doesn't go before the date
  • Changed: User settings tabs now defer load, meaning a probably very slight speed increase on slower networks
  • Changed: Spruced up the Image Parser to handle more volume and chapter parsing from filenames when it's needed.
  • Changed: .kavitaignore files have been deprecated and will log a warning to the logs whenever one is found. They will currently still function but be removed in the v0.8 release.
  • Changed: On smaller viewports, modals will open in fullscreen.
  • Changed: Next Chapter is now Upcoming to better indicate what the feature does
  • Changed: epub reader now has a close book within the settings itself
  • Changed: Major performance enhancements done to the update series metadata API which should help when Komf hammers the API when Kavita adds a large amount of new series
  • Changed: (Scanner) If a series has a total count of 1 and there is only a s...

New in Kavita 0.7.10.2 Hotfix 2 (Oct 31, 2023)

  • 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

New in Kavita 0.7.10.2 Hotfix 2 (Oct 31, 2023)

  • 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

New in Kavita 0.7.10.1 (Oct 30, 2023)

  • 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

New in Kavita 0.7.10 (Oct 29, 2023)

  • 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

New in Kavita 0.7.10 (Oct 28, 2023)

  • 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

New in Kavita 0.7.9 (Oct 20, 2023)

  • Added:
  • Added: Added the ability to save metadata filters into a Smart Filter. This is a dynamic query that can be bound to your dashboard.
  • Added: All users can now customize their own dashboard and re-order the streams Kavita provides out of the box, turn them on/off, and bind your Smart Filters to your dashboard.
  • Added: You can now re-order, turn on/off libraries, system default side nav items and add your own smart filters and external sources (see below) to the side nav.
  • Added: Added the ability to link to external sources (aka server's your friends may host). These can then be bound to your Sidenav and provide a one click to that server which will auto login.
  • Added: New API (plugin/version) which can use the api key to get the current Kavita install version.
  • Added: Added WantToRead filter so SmartFilters can be created that utilize want to read status in creative ways.
  • Added: OPDS now has a dedicated section for SmartFilters
  • Added: Added a new Sort By for Reading Progress
  • Added: Added a new Filter Field (and Input type) to select Series based on Last Read time of the user. This new field uses a date picker so you can build filters like: Series that haven't been read since 1/1/2023 that have over 80% progress on ordered by most progress to least aka a 'Finish it Off list'
  • Added: (Kavita+) Added an up-sell to 1 year per some users requests. New payment link set.
  • Added: Kavita+ users can now preview local and external series with more metadata by clicking a recommendation card. This new drawer will allow users to get a quick glance of information. You can still open the new browser tab from the drawer or directly from the card. As data is cached in Kavita+ API, it may take some time for extended details to propagate.
  • Added: Plugin Authenticate and Version APIs will now capture unauthorized rejections and log out to config/logs/security.log. APIs that perform this logging are documented.
  • Added: (Kavita+) Users can now add a local recommendation to their Want to Read list directly from the Series Preview drawer
  • Added: (Kavita+) When previewing a local series from Recommendations tab, if the local series is lacking metadata (at least summary and genres need to be present), then external metadata will be used.
  • Added: When a user logs in, log their IP
  • Changed:
  • Changed: OPDS will now mimic applicable ordering and streams from your Dashboard. Note: More In Genre and Recently Updated are not supported. Likewise, OPDS All Libraries will now order in the order of your Side Nav.
  • Changed: Selected options from filter's typeahead wont show as an option anymore.
  • Changed: Some filter fields will now show the unit on the UI to help users understand how it functions
  • Changed: Kavita now logs extra information and in different conditions when a login fails
  • Changed: Ignore #recycle directories, which is a special folder on Synology
  • Changed: Floats are allowed for reading progress inputs
  • Changed: Added a note about folder watching waiting 10 mins to trigger in library settings
  • Changed: When a book does not contain a volume number or have volume in the filename, consider it standalone and as such, mark it as Completed Publication Status.
  • Changed: Side Nav now only shows Home + 10 other items. Other items are found behind the More fold.
  • Changed: Allow API key/OPDS url component to toggle show/hide instead of the previous just showing.
  • Changed: Updated underlying PDF library to latest
  • Changed: Filter fields are now sorted alphabetically
  • Changed: Giant Size format from ComicInfo will now be treated as a special
  • Changed: (Kavita+) Review's will now be rejected from creating a scrobble event if they wont meet AniList's criteria. This will be changed in future if more scrobble providers are added.
  • Fixed:
  • Fixed: Fixed stats tab acting up from injection in Stable
  • Fixed: Floating point tolerance for reading percentage when using Read Progress Filter
  • Fixed: Fixed a bug where some OS don't support all locales by default. For those, catch any exceptions and default to the raw language code.
  • Fixed: Summary wasn't being sent to the backend for filtering
  • Fixed: Fixed a bug where non-admins could see Scan on the library actionables (but not actually invoke it)
  • Fixed: Fixed a bug where tablet viewports couldn't open the metadata filter
  • Fixed: Fixed up a lot of the css around the filters.
  • Fixed: Fixed up a bug where filter would un-collapse even though we were using a drawer.
  • Fixed: Fixed an issue where the manga reader could get delayed when rendering the next page due to slow network activity because it was waiting for the last prefetch page to load instead of moving to the prefetched page immediately.
  • Fixed: Fixed external rating tooltip not showing the title of Google Books
  • Fixed: Fixed a bad parser case where volume num could get parsed as chapter num.
  • Fixed: Fixed up a lot of missing localization strings
  • Fixed: Fixed a bug where Not Contains on Tags and People wasn't behaving correctly (Thanks @CianH for the PR)
  • Fixed: Fixed a bug where images in the release notes on update notification modal would go outside the modal's width.
  • Fixed: Fixed ...

New in Kavita 0.7.8 (Sep 4, 2023)

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

New in Kavita 0.7.7 (Aug 10, 2023)

  • 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

New in Kavita 0.7.6 (Aug 1, 2023)

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

New in Kavita 0.7.5 (Jul 18, 2023)

  • 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

New in Kavita 0.7.4 (Jul 11, 2023)

  • Added:
  • Added: Added a whole new section for reviews (both Kavita user's, your own, and external) on the series detail page
  • Added: Added ability to configure the amount of RAM for caching Kavita+ data (recs, reviews, and ratings). This is managed in appsettings.json via 'Cache' option. Defaults to 50MB.
  • Added: Added ability to view external Recommendations for manga/book series. If user is an admin without Age Rating restrictions, external recommendations will show.
  • Added: Added the ability for users to configure AniList as a scrobbling provider (on a Kavita+ licensed server) to scrobble reviews, ratings, want to read, and reading progress.
  • Added: User Review can now have a short tagline to bring a high level information without users having to read the long review.
  • Added: New user option to opt-into sharing Series reviews with other users in the server.
  • Added: Added a hover-over to the progress bars in the app to know exact percentage of reading for a chapter/volume/series.
  • Added: Added a new stat for reporting for last read time. This helps identify how many servers are in use versus just running Kavita.
  • Added: Reading Lists and Collections without a manual cover set will generate a custom merged image based on chapter covers or series covers, assuming there is at least 4. These will be randomly generated every 24 hours. You may need to regenerate covers to take advantage as in v0.7.4, cover generation now forces aspect ratio and size.
  • Added: Added the ability to disable scrobbling on a per-series per-user basis or at a library level. By default, Comic Libraries will have scrobbling turned off as there are no comic-based scrobbling providers.
  • Added: Added the ability to see scrobbling errors for the admin, so they can be fixed (usually fixing series name or adding a anilist/mal weblink)
  • Added: Added new spoiler tag css variables: --review-spoiler-bg-color and --review-spoiler-text-color (these are for spoliers within reviews from AniList)
  • Changed:
  • Changed: Reviews are now under the Series Metadata and in a card format to allow for a more streamlined experience. Your review will always be first with a star.
  • Changed: User Reviews now have an optional tagline and a new UX
  • Changed: Reviews will now show reviews from other users on the server, if they've opted-in.
  • Changed: Tweaked the wording on registration page to ensure users understand email is required but does not need to be valid.
  • Changed: Changed how enums show in the documentation so you can see both their name and value.
  • Changed: JWTs will expire after 10 days due to the nature of how user's read content and devices sleep
  • Changed: Many images were optimized and added to response compression
  • Changed: Edit Series modal name field should be readonly as it is directly mapped to file metadata or filename parsed. It shouldn't be changeable via the UI.
  • Changed: Made all UI components to be standalone, which results in slightly faster load times across the app
  • Changed: Switched how we cound words in epub to handle languages that don't have spaces.
  • Changed: Aligned a few apis to use default pagination, allowing for a small optimization.
  • Changed: Changed how Kavita creates cover images to force the aspect ratio and prevent skewing, when comics or webtoons have non-standard ratios. You will need to regenerate all covers for it to take effect.
  • Changed: Optimized aspect ratios for custom library images to avoid shift layout.
  • Changed: Moved the series detail page down a bit to be inline with first row of actionables.
  • Changed: Refactored the code to not throw generic 500 toasts on the UI and instead only specific errors will show
  • Changed: Updated ExCss, which helps inline styles on books. Much more styles are now supported for inlining from css3 spec.
  • Changed: Donation link will now be removed if the server admin has an active subscription license.
  • Changed: Collection detail page will now default sort by sort name
  • Changed: When performing a scan series, force a recount of words/pages to ensure read time gets updated.
  • Changed: Sped up the query for getting libraries and added caching for that api, which is helpful for users with larger library counts.
  • Fixed:
  • Fixed: Fixed a bug where updating the user's last active time wasn't writing to database and causing a logout event
  • Fixed: Fixed some errors on bad opds url generation and improved it further to use host name if set.
  • Fixed: Fixed a bug where weblinks with a comma in it, wouldn't be addable
  • Fixed: Fixed a bug where trying to extract png favicon from a web link would skip valid pngs.
  • Fixed: Fixed an issue where a series trying to choose the first cover image wouldn't work reliably
  • Fixed: Fixed a UI only issue where it would look like duplicate series were recently added when they weren't
  • Fixed: Fixed a bug where IP Addresses was not called out in settings, which needs a restart to take effect.
  • Fixed: Fixed a bug where chapters within a volume could be unordered in the UI info screen.
  • Fixed: Fixed a bunch of blank space on reading list detail page
  • Fixed: Fixed yet another edge case for getting series cover image where first volume is higher than 1 and the rest is just loose leaf chapters.
  • Fixed: Fixed a small css issue where the border to the tab wouldn't respect the border radius
  • Fixed: Fixed a long standing bug where series and volume covers could blank out after a conversion task. This should no longer happen.
  • Fixed: Fixed an issue in the epub reader where html tags within an anchor could break the navigation code for inner-links.
  • Fixed: Fixed a bug in GetContinueChapter where a special could appear ahead of a loose leaf chapter.
  • Fixed: Fixed an edge case bug for picking the correct cover image for a series.
  • Fixed: Fixed a bug where typeahead x wouldn't clear out the input field.
  • Fixed: Don't allow duplicates for reading list characters.
  • Fixed: Fixed a bug where when calculating recently updated, series with the same name but different libraries could get grouped.
  • Fixed: Fixed an issue with fit to height where there could still be a small amount of scroll due to a timing issue with the image loading.
  • Fixed: Fixed inability to progress to next chapter when last page is a spread and the user is using split rendering
  • Fixed: Fixed grid breakpoint css variables not using the ones from variables due to a missing import.
  • Fixed: Fixed a bug where when switching from webtoon back to a non-webtoon reading mode, if the browser size isn't large enough for double, the reader wouldn't go to single mode.
  • Fixed: Fixed a bug with arrow on sortable table header
  • Fixed: Fixed an issue with epub column layout cutting off text
  • Fixed: Fixed a bug where there is a little bit of space under fit to height ...

New in Kavita 0.7.3.1 (Jun 10, 2023)

  • Changed:
  • Changed: When deleting a library, give the library name in the prompt
  • Changed: Directory Picker will now sort libraries as some OSes don't return paths sorted
  • Fixed:
  • Fixed: Fixed an issue with fit to width on mobile from last release
  • Fixed: Fixed an issue where creating a new library, advanced settings wouldn't persist
  • Fixed: Fixed an issue where kbd tags with paper theme would render incorrectly
  • Fixed: Fixed an issue where wrong cover could be chosen for series in an edge case setup
  • Fixed: Fixed an issue where typing in the autocomplete for directory picker would throw errors

New in Kavita 0.7.3 (Jun 7, 2023)

  • Added:
  • Added: Kavita will now report basic information to the user on when media errors occur, like invalid structural metadata (epubs) or bad archives. This can be found in Admin -> Media tab. Please provide feedback so we can tweak the experience.
  • Added: Kavita can now create Collections from title-type='collection' tags and reading lists when accompanied by display-seq and a count > 0. See the wiki for updated documentation.
  • Added: Epubs can now use the refines=file-as to explicitly set sort title, which will override taking from belongs-to-collection or calibre:series
  • Added: Added basic ISBN search which will show the chapter
  • Added: Explicitly capture more people roles from Epubs. Now, translator, artist, publisher, editor, etc can all be extracted from refines tags.
  • Added: Added support for building reading lists and collections from Epubs
  • Added: Paper book reader theme
  • Added: Added the ability to import multiple comma separated links from the Web tag from ComicInfo.xml and view them on Chapter level details
  • Added: Added the ability to add multiple links at Series level and thus the ability to click them from within Kavita
  • Added: Weblinks can now fallback to Kavita hosted favicons (on our main site), thus enabling a way for the community to submit ones which Kavita cannot parse that will benefit all installs.
  • Added: Added ISBN support for Chapters in Kavita. This can be parsed from epubs (isbn) or ComicInfo.xml (GTIN from 2.1 Spec). For GTIN, note that ISBN-10 are not supported. Valid ISBNs only will be saved, invalids will be rejected.
  • Added: Kavita now supports AVIF (8-bit only) out of the box. 10-bit will not work.
  • Added: You can now use AVIF for saving Kavita managed files (covers, bookmarks, favicons)
  • Changed:
  • Changed: Removed an additional ComicInfo read when comicinfo is null when trying to load. But we've already done it once earlier, so there really isn't any point.
  • Changed: How we check if a container is docker or not has been streamlined and hopefully more reliable (This fixes saving server settings for Unraid issues)
  • Changed: Expanded Table of Contents generation (aka where Kavita tries to generate a simple one with epub doesn't have one) to also check for navigation.xhtml as well as toc.xhtml.
  • Changed: Updated EpubReader to v3.3.0 which adds Epub 3.3 support
  • Changed: Added more page hacks when invalid keys are used in the epub when rewriting anchors
  • Changed: Updated the app to Angular 16. No user facing changes.
  • Changed: Strip more forms of comments (especially ones that shouldn't be in CSS files) from CSS before parsing/inlining in epub reader
  • Changed: Handle if ExCSS throws an exception during inlining and attempt to fallback to scoping css instead of inlining.
  • Changed: When there are duplicate files that make up a volume, show the count on series detail page, like we do with chapters
  • Changed: Authentication now expires after 2 days. Refresh tokens will attempt to keep user logged in by refreshing authentication every 10 minutes.
  • Changed: Removed old migrations for Kavita startup. Only migrations from v0.72 onwards are present.
  • Changed: Disable login button when a login is in-progress. This can help prevent lock out.
  • Changed: (API) Added NoContent responses when APIs don't find entities
  • Changed: Reading list page refreshes after updating info in the modal
  • Changed: Updated initial install default keys to be 256 bits for the encryption. You may be logged out and have to reauthenticate or change your token key to "super secret unguessable key" and restart (which will allow Kavita to regenerate the key for you). This is in config/appsettings.json
  • Changed: Modified the docker entrypoint script to copy in the appsettings.json config rather than manually write a new one via echo
  • Changed: When rounding bytes to human readable (ie 2MB), if there is a decimal that is not .0, show it
  • Changed: (BREAKING CHANGE) Save Bookmarks/Covers as WebP has been removed. There is a new setting called Encode Media As. This will allow you to select PNG, WebP, and AVIF. All Kavita managed media (bookmarks, covers, favicons) will use that globally. You cannot convert from WebP/AVIF back to PNG. For covers, you will have to regenerate them. Bookmarks and favicons cannot be changed back. (favicons can be deleted manually by admin and regenerated naturally)
  • Changed: Streamlined tasks for convert to offer just a single task that does everything.
  • Changed: Moved to using pre-calculated extension for sending stats rather than doing it on the fly
  • Changed: When adding a rating for a series for the first time, don't prompt to write a review.
  • Changed: Refresh tokens will now reauthenticate every 10 mins to ideally never let a user have to log out
  • Changed: Expanded the range of time in which a version update check can occur
  • Changed: Reading list page refreshes after updating info in the modal
  • Fixed:
  • Fixed: Added better fallback implementation for building table of contents based on the many different ways epubs are packed and referenced.
  • Fixed: Fixed docker users unable to save settings
  • Fixed: Fixed a bug in mappings (keys/files) to pages that caused some links not to map appropriately.
  • Fixed: Fixed a bug where continue reading was wrong in an edge case scenario
  • Fixed: Fixed another edge case where continue reading opened the wrong chapter
  • Fixed: Fixed an issue where jumpbar would be disabled when it shouldn't, like on bookmarks page
  • Fixed: Fixed processing logic error that if StoryArcNumber is empty, then multiple StoryArc's are not processed (similar would occur if multiple StoryArcNumber's are present for a single StoryArc).
  • Fixed: Fixed inclusion of spaces in multiple StoryArc's due to ', ' as a common CSV format.
  • Fixed: Fixed a bug where an empty space could throw an error when creating a library.
  • Fixed: Fixed a bug where spreads could stretch on PC
  • Fixed: Fixed a bug where reading list dates couldn't be cleared out
  • Fixed: Fixed an issue where create library wouldn't take into account advanced settings
  • Fixed: Fixed an issue where selection of the first chapter of a series to pull series-level metadata could fail in cases where you had Volume 2 and Chapter 1, Volume 2 would be selected.
  • Fixed: Fixed a bug which caused refresh token to always return invalid
  • Fixed: Fixed a bug where Kavita couldn't parse Series name when there was no volume/chapter keywords and a chapter range (ie Series 001-003)
  • Fixed: Encode filenames before sending them to the UI for downloading to prevent non-english characters being replaced by underscore
  • Fixed: Added support to parse ComicInfo.xml when they have empty single tags
  • Fixed: Fixed a bug where spreads could stretch on PC in manga reader
  • Fixed: Fixed a bug where reading list dates couldn't be cleared out
  • Fixed: Fixed an issue where create library wouldn't take into account advanced settings
  • Fixed: Fixed an issue where selection of the first chapter of a series to pull series-level metadata could fail in cases where you had Volume 2 and Chapter 1, Volume 2 would be selected.
  • Fixed: Fixed a bug where scan series wouldn't trigger word count analysis nor cover generation.
  • Fixed: Fixed a bug where reading list ending month wouldn't render correctly
  • Fixed: Fixed a slight offset in reading list item not read badge
  • Fixed: Fixed a bug where reading list month wasn't rendering correctly

New in Kavita 0.7.2 (May 7, 2023)

  • Added:
  • Added: Added the ability to import CBL files into Kavita via reading list page or side nav. Kavita uses a multi-step process to ensure you aren't wasting your time on the import. Kavita can handle multiple cbls being imported in one go.
  • Added: Added noindex to prevent SEO from indexing user's sites.
  • Added: (epub reader) Vertical reading mode support added to the web-based book reader. This feature is particularly useful for reading genres like Japanese light novels. (Thanks @CKolle)
  • Added: Edit Reading Lists now allows selection of cover image from existing items
  • Added: Updated Kavita's OPDS-PS implementation to v1.2 to align with upcoming Panels enhancements
  • Added: Added a new Login role which allows you to log in. Admins can now disable accounts by removing the role from user accounts.
  • Added: Series detail page will now show a progress bar under the series image to give a hint to how far completed the series is to being read.
  • Added: New user setting to collapse series that have relationships in the library view. This means if you have Batman and Batman the Sequel linked, only Batman will show on library page.
  • Added: (epub reader) If a page only contains a single image. It gets positioned to the center in column mode
  • Added: (epub reader) Added a check for if the current page only contains a single image. Happens during loading as to not have the image pop in place.
  • Added: Base Url support. This will not work if using Docker with non-root setup. (Thanks @gmahomarf )
  • Added: Added ability to read from incognito from the main series detail button
  • Added: Reading Lists can now have Starting Month/Year and Ending Month/Year. You can use the UI to set it, but during processing of reading list it will be recalculated and set if calculation output is valid. These fields are aimed at showing you a span of a reading list run.
  • Added: CBL Import of upcoming fields (StartYear, StartMonth, EndYear, EndMonth) mapping to the fields above. When importing via CBL, the CBL will take precedence over any calculations. Will not stick if another item added/removed from the list afterwards.
  • Added: New API which allows getting thumbnails (cover image size) for pages within a pdf or archive/image media
  • Added: If CBL has a Summary tag, it will now set the summary in Kavita (this is a proposed enhancement to CBL format)
  • Added: Added parsing support for Series Chapter 001 Volume 001
  • Added: Added ability to override Kavita's XFrameOptions via appsetting.json XFrameOptions key. This is useful for Organizer setups without having to strip from the header.
  • Added: Added rate limiting for a few APIs
  • Added: There is now a donate button on the side nav for all users.
  • Added: Added the ability to create reading lists from ComicInfo StoryArc and AlternativeSeries. The implementation matches Komga to ensure consistent experience for users. Comma-separated values are supported in StoryArc and AlternativeSeries and will build pairs for ordering.
  • Added: Plugin/Authenticate will now return a refresh token with the payload
  • Added: Added ability to emulate comic book with single renderer. This only shows on spread (wide) images
  • Added: New API endpoint to allow scanning all libraries at once
  • Added: All Login dtos now have the active KavitaVersion to make external apps able to handle what version of the API they are connecting with.
  • Changed:
  • Changed: Updated to .NET 7
  • Changed: Enabled nullability analysis in the application. This lets developers catch more edge cases easier
  • Changed: Prompt the user when they are about to delete multiple series via bulk actions
  • Changed: When skipping over folders in a scan, inform the UI event widget
  • Changed: Adjusted the folder watcher to turn off folder watching if too many restarts get triggered
  • Changed: Don't scan .@_thumb directory on QNAP systems
  • Changed: Some time displays in hours will now show days or minutes. This is mainly on the stats page to give an easier way to understand the data.
  • Changed: When hovering over the jumpbar, it will now show how many series for that letter.
  • Changed: User Management account now merges Pending users with other members. Users will still show if they are pending via a badge and different options will be present. This will allow admin's to change a pending user's roles and library access at any time. Side effect is legacy accounts that existed prior to email requirement can now be managed.
  • Changed: After editing a series metadata, run cleanup code for tags, people, and genres to ensure unused entities are removed instead of waiting for a nightly job
  • Changed: (epub reader) Previously the preserveAspectRatio got ignored due to lacking max-width. Meaning that whether an image's aspectRatio gets changed is decided by the book. Because of this, most cover image's aspect ratio would not be preserved. This is now not the case.
  • Changed: When inviting a user, the email is attempted to send on a background thread to not block the UI for up to 30 seconds (
  • Changed: Reading History for user now users average hour read rather than reading events to bring more meaningful data
  • Changed: Many reports of numbers (like 2000 series) are now comma separated
  • Changed: Reading list page will now show all characters from the underlying chapters
  • Changed: Reading list detail page will now restrict drag-and-drop reordering if there are more than 100 items. In this case, virtualization will be used and the reorder numbers in Page Settings can be used instead.
  • Changed: Updated a link on theme manager to point to the new github repo for themes
  • Changed: Kavita will now cleanup reading lists with no items at night
  • Changed: Don't allow nightly cleanup to run if we are currently running a media conversion (like webp conversion)
  • Changed: Added back the online user indicator on manage users page
  • Changed: Updated many inputs to be more friendly on mobile
  • Changed: More aggressively lock to prevent race conditions when editing People, Genres, Tags in Scan loop.
  • Changed: All widget events will now show the title (browser tooltip) to read the cutoff words
  • Changed: Further flattened the OPDS structure so now after a series you have all the items then the acquire links. Max depth is 2 from a series (plus acquire link) (Thanks @therobbiedavis for driving this home)
  • Changed: Optimized the Size property in OPDS acquire links to use pre-computed size to avoid an I/O operation
  • Changed: Sped up Age Rating rendering on the UI
  • Changed: All image access requires an ApiKey in the url
  • Changed: Updated a ton of dependencies including PDF.js to 3.x branch
  • Changed: Tightened up spacing on login page
  • Changed: Disabled IpAddresses and Port controls on server settings for docker users
  • Changed: OPDS queries all use pagination, instead of just some of them
  • Changed: When testing email service, an actual email will send to the user when email service is custom (Requires KavitaEmail v0.1.15.0)
  • Changed: Font Swapping enabled to improve first load
  • Changed: When typing a series name, min, or max filter, press enter to apply metadata filters.
  • Changed: Cleaned up the documentation around MaxCount and TotalCount in Series info

New in Kavita 0.7.1.4 Hotfix (Feb 25, 2023)

  • Fixed: You can no longer run the docker as non-root (Reverts functionality as it was breaking Synology installs)

New in Kavita 0.7.1 (Feb 19, 2023)

  • Fixed: Fixed a bug where SignalR wasn't sending events to the UI (and broke Komf)
  • Fixed: Advanced tab on Library settings was not working
  • Fixed: Added timeouts on some regex parsing to prevent malicious filenames timeout attack
  • Fixed: Some users in GMT+1 were having invalid utc dates, new migration to manually correct those.
  • Fixed: Fixed an issue where convert covers to webp was saving an invalid path and made covers look like they didn't exist

New in Kavita 0.7 (Feb 19, 2023)

  • Added: Added a new setting under Media to allow covers to be saved as WebP. This results in a x3 savings. There is no task to perform the conversion, just use Refresh Covers on the library.
  • Added: Series Detail page now has a dedicated Want to Read button for toggling and also let's you quickly see this is in your want to read list.
  • Added: Series Detail page will now show a tag badge showing unread chapters when there is reading progress on the Series Image.
  • Added: When there is progress on a series, the continue point will now pretty print under the series cover image. This will only work with volumes and loose leaf chapters. Specials are not shown due to spacing issues.
  • Added: Added the ability to turn off folder watching for individual libraries in new library settings Advanced tab.
  • Added: Added the ability to turn off including a library's series on Dashboard page.
  • Added: Added the ability to turn off including a library's series on Recommended page.
  • Added: Added the ability to turn off including a library's series and any derived info in search results.
  • Added: Added the ability to upload custom images for libraries (only visible in side nav). Customize to your hearts content!
  • Added: Added release date on the reading list item, if it's set in the underlying chapter.
  • Added: Added an Open API spec generator that gets saved with codebase. This enables external API reference
  • Added: From library settings, admins can now kick off a forced series scan, which ignores last scan date and will act more like a first time scan. This is expensive, but useful if you need to run a full scan after Kavita has migrations.
  • Added: New task called Analyze Files which is used to run a one time migration that scans all files and calculates extension and file size information about them for the statistics view.
  • Added: Added many new visualizations for server-wide statistics: Total Series, Total Volumes, Total Files, Total Size, Total Genres/People, Top 5 release years, Most active users, Popular Libraries (by read events), Popular Series (by read events), Recently read series, Top Readers (with breakdown of Comics/Manga/Books reading hours and against time periods), Format breakdown and size, Publication Status breakdown, Reading History over time, and most popular reading day.
  • Added: Added basic user stats: Total Pages Read, Time Spent Reading, Chapters Read, Last Active, Reading History
  • Added: Added back old PDF to image rendering code just for Tachiyomi, so users can get maximum use from the application.
  • Added: Added Genre and Authors to Series level OPDS feeds.
  • Added: Added summary to Volume and Chapter feeds.
  • Added: New API for getting a given chapter's pages' file dimensions
  • Added: Added a Save preferences button to save a few preferences from the manga reader directly to user settings.
  • Added: Double and Double (manga) now have a shadow effect to emulate a real comic book. You can enabled this via user settings under 'Emulate comic book'
  • Added: Added percentage of a given library and average hours read per week to user stats
  • Added: When there are multiple files for a chapter, show a count card on the series detail to help user understand duplicates exist.
  • Added: Added Size throughout the UI and in the APIs for CDisplayEx integration
  • Added: Ability to provide environment variables PUID and PGID which allow running Kavita as a non-root user in a Docker container. If you do not specify these variables, Kavita will run as root. If specified, user and group 'kavita' will be created in the container with the specified UID and GID if they don't already exist. Kavita will then run as that user. (Thank you @mikeymakesit for the contribution)
  • Added: More aggressive pre-caching for next and previous chapters. This allows for less lag spikes when switching to another chapter in continuous reading mode on the second page on slower networks.
  • Added: Manga reader now has swipe support. You can swipe left, right, up, and down. Swipe will trigger the appropriate page change based on reading direction and reading mode (up/down or left/right). If there is area to scroll, the reader will make sure you hit the end and require another swipe to trigger the page change.
  • Added: Users can now click the Words Read count on user stats to view a year over year count
  • Added: Added a new Yearly stat table for counting files over the years. This is not hooked up to the UI, but will be in a later release.
  • Added: Added new statistics for analytics (Kavita Stats): users with emulate comic book enabled, percentage of libraries with folder watching enabled, percentage of libraries included in search/dashboard/recommended, total reading hours, is server storing cover images as webP.
  • Added: New server setting for Host name. If the server sits behind a reverse proxy, this can be set in Host Name and host name will be used for link generation and accessibility checks (aka if the server can be reached from outside the network) will be skipped, thus an email will always send.
  • Added: Added the ability to allow a library to generate Collections from SeriesGroup tag in ComicInfo.xml
  • Added: New setting in Library settings which allows for Auto Collection generation to be turned off for a library.
  • Added: Added a new JWT Claim to allow getting UserId throughout the codebase. All users will need to reauthenticate.
  • Added: Added UTC Dates throughout the application. They are not exposed in API, but will come later with localization work.

New in Kavita 0.6.1 (Nov 8, 2022)

  • Added:
  • Added: Added a jumpbar to bookmarks page
  • Changed:
  • Changed: Updated all non-authenticated APIs to return more generic messaging back to the user and log more detailed information to avoid any attack vectors.
  • Changed: Log level defaults to Debug as it's no longer noisy
  • Changed: Swapped out SQLite for Memory backstore for Hangfire
  • Changed: Added DisableConcurrentExecution on ProcessChange to avoid duplication when multiple threads execute at once for Library Watching
  • Changed: When parsing epubs, if there is a volume in the epub title, try to parse and group. This is beneficial for Light Novels which are generally tagged this way. Last release, we changed logic to prefer metadata, but most files are not properly tagged.
  • Changed: When scanning files, exit earlier from parser when file is a cover image.
  • Changed: When inviting or editing a user, when Admin role is selected, all other roles are disabled as they aren't applicable.
  • Changed: When there are no collections, don't point the user to the wiki unless they are an admin
  • Fixed:
  • Fixed: Fixed the black background present when the e-reader's color theme was set to 'White'
  • Fixed: Fixed security issue (https://huntr.dev/bounties/55cd91b3-1d94-4d34-8d7f-86660b41fd65/)
  • Fixed: Fixed security issue (https://huntr.dev/bounties/bebd0cd6-18ec-469c-b6ca-19ffa9db0699/)
  • Fixed: Fixed a bug where promoting a reading list would fail
  • Fixed: Fixed a bug where bookmarks wouldn't load in the reader in the order they were saved
  • Fixed: Fixed a bug where state variables weren't being updated correctly and pages could get stuck. This also fixes paging backwards not working
  • Fixed: Fixed a bug where Hangfire could cause high CPU/RAM utilization for some users due to slower process change execution.
  • Fixed: Fixed delete series sometimes not triggering on series detail page
  • Fixed: Fixed some parsing logic for how we treat specials like Annual and Omnibus. This now handles more cases and fixes a few that broke last release.
  • Fixed: Fixed a bug where Log Level Information wouldn't show proper log output
  • Fixed: Fixed a case in ComicInfo fallback where and invalid ComicInfo location wasn't picked up
  • Fixed: Fixed a typo in the toast notification for marking multiple items as unread and made capitalization consistent (Thanks @pssandhu )

New in Kavita 0.6.0 (Oct 23, 2022)

  • Added:
  • Added: New Role for allowing users to bookmark. Bookmarking can consume a considerable amount of resources on the host system, so a role needs to be introduced to restrict this action. By default, existing users will have this role off (admins excluded, they have all abilities).
  • Added: Kavita is now using Tiered Compilation and Dynamic PGO. These are techniques by .NET to analyze the application as it runs and optimize on the fly. This just means Kavita over time will get faster without any extra work by me or you.
  • Added: Users can now search for a series on Bookmarks page. No other filter is active.
  • Added: Implemented Russian filename parsing for Manga and Comics
  • Added: When in the manga reader, you can now double click to bookmark pages.
  • Added: When a user reads the full series of anything that is Completed or Cancelled and exists on their Want to Read list, Kavita will now remove the item from said Want to Read list on a nightly basis. This can be triggered at any time from Tasks page.
  • Added: Kavita can now filter against release year (min, max, or both). If only min, all series that have a release year of or greater than the min are returned. If only max, all series that have a release year or less than or equal will be returned. Lastly if both, any series that fits in that range is returned.
  • Added: Kavita can now sort by release year.
  • Added: Added a new setting to manage how many log files exists in terms of days, since Kavita uses splitting on days now.
  • Added: Added new stats for tracking to help with some of the reader feature utilization for some upcoming redesign/polish work
  • Added: User's can now setup devices for readers that cannot access Kavita via web, but can receive files via email.
  • Added: User's can now send pdf and epub files to devices via the context menu. Users MUST have their own email service setup in order to do this.
  • Added: Added -?, -?, -? for volume parsing for Korean filenames (Thanks @DeltaLaboratory for handling this)
  • Added: Added -? for chapter parsing for Korean filenames (Thanks @DeltaLaboratory for handling this)
  • Added: New validation added to Edit Series modal to ensure Name and SortName are required
  • Added: Series cover selection will now show all volume images or all chapter images (if only chapters exist)
  • Added: New user setting to disable transition effects (animations) in the app. Great for e-ink readers.
  • Added: When browsing on screens with infinite scroll, the scroller will now try to resume to the approximate location (nearest jump key) when navigating back.
  • Added: Added the ability to edit Release Year on the Series
  • Added: Admins can now setup restricted profiles for their users (or users can restrict themselves). A restricted profile will restrict content that does not match their Age Restriction rating. For example, all content on the server that is Mature would be hidden from a user with a Age Restriction of Teen. Age restrictions do not apply to admin accounts.
  • Added: A new role called 'Change Restriction' now exists to allow a user to change their own age restriction.
  • Added: Added a new Series relation called Edition. (A generic relation with no Parent relation)
  • Changed:
  • Changed: Swapped out the default logger with Serilog, which enables more expressive logs and powerful Sinks
  • Changed: Log file rolling is enabled by default and now uses a day by day format. The new format will be kavitayyyyMMdd.log.
  • Changed: Logging levels now affect other types of loggers from libraries and are now handled by Kavita. So Debug can provide rich logs, while Information can keep the other loggers to Error to keep the logs clean. Loggers have been significantly cleaned up and Debug is safe to use without so much spam. Trace will now have that same spammy output.
  • Changed: Removed the data connection for the database out of appsettings.json and hard coded it. This is a prerequisite for auto updating.
  • Changed: Updated pdf viewer to 15.0.0 (pdf.js 2.6) which now supports east-asian fonts.
  • Changed: Unified the star rating design in series detail to match metadata filter.
  • Changed: Changed Normalization to not strip ! from the resulting string. This requires an expensive migration which will take time on first load of this version. This will allow users to have series that differ ...

New in Kavita 0.5.6 (Sep 3, 2022)

  • Added:
  • Added: You can now have a .kavitaignore file at any location in your library and the scanner will read that and filter out any subsequent folder/files. This works very similar to .plexignore, this utilizes a Globbing syntax and supports multiple patterns via new lines. You can find more about the syntax here. This feature is experimental
  • Added: Added a new event type of Info which will show when Scan loops are aborted due to nothing changing on disk. This aims to inform the user that their expected action took no result.
  • Added: Added a clear all button on the events widget
  • Added: When a new series is added to Kavita, library detail pages will insert instantly (previously we reloaded the page every 3 seconds post an update coming in)
  • Added: Added --event-widget-info-bg-color for the new info event widget color
  • Added: When we navigate from a page that has a jump bar and the user has clicked the jump bar, resume their scroll position when returning to that page. This is not tracking scroll position naturally, that will be looked at later.
  • Added: Added / as a server route to swagger, which could help users behind a reverse proxy from using their local server.
  • Added: Kavita now comes out of the box with Folder Watching for libraries. This means that when any sort of event occurs, like new files, file/folder renames, deletions, etc, Kavita will queue a task to scan those changes into the system. By default, tasks will only be processed every 5 mins. This is an experimental feature and disabled by default.
  • Added: Kavita now comes with a new API for library/scan-folder and takes the API key (with admin permissions) and a folder path.
  • Added: Added API endpoint for a health check to streamline docker healthy status.
  • Changed:
  • Changed: Kavita now requires series to be within a folder and not spread between multiple folders. For example, a library root of /manga/ must have series self contained in /manga/series A/files, /manga/series B/files. Kavita will now ignore files that are in /manga/ alone.
  • Changed: Rewrote the scan loop to perform folder-based scanning, Kavita will now process one folder at a time in a multi-threaded manner. This is a major change to how previously scanned, where all files had to be parsed before any DB work could be done. Users on networked systems should see a major improvement.
  • Changed: Scanning tasks now run on their own dedicated queue and will not allow any concurrent runs. Time for a scan task to get executed is lengthened a bit as default queue takes priority.
  • Changed: Added optimizations where Kavita will ignore scanning folders (all I/O) if nothing has changed on the disk since last scan of that folder.
  • Changed: Fail silently if an email invite doesn't get sent, as the link is still present in the DB and UI screen.
  • Changed: Ignore progress events altogether on Series cards so progress bars don't get skewed when a user is reading
  • Changed: Reduced the spammy output for the logger, so more clear information is delivered, instead of internal DB queries.
  • Changed: Deleting a series will now automatically remove it from the Want to Read page
  • Changed: Tweaked a migration to output log only if it's going to be ran
  • Changed: Added dedicated token output to logs for auth flows (when inviting a user) in case token is getting url encoded (but from testing, it doesn't affect)
  • Changed: Reverted back to ES6 vs ES2020 so older Safari browsers can use Kavita
  • Changed: When parsing non-epubs in Book library, use Manga parsing instead of Comic, to better support Light Novels
  • Changed: OPDS description now no longer mentions users will be able to download, as they currently still need the download role.
  • Changed: Updated all links that point to external sites to use noopener noreferrer
  • Changed: Updated the Email Service wording to point to the Github for the external email service
  • Changed: Clear cache will now clear temp directory as well, to clear out bookmark and downloads.
  • Changed: When a library is in progress and a user tries to delete the library, tell them to wait before we let them
  • Changed: Rearranged some code in invite user flow to help with the small fraction of users that can't invite users.
  • Changed: Added a null check so we don't log an exception when connecting a websocket when user is not authenticated
  • Changed: When a theme that is set for a user, gets removed from Kavita, inform the user to refresh.
  • Changed: Manga reader Darkness control is now called Brightness
  • Fixed:
  • Fixed: Fixed a bug where series with LocalizedSeries comicinfo tag could not get joined or joined in wrong order each scan, depending on which folders or files were processed first.
  • Fixed: Fixed a bug where collection images weren't loading
  • Fixed: Go back was not returning to the scroll position when you clicked the nested link, in the book reader.
  • Fixed: Fixed a bug when moving between pages and a page had smaller height, the total height calc would get skewed and allow you to scroll beneath the bottom action bar in the book reader.
  • Fixed: Fixed tooltips not rendering on series cards
  • Fixed: Fixed a missing update in Update Series, where we could change name of a series, but not recalculate the normalized name.
  • Fixed: Fixed a bug where archives with ._ files would be counted as valid files, when they are actually just metadata files from Macosx
  • Fixed: Removed some extra blank space on collection detail page when collection doesn't have a summary or cover image
  • Fixed: Fixed a bug where adding a new item to a reading list wasn't adding it at the end of the list
  • Fixed: Fixed an issue where collection page would re-render the same covers for multiple cards
  • Fixed: Fixed a missing margin-top which made the page extras drawer not render correctly and hence be uncloseable on small screens
  • Fixed: Fixed a bug with stacked modals not showing overlay
  • Fixed: API changes to support some changes in Tachiyomi around progress syncing
  • Fixed: Fixed an issue where Save Bookmarks as WebP could get reset to false when saving other server settings
  • Fixed: Fixed a bug where typeahead wouldn't automatically show results on relationship screen without an additional click
  • Fixed: Fixed an issue where Chrome was caching api responses when it shouldn't had, thus causing some apis to return invalid data after a modification
  • Fixed: When there is no data on collection detail page, make sure we show the no data design
  • Fixed: When resetting password, ensure the input is colored correctly
  • Fixed: After resetting password, Kavita threw an error despite it working.
  • Fixed: Fixed incorrect messaging on reset password page
  • Fixed: Fixed a bug where reset password would show the side nav button causing skewing on the page
  • Fixed: Fixed a bug where a series with a relationship would prevent the series from being deleted (or the library it resided in)
  • Fixed: Downloading theme files was previously not allowed by non-authenticated users due to some changes in the Hotfix
  • Fixed: Hide the All Series side nav item if there are no libraries exposed to the user
  • Removed:
  • Removed: Removed a migration of bookmarks from in the DB into external files. This was added for v0.5.0, 6 releases ago.
  • KavitaEmail:
  • Fixed a typo where Email service was using SenderAddress instead of Username for authentication
  • Changed the messaging around if the user received the email but didn't request it themselves, to ignore to be more prominent on the email

New in Kavita 0.5.5 (Aug 17, 2022)

  • This is another release where I forgot just how much I did. The intent of this release was performance and held tons of work that I had been wanting to tackle, but needed the dedicated time for. Originally I had planned to release this with the new scan loop, however due to security vulnerabilities and some bugs in the hotfix, I had to split the release in half. As mentioned, the focus is on performance and we are bringing a ton of nice performance improvements along with a new contributor, @TheIceCreamTroll, who not only opened a lot of bugs on Github, but also helped fix a few in the process. I look forward to more development work from them.
  • To start off this highlight, comes Downloads. Downloads have always been pretty reliable but when you're downloading tons of content for an upcoming trip, it can first get annoying when you leave the page, you might loose the download. Also that downloads kept prompting you for confirmation when the files are large (to hopefully not eat up your data cap). So this release, I reworked downloads significantly. Downloads are now handled at a global level, range processing is enabled (this means you can stop/start if your browser supports it), downloads are cached and thus streamed to your browser (less memory overhead), the event widget handling has been tweaked a lot to make it much more streamlined, and my favorite, if you start a download, go to another page then return, the download progress bar on the card will still show.
  • Another huge update for Kavita is moving to OnPush change detection, something that is more technical and more work for me, but has nice performance implications for the user. OnPush basically means that the code tells Angular when it's time to re-render, which means less work Angular does and hence more frames per second. Pairing this with the update to Angular 14, the UI should feel a lot snappier to you.
  • This next one is my favorite. I was shocked when I was on a non-admin account and realized, I didn't have a way to track what I wanted to read...normally, I would create a collection but then I realized, Kavita's collections are for admin's only (modeled after Plex originally). So I sought out to build a Want to Read list that is like a collection that tracks what you want to read. Right now, we have ability to filter against it and that's it. I plan to build it out in future updates; if you have any ideas, jump on the feature request site and submit them.
  • In addition to performance, I also focused on polishing up the double page reader from last release and fixed an annoying infinite redirection bug, usually seen on Firefox. If you have issues with the double page render, def stop by or create a Github issue to let me know.
  • Lastly, a few users have been having issues with the invite user flow. I've been hard at work trying to support these users, but have been unable to reproduce their issues. I made some changes in the Invite User flow to hopefully improve their lives, but behind the scenes I'm still engaged in support and planning enhancements around this Authentication system. Thank you for being patient. Early reports from users seem to have less issues post these changes, so give it another go if you fell into this bucket.
  • Lastly is a call to the community if anyone is interested in helping in Support in our discord or being a dedicated release tester. Kavita has gotten to the size where it is taxing to be building and testing all by myself. Currently release testing takes 3 days split between 3 people. I really need help from the community to help keep Kavita stable and let me focus on development rather than Support and Testing. If anyone is interested, please reach out to me in the discord.
  • With all that said, the next release will be even slower than this one. I have a lot of vacation planned for next 2 months and the left over work is extremely difficult, as it's the most complicated and critical part of Kavita. Thank you as always for being patient with releases and for those that have donated, I am extremely grateful. I've been buying my Kavita supplies (lots of coffee to get me through the scan loop).
  • Note: The security vulnerabilities may not be viewable till a few days after this release, to allow all platforms to upgrade their builds. Anything listed has been validated and fixed as of this release.
  • Added:
  • Added: Added new event hooks for when mark as read/unread occur on entities, which will now trigger a re-calculation on Read Time Left.
  • Added: Cover Image uploading will now allow gif and webp files
  • Added: When the user is requesting background jobs, like scan library, Kavita will now disregard jobs if there is already a job in the queue for that configuration.
  • Added: Downloads now support range processing (the browser can theoretically resume the download)
  • Added: Downloads will now persist through page loads and the indicator will show on any card/list items where applicable.
  • Added: Downloads are now global and a notification in event widget helps you see the download progress (browser progress).
  • Added: New user preference to prompt for downloads larger than 100MB. When disabled, Kavita will download without prompting.
  • Added: Downloads will now temp be left on disk and thus if requested again, can send the same file without re-generating it.
  • Added: New placeholder for when covers haven't loaded in yet.
  • Added: PDF Reader now has a loading indicator with a progress bar to indicate how much of the PDF has been downloaded by the browser.
  • Added: PDF Reader will now close itself when ESC is pressed
  • Added: Added the ability to manually setup users without having to worry about the invite url during invite flow or doing it right at invite time. Now a Setup button will appear next to all Pending invites and at any time can be pressed to manually complete the account setup. Note: This does not work with pending invites created before this update. Please re-create them to get the new functionality.
  • Added: Added back to top support on all pages but those that utilize virtual scrolling without a parent scroll
  • Added: Pressing H will open the shortcut modal
  • Added: All users will now have a dedicated List called 'Want to Read' which will allow them to track series they are interested in reading. They can apply filtering against this page.
  • Added: Added a quick way to set darkness level on manga reader for when night light just isn't dark enough (this is not a setting, it is being trailed and subject to removal)
  • Added: Added Japanese Series name parsing support in Parser
  • Added: Added Jump bar to reading list page
  • Changed:
  • Changed: Changed padding to allow for two cards side-by-side on viewport width of 375px.
  • Changed: Changed every component to use OnPush Change Detection, resulting in less wasted render work and a snappier experience overall
  • Changed: Moved some calculations for title and subtitle in manga reader to the backend
  • Changed: Bulk Operations bar now has an explicit mark as read/unread buttons.
  • Changed: Bulk Operations now has Add to Collection option and Delete where appropriate (and for appropriate users)
  • Changed: Edit Series Relation will focus on the next typeahead after pressing Add Relation
  • Changed: Cover Image chooser will now show the chapter's cover images as options by default
  • Changed: Added more aggressive static file caching
  • Changed: Refactored reading list item component to drastically reduce the amount or render calls. Huge performance for users with large reading lists
  • Changed: Typeahead control now has an animation for opening and closing
  • Changed: Scan Series, when invoked via UI/API, will force a re-calculation of metadata and ignore any caching, to ensure reliable results.
  • Changed: Added Range processing support for images on the reader for slower networks or large files
  • Changed: (Manga Reader) When using single mode, try to use a pre-fetched Image, rather than relying on browser to cache the image
  • Changed: Reduced some latency when rendering first page of next chapter via continuous reading mode
  • Changed: Downloads will now leave the file on disk and re-use them. These files are cleaned up nightly or after any scan (scan series/library)
  • Changed: When a user is downloading a file on Kavita, admin's received a notification about it. This notification is now reworded to imply that the server is processing the download. This notification will be removed in future version.
  • Changed: Changed how caching works within Kavita. Cover Images are now properly cached for 1 min, Images for the reader are cached for 10 mins, and the pdf file (for new reader) is also 10 mins. This has a known issue where updating a cover image, the browser wont reflect the new image on Chrome based browsers. This is due to Chrome not respecting the cache-control spec. A hard refresh will fix it.
  • Changed: (Performance) Applied SplitQuery to multiple queries throughout the codebase, speeding up many API calls.
  • Changed: Exception middleware will now send the original error message to the UI rather than a generic 'Internal Server Error'.
  • Changed: Error toasts now have Error in the title along with the status code
  • Changed: Changed volume titles in list view to include volume number.
  • Changed: Implemented a workaround for nginx users with BlockCommonExploits enabled, which would interfere with book image escaping done by Kavita when images had ../ in their path.
  • Changed: Hide jumpbar on pages where there is no scroll
  • Changed: Non-admins can no longer view file info on card detail drawer
  • Changed: Typeaheads will no longer close after selecting an item
  • Changed: If there is no collection or reading list cover image, hide the image placeholder
  • Changed: Optimized bookmarking a page by reducing a DB trip
  • Changed: Search bar now will only show clear button once a single character is typed
  • Changed: When making bulk selections, clicking anywhere on the card will select it.
  • Changed: When cancelling a bulk selection action, like Adding to Reading List or Collection, cancelling the flow will no longer deselect the cards.
  • Changed: Updated to Angular 14
  • Changed: Updated dependencies and bootstrap to match Angular 14 version
  • Changed: When saving bookmarks, capture their date, so we can serve them up in the order they were bookmarked. This only applies to new bookmarks.
  • Changed: Updated all but one API in collection control to admin only policy
  • Changed: Updated some headers on Kavita to tighten security
  • Changed: Tightened up cover upload to restrict more APIs to the admin
  • Changed: Resetting your own password now requires you to pass your current password (if already authenticated). Admins can still change passwords for the user without this restriction.
  • Changed: Removed an additional copy in the build script and changed a copy to use appsettings.json from build rather than development.json
  • Changed: Save buttons on user and admin dashboards will only activate if a setting is changed, and will deactivate when clicked
  • Changed: The save button on the password reset screen will only activate if 'New Password' and 'Confirm Password' match
  • Changed: Centered user roles to 'Roles' in the admin dashboard
  • Changed: Reordered Series and entity details to be more consistent and renamed 'Read Left' to 'Time Left'
  • Changed: Reading list page now has a Read button which starts at beginning and Continue which continues from last reading progress position
  • Fixed:
  • Fixed: Fixed an issue where the sidenav wasn't scrollable on mobile.
  • Fixed: Fixed a bug where manage library component wasn't invoking the trackBy function
  • Fixed: Edit Series Relation now shows Parent as an option when the series is in a child relationship. This option is non-selectable and the field is disabled.
  • Fixed: Collection detail's scroller was on the wrong element and didn't match other pages
  • Fixed: When initializing side nav, don't call an authorized call until after user has authenticated
  • Fixed: Fixed a bug in book reader where page anchors weren't properly calculating and thus table of contents wouldn't show the highlighted item
  • Fixed: Fixed an edge case in Next Chapter API where if the user was on Volume 1 Chapter 1 and next chapter was Volume 2 Chapter 0, Kavita would report no next chapter.
  • Fixed: Added word breaking for long filenames with no spaces on headers, titles, and lists which would cause overflow.
  • Fixed: Titles on many screens and in modals will now word break if they are too long.
  • Fixed: Fixed a bug where Scan Series didn't properly choose the highest directory closest to the library path for scanning, leading to missed files (ie lib/Series A/First Files/a.cbz, lib/Series A/Second Files/b.cbz -> b.cbz would be skipped due to code choosing lib/Series A/First Files/ rather than lib/Series A/ for scanning)
  • Fixed: Fixed a bug where metadata filter, after updating a typeahead, collapsing the filter area then re-opening, the filter would still be applied to page, but the typeahead wouldn't show the modification (correct number of tags)
  • Fixed: Fixed a bad redirect on auth guard which could freeze the browser due to infinite redirect loop
  • Fixed: Fixed a bug when downloading bookmarks from multiple series, the temp file would only use the first series id rather than a combination of all of them.
  • Fixed: Fixed a bug on bookmark reader, the reader on last page would throw some errors and not show No Next Chapter toast.
  • Fixed: Fixed an issue where cover update events would be sent to the UI before the DB was saved, thus looking like covers weren't generated
  • Fixed: Fixed a bug where list item for books that have 0.X series index wouldn't render on series detail.
  • Fixed: Fixed issue where action menu would be overlapped by the header nav.
  • Fixed: Styling issue which caused reading list items to be shorter than intended.
  • Fixed: Fixed an issue where modal could extend past users max viewport height.
  • Fixed: (Manga Reader) Fixed an issue where sometimes when loading the next page, the pagination area wouldn't be properly setup due to a missed render cycle
  • Fixed: Fixed a flash of white when refreshing the browser
  • Fixed: Fixed a bug where bookmarking when using Double (manga) wouldn't bookmark both pages
  • Fixed: Lots of fixes around when we choose to render double pages, when we decide to skip pages, etc. This should hopefully be feature complete now.
  • Fixed: When an error occurs when registering a new user, delete the user instead of rolling back the transaction.
  • Fixed: Fixed Sequence contains no elements exception on first run (in stats)
  • Fixed: When progress updates were processed by Volume cards, the progress bar could be out of sync. This now correctly updates.
  • Fixed: Fixed an issue where InstallId wouldn't properly convert and show on the UI.
  • Fixed: Fixed a bug where browser would inject a clear button onto our search bar, showing 2 clear buttons.
  • Fixed: Fixed an oversight where if there is no tag in ComicInfo after a chapter was updated with People or Genres, then the People/Genres would never be removed.
  • Fixed: Fixed an issue where pages could be skipped in single due to prefetching overriding our recently set image (Manga Reader)
  • Fixed: Fixed dark mode on pdf reader not undoing correctly due to a bug in ngx-extended-pdf-viewer
  • Fixed: Fixed a bug with new authentication where images and pdfs would fail to load (from v0.5.4.2 hotfix)
  • Fixed: Fixed a regression from hotfix where bookmarks were not able to load due to a missing [AllowAnonymous] (from v0.5.4.2 hotfix)
  • Fixed: Fixed a bug where some config folders wouldn't be created on first load
  • Fixed: Fixed a regression which broke Plugins (and Tachiyomi) from authenticating (from v0.5.4.2 hotfix)
  • Fixed: Fixed a bug where clicking on a Jump key wouldn't go exactly to the selected letter
  • Fixed: Fixed a bug where . wasn't being included in # JumpKey
  • Fixed: Fixed a bug where the add to reading list modal would overflow and make create button hidden
  • Fixed: Fixed some inconsistencies with clearing multiple series of bookmarks in one go by building a dedicated api
  • Fixed: Fixed a bad naming case for reading list items where it was just a volume showing just Chapter 0
  • Fixed: Fixed a bug where there could be duplicate scrollbars on pages with virtual scroller
  • Fixed: Fixed a bug where scan series, when generating new covers, wouldn't emit cover updates to the UI
  • Fixed: Fixed an issue where opening directory picker to change bookmark directory and hitting Share without changing anything, would blank out the bookmark directory field.
  • Fixed: Summaries wouldn't be blurred if they were less than 250 characters.
  • Fixed: Custom css themes wouldn't load after v0.4.5.2 Hotfix
  • Fixed: On fresh installs, check if the Server Settings table exists so we don't dump an error on startup (confusing a handful of users)
  • Fixed: Fixed a bug where UI was showing Chapter created date for files instead of file created. This fix introduced a new field so will not show for existing files.

New in Kavita 0.5.4.2 (Aug 8, 2022)

  • Fixed:
  • Fixed a bug with new authentication where images and pdfs would fail to load

New in Kavita 0.5.4 (Jul 1, 2022)

  • Added:
  • Added: New Server setting to use WebP for bookmarks rather than the raw image. WebP provides a 40% saving to space. This setting will take effect but not convert existing bookmarks (use task for that)
  • Added: New Adhoc Task to convert existing bookmarks to WebP. The setting to use WebP does not have to be enabled. This can be a long running task, esp on ARM, so be aware of that.
  • Added: When user account updates occur, like changing permissions or library updates, events will be sent to that user if they are logged in/active on the site and patch their new state in. This ensures they don't need to log out and log in to have the new state
  • Added: Exposed internal reoccurring tasks to the UI under Tasks tab. This is preliminary work for a later update.
  • Added: Kavita can now read the Format tag from ComicInfo and use that to force special status. The following tags will force special: Special, Reference, Director's Cut, Box Set, Box-Set, Annual, Anthology, Epilogue, One Shot, One-Shot, Prologue, TPB, Trade Paper Back, Omnibus, Compendium, Absolute, Graphic Novel, GN, FCBD
  • Added: Implemented the ability to parse some volume and chapter keywords for Chinese
  • Added: Added a word count analysis to count number of words in your epub files.
  • Added: Added an time estimate to read a series based on average reading time for comics/manga and text. Time to read is powered by pages for comics/manga and words for epub
  • Added: Implemented file parsing support for Korean
  • Added: Series detail page will now show an estimated time left, if you have reading progress, based on an average speed between our fast and slow readers.
  • Added: Library Recommendation page now has a new feed, Quick Catchups. Series that take less than 10 hours and are ongoing.
  • Added: On Volume details, added a distinct Read button, rather than having hidden knowledge of clicking the poster for the chapter would let the user read it.
  • Added: Series Detail has a new button in the top right which lets you use a new layout mode for laying out cards (without having to change user preferences).
  • Added: List view layout. This new layout uses a list style to render out non-series on series detail page. There is more information on these cards by default and can show the title of the chapter/issue/book.
  • Added: Swapped out the pagination for infinite scroll and jump bar to quickly jump around library
  • Added: Added Download action to series detail page
  • Added: Implemented the ability to use double page layout in the manga reader. This new rendering mode allows for both Comic (Page 0 Page 1 | Page 2 Page 3) book reader and Manga (Page 1 Page 0 | Page 3 Page 2) reading and is optimized for larger screens. Shoutout to @magujun for finishing off the implementation and getting it into this release.
  • Added: Brand new PDF reader that is more like the native reader in browsers. PDF files will be streamed to the UI (this means way faster load times) and have ability to search text within, select text, zoom, change reading layout, etc. Progress reporting is hooked in. Light/Dark mode is supported but experimental in underlying library, use at your own risk.
  • Added: When a series is removed form a library, library detail will now reload.
  • Added: Filename parser now supports Japanese kanji for volume and chapter parsing
  • Added: Admins can now enable swagger (exposed via swagger/) on their instances via a new server setting.
  • Added: New server setting to configure how many days of backups are retained. Still defaults to 30 days.
  • Added: Added the ability to sort by time to read from metadata filter
  • Added: When there are errors extracting archives, throw a custom error message to the UI informing of the potential issues
  • Added: Admins can now change a library type after creation. There is a warning explaining that it's very likely series will be re-created and hence reading progress or bookmarks could be deleted. Proceed with caution.
  • Added: Users can now enable a setting to blur summaries (mainly for list view) of volumes/chapters/books they haven't read yet.
  • Added: Added new stats to help see how features are being used and gather some performance testing numbers from v0.5.3 and to prepare for upcoming performance release (v0.5.5). In addition, some of the new functionality (virtual scrolling) have new stats to ensure we are seeing how it performs on the user base rather than just the beta testers. New fields: Total Genres, Total People, If storing bookmarks as WebP, Users on Cards layout, Users on List Layout, Max number of Series in a Library, Max Volumes in a Series, Max Chapters in a Series, and if any series relationships are present.
  • Changed:
  • Changed: A major rework to the events widget to provide detailed information about what is occurring during library/series scans and cover refreshes.
  • Changed: Admin dashboard has received a major overhaul to the tabs. Tabs have been split into General, Users, Libraries, Media, Email, Tasks, and System.
  • Changed: Removed Actions dropdown and functionalities from System tab and moved them to Tasks tab.
  • Changed: Tweaked the messaging around Stat collection to reflect what we collect (aka we don't collect browser information)
  • Changed: On Series detail, some of the tag badges have been replaced with a new design.
  • Changed: (Performance) Large performance gains on Scan Series by checking for highest level based on known series folders before falling back to library folders for a scan.
  • Changed: Series detail Language will now show the full name (ie en -> English)
  • Changed: The details modal for chapters and volumes is now a bottom drawer. This new design is to help make the experience more natural on mobile and give us more horizontal space to work with.
  • Changed: Library Recommendation page now uses the time calculations to select quick reads rather than just pages. Instead of < 2000 pages, we now pick series that are not ongoing and can be completed in less than 10 hours.
  • Changed: You can now view an individual issue/book's summary in the new detail drawer, along with maturity rating, word count, pages.
  • Changed: Series detail drawer will now select the book's internal title rather than generic volume 1 when it's set.
  • Changed: (Performance) Reduced an array allocation that occurs thousands of times a scan.
  • Changed: Series detail uses the builtin cover image refreshing mechanism rather than some old, initial implementation, resulting in a much more reliable refresh mechanism.
  • Changed: Side nav filter (when there are more than 10 libraries) now uses a clear button within the input field.
  • Changed: Tweaked the book reader to try to reduce overlapping on bottom action bar.
  • Changed: Redesigned the cover image chooser to be less intensive for volume/chapter image uploads.
  • Changed: When in image chooser, don't allow the first image, which represents what was the active cover, respond to cover image updates
  • Changed: Cleaned up the selection code on mobile to be less prone to accidental selections
  • Changed: Analyze Files on a series, when invoked by user, will force a recalculation regardless of cache.
  • Changed: Many areas around the app, like library detail and series detail, will now recycle DOM to lessen impact of rendering many items.
  • Changed: Changed the router to help with this infinite loading on Firefox issue
  • Changed: Adjusted gutters on admin dashboard to match other screens
  • Changed: The directory picker now allows you to paste in a directory path to select it and features a new design that should be easier to use.
  • Changed: Default pagination is all items on API level
  • Changed: Changed some APIs for Tachiyomi to help with progress syncing edge cases
  • Changed: When errors occur during scans, show the event widget icon in read
  • Fixed:
  • Fixed: Fixed a layout issue for screens with cards that had no data, the message would be fixed into a card space.
  • Fixed: See more is now at the bottom of the section, instead of in the middle of the people area.
  • Fixed: Fixed some alignment issues for page subtitles where the header had actionables
  • Fixed: Fixed a bug in the user-preferences within the BookReader accordion panel where missing brackets for the id prevented the accordion from functioning correctly.
  • Fixed: Fixed an off by 1 pixel bug on the search overlay
  • Fixed: Fixed an issue where images in the book reader were not respecting height limiting styles, causing the image to spill across multiple virtual pages in column layout
  • Fixed: Fixed a bug when fit to height and there is overflow on horizontal, the pagination area is stuck to the original width and after scrolling right, the pagination area doesn't move on manga reader.
  • Fixed: E-ink readers would show an outline on the pagination area on book reader when using white mode
  • Fixed: Fixed a bug when switching from column layout to default, the progress would get reset and current line wouldn't be scrolled to
  • Fixed: Side nav filter (when there are more than 10 libraries) now hides when the side nav is collapsed.
  • Fixed: Fixed a bug where the progress bar wouldn't render on a card item while a download was progressing
  • Fixed: Fixed language not being sent to the backend when editing in series detail modal
  • Fixed: Fixed a bug where in some rare cases, the scroll would not be reset when using the reader
  • Fixed: Fixed a bug where sometimes changing the layout wouldn't re-render the page.
  • Fixed: Numerous spelling corrections throughout the app
  • Fixed: Fixed a bug where table of contents would no longer generate on some Epub 3's due to a change in the underlying epub reader we use
  • Fixed: Fixed a bug in the epub parsing where even if you had a series index and series group, but didn't have the series in the title, Kavita wouldn't group them properly.
  • Fixed: Fixed a bug where refresh tokens were supposed to be granted, but weren't and hence a re-authentication was required.
  • Theme:
  • Added: Added --card-list-item-bg-color for the card list item

New in Kavita 0.5.3 (May 22, 2022)

  • Added:
  • Added: Users can now start reading from any chapter within a Reading List
  • Added: Reading lists now have Cover images like Collection tags (https://feats.kavitareader.com/posts/89/adding-cover-images-to-reading-lists)
  • Added: Added ability to filter series on a collection page
  • Added: Library detail, all series, and collection page filtering will now persist in the url. This allows you to make a filter, click a series and hit back in browser to load the screen as it was, on the same page with the same filter as previously.
  • Added: Card's progress bars will now automatically reflect a users' reading status in real time as a user is reading in real time without refreshing
  • Added: Added a new Sort by field on filtering, Last Chapter Added, to help users sort in a way that mimics On Deck
  • Added: Edit Series modal information tab will now show Last Chapter Added and Last Read Progress
  • Added: Added a link to the wiki for stat collection to help users understand exactly what we collect on the setting field
  • Added: GIF image types are now supported
  • Added: Bookmarks are now moved out of user settings and are their own page on side nav.
  • Added: Bookmarks can now be read by clicking on the series they are from, which will open the manga reader for that set of bookmarks.
  • Added: Users can now link series together via Edit Series modal. Linked series will show on Series detail page under the Related tab.
  • Added: Kavita will now read and group based on the LocalizedSeries tag within ComicInfo. This is not an official tag, but an issue is raised on Anansi Project. This tag maps to Series LocalizedName field.
  • Added: Library Detail now has 2 tabs: Library and Recommendation. Library is your library and recommendation is detailed below.
  • Added: Library Detail Recommendation tab now has actual recommendations. A first pass, we now show (for the current library only): On Deck, Quick Reads (series that are not read, not ongoing, and are under 4k pages), Highly Rated (series rated by any user on the server with more than 4 stars, sorted by average star count), Rediscover (series that you're already read), and lastly More In (more in a given genre).
  • Added: Users can now search directly for files within Kavita. Clicking on the file will open the respective series.
  • Added: Users can now search against Chapters with TitleName set. TitleName is extracted from the Title field in ComicInfo or the book name from Epubs (i.e. if you search 'Stone' and have a series of Harry Potter, 'Harry Potter and the Sorcerer's Stone' will show up as it's the 2nd book in the series)
  • Added: Added total pages to series info modal
  • Added: When a file doesn't exist on disk but still in Kavita and the user tries to read it, throw an error and show it on the UI rather than just spin forever.
  • Added: New book reader drawer design. Drawer has been redesigned to break up settings and table of content to reduce the amount of scrolling and to provide a cleaner UX.
  • Added: Column layout (1 or 2 column) is now available in the book reader. This is a no-scroll solution which works best on e-ink readers.
  • Added: New coloring themes for the book reader. Users can now choose between Dark (existing), Light (existing), or Black (new, all black)
  • Added: Blacklist .qpkg folders and don't scan Recently-Snapshot or recycle folders.
  • Added: New OpenDyslexic font for the book reader
  • Added: You can now hide the action bar (top/bottom bar) in the book reader by using Interactive Mode. Interactive mode will automatically turn on tap to paginate and gives you a distraction free way to read. In order to show the drawer and top bar, you can tap in the document on a non-interactive element.
  • Added: Added --bulk-selection-highlight-text-color and --bulk-selection-text-color for bulk selection bar.
  • Added: Added --search-result-text-lite-color for search results accent (where library is shown)
  • Changed:
  • Changed: Aligned the edit collection tag modal to align with new tab design
  • Changed: Small change in webtoon reader to try to avoid using max width on PC's
  • Changed: (Performance) Removed some nested loops and avoided some list generation in scan loop
  • Changed: When opening a pre-filtered page, the filter section won't automatically open. Instead, the filter icon will be green showing that a filter is in effect.
  • Changed: Made some style changes in the manga reader to better center images in the reader on different reading modes
  • Changed: When a special has a Title set in the metadata, on series detail page show that on the card rather than filename
  • Changed: Increased Recently Updated to give back 30 series worth of additions while still hitting our Non-Functional performance requirements
  • Changed: From dashboard, clicking any activity stream (carousel)'s title, will go to all series page with a custom filter to emulate the underlying stream.
  • Changed: Tweaked the styles on image cover chooser
  • Changed: Typeahead filters are now disabled when they can't be changed. For example, library page, you can't remove the library from the typeahead.
  • Changed: Event widget can now scroll vertically if there are messages that go past the viewport height.
  • Changed: When opening the side nav on mobile with metadata filter already open, collapse the filter.
  • Changed: When on mobile viewports, when clicking an item from side nav, collapse it afterwards
  • Changed: Updated vers-one/EpubReader library which will now allow for reading epubs with bad table of contents (missing items), something that a lot of users complained about.
  • Changed: When an epub doesn't have a dc:date set with publication event type, default to the dc:date tag for publication date.
  • Changed: Updated ComicInfo MA15+ to MA 15+ per Anansi Project (wrong info was documented originally)
  • Changed: Enhanced cover image selection such that back_cover and back-cover will no longer be selected
  • Changed: Large Scale modularization to cleanup our lazy loaded modules and implement prefetching lazy loaded modules. The app should load even faster now.
  • Changed: Home page (dashboard) is now called libraries/ instead of library/
  • Changed: Removed cleaning some edition tags from Series name, like Full Color Edition or Full Contact Edition.
  • Changed: Adjusted some styling in the search results screen
  • Changed: Search results are now limited to 15 in each category that is searched against.
  • Changed: Wrote some extra messaging in the invite user flow to help users understand they can use fake emails or use the link generated after to setup an account for the user
  • Changed: Updated the wording for 'Read in Incognito' as in was redundant
  • Changed: Misc UX polishing throughout the app
  • Changed: Moved tags to be closer to genre rather than between different people roles on series detail
  • Changed: Optimized the query for On Deck to significantly reduce memory and time
  • Changed: Adjusted the mime type for downloads to use application/x-cbz, etc for cbX type of files, rather than the archive mime type. This should help some OPDS readers, like Marvin3, handle downloads more correctly
  • Changed: Added wiki documentation into invite user flow and register admin user to help users understand email isn't required and they can host their own service.
  • Changed: Removed a - 1 hack in progress bars on cards as there used to be an off by one progress bug in Kavita many versions back.
  • Changed: On deck now functions differently. The sorting will be based on reading progress then by last chapter added. Only series with reading progress in the past month are considered or series with some reading progress and last chapter added within the last week.
  • Changed: All drawers have swapped out with a new design and functionality, including ability to click outside the drawer to collapse it.
  • Changed: User preferences now uses normal range sliders instead of custom sliders
  • Changed: Updated to .NET 6.0.4
  • Changed: Book reader action bar (top/bottom bar) is now fixed height. The title will overflow and can be hovered or pressed on mobile to view the full title of the book you're reading
  • Changed: Icon button names (settings, close, next/previous) are now removed in the book reader
  • Changed: Continuous reading buttons (next/prev chapter) will now disable preemptively if there is no next or prev chapter in book reader
  • Changed: The next page button will now show as the primary color to indicate to the user what the next forward page is in book reader
  • Changed: Swapped out our grid implementation to allow us to have less whitespace on the right side of the page when laying out cards (Thanks @therobbiedavis for driving this)
  • Changed: Docker health scan interval has been dropped from 300s to 30s.
  • Removed:
  • Removed: Removed Light and E-ink themes form Kavita. Less than 1% of users were using light or e-ink themes and the maintenance was high. These themes are offered on our wiki to be used as a custom theme.
  • Fixed:
  • Fixed: Finally fixed On Deck so that chapters show correctly when they are added on series that are fully read. This required a migration so it will only work on new series going forward.
  • Fixed: Fixed a bug where sometimes series level metadata would pull from the wrong chapter when the first chapter starts with a float.
  • Fixed: Fixed a bug where locked people fields on a series would be reset during a scan
  • Fixed: Fixed a type on sending when collection tag cover images are updated, thus user's not seeing updates without refreshing
  • Fixed: Fixed a bug where custom series, collection tag, and reading list covers weren't being removed on cleanup
  • Fixed: Fixed a bug where when paging in manga reader, the scroll to top wasn't working due to changing where scrolling is done
  • Fixed: Fixed a bug where clearing a typeahead externally wouldn't clear the x button
  • Fixed: Fixed a bug in typeahead when a partial filter is in place then using keyboard to select options, the wrong option would be picked.
  • Fixed: Fixed a bug in a re-usable pagination component which could trigger multiple page loads due to how pagination model updates occurred
  • Fixed: Fixed a rare bug where an image could be cut off in some scaling modes in the manga reader.
  • Fixed: Fixed a bug on getting publication status within a certain library which would fail due to how the query was written.
  • Fixed: Fixed an issue where series with similar names would sometimes throw a constraint issue due to a custom DB index.
  • Fixed: Fixed a bad parsing case for Series Name - Ch. 23.5 - Volume Extras
  • Fixed: Fixed a bug stemming from the old db where duplicate issues could be added.
  • Fixed: Fixed scroll to top not rendering or working due to the moving of scroll to body instead of window.
  • Fixed: Fixed an issue in updating tags that could lead to a unique constraint
  • Fixed: Fixed an issue with webtoon reader on initial load being completely black and broken
  • Fixed: Fixed a bug where search bar when focused would expand just a bit too much
  • Fixed: Fixed typing lag when interacting with a typeahead
  • Fixed: Fixed some orientation and resize event handlers that weren't firing
  • Fixed: Fixed a bug where filter drawer apply button was sometimes not reachable
  • Fixed: Fixed a bad looking close button on the book reader
  • Fixed: Fixed a bug where volumes that were a range would fail to generate series detail api response.
  • Fixed: Fixed a bug where bulk selection in storyline tab wouldn't properly run the action on the correct chapters (if selecting from volume -> chapter).
  • Fixed: Ensure the bottom action bar is at the bottom of the viewport on small pages that don't take up full height
  • Fixed: Fixed a bug where pagination wasn't mutating url state
  • Fixed: Fixed the invite user modal not continuing when email had a trailing space
  • Fixed: Fixed some bugs around fields not being locked correctly from frontend
  • Fixed: Removed the actions in the header on some pages where there were no actions to make at a page level, like collections
  • Fixed: Fixed library detail page not having header actions hooked up
  • Fixed: Split page was not centering the canvas in manga reader

New in Kavita 0.5.2.5 (Apr 8, 2022)

  • Added:
  • Added: Backup now includes your themes folder.
  • Fixed:
  • Fixed: Fixed an issue where PDFs would not render on 32-bit Pi's due to a dependency having a bug.
  • Fixed: Fixed a copy issue where sometimes non-existent files would cause existent files to not copy during backup
  • Fixed: Fixed a bug where bottom action bar on the book reader would have side-effects that top didn't, like settings button wouldn't open the drawer.

New in Kavita 0.5.2.3 (Apr 6, 2022)

  • Changed:
  • Changed: Slightly tweaked the logic of On Deck to consider chapters in a series that have been created within 30 day cutoff in addition to having been read. This does not fix the inherit issues with it, but serves as a first start.
  • Fixed:
  • Fixed: Fixed a bug where some events weren't being sent to admin clients only
  • Fixed: Fixed a bug where on scan, if SeriesSort wasn't set in ComicInfo, it would get cleared, thus breaking sorting on library detail page
  • Fixed: Fixed an issue where when falling back to folder parsing, sometimes when the folder name wouldn't parse well, like 'Foo 500' which parses as 'Foo'. Now the fallback will check if we have a solid series parsed from filename before we attempt to parse a folder.
  • Fixed: Ensure SortName is always being set during a scan loop, even if locked, to ensure that it's never just an empty string (which breaks sorting)
  • Fixed: Fixed some errors being thrown from metadata update for files that haven't had a summary set.
  • Fixed: Fixed a bug where updating a series name to an existing name in the system wouldn't throw an error
  • Fixed: Hide the side nav hamburger toggle when not authenticated
  • Fixed: Fixed some logic issues around determining which releases are installed, available, etc from Announcements page.
  • Fixed: On Firefox, upload cover image via url had different event properties than other browsers and would completely fail.
  • Fixed: Confirm email (invitation link) would redirect to login when not authenticated due to side nav having an authenticated call in it.

New in Kavita 0.5.2 (Apr 3, 2022)

  • Added:
  • Added: Introducing custom theme support! Admins can now add their own custom theme files and have Kavita use them as the default for new users. Users can change their own site theme to any on the server, including Kavita's default themes. Admins can also default all users to any theme, including a custom one. See more about theme's here.
  • Added: Added a hover effect to card to give more feedback to the user.
  • Added: Kavita now comes with an e-ink theme out of the box, optimized for e-ink devices
  • Added: Added tooltip to API regenerate button to warn user about it invalidating all existing clients.
  • Added: Added file parsing support for 'Series 001 (Digital) (Name123)'
  • Added: Series detail now shows reading lists where said series has some connection to.
  • Added: Series detail will now show Last Read date by the user.
  • Added: Implemented the ability to update metadata on series from the UI. Each field can be manually edited and locked. Once locked, no updates will occur on that field, even if the metadata source (ComicInfo) is updated. Fields can be unlocked from the UI. This does not write to the ComicInfo.xml file.
  • Added: New, redesigned screens for Chapter/Volume info (now called details). This new modal screen features expanded metadata (from ComicInfo if in underlying file), ability to see the bookmarks in said Chapter/Volume, a quicker way to change cover image, and overall, better experience.
  • Added: For archives, when parsing, set the SeriesSort from ComicInfo if it exists (this is a pending v2.1 draft spec)
  • Added: Added ETag on headers for Bookmark and Manga images to allow browser to cache some files
  • Added: Manga reader now has a modal to show all the shortcut keys
  • Added: Manga reader now has a configurable background color in user settings, defaults to black
  • Added: Manga reader has a new setting to disable showing screen hints, like overlay when pagination direction is changed. Users can now disable in user settings.
  • Added: Cache control on reader images are cached for up to 10 mins
  • Added: Added mark as read/actionables on Files in volume detail modal.
  • Added: Errors that occur in background tasks, like Backup or Library scan, will now push to events widget to inform the user that said tasks were aborted. User can now click the error and get more information (or check logs for the same information).
  • Added: Side nav added to the application. From the side nav you can easily reach your libraries, reading lists, collections, and user settings.
  • Added: Hooked in the ability to search by release year (along with series optionally) and series will be returned back.
  • Added: Filter screen now lets you filter against a series name, using same contains logic as search. (https://feats.kavitareader.com/posts/93/filter-by-series-title)
  • Added: Download role will now block users over ODPS from downloading items. OPDS-PS will still function.
  • Added: Added stat collection on new features to help focus development efforts. New stats include: Number of Users on an install, Total Files per Install, Admin's theme, Admin's reading mode, Number of collections and reading lists, and if OPDS is enabled.
  • Added: When deleting a library, send Series Removed events for each series in said library, to remove from user's pages without a refresh
  • Changed:
  • Changed: Updated to Angular 13 and updated many dependencies
  • Changed: Updated to .NET 6.0.2
  • Changed: Upgraded to Bootstrap 5
  • Changed: Manga Reader will now use regular images to render pages to the user. A canvas (previous implementation) will be used solely for page splitting. This has improved resolution for Fit to Screen rendering on smaller devices.
  • Changed: Dark mode is now Custom theme
  • Changed: A ton of work behind the scenes to unify the styles we user per component.
  • Changed: A major rework to the events widget to provide detailed information about what is occurring during library/series scans and cover refreshes. It will now send filenames being scanned, what series is being updated or where cover generation is.
  • Changed: Changed tag badges on the filter to be green instead of outline on dark theme.
  • Changed: All toasts relating to task queuing now have 'info' instead of 'success' styles.
  • Changed: Width of search bar now spans entirety of navbar on all viewport sizes.
  • Changed: Series Detail page is now generated completely in the backend. This allows for greater flexibility and speed. On average, users should see 50% speed increase on page load and site responsiveness.
  • Changed: Continue reading or Read button on series detail is now enabled on load. You can skip waiting for the volumes and chapters to load.
  • Changed: Series Detail page will now show Books under Books tab only
  • Changed: Series Detail page for Book Libraries will now render titles as 'Index - Book title'
  • Changed: Chapters/Issues tab will no longer show any chapters that are just a volume (ie Btooom! - v01.cbz)
  • Changed: Removed file parsing support for 'A Compendium of Ghosts - 031 - The Third Story_ Part 12' due to complexity in parsing
  • Changed: CopyFilesToDirectory will now allow for one duplicate copy over and put (2). This allows for old bookmarks to handle duplicates on download.
  • Changed: Removed no-connection route and component since it is no longer in use by the app.
  • Changed: Series Detail page now works slightly different. Library type Books will never send chapters back. It will only send Specials or Volumes back. Volumes are renamed to be more user friendly. Non-book types had many fixes to streamline what renders on the screen.
  • Changed: Made the badge expander button smaller to match tag badges
  • Changed: Log message for Scan Service has been tweaked to make it easier to find total scan time vs scan time for a chunk of work.
  • Changed: Multi-select typeaheads now have a close icon to clear out the field
  • Changed: Fixed up some styling on Edit Series modal for phones.
  • Changed: (Performance) Optimized some code in ArchiveService to avoid extra memory allocations.
  • Changed: Tweaked on deck to only show series that have progress within 30 days.
  • Changed: Ignore @recycle directories on QNAP devices
  • Changed: Disabled some options in the menu when you're in a mode that doesn't support for Manga Reader
  • Changed: Moved library type resolution into getChapterInfo resulting in less API calls when starting a new manga to read
  • Changed: Changed the layout of the extended settings menu on manga reader
  • Changed: Refactored Invite user setup to shift the checking for accessibility (network) to the backend and always show the link to the user. This should help with users that are facing issues. Email sending is still in place, but users can easily bypass without looking in logs.
  • Changed: Removed On Deck page and replaced it with a pre-filtered All Series page (filtered to In Progress series only)
  • Changed: Cover chooser via url now works much more reliably. The whole implementation was changed to download the file into the temp directory. The image is non-executable and is cleaned up on the daily cleanup.
  • Changed: Removed libraries from dashboard for now. Use side nav instead.
  • Changed: Moved Changelog from admin tab to user dropdown under Announcements.
  • Changed: You can now click library from admin library tab (https://feats.kavitareader.com/posts/90/link-to-a-library-from-the-library-admin-page)
  • Changed: Scroll is now on the body and not the whole page. This reduces page jank on nav bar when loading a page with overflow
  • Changed: When navigating OPDS feed for a series, now shows the items mimicking how Series Detail does in the UI
  • Changed: Adjusted all headers in the app to h2
  • Changed: When exploring an OPDS feed, Chapters will now be mapped to Issues/Books depending on the library type
  • Changed: When exploring an OPDS feed, if a Volume only has 1 chapter inside it, we flatten the navigation and send a chapter which emulates the volume.
  • Changed: Updated Search description (OPDS-SE) to inform user they can search by reading list or collection tag as well.
  • Changed: (Performance) Updated some String Equals to avoid an extra 90 bytes allocation
  • Changed: (Performance) Optimized Normalize method to reduce memory pressure by 100MB over the course of a scan (16k files)
  • Changed: When sending the chapter file on OPDS, format the title of the FeedEntry more like Series Detail aka improved file download names in OPDS.
  • Changed: When an epub metadata key is not correct, even after we attempt to correct it, ignore the inlining of the style so the book is still readable
  • Changed: Removed cache directory from UpdateSettings validation as we don't allow changing it.
  • Changed: When searching against series, use normalized name as a search parameter. This will allow users to type dont and still get don't back.
  • Fixed:
  • Fixed: Fixed the wrong hover color used on bulk add to reading list
  • Fixed: Fixed an issue when swiping, sometimes swipes would trigger a card click
  • Fixed: Fixed a bug where user preferences wasn't saving book reading direction
  • Fixed: Fixed a bug where clicking 'recently added' on dashboard wouldn't load up /recently added page
  • Fixed: Fixed a bug where no results was showing on search, when searching for a library
  • Fixed: Fixed broken wiki links within Kavita after we reorganized the wiki.
  • Fixed: Fixed a bug where reading lists and collection's summary wouldn't render new lines
  • Fixed: Fixed a bug where books were sorting incorrectly when series_index had non-zero decimal (1.0, 1.2, 2.0)
  • Fixed: Fixed a bug in get previous chapter where it could bleed into chapters or specials after the first volume
  • Fixed: Fixed a bug where ComicInfo count can be a float and we threw a parse error expecting it to be an int
  • Fixed: Fixed a bug in download bookmarks which didn't properly create the filenames for downloading, resulting in an empty zip
  • Fixed: Fixed an issue where card detail layout wouldn't refresh the library name on the card between pages
  • Fixed: Fixed an issue where a check to scrolling page back to top was missing in the manga reader
  • Fixed: Fixed a bug where cleaning up collection tags without Series was missing after editing a series
  • Fixed: Fixed a bug where when adding multiple series to a reading list, an error was thrown on UI, but it was successful.
  • Fixed: Fixed a bug in GetContinuePoint for a case where we have Volumes, Loose Leaf chapters and no read progress.
  • Fixed: Fixed a bug where archives with __MACOSX inside would break the reader during flattening
  • Fixed: Fixed a bug where confirm service rejection wasn't handled correctly
  • Fixed: Fixed an issue where checking if server was available for email services on a local ip or loopback wouldn't fail correctly and use would be stuck 'Checking for Availability' forever.
  • Fixed: Fixed a bug where if GetImage from ReaderController threw an error, the chapter directory would be emptied, but the folder itself wasn't deleted.
  • Fixed: Fixed an issue where fullscreen mode in webtoon reader would stretch the images
  • Fixed: Adjusted the styles on dashboard for first time setup and used a routerlink rather than href to avoid a fresh load
  • Fixed: Fixed a bug in the filter format code where it was sending the wrong type on filtering screen
  • Fixed: Don't show a pointer if the carousel selection title is not actually selectable
  • Fixed: Fixed a bug where after going into webtoon reader mode then leaving, the bookmark effect would continue using the webtoon reader mode styling
  • Fixed: Fixed how continuous trigger is shown so that we properly adjust scroll on the top (for prev chapter)
  • Fixed: After all migrations run on startup, save the new installed version number to database and send that to KavitaStats (if enabled)
  • Fixed: Fixed a bunch of typeahead bugs when using keyboard
  • Fixed: Fixed a bug where some bad page checking code broke book reader when navigating to the last page naturally
  • Fixed: Fixed label order for Prev/Next on book reader
  • Fixed: Fixed a bug on webkit browsers (apple devices) where scroll would fail as document wasn't fully rendered in book reader.
  • Fixed: Correctly validate and show a message when a user is not an admin or has change password role, when going through forgot password flow.
  • Fixed: Fixed a bug where + and some other symbols weren't allowed in email invites, but should have been
  • Fixed: Fixed some rendering and validation issues around inviting users and the underlying screen refreshing
  • Fixed: Fixed the UI complaining of an error when adding a chapter to a reading list via bulk selection, when the chapter already exists. The UI will now show success, even if no operation occurred.

New in Kavita 0.5.1.1 (Feb 14, 2022)

  • Changed:
  • Email migration will now auto validate the email as long as user provides the correct username/password