fix(macos): resolve webchat panel corner clipping (#22458)

Co-authored-by: apethree <3081182+apethree@users.noreply.github.com>
Co-authored-by: agisilaos <3073709+agisilaos@users.noreply.github.com>
This commit is contained in:
Peter Steinberger
2026-02-25 00:14:51 +00:00
parent 57c9a18180
commit 16b228e4a6
2 changed files with 11 additions and 1 deletions

View File

@@ -15,6 +15,7 @@ Docs: https://docs.openclaw.ai
### Fixes
- macOS/WebChat panel: fix rounded-corner clipping by using panel-specific visual-effect blending and matching corner masking on both effect and hosting layers. (#22458) Thanks @apethree and @agisilaos.
- macOS/IME input: when marked text is active, treat Return as IME candidate confirmation first in both the voice overlay composer and shared chat composer to prevent accidental sends while composing CJK text. (#25178) Thanks @bottotl.
- macOS/Voice wake routing: default forwarded voice-wake transcripts to the `webchat` channel (instead of ambiguous `last` routing) so local voice prompts stay pinned to the control chat surface unless explicitly overridden. (#25440) Thanks @chilu18.
- macOS/Gateway launch: prefer an available `openclaw` binary before pnpm/node runtime fallback when resolving local gateway commands, so local startup no longer fails on hosts with broken runtime discovery. (#25512) Thanks @chilu18.

View File

@@ -316,7 +316,12 @@ final class WebChatSwiftUIWindowController {
let controller = NSViewController()
let effectView = NSVisualEffectView()
effectView.material = .sidebar
effectView.blendingMode = .behindWindow
effectView.blendingMode = switch presentation {
case .panel:
.withinWindow
case .window:
.behindWindow
}
effectView.state = .active
effectView.wantsLayer = true
effectView.layer?.cornerCurve = .continuous
@@ -328,6 +333,7 @@ final class WebChatSwiftUIWindowController {
}
effectView.layer?.cornerRadius = cornerRadius
effectView.layer?.masksToBounds = true
effectView.layer?.backgroundColor = NSColor.clear.cgColor
effectView.translatesAutoresizingMaskIntoConstraints = true
effectView.autoresizingMask = [.width, .height]
@@ -335,6 +341,9 @@ final class WebChatSwiftUIWindowController {
hosting.view.translatesAutoresizingMaskIntoConstraints = false
hosting.view.wantsLayer = true
hosting.view.layer?.cornerCurve = .continuous
hosting.view.layer?.cornerRadius = cornerRadius
hosting.view.layer?.masksToBounds = true
hosting.view.layer?.backgroundColor = NSColor.clear.cgColor
controller.addChild(hosting)