From 73a2e9b9a3425ce2180796502216d24dd7cad2ed Mon Sep 17 00:00:00 2001 From: lorentz Date: Thu, 5 Feb 2026 07:58:33 -0500 Subject: [PATCH] perf: optimize ticker animation and increase speed - Added translate3d(0,0,0) for hardware acceleration - Added font smoothing for better rendering - Reduced default ticker speed from 60s to 30s (2x faster) - Improved animation smoothness to reduce jitter - Better GPU acceleration with backface-visibility and willChange --- app/kiosk/page.tsx | 36 ++++++++++++++++++++++++------------ components/kiosk/ticker.tsx | 13 +++++++++++-- 2 files changed, 35 insertions(+), 14 deletions(-) diff --git a/app/kiosk/page.tsx b/app/kiosk/page.tsx index 89d7199..3248a35 100644 --- a/app/kiosk/page.tsx +++ b/app/kiosk/page.tsx @@ -56,13 +56,27 @@ export default function KioskPage() { }); const [activities, setActivities] = useState([]); const [cycleInterval, setCycleInterval] = useState(7); + const [tickerSpeed, setTickerSpeed] = useState(30); useEffect(() => { - // Load saved cycle interval from localStorage - const savedInterval = localStorage.getItem('kiosk-cycle-interval'); - if (savedInterval) { - setCycleInterval(parseInt(savedInterval)); - } + // Fetch settings from API + const fetchSettings = async () => { + try { + const res = await fetch('/api/kiosk/settings'); + if (res.ok) { + const data = await res.json(); + if (data.cycle_interval) { + setCycleInterval(data.cycle_interval); + } + if (data.ticker_speed) { + setTickerSpeed(data.ticker_speed); + } + } + } catch (error) { + console.error('Error fetching kiosk settings:', error); + } + }; + fetchSettings(); }, []); useEffect(() => { @@ -103,28 +117,26 @@ export default function KioskPage() { {/* Main Content Area */} {/* Ticker */} - + {/* Custom CSS for ticker animation */} ); diff --git a/components/kiosk/ticker.tsx b/components/kiosk/ticker.tsx index 1f76e1b..231820c 100644 --- a/components/kiosk/ticker.tsx +++ b/components/kiosk/ticker.tsx @@ -12,9 +12,10 @@ interface TickerActivity { interface TickerProps { activities: TickerActivity[]; + speed: number; } -export function Ticker({ activities }: TickerProps) { +export function Ticker({ activities, speed }: TickerProps) { const tickerRef = useRef(null); const [isPaused, setIsPaused] = useState(false); @@ -34,7 +35,15 @@ export function Ticker({ activities }: TickerProps) {
setIsPaused(true)} onMouseLeave={() => setIsPaused(false)} >