diff --git a/README.md b/README.md index e5d9534..8eeb390 100644 --- a/README.md +++ b/README.md @@ -12,13 +12,26 @@ There is no configuration required, but if you wish to customize some of the fea - [Prerequisites](#prerequisites) - [Setup Instructions](#setup-instructions) - [Features Overview](#features-overview) + - [Data Caching](#data-caching) + - [Feature Requests Completed](#-feature-requests-completed) + - [Feature Requests Planned](#-feature-requests-planned) - [Core Features](#-core-features) - [Watchlist Page](#watchlist-page) - [Enhanced Home Screen](#enhanced-home-screen) - [Enhanced Search](#enhanced-search) - [UI Enhancements](#-ui-enhancements) - [Watchlist Support](#watchlist-support) - - [Navigation Improvements](#navigation-improvements) + - [Skin Manager](#skin-manager) + - [UX Improvements](#ux-improvements) + - [Subtitle Search](#subtitle-search) + - [Remove from Continue Watching](#remove-from-continue-watching) + - [Navigation Improvements](#navigation-improvements) + - [Header Tab Enhancements](#header-tab-enhancements) + - [Breadcrumb Navigation](#breadcrumb-navigation) + - [Custom Menu Integration](#custom-menu-integration) + - [Playlist Screen Improvement](#playlist-screen-improvement) + - [Flatten Single Season Shows](#flatten-single-season-shows) + - [Collections on Movie/Series Details page](#collections-on-movieseries-details-page) - [System Improvements](#-system-improvements) - [Performance & Stability](#performance--stability) - [Branding & Customization](#branding--customization) @@ -74,6 +87,25 @@ KefinTweaks provides a modular system of enhancements that can be individually e As mentioned above, most of the functionality included in KefinTweaks are features that have been requested by the community. Some of these requests have been pending for 5 years or more. I feel that a lot of the top requests have functionality that is essential to the Jellyfin experience but I have also included less requested features, as well as some things that I just personally needed or wanted. +## Data Caching + +One thing that I feel is worth pointing out is the way in which some of the data needed by KefinTweaks is handled. For most of the features, data is grabbed on demand as normal, same as any existing Jellyfin functionality. However there are specific features, or subsets of features which do use local device caching in order to either improve performance, or simply because it is not feasible to fetch the data each time. In the future if this ever becomes a plugin, the caching can be more intelligent and done on the server. + +The features in KefinTweaks which use local data caching are listed below, along with accompanying explanations for why they are being cached. Everything is cached by default for 24h unless it is specified otherwise. +- Home Screen + - **Genres** [24h]: + Genres are cached simply to reduce API calls to the server. This is not an expensive API call, but under most circumstances the results will be the same even across longer periods of time. + - **Top People** [24h]: + In order to populate the "Top People" in your movie library, we fetch the Person data for every movie in your library. We build a list of all the People who appear in at least X number of items based on their type (Actor/Director/Writer). This is an expensive operation, and is longer as the size of your library grows. +- Watchlist + - **Watchlist Items** [24h]: + This is mostly done to provide a more responsive UX, as typically the API call to retreive these items should not be very expensive. The Watchlist cache is also updated any time there is a change to an item's Play State or Watchlist status. Keep in mind that the cache can only be updated locally, so if you watch a movie from your watchlist on Device X, and then you browse your Watchlist on Device Y, the Watchlist will still show the watched item until the cache is manually refreshed or it expires. + - **Series Progress and Movie History** [24h]: + These are both more expensive operations, especially if you have watched a very high number of Movies or Shows. It's not practical to fetch this data on demand so we cache it to improve UX. +- Collections on Details Page + - **Collections** [24h]: + Sadly I know no way to retreive a list of Collections that an Item is a child of from the API directly. The Ancestors endpoint only returns the physical ancestors of an item. In order to be able to populate the "Included In" section, we fetch the children from every Collection in your library and add the Item ID of each child to the cache. + ### ✅ **Feature Requests Completed** - ✅ [Remove items from Continue Watching](https://features.jellyfin.org/posts/517/add-an-option-to-remove-an-item-from-continue-watching) @@ -216,28 +248,9 @@ Select from a list of pre-defined Skins created by other Jellyfin community memb Certain Skins either support or require a color scheme. This lets you change the UI colors within an individual Skin. These options are automatically available for the Skins which support them.
-
-
+
+