From 201acd4e7a4ad65c8ed58847e81914899a50b13e Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Thu, 9 Jul 2026 11:41:29 +0100 Subject: [PATCH] fix(macos): keep Settings below native titlebar controls (#102663) * fix(macos): clear settings titlebar controls * chore: leave release notes to release automation --- .../OpenClaw/DashboardWindowController.swift | 5 ++++- .../DashboardWindowSmokeTests.swift | 14 ++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/apps/macos/Sources/OpenClaw/DashboardWindowController.swift b/apps/macos/Sources/OpenClaw/DashboardWindowController.swift index 2490e9582fc..9319b260818 100644 --- a/apps/macos/Sources/OpenClaw/DashboardWindowController.swift +++ b/apps/macos/Sources/OpenClaw/DashboardWindowController.swift @@ -206,7 +206,10 @@ final class DashboardWindowController: NSWindowController, WKNavigationDelegate, --openclaw-native-titlebar-height: 50px; } @media (min-width: 700px) { - html.openclaw-native-macos .sidebar-shell { + /* Both desktop navigation surfaces must clear AppKit's window controls + and drag regions or their first interactive row becomes unreachable. */ + html.openclaw-native-macos .sidebar-shell, + html.openclaw-native-macos .settings-sidebar__header { padding-top: max(14px, var(--openclaw-native-titlebar-height)) !important; } } diff --git a/apps/macos/Tests/OpenClawIPCTests/DashboardWindowSmokeTests.swift b/apps/macos/Tests/OpenClawIPCTests/DashboardWindowSmokeTests.swift index f514a7aee4c..35a5ccc0410 100644 --- a/apps/macos/Tests/OpenClawIPCTests/DashboardWindowSmokeTests.swift +++ b/apps/macos/Tests/OpenClawIPCTests/DashboardWindowSmokeTests.swift @@ -43,6 +43,20 @@ struct DashboardWindowSmokeTests { #expect(dashboardLogString(for: url) == "http://127.0.0.1:18789/control/") } + @Test func `dashboard native chrome clears both desktop sidebars`() throws { + let url = try #require(URL(string: "http://127.0.0.1:18789/control/")) + let controller = DashboardWindowController( + url: url, + auth: DashboardWindowAuth(gatewayUrl: nil, token: nil, password: nil)) + let chromeScript = try #require(controller._testUserScripts.first { + $0.source.contains("openclaw-native-macos-chrome") + }) + + #expect(chromeScript.source.contains(".sidebar-shell")) + #expect(chromeScript.source.contains(".settings-sidebar__header")) + #expect(chromeScript.source.contains("--openclaw-native-titlebar-height")) + } + @Test func `dashboard failure state opens in dashboard window`() throws { let url = try #require(URL(string: "http://127.0.0.1:18789/control/")) let controller = DashboardWindowController(