diff --git a/src/app/folder/layout.tsx b/src/app/folder/layout.tsx
index 86c8e5c..96cc0b8 100644
--- a/src/app/folder/layout.tsx
+++ b/src/app/folder/layout.tsx
@@ -280,14 +280,22 @@ function MobileFolderWorkspaceShell({
}: {
children: React.ReactNode
}) {
- const { isOpen: sidebarOpen, toggle: toggleSidebar } = useSidebarContext()
- const { isOpen: auxOpen, toggle: toggleAux } = useAuxPanelContext()
+ const {
+ isOpen: sidebarOpen,
+ restored: sidebarRestored,
+ toggle: toggleSidebar,
+ } = useSidebarContext()
+ const {
+ isOpen: auxOpen,
+ restored: auxRestored,
+ toggle: toggleAux,
+ } = useAuxPanelContext()
const { isOpen: terminalOpen, toggle: toggleTerminal } = useTerminalContext()
return (
{/* Sidebar Sheet (left) */}
-
+
{/* Aux panel Sheet (right) */}
-
+
{
const stored = loadPersistedPanelState(storageKey)
+ const isMobileViewport = window.innerWidth < 768
+ const defaultOpen = isMobileViewport ? false : DEFAULT_IS_OPEN
// Hydrate from localStorage after mount to keep SSR/CSR markup consistent.
// eslint-disable-next-line react-hooks/set-state-in-effect
- setIsOpen(stored?.isOpen ?? DEFAULT_IS_OPEN)
+ setIsOpen(isMobileViewport ? false : (stored?.isOpen ?? defaultOpen))
setWidthState(clampWidth(stored?.width ?? DEFAULT_WIDTH))
setRestored(true)
}, [storageKey])
@@ -109,6 +112,7 @@ export function AuxPanelProvider({
const value = useMemo(
() => ({
isOpen,
+ restored,
width,
minWidth: MIN_WIDTH,
maxWidth: MAX_WIDTH,
@@ -123,6 +127,7 @@ export function AuxPanelProvider({
}),
[
isOpen,
+ restored,
width,
activeTab,
toggle,
diff --git a/src/contexts/sidebar-context.tsx b/src/contexts/sidebar-context.tsx
index 2d76bfc..a75233b 100644
--- a/src/contexts/sidebar-context.tsx
+++ b/src/contexts/sidebar-context.tsx
@@ -21,6 +21,7 @@ const DEFAULT_IS_OPEN = true
interface SidebarContextValue {
isOpen: boolean
+ restored: boolean
width: number
minWidth: number
maxWidth: number
@@ -82,13 +83,14 @@ export function SidebarProvider({ children, folderId }: SidebarProviderProps) {
const value = useMemo(
() => ({
isOpen,
+ restored,
width,
minWidth: MIN_WIDTH,
maxWidth: MAX_WIDTH,
toggle,
setWidth,
}),
- [isOpen, width, toggle, setWidth]
+ [isOpen, restored, width, toggle, setWidth]
)
return (