Commit graph

339 commits

Author SHA1 Message Date
Lea Anthony
55277fd695
feature: V3 alpha feature/snapassist support (#4463)
* initial implementation

* Push missed files

* linux fix

* Update changelog, runtime and docs.
2025-08-02 16:59:49 +10:00
Zach Botterman
23bf36d36f
[v3] improve service names for js/ts bindings (#4405)
* name services

* update badge service with new app api

* update examples

* add dist dirs

* update changelog

* fix up examples

* Fix changelog

---------

Co-authored-by: Zach <zach@Zachs-MacBook-Pro-2.local>
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-07-25 09:23:22 +10:00
Atterpac
101b09676d Merge remote-tracking branch 'wails/v3-alpha' into v3/deeplink 2025-07-15 08:54:46 -06:00
Atterpac
5b88b485a9
window.ToggleFrameless() api (#4317)
* `window.ToggleFrameless() api`

* changelog and runtime version bump

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-07-15 22:53:21 +10:00
Atterpac
c15155b29b fix custom protocol example to new api 2025-07-12 19:13:13 -06:00
Atterpac
6857fb840a build example dist 2025-07-12 19:03:13 -06:00
Atterpac
d3d95e07d1 Merge remote-tracking branch 'wails/v3-alpha' into v3/deeplink 2025-07-12 00:32:13 -06:00
Lea Anthony
3087ba0bdc
Refactor Manager API to use singular naming convention (#4367)
* Refactor Manager API to use singular naming convention

This is a RENAME-ONLY exercise that converts the Wails v3 Manager API from plural to singular naming for better consistency and clarity.

## Changes Applied

### API Transformations:
- `app.Windows.*` → `app.Window.*`
- `app.Events.*` → `app.Event.*`
- `app.ContextMenus.*` → `app.ContextMenu.*`
- `app.KeyBindings.*` → `app.KeyBinding.*`
- `app.Dialogs.*` → `app.Dialog.*`
- `app.Menus.*` → `app.Menu.*`
- `app.Screens.*` → `app.Screen.*`

### Files Updated:
- **Core Application**: 22 files in `v3/pkg/application/`
- **Examples**: 43+ files in `v3/examples/`
- **Documentation**: 13 files in `docs/src/content/docs/`
- **CLI Tests**: 1 file in `v3/internal/commands/`

### Critical Constraints Preserved:
-  Event string constants unchanged (e.g., "windows:WindowShow")
-  Platform event names preserved (events.Windows, events.Mac, etc.)
-  TypeScript API remains compatible
-  All functionality intact

### Verification:
-  All examples build successfully (`task test:examples` passes)
-  Application package compiles without errors
-  Documentation reflects new API patterns

## Benefits

- **Improved Clarity**: Singular names are more intuitive (`app.Window` vs `app.Windows`)
- **Better Consistency**: Aligns with Go naming conventions
- **Enhanced Developer Experience**: Clearer autocomplete and API discovery

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Fix generator testcases and add cross-platform test cleanup

- Update 28 generator testcase files to use singular API (app.Window.New() vs app.Windows.New())
- Add cross-platform cleanup system with Go script to remove test artifacts
- Add test:all task with comprehensive testing and automatic cleanup
- Fix cleanup to target files vs directories correctly (preserves source directories)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Fix remaining Windows CI failures by updating all plural API usage to singular

Fixed the last remaining instances of old plural Manager API usage:
- tests/window-visibility-test/main.go: Updated all app.Windows -> app.Window and app.Menus -> app.Menu
- internal/templates/_common/main.go.tmpl: Updated app.Windows -> app.Window and app.Events -> app.Event
- pkg/services/badge/badge_windows.go: Updated app.Windows -> app.Window (Windows-specific fix)

These fixes address the Windows CI failures where platform-specific files still used the old API.
The tests didn't catch this locally because Windows-specific files only compile on Windows.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-06-22 12:19:14 +10:00
Lea Anthony
66ad93d9d5
feat: Complete App API restructuring with organized manager pattern (#4359)
* Initial refactor

* More refactoring of API

* Update gitignore

* Potential fix for code scanning alert no. 134: Incorrect conversion between integer types

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Update v3/internal/generator/testcases/variable_single_from_function/main.go

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update v3/pkg/application/context_menu_manager.go

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update v3/pkg/application/event_manager.go

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update v3/pkg/application/context_menu_manager.go

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Fix build issues

* Fix build issues

* Address CodeRabbitAI review feedback: fix goroutines, error handling, and resource management

- Fix infinite goroutines with proper context cancellation and ticker cleanup
- Add error handling to window creation calls
- Prevent unbounded slice growth in gin-service and screen examples
- Use graceful shutdown patterns with app.Context().Done()

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Fix manager API refactor issues and complete all v3 example builds

- Fixed slices import missing in event_manager.go
- Changed contextMenusLock from sync.Mutex to sync.RWMutex for RLock/RUnlock compatibility
- Updated all globalApplication calls to use new manager pattern (Windows.Current, Events.OnApplicationEvent, etc.)
- Fixed Events.Emit vs Events.EmitEvent method signature mismatch
- Corrected NewWithOptions calls (returns 1 value, not 2) in examples
- Added comprehensive .gitignore patterns for all v3 example binaries
- All 34 v3 examples now build successfully

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Fix Linux platform manager API calls

- Updated events_common_linux.go: OnApplicationEvent → Events.OnApplicationEvent
- Updated application_linux.go: OnApplicationEvent → Events.OnApplicationEvent
- Ensures Linux builds work with new manager pattern

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Fix remaining NewWithOptions assignment errors in examples

- Fixed badge/main.go: removed assignment mismatch and unused variable
- Fixed badge-custom/main.go: removed assignment mismatch and variable reuse
- Fixed file-association/main.go: removed assignment mismatch and unused variable
- All examples now use correct single-value assignment for NewWithOptions()

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Implement multi-architecture Docker compilation system for Linux builds

### New Features
- **Multi-Architecture Support**: Native ARM64 and x86_64 Docker compilation
- **Auto-Detection**: Automatic architecture detection in Taskfile tasks
- **Complete Cross-Platform Testing**: 129 builds (43 examples × 3 platforms)

### Docker Infrastructure
- `Dockerfile.linux-arm64`: Ubuntu 24.04 ARM64 native compilation
- `Dockerfile.linux-x86_64`: Ubuntu 24.04 x86_64 native compilation
- Architecture-specific build scripts with colored output and error handling
- Native compilation eliminates CGO cross-compilation issues

### Task System Updates
- **New Tasks**: `test:examples:all` for complete cross-platform testing
- **Architecture-Specific**: `test:examples:linux:docker:arm64/x86_64`
- **Auto-Detection**: `test:example:linux:docker` detects host architecture
- **Clear Parameter Usage**: Documented when DIR parameter is/isn't needed

### Build Artifacts
- Architecture-specific naming: `testbuild-{example}-linux-{arch}`
- ARM64: `testbuild-badge-linux-arm64`
- x86_64: `testbuild-badge-linux-x86_64`

### Documentation
- Complete TESTING.md overhaul with multi-architecture support
- Clear command reference distinguishing single vs all example builds
- Updated build performance estimates (10-15 minutes for 129 builds)
- Comprehensive troubleshooting and usage examples

### Infrastructure Cleanup
- Removed deprecated `Dockerfile.linux-proper`
- Updated .gitignore for new build artifact patterns
- Streamlined Taskfile with architecture-aware Linux tasks

**Status**: Production-ready multi-architecture Docker compilation system

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Fix CLI appimage testfiles API migration and add to testing system

### API Migration Fixes
- **Event Registration**: Updated `app.OnApplicationEvent()` → `app.Events.OnApplicationEvent()`
- **Window Manager**: Updated `app.CurrentWindow()` → `app.Windows.Current()`
- **Window Creation**: Updated `app.NewWebviewWindowWithOptions()` → `app.Windows.NewWithOptions()`
- **Menu Manager**: Updated `app.SetMenu()` → `app.Menus.SetApplicationMenu()`
- **Screen API**: Updated `app.GetPrimaryScreen()/GetScreens()` → `app.Screens.GetPrimary()/GetAll()`

### Testing System Enhancement
- **New Task**: `task test:cli` for CLI-related code compilation testing
- **Integration**: Added CLI testing to `task test:examples` and `task test:examples:all`
- **Documentation**: Updated TESTING.md to include CLI code testing

### Files Fixed
- `internal/commands/appimage_testfiles/main.go`: Complete API migration
- `Taskfile.yaml`: Added CLI testing tasks and integration
- `TESTING.md`: Updated documentation to reflect CLI testing

This ensures CLI code API migrations are caught by our testing system and prevents
future build breakages in CLI components.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Enhance testing infrastructure and fix API migration issues across v3 codebase

This commit introduces comprehensive testing infrastructure to catch API migration issues and fixes all remaining compatibility problems:

## Enhanced Testing Infrastructure
- Added `test:cli:all` task to validate CLI components compilation
- Added `test:generator` task to test code generator test cases
- Added `test:infrastructure` task for comprehensive infrastructure testing
- Updated `test:examples` to include CLI testing automatically

## API Migration Fixes
- Fixed manager-based API calls in window visibility test (app.Windows.NewWithOptions)
- Fixed manager-based API calls in screen manager tests (sm.GetAll, sm.GetPrimary)
- Fixed event registration API in 6 service test files (app.Events.OnApplicationEvent)
- Updated menu API calls (app.Menus.SetApplicationMenu)

## Cross-Platform Validation
- All 43 examples compile successfully on Darwin
- CLI components compile without errors
- Generator test cases validate correctly
- Application package tests pass compilation

The enhanced testing system integrates with existing GitHub Actions CI/CD and will automatically catch future API migration issues, ensuring ecosystem stability as the v3 API evolves.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Fix template API migration issues and add comprehensive template testing

This commit resolves the GitHub Actions template generation failures by fixing API migration issues in the template source files and adding comprehensive template testing to the infrastructure.

## Template API Fixes
- Fixed `app.NewWebviewWindowWithOptions()` → `app.Windows.NewWithOptions()` in main.go.tmpl
- Fixed `app.EmitEvent()` → `app.Events.Emit()` in main.go.tmpl
- Updated the _common template used by all framework templates (lit, react, vue, etc.)

## Enhanced Testing Infrastructure
- Added `test:templates` task to validate template generation and compilation
- Tests lit and react template generation with API migration validation
- Integrated template testing into `test:infrastructure` task
- Templates now tested alongside CLI components, generator, and application tests

## GitHub Actions Compatibility
- Resolves template generation failures in CI/CD pipeline
- Ensures all generated projects use correct manager-based API calls
- Maintains template consistency across all supported frameworks

The template testing validates that generated projects compile successfully with the new manager-based API pattern, preventing future template generation failures in GitHub Actions.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Reorganize Docker testing files into test directory

- Move Dockerfiles from root to test/docker/
- Update all Taskfile.yaml Docker build paths
- Update TESTING.md documentation
- Maintain full backward compatibility

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Address CodeRabbit review: improve resource management and API patterns

- Store event handler cleanup functions for proper resource management
- Fix goroutine management with context-aware cancellation patterns
- Add documentation for error handling best practices
- Improve API consistency across examples

Examples updated:
- plain: Fixed event handlers and goroutine lifecycle
- badge: Added cleanup function storage
- gin-example: Proper event handler management
- gin-service: Service lifecycle cleanup

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Address CodeRabbit nitpicks: optimize Docker images and docs

Docker Optimizations:
- Add --no-install-recommends and apt-get clean for smaller images
- Add SHA256 checksum verification for Go downloads
- Remove unnecessary GO111MODULE env (default in Go 1.16+)
- Add hadolint ignore for here-doc blocks

Build Enhancements:
- Add --pull flag to Docker builds for fresh base images
- Improve build reliability and consistency

Documentation Fixes:
- Add proper language tags to code blocks (bash, text)
- Fix heading formatting and remove trailing punctuation
- Improve syntax highlighting and readability

Files updated:
- test/docker/Dockerfile.linux-arm64
- test/docker/Dockerfile.linux-x86_64
- Taskfile.yaml
- TESTING.md

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Update changelog: document Manager API refactoring and improvements

Breaking Changes:
- Manager API Refactoring: Complete reorganization from flat structure
  to organized managers (Windows, Events, Dialogs, etc.)
- Comprehensive API migration guide with all method mappings
- References PR #4359 for full context

Added:
- Organized testing infrastructure in test/docker/ directory
- Improved resource management patterns in examples
- Enhanced Docker images with optimizations and security

This documents the major architectural changes and improvements
made to the Wails v3 API and development infrastructure.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Support cross-platform testing

---------

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-06-21 19:51:14 +10:00
Lea Anthony
edfa223e2f chore: Remove documentation files from v3-alpha branch
Remove CLAUDE.md and API_MANAGERS.md files that were not intended
for this branch. The Windows compilation fixes remain intact.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 00:26:01 +10:00
Lea Anthony
5452135dcb fix: Resolve Windows compilation errors blocking CI builds
Fixes two Windows-specific compilation issues that were preventing
GitHub Actions builds from passing:

## Issues Fixed

### 1. chromium.PutIsVisible undefined error
- **Problem**: Method call `chromium.PutIsVisible(true)` not available in
  current go-webview2 package version
- **Solution**: Commented out the call with TODO note for future restoration
- **File**: pkg/application/webview_window_windows.go:1686-1690
- **Impact**: Temporarily disables efficiency mode prevention until method available

### 2. Variable redeclaration error
- **Problem**: `err` variable redeclared with `:=` in same function scope
- **Solution**: Changed second assignment from `:=` to `=` for proper reassignment
- **File**: pkg/application/systemtray_windows.go:65
- **Context**: iconIsInTrayBounds assignment in positionWindow function

## Additional Changes

- Added CLAUDE.md for development guidance
- Added API_MANAGERS.md documenting new manager-based API structure
- Implemented functional DMG package creation (internal/commands/dmg/)
- Restored DMG support in CLI tool with proper validation

## Verification
-  Commands package builds successfully
-  Main CLI builds successfully
-  Tests run without compilation errors
-  Example builds pass

Resolves GitHub Actions Windows build failures introduced in recent commits.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 00:21:08 +10:00
Lea Anthony
1d75dd030f feat: Add Windows UAC configuration support to Wails v3
- Add UAC trustInfo section to Windows manifest template with default 'asInvoker' execution level
- Update badge example manifest to include UAC configuration
- Add comprehensive documentation for Windows UAC configuration
- Ensure consistent UAC behavior across different machines

Fixes issue where Windows applications lost admin requirements when copied between machines.
The UAC configuration is now always present in the manifest, making it explicit and easily
customizable by users since v3 expects users to edit their own build assets.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-12 22:23:09 +10:00
Atterpac
a1c26a3fd9 remove unneeded from example 2025-05-18 16:47:56 -04:00
Atterpac
dd206c4b67 custom protocol example 2025-05-18 16:32:33 -04:00
Lea Anthony
fa5b486966
Dependency updates 2025-05-15 06:26:20 +10:00
Lea Anthony
2abd05f783
Merge pull request #4234 from popaprozac/dock-badge
[V3] Badging
2025-04-28 22:27:50 +10:00
popaprozac
900da01ad7 add set custom badge and update docs/examples/readmes 2025-04-26 23:49:07 -07:00
popaprozac
51c0d1dcdc update headers 2025-04-26 22:58:06 -07:00
popaprozac
af3c6afb3b update docs and readmes 2025-04-26 22:52:14 -07:00
dingda.li
c922a7e685 fix: restore hidden menuitem at correct position 2025-04-27 12:00:13 +08:00
Lea Anthony
8d9dc19e17
Update badge-custom example 2025-04-26 15:40:48 +10:00
Lea Anthony
e9916158c0
Add badge options. Add new example. 2025-04-26 14:40:22 +10:00
Lea Anthony
5154f0b60f
Add FontManager to better handle fonts. Remove the go-findfont dependency. Add Go examples. 2025-04-25 15:17:39 +10:00
Lea Anthony
9fa596780b
Include assets in example 2025-04-25 14:23:24 +10:00
popaprozac
b55f4ea8e3 add example, update docs, update changelog 2025-04-24 15:47:14 -07:00
popaprozac
9fcede47f7 windows improvements 2025-04-22 14:23:32 -07:00
Lea Anthony
6344a8a553
Merge branch 'v3-alpha' into v3-alpha-bugfix/gin-support 2025-04-18 15:57:41 +10:00
Lea Anthony
1f5e9852e4
Update v3/examples/gin-service/services/gin_service.go
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-04-18 15:49:41 +10:00
Lea Anthony
e97c390f12
Update v3/examples/gin-service/README.md
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-04-18 15:47:59 +10:00
yulesxoxo
a9c031155a fix: correct Windows filename in generate:icons task 2025-04-16 15:22:05 +02:00
Lea Anthony
be1d500974
Update v3/examples/notifications/build/windows/nsis/wails_tools.nsh
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-04-12 13:21:58 +10:00
popaprozac
af5abda8b1 update example 2025-03-24 21:34:10 -07:00
popaprozac
276c653b1d update example 2025-03-24 20:22:29 -07:00
popaprozac
b102279630 update example 2025-03-24 16:05:57 -07:00
popaprozac
b60ef7729e coderabbit impr 2025-03-18 22:46:44 -07:00
popaprozac
e4e24a0f00 clean 2025-03-18 21:18:16 -07:00
Zach Botterman
6d15f08db4
Merge branch 'v3-alpha' into notifications_darwin 2025-03-14 23:46:04 -07:00
popaprozac
e46abdc793 update example 2025-03-14 19:05:27 -07:00
Zach Botterman
e4ec06a9c8 update example 2025-03-13 23:33:17 -07:00
Jason Kulatunga
da99ea47b0
Update docs + examples.
Serve runtime from assetserver if requested.
Add gin guide, fix asset server merge, add gin example
adding http.CloseNotifier and http.Flusher interface to assetserver.contentTypeSniffer, for Gin (and other framework) compatibility.
2025-03-11 21:06:57 +11:00
Lea Anthony
b72782c35d
Update docs + examples.
Serve runtime from assetserver if requested.
2025-03-11 08:50:03 +11:00
Lea Anthony
e4d6e54c63
Add gin guide, fix asset server merge, add gin example 2025-03-09 15:58:50 +11:00
Lea Anthony
15b9118077
Add gin example 2025-03-09 14:38:46 +11:00
Lea Anthony
866fb36b67
Add fix for application menu. Add docs 2025-03-08 11:25:06 +11:00
Ian VanSchooten
dc662b561a
Revert systray-custom example changes 2025-03-08 11:25:06 +11:00
Ian VanSchooten
35cc7fd569
Avoid adding duplicate menuitems (windows)
Previously, when calling `.SetHidden(false)` on a menu item that was not hidden, a duplicate menu item was created.
2025-03-08 11:25:05 +11:00
Ian VanSchooten
5fb1a14c36
Fix registration of hidden menuItem [mac] 2025-03-08 11:25:05 +11:00
Lea Anthony
f87dce15ea
Merge branch 'v3-alpha' into fork/fbbdev/v3-alpha-feature/service-api
# Conflicts:
#	docs/src/content/docs/changelog.mdx
#	v3/examples/services/assets/bindings/github.com/wailsapp/wails/v3/pkg/services/kvstore/keyvaluestore.js
#	v3/examples/services/assets/bindings/github.com/wailsapp/wails/v3/pkg/services/log/loggerservice.js
#	v3/examples/services/assets/bindings/github.com/wailsapp/wails/v3/pkg/services/sqlite/service.js
2025-03-01 16:33:11 +11:00
Zach Botterman
acad85e603 update example 2025-02-25 15:59:27 -08:00
Zach Botterman
60c1a866f3 update example 2025-02-25 11:37:11 -08:00