From 2ce966cecec1c3a9634814cb1fb89a43d7ab63d9 Mon Sep 17 00:00:00 2001 From: c0mrade Date: Mon, 1 Jun 2026 18:00:00 +0300 Subject: [PATCH] fix(wheel): remove CSS filters from the spinning SVG (kill GPU-composite streak) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The center streak doesn't appear in screen recordings, which is the signature of a GPU-compositing artifact — CSS filters on SVG elements mis-render when the wheel group is promoted to a layer during the spin. Replace the two SVG CSS filters with compositing-safe equivalents: LED-glow blur -> radial gradient fill, emoji drop-shadow -> SVG-native feDropShadow. (HTML background blur left as-is; it's not on the SVG and isn't a light.) --- src/components/wheel/FortuneWheel.tsx | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/components/wheel/FortuneWheel.tsx b/src/components/wheel/FortuneWheel.tsx index be28029..7b64fd4 100644 --- a/src/components/wheel/FortuneWheel.tsx +++ b/src/components/wheel/FortuneWheel.tsx @@ -214,6 +214,21 @@ const FortuneWheel = memo(function FortuneWheel({ + + {/* LED glow as a soft gradient instead of a CSS blur. CSS filters on + cx/cy-positioned SVG elements mis-render under the spin's GPU + compositing — phantom streaks toward the centre that are often + invisible in screen recordings but visible live. */} + + + + + + + {/* SVG-native emoji shadow (not a CSS filter) for the same reason */} + + + {/* Background shadow */} @@ -270,9 +285,9 @@ const FortuneWheel = memo(function FortuneWheel({ className="led-glow" cx={dotX} cy={dotY} - r={5} - fill="#FEF08A" - style={{ filter: 'blur(2px)', animationDelay: delay }} + r={9} + fill="url(#ledGlowGrad)" + style={{ animationDelay: delay }} /> {prize.emoji}