Commit Graph
86 Commits
Author SHA1 Message Date
MakD 539e2308da Refactor code structure for improved readability and maintainability 2026-09-15 21:32:45 +05:30
MakD 9aa3fd3f7e Refactor code structure for improved readability and maintainability 2026-09-01 12:28:28 +05:30
MakD d2f41f3910 Refactor play button creation to improve structure and maintainability 2026-08-28 16:01:43 +05:30
MakD 741e31ebd8 Bump version to v6.1.0 and remove unused multi-choice styles 2026-08-28 15:17:54 +05:30
MakD 03c4cc0ade Add multi-choice library selection and filter support in settings
- Introduced multi-choice options for selecting libraries and trailer libraries in the settings panel.
- Implemented functionality to parse and apply filters from a list, allowing dynamic item fetching based on specified criteria.
- Updated relevant API calls to accommodate new filtering capabilities.
2026-08-28 15:06:57 +05:30
MakD 065b16588e v6.0.0: slideshow rework, new fonts, updated install snippet 2026-08-28 13:16:35 +05:30
Russell Luther c1fa76f046 Sync the page backdrop with the featured slide
The background behind the home page is Jellyfin's own backdrop layer, and it
has no connection to what the bar is showing. It sits on unrelated library art,
and where the user has Jellyfin's backdrop rotator enabled it also cycles on its
own timer, so the page behind the hero drifts while the hero itself is correct.

PageBackdrop points that layer at the featured item and keeps it in step. It
reuses the exact URL the active slide already requested through
SlideCreator.buildImageUrl, so the browser serves the image from cache and no
extra request is made.

Two details worth calling out:

Jellyfin's rotator adds its own .backdropImage siblings into the same container
and cycles them, which paints over anything we set. While the bar owns the
screen we keep our layer the only one and make sure it stays last. This is done
with a MutationObserver on the container rather than a timer, so it reacts to
the rotator instead of polling for it.

It is scoped to the home page. VisibilityObserver already knows when the bar is
hidden, so leaving the page hands the backdrop straight back to Jellyfin and no
other page is affected.

Defaults on, alongside slideAnimationEnabled and enableTrailers. Set
CONFIG.syncPageBackdrop to false to leave the backdrop alone.
2026-08-06 22:31:57 -04:00
M0RPH3US b6a113ba45 Merge pull request #113 from MrRussLuther/prefer-main-trailer
Pick the main trailer instead of RemoteTrailers[0]
2026-08-06 20:11:51 +05:30
Russell Luther 049cd148d2 Demote alternate cuts within tier and handle youtu.be and embed URLs
A flat 10 point demotion ranked an accessibility variant of a real
trailer below non-trailer junk like Behind the Scenes or Review.
Subtract 0.5 instead, so an alternate cut loses to an ordinary entry
of the same tier but still beats lower tier promo clips.

Also parse youtu.be short links and youtube.com embed links by
pathname, since neither carries a v query param.
2026-08-01 01:16:33 -04:00
Russell Luther 96b0d4b099 Pick the main trailer instead of RemoteTrailers[0]
RemoteTrailers arrives in metadata provider order, which is not
preference order. Taking index 0 unconditionally means the bar
regularly plays something other than the trailer: a promo clip, a
teaser, or an accessibility variant.

The clearest case is an American Sign Language cut. TMDb lists
"Official American Sign Language Trailer" first for A Minecraft Movie,
Mortal Kombat II and Superman, so those slides play a trailer with an
interpreter composited into the corner, drawn over the backdrop.

Index 0 is also not guaranteed to be a YouTube link. When it is not,
searchParams.get("v") returns null and the slide loses its trailer
even though a usable YouTube entry sits further down the list.

Entries are now ranked by name, preferring official, final and main
trailers over generic ones and teasers, with alternate cuts ranked
below everything else rather than dropped so an item that has nothing
else still plays something. Provider order breaks ties, so an item
whose first entry is already the best keeps it. Entries that yield no
video id are skipped instead of ending the search.

Across a 384 item library this changes the pick for 105 items and
loses the trailer for none. Avatar moves from "Back in Theatres" to
"Special Edition Official Trailer", Oppenheimer from "Review" to
"Official Trailer", Moana 2 from "Special Look" to "Official Trailer",
and the three titles above stop playing the sign language cut.
2026-08-01 00:30:33 -04:00
Vinnie-Singleton 46647a739b Show "Ends at" time in the viewer's own clock format
Right now the end time is locked to 24-hour. There is no option to switch
to 12 hour. Dropping the forced setting lets it match whatever the viewer's
device already uses including 12 hr with AM/PM along with the existing 24
hour format.
2026-07-07 02:25:50 +00:00
M0RPH3US 57e33f5749 Update version number to v5.0.1 2026-07-01 15:41:28 +05:30
Abhishek Mallik 74873bf4d4 Fallback when YouTube API fails to load 2026-06-29 02:14:19 +05:30
M0RPH3US ad2a5473e8 Update slideshowpure.js 2026-05-19 21:28:53 +05:30
M0RPH3US 18b5a6dca1 Update slideshowpure.js
Attempt to fix #105
2026-05-19 20:38:34 +05:30
M0RPH3US fcb7bf469b Update slideshowpure.js 2026-02-13 13:58:20 +05:30
M0RPH3US ec268f128d Update slideshowpure.js 2026-02-13 13:29:32 +05:30
M0RPH3US d3c29f6f6c Update slideshowpure.js 2026-02-11 22:05:34 +05:30
M0RPH3US 568d0a028c Implement page visibility handling for slideshow
Added page visibility handling to pause and resume slideshow and videos based on tab visibility.
2026-02-07 18:01:34 +05:30
M0RPH3US 5ff5b4de05 Upgrade Jellyfin Slideshow to version 4.0.0 2026-02-05 11:01:31 +05:30
M0RPH3US 921fefa95d Update version number to v3.0.9 2026-01-29 02:48:09 +05:30
M0RPH3US 85aa720cba Merge pull request #85 from TheMatrixan/main
Fix JSON extraction in LocalizationUtils
2026-01-29 02:42:39 +05:30
Mateusz Lesiak 29248c72cd Add JSON extraction improvements in LocalizationUtils 2026-01-26 07:44:58 +01:00
Charles Bel 34b65415f2 fix(slideshow): filter out items missing logo images
Modified fetchItemIdsFromServer to include 'ImageTags' in the API request fields.
Added a filter to strictly exclude items that do not possess a Logo image.
This prevents the slideshow from displaying unstyled placeholders for media content lacking proper branding.
2026-01-11 12:49:43 +01:00
M0RPH3US 7506bedfa9 Update slideshowpure.js 2026-01-07 00:08:14 +05:30
M0RPH3US 46187718d7 Update slideshowpure.js
Fixed Bug where the loader didn't get removed on `/home?tab=n`
2026-01-05 09:37:29 +05:30
ACertainCoder 1a4d0ce0f7 Use getCurrentUser instead of getUser 2025-12-20 22:15:35 +01:00
ACertainCoder 9b4c7b6344 Convert 3-letter country codes to 2-letter if necessary 2025-12-20 22:02:35 +01:00
M0RPH3US b1854c9224 Update version number in slideshowpure.js 2025-12-10 12:05:24 +05:30
Lukas Wagner c461c90c71 Merge branch 'main' into feature/add-localization 2025-12-09 20:08:52 +01:00
Lukas Wagner a7ed05c95e feat: add localization 2025-12-09 20:01:00 +01:00
M0RPH3US 6c72793d6b Update version number to 3.0.5 2025-12-06 19:28:07 +05:30
Lukas Wagner a878b896e4 chore: revert whitespace changes 2025-12-06 14:08:32 +01:00
Lukas Wagner a04dd4f2e4 feat: add cache friendly image url construction 2025-12-06 14:05:03 +01:00
Core 98ce372afb fix: show item name when no logo is present 2025-10-24 00:20:46 +01:00
Core a4dde6bf51 fix: use splashLogo class over svg
Didn't realise they used this
2025-10-23 23:43:51 +01:00
Core 21eab1dedd fix(pause-button): reposition to top-right and improve responsiveness
This will prevent the button being hidden underneath media cards and
will improve its sizing and visibility across all background and
interfaces.
2025-10-23 22:21:07 +01:00
Core 93c1a54ac4 fix: remove itemMiscInfo to prevent theme breaking 2025-10-23 01:09:25 +01:00
Core 2abeafb889 chore: version bump 2025-10-23 01:09:25 +01:00
Core 311e4c0f5a chore: opinionated formatting 2025-10-23 01:09:25 +01:00
Core ecce883a3e refactor(misc-info): restructure misc info to use standard jellyifn icons, and display correctly and no longer show N/A 2025-10-23 01:09:25 +01:00
Core 4c77f7e545 chore: tidy genre element 2025-10-23 01:09:25 +01:00
Core f9aa6ada64 feat: use seperator element for genre seperator 2025-10-23 01:09:25 +01:00
Core 11f72488dd fix: use jellyfin svg over asset which has been removed in 10.11.0 2025-10-23 01:09:25 +01:00
M0RPH3US 313e2557dc Update version number to 3.0.3 2025-10-17 01:44:51 +05:30
Pavan Thanuj Upadrasta 2463172120 Add pause functionality to slideshow
Introduces an isPaused state to control slideshow pausing. Adds a pause button to the UI, updates logic to prevent slide transitions when paused, and allows toggling pause via the space bar or button. Also improves homepage detection and ensures interval restarts only when not paused.
2025-10-16 10:29:00 +05:30
IAmParadox27 7ca3f25527 feat: Added configuration variable in javascript for slide animation being enabled or disabled. Defaults to enabled (i.e. no change) 2025-10-15 21:16:00 +01:00
M0RPH3US 425e213476 Update version number to 3.0.1 2025-10-16 01:33:34 +05:30
IAmParadox27 cc1dcee2d7 fix: Fixing issue where exiting slide flicks back to original size before disappearing 2025-10-15 20:52:07 +01:00
IAmParadox27 87c70db0d0 fix: Hopefully fixes performance issues on webOS as reported in IAmParadox27#44 MakD#50 and MakD#30 2025-10-15 20:43:51 +01:00