Releases
v2.9.0
Compare
Sorry, something went wrong.
No results found
2.9.0 (2026-07-30)
Features
add gemini-3.5-flash-lite, gemini-3.5-flash and gemini-3.6-flash (99a8dd1 )
add granular control on image caching per-provider (cee0571 )
add per-type controls for watch tracking (5f2f559 )
add per-type controls for watch tracking (aed365a )
add POSTER_PROXY_ALLOW_PRIVATE to gate private art hosts (81e93f1 )
add trigger keyword to AI search (a64097f )
add trigger keyword to AI search (3231795 )
ai-catalog: add a model selector to the AI Catalog Builder (99a8dd1 )
aliases: resolve human-readable user aliases to UUIDs (6dbd084 )
aliases: resolve human-readable user aliases to UUIDs (5cc40bd )
allow custom art placeholders to be marked optional (2ab610c )
catalogs: import and remap existing collection files (cef456f )
catalogs: serve collection and widget JSON over HTTP (cef456f )
catalogs: visual builder for Nuvio collections and Fusion widgets (cef456f )
clear cached art by media id (ed8f729 )
configurable poster cache validity period (667ad07 )
dashboard: clear cache entries by meta id or catalog id (e2f4f75 )
experimental aiom image caching engine (67f33e7 )
expose the full TMDB discover sort options (17aed03 )
implement meta cold store (a4f0a65 )
make the art proxy routes' client cache configurable (667ad07 )
movielens: apply taste tags on non-prediction catalog sorts (2a12df2 )
movielens: implement "your rated collection" and refactor (11b72b1 )
movielens: import user-created lists as catalogs (828bd07 )
movielens: multi-user MovieLens recommendations (fad8105 )
movielens: support genre filtering in watchlist catalog (ace3b70 )
poster-cache: cache rendered rating and custom-art posters (1fff141 )
redesign oauth popups (7f44c91 )
reuse cold store dashboard stats for a configurable window (f8c77df )
settings: register TMDB rendition toggles (ab2ccc9 )
show the title when clearing cached entries by ID (a0983a4 )
surface image warming on the dashboard (651f9c7 )
tmdb: add central image rendition helper (dbea454 )
tmdb: make all rendition toggles opt-in (10c73b6 )
tmdb: size art-batch logos and backdrops via helper (19479a9 )
tmdb: size landscape posters independently of backgrounds (f9ce52d )
tmdb: size meta logos and backdrops via helper (7a95b05 )
tmdb: size provider logos and backdrops via helper (cc0848a )
tmdb: size search logos and backdrops via helper (bc514d4 )
top10: broaden service coverage, handle regional variants (fbe5d75 )
top10: broaden service coverage, handle regional variants (a1ed440 )
tracking: point users at the login when they enable watch tracking (c38d88b )
Bug Fixes
ai-catalog: resolve the model against the provider actually used (99a8dd1 )
aliases: back off the alias map refresh after a failed load (4a34119 )
aliases: hide alias controls when the feature is disabled (4a34119 )
aliases: keep a missing user_aliases table from breaking the user list (4a34119 )
aliases: preserve query string encoding when rewriting userUUID (4a34119 )
aliases: read CONFIG_LOAD_RATE_LIMIT_PER_MIN from the settings registry (4a34119 )
aliases: require ADMIN_KEY for alias changes (4a34119 )
aliases: resolve aliases on /api/config/clear-cache (4a34119 )
allow rootless users with built-in poster cache enabled (34be89d )
allow rootless users with built-in poster cache enabled (c2f84a2 )
cache empty movielens list pages (359a732 )
catalogs: make collection persistence and catalog warnings honest (cef456f )
dashboard: keep the logs service filter visible (cca2179 )
drop the cold store epoch index that turned lookups into scans (ee42df5 )
honor per-class image cache toggles for custom art (81864a7 )
hydrate release dates on TVDB movie search results so the digital release filter can act on them (fa533b2 )
include Simkl activity fingerprint in warmed catalog keys (e94e3f2 )
keep the warmer's freshness test in step with the store (b9742d4 )
keep the warmer's freshness test in step with the store (ec05f8d )
key MovieLens explore catalogs by resolved group tags (ee2931c )
let Refresh accept an art-proxy image URL (26a9be1 )
log cache hits that are answered with a 304 (71e84b9 )
logo: cache metahub image-existence checks for the full TTL (e679561 )
logo: verify metahub logo fallbacks exist before serving them (44f90de )
mal & trakt oauth on multi-replica setups (afa5205 )
meta: keep IMDB episode ids when a season is missing from Cinemeta (89be187 )
paginate Trakt watched fetches and prioritize recently aired shows in unwatched catalog (415725f )
proxy episode thumbnails so clients can load them (bd96abf )
proxy episode thumbnails through the art proxy (2cc7dba )
replace retired gemini-2.5-flash-lite default (99a8dd1 ), closes #604
report the database dialect before initialize() has run (87296b7 )
request Trakt watched shows with extended=progress so hide-watched works again (963dd96 )
resolve frontend typecheck errors (6d6643e )
scope MovieLens catalog cache to the connected account (c69d4e1 )
search: let OpenRouter AI search run without credits (b294d84 )
search: request posters at w600_and_h900_bestv2 like every other path (bc24573 )
sign the warmer's proxy-art URLs so private art hosts resolve (60122ec )
skip rendered art the warmer has already cached (e42ecf5 )
stale catalog name in movielens edit modal (a719e59 )
stale catalog name in movielens edit modal (5018028 )
stop forcing a vote count floor on discover catalogs (61334bc )
stop inferring a rating poster provider from saved API keys (a7a2359 )
stop logging missing poster art as an error (694a1c1 )
stop signing image proxy URLs with the MovieLens credential key (607f820 )
surface MovieLens list fetch failures instead of truncating (f752d60 )
tmdb: never request a rendition larger than the asset (032cb08 )
trakt: serve the integration logo from our own assets (b507ac1 )
warm on cache epoch change rather than addon version (5785c15 )
warm the default poster when a rating poster cannot be built (4b2c096 )
Performance Improvements
cache & memoize image cache dns lookups (d373cfc )
dedup md5 hashes (bfe73fb )
use lz4 instead of lz-string in config cache (44d92cd )
version keys by epoch instead of addonversion (e5ad95c )
warm images through one bounded adaptive queue (59f84c8 )
You can’t perform that action at this time.