@@ -11,6 +11,7 @@ struct CommandCenterTab: View {
1111 @State private var defaultChatSessionEntry : OpenClawChatSessionEntry ?
1212 @State private var recentChatSessions : [ OpenClawChatSessionEntry ] = [ ]
1313 var ownsNavigationStack : Bool = true
14+ var usesNativeNavigationChrome : Bool = false
1415 var headerTitle : String = " OpenClaw "
1516 var headerLeadingAction : OpenClawSidebarHeaderAction ?
1617 var showsHeaderMark : Bool = true
@@ -57,7 +58,9 @@ struct CommandCenterTab: View {
5758 self . commandAmbientOverlay
5859 ScrollView {
5960 VStack ( alignment: . leading, spacing: 14 ) {
60- self . header
61+ if !self . usesNativeNavigationChrome {
62+ self . header
63+ }
6164 self . gatewayCard
6265 if Self . usesSplitSectionsLayout (
6366 horizontalSizeClass: self . horizontalSizeClass,
@@ -83,7 +86,19 @@ struct CommandCenterTab: View {
8386 . safeAreaPadding ( . bottom, OpenClawProMetric . bottomScrollInset)
8487 }
8588 }
86- . navigationBarHidden ( true )
89+ . navigationTitle ( self . headerTitle)
90+ . navigationBarTitleDisplayMode ( . inline)
91+ . toolbar ( self . usesNativeNavigationChrome ? . visible : . hidden, for: . navigationBar)
92+ . toolbar {
93+ if self . usesNativeNavigationChrome {
94+ ToolbarItem ( placement: . topBarTrailing) {
95+ Button ( action: self . openSettings) {
96+ Image ( systemName: " antenna.radiowaves.left.and.right " )
97+ }
98+ . accessibilityLabel ( " Gateway settings " )
99+ }
100+ }
101+ }
87102 }
88103
89104 static func usesSplitSectionsLayout(
@@ -242,7 +257,9 @@ struct CommandCenterTab: View {
242257 . buttonStyle ( . plain)
243258 } else {
244259 NavigationLink {
245- CommandSessionsScreen ( openChat: self . openChat)
260+ CommandSessionsScreen (
261+ usesNativeNavigationChrome: self . usesNativeNavigationChrome,
262+ openChat: self . openChat)
246263 } label: {
247264 CommandViewMoreRow ( )
248265 }
@@ -598,10 +615,16 @@ struct CommandSessionsScreen: View {
598615 @State private var isLoading = false
599616 @State private var loadErrorText : String ?
600617 let headerLeadingAction : OpenClawSidebarHeaderAction ?
618+ let usesNativeNavigationChrome : Bool
601619 let openChat : ( ) -> Void
602620
603- init ( headerLeadingAction: OpenClawSidebarHeaderAction ? = nil , openChat: @escaping ( ) -> Void ) {
621+ init (
622+ headerLeadingAction: OpenClawSidebarHeaderAction ? = nil ,
623+ usesNativeNavigationChrome: Bool = false ,
624+ openChat: @escaping ( ) -> Void )
625+ {
604626 self . headerLeadingAction = headerLeadingAction
627+ self . usesNativeNavigationChrome = usesNativeNavigationChrome
605628 self . openChat = openChat
606629 }
607630
@@ -610,7 +633,9 @@ struct CommandSessionsScreen: View {
610633 CommandControlBackground ( )
611634 ScrollView {
612635 VStack ( alignment: . leading, spacing: 10 ) {
613- self . header
636+ if !self . usesNativeNavigationChrome {
637+ self . header
638+ }
614639 self . sessionsPanel
615640 }
616641 . padding ( . top, 16 )
@@ -620,6 +645,7 @@ struct CommandSessionsScreen: View {
620645 }
621646 . navigationTitle ( " Sessions " )
622647 . navigationBarTitleDisplayMode ( . inline)
648+ . toolbar ( self . usesNativeNavigationChrome ? . visible : . hidden, for: . navigationBar)
623649 . task ( id: self . refreshID) {
624650 await self . refreshSessions ( )
625651 }
0 commit comments