From 4668a371c1b8e70dd70f3ea7b05995db56a0f341 Mon Sep 17 00:00:00 2001 From: Sahil Mishra Date: Sun, 14 Jun 2026 15:30:08 -0400 Subject: [PATCH 1/4] overrode function syncAppearance in order to update the tab bar as well --- .../Window Styles/TitlebarTabsTahoeTerminalWindow.swift | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/macos/Sources/Features/Terminal/Window Styles/TitlebarTabsTahoeTerminalWindow.swift b/macos/Sources/Features/Terminal/Window Styles/TitlebarTabsTahoeTerminalWindow.swift index 6cbd891bf..3f6f0d600 100644 --- a/macos/Sources/Features/Terminal/Window Styles/TitlebarTabsTahoeTerminalWindow.swift +++ b/macos/Sources/Features/Terminal/Window Styles/TitlebarTabsTahoeTerminalWindow.swift @@ -51,6 +51,11 @@ class TitlebarTabsTahoeTerminalWindow: TransparentTitlebarTerminalWindow, NSTool self.toolbar = toolbar toolbarStyle = .unifiedCompact } + override func syncAppearance(_ surfaceConfig: Ghostty.SurfaceView.DerivedConfig) { + super.syncAppearance(surfaceConfig) + setupTabBar() + } + override func becomeMain() { super.becomeMain() From 749d45490a56b5719174b670cf02395bc2e46e7f Mon Sep 17 00:00:00 2001 From: Sahil Mishra Date: Mon, 15 Jun 2026 10:04:54 -0400 Subject: [PATCH 2/4] fix swiftlint --- .../Terminal/Window Styles/TitlebarTabsTahoeTerminalWindow.swift | 1 - 1 file changed, 1 deletion(-) diff --git a/macos/Sources/Features/Terminal/Window Styles/TitlebarTabsTahoeTerminalWindow.swift b/macos/Sources/Features/Terminal/Window Styles/TitlebarTabsTahoeTerminalWindow.swift index 3f6f0d600..c6c073f72 100644 --- a/macos/Sources/Features/Terminal/Window Styles/TitlebarTabsTahoeTerminalWindow.swift +++ b/macos/Sources/Features/Terminal/Window Styles/TitlebarTabsTahoeTerminalWindow.swift @@ -56,7 +56,6 @@ class TitlebarTabsTahoeTerminalWindow: TransparentTitlebarTerminalWindow, NSTool setupTabBar() } - override func becomeMain() { super.becomeMain() From c3ceb55f5faf5dfc227c572ffd1e8004a03485fb Mon Sep 17 00:00:00 2001 From: Sahil Mishra Date: Mon, 15 Jun 2026 10:12:44 -0400 Subject: [PATCH 3/4] added comment explaining fix --- .../Terminal/Window Styles/TitlebarTabsTahoeTerminalWindow.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/macos/Sources/Features/Terminal/Window Styles/TitlebarTabsTahoeTerminalWindow.swift b/macos/Sources/Features/Terminal/Window Styles/TitlebarTabsTahoeTerminalWindow.swift index c6c073f72..f0b295dab 100644 --- a/macos/Sources/Features/Terminal/Window Styles/TitlebarTabsTahoeTerminalWindow.swift +++ b/macos/Sources/Features/Terminal/Window Styles/TitlebarTabsTahoeTerminalWindow.swift @@ -51,6 +51,7 @@ class TitlebarTabsTahoeTerminalWindow: TransparentTitlebarTerminalWindow, NSTool self.toolbar = toolbar toolbarStyle = .unifiedCompact } + // Called after new tab finishes adjusting and setupTabBar is called in order to prevent Tab Bar hiding/size bug that occurs with some interactions with Mac UI override func syncAppearance(_ surfaceConfig: Ghostty.SurfaceView.DerivedConfig) { super.syncAppearance(surfaceConfig) setupTabBar() From 8e8a8dc113423be0d733fc0f7a0b07b403c1ee94 Mon Sep 17 00:00:00 2001 From: Sahil Mishra Date: Mon, 15 Jun 2026 20:51:35 -0400 Subject: [PATCH 4/4] added async fix in order to resolve first second tab issue --- .../Window Styles/TitlebarTabsTahoeTerminalWindow.swift | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/macos/Sources/Features/Terminal/Window Styles/TitlebarTabsTahoeTerminalWindow.swift b/macos/Sources/Features/Terminal/Window Styles/TitlebarTabsTahoeTerminalWindow.swift index f0b295dab..9c98a2719 100644 --- a/macos/Sources/Features/Terminal/Window Styles/TitlebarTabsTahoeTerminalWindow.swift +++ b/macos/Sources/Features/Terminal/Window Styles/TitlebarTabsTahoeTerminalWindow.swift @@ -54,7 +54,12 @@ class TitlebarTabsTahoeTerminalWindow: TransparentTitlebarTerminalWindow, NSTool // Called after new tab finishes adjusting and setupTabBar is called in order to prevent Tab Bar hiding/size bug that occurs with some interactions with Mac UI override func syncAppearance(_ surfaceConfig: Ghostty.SurfaceView.DerivedConfig) { super.syncAppearance(surfaceConfig) - setupTabBar() + DispatchQueue.main.async { + // HACK: wait a tick before doing anything, to avoid edge cases during startup... :/ + // If we don't do this then on launch windows with restored state with tabs will end + // up with messed up tab bars that don't show all tabs. + self.setupTabBar() + } } override func becomeMain() {