It's been some time since our last release, so much so that I almost forget what v0.4 was all about. v0.5 is finally here and is the largest release so far with 32 features, 31 changes, 36 bugfixes delivered. Thank you for waiting and without further ado, let's get into it.
Local metadata is here and Kavita will now respect your metadata over your filenames and in addition, pull in all that data. You can now slice and dice against that metadata from collections and library detail to explore your data. In addition, some fields from EPUBs are mapped into a respective ComicInfo field, so book collectors rejoice, you can now sort by author.
In addition, we now have a Tachiyomi Extension! Starting with v0.5, you'll be able to hook up Tachiyomi with Kavita and start consuming content. While the extension is feature complete, we are still working on integrating progress sync for Kavita into the Tachiyomi application. This will come at a later date. Thank you to @ThePromidius for building the app and the discord testers for beta testing for the past month.
This release is so jam packed, it's hard to pick out some other really cool features. Some of my favorites are PDF rendering has been multi-threaded and is way faster, bookmarks are stored differently and now allow for you to see image previews and also not worry that the underlying image is changed when you swap out the file. We updated to .NET 6, which comes with a ton of performance improvements and we've reworked all the cache logic to ensure that we only open your files when something new has happened.
I want to give a special shoutout to @ChristofferGreen for again coming in and helping our downstream libraries get PDF support on ARM 64-bit machines and @ThePromidius for working extremely hard to build out a Tachiyomi Extension for Kavita.
Lastly, the next release will not be this big. This release was so large due to the scope of changes to support local metadata and the fact that I took a holiday in December. I have replanned the work for the year on the Projects tab, so take a look there if you're curious what is coming. Our wiki will have updated pages in the coming week with how all the new features work. If anyone is interested in helping with updating the wiki, please drop me a pm in discord.
Note: Docker images older than v0.4.4 have been removed. Please try to keep up to date.
Added
- Added: The color theme (dark mode) will now tell the browser that the color scheme is dark and the browser can render the scroll bar a darker color. (#793)
- Added: When a user is downloading files from Kavita, the events widget will now show those events (#806 )
- Added: Version updates are now pushed to the events widget and allow the user take action from there (#806)
- Added: Password requirements are now shown on register form in a tooltip (#804)
- Added: Updated application to .NET 6 (#799)
- Added: During Library Scan, Parser can now take information in ComicInfo.xml and Epub and use it for Series Name, Volume Number, Chapter Number. This will overwrite any information parsed out of the filename.
- Added: Genres, People (Inker, Penciller, Editor, Artist/Cover Artist, Publisher, Writer, Letterer, Colorist, Character, Translator), Age Rating, and Tags are now extracted from ComicInfo.xml/epub files and related to both Chapter/Issues and Series. Series will be a summation of all genres/people on chapters/issues.
- Added: Chapter Title can now be extracted and viewed on cards via hovering to see in tooltip or in the readers directly
- Added: Sort Title will now be populated from books (no comicinfo.xml tag) if the tag is present in the epub and the book is not part of a series. (#817)
- Added: AgeRating is now supported in Kavita. This is stored at both the chapter level and series level. Series level contains the highest (worst) rating of all the chapters
- Added: ReleaseDate is now supported in Kavita. This is stored at both the chapter and series levels. At a series level, only the lowest year is stored representing the first release of the Series.
- Added: Kavita now includes parsing support for European comics with Tome notation and HS identification. In addition, Br Fr will be cleaned out of titles. (#835)
- Added: Tachiyomi now has a dedicated extension that works with Kavita. Requires Kavita v0.5+
- Added: Ability to filter series from Library, On Deck, Recently Added by multiple fields, including: Genre, Format, Library, People (all people types from ComicInfo v2.1), Rating, Read Status, Collection Tags, and Tags
- Added: Added support for ComicInfo v2.1 draft's Translator tag
- Added: Added support for ComicInfo v2.1 draft's Tags tag
- Added: You can now Sort by Sort Name, Created, Last Modified on screens that don't have existing sorting (ie You can't apply custom sort on Recently Added as that already uses a custom sort)
- Added: New All Series page. This page will combine all series from all libraries in one page and let you apply custom filters on it. You can reach this page by clicking 'Libraries' on the home page
- Added: Series can now be tagged with Language via ComicInfo and filtered in the UI.
- Added: Added a re-occuring task to cleanup the Database of abandoned entities rather than doing the check exclusively after a scan.
- Added: Ignore @Recently-Snapshot folders during scanning for QNAP devices
- Added: PDF Rendering is now multi-threaded with a drastic speed up for those who are reading PDFs
- Added: Implemented fullscreen mode in the readers.
- Added: View bookmarks now shows the actual images due to new storage mechanism.
- Added: Users can now reset their user preferences to Kavita Installation defaults in User Settings
- Added: Before any database migrations run, Kavita will now perform a backup. The db itself will only be stored in temp folder and will be cleaned up the next day. If your application fails to startup, then stop Kavita, restore this db in config, and restart to try again.
- Added: Added additional UI checks to ensure user is authenticated before loading sub-modules.
- Added: Implemented Publication Status in SeriesMetadata and the ability to filter it. This is derived from Number and Count fields in ComicInfo.xml and will determine if a series is On Going or Completed.
- Added: Added a tooltip to New Library modal to help explain what the different types do
- Added: Added a exclusion to file scanning code to ignore .qpkg folders (QNAP users)
- Added: You can now click on metadata tags from Series Detail and it will load up the search screen with a preset of said field
- Added: Bookmarks are now backed up during backup procedures
- Added: Delete Series will now send a UI event so series can be removed from client's UIs without refresh
Changed
- Changed: Password requirements are now relaxed, only requiring 6-32 characters.
- Changed: Metadata refreshing (cover images) now no longer uses a multi-threaded implementation. Due to the heavy I/O, this should not result in much performance decrease.
- Changed: ComicInfo.xml will only be searched inside files with extension (cbz, cbr, c7, etc) to avoid extra time on files unlikely to have them in
- Changed: Changed how metadata service selects the first volume to read summary info from. It will now select the first non-special volume rather than Volume 1.
- Changed: Rewrote GetCachedPagePath() to be much more straightforward & performant.
- Changed: When a card is selected for bulk actions, there is now an outline
- Changed: From filename parsing, if a series starts with - or , Kavita will clean it out
- Changed: Refactored natural sort order to behave closer to how Windows works. This should lead to better cover generation in more cases
- Changed: Updated how EPUB Table of Contents are generated to handle some unique cases when Kindle packs the metadata
- Changed: Refactored the UI to show OPDS as 3rd Party Clients since Tachiyomi now uses OPDS url scheme for authentication
- Changed: Reduced the size of the unread badge on cards
- Changed: New installs will start off with backups daily
- Changed: Stack traces will be included with the error messages going forward (not exposed to UI)
- Changed: Removed all Bitmap operations, which removes the need for libgdiplus to be installed on systems (linux/arm only)
- Changed: Don't show an exception when bookmarking doesn't have anything to change
- Changed: Refactored User Settings to move Password and 3rd Party Clients to a tab rather than accordion.
- Changed: Reduced menu overlay auto close timeout to be 3 seconds
- Changed: Overlay menus now have a blur effect (this is only on Chrome)
- Changed: Paging direction overlay now shows arrows to help user understand which direction is next
- Changed: Removed the color override options on manga reader
- Changed: Bookmarks are now stored as files on the user's disk. They store the raw image from the archive/pdf/image. Due to this, we allow the user to change the bookmark directory to a custom. Do not place files in the bookmark directory manually, Kavita will delete them.
- Changed: Updated Server Settings page to use 2 col for some rows.
- Changed: Treat folders that start with ._ as blacklisted during scanning
- Changed: Stack multiple user preference controls into the same row
- Changed: (Performance) Implemented some optimizations to reduce the cover generation on second loads when files change
- Changed: (Performance) Reduced the amount of redundant checks when processing files
- Changed: Simplified the logic for when fit to screen rendering logic occurs. It works on all images not just cover images.
- Changed: Parser will now clean titles by replacing multiple empty spaces with a single one. This occurs when a special keyword is being replaced from series name.
- Changed: (Performance) Added a short circuit in CanOpen to check for rar files and force SharpCompress for deflating. This avoids an I/O and speeds up processing.
- Changed: Tweaked how On Deck sorting works to try and better sort series with new chapters.
- Changed: When the scanner stops a scan due to empty folders or disconnected drives, log as a critical message and inform UI that the scan stopped
- Changed: Changed the wording on the UI to say 'Refresh Covers' rather than 'Refresh Metadata', to better reflect what is happening.
Fixed
- Fixed: Fixed a bug where weekly checks for new versions would not send the correct name to the UI, thus the modal was not opened.
- Fixed: Fixed a bug where OPDS pagination would send the incorrect number of entities on the feed, making the last page impossible to get to (#805)
- Fixed: Fixed an issue where kicking off Refresh Metadata from series card would not show warning about it being an expensive operation (#779)
- Fixed: Fixed an issue with logic around checking a file to see if it's been modified since last scan. There were inconsistencies and the time comparison was too precise, resulting in missed updates.
- Fixed: Fixed an issue on series detail when clicking refresh metadata, then cancelling, the ... button would still be disabled.
- Fixed: Fixed a bug where cover file cleanup wasn't properly deleting files due to a regex typo
- Fixed: Fixed an issue where cleaning up backups wasn't properly selecting database files older than 30 days
- Fixed: 64-bit ARM installs will now be able to read PDF files (#826)
- Fixed: Fixed a case where chapter was being parsed incorrectly when the series title ends in a number. (ie Kaiju No. 8 036 (2021) (Digital) -> Chapter 8 036)
- Fixed: Fixed an issue where add to collection for a single series wasn't calling the handler
- Fixed: Fixed an issue where when looking for cover image, the file extension would throw off sorting code
- Fixed: Fixed a rare issue where when reading manga, the code that picks the files in order would choose the wrong one due to OS sorting discrepancies. Now Kavita uses natural sort order as well.
- Fixed: Updated parser to handle a case where there was more than one space as a separator
- Fixed: Fixed a bug with typeahead where clicking two typeaheads would keep both their dropdown lists open
- Fixed: Fixed a bug where running a scan in a docker container with a disconnected mount would still run.
- Fixed: Fixed an issue when moving from Fit to Screen Splitting -> Left/Right Split, the underlying canvas wouldn't re-render or calculate correct sizing
- Fixed: Fixed a bad optimization when rendering images on Fit to Screen
- Fixed: Fit to screen will break the reading session if first page is low height and cover as height of canvas is fixed going forward.
- Fixed: After rendering a Fit to Screen image, next page on tablet can still see the rendered image.
- Fixed: Fixed a regression where custom fonts from books stopped loading in
- Fixed: Fixed a rendering issue with margin left/right screwing book's html up.
- Fixed: Fixed an issue where our custom line-height: 100% would break book's css if using line-height. Now we remove styles (overrides) if they are non valuable.
- Fixed: Fixed an issue where anchors/links wouldn't be blue when reading in non-dark mode
- Fixed: Fixed a bug where when choosing cover images, the word "backcover" would be accepted. This would lead to epubs with both cover and backcover images and no metadata to choose backcover sometimes
- Fixed: Fixed an issue where large images could blow out the screen when reading on mobile. Now images will force to be the max width of the browser.
- Fixed: Fixed an issue where some images in some browsers wouldn't load correctly over https when reading through a reverse proxy.
- Fixed: Fixed a bug where on cloud mounts, some files can constantly regenerate covers on scan, despite nothing changing
- Fixed: Fixed a bug on Changelog where multiple releases could show as Installed. For nightly users, show the last stable as installed.
- Fixed: Fixed a bug where scanner would not delete a series if another series with same name but different format was added in that same scan
- Fixed: Fixed a bug where last page would render twice if opening a read manga then paging backwards
- Fixed: Fixed an overeager parse where a word with extra in it could treat the file as a special (#924)
- Fixed: Fixed a bug where MarkChaptersAsUnread implementation wasn't consistent between different files and lead to extra row generation for no reason.
- Fixed: An epub was not rendering images when read in Kavita due to specifying the image in metadata as absolute path (correct) then referencing it with relative path (incorrect). Kavita now checks relative paths and attempts to correct them.
- Fixed: Fixed a rendering issue in book reader where an image would loose its aspect ratio if it has an inline style specifying height. (Thanks @andrewmackrodt for the fix)
- Fixed: Fixed missing handlers for adding a chapter to a reading list from card details modal and adding series to collection from series detail.
- Fixed: Fixed a bug where an existing series A has LocalizedName of B and files named A. A new series with files named B were not merging under Series A. They now properly merge (#950)
- Fixed: Fixed a bad http call on reading list remove read and cleaned up the messaging