From 4f2fd37e294c30aaf17d4693929c6018f372755d Mon Sep 17 00:00:00 2001 From: JorySeverijnse Date: Tue, 3 Feb 2026 14:35:21 +0100 Subject: [PATCH] Default cursor is not being displayed on top of the custom one upon exiting fullscreen Added package-lock file so running code does not contain any vulnerabilities anymore Snake game also dynamically changes sized when fullscreen just like the other games do Invert glow effect colour on Snake as it had broken logic --- package-lock.json | 36 ++++++++++++++++---------------- src/components/MatrixCursor.tsx | 8 ++++++- src/components/SettingsPanel.tsx | 26 +++++++++++++---------- src/pages/Snake.tsx | 4 ++-- src/pages/Tetris.tsx | 4 ++-- 5 files changed, 44 insertions(+), 34 deletions(-) diff --git a/package-lock.json b/package-lock.json index 314952f..68b1d44 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2342,9 +2342,9 @@ "license": "MIT" }, "node_modules/@remix-run/router": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.0.tgz", - "integrity": "sha512-O3rHJzAQKamUz1fvE0Qaw0xSFqsA/yafi2iqeE0pvdFtCO1viYx8QL6f3Ln/aCCTLxs68SLf0KPM9eSeM8yBnA==", + "version": "1.23.2", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.2.tgz", + "integrity": "sha512-Ic6m2U/rMjTkhERIa/0ZtXJP17QUi2CbWE7cqx4J58M8aA3QTfW+2UlQ4psvTX9IO1RfNVhK3pcpdjej7L+t2w==", "license": "MIT", "engines": { "node": ">=14.0.0" @@ -6042,9 +6042,9 @@ } }, "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", "license": "MIT" }, "node_modules/lodash.castarray": { @@ -6977,9 +6977,9 @@ } }, "node_modules/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", + "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -7157,12 +7157,12 @@ } }, "node_modules/react-router": { - "version": "6.30.1", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.30.1.tgz", - "integrity": "sha512-X1m21aEmxGXqENEPG3T6u0Th7g0aS4ZmoNynhbs+Cn+q+QGTLt+d5IQ2bHAXKzKcxGJjxACpVbnYQSCRcfxHlQ==", + "version": "6.30.3", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.30.3.tgz", + "integrity": "sha512-XRnlbKMTmktBkjCLE8/XcZFlnHvr2Ltdr1eJX4idL55/9BbORzyZEaIkBFDhFGCEWBBItsVrDxwx3gnisMitdw==", "license": "MIT", "dependencies": { - "@remix-run/router": "1.23.0" + "@remix-run/router": "1.23.2" }, "engines": { "node": ">=14.0.0" @@ -7172,13 +7172,13 @@ } }, "node_modules/react-router-dom": { - "version": "6.30.1", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.30.1.tgz", - "integrity": "sha512-llKsgOkZdbPU1Eg3zK8lCn+sjD9wMRZZPuzmdWWX5SUs8OFkN5HnFVC0u5KMeMaC9aoancFI/KoLuKPqN+hxHw==", + "version": "6.30.3", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.30.3.tgz", + "integrity": "sha512-pxPcv1AczD4vso7G4Z3TKcvlxK7g7TNt3/FNGMhfqyntocvYKj+GCatfigGDjbLozC4baguJ0ReCigoDJXb0ag==", "license": "MIT", "dependencies": { - "@remix-run/router": "1.23.0", - "react-router": "6.30.1" + "@remix-run/router": "1.23.2", + "react-router": "6.30.3" }, "engines": { "node": ">=14.0.0" diff --git a/src/components/MatrixCursor.tsx b/src/components/MatrixCursor.tsx index 01fdbe5..a9b70b7 100644 --- a/src/components/MatrixCursor.tsx +++ b/src/components/MatrixCursor.tsx @@ -74,7 +74,13 @@ const MatrixCursor = () => { document.removeEventListener('mouseenter', handleMouseEnter); document.removeEventListener('mouseleave', handleMouseLeave); document.removeEventListener('touchstart', handleTouch); - document.body.classList.remove('matrix-cursor'); + + // Only remove cursor class if no other MatrixCursor components are mounted + // This prevents the cursor from showing when exiting fullscreen + const otherCursors = document.querySelectorAll('.matrix-cursor-crosshair'); + if (otherCursors.length === 0) { + document.body.classList.remove('matrix-cursor'); + } }; }, [isTouchDevice]); diff --git a/src/components/SettingsPanel.tsx b/src/components/SettingsPanel.tsx index 569d6d4..06df7fe 100644 --- a/src/components/SettingsPanel.tsx +++ b/src/components/SettingsPanel.tsx @@ -3,6 +3,7 @@ import { motion, AnimatePresence } from 'framer-motion'; import { Settings, Monitor, Volume2, Cpu, X, Contrast, Binary, Smartphone } from 'lucide-react'; import { useSettings, MobileControlMode } from '@/contexts/SettingsContext'; import { useAchievements } from '@/contexts/AchievementsContext'; +import { useIsMobile } from '@/hooks/use-mobile'; import CryptoConsentModal from './CryptoConsentModal'; interface SettingsPanelProps { @@ -15,6 +16,7 @@ const SettingsPanel = ({ onToggleTheme, isRedTheme }: SettingsPanelProps) => { const [showCryptoModal, setShowCryptoModal] = useState(false); const { crtEnabled, setCrtEnabled, matrixEnabled, setMatrixEnabled, soundEnabled, setSoundEnabled, cryptoConsent, playSound, mobileControlMode, setMobileControlMode } = useSettings(); const { unlockAchievement } = useAchievements(); + const isMobile = useIsMobile(); const handleToggle = (setter: (value: boolean) => void, currentValue: boolean, achievementId?: string) => { playSound('click'); @@ -156,18 +158,20 @@ const SettingsPanel = ({ onToggleTheme, isRedTheme }: SettingsPanelProps) => { {/* Mobile Controls Mode */} -
-
- - Mobile Controls + {isMobile && ( +
+
+ + Game Controls (for touch devices) +
+
- -
+ )}
diff --git a/src/pages/Snake.tsx b/src/pages/Snake.tsx index 7026fc1..c9f42c2 100644 --- a/src/pages/Snake.tsx +++ b/src/pages/Snake.tsx @@ -568,7 +568,7 @@ const Snake = () => {

- Snake {gameMode === '2p' && 2P} + Snake {gameMode === '2p' && 2P}