From 9121fda1c4fce846545ba89bb7b2b8ff92a2533a Mon Sep 17 00:00:00 2001 From: ralist Date: Tue, 31 Mar 2026 14:37:18 +0400 Subject: [PATCH] fix(v3): enable server mode build on macOS (darwin) Server mode (`-tags server`) fails to compile on macOS because: 1. Most darwin-specific `.go` and `.m` files lack the `!server` build constraint, causing symbol redeclaration conflicts with the server stubs in `application_server.go`. 2. `BrowserWindow` and `serverWebviewWindow` are missing the `attachModal`/`AttachModal` methods added to the `Window` and `webviewWindowImpl` interfaces, causing interface satisfaction errors. This was not caught because server mode was developed and tested on Linux, where all platform files already had `!server` constraints. Changes: - Add `&& !server` to build constraints in 20 darwin files (14 .go + 6 .m) - Add no-op `AttachModal` to `BrowserWindow` (Window interface) - Add no-op `attachModal` to `serverWebviewWindow` (webviewWindowImpl interface) Tested: full Wails application (30+ services, 110+ event types) builds and runs successfully in server mode on macOS arm64, serving the complete UI in a browser with working IPC. --- v3/pkg/application/application_darwin_delegate.m | 2 +- v3/pkg/application/application_server.go | 1 + v3/pkg/application/browser_window.go | 1 + v3/pkg/application/clipboard_darwin.go | 2 +- v3/pkg/application/dialogs_darwin.go | 2 +- v3/pkg/application/dialogs_darwin_delegate.m | 2 +- v3/pkg/application/events_common_darwin.go | 2 +- v3/pkg/application/keys_darwin.go | 2 +- v3/pkg/application/mainthread_darwin.go | 2 +- v3/pkg/application/menuitem_darwin.go | 2 +- v3/pkg/application/menuitem_darwin.m | 2 +- v3/pkg/application/menuitem_selectors_darwin.go | 2 +- v3/pkg/application/screen_darwin.go | 2 +- v3/pkg/application/single_instance_darwin.go | 2 +- v3/pkg/application/systemtray_darwin.go | 2 +- v3/pkg/application/systemtray_darwin.m | 2 +- v3/pkg/application/webview_window_close_darwin.go | 2 +- v3/pkg/application/webview_window_darwin.go | 2 +- v3/pkg/application/webview_window_darwin.m | 2 +- v3/pkg/application/webview_window_darwin_dev.go | 2 +- v3/pkg/application/webview_window_darwin_drag.m | 2 +- v3/pkg/application/webview_window_darwin_production.go | 2 +- 22 files changed, 22 insertions(+), 20 deletions(-) diff --git a/v3/pkg/application/application_darwin_delegate.m b/v3/pkg/application/application_darwin_delegate.m index 6b33c142197..a03242437cf 100644 --- a/v3/pkg/application/application_darwin_delegate.m +++ b/v3/pkg/application/application_darwin_delegate.m @@ -1,4 +1,4 @@ -//go:build darwin && !ios +//go:build darwin && !ios && !server #import "application_darwin_delegate.h" #import "../events/events_darwin.h" #import // For Apple Event constants diff --git a/v3/pkg/application/application_server.go b/v3/pkg/application/application_server.go index 41059242f3c..eb8125ef4f2 100644 --- a/v3/pkg/application/application_server.go +++ b/v3/pkg/application/application_server.go @@ -551,4 +551,5 @@ func (w *serverWebviewWindow) hideMenuBar() {} func (w *serverWebviewWindow) toggleMenuBar() {} func (w *serverWebviewWindow) setMenu(menu *Menu) {} func (w *serverWebviewWindow) snapAssist() {} +func (w *serverWebviewWindow) attachModal(modalWindow *WebviewWindow) {} func (w *serverWebviewWindow) setContentProtection(enabled bool) {} diff --git a/v3/pkg/application/browser_window.go b/v3/pkg/application/browser_window.go index 5d3749db04d..a1e3d847a1e 100644 --- a/v3/pkg/application/browser_window.go +++ b/v3/pkg/application/browser_window.go @@ -129,6 +129,7 @@ func (b *BrowserWindow) ZoomOut() {} func (b *BrowserWindow) ZoomReset() Window { return b } func (b *BrowserWindow) SetMenu(menu *Menu) {} func (b *BrowserWindow) SnapAssist() {} +func (b *BrowserWindow) AttachModal(modalWindow Window) {} func (b *BrowserWindow) SetContentProtection(protection bool) Window { return b } func (b *BrowserWindow) NativeWindow() unsafe.Pointer { return nil } func (b *BrowserWindow) SetEnabled(enabled bool) {} diff --git a/v3/pkg/application/clipboard_darwin.go b/v3/pkg/application/clipboard_darwin.go index 545305913ce..41bb14523f8 100644 --- a/v3/pkg/application/clipboard_darwin.go +++ b/v3/pkg/application/clipboard_darwin.go @@ -1,4 +1,4 @@ -//go:build darwin && !ios +//go:build darwin && !ios && !server package application diff --git a/v3/pkg/application/dialogs_darwin.go b/v3/pkg/application/dialogs_darwin.go index 5ed6f4ab649..feeefc5f0eb 100644 --- a/v3/pkg/application/dialogs_darwin.go +++ b/v3/pkg/application/dialogs_darwin.go @@ -1,4 +1,4 @@ -//go:build darwin && !ios +//go:build darwin && !ios && !server package application diff --git a/v3/pkg/application/dialogs_darwin_delegate.m b/v3/pkg/application/dialogs_darwin_delegate.m index 1f26b550708..5469fa69a1f 100644 --- a/v3/pkg/application/dialogs_darwin_delegate.m +++ b/v3/pkg/application/dialogs_darwin_delegate.m @@ -1,4 +1,4 @@ -//go:build darwin && !ios +//go:build darwin && !ios && !server #import "dialogs_darwin_delegate.h" diff --git a/v3/pkg/application/events_common_darwin.go b/v3/pkg/application/events_common_darwin.go index 8bc3a8af7d2..5fe8858b1d8 100644 --- a/v3/pkg/application/events_common_darwin.go +++ b/v3/pkg/application/events_common_darwin.go @@ -1,4 +1,4 @@ -//go:build darwin && !ios +//go:build darwin && !ios && !server package application diff --git a/v3/pkg/application/keys_darwin.go b/v3/pkg/application/keys_darwin.go index c76db0c5d60..0fc98b36cf1 100644 --- a/v3/pkg/application/keys_darwin.go +++ b/v3/pkg/application/keys_darwin.go @@ -1,4 +1,4 @@ -//go:build darwin && !ios +//go:build darwin && !ios && !server package application diff --git a/v3/pkg/application/mainthread_darwin.go b/v3/pkg/application/mainthread_darwin.go index 5e7e32c670d..b554bd2fbb7 100644 --- a/v3/pkg/application/mainthread_darwin.go +++ b/v3/pkg/application/mainthread_darwin.go @@ -1,4 +1,4 @@ -//go:build darwin && !ios +//go:build darwin && !ios && !server package application diff --git a/v3/pkg/application/menuitem_darwin.go b/v3/pkg/application/menuitem_darwin.go index 953a73804f0..cfbd05d4fb5 100644 --- a/v3/pkg/application/menuitem_darwin.go +++ b/v3/pkg/application/menuitem_darwin.go @@ -1,4 +1,4 @@ -//go:build darwin && !ios +//go:build darwin && !ios && !server package application diff --git a/v3/pkg/application/menuitem_darwin.m b/v3/pkg/application/menuitem_darwin.m index 5eeb9707d88..a8a77910e09 100644 --- a/v3/pkg/application/menuitem_darwin.m +++ b/v3/pkg/application/menuitem_darwin.m @@ -1,4 +1,4 @@ -//go:build darwin && !ios +//go:build darwin && !ios && !server #import diff --git a/v3/pkg/application/menuitem_selectors_darwin.go b/v3/pkg/application/menuitem_selectors_darwin.go index 3fd0018972e..cf756cc6e9a 100644 --- a/v3/pkg/application/menuitem_selectors_darwin.go +++ b/v3/pkg/application/menuitem_selectors_darwin.go @@ -1,6 +1,6 @@ // File: v3/pkg/application/menuitem_selectors_darwin.go -//go:build darwin +//go:build darwin && !server package application diff --git a/v3/pkg/application/screen_darwin.go b/v3/pkg/application/screen_darwin.go index ba9859ff0ec..cfb815fce72 100644 --- a/v3/pkg/application/screen_darwin.go +++ b/v3/pkg/application/screen_darwin.go @@ -1,4 +1,4 @@ -//go:build darwin && !ios +//go:build darwin && !ios && !server package application diff --git a/v3/pkg/application/single_instance_darwin.go b/v3/pkg/application/single_instance_darwin.go index 546bf725998..58540dd970a 100644 --- a/v3/pkg/application/single_instance_darwin.go +++ b/v3/pkg/application/single_instance_darwin.go @@ -1,4 +1,4 @@ -//go:build darwin && !ios +//go:build darwin && !ios && !server package application diff --git a/v3/pkg/application/systemtray_darwin.go b/v3/pkg/application/systemtray_darwin.go index 51804b86d3e..1c86301409c 100644 --- a/v3/pkg/application/systemtray_darwin.go +++ b/v3/pkg/application/systemtray_darwin.go @@ -1,4 +1,4 @@ -//go:build darwin && !ios +//go:build darwin && !ios && !server package application diff --git a/v3/pkg/application/systemtray_darwin.m b/v3/pkg/application/systemtray_darwin.m index 31b7ac62756..5c8dfbe74ad 100644 --- a/v3/pkg/application/systemtray_darwin.m +++ b/v3/pkg/application/systemtray_darwin.m @@ -1,4 +1,4 @@ -//go:build darwin && !ios +//go:build darwin && !ios && !server #include "Cocoa/Cocoa.h" #include "menuitem_darwin.h" diff --git a/v3/pkg/application/webview_window_close_darwin.go b/v3/pkg/application/webview_window_close_darwin.go index 34950a7dcf6..bec0b40e725 100644 --- a/v3/pkg/application/webview_window_close_darwin.go +++ b/v3/pkg/application/webview_window_close_darwin.go @@ -1,4 +1,4 @@ -//go:build darwin && !ios +//go:build darwin && !ios && !server package application diff --git a/v3/pkg/application/webview_window_darwin.go b/v3/pkg/application/webview_window_darwin.go index 14fef21dafd..f9fd372db74 100644 --- a/v3/pkg/application/webview_window_darwin.go +++ b/v3/pkg/application/webview_window_darwin.go @@ -1,4 +1,4 @@ -//go:build darwin && !ios +//go:build darwin && !ios && !server package application diff --git a/v3/pkg/application/webview_window_darwin.m b/v3/pkg/application/webview_window_darwin.m index 48130a5627e..104e3753052 100644 --- a/v3/pkg/application/webview_window_darwin.m +++ b/v3/pkg/application/webview_window_darwin.m @@ -1,4 +1,4 @@ -//go:build darwin && !ios +//go:build darwin && !ios && !server #import #import #import diff --git a/v3/pkg/application/webview_window_darwin_dev.go b/v3/pkg/application/webview_window_darwin_dev.go index 76dd9706a52..cc563347577 100644 --- a/v3/pkg/application/webview_window_darwin_dev.go +++ b/v3/pkg/application/webview_window_darwin_dev.go @@ -1,4 +1,4 @@ -//go:build darwin && !ios && (!production || devtools) +//go:build darwin && !ios && !server && (!production || devtools) package application diff --git a/v3/pkg/application/webview_window_darwin_drag.m b/v3/pkg/application/webview_window_darwin_drag.m index fb185ef98b8..3dc2cf9ea1f 100644 --- a/v3/pkg/application/webview_window_darwin_drag.m +++ b/v3/pkg/application/webview_window_darwin_drag.m @@ -1,4 +1,4 @@ -//go:build darwin && !ios +//go:build darwin && !ios && !server #import #import diff --git a/v3/pkg/application/webview_window_darwin_production.go b/v3/pkg/application/webview_window_darwin_production.go index 96e2de74ce9..9db3983125f 100644 --- a/v3/pkg/application/webview_window_darwin_production.go +++ b/v3/pkg/application/webview_window_darwin_production.go @@ -1,4 +1,4 @@ -//go:build darwin && production && !devtools +//go:build darwin && production && !devtools && !server package application