Releases: Kareadita/Kavita
v0.8.6.1 - A few small issues Hotfix
A few bugs slipped through, major thanks to Amelia for driving them home.
Fixed
- Fixed: Fixed a bug where Docker users could see the download button on change log component.
- Fixed: Fixed settings not saving when using a docker install
- Fixed: Fixed not being able to delete volumes from the series detail view in bulk
- Fixed: Fixed UI visually not removing volumes in series detail view when they're deleted
- Fixed: Fixed some volumes having empty title hovers
- Fixed: Fixed Reading List with some medium sized lists getting stuck in the infinite scroller
v0.8.6 - Spring Cleaning
v0.8.6 is here and it's only fair to call this the Spring-Cleaning release as over the past 3 weeks, Amelia (@Fesaa) and I have closed out 65 issues from Github and polished a ton of the app. This release is packed with a lot of OLD issues finally being tackled and a few of them are quite annoying, so let's get started with the breakdown.
First, let's talk about the few enhancements that made it into the release. One of these enhancements was around Smart Filters and removing them from your customize list or renaming them. Both are features that weren't thought about in the initial implementation and just kept slipping through the cracks. Amelia took it upon herself to not only implement but also add some drag and drop reordering on the side nav for those that don't want to go into customize screen.
Another nice enhancement is around Media Errors. I implemented Media Errors after being inspired by Komga feature, but never gave it much more thought after that. You know what's annoying? Having 300 media errors that aren't actually reflective of the state of your media. The original thought was manually clearing the alerts, but why can't Kavita just do most of those checks for you? So that's what this feature brings. Kavita will check if files were successfully imported with at least 1 page or 1 word and clear out the issue for you.
The last big enhancement is around Reading Lists. I'm not a huge reading list user, but the folks over in CBL project have been discussing some polish that is needed and raised a great Feature Request. Some of these were no-brainers, so I took a few days and implemented some much-needed polish and exposed more metadata around the reading list. My favorite is not being in edit mode by default. If you have ideas on how to make the Reading List experience better, please add your ideas to the Feature Request. I have already confirmed I will be doing a big overhaul once I have a good picture of the features user's want and need.
With the enhancements out of the way, let's focus on the meat of this release, the bugfixes and polish. I'll open with one I know many readers are going to enjoy--the webtoon reader finally tracks the last page read when using the continuous reader 100% of the time. The nightly users and I tested this by reading a combined 700 chapters (500 of those were just @duplaja, go figures). Shoutout to @reinar for providing some code that helped me get the needed fix.
Another major fix, with the help yet again of Amelia, is the localization fix. Non-English locales have been having issues with Kavita for the last few releases and due to me not being able to reproduce the issues, I used a shotgun approach to fixing the issue. Luckily Amelia has such a setup and was able to fix it. Docker users can now remove the DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true
from their compose file and Kavita should work across the board.
Docker users
Remove
DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true
from your compose files. It is no longer needed.
Lastly, Amelia polished a lot of the UI for the epub reader, closing out some annoying issues around scrolling, especially on iOS (which I cannot test against) and I focused on the backend, allowing for loosened parsing requirements, but still reporting the issue to Media Errors (Thanks to @vers-one for enhancing their library).
This overall feels like a great release with a lot of polish and stability. Many other issues were fixed, and I feel very confident in this release. The next release is planned to focus on the Scanner and see if some more instability can be ironed out and apply some more performance improvements. Amelia and I have been brainstorming and doing some research to see what overhauls we can make.
Lastly I want to end with an update that my time is still extremely constrained and will likely be this way going forward, so expect longer windows between releases.
Added
- Added: Ability to delete Smart filter steams from Customize Side Nav and Dashboard
- Added: Ability to rename Smart Filters in Customize settings
- Added: Added the ability to reorder the side nav without using customize screen by clicking the actionable on Home -> Reorder (Thanks @Fesaa)
- Added: Added a new cleanup task that scans media errors and clears them out if they are ingested fine into Kavita
- Added: Added a new preference option for allowing Kavita to automatically switch into webtoon reader mode based on image resolution. Defaults to on.
- Added: Added the ability to see all people across a reading list, the time it would take to read, and age rating.
- Added: Updated many areas of Kavita to bring even better localization support. Everything in the UI should be fully localized now
- Added: Added support for partial (0.5) volumes for Korean filename parsing
Changed
- Changed: Allow volume title card overlay for more than just book libraries
- Changed: Updated hostname tooltip text to be more clear
- Changed: Added a toast message for backfilling events on scrobble page.
- Changed: (Kavita+) Changed button on Scrobbling Errors to a match button which can directly fix the issue, rather than the old edit and add weblink.
- Changed: Improved the tooltip for the scrobbling button to be clearer if it is on/off.
- Changed: Overhauled the reading list detail page to be more aligned with series detail page
- Changed: Reading lists will be in non-edit mode by default. A new edit button can toggle edit mode and bring drag handles and other controls.
- Changed: Added a warning when in edit mode about when drag handles are suppressed
- Changed: PDFs will now fall back to the Title in metadata for series
- Changed: Updated Angular to 19
- Changed: (Kavita+) Don't create scrobble events for specials as they will never match on AniList
- Changed: Updated wording and some styling to make the first impression better
- Changed: Changed how series downloads work to include the individual archives instead of unpacking them first (for non-image based series)
- Changed: Reworked the version update logic so that we don't pop the new version update so often. It will now pop once and if no action is taken, it will wait a week to pop again. The same logic applies to the you are X releases behind, etc (but longer windows).
- Changed: Updated dependencies and Security issues from downstream libraries
- Changed: Enhanced parsing code for (back cover) falsely being recognized as a cover image.
- Changed: Cleaned up how specials are parsed to allow supporting periods in the Title name
- Changed: (Epub Reader) When reading in Double Column mode, Kavita will now prevent seeing the same text twice by added an empty page when needed
- Changed: Allow users to type both localized name and series name to find a match on Related Series
- Changed: Made Library type and Sort options dropdowns alphabetical (localized)
- Changed: Removed the analyze task as it shouldn't be needed anymore
- Changed: Renamed Comic -> Comic (Legacy) and Comic (Comic Vine) -> Comic. The new comic library should be the primary.
- Changed: Moved the reset button for API Key to the right side, which renders much nicer.
- Changed: Aligned and corrected some styling for the Edit/Close button on setting items to be consistent
- Changed: Setting items that are not editable won't show the pointer cursor
- Changed: Setting switch items have the label appropriately wired and thus when you click the label, the switch will update.
- Changed: Details tab will show genre/tags expanded by default
- Changed: (Kavita+) Updated how JWT looks at expiration time for AniList Token.
- Changed: Moved Skipped scheduling ScanFolder log message to Trace as it's noisy
- Changed: Tweaked how localization cache busting is handled to try and get Transloco to respect cache busting
- Changed: For Admins (or users with access to all libraries), under Manage Users, sharing now shows 'All Libraries'
- Changed: Changed how epubs are parsed. Now, Kavita will try to open it expecting a valid epub structure (which isn't common without user intervention) then allow falling back to a non-correct epub (with degraded experience within Kavita). Kavita will record issue in the Media Issues tab.
- Changed: Ensure all switch elements link up with a label element for accessibility.
- Changed: (Kavita+) Switched Last modified to Created for when the scrobble reading event took place.
- Changed: Reading lists' age rating will now update when a series age rating is updated via the UI
- Changed: Moved Gmail/Outlook auto fill buttons from Host Name to Host setting
- Changed: Setting items will auto focus when switching into edit mode
Fixed
- Fixed: Fixed an issue with non-American date and number parsing
- Fixed: Fixed an initial blank page on settings due to a slow locale cache load
- Fixed: Fixes the environment variable for invariant globalization still being set in the Dockerfile
- Fixed: Fixed a bug where cbl import wouldn't allow importing due to the name clashing with another user, when it should have only checked your account
- Fixed: Fixed a lot of styling across the app and overall polish
- Fixed: Fixed a bug when updating email settings, it can error out after 2 changes
- Fixed: Fixed an issue where chapter ranges (1-3) could get an incorrect sort order
- Fixed: Fixed an issue with Mihon over-extracting image files (Thanks @arition)
- Fixed: Fixed a missing action handler for delete chapter from series detail page.
- Fixed: Fixed issues with selection on mobile devices in the epub reader causing pages to skip
- Fixed: Fixed TitleSort being used instead of SeriesSort for Series Sort field (Thanks @joshuaavalon for the help)
- Fixed: Moved loading icon up so it's visible even when having a lot of cards on library detail page
- Fixed: Improved the webtoon reader's abil...
v0.8.5.11 - Hotfix 2
I decided to do one more hotfix as there was an annoying bug for multi-root libraries that causes flip-flopping (the same issue as covers disappearing). This also contains some fixes around scrobbling and misc other bugs reported that are a good fit.
v0.8.6 is still planned to focus on the Scanner and finishing off the Kavita+ Polish.
Changed
- Changed: Locale selection now shows the total percentage of completion of the locale.
- Changed: Cleaned up some code around localization as a way to hopefully fight the keys showing in the UI on new versions.
- Changed: (Kavita+) When a user removes the Kavita+ license from their instance, stop doing all K+ Background tasks instead of waiting for the next restart.
- Changed: (Kavita+) Kavita will now clean up old scrobble events for users that don't have an anilist token on their account, so that events that will never get processed get cleaned up.
- Changed: (Kavita+) When sourcing descriptions from Kavita+, remove the (Source: X).
Fixed
- Fixed: Fixed a bug where a signature on an API was wrong
- Fixed: (Kavita+) Fixed a length issue for reviews from Kavita+ that could break metadata matching
- Fixed: (Kavita+) Fixed some edge case handling of want to read scrobbling and potentially some issues around events that never get processed.
- Fixed: Fixed unable to start Kavita for the first time on DD/MM/YYYY locales (Thanks @Fesaa )
- Fixed: Fixed a bug where multi-root libraries would delete and recreate series in one of non-first folders
- Fixed: Fixed reading list not respecting age restrictions (Thanks @Fesaa )
API
- Updated the ReadHistoryEvent to expose ReadDateUtc instead of just the server timezone date. (Thanks @0xGingi)
Known Issues
- Docker images aren't showing Locale names correctly (this will be fixed v0.8.6)
v0.8.5.3 - Hotfix
A small hotfix is needed due to the Don't fall behind modal showing incorrectly.
The known issue of covers disappearing seems to be related to multi-root libraries and thus is likely to require a full release cycle to tackle.
Fixed
- Fixed: Fixed a bug where the Don't fall behind modal was opening constantly
- Fixed: Fixed a wiki link being wrong
v0.8.5 - Metadata Downloading & PDF Metadata!
It's been some time since the last release and this one is hefty! The goal of this release is to overhaul Kavita+ experience within Kavita, but I sneaked in metadata downloading, something I originally envisioned for Kavita, as well. This release is packed with a lot of goodies, from the ability to download metadata, greatly improving the PDF experience, to decreasing the scrobble window from 4 hours to 1 hour, and much more.
Metadata Downloading (Kavita+)
When I first started Kavita, I talked about wanting to build a plugin system to support metadata downloading, so I could have a true Plex experience. As the application and user base grew, the Plugin system was too much scope for me to handle and I said goodbye to the idea. Luckily, Kavita+ is here to provide that opportunity to build it out and all of last year, I have been slowly laying the foundation to make it a reality.
Kavita can now automatically download metadata and apply it to your Series. It currently supports 12 different fields, including Cover Image, People, Genres, Tags, Age Ratings, and Relationships to name a few. I wanted to build a system that was functional but simple. Kavita offers a few controls that should allow enough flexibility to work for most users. I want to also thank the community for the overwhelming testing and feedback. The nightly testers and community really brought a lot of great ideas to polish this feature off.
With that said, I want to set expectations. I'm not looking to build a komf replacement. This will currently just use metadata from AniList/MAL and Hardcover once I get around to it.
So how does it work?
PDF Metadata
The pains of PDF may finally be over! Kavita now can read PDF metadata when tagged with Calibre (there is no real metadata format). Thanks to @microtherion writing a custom PDF parser, Kavita can now extract Series, title, volume, genres, etc from your files and bring a good experience for people forced to use PDFs.
New Stats API
This release also sees the release of an overhauled stat system. The Stats API is mainly for understanding how many servers are running Kavita, but there is also a lot of benefit in collecting anonymous data about the users of Kavita. On multiple occasions, I base decisions for features or bugs based on that data. However, the original stats API was quite out of date with what was important, so I overhauled it drastically. Like always, the code is Open source and nothing is logged that can identify you. You can take a look at the stat record here. Thank you to all that continue to report statistics.
Misc
I wanted to shout out a few extra features that are included in this release. First off, Automatic Webtoon mode switching. This is a very common issue for users that read by comics and webtoons and also a discovery issue for new users. While I had architected out a grand solution for this, due to time constraints it never came. This is a good hold over until that time comes. When Kavita opens a comic that is likely a webtoon, it will switch into the mode for you automatically. It's not 100%, but a best guess.
Another new feature is bringing Bionic Reading mode to Kavita's epub reader via a new font. A few users asked for this and thankfully a font made it possible.
Docker Fix
In the last release, docker users reported the scanner breaking. You can fix this with the following. The wiki reflects this as well.
Add
DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true
to your docker compose
This Year
With that said, let's talk about what I want to deliver this year. I have to preface this by saying that this year my time is extremely constrained. But as always, I have lots of ideas that I want to try and accomplish. Since my time is limited, I've scaled down my goals to 2 main features:
-
Journal-style Progress will allow for a much richer stats experience and allow for some new functionalities in reading history. I've already validated this architecture in another project so it shouldn't be too complex porting back to Kavita.
-
Kobo Sync was on my list last year but due to the new scanner, got pushed away. With the news of Kindle, it seems like a great time to prioritize it to the front of the list.
These two features are a blend of user wants and my own wants to enable much richer statistics in the application. I'm sure I'll get side tracked along the way and deliver something cool. As always, a big thank you to our users and community. Kavita would not be where it is without your comments, feedback, and ideas. I'm really grateful that I have a great community, looking forward to working with you this year.
Note: AniList API is currently degraded and stuck at 30 requests / min. I've tried to build out the cache to avoid having to hit them for the release. Please be patient, I will be continuing my work on Kavita+ to work around these API limits.
With metadata being available for PDF, you may loose progress. When v0.8.5 starts, it will export all progress to config/progress_export-v0.8.5.csv
Added
- Added: Added Fast Font to Book Reader. Fast Font is an open source Bionic Font alternative (FR #1268)
- Added: Added the ability to read embedded metadata from PDFs that conform to Calibre's embedding. (FR #3103)
- Added: Added a new stat for if the server uses metadata matching
- Added: (Manga Reader) When most of the file dimensions look like webtoon images, switch into the Webtoon reader on behalf of the user.
- Added: Series related tab will now show if there are bookmarks
- Added: Added the ability to see release notes of nightly releases in the changelog/announcements screens.
- Added: The UI will now check for new versions of Kavita (server-level) and prompt the user with the changelog and force them to refresh to get the latest UI code. This also takes care of any transloco hacks to clear the cache. This should help on update day for non-admin users to get the latest UI code files.
- Added: Added a new long term cache directory (cache-long). Currently storing Github release history information.
- Added: (Kavita+) Complete overhaul to the Kavita+ license page. Not only will you have the main license flow, but Kavita will pull down information about your subscription, including the registered email, total sub length, when the expiration will be, and if you're on a valid Kavita install version. Surfaced some of the actionable buttons with descriptions to hopefully help drive more management through the software instead of emailing me.
- Added: Added long term caching for Publisher/Favicon fallback so CoversDb doesn't have to service more requests than needed.
- Added: (Kavita+) There is now a manual match flow in Kavita to match a series (or fix a match) to AniList (currently the only upstream provider till Hardcover). Kavita still tries to match automatically, but via this new action from Series detail page, you can either provide another search name or Anilist/Mal urls directly to direct match. Likewise, you can select 'Do Not Match' which will delete any previously matched data, drop all scrobble events, and prevent matching/scrobbling in the future.
- Added: (Kavita+) Removed the previous error/matched bar from license screen and broke into it's own page called Matched Metadata. You can now filter by matched state (either not yet matched, needs manual match, don't match) and perform said flows from this screen. This should result in a much easier time navigating your metadata.
- Added: (Kavita+) New screen to see your users and if their AniList tokens are set or expired.
- Added: (Kavita+) Kavita will now email you (assuming email is setup and using a real email) whenever your scrobble tokens are about to expire (5 days out) and the day of, urging you to renew them to avoid scrobbling issues.
- Added: Kavita now has an email history table for admins to see which emails were sent out
- Added: (Kavita+) Kavita now implements the feature request to sync your 'planned' read lists from AniList/MAL into Kavita's Want to Read (FR #3153)
- Added: New button to download a person's image from CoverDB. I am still working out how to approach an automated solution. CoverDB is open for new entries.
- Added: (Kavita+) Added the ability for individual users to turn on/off scrobbling to anilist and the want to read sync.
- Added: (Kavita+) Kavita can now download metadata upon add and via the Match action. Metadata includes series cover image, summary, age rating, publication status, relationships (assuming already owned), release year, people (writer, artist, character) - including cover images, genres, and tags. Provides a flexible system to customize to your needs or disable altogether.
- Added: (Kavita+) New Library setting to opt a whole library out of being matched.
- Added: (Kavita+) Ability to override locked fields when performing a match to update metadata
- Added: Users can now press enter to close (and save) the setting items that are text inputs
Changed
- Changed: Changed the maximum line length of text inside of expandable blocks of text to a readable value (Thanks @heyhippari)
- Changed: Allow admins to change non-admin's email accounts on file. Will automatically assume it's valid.
- Changed: Docker builds will now have extra metadata (Thanks @halkeye)
- Changed: Cleaned up the person image components to be a better experience in different states (Thanks @heyhippari )
- Changed: Known for on person page shouldn't...
v0.8.4.2 - Hotfix + Migration Script
A few small things slipped past.
I want to take this space to first apologize to our users that manually tag their metadata in Kavita. Post release has been an eye opener to the different ways uses of Kavita and a lesson learned to work harder to preserve data between releases. I always try, but sometimes big lift and shifts like this are needed and aren't easy to preserve data. I will take it on myself to strive for excellence and do what is feasible to preserve data. I don't foresee many major refactors like this happening in the near future.
On more positive news, MetronInfo.xml has become stabilized. This is a step towards advancing the metadata format for Comics and Manga (and potentially books in the future). I have worked closely with Brian (the creator) to include Manga into the format. Kavita is dedicated towards supporting the format, that work is planned for next year. Read up more about it here.
If you have a lot of metadata that was tagged just via the UI, you can try this script a user wrote to migrate the data. Grab a backup from v0.8.3 and run this against it. You need to update oldDb
and newDb
. I cannot offer support for this script.
I did convert this to python via ChatGPT and added instructions, it will be much easier but I did not test it. You can find the script here.
Fixed
- Fixed: Send to on mobile was still broken
- Fixed: Changed On Deck to use a workaround as a temp fix
- Fixed: Fixed a bug where on non-English locales parsing numbers would throw an exception and cause files to not be ingested.
- Fixed: Bulk library delete wasn't hooked up
- Fixed: Fixed a bug where updating chapter metadata with a new person, the normalized name was saved
- Fixed: Potentially fixed a bug where adding multiple people on a series via UI will throw an exception (Was not able to reproduce, but added extra safety logic)
v0.8.4 - New Scanner + Browse Authors/Artists + Tons of Bugfixes
After rewriting 50K lines of code last release, I decided it was best to take a break and focus on the bugs that resulted and a few that had piled up. This release is bug focused, but of course I stuck a few big features in with it.
Scanner
One issue that has been cropping up as we attract more users with larger libraries or libraries laid out in the Publisher/Series style is the scanner. Users with large libraries modify their library quite a bit and the old scanner had issues with change detection. v0.8.3 had quite a nasty bug which required forced library scans to ingest new data. There was also the notorious FK issue that was more common for larger libraries.
To fix these issues, I rewrote the scanner from the ground up to be more reliable. This was a (painful) 3 week effort working closely with a dedicated set of testers on a canary release to be nightly and stable ready. The new scanner will be slower than the old one. As of now, I feel that once the main slow first scan is done, it's actually performing much better. With this new scanner, there were some other major changes.
People Re-architecture
In order to reduce the FK issue in the scanner, I also needed to tackle the 80+ hour re-architecture of how people work within Kavita. When I started, with my limited knowledge of the scene or what Kavita would grow to become, I implemented people as tags, much like how ComicInfo does. This is constrained when you want to make people more entity-focused, like having a dedicated page for them.
With this release, you can now view individual details of a person, set a cover and description about the person and see their works and individual issues they worked on. You can also browse authors and artists, like other software has. This is just the start, please leave feedback for me via Feature Requests, so I can build this feature out more and make it a richer experience. Note: Any Smart Filters that relied on people will need manual intervention to correct. A force scan will be required to regenerate writer information.
Special Keyword Removal
The last thing with the scanner was removing Kavita's ability to detect and classify certain keywords as Special. Like Omake
or Annual
would classify a file as a special. While this is extremely handy in the Manga scene, there were numerous reports over the years that required manual workarounds by users. In order to behave more reliably, I opened a discussion this year for removal and made the final call. Specials going forward will need the SP marker on the filename (or tagged internally).
CoversDB
Kavita has had the ability to download and display favicon and publisher images with a fallback repository being hosted on the main Kavita website. In this release, I've moved all that functionality and those images over to a new CoversDB repo. This repo will be the home for anything related to pulling images for Kavita instances. I plan to enhance this further as new features come to Kavita.
Small QoL Features
Last Read Filter is a new feature that allows you to pass a number that will be subtracted from TODAY, upping the dynamic function and allowing users to build Smart Filters like "Haven't read in a month".
Colorscape Polish The colorscape system has been polished even further. I spent a good amount of time adding some randomness, fixed a bug with colorscape resetting between navigation, and tried to tweak where colors go to avoid harsh contrasts. It's not perfect, but it's a step in the right direction. If you're passionate about the colorscape system, I welcome collaboration.
Bulk Library Actions This is something @DieselTech has been pushing me to add and the time is finally here. For users that have a lot of libraries (like Diesel and his 200+), sometimes it's quite a pain to update the settings of them all or perform some actions. Now in Kavita there are some limited bulk options, like refreshing covers or copying settings from one library to another (Scan currently disabled).
Recap
This release has been a ton of work on my part, but I felt it was important to squash the bugs first and ensure Kavita remains stable while I continue to add more features and bring a richer experience to users. My next release is still aimed at finishing the UX Overhaul with attention on Kavita+. With the holidays coming up, it is expected that this will take longer than most releases.
For those that have seen, we have hit over 65K active installs. It's absolutely amazing that a small project I started due to Ubooquity not having metadata has turned into such a massive project with a huge userbase. I want to give my thanks again to those in the community that have raised bugs, feature requests, give support in the discord/reddit, those who give me donations via OC/Kavita+, the translators, and of course my wife that helps support me pouring so much time into the project. I'm excited to continue building Kavita and bring about more of our visions into the software and see what is possible.
People metadata will be removed on update. A force scan is required to repopulate in the new system. A force scan/first scan will be much slower than before.
Added
- Added: Manage Libraries now has bulk actions. You can trigger multiple scans (not file scans, but refresh covers or colorscapes, etc) or copy settings from one library to multiple. Shift+select works as well.
- Added: Added a new page for all People within Kavita. From this page, you can see their works across Kavita.
- Added: Ability to see individual chapters/issues (limited to 20) a person has.
- Added: Ability to add images to the person via UI/API. A more automated method is planned in the future.
- Added: Added the ability to browse all Writers and Artists (cover artist) in one page. This should help book users that like to browse by author. (Feature Request: #2556 - 23 votes) (Thanks @MrRobotjs for some css on the Person detail page)
- Added: Added the ability to trigger the general cleanup (which normally runs at midnight) manually in case you need to clear unlinked people, covers, etc.
- Added: Reading List and Collection cards now show a badge showing the number of series/items underneath.
- Added: New Filter option called Last Read which allows a number to be passed in and will dynamically calculate a date from TODAY() matched against reading time. This allows for users to build even more dynamic smart filters to find things not read in a month or read within the past 7 days.
- Added: Added back a lot of the metadata that had to be removed from the top of the series detail page in the UX overhaul, like Language, Release Year, Format, and Reading Time
- Added: Added Details tab to volume details page
- Added: (Kavita+) New Sync Details button on smart collections that shows an easier to digest view of Series and missing series.
- Added: Bulk send to is now available for chapters/volumes
- Added: Added bulk deletion for chapters/volumes
Changed
- Changed: Optimized a number of methods within the Scanner to reduce memory and CPU time
- Changed: Moved a lot of the chapter scanner logging to Trace.
- Changed: Scanner can now choose to parallel parse files when there are over 100 in a directory
- Changed: Changed how detection and scanning of dirty directories works. The scanner will now parse bottom-up to reduce any potential misses and avoid different layouts working differently. This has extra I/O checks but much greater reliability and should reduce the amount of work needed to ingest changes after the first scan.
- Changed: LocalizedSeries merging with Series is now done at a higher level and performs much better (in terms of reliability)
- Changed: People are now entity based which allows for a richer experience in Kavita.
- Changed: Clicking on any person in Kavita will now open their dedicated page which showcases their different works.
- Changed: (Performance) Some large refactors to the scanner to help with the FK bug. The scanner should be slower but consume much less memory, especially for well tagged systems.
- Changed: Kavita no longer parses keywords from filenames and groups as a Special. The way to mark a special going forward will be explicitly with SP01, SP02, etc. Specials can be flat in the series folder or ideally in Specials/ folder.
- Changed: Changed logging level on some of the loggers that could become noisy
- Changed: Refactored some of the post-series work to a separate thread.
- Changed: Ensure mobile actionable modal is fullscreen and centered vertically
- Changed: Update to Angular 18 and other backend dependencies
- Changed: When a setting is invalid, clicking outside the setting item will not close and edit is disabled.
- Changed: Changed the smart filters page to open in the same window (but still available to open in new tab)
- Changed: (Performance) Made the pipe that turns the language codes into full names use a dedicated API which is faster
- Changed: Improved the wording for Single Volume chapters on Series detail page (and person detail page)
- Changed: Kavita now uses a different repo for publisher images and favicons (https://github.com/Kareadita/CoversDB). Any changes should be made here.
- Changed: You can now edit the person name in the UI. If not corrected in the metadata, a duplicate person will be created. This will be tweaked in the future once Alias support is added.
- Changed: Significantly improved the feel of the colorscape experience. When transitioning between colorscapes, locations of accent points wi...
v0.8.3.2 - A Small Hotfix
The UX refresh release has been great, a lot of great feedback has come in, along with a few bugs that got missed during testing. I knew there would be some, especially when the new UX was 50K lines of code difference. I picked up as many as I could that didn't require large periods of time for testing. Unless there is anything major that comes, this should be the last hotfix and I will start work on v0.8.4.
Changed
- Changed: Instead of showing 'Special' on chapter cards that aren't real, show a dash instead
- Changed: Changed how the warning about Email settings and the Test flow worked to be less intrusive
- Changed: (Performance) Small memory improvement when returning reading list items over OPDS
- Changed: Changed 'Edit Series Information' tooltip to 'Edit Information' as it's now generic for other entities
- Changed: Adjusted the logic for displaying chapter information when the chapter belongs to a single volume.
Fixed
- Fixed: Fixed a bug where all chapter cards would always say chapter, instead of issue
- Fixed: Fixed some edge case styling issues on cards
- Fixed: Fixed the wording for the edit tooltip to be more generic since used on other pages, not just series
- Fixed: Fixed Cover Artists still showing instead of Artist in Search
- Fixed: Fixed a bug where task settings weren't saving
- Fixed: Fixed a bug where when highlighting text in a setting item, the setting would close. Now it will only close if you click outside the item and there is no selection.
- Fixed: Fixed an issue where validators would reject payload when password was over 32 characters
- Fixed: Genres/Tags margins on details tab wasn't aligned well with People information
- Fixed: Fixed an issue where Cover Image Size wasn't displaying on the UI
- Fixed: Fixed a bug when changing the bookmark directory would throw an error and not function
- Fixed: Fixed a few issues around smart filter loading for base url reverse proxy setups (aka domain.com/kavita) (Thanks @Fesaa for the issue and helping validate the fixes)
v0.8.3 - The UX Refresh
It's finally here, the UX Refresh. Robbie and I have been dreaming and planning this for over a year now and we've grinded for 2 months (with my trip to Norway/Finland between) to bring it to you. The feedback from the nightly testers has been fantastic! Everyone is in love. We have poured over the UX, both on mobile and on desktop, to bring what we think is a consistent and killer experience. We took a lot of inspiration from Plex and if anyone knows, I'm trying to make Kavita the Plex for reading. So let's get into the nitty gritty of what makes this release.
Colorscape
When I browse Plex, I'm always blown away by the accent colors on movie detail pages. Contrast that to Kavita, I felt it was sorely lacking. So I brought it to Kavita and let me tell you, it was no easy feat. Hours wasted on css gradients before realizing the complex system Plex has. Kavita now will show a nice gradient in the background of any page that has a cover (except reading lists and collections, these will likely follow in the future). What's even cooler is the system is able to be turned on/off with a custom theme or even customized by theme creators. This is the feature I'm most proud of with this release.
Individual Pages
This is a big thing for Book and Comic users, the ability to view individual volume/chapter metadata. This not only brings dedicated pages (and the ability to update metadata for individual chapters/books), but also the ability to read a series/chapter/volume from any card. No longer do you need to open the series detail page.
Settings Overhaul
Again taking inspiration from Plex, we updated the settings pages to bring tooltip information front and center and make changes to any field instant (no more pressing save). All settings, from admin to user preferences, are now on one screen. Some flows have been moved to dedicated pages, like CBL Import or MAL Interest Stack import. This should help with bringing visibility to some of the features Kavita has.
Publisher Images
Lastly, we added a new system similar to favicons for publisher images. This new system allows for users to submit or edit publisher images on our kavita repo and these images will be downloaded dynamically and displayed on the detail pages. Some images may not look good. I am counting on the community to add new or edit images to bring the best UX to all users.
All in all, I'm really proud of this release. Next up is an overhaul to the UX surrounding Kavita+ including reworking some of the systems and laying more foundation for future feature releases. I am also working on building out the test cases for the Scanner to allow me to continue working on the elusive Foreign Key constraint issue still plaguing us and working on bringing more optimizations into the Scan Loop to make Kavita faster.
Lastly, I want to make a big thank you to those that contribute on Weblate. This release was massive and many localization strings were changed. The localizers were on top of it and as of this release, we are shipping Kavita in 10 languages with full support.
Refresh your browser after updating
Added
- Added: Added ability to upload a volume cover for Komf users
- Added: Added a lot of ability to theme the login screen, including the background image.
- Added: Added ColorScapes. ColorScapes is a new dynamic tinting system for Kavita. During cover generation, Kavita will pick primary colors from the image and apply them to the background on pages where the image is a primary element (series detail for now). These are configurable via the theming system. (Light themes do not look good with this system, it should be disabled)
- Added: Added a new actionable for Library to generate colorscapes (which is a soft refresh covers)
- Added: Library Settings and Edit Series Modal now has a tasks tab that shows appropriate tasks that can be done on the library/series along with information about what the task does.
- Added: Added a Volume/Chapter detail page. From any card you can click and open the detail page.
- Added: Added the ability to directly read a card/volume/series/readinglist from the card or open their details page.
- Added: Added the ability to edit chapter metadata directly within Kavita, lock the fields, This includes Sort order which will allow comic users with unique issue numbers to be ordered on the series detail in any order and the readers will respect it.
- Added: Added a new API and UI to allow setting just a volume cover (and locking it). Komf has already updated with support. (Thanks @Snd-R)
- Added: Added the ability to have publisher images (that are managed on Kavita's site, like favicons). There is no extra styling, this is pretty rough but I want to see from users if there is any interest.
- Added: Added a new metadata filter called 'is empty'. This will check against fields like Writers, Tags, Genres, etc to explicitly see if there are no links. (Feature Request)
- Added: .yacreaderlibrary directories will be ignored by the scanner
- Added: Made it so when a new version of Kavita is released, the UI will automatically refresh and bust locale cache since non-admins can't actually run the bust cache task.
- Added: Admins can now trigger Sync Theme job from Tasks page
- Added: Added a link to the CBL Repo from CBL Import for those that are unaware of the project
Changed
- Changed: Passwords can now be up to 256 characters long
- Changed: Changed some headers, spacing, and positioning to make things more uniform across the app.
- Changed: Revamped how settings/preferences work in the app. Following Plex' style, they are all on one page (RBS applies) with a dedicated left nav menu that groups based on functionality. (Sorry localizers, lots of string updates)
- Changed: When navigating away from library/collection/bookmark/etc-detail, instead of just restoring position when interacting with a jumpkey, Kavita will now restore position down to the location of jump point in all cases.
- Changed: Jump keys now show an animation instead of a tooltip to show number of series
- Changed: Filter icon now shows an animation when actively configuring it
- Changed: Moved some screens around to dedicated sections and most of Kavita+ screens are now on a new Scrobbling page
- Changed: Moved the customize modal into a dedicated settings item to make discovery of the feature easier.
- Changed: Lots of small consistency issues and QoL tweaks on different pages to bring a better UX and interaction. A lot of functionality has been moved to drive a consistent experience and discovery of features.
- Changed: Cast and Reviews are in their own tab
- Changed: Tabs on Series Detail now report card count
- Changed: All preferences (except those in account) now just save automatically after interaction
- Changed: Removed library setting 'Include in Recommendations' as Kavita no longer has those flows
- Changed: On mobile view ports, remove the dropdown button and scroll to top. Dropdown button links are now visible in a modal to make clicking much easier.
- Changed: Added a customize button on the Side nav when you move into 'More', so you know you can tweak it if you haven't visited settings yet.
- Changed: Series cards will now show the localized name on hover if present
- Changed: Chapter cards will now show the title on hover if present.
- Changed: Cover Artists is now Artists in the application.
- Changed: After selecting a tab, a refresh of the browser will resume you back on the same tab on series/volume/chapter detail pages.
- Changed: Folder watching is now moved to a separate background thread so it doesn't block startup for users with massive libraries
- Changed: After we update a metadata filter, rescroll to the top as results change
- Changed: Cleaned up some registration error output to look nicer
- Changed: Reorganized edit user modal to better handle users with large amounts of libraries.
- Changed: When mass creating libraries, ensure we enqueue the scans. Also don't restart folder watching if folder watching isn't on.
- Changed: Tweaked some backend code around when we restart library watching and make sure it's always done in a background thread.
- Changed: Sync Themes job now runs daily instead of weekly
- Changed: Lots of small improvements to the UX of theme manager
- Changed: Actionable menu (...) on mobile will now load a modal, rather than the normal desktop view. From testing, the menu was easy to misclick on mobile.
Fixed
- Fixed: Fixed an issue where long passwords would truncate on autofill.
- Fixed: Fixed a side-nav css var that was inappropriately assigned.
- Fixed: Fixed a bug in theme manager where the active pill wouldn't have the correct color for non-dark themes
- Fixed: Fixed a bug where reading list cards wouldn't promote/unpromote from actionables
- Fixed: Fixed a bug where OPDS reading list feeds were missing pagination
- Fixed: Fixed an edge case where busting Kavita+ cache in edit series then hitting close wasn't refreshing screen.
- Fixed: A ton of localization changes across the board (Thank you to the Translators for promptly updating language support to 100%)
- Fixed a bug where busting locale cache wouldn't refresh the new translations
- Fixed: Fixed some logic around disabling scrobbling on the UI side for library type selections
- Fixed: Fixed a bug where pinned smart filters on the side nav would all show an active highlight (Thanks @Fesaa for t...
v0.8.2 - Theme Overhaul, Smart Collections, & a lot of Scanner work
A new stable release is here and it is yet again another big one. Initially I set out to focus on 3 items: Scanner, Smart Collections, and CBL v2 (new schema), but here I am delivering 3 massive improvements and a ton of smaller changes. This release includes a bit of everything spread about. Let's get into it.
Built-in Theme Explorer
One thing I wanted since day one of adding theme support into Kavita was the ability for users you just browse a list of themes and download what they want to use. It's not easy when the admin has to add the theme for you and hit scan, dealing with the underlying filesystem. I finally got around to setting up the initial version of this (open to feedback to expand on this system) with v0.8.2. All users will have the ability to browse themes uploaded to the theme repo, preview the images and description, and download and apply theme. This currently does not have any role permission and I didn't hear much from nightly users thinking it's needed. If you feel otherwise, raise a discussion. If you don't want to use a theme on the repo, you can upload your own file via the interface. Existing theme users should delete their themes and re-acquire them. This will allow them to be updated for you automatically (assuming the supported version matches yours).
Smart Collections for Kavita+
This is another one I've wanted for a while and is part of the theme of introducing more synchronization systems into Kavita. Smart Collections allow for you to import any Interest Stacks/Restacks from your MAL account into Kavita. Every 2 days, Kavita will resync with upstream and add any Series that you own to the collection. The collection is otherwise read-only and promotable, so if you want to setup a few best of X and promote them for your server, you can. These features are also not admin-specific. Any user can import their interest stacks into the server (and if they have the promotion role, can promote them). I hope you all enjoy this feature as much as I am. Another level of bringing a top notch experience for my users.
Scanner Changes
I've been working a lot with our users that have larger libraries, ranging from 100k files to 10k series. One of the major problems is that when you have a library of 10k, it's going to take a long time as expected. These users are mainly new users coming from the comic rework and have folder structures Kavita wasn't originally built around. I spent a good chunk of time building optimizations to reduce the amount of processing work Kavita does for these folder layouts (not restrictive to comic libraries) and fixing some bugs around parsing and whatnot that surfaced thanks to the numerous bug reports. If you aren't finding good results after this update, please do reach out.
Misc Changes
A few other big changes come with this release. The first is WAL is now on by default. You can always turn this off manually in the DB, but fresh installs (and existing) will turn WAL on. WAL fixes the common database is locked
issue due to Kavita writing too much data too fast. Another big one is double scrollbar on mobile. This was an annoying bug on some mobile browsers on some pages. Robbie took this up and fixed it everywhere to my knowledge. A great QoL enhancement. OPDS has gotten a lot of love in this release thanks to some great reports by @MnsieurJF around reading lists and missing metadata in the feeds. Lastly, the Manga Reader has had some tweaking to how fit to height/width works. It's not easy to put into words, but I find the fitting to be MUCH better.
I have loose plans for what the next release is going to be. The PDF rework will need to come after v0.8.3 to allow people who upgrade into the v0.8.x series not to loose data from the massive changes. I have a lot of holiday coming up as well, so the release may be longer or shorter depending.
Lastly, I want to mention (as I keep forgetting) that @DieselTech has joined the Kavita team a few months ago. His name should be well known as he's very active in most of the reading and comic discords as well as being a core member in the CBL Reading Order group. He's already driven a lot of great changes in Kavita for hardcore comic users and I have no doubt he will continue to be a great resource for me to rely on in the future.
Added
- Added: Kavita+ users can now import their MAL interest stacks/restacks into Kavita as Smart Collections. These collections will synchronize back with MAL to update with new series and summary information every 2 days. Smart Collections work just as normal collections except are non-editable as the MAL stack controls the data. They can be promoted given the user has promotion role. They are not admin-specific.
- Added: Added the ability for any user to download themes from the Theme Repo directly via Kavita. Kavita will keep these themes up to data automatically (unless the reported version from the Repo is greater than the server version).
- Added: Book series can now have specials. In order to be classified as a Special, the SP marker must be in the filename, the calibre:series must be set to the Series name and
calibre:series_index
must be 0. (Feature Request: 3 upvotes) - Added: OPDS-PS on PDF files is now possible. Kavita will convert to images.
- Added: Added a create link to create a new smart filter in case it's not clear for first time users exploring the software.
- Added: Added first install version and date to the DB so admin's can look back at it. This data is available in System tab.
- Added: Added new Random sort option to allow a stream like 'Top Unread in X' (Thanks @Fesaa)
- Added: Added the following css variables --event-widget-activity-bg-color, --event-widget-update-bg-color, --event-widget-error-bg-color
- Added: Implemented the ability to click download on any file extension from stats page (formats table) and download a report of all files that are of that extension.
- Added: Added the ability to manually override the width in the manga/webtoon reader when using Width scaling (Thanks @Marsimplodation) (Feature Request: 19 upvotes)
- Added: Added bulk promote/demote/delete for reading lists to align with collections.
Changed
- Changed: On forgot password, even if email isn't setup or user doesn't have email setup, still allow the reset link to log.
- Changed: Reduced memory for adding a set of series to a collection.
- Changed: Scan button no longer exists on themes tab. Now, admin's can upload their custom css files via the UI.
- Changed: Admin's can no longer delete themes and force users with that theme active off.
- Changed: Changed how scaling works in the manga reader to be more inline with the expected behavior. Height will scale to viewport height even if it is beyond the image's original dimensions. Width will scale to viewport width even if it is beyond the image's original dimensions. Original will show the image at its intrinsic dimensions, no scaling is applied (Thanks @therobbiedavis)
- Changed: Enable WAL journal mode by default in all Kavita installs. Users can turn it off after the first run if needed.
- Changed: Show a warning on dirty email setting form to inform the user they need to save before testing settings.
- Changed: Ensure users know that Scrobbling providers will always keep the highest number from kavita.
- Changed: On < tablet viewports, reading list page should use order numbers rather than drag and drop, as there isn't enough real estate.
- Changed: Series Detail page will now show people/genre/tags as collapsed even on desktop, but summary will have same code to be expanded up to 1000 characters on desktop.
- Changed: (Scanner) Refactored Scan Loop to avoid doing extra work on lower folders in a folder map path, so that users that group by publisher or another arbitrary folder, can avoid a lot of scanning on lower level folders just because the highest level changed.
- Changed: (Performance) Applied some performance optimizations on Series OPDS route which should help speed up heavier Series.
- Changed: (Performance) Small optimization to image reader to make finding the next/prev page faster.
- Changed: Search will no longer search against Chapter titles and Files by default. Instead, there is a new link in the search window to perform with those included. This should help users with larger libraries find their files faster.
- Changed: (Kavita+) Kavita+ scrobbling will now take AniList/Mal ids from External metadata (which is prefetched from Kavita+ for the external metadata) whenever possible. This can help with matching when there are no weblinks.
- Changed: Updates dependencies which includes a fix for nav items in epub toc that are more loose.
- Changed: Added a few full-wdith characters for normalization: *!+
- Changed: All smart filters page now uses the same design as the flow from Customize modal.
- Changed: Disable the first remove button for weblinks/exclude pattern component as it isn't removable
- Changed: Updated ScanFolder to be more aggressive in finding the underlying series by also checking against a partial match on lowest folder path to find a series. This should result in less work for well structured libraries.
- Changed: (Performance) Cleaned up some extra db calls that aren't needed in the OPDS apis.
- Changed: Reading Lists in both OPDS/UI now have the underlying issue's summary.
- Changed: Smart Filter OPDS feeds are now smart-filters/{id} instead of smart-filter/{id}
- Changed: Updated the cover generation logic to handle webtoons better. The new code will now check if the image scales well or not and if not, use a more attention focused scaling/cropping method. (Thanks @arition for the initial PR)
- Changed: For OPDS Reading Lists, when there is only one underlyin...