Changelog
Legend:
- - macOS
- ⊞ - Windows
- 🐧 - Linux
/*— All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Added
for new features.Changed
for changes in existing functionality.Deprecated
for soon-to-be removed features.Removed
for now removed features.Fixed
for any bug fixes.Security
in case of vulnerabilities.
*/
[Unreleased]
Breaking Changes
- Renamed Service methods:
Name
->ServiceName
,OnStartup
->ServiceStartup
,OnShutdown
->ServiceShutdown
by @leaanthony - Moved
Path
andPaths
methods toapplication
package by @leaanthony - The application menu is now macOS only by @leaanthony
Added
- Support aarch64 AppImage builds by @AkshayKalose in #3981
- Add diagnostics section to
wails doctor
by @leaanthony - Add window to context when calling a service method by @leaanthony
- Add
window-call
example to demonstrate how to know which window is calling a service by @leaanthony - New Menu guide by @leaanthony
- Better panic handling by @leaanthony
- New Menu guide by @leaanthony
- Add doc comments for Service API by @fbbdev in #4024
- Add function
application.NewServiceWithOptions
to initialise services with additional configuration by @leaanthony in #4024 - Improved menu control by @FalcoG and @leaanthony in #4031
- More documentation by @leaanthony
- Support cancellation of events in standard event listeners by @leaanthony
- Systray
Hide
,Show
andDestroy
support by @leaanthony - Systray
SetTooltip
support by @leaanthony. Original idea by @lujihong - Report package path in binding generator warnings about unsupported types by @fbbdev in #4045
- Add binding generator support for generic aliases by @fbbdev in #4045
- Add binding generator support for
omitzero
JSON flag by @fbbdev in #4045 - Add
//wails:ignore
directive to prevent binding generation for chosen service methods by @fbbdev in #4045 - Add
//wails:internal
directive on services and models to allow for types that are exported in Go but not in JS/TS by @fbbdev in #4045 - Add binding generator support for constants of alias type to allow for weakly typed enums by @fbbdev in #4045
- Add support for macOS 15 “Sequoia” to
OSInfo.Branding
for improved OS version detection in #4065 - Add
PostShutdown
hook for running custom code after the shutdown process completes by @fbbdev in #4066 - Add
FatalError
struct to support detection of fatal errors in custom error handlers by @fbbdev in #4066 - Standardise and document service startup and shutdown order by @fbbdev in #4066
- Add test harness for application startup/shutdown sequence and service startup/shutdown tests by @fbbdev in #4066
- Add
RegisterService
method for registering services after the application has been created by @fbbdev in #4066 - Add
MarshalError
field in application and service options for custom error handling in binding calls by @fbbdev in #4066
Fixed
- Fixed Windows+Linux Edit Menu issues by @leaanthony in #3f78a3a
- Updated the minimum system version in macOS .plist files from 10.13.0 to 10.15.0 by @AkshayKalose in #3981
- Window ID skip issue by @leaanthony
- Fix nil menu issue when calling RegisterContextMenu by @leaanthony
- Fixed dependency cycles in binding generator output by @fbbdev in #4001
- Fixed use-before-define errors in binding generator output by @fbbdev in #4001
- Pass build flags to binding generator by @fbbdev in #4023
- Change paths in windows Taskfile to forward slashes to ensure it works on non-Windows platforms by @leaanthony
- Mac + Mac JS events now fixed by @leaanthony
- Fixed event deadlock for macOS by @leaanthony
- Fixed a
Parameter incorrect
error in Window initialisation on Windows when HTML provided but no JS by @leaanthony - Fixed size of response prefix used for content type sniffing in asset server by @fbbdev in #4049
- Fixed handling of non-404 responses on root index path in asset server by @fbbdev in #4049
- Fixed undefined behaviour in binding generator when testing properties of generic types by @fbbdev in #4045
- Fixed binding generator output for models when underlying type has not the same properties as named wrapper by @fbbdev in #4045
- Fixed binding generator output for map key types and preprocessing by @fbbdev in #4045
- Fixed binding generator output for structs that implement marshaler interfaces by @fbbdev in #4045
- Fixed detection of type cycles involving generic types in binding generator by @fbbdev in #4045
- Fixed invalid references to unexported models in binding generator output by @fbbdev in #4045
- Moved injected code to the end of service files by @fbbdev in #4045
- Fixed handling of errors from file close operations in binding generator by @fbbdev in #4045
- Suppressed warnings for services that define lifecycle or http methods but no other bound methods by @fbbdev in #4045
- Fixed non-React templates failing to display Hello World footer when using light system colour scheme by @marcus-crane in #4056
- Fixed hidden menu items on macOS by @leaanthony
- Fixed handling and formatting of errors in message processors by @fbbdev in #4066
- Fixed skipped service shutdown when quitting application by @fbbdev in #4066
Changed
- Removed
application.WindowIDKey
andapplication.WindowNameKey
(replaced byapplication.WindowKey
) by @leaanthony - ContextMenuData now returns a string instead of any by @leaanthony
- In JS/TS bindings, class fields of fixed-length array types are now initialized with their expected length instead of being empty by @fbbdev in #4001
- ContextMenuData now returns a string instead of any by @leaanthony
application.NewService
does not accept options as an optional parameter anymore (useapplication.NewServiceWithOptions
instead) by @leaanthony in #4024- Removed
nanoid
dependency by @leaanthony - Updated Window example for mica/acrylic/tabbed window styles by @leaanthony
- In JS/TS bindings,
internal.js/ts
model files have been removed; all models can now be found inmodels.js/ts
by @fbbdev in #4045 - In JS/TS bindings, named types are never rendered as aliases for other named types; the old behaviour is now restricted to aliases by @fbbdev in #4045
- In JS/TS bindings, in class mode, struct fields whose type is a type parameter are marked optional and never initialised automatically by @fbbdev in #4045
- Remove ESLint from templates by by @IanVS in #4059
- Update copyright date to 2025 by @IanVS in #4037
- Add docs for event.Sender by @IanVS in #4075
- Go 1.24 support by @leaanthony
ServiceStartup
hooks are now invoked whenApp.Run
is called, not inapplication.New
by @fbbdev in #4066ServiceStartup
errors are now returned fromApp.Run
instead of terminating the process by @fbbdev in #4066- Binding and dialog calls from JS now reject with error objects instead of strings by @fbbdev in #4066
v3.0.0-alpha.9 - 2025-01-13
Added
app.OpenFileManager(path string, selectFile bool)
to open the system file manager to the pathpath
with optional highlighting viaselectFile
by @Krzysztofz01 @rcalixte- New
-git
flag forwails3 init
command by @leaanthony - New
wails3 generate webview2bootstrapper
command by @leaanthony - Added
init()
method in runtime to allow manual initialisation of the runtime by @leaanthony - Added
WindowDidMoveDebounceMS
option to Window’s WindowOptions by @leaanthony - Added Single Instance feature by @leaanthony. Based on the v2 PR by @APshenkin.
wails3 generate template
command by @leaanthonywails3 releasenotes
command by @leaanthonywails3 update cli
command by @leaanthony-clean
option forwails3 generate bindings
command by @leaanthony- Allow for aarch64 (arm64) AppImage Linux builds by @AkshayKalose in #3981
Fixed
- Fixed min/max width options for linux by @atterpac in #3979
- Typescript templates types definitions via npm version bump by @atterpac in #3966
- Fix Sveltekit template CSS referance by @atterpac in #3945
- Ensure key callbacks in window run() are called on the main thread by @leaanthony
- Fix dialog directory chooser examples by @leaanthony
- Created new Chinese error page when index.html is missing by @leaanthony
- Ensure
windowDidBecomeKey
callback is running on main thread by @leaanthony - Support fullscreen for frameless windows by @leaanthony
- Improved window destroying logic by @leaanthony
- Fix window position logic when attached to system trays by @leaanthony
- Support fullscreen for frameless windows by @leaanthony
- Fix event handling by @leaanthony
- Fixed window shutdown logic by @leaanthony
- Common taskfile now defaults to generating Typescript bindings for Typescript templates by @leaanthony
- Fix Close application on WM_CLOSE message when no windows are open/systray only by @mmalcek in #3990
- Fixed garble build by @5aaee9 in #3192
- Fixed windows nsis builds by @leaanthony
Changed
- Moved build assets to platform specific directories by @leaanthony
- Moved and renamed Taskfiles to platform specific directories by @leaanthony
- Created a much better experience when
index.html
is missing by @leaanthony - [Windows] Improved performance of minimise and restore by @leaanthony. Based on original PR by 562589540
- Removed
ShouldClose
option (Register a hook for events.Common.WindowClosing instead) by @leaanthony - [Windows] Reduced flicker when opening a window by @leaanthony
- Removed
Window.Destroy
as this was intended to be an internal function by @leaanthony - Renamed
WindowClose
events toWindowClosing
by @leaanthony - Frontend builds now use vite environment “development” or “production” depending on build type by @leaanthony
- Update to go-webview2 v1.19 by @leaanthony
v3.0.0-alpha.8.3 - 2024-12-07
Changed
- Ensure fork of taskfile is used by @leaanthony
v3.0.0-alpha.8.2 - 2024-12-07
Changed
- Update fork of Taskfile to fix version issues when installing using
go install
by @leaanthony
v3.0.0-alpha.8.1 - 2024-12-07
Changed
- Using fork of Taskfile to fix version issues when installing using
go install
by @leaanthony
v3.0.0-alpha.8 - 2024-12-06
Added
- Added hyperlink for sponsor by @ansxuman in #3958
- Support of linux packaging of deb,rpm, and arch linux packager builds by @atterpac in #3909
- Added Support for darwin universal builds and packages by ansxuman in #3902
- Events documentation to the website by atterpac in #3867
- Templates for sveltekit and sveltekit-ts that are set for non-SSR development by atterpac in #3829
- Update build assets using new
wails3 update build-assets
command by leaanthony - Example to test the HTML Drag and Drop API by FerroO2000 in #3856
- File Association support by leaanthony in #3873
- New
wails3 generate runtime
command by leaanthony - New
InitialPosition
option to specify if the window should be centered or positioned at the given X/Y location by leaanthony in #3885 - Add
Path
&Paths
methods toapplication
package by ansxuman and leaanthony in #3823 - Added
GeneralAutofillEnabled
andPasswordAutosaveEnabled
Windows options by leaanthony in #3766 - Added the ability to retrieve the window calling a service method by leaanthony in #3888
- Added
EnabledFeatures
andDisabledFeatures
options for Webview2 by leaanthony.
Changed
service.OnStartup
now shutdowns the application on error and runsservice.OnShutdown
for any prior services that started by @atterpac in #3920- Refactored systray click messaging to better align with user interactions by @atterpac in #3907
- Asset embed to include
all:frontend/dist
to support frameworks that generate subfolders by @atterpac in #3887 - Taskfile refactor by leaanthony in #3748
- Upgrade to
go-webview2
v1.0.16 by leaanthony - Fixed
Screen
type to includeID
notId
by etesam913 in #3778 - Update
go.mod.tmpl
wails version to supportapplication.ServiceOptions
by northes in #3836 - Fixed service name determination by windom in #3827
- mkdocs serve now uses docker by leaanthony
- Consolidated dev config into
config.yml
by leaanthony - Systray dialog now defaults to the application icon if available (Windows) by @leaanthony
- Better reporting of GPU + Memory for macOS by @leaanthony
- Removed
WebviewGpuIsDisabled
andEnableFraudulentWebsiteWarnings
(superseded byEnabledFeatures
andDisabledFeatures
options) by leaanthony
Fixed
- Fixed deadlock in Linux dialog for multiple selections caused by unclosed channel variable by @michael-freling in #3925
- Fixed cross-platform cleanup for .syso files during Windows build by ansxuman in #3924
- Fixed amd64 appimage compile by @atterpac in #3898
- Fixed build assets update by @ansxuman in #3901
- Fixed Linux systray
OnClick
andOnRightClick
implementation by @atterpac in #3886 - Fixed
AlwaysOnTop
not working on Mac by leaanthony in #3841 - Fixed
application.NewEditMenu
including a duplicatePasteAndMatchStyle
role in the edit menu on Darwin by johnmccabe in #3839 - 🐧 Fixed aarch64 compilation #3840 in #3854 by kodflow
- ⊞ Fixed radio group menu items by @leaanthony
- Fix error on building runnable .app on MacOS when ‘name’ and ‘outputfilename’ are different. by @nickisworking in #3789
v3.0.0-alpha.7 - 2024-09-18
Added
- ⊞ New DIP system for Enhanced High DPI Monitor Support by mmghv in #3665
- ⊞ Window class name option by windom in #3682
- Services have been expanded to provide plugin functionality. By atterpac and leaanthony in #3570
Changed
- Events API change:
On
/Emit
-> user events,OnApplicationEvent
-> Application EventsOnWindowEvent
-> Window Events, by leaanthony - Fix for Events API on Linux by TheGB0077 in #3734
- [CI] improvements to actions & enable to run actions also in forks and
branches prefixed with
v3/
orv3-
by stendler in #3747
Fixed
- Fixed bug with usage of customEventProcessor in drag-n-drop example by etesam913 in #3742
- 🐧 Fixed linux compile error introduced by IgnoreMouseEvents addition by atterpac in #3721
- ⊞ Fixed syso icon file generation bug by atterpac in #3675
- 🐧 Fix to run natively in wayland incorporated from #1811 in #3614 by @stendler
- Do not bind internal service methods in #3720 by leaanthony
- ⊞ Fixed system tray startup panic in #3693 by @DeltaLaboratory
- Do not bind internal service methods in #3720 by leaanthony
- ⊞ Fixed system tray startup panic in #3693 by @DeltaLaboratory
- Major menu item refactor and event handling. Mainly improves macOS for now. By leaanthony
- Fix tests after plugins and event refactor in #3746 by @stendler
- ⊞ Fixed
Failed to unregister class Chrome_WidgetWin_0
warning. By leaanthony
v3.0.0-alpha.6 - 2024-07-30
Fixed
- Module issues
v3.0.0-alpha.5 - 2024-07-30
Added
- 🐧 WindowDidMove / WindowDidResize events in #3580
- ⊞ WindowDidResize event in #3580
- add Event ApplicationShouldHandleReopen to be able to handle dock icon click by @5aaee9 in #2991
- add getPrimaryScreen/getScreens to impl by @tmclane in #2618
- add option for showing the toolbar in fullscreen mode on macOS by @fbbdev in #3282
- 🐧 add onKeyPress logic to convert linux keypress into an accelerator @Atterpac in#3022
- 🐧 add task
run:linux
by @marcus-crane in #3146 - Export
SetIcon
method by @almas1992 in PR - Improve
OnShutdown
by @almas1992 in PR - Restore
ToggleMaximise
method inWindow
interface by @fbbdev in #3281 - Added more information to
Environment()
. By @leaanthony in aba82cc based on PR by @Mai-Lapyst - Expose the
WebviewWindow.IsFocused
method on theWindow
interface by @fbbdev in #3295 - Support multiple space-separated trigger events in the WML system by @fbbdev in #3295
- Add ESM exports from the bundled JS runtime script by @fbbdev in #3295
- Add binding generator flag for using the bundled JS runtime script instead of the npm package by @fbbdev in #3334
- Implement
setIcon
on linux by @abichinger in #3354 - Add flag
-port
to dev command and support environment variableWAILS_VITE_PORT
by @abichinger in #3429 - Add tests for bound method calls by @abichinger in #3431
- ⊞ add
SetIgnoreMouseEvents
for already created window by @bruxaodev in #3667 - Add ability to set a window’s stacking level (order) by @OlegGulevskyy in #3674
Fixed
- Fixed resize event messaging by atterpac in #3606
- 🐧Fixed theme handling error on NixOS by tmclane in #3515
- Fixed cross volume project install for windows by atterpac in #3512
- Fixed react template css to show footer by atterpac in #3477
- Fixed zombie processes when working in devmode by updating to latest refresh by Atterpac in #3320.
- Fixed appimage webkit file sourcing by Atterpac in #3306.
- Fixed Doctor apt package verify by Atterpac in #2972.
- Fixed application frozen when quit (Darwin) by @5aaee9 in #2982
- Fixed background colours of examples on Windows by mmghv in #2750.
- Fixed default context menus by mmghv in #2753.
- Fixed hex values for arrow keys on Darwin by jaybeecave in #3052.
- Set drag-n-drop for windows to working. Added by @pylotlight in PR
- Fixed bug for linux in doctor in the event user doesn’t have proper drivers installed. Added by @pylotlight in PR
- Fix dpi scaling on start up (windows). Changed by @almas1992 in PR
- Fix replace line in
go.mod
to use relative paths. Fixes Windows paths with spaces - @leaanthony. - Fix MacOS systray click handling when no attached window by thomas-senechal in PR #3207
- Fix failing Windows build due to unknown option by thomas-senechal in PR #3208
- Fix crash on windows left clicking the systray icon when not having an attached window tw1nk in PR #3271
- Fix wrong baseURL when open window twice by @5aaee9 in PR #3273
- Fix ordering of if branches in
WebviewWindow.Restore
method by @fbbdev in #3279 - Correctly compute
startURL
across multipleGetStartURL
invocations whenFRONTEND_DEVSERVER_URL
is present. #3299 - Fix the JS type of the
Screen
struct to match its Go counterpart by @fbbdev in #3295 - Fix the
WML.Reload
method to ensure proper cleanup of registered event listeners by @fbbdev in #3295 - Fix custom context menu closing immediately on linux by @abichinger in #3330
- Fix the output path and extension of model files produced by the binding generator by @fbbdev in #3334
- Fix the import paths of model files in JS code produced by the binding generator by @fbbdev in #3334
- Fix drag-n-drop on some linux distros by @abichinger in #3346
- Fix missing task for macOS when using
wails3 task dev
by @hfoxy in #3417 - Fix registering events causing a nil map assignment by @hfoxy in #3426
- Fix unmarshaling of bound method parameters by @fbbdev in #3431
- Fix handling of multiple return values from bound methods by @fbbdev in #3431
- Fix doctor detection of npm that is not installed with system package manager by @pekim in #3458
- Fix missing MicrosoftEdgeWebview2Setup.exe. Thanks to @robin-samuel.
- Fix random crash on linux due to window ID handling by @leaanthony. Based on PR #3466 by @5aaee9.
- Fix systemTray.setIcon crashing on Linux by @windom in #3636.
- Fix Ensure Window Frame is Applied on First Call in
setFrameless
Function on Windows by @bruxaodev in #3691.
Changed
- Renamed
AbsolutePosition()
toPosition()
by mmghv in #3611 - Update linux webkit dependency to webkit2gtk-4.1 over webkitgtk2-4.0 to support Ubuntu 24.04 LTS by atterpac in #3461
- The bundled JS runtime script is now an ESM module: script tags importing it
must have the
type="module"
attribute. By @fbbdev in #3295 - The
@wailsio/runtime
package does not publish its API on thewindow.wails
object, and does not start the WML system. This has been done to improve encapsulation. The WML system can be started manually if desired by calling the newWML.Enable
method. The bundled JS runtime script still performs both operations automatically. By @fbbdev in #3295 - The Window API module
@wailsio/runtime/src/window
now exposes the containing window object as a default export. It is not possible anymore to import individual methods through ESM named or namespace import syntax. - The JS window API has been updated to match the current Go
WebviewWindow
API. Some methods have changed name or prototype, specifically:Screen
becomesGetScreen
;GetZoomLevel
/SetZoomLevel
becomeGetZoom
/SetZoom
;GetZoom
,Width
andHeight
now return values directly instead of wrapping them within objects. By @fbbdev in #3295 - The binding generator now uses calls by ID by default. The
-id
CLI option has been removed. Use the-names
CLI option to switch back to calls by name. By @fbbdev in #3468 - New binding code layout: output files were previously organised in folders named after their containing package; now full Go import paths are used, including the module path. By @fbbdev in #3468
- The struct field
application.Options.Bind
has been renamed toapplication.Options.Services
. By @fbbdev in #3468 - New syntax for binding services: service instances must now be wrapped in a
call to
application.NewService
. By @fbbdev in #3468 - Disable spinner on Non-Terminal or CI Environment by @DeltaLaboratory in #3574