From 491ae9c199321add0a19cfb24350b4e9da11e37b Mon Sep 17 00:00:00 2001 From: 3dtours Date: Mon, 12 Oct 2026 11:03:27 +0700 Subject: [PATCH] feat(library): a maximised window leaves the phone frame --- docker/frontend/src/Library.tsx | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docker/frontend/src/Library.tsx b/docker/frontend/src/Library.tsx index 7f9238e..f46e79c 100644 --- a/docker/frontend/src/Library.tsx +++ b/docker/frontend/src/Library.tsx @@ -373,6 +373,18 @@ function Catalogue({ admin, user }: { admin: boolean; user: User | null }) { const detectedMobile = useIsMobile(860); const isMobile = forceView === 'mobile' || (forceView === 'auto' && detectedMobile); + // The phone frame belongs to a narrow window. A desktop browser that drags its + // title bar to the top of the screen, or presses maximise, is a window with the + // room for the desktop layout again — so the frame is let go, and only there: + // a phone never widens past the breakpoint, and a window still narrow keeps it. + useEffect(() => { + const onResize = () => { + if (forceView === 'mobile' && window.innerWidth > 860) setForceView('auto'); + }; + window.addEventListener('resize', onResize); + return () => window.removeEventListener('resize', onResize); + }, [forceView]); + const [folders, setFolders] = useState(() => cachedFolders()); const [ready, setReady] = useState>(new Set()); // The Immich servers this account has saved, and the two dialogs that write