26 Commits

Author SHA1 Message Date
Ruben
207a1ed905
fix(overlays): correct air date today logic for next episode and season (#496)
* fix(overlays): correct air date today logic for next episode

* fix(overlays): correct air date today logic for next season
2026-03-03 00:16:56 +13:00
bitr8
d8655cad41
fix(placeholders): handle Plex returning TV seasons as Children.Directory (#491)
Plex returns seasons as Children.Directory (not Children.Metadata)
when using ?includeChildren=1. All placeholder detection code only
checked Children.Metadata, so isPlaceholderItem() always returned
false for TV shows — skipping title fixes and triggering false
cleanup of valid placeholders.

Added Metadata || Directory fallback across all detection paths,
type casts, and getChildrenMetadata() API helper.

Fixes #414

Co-authored-by: bitr8 <bitr8@users.noreply.github.com>
2026-03-03 00:15:31 +13:00
Tom Wheeler
9787db3bda feat(overlays): add Plex Labels as condition
fix #243
2026-02-02 20:55:56 +13:00
Tom Wheeler
af965b66c6 feat(overlays): add Collection as condition
re #243
2026-02-02 20:36:09 +13:00
Tom Wheeler
def271603f perf(overlays): batch composite all template overlays in single render pass 2026-01-29 08:41:36 +13:00
Tom Wheeler
fad645485b fix(overlays): add 'does not contain' string operator
also adds templateData to hash comparison

fix #367
2026-01-21 05:26:50 +13:00
bitr8
70eb9091cf
fix(overlays): return episodeNumber from fetchReleaseDateInfo for countdown overlays (#302)
The episodeNumber field was being extracted from TMDB's next_episode_to_air
but not included in the return object, causing {episodeNumber} in overlay
templates to always show 1 (from Plex item.index) instead of the upcoming
episode number.

Fixes #290

Co-authored-by: bitr8 <bitr8@users.noreply.github.com>
2026-01-05 01:30:25 +13:00
bitr8
37591405ef
perf(overlays): add TMDB poster caching and fix race conditions (#277)
P0 Critical fixes:
- Add TMDB poster file cache with 7-day TTL (reduces API calls by ~99%)
- Add per-job TMDB URL cache with Promise coalescing for concurrent requests
- Add per-library mutex lock to prevent concurrent overlay processing
- Fix variable shadowing where passed tmdbId was ignored

P1 High priority fixes:
- Fix silent failure path - propagate errors from base poster failures
- Add cache cleanup at job start to prevent stale data

P2 Medium priority fixes:
- Fix neq condition evaluation for undefined/null fields
- Handle rejected promises in URL cache (remove on failure)

---------

Co-authored-by: bitr8 <bitr8@users.noreply.github.com>
Co-authored-by: Tom Wheeler <thomas.wheeler.tcw@gmail.com>
2026-01-03 22:14:12 +13:00
Tom Wheeler
858f7934a6 feat(overlays): add support for overlays based on maintainerr action
fix #233
2025-12-24 12:29:45 +13:00
Tom Wheeler
4900554cc1 fix(placeholders): extract placeholder functions, refactor sources, overlays fixes
extracts PlaceholderServices.ts functions into separate files, adds youtube cookies support.
refactor backend services into more logical structure. overlays fixes including episode titles,
other minor fixes
2025-12-23 23:31:27 +13:00
Tom Wheeler
136d0e92f3 fix(overlays): ensure poster is locked 2025-12-21 15:37:22 +13:00
Tom Wheeler
57e3c5a804 fix(overlays): enable per library overlays sync
fix #218
2025-12-19 09:22:10 +13:00
Tom Wheeler
6333c1a7a5 feat(overlays): add overlays test modal, allowing testing of indivdual items
displays matching overlays and raw variables

fix #212
2025-12-18 17:45:56 +13:00
Tom Wheeler
9d2f6aec8f fix(overlays): add daysAgoNextSeason and fix AWAITING DOWNLOAD preset template 2025-12-16 02:57:19 +13:00
Tom Wheeler
9e15a66ab7 feat(poster sources): adds local poster source option
posters for overlays can now be set locally. folders are created for each item in plex under
/config/plex-base-posters/{library}/{item}/. Place a .png or .jpg in the folder for that poster to
be used as the base poster for overlays. if no file is present, TMDB poster will be used.

re #144
2025-12-14 10:48:00 +13:00
Tom Wheeler
f2623e63e9 fix(overlays): apply overlays during sync now skips if no overlays configured
re #144
2025-12-12 00:36:31 +13:00
Tom Wheeler
6cda7b8347 fix(overlays): add live placeholder tracking, seperate out releaseDate
fixes incorrect overlays applying by ensuring releaseDate is only used for Movie
physical/digital/theatrical+90 and TV show series premiere, adds episode and season release date
conditinos. Removes unecessary database values causing stale and incorrect metadata to be passed to
overlays. placeholders are now identified during overlay application. multiple minor fixes.

re #115, re #144, fix #175, fix #178, fix #179
2025-12-10 00:47:15 +13:00
Tom Wheeler
9df021a1b6 fix(overlays): adds option to use plex posters as base overlay poster
users can now choose between fresh TMDB posters or Plex posters to use as the base poster for the
Overlays feature. On selecting Plex posters, all posters will be downloaded. Changes to Plex posters
will be detected, and downloaded for future use.

re #144
2025-12-06 16:32:30 +13:00
Tom Wheeler
a017de4ea7 feat(poster languages): adds option for poster languages under Settings -> General
plan for future expansion (hence location), likely including locale for i18n translation, and TMDB
metadata language with fallback (where possible)

re #144
2025-12-04 20:26:33 +13:00
Tom Wheeler
f459595da4 feat(plex metadata): adds hashing system for posters, wallpapers, and themes
adds migrations for collection and item metadata tables. posters (items + collections), wallpapers,
and themes now have a hash calculated based on their variables. adds check before generating poster,
comparing metadata slug to stored slug from previous sync, if both hash and slug are equal, then
generation/upload is skipped. will significantly reduce bloat from repeated uploads, and reduces
poster overlays re-run time significantly (e.g. 45 mins to 18 mins)

re #144
2025-12-04 20:19:39 +13:00
Tom Wheeler
9d33b1357e fix(overlays): fixes overlays appearing incorrectly
fixes AWAITING DOWNLOAD overlay appearing for existing items. Adds AIRING as stauts (calculated)

fix #173
2025-12-04 14:57:59 +13:00
Tom Wheeler
dea44dd649 fix(overlays): add TMDB TV series status conditions, variables and preset
fix #171
2025-12-03 21:01:51 +13:00
Tom Wheeler
435bcdfc03 fix(poster overlays): multiple overlays fixes
fixes release date, monitored conditions, updates default templates

fix #168, re #115, re #144
2025-12-03 19:31:09 +13:00
Tom Wheeler
92d63185f0 fix(overlays): rework conditions to more logical structure, multiple overlays fixes
changes from AND/OR groupings to Sections allowing for a more logical building of conditions, adds
fronend modal for building conditions, fixes multiple release date issues

re #115, re #128, re #144
2025-12-03 03:38:47 +13:00
Tom Wheeler
0aa2296bc6 fix(overlays): fixes imdb top 250 conditions, monitored (placeholder) conditions
re #115, re #144
2025-12-01 18:15:17 +13:00
Tom Wheeler
de8ed928fe feat(poster overlays): poster Overlays for individual items can now be created
Adds new feature for Poster Overlays, create overlays in the editor under Posters -> Poster Overlays
with variables and conditions, and select which libraries the overlays should apply to

fix #144, re #115, re #128
2025-11-27 14:14:04 +13:00