* feat(v2): add runtime.ResetSignalHandlers() for Linux panic recovery
Add a new runtime function that allows users to reset signal handlers
before code that might panic from nil pointer dereferences.
On Linux, WebKit installs signal handlers without the SA_ONSTACK flag,
which prevents Go from properly recovering from panics caused by
SIGSEGV and other signals. This function adds SA_ONSTACK to the
relevant signal handlers (SIGSEGV, SIGBUS, SIGFPE, SIGABRT).
Usage:
```go
go func() {
defer func() {
if err := recover(); err != nil {
log.Printf("Recovered: %v", err)
}
}()
runtime.ResetSignalHandlers()
// Code that might panic...
}()
```
The function is a no-op on macOS and Windows.
Fixes#3965
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* test(v2): add panic-recovery-test example
Add an example that demonstrates the Linux signal handler issue (#3965)
and verifies the fix using runtime.ResetSignalHandlers().
The example includes:
- A Greet function that triggers a nil pointer dereference after a delay
- Auto-call from frontend after 5 seconds
- README with reproduction steps
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* fix: add missing EventsOffAll export to runtime templates
The EventsOffAll function was implemented in the internal runtime
(desktop/events.js) and exported in the wrapper runtime files, but was
missing from the public runtime templates that are generated in user
projects. This caused a type mismatch where EventsOffAll was declared
in the TypeScript definition but the implementation was missing.
This commit adds the EventsOffAll export and type declaration to all
frontend framework templates:
- Common templates (generate/assets/common)
- React / React-TS
- Vue / Vue-TS
- Svelte / Svelte-TS
- Preact / Preact-TS
- Lit / Lit-TS
- Vanilla / Vanilla-TS
Fixes#4703
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* docs: add EventsOffAll to runtime events documentation
Added EventsOffAll function documentation to both English and Chinese
versions of the runtime events reference.
The function was already implemented in Go (pkg/runtime/events.go) and
JavaScript (internal/frontend/runtime/desktop/events.js), but was missing
from the public documentation.
Related to #4703
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* chore: add EventsOffAll fix to changelog
Added entry for the EventsOffAll fix to the Unreleased section
of the changelog.
Related to #4703
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* docs: translate EventsOffAll description to Chinese
Improved consistency in Chinese documentation by translating the
EventsOffAll description from English to Chinese, matching the
style of other event method descriptions.
Related to #4703
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
---------
Co-authored-by: cc <Zhuanz@MacBook-Pro.local>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
* [v2] docs(menu): add imports and complete the example (post merge conflict)
This partially redoes commit cb3305a2fc, as a merge conflict resolution seemed to have accidentally removed a large portion of the changes
- the example was missing imports, which [confused a user](https://stackoverflow.com/q/79827619/3431180), particularly due to the `rt` import alias
- plus there are a good number of imports too, which this makes explicit
- also give this file the title `menu.go` for clarity / explicitness, particularly to differentiate from the `NewApp` / `app.go` scaffold
- also handle the error at the end similar to [existing examples](4c464b3092/website/docs/guides/application-development.mdx (L54))
* add changelog entry per PR template
* [v2] docs(menu): add imports and complete the example
- the example was missing imports, which [confused a user](https://stackoverflow.com/q/79827619/3431180), particularly due to the `rt` import alias
- plus there are a good number of imports too, which this makes explicit
- it also didn't mention that it built on top of the `NewApp` / `app.go` scaffold, so mention and link to that as well
- it wasn't clear where `NewApp` came from without that
- give this file the title `menu.go` for clarity / explicitness
- also handle the error at the end similar to [existing examples](4c464b3092/website/docs/guides/application-development.mdx (L54))
* add changelog entry per PR template
---------
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
* [v2] docs(menu): fix some syntax issues
- one line wasn't properly indented
- one line was missing a closing brace and wouldn't compile as such
noticed this while [answering a question on SO](https://stackoverflow.com/a/79827672/3431180) which linked to this page
* add changelog entry per PR template
* consistent 4 space indentation
---------
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
* Add support for build tags to the wails project schema and update project-config documentation for guidance
* Support project tags in dev mode
* Satisfy coderabbit nitpick relating to error variable name
* Added changelog entry for `build:tags` project feature
---------
Co-authored-by: symball <contact@simonball.me>
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
* feat(options): add ContentProtection bool config to macos and windows options
* feat(darwin): implement ContentProtection for darwin
* feat(windows): implement ContentProtection for windows
* chore(website): add feature to changelog
* feat(examples): add an example showcasing the ContentPrivacy flag
* chore(examples): update readme
* fix(example): format and build
* fix(winc): rename to wda and add version check
* chore(reference): add docs for ContentProtection
* fix(darwin): future-proof setting the sharing type
* fix(example): wording consistency
* chore(examples): remove privatewindow example
---------
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
* feat: Make Vite server timeout configurable
- Add ViteServerTimeout field to wails.json configuration (default: 10 seconds)
- Add --viteservertimeout CLI flag for dev command
- Update error message to be more descriptive about timeout duration
- Fix issue #4372 where slow Vite servers with SvelteKit/Tailwind exceeded 10s timeout
Users can now configure the timeout via:
1. wails.json: "viteServerTimeout": 30
2. CLI flag: wails dev --viteservertimeout 30
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* docs: Add documentation for viteServerTimeout configuration
- Document viteServerTimeout field in wails.json project config
- Add --viteservertimeout CLI flag documentation
- Update save flag description to include new option
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Update changelog
---------
Co-authored-by: Claude <noreply@anthropic.com>
* Feature/1090 native drag and drop for file and folder (#3203)
* implement basic dnd for linux
* implemented windows
* progress changed linux handling and added coordinates to drop
* progress fix drop coordinates on windows
* progress remove log from windows
* progress move js
* update js after merge
* fix event listener registration
* fix segfault on non file drag
* remove logs, fix coordinates
* minor changes, simplify to drop only
* rename EnableWails -> EnableFileDrop
* add documentation (PR id missing)
* add PR id to changelog
* fix remove casting from malloc
* fix nil check for OnFileDrop's callback
* fix nil check for OnFileDrop skip event when nil
* add error message for nil callback in OnFileDrop
---------
Co-authored-by: lyimmi <lelvente.zambo@gmail.com>
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
* implement native drag and drop for macOS (#3250)
* implement native drag and drop for macOS
* update docs
* add to changelog
* update docs (macOS is supported)
* Fix windows DragAndDrop options
* Fix class unset on dragleave for full frame elements
* improve class unset (nested elements and borders case)
* Fix runtime drop target detection and CSS class assignment
* Edit changelog
* Fix drag-and-drop options in references
* Update v2/internal/frontend/desktop/darwin/WailsWebView.m
* Update v2/internal/frontend/desktop/darwin/WailsWebView.m
---------
Co-authored-by: Zámbó, Levente <levente.zambo@gmail.com>
Co-authored-by: lyimmi <lelvente.zambo@gmail.com>
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
Co-authored-by: Andrey Pshenkin <andrey.pshenkin@gmail.com>
Co-authored-by: Pavel Binar <pavel@beamtransfer.io>
* docs: add guides ide change goland option and reference cli add options vscode or goland
* docs: update changelog for ide options
* docs: fix typo golang to goland
* Fix docs for JS return types in Window API
These functions return promises, not raw values.
* Update changelog.mdx for Window API docs fix
* Fix non-versioned docs for JS Window API return types
* Fix docs typo
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
---------
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
* feat: add windows options supports `IsPinchZoomEnabled` configuration(#2021)
* refactor: modify `IsPinchZoomEnabled` to `DisablePinchZoom` ensure default behavior is consistent
* docs: add `DisablePinchZoom` to changelog
* docs: update the description of `DisablePinchZoom` attributes in the document
---------
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
* Add support to output ts models as interfaces
* Add support to generate enums from golang
* cleanup logs
* add missing documentation
* fix package names for enum. Fix processing enums that are in separate packages
* revert golang 1.21
* Fix spelling
* Add support for simplified version of Enum for typescriptify
* update docs
* removed unused logs
* Add tests. Fix imported enums types in models
---------
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
* [v2] Support Enabling/Disabling swipe gestures
* [v2] Update change log
* [v2] Remove old call to PutIsSwipeNavigationEnabled
* Use latest webview2
* Update go-webview2 mod version