From bce6a91aa201e0b6cff7c1672955610075e3729b Mon Sep 17 00:00:00 2001 From: BoulderBadgeDad Date: Sat, 27 Jun 2026 11:29:39 -0700 Subject: [PATCH] dashboard: stop the cursor-blob pseudo-elements re-blurring every frame (#935) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit each .dash-card renders two accent-blob pseudo-elements — ::before is 1280x1280 blur(48px), ::after 540x540 blur(18px) + mix-blend-mode:screen — and both ran an INFINITE scale-pulse animation. scaling a blurred element re-rasterizes the blur every frame; with 8 cards × 2 blobs that's 16 huge blurred layers re-blurring at 60fps whether or not the user touches anything. that's the dashboard's whole-screen repaint / ~36% idle GPU. remove the infinite pulse (the dashBlob*Pulse animations). the blob still follows the cursor via --blob-x/y; it just no longer 'breathes' at idle, so when nothing's moving there's nothing to repaint. trimmed will-change to the props that actually change (left/top). --- webui/static/style.css | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/webui/static/style.css b/webui/static/style.css index 66fa04ee..6c49ae81 100644 --- a/webui/static/style.css +++ b/webui/static/style.css @@ -63351,8 +63351,10 @@ body[data-artist-source="source"] #artist-detail-page #library-artist-enhance-bt opacity: 1; pointer-events: none; z-index: 0; - will-change: left, top, transform, opacity; - animation: dashBlobHaloPulse 5.5s ease-in-out infinite; + will-change: left, top; + /* No infinite scale-pulse: scaling a blur(48px) element re-rasterizes the blur every + frame, and with 8 cards × 2 blobs that pinned the GPU at idle (#935). The blob still + follows the cursor via --blob-x/y; it just doesn't breathe when nothing's happening. */ } .dash-card::after { content: ''; @@ -63372,9 +63374,9 @@ body[data-artist-source="source"] #artist-detail-page #library-artist-enhance-bt opacity: 1; pointer-events: none; z-index: 0; - will-change: left, top, transform, opacity; + will-change: left, top; mix-blend-mode: screen; - animation: dashBlobCorePulse 3.7s ease-in-out infinite; + /* No infinite scale-pulse — same reason as ::before (#935). */ } @keyframes dashBlobHaloPulse {