diff --git a/apps/.i18n/native-source.json b/apps/.i18n/native-source.json index e483ccdd475c..87df3b3b9ac9 100644 --- a/apps/.i18n/native-source.json +++ b/apps/.i18n/native-source.json @@ -30667,7 +30667,7 @@ }, { "kind": "ui-call", - "line": 33, + "line": 44, "path": "apps/macos/Sources/OpenClaw/SessionMenuLabelView.swift", "source": "\\(self.row.tokens.contextSummaryShort) · \\(self.row.ageText)", "surface": "apple", @@ -32811,7 +32811,7 @@ }, { "kind": "ui-call", - "line": 855, + "line": 866, "path": "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatMessageViews.swift", "source": "Running tools…", "surface": "apple", diff --git a/apps/macos/Sources/OpenClaw/SessionMenuLabelView.swift b/apps/macos/Sources/OpenClaw/SessionMenuLabelView.swift index a1a14dcce660..fd1766f0e7f2 100644 --- a/apps/macos/Sources/OpenClaw/SessionMenuLabelView.swift +++ b/apps/macos/Sources/OpenClaw/SessionMenuLabelView.swift @@ -1,9 +1,20 @@ import SwiftUI -extension EnvironmentValues { - @Entry var menuItemHighlighted: Bool = false +// Keep this explicit for SwiftPM toolchains where SwiftUI macro plugins are unavailable. +// swiftformat:disable environmentEntry +private struct MenuItemHighlightedKey: EnvironmentKey { + static let defaultValue = false } +extension EnvironmentValues { + var menuItemHighlighted: Bool { + get { self[MenuItemHighlightedKey.self] } + set { self[MenuItemHighlightedKey.self] = newValue } + } +} + +// swiftformat:enable environmentEntry + struct SessionMenuLabelView: View { let row: SessionRow let width: CGFloat diff --git a/apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatMessageViews.swift b/apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatMessageViews.swift index dc0ab101017a..057d020a2568 100644 --- a/apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatMessageViews.swift +++ b/apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatMessageViews.swift @@ -773,12 +773,23 @@ extension ChatTypingIndicatorBubble: @MainActor Equatable { } } +// Keep this explicit for SwiftPM toolchains where SwiftUI macro plugins are unavailable. +// swiftformat:disable environmentEntry +private struct OpenClawAssistantBubblesInCleanChromeKey: EnvironmentKey { + static let defaultValue = false +} + extension EnvironmentValues { /// Clients that want iMessage-style assistant bubbles in the clean chrome /// (the iOS app) opt in; the default keeps the plain clean look elsewhere. - @Entry public var openClawAssistantBubblesInCleanChrome: Bool = false + public var openClawAssistantBubblesInCleanChrome: Bool { + get { self[OpenClawAssistantBubblesInCleanChromeKey.self] } + set { self[OpenClawAssistantBubblesInCleanChromeKey.self] = newValue } + } } +// swiftformat:enable environmentEntry + private struct AssistantBubbleContainerStyle: ViewModifier { let isClean: Bool let cornerRadius: CGFloat diff --git a/apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatView+Previews.swift b/apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatView+Previews.swift index f56ec9bba1b5..4c4b45823a53 100644 --- a/apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatView+Previews.swift +++ b/apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatView+Previews.swift @@ -207,6 +207,7 @@ private struct OpenClawChatPreviewTransport: OpenClawChatTransport { } } +#if os(iOS) #Preview("Chat") { OpenClawChatPreview(scenario: .connected) } @@ -243,6 +244,7 @@ private struct OpenClawChatPreviewTransport: OpenClawChatTransport { markdownVariant: .standard, userAccent: OpenClawChatTheme.accent) } +#endif private struct OpenClawChatPreview: View { let scenario: OpenClawChatPreviewTransport.Scenario