Files
KefinTweaks/README.md
T
2025-11-04 07:10:34 -05:00

17 KiB

KefinTweaks for Jellyfin

KefinTweaks is a comprehensive collection of enhancements and customizations for Jellyfin, focused on, but not limited to, filling gaps in functionality based on the community's most desired Feature Requests.

While working on these scripts to meet my personal needs, I noticed that there was a lot of overlap between the functionality I desire and many of the requested features by the community so I thought it would be a good idea to share this for anyone who may be interested.

There is no configuration required, but if you wish to customize some of the features, there are options to do so.

Table of Contents

📦 Installation

Prerequisites

  • Jellyfin 10.10.7 or later
  • JS Injector plugin installed and configured
  • Custom Tabs plugin for watchlist functionality
  • JellyfinEnhanced plugin for Jellyseerr search functionality and ExclusiveElsewhere

Setup Instructions

  1. Install Prerequisites listed above
  2. Add a new script to your JS Injector Plugin
  3. Copy this entire contents of kefinTweaks.js into the new script

Optionally update the "scriptRoot" in the KefinTweaks script if you wish to customize and host these scripts yourself.

  1. Ensure the script is enabled
  2. Save your changes
injector

  1. Required for Watchlist:
    Add a new tab to your Custom Tabs plugin with the following content:
    <div class="sections watchlist"></div>
    
customtab


Features Overview

KefinTweaks provides a modular system of enhancements that can be individually enabled or disabled based on your needs. Each script is designed to work independently while sharing common utilities and dependencies.

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.

✅ Feature Requests Completed

🚧 Feature Requests Planned


Core Features

Watchlist Page

  • Watchlist:
    Tired of forgetting everything you wanted to watch? Add movies, series, seasons, and episodes to your Watchlist!
watchlist

  • Series Progress:
    An overview of every series you've ever started watching with functionality to filter, sort and mark items as watched.
progress

  • Movie History:
    An overview of every movie you've ever watched with functionality to filter, sort and mark items as favorites.
history

  • Statistics:
    A summary of your watched items by the numbers. See how many movies, shows or episodes you have watched.
statistics
  • Auto-Remove:
    Automatically removes watched items from your watchlist when playback completes.

  • Real-time Updates:
    Cached watchlist updates when toggling watchlist status from card overlays


Enhanced Home Screen

  • Custom Sections:
    Add playlist or collection-based sections to your home screen

  • New & Trending:
    Creates sections for movies and episodes released in the last 7 days (trending sections incomplete)

  • Infinite Discovery Sections:
    Load discovery sections based on items you've watched and favorited, as well as from genres or top people in your library

  • Seasonal Content:
    Seasonally-themed sections (Halloween, Christmas, etc.)

homescreen

  • Watchlist Integration:
    Dedicated watchlist section on home screen
homescreen

  • Performance Improvements:
    Defaults to searching in Movies/TV/People as most searches are for these items. Options to search specific categories or all categories like the default Jellyfin search functionality.

  • Jellyseerr Support:
    Zero-config support for Jellyseerr results if JellyfinEnhanced is installed

  • Meilisearch Support:
    Zero-config support for searching with the Meilisearch plugin

search


UI Enhancements

Watchlist Support

  • Watchlist Toggle:
    Watchlist toggle button added to all item card overlays
watchlistoverlay


Skin Manager

The Skin Manager adds the functionality for users to change the appearance of the Web UI from a button in the top header, or from their Display Preferences in their User Account.

Top Header Button User Display Preferences

  • Skins
    Select from a list of pre-defined Skins created by other Jellyfin community members. You may specify additional custom skins in the configuration options.

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


Navigation Improvements

  • Header Tab Enhancements:
    Improved tab navigation and functionality, supports linking to specific tabs

  • Breadcrumb Navigation:
    Clear navigation paths for Movies, Series, Seasons, Episodes, Music Artists, Albums and Songs

breadcrumbs

  • Custom Menu Integration:
    Add custom menu links to the side navigation drawer menu
custommenu

  • Subtitle Search:
    Search and download subtitles directly from the video OSD
subtitlesearch

  • Remove Continue Watching:
    Adds a card overlay button to remove items from Continue Watching for all resumable items
continuewatching

  • Playlist Screen Improvement:
    Updates the default playlist functionality to include a play button to start playback and make clicking an item go to the item detail page

  • Flatten Single Season Shows:
    This will display the list of episodes from the first season on the Series details page for Shows which only have 1 season.

flattenshows

  • Collections on Movie/Series Details page:
    This shows an "Included In" section on the Item Details page which displays any Collections that the item is a part of.
itemdetailscollections


System Improvements

Performance & Stability

  • Background Leak Fix:
    Resolves an issue that causes backgrounds to be added to the DOM endlesslly when a tab is not focused and Backdrop images are enabled

  • Infinite Scroll:
    Adds infinite scrolling to the Movies and TV library pages. Loads batches of 100 items at a time and supports filtering and sorting.

  • LocalStorage Caching:
    Local caching for data related to Watchlist, Series Progress, Movie History and Top People

  • Dashboard Button Fix:
    Fix to handle navigating back from the dashboard page to the homescreen instead of the "new tab" page of a browser

Branding & Customization

  • Exclusive Elsewhere:
    Custom branding for items which aren't available on any external streaming providers. Requires JellyfinEnhanced.

  • Ratings and Comments:
    Coming soon...requires the Updoot backend script


Script Details

Dependency Scripts

Script Description
utils.js Page view management and common utilities
cardBuilder.js Enhanced card building functionality
localStorageCache.js Caching layer with TTL management
indexedDBCache.js IndexedDB-based caching for large datasets
modal.js Generic modal system for dialogs
toaster.js Toast notification system
userConfig.js User-specific configuration for skins and settings

Feature Scripts

Script Description Dependencies
watchlist.js Complete watchlist management system cardBuilder, localStorageCache, modal, utils
homeScreen.js Custom home screen sections cardBuilder, localStorageCache, utils
search.js Enhanced search functionality cardBuilder, utils
headerTabs.js Header tab improvements None
customMenu.js Custom menu link handling utils
exclusiveElsewhere.js Custom branding for unavailable content None
updoot.js Upvote functionality integration None
backdropLeakFix.js Memory leak fixes None
dashboardButtonFix.js Dashboard button behavior fix None
infiniteScroll.js Infinite scroll functionality cardBuilder
removeContinue.js Remove continue watching functionality None
subtitleSearch.js Subtitle search in video OSD toaster
breadcrumbs.js Breadcrumb navigation utils
playlist.js Playlist view enhancements cardBuilder, utils
itemDetailsCollections.js Collections display on item details pages indexedDBCache, utils, cardBuilder
flattenSingleSeasonShows.js Flatten single-season shows to show episodes directly cardBuilder, utils
skinManager.js Skin selection and management utils, userConfig

Auto-Inject Dependencies

KefinTweaks automatically enables required dependencies when you enable a script that needs them. For example:

  • Enabling watchlist automatically enables cardBuilder, localStorageCache, modal, and utils

This ensures all scripts have their required dependencies without manual configuration.


License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

  • Jellyfin Team: For the amazing media server platform
  • n00bcodr: For JellyfinEnhanced, the JS Injector Plugin and moral support
  • IAmParadox27: For the Custom Tabs Plugin
  • BobHasNoSoul: For the jellyfin-updoot functionality
  • The Jellyfin Community: For sharing knowledge and providing a welcoming enviornment to ask questions and learn

Support

  • Issues:
    KefinTweaks is not maintained by the Jellyfin team, and as a result you are encouraged to seek support from me directly. Sadly, there is no place suitable for discussion of plugins built by community members or fan-made projects in the official Jellyfin Discord, so please visit the Jellyfin Community Discord to find me (username: HighImKevin) and other users who would be happy to help you out. Please also feel free to report bugs and request features from the Issues page.

  • Documentation:
    This README and the inline comments in kefinTweaks.js and the other scripts is the only real documentation available at this time


Roadmap

Planned Features

  • Jellyfin 10.11 Support:

  • UI Configuration:
    Allow admins to customize the configuration through the UI instead of the JS script
    Allow users to also customize various configuration options through the UI


Version History

  • v0.2.0: New Features: Skin Manager, Collections on Details Page, Flatten TV Shows
  • v0.1.3: Improve Watchlist UI and Search UX
  • v0.1.2: Added proper support for Base URLs configured in Jellyfin
  • v0.1.1: Fixes for Watchlist UI elements and performance improvements for Watchlist and Search
  • v0.1.0: Initial release for Jellyfin 10.10.7