From 8f7c99199b1041040183e16a70ea10f513b35b0a Mon Sep 17 00:00:00 2001 From: KennyG Date: Wed, 15 Apr 2026 21:11:56 -0400 Subject: [PATCH 1/3] performer-poster-backdrop: Stash v0.31.1 compatibility (hide duplicate backdrop) Stash now renders BackgroundImage inside the performer detail header when 'Enable performer background image' is on. The plugin's .pb-hero stacked with that layer caused a double-header layout. Hide the native container when our hero is active (pb-has-hero), clear class on teardown, and bump to 1.0.4. No change to plugin tuning behavior. Made-with: Cursor --- plugins/performer-poster-backdrop/README.md | 1 + .../performer-poster-backdrop.css | 9 +++++++++ .../performer-poster-backdrop.js | 9 ++++++++- .../performer-poster-backdrop.yml | 2 +- 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/plugins/performer-poster-backdrop/README.md b/plugins/performer-poster-backdrop/README.md index ca22e5c1..81e08344 100644 --- a/plugins/performer-poster-backdrop/README.md +++ b/plugins/performer-poster-backdrop/README.md @@ -11,6 +11,7 @@ Adds a blurred poster-style backdrop behind performer headers using the performe - Applies only to **Performer pages** - Uses the performer’s **poster image** as a background layer +- When this plugin is active, Stash’s built-in performer **background image** (Settings → Interface → **Enable performer background image**) is hidden on that header so you only get one backdrop layer and the name block is not pushed down by a second stack. - Adjustable: - Opacity - Blur strength diff --git a/plugins/performer-poster-backdrop/performer-poster-backdrop.css b/plugins/performer-poster-backdrop/performer-poster-backdrop.css index f2d5f99d..3d23432c 100644 --- a/plugins/performer-poster-backdrop/performer-poster-backdrop.css +++ b/plugins/performer-poster-backdrop/performer-poster-backdrop.css @@ -42,6 +42,15 @@ overflow: hidden; } +/* + * Stash core now renders BackgroundImage (.background-image-container) inside the same header. + * Our plugin replaces that behavior; leaving both causes a stacked/double header look and can + * push layout. Hide native backdrop whenever our hero is present. + */ +#performer-page .detail-header.full-width.pb-has-hero .background-image-container { + display: none !important; +} + /* Lift content above banner ONLY in the REAL header */ #performer-page .detail-header.full-width > *:not(.pb-hero) { position: relative; diff --git a/plugins/performer-poster-backdrop/performer-poster-backdrop.js b/plugins/performer-poster-backdrop/performer-poster-backdrop.js index 322532de..c559006a 100644 --- a/plugins/performer-poster-backdrop/performer-poster-backdrop.js +++ b/plugins/performer-poster-backdrop/performer-poster-backdrop.js @@ -70,8 +70,11 @@ return map; } + const HEADER_ACTIVE_CLASS = "pb-has-hero"; + function removeHero(el) { el?.querySelector("." + HERO_CLASS)?.remove(); + el?.classList.remove(HEADER_ACTIVE_CLASS); } function upsertHero(header, url) { @@ -81,6 +84,7 @@ hero.className = HERO_CLASS; header.prepend(hero); } + header.classList.add(HEADER_ACTIVE_CLASS); hero.style.backgroundImage = `url("${url}")`; return hero; } @@ -144,7 +148,10 @@ if (!header || !isPerformerRoute()) return removeHero(header); const img = getPosterImg(); - if (!img) return; + if (!img) { + removeHero(header); + return; + } const hero = upsertHero(header, img.currentSrc || img.src); apply(hero); diff --git a/plugins/performer-poster-backdrop/performer-poster-backdrop.yml b/plugins/performer-poster-backdrop/performer-poster-backdrop.yml index b17721e9..f9e52ea5 100644 --- a/plugins/performer-poster-backdrop/performer-poster-backdrop.yml +++ b/plugins/performer-poster-backdrop/performer-poster-backdrop.yml @@ -1,6 +1,6 @@ name: Performer Poster Backdrop description: Adds a blurred poster backdrop to performer pages. -version: 1.0.3 +version: 1.1.0 url: https://discourse.stashapp.cc/t/performer-poster-backdrop/4897 ui: From ef437f23e4ad511d5e515c3140e089876f3aa117 Mon Sep 17 00:00:00 2001 From: KennyG Date: Wed, 15 Apr 2026 21:18:17 -0400 Subject: [PATCH 2/3] performer-poster-backdrop: ignore local example/ debug folder Made-with: Cursor --- plugins/performer-poster-backdrop/.gitignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 plugins/performer-poster-backdrop/.gitignore diff --git a/plugins/performer-poster-backdrop/.gitignore b/plugins/performer-poster-backdrop/.gitignore new file mode 100644 index 00000000..cf6a2a78 --- /dev/null +++ b/plugins/performer-poster-backdrop/.gitignore @@ -0,0 +1,2 @@ +# Local debug saves (e.g. saved HTML); not part of the distributed plugin +example/ From e01fed0ab913ffa8ec037e389d8cbdf2095fcb35 Mon Sep 17 00:00:00 2001 From: Stash-KennyG <138793998+Stash-KennyG@users.noreply.github.com> Date: Thu, 16 Apr 2026 09:57:45 -0400 Subject: [PATCH 3/3] Delete plugins/performer-poster-backdrop/.gitignore Cursor got a little over zealous. --- plugins/performer-poster-backdrop/.gitignore | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 plugins/performer-poster-backdrop/.gitignore diff --git a/plugins/performer-poster-backdrop/.gitignore b/plugins/performer-poster-backdrop/.gitignore deleted file mode 100644 index cf6a2a78..00000000 --- a/plugins/performer-poster-backdrop/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -# Local debug saves (e.g. saved HTML); not part of the distributed plugin -example/