mirror of
https://github.com/wailsapp/wails.git
synced 2026-03-14 14:45:49 +01:00
* feat: Implement native Liquid Glass effect for macOS feat: Add platform check for Liquid Glass demo Show informative dialog on Windows/Linux explaining that the Liquid Glass effect is a macOS-specific feature. The demo will exit gracefully on non-macOS platforms. docs: Add Liquid Glass feature to unreleased changelog feat: Enhanced Liquid Glass effect with NSVisualEffectMaterial support Major improvements to the Liquid Glass implementation for macOS: - Added comprehensive NSVisualEffectMaterial support with 15+ material options - Removed debug NSLog statements for cleaner production code - Created multi-window demo showcasing 7 different glass effects: * Light Style - Clean light appearance * Dark Style - Dark themed glass * Vibrant Style - Enhanced transparency * Blue Tint - Custom RGBA tint color example * Sheet Material - NSVisualEffectMaterialSheet * HUD Window - Ultra-light HUD material * Content Background - With warm tint color - Added Material field to MacLiquidGlass struct for fine-grained control - Improved demo design with proper Title Case and cleaner layout - Fixed logo sizing to prevent blur - All windows fully draggable with InvisibleTitleBarHeight - Added comprehensive README documentation The implementation now provides developers with complete control over the glass effect appearance, supporting both native NSGlassEffectView (macOS 15.0+) and NSVisualEffectView fallback for older systems. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> feat: Implement native Liquid Glass effect for macOS - Add support for NSGlassEffectView on macOS 15.0+ - Implement runtime detection of native glass APIs - Add fallback to enhanced NSVisualEffectView for older systems - Update liquid glass demo with frameless windows for better visibility - Support all NSGlassEffectView properties (cornerRadius, tintColor, style) - Properly handle webview layering with glass effect - Remove binary from version control 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * fix: Address CodeRabbit review feedback - Comment out unimplemented ReduceMotion and StaticMode fields - Remove overly broad draggable CSS properties - Add corner radius validation - Improve CSS with proper pointer-events and user-select - Add clarifying comments about future features * fix: Remove unimplemented ReduceMotion and StaticMode fields Completely remove the commented-out performance optimization fields as they are not implemented and have no timeline for implementation. * fix: Update windowRemoveVisualEffects to also remove NSGlassEffectView instances The cleanup function now properly removes both NSVisualEffectView and NSGlassEffectView instances to prevent orphaned effect layers. Uses NSClassFromString to avoid hard references to NSGlassEffectView which is only available on macOS 15.0+. * fix changelog * Update v3/pkg/application/webview_window_darwin.m Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update v3/pkg/application/webview_window_darwin.m Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * fix: Fix compilation errors in windowSetLiquidGlass - Add missing NSGlassEffectViewStyle enum definition - Fix undefined tintColor variable by creating NSColor before use - Add autorelease to prevent memory leaks for allocated views These issues were causing CI build failures while working locally due to different compiler settings. * Update Taskfile.yaml * feat: Implement groupID and groupSpacing for NSGlassEffectView - Add runtime detection for groupIdentifier/groupName selectors - Apply groupID via performSelector if supported - Apply groupSpacing via KVC if supported - Parameters are now functional when NSGlassEffectView supports them - Maintains backward compatibility by checking selector availability * test: Add liquid-glass example to test suite - Add liquid-glass to EXAMPLEDIRS in Taskfile.yaml - Ensures the example is tested during CI builds - Validates compilation on different platforms Addresses review comment about missing test coverage * fix: Correct NSGlassEffectView availability to macOS 26.0 - Update @available checks from macOS 15.0 to 26.0 for NSGlassEffectView - NSGlassEffectView is a private API introduced in macOS 26.0 - Update README to reflect correct version requirement - Keep NSVisualEffectMaterial checks at 15.0 as those are different APIs * fix: Prevent exceptions from unsafe WebView reparenting - Remove early WebView addition to glassView.contentView - Consolidate all WebView reparenting in one safe location - Always call removeFromSuperview before adding to new parent - Set frame and autoresizing mask after safe reparenting - Prevents NSInternalInconsistencyException from multiple parents * fix: Make WebView reparenting more robust and thread-safe - Always call removeFromSuperview before adding to new parent - Remove brittle superview check, always detach and reattach - Check both webView and glassContentView are non-nil before operations - Ensure all UI operations run on main thread with dispatch_sync - Set frame and autoresizing mask after safe reparenting * Tidy up * Update changelog --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
371 lines
11 KiB
YAML
371 lines
11 KiB
YAML
# https://taskfile.dev
|
|
|
|
version: "3"
|
|
|
|
includes:
|
|
generator:
|
|
taskfile: ./internal/generator
|
|
dir: ./internal/generator
|
|
|
|
runtime:
|
|
taskfile: ./internal/runtime
|
|
dir: ./internal/runtime
|
|
|
|
website:
|
|
taskfile: ./website
|
|
dir: ./website
|
|
optional: true
|
|
|
|
docs:
|
|
taskfile: ../docs
|
|
dir: ../docs
|
|
optional: true
|
|
|
|
tasks:
|
|
recreate-template-dir:
|
|
dir: internal/templates
|
|
internal: true
|
|
silent: true
|
|
cmds:
|
|
- rm -rf {{.TEMPLATE_DIR}}
|
|
- mkdir -p {{.TEMPLATE_DIR}}
|
|
|
|
install:
|
|
dir: cmd/wails3
|
|
silent: true
|
|
cmds:
|
|
- go install
|
|
- echo "Installed wails CLI"
|
|
|
|
release:
|
|
summary: Release a new version of Wails. Call with `task v3:release -- <version>`
|
|
dir: tasks/release
|
|
cmds:
|
|
- go run release.go {{.CLI_ARGS}}
|
|
|
|
taskfile:upgrade:
|
|
cmds:
|
|
- go get -u github.com/go-task/task/v3
|
|
|
|
reinstall-cli:
|
|
dir: cmd/wails3
|
|
internal: true
|
|
silent: true
|
|
cmds:
|
|
- go install
|
|
- echo "Reinstalled wails CLI"
|
|
|
|
generate:events:
|
|
dir: tasks/events
|
|
cmds:
|
|
- go run generate.go
|
|
- go fmt ../../pkg/events/events.go
|
|
|
|
precommit:
|
|
cmds:
|
|
- go test ./...
|
|
- task: format
|
|
# - task: docs:update:api
|
|
|
|
test:example:darwin:
|
|
dir: 'examples/{{.DIR}}'
|
|
platforms:
|
|
- darwin
|
|
cmds:
|
|
- echo "Building example {{.DIR}} for Darwin"
|
|
- go mod tidy
|
|
- go build -o "testbuild-{{.DIR}}-darwin{{exeExt}}"
|
|
env:
|
|
CGO_LDFLAGS: -framework UniformTypeIdentifiers -mmacosx-version-min=10.13
|
|
CGO_CFLAGS: -mmacosx-version-min=10.13
|
|
|
|
test:example:windows:
|
|
dir: 'examples/{{.DIR}}'
|
|
platforms:
|
|
- windows
|
|
cmds:
|
|
- echo "Building example {{.DIR}} for Windows"
|
|
- go mod tidy
|
|
- go build -o "testbuild-{{.DIR}}-windows.exe"
|
|
env:
|
|
GOOS: windows
|
|
GOARCH: amd64
|
|
|
|
test:example:linux:
|
|
dir: 'examples/{{.DIR}}'
|
|
platforms:
|
|
- linux
|
|
cmds:
|
|
- echo "Building example {{.DIR}} for Linux"
|
|
- go mod tidy
|
|
- go build -o "testbuild-{{.DIR}}-linux"
|
|
|
|
test:example:linux:docker:arm64:
|
|
summary: Build a single example for Linux ARM64 using Docker (Ubuntu 24.04)
|
|
cmds:
|
|
- echo "Building example {{.DIR}} for Linux ARM64 using Docker"
|
|
- docker build --pull -f test/docker/Dockerfile.linux-arm64 -t wails-v3-linux-arm64 .
|
|
- docker run --rm wails-v3-linux-arm64 /build/build-linux-arm64.sh {{.DIR}}
|
|
|
|
test:example:linux:docker:x86_64:
|
|
summary: Build a single example for Linux x86_64 using Docker (Ubuntu 24.04)
|
|
cmds:
|
|
- echo "Building example {{.DIR}} for Linux x86_64 using Docker"
|
|
- docker build --pull -f test/docker/Dockerfile.linux-x86_64 -t wails-v3-linux-x86_64 .
|
|
- docker run --rm wails-v3-linux-x86_64 /build/build-linux-x86_64.sh {{.DIR}}
|
|
|
|
test:examples:linux:docker:arm64:
|
|
summary: Build all examples for Linux ARM64 using Docker (Ubuntu 24.04)
|
|
cmds:
|
|
- echo "Building Docker image for Linux ARM64 compilation..."
|
|
- docker build --pull -f test/docker/Dockerfile.linux-arm64 -t wails-v3-linux-arm64 .
|
|
- echo "Running Linux ARM64 compilation in Docker container..."
|
|
- docker run --rm wails-v3-linux-arm64
|
|
|
|
test:examples:linux:docker:x86_64:
|
|
summary: Build all examples for Linux x86_64 using Docker (Ubuntu 24.04)
|
|
cmds:
|
|
- echo "Building Docker image for Linux x86_64 compilation..."
|
|
- docker build --pull -f test/docker/Dockerfile.linux-x86_64 -t wails-v3-linux-x86_64 .
|
|
- echo "Running Linux x86_64 compilation in Docker container..."
|
|
- docker run --rm wails-v3-linux-x86_64
|
|
|
|
test:example:linux:docker:
|
|
summary: Build a single example for Linux using Docker (auto-detect architecture)
|
|
cmds:
|
|
- echo "Auto-detecting architecture for Linux Docker build..."
|
|
- |
|
|
if [ "$(uname -m)" = "arm64" ] || [ "$(uname -m)" = "aarch64" ]; then
|
|
echo "Detected ARM64, using ARM64 Docker image"
|
|
task test:example:linux:docker:arm64 DIR={{.DIR}}
|
|
else
|
|
echo "Detected x86_64, using x86_64 Docker image"
|
|
task test:example:linux:docker:x86_64 DIR={{.DIR}}
|
|
fi
|
|
|
|
test:examples:linux:docker:
|
|
summary: Build all examples for Linux using Docker (auto-detect architecture)
|
|
cmds:
|
|
- echo "Auto-detecting architecture for Linux Docker build..."
|
|
- |
|
|
if [ "$(uname -m)" = "arm64" ] || [ "$(uname -m)" = "aarch64" ]; then
|
|
echo "Detected ARM64, using ARM64 Docker image"
|
|
task test:examples:linux:docker:arm64
|
|
else
|
|
echo "Detected x86_64, using x86_64 Docker image"
|
|
task test:examples:linux:docker:x86_64
|
|
fi
|
|
|
|
test:examples:all:
|
|
summary: Builds all examples for all platforms (Mac + Windows + Linux via Docker)
|
|
vars:
|
|
EXAMPLEDIRS: |
|
|
badge
|
|
badge-custom
|
|
binding
|
|
build
|
|
cancel-async
|
|
cancel-chaining
|
|
clipboard
|
|
contextmenus
|
|
dev
|
|
dialogs
|
|
dialogs-basic
|
|
drag-n-drop
|
|
environment
|
|
events
|
|
events-bug
|
|
file-association
|
|
frameless
|
|
gin-example
|
|
gin-routing
|
|
gin-service
|
|
hide-window
|
|
html-dnd-api
|
|
ignore-mouse
|
|
keybindings
|
|
liquid-glass
|
|
menu
|
|
notifications
|
|
panic-handling
|
|
plain
|
|
raw-message
|
|
screen
|
|
services
|
|
show-macos-toolbar
|
|
single-instance
|
|
systray-basic
|
|
systray-custom
|
|
systray-menu
|
|
video
|
|
window
|
|
window-api
|
|
window-call
|
|
window-menu
|
|
wml
|
|
cmds:
|
|
- echo "Building all examples for all platforms..."
|
|
- echo "=== Building for Darwin ==="
|
|
- for: { var: EXAMPLEDIRS }
|
|
task: test:example:darwin
|
|
vars:
|
|
DIR: "{{.ITEM}}"
|
|
- echo "=== Building for Windows (cross-compile) ==="
|
|
- for: { var: EXAMPLEDIRS }
|
|
task: test:example:windows
|
|
vars:
|
|
DIR: "{{.ITEM}}"
|
|
- echo "=== Building for Linux (Docker) ==="
|
|
- task: test:examples:linux:docker
|
|
- echo "=== Testing CLI Code ==="
|
|
- task: test:cli
|
|
- echo "=== Cleaning Up Test Binaries ==="
|
|
- task: clean:test:binaries
|
|
|
|
test:cli:
|
|
summary: Test CLI-related code compilation
|
|
cmds:
|
|
- echo "Testing CLI appimage testfiles compilation..."
|
|
- cd internal/commands/appimage_testfiles && go mod tidy && go build
|
|
- echo "✅ CLI appimage testfiles compile successfully"
|
|
|
|
test:cli:all:
|
|
summary: Test all CLI components and critical test files
|
|
cmds:
|
|
- echo "Testing CLI appimage testfiles..."
|
|
- cd internal/commands/appimage_testfiles && go mod tidy && go build
|
|
- echo "Testing window visibility test..."
|
|
- cd tests/window-visibility-test && go mod tidy && go build
|
|
- echo "Testing service implementations..."
|
|
- cd pkg/services/badge && go build
|
|
- echo "✅ All CLI components compile successfully"
|
|
|
|
test:generator:
|
|
summary: Test code generator test cases compilation
|
|
cmds:
|
|
- echo "Testing generator test cases (sample)..."
|
|
- cd internal/generator/testcases/function_single && go mod tidy && go build
|
|
- cd internal/generator/testcases/complex_method && go mod tidy && go build
|
|
- cd internal/generator/testcases/struct_literal_single && go mod tidy && go build
|
|
- echo "✅ Generator test cases compile successfully"
|
|
|
|
test:templates:
|
|
summary: Test template generation for core templates
|
|
cmds:
|
|
- echo "Testing template generation (core templates)..."
|
|
- task: install
|
|
- echo "Testing lit template generation..."
|
|
- rm -rf ./test-template-lit && wails3 init -n test-template-lit -t lit
|
|
- mkdir -p ./test-template-lit/frontend/dist && touch ./test-template-lit/frontend/dist/.keep
|
|
- cd ./test-template-lit && go mod tidy && go build
|
|
- rm -rf ./test-template-lit
|
|
- echo "Testing react template generation..."
|
|
- rm -rf ./test-template-react && wails3 init -n test-template-react -t react
|
|
- mkdir -p ./test-template-react/frontend/dist && touch ./test-template-react/frontend/dist/.keep
|
|
- cd ./test-template-react && go mod tidy && go build
|
|
- rm -rf ./test-template-react
|
|
- echo "✅ Template generation tests completed successfully"
|
|
|
|
test:infrastructure:
|
|
summary: Test critical infrastructure components
|
|
cmds:
|
|
- echo "=== Testing CLI Components ==="
|
|
- task: test:cli:all
|
|
- echo "=== Testing Generator ==="
|
|
- task: test:generator
|
|
- echo "=== Testing Templates ==="
|
|
- task: test:templates
|
|
- echo "=== Testing pkg/application ==="
|
|
- cd pkg/application && go test -c -o /dev/null ./...
|
|
- echo "=== Cleaning Up Test Binaries ==="
|
|
- task: clean:test:binaries
|
|
- echo "✅ All infrastructure components test successfully"
|
|
|
|
test:examples:
|
|
summary: Builds the examples for current platform only
|
|
vars:
|
|
EXAMPLEDIRS: |
|
|
badge
|
|
badge-custom
|
|
binding
|
|
build
|
|
cancel-async
|
|
cancel-chaining
|
|
clipboard
|
|
contextmenus
|
|
dev
|
|
dialogs
|
|
dialogs-basic
|
|
drag-n-drop
|
|
environment
|
|
events
|
|
events-bug
|
|
file-association
|
|
frameless
|
|
gin-example
|
|
gin-routing
|
|
gin-service
|
|
hide-window
|
|
html-dnd-api
|
|
ignore-mouse
|
|
keybindings
|
|
liquid-glass
|
|
menu
|
|
notifications
|
|
panic-handling
|
|
plain
|
|
raw-message
|
|
screen
|
|
services
|
|
show-macos-toolbar
|
|
single-instance
|
|
systray-basic
|
|
systray-custom
|
|
systray-menu
|
|
video
|
|
window
|
|
window-api
|
|
window-call
|
|
window-menu
|
|
wml
|
|
cmds:
|
|
- echo "Testing examples compilation..."
|
|
- for: { var: EXAMPLEDIRS }
|
|
task: test:example:darwin
|
|
vars:
|
|
DIR: "{{.ITEM}}"
|
|
platforms: [darwin]
|
|
- for: { var: EXAMPLEDIRS }
|
|
task: test:example:linux
|
|
vars:
|
|
DIR: "{{.ITEM}}"
|
|
platforms: [linux]
|
|
- for: { var: EXAMPLEDIRS }
|
|
task: test:example:windows
|
|
vars:
|
|
DIR: "{{.ITEM}}"
|
|
platforms: [windows]
|
|
- echo "Testing CLI code..."
|
|
- task: test:cli
|
|
- echo "=== Cleaning Up Test Binaries ==="
|
|
- task: clean:test:binaries
|
|
|
|
clean:test:binaries:
|
|
summary: Clean up all test-generated binary files and directories (cross-platform)
|
|
cmds:
|
|
- echo "🧹 Cleaning up test binaries..."
|
|
- go run tasks/cleanup/cleanup.go
|
|
- echo "✅ Test binaries cleaned up"
|
|
|
|
test:all:
|
|
summary: Run all tests including examples, infrastructure, and Go unit tests
|
|
cmds:
|
|
- echo "=== Running Go Unit Tests ==="
|
|
- go test ./...
|
|
- echo "=== Testing Examples (Current Platform) ==="
|
|
- task: test:examples
|
|
- echo "=== Testing Infrastructure Components ==="
|
|
- task: test:infrastructure
|
|
- echo "=== Cleaning Up Test Binaries ==="
|
|
- task: clean:test:binaries
|
|
- echo "✅ All tests completed successfully"
|