387 Commits
Author SHA1 Message Date
Zach Ross-Clyne c6269245b7 Merge branch 'MakD:main' into main 3.0.2.0 2026-10-28 10:28:46 +00:00
M0RPH3US 557b31e8d8 Update version number to v6.1.3 2026-10-21 10:45:58 +05:30
M0RPH3US 6ed7f144c6 Update version number to v6.1.3 2026-10-21 10:45:38 +05:30
M0RPH3US 954baa4113 Merge pull request #122 from Omar-Alodwan/jmp-no-replacechildren
Avoid Element.replaceChildren so the bar loads in Jellyfin Media Player
2026-10-21 10:44:41 +05:30
M0RPH3US 9bf86e922b Update version number to v6.1.2 2026-10-19 19:00:50 +05:30
M0RPH3US 1618b0db12 Update version number to v6.1.2 2026-10-19 18:59:38 +05:30
M0RPH3US b1418df2db Revise README for Play Now function and CSS support
Updated README to reflect changes in CSS support and added badges.
2026-10-13 14:13:21 +00:00
M0RPH3US 4f9d981933 Update version number to 6.1.1 2026-10-13 04:00:31 +05:30
M0RPH3US fea6e2928f Update version number to v6.1.1 2026-10-13 04:00:08 +05:30
MakD 8cd503c8fd Fix slide timer not auto progressing 2026-10-13 03:47:29 +05:30
Omar-Alodwan 8ebd0e517f Avoid Element.replaceChildren for older web engines
Jellyfin Media Player 1.12 ships a web engine older than Chrome 86, so
dotsContainer.replaceChildren() threw and the bar never loaded. Clear
with textContent and append instead.
2026-10-12 18:38:58 +02:00
M0RPH3US 23dcd06d23 Merge pull request #121 from Omar-Alodwan/trailer-captions-off
Keep YouTube trailer captions off the home rows
2026-10-12 06:43:37 +05:30
Omar Alodwan 7e8d0667ef Keep YouTube trailer captions off the home rows
Trailers whose uploader set default captions show them at the bottom of
the player. The trailer fills the bar behind the home rows, so the
captions are drawn over them.

Add a trailerCaptions option (default off, "Trailer captions" switch in
the settings panel). While it is off, the caption module is unloaded on
ready and again when playback starts, since YouTube loads it on play.
2026-10-12 03:08:37 +02:00
IAmParadox27 500c01292c Added future 12.x support 3.0.1.0 3.0.0.0 2026-09-15 21:41:11 +01:00
IAmParadox27 43116477c7 Merge branch 'v12' 2026-09-15 21:01:18 +01:00
IAmParadox27 b076e74b80 Merge branch 'upstream'
# Conflicts:
#	README.md
2026-09-15 21:00:59 +01:00
M0RPH3US 5b6fa01a5d Merge pull request #119 from MakD/v12-experimental
V12 Support
2026-09-15 21:34:33 +05:30
MakD 539e2308da Refactor code structure for improved readability and maintainability 2026-09-15 21:32:45 +05:30
Zach Ross-Clyne 2ef41c7884 Update README with Jellyfin 12 plugin information
Added important note about Jellyfin 12 plugin release status.
2026-09-08 14:58:35 +01:00
IAmParadox27 608ba707e4 Update to target jellyfin 12.0.0 official release 2026-09-08 10:30:26 +01:00
IAmParadox27 1e9874f1f9 Merge branch 'main' into v12 2026-09-08 10:29:45 +01:00
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
Zach Ross-Clyne 1a6b8e54cc Add Ko-fi funding option with username
Updated funding model to include Ko-fi username.
2026-08-27 10:21:52 +01:00
IAmParadox27 127f851803 Added kofi link to readme in case people want to support - totally optional 2026-08-26 23:53:01 +01:00
IAmParadox27 79429d6a7d Add ability to enable/disable sync page backdrop introduced in MakD/Jellyfin-Media-Bar#114. Fixes #174 2.4.13.0 2026-08-26 22:08:23 +01:00
IAmParadox27 19e96571ab Corrected auto copy target in csproj 2026-08-26 22:07:52 +01:00
IAmParadox27 30c7611ed0 Add ability to enable/disable sync page backdrop introduced in MakD/Jellyfin-Media-Bar#114. Fixes #174 2026-08-26 22:07:23 +01:00
IAmParadox27 aaa0dfee2b Update assembly to 3.0.0.0 to match plugin version 2026-08-26 22:06:07 +01:00
IAmParadox27 c15ae8ef29 Merge branch 'main' into v12
# Conflicts:
#	src/Jellyfin.Plugin.MediaBar/Jellyfin.Plugin.MediaBar.csproj
2026-08-26 21:50:48 +01:00
Zach Ross-Clyne 0d1ce12118 Merge pull request #178 from ACertainCoder/iamparadox27/fix/ghost-slide-lifecycle 2026-08-26 20:27:47 +01:00
ACertainCoder fac79dacb4 Fix SlideTimer lifecycle
Set `slideInterval` to `null` to ensure `updateCurrentSlide` doesn't restart it before overwriting it.
2026-08-26 20:32:29 +02:00
Zach Ross-Clyne f3ed7f039e Merge pull request #177 from skylerwshaw/fix/friendlier-settings-wording 2026-08-26 19:05:39 +01:00
Skyler Shaw f060f32b35 Reword the Version and early-updates settings for non-technical admins
The descriptions leaned on git and packaging vocabulary ("unpinned refs",
"tag or commit", "unversioned") that most people configuring a media
server don't have. Same behaviour, said in terms of consequences: what
you get, what the risk is, and how to get back ("turn this off").
"Allow unpinned refs" becomes "Get updates early".
2026-08-26 11:01:29 -07:00
Zach Ross-Clyne 9ac553ca8c Merge pull request #176 from skylerwshaw/feat/opt-in-branch-refs 2026-08-26 18:53:06 +01:00
Skyler Shaw ac1047ccb8 Add opt-in AllowUnpinnedRefs so main/latest can track jsDelivr again
Follow-up to #175, which made "main" and "latest" resolve to the embedded
assets. Requested in review: an option, default disabled, for users who want
those refs to load live from jsDelivr as before.

When AllowUnpinnedRefs is enabled, "main" and "latest" are treated as git
refs ("latest" mapping to the main branch, as it always has); disabled, they
keep meaning embedded. Explicit values are unaffected either way: "embedded"
is always embedded, and a tag or commit always fetches from jsDelivr. The
config page gains a checkbox spelling out what enabling it means: unreleased
code, arriving within about 12 hours of a push, unversioned.
2026-08-26 10:11:21 -07:00
Zach Ross-Clyne 632e63a004 Merge pull request #175 from skylerwshaw/fix/serve-web-assets-from-plugin
Serve slideshowpure.js/css from the plugin instead of jsDelivr
2026-08-26 16:12:00 +01:00
Skyler Shaw 40cfd4ba63 Treat main and latest as embedded, drop the unreachable 10.11 fallback
An "embedded" default only helps fresh installs: every existing server has
"main" or "latest" saved and would keep fetching a moving branch ref
forever. Those values never named a version, they meant "newest", and the
newest that matches the installed plugin is now the embedded copy. A tag
or commit still resolves to jsDelivr.

This makes the 10.11 fallback unreachable ("main" resolves to embedded
before the guard), and it was already dead: it compares
JellyfinVersionAttribute.GetVersion() to "10.11" by equality while the
assembly declares "10.11.2". Remove it, along with the config page's
client-side copy of the latest-to-main rewrite.
2026-08-26 05:32:44 -07:00
Skyler Shaw c7a4a47735 Serve slideshowpure.js/css from the plugin instead of jsDelivr
The injected index.html loaded both files from cdn.jsdelivr.net at
{{Config.VersionString}}, default "main". A branch ref is not a version:
jsDelivr re-resolves it at request time, so browser-side changes reach
every install the day they land, with no release and no way to decline,
and the code in the browser drifts from the installed plugin version. It
also leaves the media bar broken on servers without internet access.

Embed the files in the assembly and serve them from the existing
/MediaBar/{file} route:

- slideshowpure.js/css become EmbeddedResource under the Inject namespace
- Inject/index.html templates an asset base URL instead of a bare ref
- VersionString defaults to "embedded", which resolves to ../MediaBar
  (relative, so it works when Jellyfin is hosted under a base path)

Any other value is still treated as a git ref and fetched from jsDelivr.
2026-08-26 05:32:44 -07:00
Skyler Shaw f8b52288db Stop index.html requests rewriting the saved VersionString
IndexHtml() normalised VersionString in place ("latest" to "main", and
"main" to "10.11" on 10.11 builds). Those assignments mutate the live
configuration, so every home page load overwrote the value the
administrator saved, and concurrent requests raced over the field.
Compute the resolved version into a local instead.
2026-08-26 05:32:43 -07:00
Skyler Shaw 48f620a6a8 Return 404 when GetFile is asked for a resource that is not embedded
The manifest resource stream was null-forgiven, so a request for any file
outside the embedded Inject.* set threw mid-action and surfaced as a 400
with a stack trace in the server log. Return NotFound instead, and dispose
the reader.
2026-08-26 05:32:43 -07:00
Zach Ross-Clyne b2672657c4 Merge branch 'MakD:main' into main 2026-08-23 21:51:33 +01:00
M0RPH3US da79c05066 Merge pull request #114 from MrRussLuther/sync-page-backdrop
Sync the page backdrop with the featured slide
2026-08-11 21:07:52 +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
M0RPH3US e835513bbf Merge pull request #112 from MrRussLuther/fix-firefox-backdrop-mask-composite
Fix missing backdrop to trailer fade in Firefox (invalid mask-composite value)
2026-08-06 20:10:56 +05:30
M0RPH3US bb53c0b01d Merge pull request #111 from Vinnie-Singleton/makd-endsat-clock
Show "Ends at" time in the viewer's own clock format
2026-08-06 20:10:10 +05:30