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