From 954cdc7bc81fcb285d008c0ad08827ab13435cce Mon Sep 17 00:00:00 2001 From: Luke Parker <10430890+Hona@users.noreply.github.com> Date: Thu, 27 Aug 2026 08:18:05 +1000 Subject: [PATCH] fix(desktop): restore compact Windows titlebar spacing (#45397) --- packages/app/src/home/route.tsx | 2 +- packages/app/src/new-session/screen.tsx | 2 +- packages/app/src/session/route.tsx | 6 ++---- packages/app/src/session/screen.tsx | 2 +- packages/app/src/session/session-frame.tsx | 5 ++++- packages/app/src/shell/routes/routes.tsx | 2 +- packages/app/src/shell/shell.tsx | 9 ++++++++- packages/app/src/shell/titlebar/titlebar.tsx | 3 ++- packages/desktop/src/main/windows/appearance.ts | 3 ++- 9 files changed, 22 insertions(+), 12 deletions(-) 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