diff --git a/apps/macos/Sources/OpenClaw/VoiceWakeOverlayController+Window.swift b/apps/macos/Sources/OpenClaw/VoiceWakeOverlayController+Window.swift index 23133811e80e..39f667cc2741 100644 --- a/apps/macos/Sources/OpenClaw/VoiceWakeOverlayController+Window.swift +++ b/apps/macos/Sources/OpenClaw/VoiceWakeOverlayController+Window.swift @@ -92,7 +92,13 @@ extension VoiceWakeOverlayController { let contentHeight = ceil(used.height + (textInset.height * 2)) let total = contentHeight + self.verticalPadding * 2 - self.model.isOverflowing = total > self.maxHeight + // Defer the overflow state mutation to break the SwiftUI onChange → measuredHeight → + // isOverflowing → re-render → onChange synchronous render loop (fixes #43480). + let overflowing = total > self.maxHeight + DispatchQueue.main.async { [weak self] in + guard let self, self.model.isOverflowing != overflowing else { return } + self.model.isOverflowing = overflowing + } return max(self.minHeight, min(total, self.maxHeight)) }