From c4628b24ad55965508d40cd2e366b2464fdc3805 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 31 Jan 2026 06:06:17 +0000 Subject: [PATCH 1/3] Initial plan From f05b28de6be0f014c491a9b04e8498afa54b6db4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 31 Jan 2026 06:09:52 +0000 Subject: [PATCH 2/3] Fix all ESLint errors and warnings - HomeClient.tsx: Replaced useEffect setState with derived state - HeroScene.tsx: Removed unused isMobile parameter - HeroScene.tsx: Added shadowsEnabled to useLayoutEffect dependencies - HeroScene.tsx: Removed unused onFocusAction parameter Co-authored-by: Kinin-Code-Offical <125186556+Kinin-Code-Offical@users.noreply.github.com> --- src/components/HomeClient.tsx | 8 +------- src/components/hero/HeroScene.tsx | 5 +---- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/src/components/HomeClient.tsx b/src/components/HomeClient.tsx index e78e977..5c8dfd5 100644 --- a/src/components/HomeClient.tsx +++ b/src/components/HomeClient.tsx @@ -560,7 +560,7 @@ export default function HomeClient({ content }: HomeClientProps) { }); }, []); - const showVirtualKeys = isMobile || virtualKeysOpen; + const showVirtualKeys = isMobile || (virtualKeysOpen && dockKeysVisible); const applyLanguage = (lang: "tr" | "en") => { setLanguage(lang); @@ -656,12 +656,6 @@ export default function HomeClient({ content }: HomeClientProps) { mobileModifiersRef.current = mobileModifiers; }, [mobileModifiers]); - useEffect(() => { - if (!dockKeysVisible && virtualKeysOpen) { - setVirtualKeysOpen(false); - } - }, [dockKeysVisible, virtualKeysOpen]); - useEffect(() => { screenAspectRef.current = screenAspect; }, [screenAspect]); diff --git a/src/components/hero/HeroScene.tsx b/src/components/hero/HeroScene.tsx index b17d92b..15f43a2 100644 --- a/src/components/hero/HeroScene.tsx +++ b/src/components/hero/HeroScene.tsx @@ -292,7 +292,6 @@ function ComputerModel({ onScreenMeshAction, onCameraRig, onContentReady, - isMobile, usePhoneRig, shadowsEnabled, allowTerminalTexture, @@ -307,7 +306,6 @@ function ComputerModel({ onScreenMeshAction?: (mesh: Mesh | null) => void; onCameraRig?: (rig: CameraRig) => void; onContentReady?: () => void; - isMobile: boolean; usePhoneRig: boolean; shadowsEnabled: boolean; allowTerminalTexture: boolean; @@ -788,6 +786,7 @@ function ComputerModel({ scene, setPlaneColor, usePhoneRig, + shadowsEnabled, ]); useEffect(() => { @@ -1113,7 +1112,6 @@ function SceneContent({ scrollProgressRef, noteTexts, onDebugAction, - onFocusAction, onScreenAspectAction, onReadyAction, interactionActive, @@ -1627,7 +1625,6 @@ function SceneContent({ onScreenMeshAction={handleScreenMesh} onCameraRig={handleCameraRig} onContentReady={handleContentReady} - isMobile={isMobile} usePhoneRig={usePhoneRig} shadowsEnabled={shadowsEnabled} allowTerminalTexture={true} From 177d3e27a8b08a47b51c2817ed0e33230e5f226a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 31 Jan 2026 06:13:13 +0000 Subject: [PATCH 3/3] Update fix for HomeClient.tsx setState issue Moved virtualKeysOpen state declaration before scroll callback and clear it directly in the event handler when dock becomes hidden, preserving original behavior while avoiding cascading renders Co-authored-by: Kinin-Code-Offical <125186556+Kinin-Code-Offical@users.noreply.github.com> --- src/components/HomeClient.tsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/components/HomeClient.tsx b/src/components/HomeClient.tsx index 5c8dfd5..a45ee07 100644 --- a/src/components/HomeClient.tsx +++ b/src/components/HomeClient.tsx @@ -424,6 +424,7 @@ export default function HomeClient({ content }: HomeClientProps) { ); const [dockKeysVisible, setDockKeysVisible] = useState(true); const dockKeysVisibleRef = useRef(true); + const [virtualKeysOpen, setVirtualKeysOpen] = useState(false); const scrollProgressRef = useSmoothScrollProgress(heroRef, (value) => { if (!shellRef.current) { return; @@ -462,6 +463,10 @@ export default function HomeClient({ content }: HomeClientProps) { if (dockKeysVisibleRef.current !== nextDockKeysVisible) { dockKeysVisibleRef.current = nextDockKeysVisible; setDockKeysVisible(nextDockKeysVisible); + // Close virtual keys when dock becomes hidden + if (!nextDockKeysVisible) { + setVirtualKeysOpen(false); + } } }); const isMobile = useMediaQuery("(max-width: 900px)"); @@ -501,7 +506,6 @@ export default function HomeClient({ content }: HomeClientProps) { shift: false, alt: false, }); - const [virtualKeysOpen, setVirtualKeysOpen] = useState(false); const mobileModifiersRef = useRef(mobileModifiers); const handleSceneReady = useCallback(() => { setSceneReady(true); @@ -560,7 +564,7 @@ export default function HomeClient({ content }: HomeClientProps) { }); }, []); - const showVirtualKeys = isMobile || (virtualKeysOpen && dockKeysVisible); + const showVirtualKeys = isMobile || virtualKeysOpen; const applyLanguage = (lang: "tr" | "en") => { setLanguage(lang);