v0.7.9 - Customization
v0.7.9 is here and brings along with it major changes in the customization that Kavita provides it's users out of the box. This has been something I've been wanting to work on for over a year now, but as with all things, finding time and balancing new features and their order doesn't always go as planned.
This release brings 3 major customization features: Dashboard, Side Nav, and External Sources plus Series Preview for Kavita+ users. These features are for all users, not just admins. Let's dive in.
Dashboard
Have you ever wanted On Deck to work differently? Do you not need Newly Added series on your dashboard or perhaps want a filtered list of series easily available? This feature is for you. As of this release, you can first build a custom filter and save it as a Smart Filter. This is a live filter that can be modified at any time and will reflect everywhere it's binded. From the Home Side Nav item, click the actionable dots and then Customize. You can now turn the visibility on/off of Kavita provided Streams, add your own smart filters to your Dashboard and even reorder everything.
Side Nav
Not only do we have a customized dashboard, but the side nav got some love as well. If you're a large comic collector, you'll know that the best practice is to split your series into libraries by Publisher (to avoid collision on the same series name released in different years). This can be frustrating as that leaves you with over 200 different libraries and adds so much clutter on your screen.
This new feature changes that. First, only 10 items will ever render by default with a More button to show more items under the fold, taking inspiration from YouTube and Plex. Then, like with Dashboard customization, you can reorder, bind smart filters, or turn on/off the visibility of some libraries. Bulk selection tools are available to help those users with many libraries.
External Sources
External sources plays on the Side Nav customization by allowing you to setup a link on your side nav that upon being clicked will open your friend's server up already authenticated as you. This is just the start, after rolling this out to our nightly users discussion sparked and in the future I will be adding the ability to allow searching media in your friend's server directly from your own instance (Kavita+ only).
Series Preview (Kavita+)
For those that have Kavita+, they are likely very familiar with the Recommendations tab. When looking at recommendations, you will see your own Series that you own and external ones (if you are an admin). The problem is, it's a bit annoying clicking on each external series, switching tabs, reading about it, then coming back to Kavita. So I fixed that. Now, a drawer will open and bring that metadata to you, making it quick for you to read about the series right from within Kavita.
This release has been pretty large in terms of the features and refactoring that had to be done to bring these features to you all. Just the side nav rework took 6k lines of code to do :/ I'm extremely pleased with how my vision came to fruition and look forward to seeing the customizations you all create. The next release should be the last of the v0.7.x series of releases and is the last foundational piece that has to happen before I can do any work on the mobile app.
Important Announcements
- With Smart Filters released, I want to see what creations you can come up with. Join us in by taking a pic of your smart filter creations and sharing them with the community here. If you find something missing to let you express yourself, please raise a thread in our new feature-requests channel.
- This is the last call to voice your opinion on if Image-based series are removed as a feature from Kavita. Please add your voice here if you need this functionality, otherwise, upvote the original post if you don't need or agree with removal.
- The wiki for once is up to date with information around these new features. Check out how customizations work or how the reworked metadata filtering from last release works.
- Note: All docker images (kizaing) have been moved to jvmilazz0/kavita, jvmilazz0/kavitaemail. Please make sure you switch over to this repository going forward
Added
- Added: Added the ability to save metadata filters into a Smart Filter. This is a dynamic query that can be bound to your dashboard.
- Added: All users can now customize their own dashboard and re-order the streams Kavita provides out of the box, turn them on/off, and bind your Smart Filters to your dashboard.
- Added: You can now re-order, turn on/off libraries, system default side nav items and add your own smart filters and external sources (see below) to the side nav.
- Added: Added the ability to link to external sources (aka server's your friends may host). These can then be bound to your Sidenav and provide a one click to that server which will auto login.
- Added: New API (plugin/version) which can use the api key to get the current Kavita install version.
- Added: Added WantToRead filter so SmartFilters can be created that utilize want to read status in creative ways.
- Added: OPDS now has a dedicated section for SmartFilters
- Added: Added a new Sort By for Reading Progress
- Added: Added a new Filter Field (and Input type) to select Series based on Last Read time of the user. This new field uses a date picker so you can build filters like: Series that haven't been read since 1/1/2023 that have over 80% progress on ordered by most progress to least aka a 'Finish it Off list'
- Added: (Kavita+) Added an up-sell to 1 year per some users requests. New payment link set.
- Added: Kavita+ users can now preview local and external series with more metadata by clicking a recommendation card. This new drawer will allow users to get a quick glance of information. You can still open the new browser tab from the drawer or directly from the card. As data is cached in Kavita+ API, it may take some time for extended details to propagate.
- Added: Plugin Authenticate and Version APIs will now capture unauthorized rejections and log out to config/logs/security.log. APIs that perform this logging are documented.
- Added: (Kavita+) Users can now add a local recommendation to their Want to Read list directly from the Series Preview drawer
- Added: (Kavita+) When previewing a local series from Recommendations tab, if the local series is lacking metadata (at least summary and genres need to be present), then external metadata will be used.
- Added: When a user logs in, log their IP
Changed
- Changed: OPDS will now mimic applicable ordering and streams from your Dashboard. Note: More In Genre and Recently Updated are not supported. Likewise, OPDS All Libraries will now order in the order of your Side Nav.
- Changed: Selected options from filter's typeahead wont show as an option anymore.
- Changed: Some filter fields will now show the unit on the UI to help users understand how it functions
- Changed: Kavita now logs extra information and in different conditions when a login fails
- Changed: Ignore #recycle directories, which is a special folder on Synology
- Changed: Floats are allowed for reading progress inputs
- Changed: Added a note about folder watching waiting 10 mins to trigger in library settings
- Changed: When a book does not contain a volume number or have volume in the filename, consider it standalone and as such, mark it as Completed Publication Status.
- Changed: Side Nav now only shows Home + 10 other items. Other items are found behind the More fold.
- Changed: Allow API key/OPDS url component to toggle show/hide instead of the previous just showing.
- Changed: Updated underlying PDF library to latest
- Changed: Filter fields are now sorted alphabetically
- Changed: Giant Size format from ComicInfo will now be treated as a special
- Changed: (Kavita+) Review's will now be rejected from creating a scrobble event if they wont meet AniList's criteria. This will be changed in future if more scrobble providers are added.
Fixed
- Fixed: Fixed stats tab acting up from injection in Stable
- Fixed: Floating point tolerance for reading percentage when using Read Progress Filter
- Fixed: Fixed a bug where some OS don't support all locales by default. For those, catch any exceptions and default to the raw language code.
- Fixed: Summary wasn't being sent to the backend for filtering
- Fixed: Fixed a bug where non-admins could see Scan on the library actionables (but not actually invoke it)
- Fixed: Fixed a bug where tablet viewports couldn't open the metadata filter
- Fixed: Fixed up a lot of the css around the filters.
- Fixed: Fixed up a bug where filter would un-collapse even though we were using a drawer.
- Fixed: Fixed an issue where the manga reader could get delayed when rendering the next page due to slow network activity because it was waiting for the last prefetch page to load instead of moving to the prefetched page immediately.
- Fixed: Fixed external rating tooltip not showing the title of Google Books
- Fixed: Fixed a bad parser case where volume num could get parsed as chapter num.
- Fixed: Fixed up a lot of missing localization strings
- Fixed: Fixed a bug where Not Contains on Tags and People wasn't behaving correctly (Thanks @CianH for the PR)
- Fixed: Fixed a bug where images in the release notes on update notification modal would go outside the modal's width.
- Fixed: Fixed a bunch of locations where UTC dates had the wrong time
- Fixed: Fixed a bug where users with no libraries shared could actually obtain access to series from non-shared libraries
- Fixed: Fixed an issue where after you update your settings, the new preferences didn't send back with the refresh account api and thus locale switching didn't work correctly.
- Fixed: Fixed a bug where virtualized lists were not having the correct order for order numbers mode. (reading list detail page when over 100 items)
Removed
- Removed: Recommended tab on Library detail is now removed. Everything can be created as a Smart Filter.'
Known Issues
- Some users are facing issues where strings aren't rendering correctly due to the old locale from v0.7.8 being used. You can fix this by clearing Cookies on your Kavita site then refreshing your Browser.