fix(app): polish mac app launch chrome
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 914 B After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 323 KiB After Width: | Height: | Size: 179 KiB |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 7.6 KiB After Width: | Height: | Size: 5.5 KiB |
|
Before Width: | Height: | Size: 323 KiB After Width: | Height: | Size: 179 KiB |
|
Before Width: | Height: | Size: 1.5 MiB After Width: | Height: | Size: 790 KiB |
@ -112,22 +112,41 @@ struct HiddenWindowView: View {
|
||||
|
||||
var body: some View {
|
||||
Color.clear
|
||||
.frame(width: 64, height: 64)
|
||||
.frame(width: 1, height: 1)
|
||||
.background(HiddenWindowConfigurator())
|
||||
.onReceive(NotificationCenter.default.publisher(for: .openSettingsRequest)) { _ in
|
||||
Task { @MainActor in
|
||||
self.openSettings()
|
||||
}
|
||||
}
|
||||
.onAppear {
|
||||
// Hide this window from the dock menu and window lists
|
||||
if let window = NSApp.windows
|
||||
.first(where: { $0.identifier?.rawValue.contains("HiddenWindow") ?? false })
|
||||
{
|
||||
window.isExcludedFromWindowsMenu = true
|
||||
window.title = "" // Remove title to ensure it doesn't show anywhere
|
||||
window.orderOut(nil)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private struct HiddenWindowConfigurator: NSViewRepresentable {
|
||||
func makeNSView(context _: Context) -> NSView {
|
||||
let view = NSView(frame: .zero)
|
||||
DispatchQueue.main.async {
|
||||
self.configureWindow(for: view)
|
||||
}
|
||||
return view
|
||||
}
|
||||
|
||||
func updateNSView(_ nsView: NSView, context _: Context) {
|
||||
DispatchQueue.main.async {
|
||||
self.configureWindow(for: nsView)
|
||||
}
|
||||
}
|
||||
|
||||
private func configureWindow(for view: NSView) {
|
||||
guard let window = view.window else { return }
|
||||
|
||||
window.identifier = NSUserInterfaceItemIdentifier("hidden-settings-helper")
|
||||
window.title = ""
|
||||
window.isExcludedFromWindowsMenu = true
|
||||
window.alphaValue = 0
|
||||
window.ignoresMouseEvents = true
|
||||
window.collectionBehavior.insert(.transient)
|
||||
window.orderOut(nil)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -7,6 +7,7 @@
|
||||
- Added docs-site agent metadata, social preview assets, and security discovery files, with GitHub links moved to the OpenClaw-owned repository. Thanks @williamclay8 for #115.
|
||||
- Release automation now builds and uploads the signed, notarized Peekaboo.app zip by default, updates Sparkle appcast metadata, and accepts one-line App Store Connect API keys for notarization.
|
||||
- Refined the macOS Settings window, menu bar popover header, and Playground chrome with denser native layout, clearer controls, and less debug noise.
|
||||
- Fixed the macOS app's invisible settings helper window and refreshed the app icon artwork so Dock no longer shows a stray blank window or white icon backing.
|
||||
|
||||
## [3.0.0] - 2026-05-09
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 790 KiB |