diff --git a/src/components/SplashScreen.tsx b/src/components/SplashScreen.tsx index 85cf459..e0d9f6c 100644 --- a/src/components/SplashScreen.tsx +++ b/src/components/SplashScreen.tsx @@ -23,23 +23,23 @@ import { useTranslation } from '@/contexts/language'; */ const SESSION_KEY = 'splash-shown-session'; -const MIN_MS = 900; // choreography needs room to breathe -const WARM_GRACE_MS = 550; // wait after connection for content to stream in -const MAX_MS = 2600; // hard cap — never block on a slow/offline network -const FADE_MS = 480; -const READY_HOLD_MS = 340; // savour the 100% "ready" beat before revealing +const MIN_MS = 380; // keep the brand beat, lose the artificial wait +const WARM_GRACE_MS = 180; // a short breath after relays connect +const MAX_MS = 900; // hard cap — reveal the shell even on a dead network +const FADE_MS = 280; // iris-close exit +const READY_HOLD_MS = 120; // show the ready check, then move const SPARKS = [ { sx: '-8px', sy: '18px', ex: '-54px', ey: '44px', delay: '0ms' }, - { sx: '4px', sy: '22px', ex: '38px', ey: '58px', delay: '90ms' }, - { sx: '-16px', sy: '10px', ex: '-72px', ey: '18px', delay: '180ms' }, - { sx: '12px', sy: '14px', ex: '66px', ey: '30px', delay: '260ms' }, - { sx: '-4px', sy: '24px', ex: '-28px', ey: '76px', delay: '340ms' }, - { sx: '8px', sy: '24px', ex: '22px', ey: '78px', delay: '430ms' }, - { sx: '-12px', sy: '2px', ex: '-48px', ey: '-16px', delay: '520ms' }, - { sx: '14px', sy: '4px', ex: '52px', ey: '-12px', delay: '610ms' }, - { sx: '-2px', sy: '28px', ex: '-10px', ey: '88px', delay: '700ms' }, - { sx: '2px', sy: '28px', ex: '12px', ey: '90px', delay: '790ms' }, + { sx: '4px', sy: '22px', ex: '38px', ey: '58px', delay: '20ms' }, + { sx: '-16px', sy: '10px', ex: '-72px', ey: '18px', delay: '40ms' }, + { sx: '12px', sy: '14px', ex: '66px', ey: '30px', delay: '60ms' }, + { sx: '-4px', sy: '24px', ex: '-28px', ey: '76px', delay: '80ms' }, + { sx: '8px', sy: '24px', ex: '22px', ey: '78px', delay: '100ms' }, + { sx: '-12px', sy: '2px', ex: '-48px', ey: '-16px', delay: '120ms' }, + { sx: '14px', sy: '4px', ex: '52px', ey: '-12px', delay: '140ms' }, + { sx: '-2px', sy: '28px', ex: '-10px', ey: '88px', delay: '160ms' }, + { sx: '2px', sy: '28px', ex: '12px', ey: '90px', delay: '180ms' }, ]; const STATUS_KEYS = [ @@ -75,7 +75,7 @@ export function SplashScreen() { if (!visible || ready) return; const id = setInterval(() => { setStatusIndex((i) => (i + 1) % STATUS_KEYS.length); - }, 640); + }, 380); return () => clearInterval(id); }, [visible, ready]); @@ -84,8 +84,8 @@ export function SplashScreen() { useEffect(() => { if (!visible || ready) return; const id = setInterval(() => { - setProgress((p) => (p >= 85 ? p : p + Math.max(0.6, (85 - p) * 0.045))); - }, 90); + setProgress((p) => (p >= 85 ? p : p + Math.max(0.9, (85 - p) * 0.065))); + }, 60); return () => clearInterval(id); }, [visible, ready]); @@ -155,8 +155,24 @@ export function SplashScreen() {