Releases: wailsapp/wails
Wails v3.0.0-alpha2.103
Wails v3 Alpha Release - v3.0.0-alpha2.103
Changed
- Move iOS and Android native features onto platform managers: call them via
application.IOS.*andapplication.Android.*(e.g.application.IOS.Haptic("medium"),application.Android.Share(payload)) instead of the oldapplication.IOS*/application.Android*free functions (#5602) - Rename mobile bridge events: cross-platform events now use the
common:*prefix (e.g.common:haptic,common:location) and platform-exclusive events useios:*/android:*(e.g.ios:backgroundTask,android:foregroundService); thenative:*prefix is no longer used (#5602)
π€ This is an automated nightly release generated from the latest changes on master.
Installation:
go install github.com/wailsapp/wails/v3/cmd/wails3@v3.0.0-alpha2.103Wails v3.0.0-alpha.102
Wails v3 Alpha Release - v3.0.0-alpha.102
Added
- Add experimental
wails3 setupwizard for interactive project setup and dependency checking - Add
--jsonflag towails3 doctorfor machine-readable output - Add signing status section to
wails3 doctorcommand
Fixed
- Fix npm detection on Linux to check PATH in addition to package manager
π€ This is an automated nightly release generated from the latest changes on master.
Installation:
go install github.com/wailsapp/wails/v3/cmd/wails3@v3.0.0-alpha.102Wails v3.0.0-alpha.101
Wails v3 Alpha Release - v3.0.0-alpha.101
Added
- iOS: native message dialogs (UIAlertController) and open file/files/directory dialogs (UIDocumentPickerViewController); save dialogs return an explicit error
- iOS: clipboard support via UIPasteboard
- iOS: real screen metrics via UIScreen (points, pixels, scale, safe-area work area)
- iOS: device builds (
IOS_PLATFORM=device), code-signing identity / provisioning profile / entitlements support,.ipapackaging, anddeploy-devicevia devicectl - iOS: configurable minimum iOS version (
ios.minIOSVersionin build/config.yml) - iOS:
wails3 doctorreports Xcode and iOS SDK availability on macOS - iOS: system events β battery, network, theme, screen-lock and low-memory surface as
events.IOS.*and platform-neutralevents.Common.*application events - iOS: native mobile feature bridge (exported
application.IOS*) β share sheet, open URL, keep-awake, torch, safe-area insets, brightness, app info, orientation lock, status bar, biometrics (Face ID/Touch ID), local notifications and Keychain secure storage - iOS: sensors & hardware β haptics, one-shot geolocation, accelerometer, proximity, text-to-speech, storage info, power/battery state, network status, keyboard insets and screen-capture detection
- iOS: documentation (IOS.md and a docs-site guide)
- Android: native message dialogs (AlertDialog) and open file/files dialogs (Storage Access Framework, imported as cache copies); open-directory and save dialogs return an explicit error
- Android: clipboard support via ClipboardManager
- Android: real screen metrics via WindowMetrics/DisplayMetrics (dp, pixels, scale, system-bar work area)
- Android: haptics (
Android.Haptics.Vibrate), device info (Android.Device.Info) and toast (Android.Toast.Show) runtime methods - Android: typed lifecycle events (
events.Android.*, generated from events.txt) withActivityCreatedmapped toCommon.ApplicationStarted - Android: build pipeline produces installable debug and release APKs (
android:run,android:package,android:package:fat); release signing via the debug keystore by default or a real keystore throughANDROID_KEYSTORE_*env vars - Android:
wails3 doctorreports the Android SDK, NDK and JDK - Android: system events β battery, network, theme, screen-lock and low-memory surface as
events.Android.*and platform-neutralevents.Common.*application events - Android: native mobile feature bridge (exported
application.Android*) β share, open URL, keep-awake, torch, safe-area insets, brightness, app info, orientation lock, status bar, biometrics (BiometricPrompt), local notifications and EncryptedSharedPreferences secure storage - Android: sensors & hardware β haptics, one-shot geolocation, accelerometer, proximity, text-to-speech, storage info, power/battery state, network status, keyboard insets and FLAG_SECURE screen-capture blocking
- Android: documentation (ANDROID.md and a docs-site guide)
- Example: the
mobilekitchen sink gains Mobile and Hardware tabs demonstrating the native feature bridge across iOS and Android (pill tabs wrap to multiple rows) - Mobile: battery β the accelerometer, proximity sensor, torch and the example's periodic clock are paused when the app is backgrounded and restored on return (Android keeps the process running in the background, and the torch is hardware state that persists on iOS), and Android system-event receivers are only registered while the app is in the foreground
- iOS: camera capture β
application.IOSCapturePhoto/IOSCaptureVideo(UIImagePickerController β anative:captureevent with a base64 thumbnail) - iOS: background execution β
application.IOSBeginBackgroundTask/IOSEndBackgroundTask(a UIApplication background-task window) and a configurableios.backgroundModes(build/config.yml) that templatesUIBackgroundModesinto the generated Info.plist - Android: camera capture β
application.AndroidCapturePhoto/AndroidCaptureVideo(system camera via FileProvider β anative:captureevent) - Android: foreground service β
application.AndroidStartForegroundService/AndroidStopForegroundService(aWailsForegroundServicewith an ongoing notification keeps the process alive for long-running background work) - Example: a Camera tab demonstrating photo/video capture and background execution (foreground service on Android, background-task window on iOS)
Fixed
- Fix
getUserMediaalways failing withNotAllowedErroron Linux: WebKitGTK denies permission requests nobody handles, and thepermission-requestsignal was not connected. Camera/microphone are now handled per a new cross-platformWebviewWindowOptions.Permissionsmap (map[PermissionType]Permission), honored on both Linux (WebKitGTK) and Windows (WebView2). On Linux, which has no native prompt, camera/microphone default to allowed (restoringgetUserMedia) and can be turned off withPermissionDeny(#5552) - iOS:
GOOS=ioscompiles again (exportedevents.IOS, mobile method-name stubs) and production-tagged builds compile (build-tag fixes in pkg/application and several services) - iOS: GoβJS events and ExecJS now work β the page no longer loads twice at startup and the
wails:runtime:readyhandshake can no longer be lost - iOS:
ApplicationDidFinishLaunching/ApplicationStartedno longer race app startup; removed the fixed 2-second startup sleep - iOS: fixed a C-string leak on every GoβJS JavaScript execution
- iOS:
hasListenersnow reflects real listener registration - iOS: framework debug logging is compiled out of production builds
- Android:
GOOS=androidcompiles again β definedevents.Android, removed the out-of-boundsevents_android.golistener array, added the mobile method-name stub, and stopped desktop-Linux files (linux_cgo.*,events_linux.*,environment_linux.go) leaking into Android builds - Android: JSβGo bindings now work β the WebView cannot deliver
fetch()POST bodies toshouldInterceptRequest, so runtime calls route through a JavascriptInterface transport (nativeHandleRuntimeCall) instead of crashing on a nil request body - Android:
Screens.*runtime calls return real data β the ScreenManager is now populated at startup (it was never wired, soGetAllreturned nil) - Android: framework debug logging is compiled out of production builds and routes through logcat under the
Wailstag in debug builds - Android: real
hasListenersregistry, JNI reference/exception handling, and a single-load page lifecycle (no double navigation) - Fix
wails3 generate bindingsfailing with "Access is denied" on Windows when the Vite dev server is running, by syncing generated files into the output directory instead of renaming over it (#5515) - Fix intermittent fatal crash on macOS when reading screen information after a display change: the screen id and name stored pointers to autoreleased
UTF8Stringbuffers that could be freed before Go copied them (use-after-free). The strings are nowstrdup'd and freed after conversion, and screen enumeration runs in an explicit autorelease pool so it no longer leaks when called from Go goroutines (#5556) - Fix intermittent SIGSEGV on Linux when the assetserver closes a
WebKitURISchemeRequest: the finalg_object_unrefran on the assetserver goroutine, finalizing a WebKit GObject off the GTK main thread. The unref is now marshalled onto the GTK main context viag_main_context_invoke(#5557)
π€ This is an automated nightly release generated from the latest changes on master.
Installation:
go install github.com/wailsapp/wails/v3/cmd/wails3@v3.0.0-alpha.101Wails v3.0.0-alpha.100
Wails v3 Alpha Release - v3.0.0-alpha.100
Added
- Extend
MacWebviewPreferenceswith additional WKWebView configuration options:EnableAutoplayWithoutUserAction,AllowsAirPlayForMediaPlayback,AllowsMagnification,JavaScriptCanOpenWindowsAutomatically,MinimumFontSize, andApplicationNameForUserAgent(#5549)
Fixed
- Fix
wails3 generate bindingsfailing with "Access is denied" on Windows when the Vite dev server is running, by syncing generated files into the output directory instead of renaming over it (#5561) - Fix JS resize events not firing for frameless windows on Linux; fix scrollbar edge detection for frameless windows (#5368)
- Fix updater on Windows failing with "invalid cross-device link" when the temp directory is on a different volume to the install directory (#5560)
π€ This is an automated nightly release generated from the latest changes on master.
Installation:
go install github.com/wailsapp/wails/v3/cmd/wails3@v3.0.0-alpha.100Wails v3.0.0-alpha.98
Wails v3 Alpha Release - v3.0.0-alpha.98
Fixed
- Fix WebKit UI freeze on Linux when idle (e.g. with the inspector open) by no longer forcing
SA_ONSTACKonSIGUSR1, which broke JavaScriptCore's GC thread synchronisation (#5527)
π€ This is an automated nightly release generated from the latest changes on master.
Installation:
go install github.com/wailsapp/wails/v3/cmd/wails3@v3.0.0-alpha.98Wails v3.0.0-alpha.97
Wails v3 Alpha Release - v3.0.0-alpha.97
Added
- Add debugging page and working with
runtime/trace
Changed
- Remove some unnecessary
_ "embed"imports tidying the code a little
Fixed
- Fix minimum width/height constraints not enforced after window unmaximise on Windows (#4593)
- Fix mouse click-through in fullscreen mode with Frameless + Transparent window options (#4408)
π€ This is an automated nightly release generated from the latest changes on master.
Installation:
go install github.com/wailsapp/wails/v3/cmd/wails3@v3.0.0-alpha.97Wails v3.0.0-alpha.96
Wails v3 Alpha Release - v3.0.0-alpha.96
Added
- Add Garble obfuscation support (#4563): stable binding method IDs, build/Taskfile plumbing (
build --obfuscated --garbleargs,generate bindings -obfuscated), and JSON struct tags on every runtime-facing payload (EnvironmentInfo,OSInfo,Screen,Rect,Point,Size,Capabilities) so the wire format survives Garble's exported-field renaming.
π€ This is an automated nightly release generated from the latest changes on master.
Installation:
go install github.com/wailsapp/wails/v3/cmd/wails3@v3.0.0-alpha.96Wails v3.0.0-alpha.95
Wails v3 Alpha Release - v3.0.0-alpha.95
Added
- Added missing project structure page
Changed
- Docs: Change to a couple of diagrams on architecture page to use sequence diagram for cleaner display
- Docs: Include note about installing D2 as a prerequisite for running
Fixed
- Fix
wails3 generate appimageon the GTK4 default: the bundler now detects the GTK stack from the binary before searching for runtime files, so it pickslibwebkitgtkinjectedbundle.so(underwebkitgtk-6.0/) for GTK4 builds andlibwebkit2gtkinjectedbundle.so(underwebkit2gtk-4.1/) for-tags gtk3builds. The.relr.dynprobe also checkslibgtk-4.so.1so stripping is correctly disabled on modern toolchains regardless of stack. (#5475) - Fix
wails3 generate appimagefailing when invoked with a relative-builddir: the bundler now resolves-binary,-icon,-desktopfile,-builddirand-outputdirto absolute paths up-front so the mid-flows.CDdoesn't break the AppRun download goroutine or the post-copylddprobe. - Fix
wails3 generate appimagefailing to move the final AppImage to-outputdirwhen the desktopName=field doesn't match the binary basename: the bundler now forces linuxdeploy's appimage plugin (via theOUTPUTenv var) to write the AppImage to<binary>-<arch>.AppImageinstead of the name derived from the desktop file. - Fix
events.Common.ApplicationStarted,Common.ThemeChanged,Common.SystemWillSleepandCommon.SystemDidWakenot firing on Linux after the GTK4 + WebKitGTK 6.0 stack was promoted to the default in alpha.93. The new defaultapplication_linux.gorun()wasn't callingsetupCommonEvents()(which forwardsLinux.*events to theirCommon.*counterparts) ormonitorPowerEvents(). The DBus power-monitor helper is now shared between the GTK3 and GTK4 build paths viaapplication_linux_dbus.go. (#5474)
π€ This is an automated nightly release generated from the latest changes on master.
Installation:
go install github.com/wailsapp/wails/v3/cmd/wails3@v3.0.0-alpha.95Wails v3.0.0-alpha.94
Wails v3 Alpha Release - v3.0.0-alpha.94
Fixed
- Fix
events.Common.ApplicationStarted,Common.ThemeChanged,Common.SystemWillSleepandCommon.SystemDidWakenot firing on Linux after the GTK4 + WebKitGTK 6.0 stack was promoted to the default in alpha.93. The new defaultapplication_linux.gorun()wasn't callingsetupCommonEvents()(which forwardsLinux.*events to theirCommon.*counterparts) ormonitorPowerEvents(). The DBus power-monitor helper is now shared between the GTK3 and GTK4 build paths viaapplication_linux_dbus.go. (#5474)
π€ This is an automated nightly release generated from the latest changes on master.
Installation:
go install github.com/wailsapp/wails/v3/cmd/wails3@v3.0.0-alpha.94Wails v3.0.0-alpha.93
Wails v3 Alpha Release - v3.0.0-alpha.93
Added
- Add
XDG_SESSION_TYPEtowails3 doctoroutput on Linux by @leaanthony
Fixed
- Fix window menu crash on Wayland caused by appmenu-gtk-module accessing unrealized window (#4769) by @leaanthony
- Fix GTK application crash when app name contains invalid characters (spaces, parentheses, etc.) by @leaanthony
- Fix "not enough memory" error when initializing drag and drop on Windows (#4701) by @overlordtm
- Fix race condition in mainthread callback store using incorrect RLock for map deletion (Linux, macOS, iOS) (#4424) by @leaanthony
- Fixed variable handling when passing command-line arguments to tasks. CLI variables specified as KEY=VALUE pairs are now properly initialized and propagated throughout task execution.
- Fix NSWindowZoomButton conflict on macOS:
MaximiseButtonStateandFullscreenButtonStatenow apply the more restrictive state at both startup and runtime; neither setter can silently override the other (#5319) - Fix a cluster of pre-existing bugs in the legacy GTK3 build path (
-tags gtk3) surfaced by CodeRabbit on #5463: file-association launches no longer skip startup handlers;getThemeis bounds- and type-safe;appNameno longer frees GLib-owned memory;clipboardGetno longer leaks thegchar*returned by GTK;Callocnow uses pointer receivers (andNewCallocreturns*Calloc) so the pool actually tracks allocations;zoomOutuses the reciprocal ofzoomInFactorinstead of a negative multiplier that clamped to 1.0;execJSreuses the preallocated empty world-name instead of leaking aC.CString("")per call; a developmentfmt.Printlnwas removed frommenuItem.setAccelerator. Resolves #5465. - Fix the same
Callocvalue-receiver leak in the default GTK4 build path (linux_cgo.go): pointer receivers +NewCalloc() *Callocso per-windowc.String(...)allocations are actually tracked and freed.
π€ This is an automated nightly release generated from the latest changes on master.
Installation:
go install github.com/wailsapp/wails/v3/cmd/wails3@v3.0.0-alpha.93