From 5dd5c9c605feac4c72325edd8ac8c666a3763344 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Mon, 8 Dec 2025 22:56:49 +0100 Subject: [PATCH] macos: add inset margin so overlay shadow isn't clipped --- apps/macos/Sources/Clawdis/ControlChannel.swift | 2 +- apps/macos/Sources/Clawdis/VoiceWakeOverlay.swift | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/apps/macos/Sources/Clawdis/ControlChannel.swift b/apps/macos/Sources/Clawdis/ControlChannel.swift index e33928647..8c7e05b1f 100644 --- a/apps/macos/Sources/Clawdis/ControlChannel.swift +++ b/apps/macos/Sources/Clawdis/ControlChannel.swift @@ -273,7 +273,7 @@ final class ControlChannel: ObservableObject { proc.standardError = errPipe try proc.run() // Give ssh a brief moment; if it exits immediately, surface the error. - try? Task.sleep(nanoseconds: 200_000_000) // 200ms + Thread.sleep(forTimeInterval: 0.2) // 200ms if !proc.isRunning { let err = String(data: errPipe.fileHandleForReading.readDataToEndOfFile(), encoding: .utf8)?.trimmingCharacters(in: .whitespacesAndNewlines) throw ControlChannelError.sshFailed(err ?? "ssh exited") diff --git a/apps/macos/Sources/Clawdis/VoiceWakeOverlay.swift b/apps/macos/Sources/Clawdis/VoiceWakeOverlay.swift index 005066967..f8055947c 100644 --- a/apps/macos/Sources/Clawdis/VoiceWakeOverlay.swift +++ b/apps/macos/Sources/Clawdis/VoiceWakeOverlay.swift @@ -184,8 +184,9 @@ final class VoiceWakeOverlayController: ObservableObject { private func ensureWindow() { if self.window != nil { return } + let borderPad = self.closeOverflow let panel = NSPanel( - contentRect: NSRect(x: 0, y: 0, width: self.width + self.closeOverflow, height: 60 + self.closeOverflow), + contentRect: NSRect(x: 0, y: 0, width: self.width + borderPad * 2, height: 60 + borderPad * 2), styleMask: [.nonactivatingPanel, .borderless], backing: .buffered, defer: false) @@ -211,7 +212,7 @@ final class VoiceWakeOverlayController: ObservableObject { private func targetFrame() -> NSRect { guard let screen = NSScreen.main else { return .zero } let height = self.measuredHeight() - let size = NSSize(width: self.width + self.closeOverflow, height: height + self.closeOverflow) + let size = NSSize(width: self.width + self.closeOverflow * 2, height: height + self.closeOverflow * 2) let visible = screen.visibleFrame let origin = CGPoint( x: visible.maxX - size.width - self.padding, @@ -395,6 +396,8 @@ private struct VoiceWakeOverlayView: View { } .padding(.top, self.controller.closeOverflow) .padding(.leading, self.controller.closeOverflow) + .padding(.trailing, self.controller.closeOverflow) + .padding(.bottom, self.controller.closeOverflow) .onAppear { self.textFocused = false } .onChange(of: self.controller.model.text) { _, _ in self.textFocused = self.controller.model.isEditing