diff --git a/packages/app/src/home/route.tsx b/packages/app/src/home/route.tsx index a01764c4b1d..506078e59c5 100644 --- a/packages/app/src/home/route.tsx +++ b/packages/app/src/home/route.tsx @@ -17,7 +17,7 @@ export function Home() { return (
diff --git a/packages/app/src/new-session/screen.tsx b/packages/app/src/new-session/screen.tsx index 29028cb791b..8ae3d30a754 100644 --- a/packages/app/src/new-session/screen.tsx +++ b/packages/app/src/new-session/screen.tsx @@ -73,7 +73,7 @@ export default function NewSessionPage(props: { draftId: string }) {
{suspendUntilPromptReady()} -
+
diff --git a/packages/app/src/session/route.tsx b/packages/app/src/session/route.tsx index e1618f4e1d2..73be45a31c8 100644 --- a/packages/app/src/session/route.tsx +++ b/packages/app/src/session/route.tsx @@ -44,9 +44,7 @@ function TargetSessionSettingsCommand() { return null } -function SessionRouteErrorBoundary( - props: ParentProps<{ sessionID?: string; serverKey?: ServerConnection.Key }>, -) { +function SessionRouteErrorBoundary(props: ParentProps<{ sessionID?: string; serverKey?: ServerConnection.Key }>) { return ( ( @@ -106,7 +104,7 @@ function PendingSessionState(props: { sessionID: string }) { function SessionStatePanel(props: ParentProps) { return ( -
+
{props.children}
) diff --git a/packages/app/src/session/screen.tsx b/packages/app/src/session/screen.tsx index 3d640e76af1..ece28d4f32b 100644 --- a/packages/app/src/session/screen.tsx +++ b/packages/app/src/session/screen.tsx @@ -164,7 +164,7 @@ export function SessionScreen(props: { session: SessionModel }) { return ( <> -
+
) { return ( -
+
{props.children}
) diff --git a/packages/app/src/shell/routes/routes.tsx b/packages/app/src/shell/routes/routes.tsx index 8edc1b9c7fc..0b91a40c9e8 100644 --- a/packages/app/src/shell/routes/routes.tsx +++ b/packages/app/src/shell/routes/routes.tsx @@ -36,7 +36,7 @@ export function AppRoutes() { +
} diff --git a/packages/app/src/shell/shell.tsx b/packages/app/src/shell/shell.tsx index ea914843ce4..5e9f6b090ef 100644 --- a/packages/app/src/shell/shell.tsx +++ b/packages/app/src/shell/shell.tsx @@ -43,6 +43,13 @@ export default function Layout(props: ParentProps) { style={{ "padding-top": "env(safe-area-inset-top, 0px)", "padding-bottom": "env(safe-area-inset-bottom, 0px)", + // The native Windows titlebar already includes the gap above the content panels. + "--shell-top-inset": + platform.platform === "desktop" && + platform.os === "windows" && + !(mobile() && preferences.general.mobileTitlebarPosition() === "bottom") + ? "0px" + : "8px", }} > setState("tabsMount", element)} data-slot="vertical-tabs-sidebar" - class="relative flex min-h-0 shrink-0 flex-col bg-v2-background-bg-deep px-2.5 py-2" + class="relative flex min-h-0 shrink-0 flex-col bg-v2-background-bg-deep px-2.5 pb-2 pt-[var(--shell-top-inset,8px)]" style={{ width: `${state.tabsWidth}px` }} > (windows() ? Math.max(zoom(), minTitlebarZoom) : zoom()) const minHeight = () => { if (mac()) return `${titlebarHeight / zoom()}px` - if (windows()) return `env(titlebar-area-height, ${titlebarHeight / Math.min(titlebarZoom(), 1)}px)` + if (windows()) return `env(titlebar-area-height, ${windowsTitlebarHeight / Math.min(titlebarZoom(), 1)}px)` return undefined } const windowsControlsWidth = () => `${windowsControlsBaseWidth / Math.max(titlebarZoom(), 1)}px` diff --git a/packages/desktop/src/main/windows/appearance.ts b/packages/desktop/src/main/windows/appearance.ts index 8f60ced4435..0f6ed705867 100644 --- a/packages/desktop/src/main/windows/appearance.ts +++ b/packages/desktop/src/main/windows/appearance.ts @@ -17,7 +17,8 @@ const oc2Background = { } const titlebarThemes = new WeakMap>() const pinchZoomEnabled = new WeakMap() -const titlebarHeight = 40 +// Match the renderer's 36px titlebar plus its former 8px content inset. +const titlebarHeight = 44 const maxZoomLevel = 10 const minZoomLevel = 0.2 let backgroundColor: string | undefined