Compare commits

...

1,818 commits

Author SHA1 Message Date
Lea Anthony
bc76ca97b3 Document Docker API version and fallback behavior
Add comment explaining that pullViaDockerAPI uses API v1.44 (Docker 25.0+)
and that older versions gracefully fall back to CLI-based pulling.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 22:04:31 +11:00
Lea Anthony
67913a2e9b Fix CI: restore dist/ for Go embed directive
The Go embed directive requires frontend/dist/* to exist at build time.
Reverting .gitignore change - dist/ must be tracked for CI to pass.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 21:11:06 +11:00
Lea Anthony
a9ed6b0d7d Fix CORS and Docker API error handling
- Remove unnecessary Access-Control-Allow-Origin: * from SSE endpoint
  (UI is served same-origin, no CORS needed)
- Return error when Docker API reports event.Error to trigger CLI fallback

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 21:09:43 +11:00
Lea Anthony
41811886d8 Remove unused formatBytes function
Only formatBytesMB is used in the codebase.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 19:48:44 +11:00
Lea Anthony
3726cba230 Fix CodeRabbit review comments
- Fix .gitignore: track public/ (source), ignore dist/ (build output)
- Apply beta/rc Go version parsing fix to Linux and Darwin
- Surface LoadGlobalDefaults error in signing status response

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 16:08:09 +11:00
Lea Anthony
80f6a71e05
Merge branch 'v3-alpha' into v3/feature/setup 2026-01-26 15:40:16 +11:00
Lea Anthony
59e99f35c9 Remove duplicate public/ dir and unused showcase images
- Add public/ to .gitignore (dist/ already contains copied files)
- Remove unused showcase images (only montage.png is used)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 15:39:15 +11:00
github-actions[bot]
279eea9799 chore(v3): bump to v3.0.0-alpha.64 and update changelog [skip ci] 2026-01-26 02:56:39 +00:00
Lea Anthony
af58b9e95b Fix Docker image name and stream error handling
- Use shared crossImageName constant in platform-specific wizard files
- Return error on non-EOF decode failures to trigger CLI fallback

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 13:23:58 +11:00
Lea Anthony
55aeb70c2c Update Build your own link to v3.wails.io
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 13:08:08 +11:00
Lea Anthony
e99a8917cf Reset stale Docker pull state when starting new pull
Clear PullError, BytesTotal, BytesDone, LayerCount, LayersDone, and
dockerBuildLogs when starting a new Docker pull to prevent stale UI state.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 12:56:51 +11:00
Lea Anthony
20f46380d4 Improve wizard UX and fix CodeRabbit issues
- Add docker-options intermediate step with two choices:
  - "Download official image" (red outline) → SDK license → download
  - "Build your own image" (gray outline) → opens docs in new tab
- Update SDK license page to match other pages (back button at bottom)
- Add Wails favicon to wizard
- Fix shutdown channel panic on repeated /api/close (sync.Once guard)
- Fix Go version parsing for beta/rc versions like go1.25beta1

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 12:54:10 +11:00
Lea Anthony
017133e48e Remove local SDK upload from setup wizard
- Replace "Use local file" upload with "Build your own" docs link
- Remove handleDockerBuildWithSDK endpoint and startDockerBuildLocal
- Remove embedded Dockerfile.cross files (now documented inline)
- Add comprehensive "Build Your Own Image" documentation section
- Clean up unused imports (bufio, strconv)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 12:25:24 +11:00
Lea Anthony
39a91fa75d chore: remove TODO.md planning doc
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 12:14:33 +11:00
Lea Anthony
f7d58af119 fix: address CodeRabbit minor review feedback
- Add BuildKit syntax directive to Dockerfiles for heredoc support
- Log warning when defaults.Load() fails in signing check
- Use errors.Is(err, io.EOF) instead of string comparison
- Clean up temp SDK file after Docker build copies it
- Guard against short/empty rows in RenderTable to prevent panics

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 11:59:51 +11:00
Lea Anthony
a2e93de942 fix: address CodeRabbit review feedback
- Use fileURLToPath for Vite alias in astro.config.mjs
- Add gcompat to Alpine Dockerfiles for Zig glibc compatibility
- Add conditional check for UseInterfaces in applyGlobalDefaults
- Expand REG_EXPAND_SZ registry values in Windows PATH refresh
- Route Header/Section output through pterm to honor DisableOutput

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 11:35:46 +11:00
Lea Anthony
cec29f03b4 docs: add Desktop/Server morph effect and clean up changelog
- Add MorphText component for animated title text morphing
- Title morphs between "Desktop" and "Server" with fade/blur/scale effects
- Add humorous footnote to "No browsers*" tagline
- Add Vite alias for component imports in MDX
- Clean up UNRELEASED_CHANGELOG to only show setup wizard changes

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 21:02:45 +11:00
Lea Anthony
d260a7efdd docs: center morphing text within fixed-width container
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 18:40:32 +11:00
Lea Anthony
453ce9f3d7 docs: improve text morphing with multiple transitions in tagline
- Morphs "desktop" to "server" in the hero tagline
- 4 transition types: fade, blur, scale, slide
- Random transition selection
- Random interval 3-5 seconds
- Fixed width to prevent layout shift
- Slow 0.8s transitions

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 18:39:08 +11:00
Lea Anthony
c058b0ff59 docs: add Desktop/Server text morphing effect on home page
Adds CSS animation that morphs between "Desktop" and "Server" text
to highlight the new server mode feature.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 18:36:51 +11:00
Lea Anthony
9a43ab558f docs: simplify home page quickstart to two-step format
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 18:05:11 +11:00
Lea Anthony
4c96969d7e docs: add first project steps to setup guide
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 18:01:40 +11:00
Lea Anthony
6ebb63ac2e docs: simplify setup guide with two-step quick start
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 18:00:52 +11:00
Lea Anthony
573754e925 docs: add wails3 setup to home page and quick-start guide
- Add setup step to quickstart code blocks on home page
- Add setup to TL;DR section in quick-start/installation
- Add new step 4 "Run Setup Wizard" with experimental warning
- Link to feedback issue #4904

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 17:32:12 +11:00
Lea Anthony
8e6476db98 docs: update installation guide to recommend wails3 setup
- Add tip about setup wizard in Dependencies section
- Add "Next Steps" section recommending `wails3 setup`
- Keep manual installation as fallback option
- Link to setup guide and feedback issue

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 17:28:30 +11:00
Lea Anthony
d4d2dd0aa3 feat(setup): add documentation, bug reporting, and improve dependency detection
- Add user-facing documentation at docs/getting-started/setup.mdx
- Remove internal design storyboard (docs/setup-wizard-storyboard.md)
- Wire up main `wails3 setup` command in CLI
- Add experimental warning with link to feedback issue #4904
- Add "Report Bug" button in wizard sidebar with clipboard template
- Fix npm detection on Linux to check PATH, not just package manager
- Use term.Warning and term.Hyperlink for styled terminal output

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 17:24:49 +11:00
Lea Anthony
30a830136f feat(setup): improve macOS signing UX for non-Mac hosts
- Detect host OS and show platform-appropriate guidance
- On Mac: show 'security find-identity' and 'xcrun notarytool' commands
- On Linux/Windows: show rcodesign info and P12 certificate path field
- Add App Store Connect API fields for cross-platform notarization
- Link to Apple docs for API key creation
- Disable keychain profile field on non-Mac (not applicable)
2026-01-25 14:44:49 +11:00
Lea Anthony
e88d25f38f feat(setup): add signing configuration forms with inline platform icons
- Add Configure button for each platform that opens a form
- Add configuration forms for macOS (identity, team ID, notarization profile)
- Add configuration forms for Windows (certificate path, thumbprint, timestamp)
- Add configuration forms for Linux (GPG key ID, key path)
- Use inline SVGs for platform icons (same as CrossPlatformPage)
- Forms save to defaults.yaml via /api/signing endpoint
- Include helpful command hints for finding signing identities
2026-01-25 14:44:49 +11:00
Lea Anthony
16f7df8562 feat(setup): add code signing configuration and status display
- Add SigningDefaults to GlobalDefaults for macOS/Windows/Linux signing config
- Add signing status section to doctor command with platform detection
- Add --json flag to doctor command for machine-readable output
- Add /api/signing and /api/signing/status endpoints to setup wizard
- Add SigningStep component with platform tabs and status indicators
- Wire signing step into wizard flow after projects step

The signing step shows detected signing identities from:
- macOS: keychain codesigning identities, notarization config
- Windows: certificate file/store/cloud, SignTool availability
- Linux: GPG keys from keyring or config
2026-01-25 14:44:49 +11:00
Lea Anthony
0dba0d5d6f feat(init): add lipgloss TUI styling and show global config defaults
- Add lipgloss-based styling (term/styles.go) with Wails brand colors
- Update init output to show Framework, Language, Bindings from config
- Display '(default)' suffix for values from global config
- Add Framework/Language fields to defaults for cleaner config
- New minimal banner style: 'Wails v3.x.x › Command'
2026-01-25 14:44:24 +11:00
Lea Anthony
2afcfddc84 chore: remove wails3 binary from tracking 2026-01-25 14:44:24 +11:00
Lea Anthony
f763cf3e2f feat(setup): add real-time Docker pull progress via Docker Engine API
- Use Docker Engine API for accurate download progress with byte counts
- Add SSE streaming for smooth real-time UI updates (replaces polling)
- Show toast notification when Docker completes in background mode
- Fix progress calculation to use bytes instead of layer count
- Fix framework selection border clipping with padding
- Pull pre-built image from ghcr.io/wailsapp/wails-cross instead of building locally
2026-01-25 14:44:24 +11:00
Lea Anthony
ecec018d0c fix: use real macOS SDK version 26.1 with robust download 2026-01-25 14:44:24 +11:00
Lea Anthony
0ff34442f5 fix(setup): improve light mode styling for language and framework cards
- Update language selection cards with light mode text colors
- Update framework/template cards with light mode backgrounds and borders
- Use text-gray-900 dark:text-white pattern for proper contrast
- Add bg-gray-100 dark:bg-white/5 for unselected card backgrounds

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 14:44:24 +11:00
Lea Anthony
40f36acee9 fix(setup): improve light mode styling and add Docker progress to sidebar
- Move Docker build progress indicator to sidebar (above bottom icons)
- Fix light mode text colors in ProjectsPage settings rows
- Add light mode CSS variants for settings-group and settings-row
- Improve button positioning consistency across pages

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 14:44:24 +11:00
Lea Anthony
e2b0d5b86b feat(setup): add TypeScript binding style selection (interfaces vs classes)
- Add new wizard step after TypeScript selection for binding style choice
- Add UseInterfaces field to GlobalDefaults and pass through to templates
- Update Taskfile template to conditionally add -i flag for interfaces
- Improve button positioning to match SplashPage layout
- Remove "This sets the default template" text from template page
- Fix overflow issues when resizing window

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 14:44:24 +11:00
Lea Anthony
a6042d2708 fix(setup): simplify complete page with direct docs link
- Remove terminal-style command display from complete page
- Remove "Read the documentation" link
- Change "Start Building" button to link to first-app quickstart guide
- Remove unused CopyableCommand component and handleClose function

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 14:44:23 +11:00
Lea Anthony
272a316db6 fix(setup): improve layout centering and add terminal-style complete page
- Fix CheckingPage centering by using justify-start with pt-[30%] padding
- Replace h-full with flex-1 for proper flex container sizing
- Redesign CompletePage with compact terminal-style command display
- Add framework logos (JavaScript, TypeScript, React, Vue, Svelte, etc.)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 14:44:23 +11:00
Lea Anthony
81e3b06576 feat(setup): merge author and project defaults into single Projects page
Combine Company and Bundle ID fields into one page called "Projects" in
the sidebar. Remove template selection from setup wizard as it's not
needed during initial setup.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 14:44:23 +11:00
Lea Anthony
469de2eca0 fix(setup): use correct Docker SVG with container boxes, add reboot note
- Replace all Docker logo SVGs with official path that includes container boxes
- Add "Some platforms may require a reboot" note on Docker install page
- Affects: Install Docker, Start Docker, Building image, Docker ready pages

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 14:44:23 +11:00
Lea Anthony
205aaf5355 fix(setup): always show cross-platform page in wizard
Show the cross-platform build question regardless of Docker install
status. Previously, the page was only shown when Docker was installed
but the wails-cross image wasn't built. Now it's shown when:
1. Docker is not installed (user might want to install it), OR
2. Docker is installed but wails-cross image is not built

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 14:44:23 +11:00
Lea Anthony
9ef1ae96e6 fix(setup/windows): refresh PATH from registry before checking dependencies
On Windows, when software is installed, the PATH environment variable
is updated in the registry but running processes still have the old
PATH. This adds a refreshPath() function that reads the current PATH
from both system and user registry keys before checking for npm and
docker. This allows "Check Again" to work without restarting setup.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 14:44:23 +11:00
Lea Anthony
80bc7103fb fix(setup): use HelpURL field for clickable links in dependency messages
Move URLs from Message field to HelpURL field on Windows and Darwin
so the frontend can render them as clickable links.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 14:44:23 +11:00
Lea Anthony
3cb68f691e test(init): add tests for applyGlobalDefaults
Add comprehensive test coverage for the applyGlobalDefaults function
that applies global defaults from ~/.config/wails/defaults.yaml to
init options when creating new projects.

Tests cover:
- Template default application
- Company default application
- Copyright generation with year/company placeholders
- Product identifier generation from prefix
- Description template with {name} placeholder
- Version default application
- Verification that non-default values are not overridden
- Combined defaults application

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 14:44:23 +11:00
Lea Anthony
807ffc01e7 feat(setup): add docker logo and updated build assets
Add Docker logo asset and updated frontend build output files.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 14:43:52 +11:00
Lea Anthony
ee6530e48b feat(setup): add imageBuilt status to Docker dependency check
Add imageBuilt field to DependencyStatus struct to track whether the
wails-cross Docker image exists. This allows the OOBE flow to properly
detect when Docker is installed but the cross-compilation image hasn't
been built yet, and prompt users to set up cross-platform builds.

Also moves the Docker build progress indicator to the center of the
footer for better visual placement.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 14:43:52 +11:00
Lea Anthony
951930bd61 feat(setup): check dependencies on page load with inline spinner
- Move dependency checking from splash transition to dependencies page
- Show inline spinner above deps list while checking
- Show green success message above deps when all installed
- Disable Next button while checking
- Trigger check automatically via useEffect on page mount

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 14:43:52 +11:00
Lea Anthony
4820501b7f feat(setup): update dependencies page to use PageTemplate layout
- Add logo (80px) top left with header/subheader next to it
- Footer grounded to bottom with theme toggle, sponsor, and nav buttons
- Remove WelcomePage (splash now goes directly to dependencies)
- Match splash page footer dimensions with template footer

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 14:43:52 +11:00
Lea Anthony
a3ade1c123 feat(setup): redesign welcome page with PageTemplate layout
- Add TemplateFooter with theme toggle + sponsor on left, nav on right
- Redesign WelcomePage with logo on left, title/subtitle on right
- Add numbered setup steps (1, 2, 3) and links bar
- Footer styling now matches splash page design

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 14:43:52 +11:00
Lea Anthony
522bff2fc0 feat(setup): add splash landing page with scrolling background
- Add 'splash' step as the initial wizard page
- Scrolling montage background with Wails app screenshots
- Centered logo with red glow effect
- Apple-style welcome text
- Footer with theme toggle, sponsor link, and Get Started button
- Simplified button styling (rounded-lg, no glow)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 14:43:52 +11:00
GitHub Actions
a23c3c4e87 [skip ci] Publish @wailsio/runtime v3.0.0-alpha.79 2026-01-25 03:34:50 +00:00
Lea Anthony
9a363d7be5
feat(v3): add server mode for headless HTTP deployment (#4903)
* feat(v3): add server mode for headless HTTP deployment

Server mode allows Wails applications to run as pure HTTP servers
without native GUI dependencies. Enable with `-tags server` build tag.

Features:
- HTTP server with configurable host/port via ServerOptions
- WAILS_SERVER_HOST and WAILS_SERVER_PORT env var overrides
- WebSocket event broadcasting to connected browsers
- Browser clients represented as BrowserWindow (Window interface)
- Health check endpoint at /health
- Graceful shutdown with configurable timeout
- Docker support with Dockerfile.server template and tasks

Build and run:
  wails3 task build:server
  wails3 task run:server
  wails3 task build:docker
  wails3 task run:docker

Documentation at docs/guides/server-build.mdx

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

* feat(v3): add server mode for headless HTTP deployment

Server mode allows Wails applications to run as pure HTTP servers
without native GUI dependencies. Enable with `-tags server` build tag.

Features:
- HTTP server with configurable host/port via ServerOptions
- WAILS_SERVER_HOST and WAILS_SERVER_PORT env var overrides
- WebSocket event broadcasting to connected browsers
- Browser clients represented as BrowserWindow (Window interface)
- Health check endpoint at /health
- Graceful shutdown with configurable timeout
- Docker support with Dockerfile.server template and tasks

Build and run:
  wails3 task build:server
  wails3 task run:server
  wails3 task build:docker
  wails3 task run:docker

Documentation at docs/guides/server-build.mdx

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

* fix: address CodeRabbit review comments

- Fix corrupted test file with embedded terminal output
- Fix module name mismatch in gin-routing (was gin-example)
- Fix replace directive version mismatch in gin-service
- Fix placeholder module name in ios example (was changeme)
- Fix Dockerfile COPY path to work from both build contexts
- Fix bare URL in README (MD034 compliance)
- Fix comment accuracy in getScreens (returns error, not empty slice)
- Remove deprecated docker-compose version field
- Add port documentation in Taskfile template

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

* fix: address CodeRabbit review comments

- Add note about healthcheck wget not being available in distroless images
- Add !server build constraint to menu_windows.go and menu_darwin.go
- Downgrade window-visibility-test go.mod from 1.25 to 1.24 to match CI

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

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 14:33:44 +11:00
github-actions[bot]
103ff347e0 chore(v3): bump to v3.0.0-alpha.63 and update changelog [skip ci] 2026-01-25 02:55:49 +00:00
Lea Anthony
537c74327d
fix(darwin): make Position() and SetPosition() use consistent coordinate systems (#4818)
* fix(darwin): make Position() and SetPosition() use consistent coordinate systems

On macOS, windowGetPosition() was returning raw Cocoa coordinates (Y=0 at
bottom of screen) while windowSetPosition() expected coordinates with Y=0
at the top of the screen. This caused window positions to drift when saving
and restoring window state across application sessions.

The fix updates windowGetPosition() to:
1. Convert Y coordinates to top-origin (matching windowSetPosition)
2. Apply DPI scale factor (matching windowSetPosition)

This ensures Position() returns values that can be directly passed back to
SetPosition() for consistent round-trip behavior.

Fixes #4816

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

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

* fix(darwin): make Position() and SetPosition() use consistent coordinate systems

On macOS, windowGetPosition() was returning raw Cocoa coordinates (Y=0 at
bottom of screen) while windowSetPosition() expected coordinates with Y=0
at the top of the screen. This caused window positions to drift when saving
and restoring window state across application sessions.

The fix updates windowGetPosition() to:
1. Convert Y coordinates to top-origin (matching windowSetPosition)
2. Apply DPI scale factor (matching windowSetPosition)

This ensures Position() returns values that can be directly passed back to
SetPosition() for consistent round-trip behavior.

Fixes #4816

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

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

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-01-25 12:40:25 +11:00
github-actions[bot]
9a131a049d chore(v3): bump to v3.0.0-alpha.62 and update changelog [skip ci] 2026-01-22 02:51:17 +00:00
Lea Anthony
8d28e2d06b
fix(windows): skip DPI awareness API call when already set via manifest (#4811)
Check current DPI awareness before calling SetProcessDpiAwarenessContext.
Windows only allows setting DPI awareness once per process - either via
manifest or API, not both. If already set (e.g., via application manifest
in built binaries), skip the API call to avoid "Access is denied" errors.

Fixes #4803

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

Co-authored-by: Claude <noreply@anthropic.com>
2026-01-21 19:23:56 +11:00
github-actions[bot]
a0d2e03f64 chore(v3): bump to v3.0.0-alpha.61 and update changelog [skip ci] 2026-01-20 02:48:15 +00:00
Ndianabasi Udonkang
8598034942
Change Window Type from WebviewWindow to Window (#4829)
* fix: change window type from WebviewWindow to Window

* docs: update `UNRELEASED_CHANGELOG`

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2026-01-20 10:42:54 +11:00
Abdelhadi Seddar
9158c49e30
docs: fixed incorrect tag in Custom Output Directory of Bindings (#4873)
* docs: fixed incorrect tag in Custom Output Directory of Bindings

After some usage of wails I found out that

```bash
wails3 generate bindings -o ./src/bindings
``` 
does not work and according to 
```bash
$ wails3 generate bindings --help 
```
it uses the `-d string` tag instead

* Update UNRELEASED_CHANGELOG.md

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2026-01-20 10:41:46 +11:00
github-actions[bot]
d7d6720d54 chore(v3): bump to v3.0.0-alpha.60 and update changelog [skip ci] 2026-01-14 02:50:25 +00:00
Zach Botterman
37fb9b9ba5
fix(v3/linux): Fix menu update by clearing menu (#4875)
* clear menu

* update changelog

* free list

* register glistfree
2026-01-13 21:42:09 +11:00
github-actions[bot]
9db2f74c44 chore(v3): bump to v3.0.0-alpha.59 and update changelog [skip ci] 2026-01-11 02:54:04 +00:00
Ndianabasi Udonkang
897479d52b
Enhance Drag-N-Drop README with Internal Drag and Drop Info (#4869)
* Enhance README with internal drag and drop info

Added details about internal drag and drop functionality.

* Update UNRELEASED_CHANGE.md
2026-01-10 20:00:52 +11:00
github-actions[bot]
be0e9bab9b chore(v3): bump to v3.0.0-alpha.58 and update changelog [skip ci] 2026-01-09 02:46:28 +00:00
Lea Anthony
0abad1ffb2
fix(v3/linux): fix crash on panic in JS-bound Go methods (#4856)
* fix(v3/linux): fix crash on panic in JS-bound Go methods

WebKit2GTK installs signal handlers after gtk_main() starts, overriding
our SA_ONSTACK fix. This causes Go panics (e.g., nil pointer dereference)
in JS-bound methods to crash with 'non-Go code set up signal handler
without SA_ONSTACK flag'.

Fix by deferring signal handler installation via g_idle_add() to run
after GTK main loop starts, ensuring we fix handlers AFTER WebKit
has installed its own.

Fixes #3965

* test(v3/linux): add test case for signal handler fix

Adds a test application that can trigger panics from JS-bound Go methods
to verify the signal handler fix for issue #3965 works correctly.

The test app has buttons to:
- Trigger a panic in a goroutine
- Trigger an immediate panic
- Call a safe method

Before the fix, clicking 'Trigger Panic' would crash the app.
After the fix, panics are recovered and logged.

* chore: remove test case from PR

* fix(linux): call signal handler fix after WebKit init, not in idle callback

Move install_signal_handlers() call to after webkit_web_view_new_with_user_content_manager()
to ensure WebKit has finished setting up its signal handlers before we add SA_ONSTACK.

The previous g_idle_add approach was still too early - WebKit initialization continues
after GTK init. This matches the v2 approach which waits for actual webview creation.

Also add documentation about the known Go limitation (golang/go#7227) where signals
may still be delivered on the wrong stack in some C interop scenarios.
2026-01-08 21:20:13 +11:00
Lea Anthony
1fb60abdc9
docs(v3): update API references to new Manager API pattern (#4863)
* docs(v3): update API references to new Manager API pattern

Update documentation to reflect the Manager API refactoring from alpha.10:

Window API:
- app.NewWebviewWindow() -> app.Window.New()
- app.NewWebviewWindowWithOptions() -> app.Window.NewWithOptions()
- app.CurrentWindow() -> app.Window.Current()
- app.GetAllWindows() -> app.Window.GetAll()
- app.WindowByName() -> app.Window.GetByName()

Event API:
- app.EmitEvent() -> app.Event.Emit()
- app.OnEvent() -> app.Event.On()
- app.OnApplicationEvent() -> app.Event.OnApplicationEvent()

Dialog API:
- app.OpenFileDialog() -> app.Dialog.OpenFile()
- app.SaveFileDialog() -> app.Dialog.SaveFile()
- app.InfoDialog() -> app.Dialog.Info()
- app.ErrorDialog() -> app.Dialog.Error()
- app.WarningDialog() -> app.Dialog.Warning()
- app.QuestionDialog() -> app.Dialog.Question()

Other APIs:
- app.NewSystemTray() -> app.SystemTray.New()
- app.SetApplicationMenu() -> app.Menu.Set()
- app.GetPrimaryScreen() -> app.Screen.GetPrimary()
- app.GetAllScreens() -> app.Screen.GetAll()
- app.ClipboardGetText() -> app.Clipboard.Text()
- app.ClipboardSetText() -> app.Clipboard.SetText()
- app.BrowserOpenURL() -> app.Browser.OpenURL()

Fixes outdated code examples across 31 documentation files.

* chore(v3): add docs fix to unreleased changelog
2026-01-08 21:16:45 +11:00
github-actions[bot]
862e2e8d6c chore(v3): bump to v3.0.0-alpha.57 and update changelog [skip ci] 2026-01-05 02:55:08 +00:00
mbaklor
93c307b4b2
V3/fix debug logs (#4857)
* fix(v3): replace various debug logs from Info to Debug

* fix(v3): fixed logging on linux as well as windows

* fix(v3): add format directive for warning log argument

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2026-01-05 08:48:29 +11:00
Lea Anthony
4dce80d887
fix(v3): revert goccy/go-json to stdlib encoding/json to fix Windows panic (#4859)
* fix(v3): warm up dialog types in go-json cache to prevent Windows panic

Add FileFilter, OpenFileDialogOptions, SaveFileDialogOptions, and
MessageDialogOptions to the init() warmup to prevent index out of bounds
panic on Windows when these types are first unmarshaled.

Fixes goccy/go-json#474 for Wails internal dialog types.

* fix(v3): revert goccy/go-json to stdlib encoding/json to fix Windows panic

goccy/go-json has a type address calculation bug on Windows that causes
index out of bounds panic when decoding user-defined types for the first time.

This reverts all runtime usages of goccy/go-json back to stdlib encoding/json.
Test and benchmark files are left unchanged.

Partially reverts PR #4843.
2026-01-05 08:26:35 +11:00
Lea Anthony
23b3424415
fix(v3): use correct JSON field names for drop coordinates in example (#4858)
* fix(v3): use correct JSON field names for drop coordinates in example

The DropTargetDetails struct uses lowercase JSON tags (x, y), but the
example frontend was accessing uppercase (X, Y).

* docs(v3): add coordinates fix to changelog
2026-01-05 06:51:41 +11:00
Lea Anthony
ee7e95af52
fix(v3): fix macOS mkdir brace expansion when APP_NAME contains spaces (#4850)
fix(v3): fix macOS mkdir when APP_NAME contains spaces

Replace brace expansion {MacOS,Resources} with two separate mkdir commands.
Brace expansion doesn't work inside quoted strings and is shell-dependent.

Adds integration test to verify mkdir works with spaces in paths.
2026-01-04 15:48:03 +11:00
samstanier
9039051fd3
[v3] Fix save dialog filename not pre-populated on Linux (#4841) (#4842)
The SaveFileDialog.SetFilename() option had no effect on Linux because
the filename was never passed to the GTK file chooser.

This adds a currentName parameter to runChooserDialog and calls
gtk_file_chooser_set_current_name() for save dialogs when a filename
is specified.

Changes:
- linux_cgo.go: Add currentName parameter and GTK call
- linux_purego.go: Add gtkFileChooserSetCurrentName binding and same fix

Fixes the Linux implementation to match the behaviour on Windows and macOS.

Co-authored-by: sas229 <sas229@cam.ac.uk>
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2026-01-04 14:40:10 +11:00
github-actions[bot]
a1dd1f4d19 chore(v3): bump to v3.0.0-alpha.56 and update changelog [skip ci] 2026-01-04 02:54:09 +00:00
Lea Anthony
d0aa2a6e1f
fix(docs): escape MDX special characters in changelog and linux guide (#4849)
- Wrap `<=8` in backticks in changelog.mdx to prevent MDX interpreting
  `<` as JSX element start
- Remove unsupported {#custom-id} syntax from heading in linux.mdx as
  Starlight/Astro auto-generates heading IDs

This fixes the docs build failure in the Deploy to GitHub Pages workflow.
2026-01-04 13:35:28 +11:00
Lea Anthony
f1a4ffe72d
feat(linux): add libpath package for finding native library paths (#4847)
* feat(linux): add libpath package for finding native library paths

Add a new internal/libpath package that locates shared libraries (.so files)
on Linux systems. Supports multiple distributions and package managers.

Features:
- Multi-tier search: pkg-config -> ldconfig -> filesystem scanning
- Parallel search using goroutines for faster lookups
- Cached dynamic path discovery for Flatpak, Snap, and Nix
- Support for Debian/Ubuntu, Fedora/RHEL, Arch, openSUSE, NixOS
- Context-aware cancellation for graceful shutdown

Performance:
- Library found: ~1.4ms (parallel search)
- Library not found: ~46ms (was 84ms sequential)
- Cached path discovery: 14ns (was 15ms uncached)

* feat(libpath): add multi-library parallel search functions

Add functions to search for multiple library candidates in parallel:

- FindFirstLibrary: Search multiple libs in parallel, return first found
- FindFirstLibraryOrdered: Search in order of preference (for version priority)
- FindAllLibraries: Find all available libraries from a list

Useful when the exact library version is unknown, e.g.:
  match, _ := FindFirstLibrary("webkit2gtk-4.1", "webkit2gtk-4.0", "webkit2gtk-6.0")

Also adds findLibraryPathCtx for context-aware searching used by the
multi-library functions.

* refactor(libpath): split into separate files and fix race condition

Split libpath_linux.go into smaller, focused files:
- cache_linux.go: Path cache with thread-safe init/invalidate
- flatpak_linux.go: Flatpak runtime path discovery
- snap_linux.go: Snap package path discovery
- nix_linux.go: Nix/NixOS path discovery
- libpath_linux.go: Core search functions

Fixes:
- Fix data race between init() and invalidate() by holding mutex
  during cache writes inside sync.Once.Do (CodeRabbit review)
- Fix FindLibraryPathWithOptions not searching dynamic paths
  (Flatpak/Snap/Nix) - now uses GetAllLibPaths() (CodeRabbit review)
2026-01-04 11:59:22 +11:00
GitHub Actions
722717a11e [skip ci] Publish @wailsio/runtime v3.0.0-alpha.78 2026-01-04 00:09:35 +00:00
Lea Anthony
53c2275fea
fix(v3): overhaul drag-and-drop for Linux reliability and simplify Windows implementation (#4848)
* fix(v3): overhaul drag-and-drop for Linux reliability and simplify Windows

This commit fixes drag-and-drop reliability on Linux and simplifies the
Windows implementation.

## Linux
- Rewrite GTK drag handlers to properly intercept external file drops
- Fix HTML5 internal drag-and-drop being broken when file drop enabled
- Add hover effects during file drag operations
- Fix multiple app instances interfering with each other

## Windows
- Remove native IDropTarget in favor of JavaScript approach (matches v2)
- File drops now handled via chrome.webview.postMessageWithAdditionalObjects

## All Platforms
- Rename EnableDragAndDrop to EnableFileDrop
- Rename data-wails-drop-target to data-file-drop-target
- Rename wails-drop-target-active to file-drop-target-active
- Add comprehensive drag-and-drop documentation

## Breaking Changes
- EnableDragAndDrop -> EnableFileDrop
- data-wails-dropzone -> data-file-drop-target
- wails-dropzone-hover -> file-drop-target-active
- DropZoneDetails -> DropTargetDetails
- Remove WindowDropZoneFilesDropped event (use WindowFilesDropped)

* feat(macos): optimize drag event performance with debouncing and caching

- Add 50ms debouncing to limit drag events to 20/sec (was 120/sec)
- Implement window implementation caching to avoid repeated lookups
- Maintain existing 5-pixel threshold for immediate response
- Keep zero-allocation path with pre-allocated buffers
- Rename linuxDragActive to nativeDragActive for clarity
- Update IMPLEMENTATION.md with optimization details and Windows guidance

Performance improvements:
- 83% reduction in event frequency
- ~6x reduction in CPU/memory usage during drag operations
- Maintains smooth visual feedback with InvokeSync for timer callbacks

* fix(windows): implement proper file drop support for Windows

- Remove incorrect AllowExternalDrag(false) call that was blocking file drops
- Fix message prefix from 'FilesDropped' to 'file:drop:' to match JS runtime
- Fix coordinate parsing for 'file:drop:x:y' format (indices 2,3 not 1,2)
- Add enableFileDrop flag injection to JS runtime during navigation
- Update JS runtime to check enableFileDrop flag before processing drops
- Always call preventDefault() to stop browser navigation on file drags
- Show 'no drop' cursor when file drops are disabled
- Update example to filter file drags from HTML drop zone handlers
- Add documentation for combining file drop with HTML drag-and-drop

* fix(v3): block file drops on Linux when EnableFileDrop is false

- Add disableDND() to intercept and reject external file drags at GTK level
- Show 'no drop' cursor when files are dragged over window
- Allow internal HTML5 drag-and-drop to work normally
- Initialize _wails.flags object in runtime core to prevent undefined errors
- Inject enableFileDrop flag on Linux and macOS (matching Windows)
- Fix bare _wails reference to use window._wails
- Update docs with info about blocked drops and combining with HTML DnD

* fix(darwin): add missing fmt import in webview_window_darwin.go

* fix(macOS): implement hover effects for file drag-and-drop with optimizations

- Added draggingUpdated: handler to track mouse movement during drag operations
- Implemented macosOnDragEnter/Exit/Over export functions for real-time hover state
- Fixed JS function call from '_wails.handlePlatformFileDrop' to correct 'wails.Window.HandlePlatformFileDrop'
- Added EnableFileDrop flag checks to prevent hover effects when file drops are disabled
- Renamed linuxDragActive to nativeDragActive for cross-platform consistency

Performance optimizations:
- Added 50ms debounce to reduce event frequency from ~120/sec to ~20/sec
- Implemented 5-pixel movement threshold for immediate response
- Added window caching with sync.Map to avoid repeated lookups
- Zero-allocation JavaScript calls with pre-allocated 128-byte buffer
- Reduced memory usage to ~18 bytes per event (6x reduction)

Build improvements:
- Updated runtime Taskfile to include documentation generation
- Added docs:build task to runtime build process
- Fixed build order: events → docs → runtime

Documentation:
- Added IMPLEMENTATION.md with optimization details
- Included guidance for Windows implementation

* chore(v3/examples): remove html-dnd-api example

The drag-n-drop example now demonstrates both external file drops
and internal HTML5 drag-and-drop, making this separate example redundant.

* docs(v3): move drag-and-drop implementation details to runtime-internals

- Add drag-and-drop section to contributing/runtime-internals.mdx
- Remove IMPLEMENTATION.md from example (content now in proper docs)
- Covers platform differences, debugging tips, and key files

* fix(v3): remove html-dnd-api from example build list

* fix(v3): remove duplicate json import in application_darwin.go

* fix(v3): address CodeRabbit review feedback

- Fix docs to use app.Window.NewWithOptions() instead of deprecated API
- Add mutex protection to dragOverJSBuffer to prevent race conditions
- Add mutex protection to dragThrottleState fields for thread safety

* docs: add coderabbit pre-push requirement to AGENTS.md

* fix(v3/test): use correct CSS class name file-drop-target-active

* chore(v3/test): remove dnd-test directory

This was a development test file that shouldn't be in the PR.
The drag-n-drop example serves as the proper test case.

* docs(v3): update Windows file drop comment to reflect implemented fix

Remove stale TODO - enableFileDrop flag is now injected in navigationCompleted

* refactor(v3): make handleDragAndDropMessage unexported

Internal method only called by application event loop, not part of public API.
2026-01-04 11:08:29 +11:00
github-actions[bot]
53cd30acc7 chore(v3): bump to v3.0.0-alpha.55 and update changelog [skip ci] 2026-01-02 02:46:35 +00:00
Ndianabasi Udonkang
0b6dfe032c
Improve Build Commands to Accommodate Spaces (#4845)
* fix: improve darwin build commands to accommodate spaces in APP_NAME

* fix: improve android build commands to accommodate spaces in APP_NAME

* fix: improve ios build commands to accommodate spaces in APP_NAME

* fix: improve linux build commands to accommodate spaces in APP_NAME

* fix: improve windows build commands to accommodate spaces in APP_NAME

* docs: update `v3/UNRELEASED_CHANGELOG.md`

* fix(docs): correct changelog

* fix: remove quotes around GO_CACHE_MOUNT and REPLACE_MOUNTS

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2026-01-02 00:21:22 +00:00
Lea Anthony
a06d55804c
perf(v3): optimize JSON processing and reduce allocations in hot paths (#4843)
* perf(v3): optimize JSON processing and reduce allocations in hot paths

- Switch to goccy/go-json for method binding, events, and HTTP transport
  (21-63% faster, 40-60% less memory for method calls)
- Optimize BoundMethod struct layout to reduce padding (144 -> 136 bytes)
- Cache isVariadic flag at registration to avoid reflect call per invocation
- Use stack-allocated buffer for method arguments (<=8 args)
- Optimize result collection to avoid slice allocation for single return values
- Use sync.Map for MIME cache to improve concurrent read performance
- Use buffer pool for HTTP transport request body reading
- Lazily allocate CloseNotify channel in content type sniffer
- Remove debug CSS logging from asset server
- Add comprehensive benchmark tests (build tag: bench)

Performance improvements for BoundMethod.Call:
- SimpleCall:   1290ns -> 930ns (28% faster), 240B -> 80B (67% less memory)
- ComplexCall:  10500ns -> 3900ns (63% faster), 1192B -> 1020B (14% less)
- VariadicCall: 3460ns -> 1600ns (54% faster), 512B -> 289B (44% less)

* perf(v3): add max size limit to buffer pool to prevent memory bloat

Buffers larger than 512KB are not returned to the pool, allowing GC
to reclaim memory after large requests (e.g., base64 encoded images).

* perf(v3): remove mimetype library dependency, saving ~208KB binary size

- Replace github.com/wailsapp/mimetype with expanded extension map + stdlib
- Expand MIME type map from 16 to 50+ common web formats (fonts, audio, video, etc.)
- Add comprehensive test suite validating MIME detection for all web formats
- Use http.DetectContentType as fallback for unknown extensions
- Actual binary size reduction: 1.2MB (11MB -> 9.8MB in test app)

* perf(v3): migrate all runtime code to goccy/go-json

Migrate remaining encoding/json usages to goccy/go-json in:
- pkg/application (android, darwin, ios, single_instance, webview_window)
- pkg/services (kvstore, notifications on all platforms)
- internal/assetserver/webview (request/response handling)
- internal/runtime and internal/capabilities

Note: encoding/json (110KB) remains in binary because:
1. goccy/go-json imports it for interface compatibility (json.Marshaler, etc.)
2. log/slog (stdlib) uses it for JSON output

The performance benefit is in the hot paths which now use the faster library.

* perf(v3): replace gopkg.in/ini.v1 with minimal .desktop file parser

Replace the gopkg.in/ini.v1 dependency with a purpose-built minimal parser
for Linux .desktop files.

The new parser:
- Only extracts the Exec key from [Desktop Entry] section (all we need)
- Follows the Desktop Entry Specification
- Has comprehensive test coverage (40 tests) including:
  - All major file managers (Nautilus, Dolphin, Thunar, PCManFM, Caja, Nemo)
  - Edge cases (UTF-8, special chars, comments, empty files, etc.)
  - Buffer limit handling

Binary size reduction: 45KB (10.22MB -> 10.18MB)

* perf(v3): remove samber/lo from runtime code, saving ~310KB binary size

Replace samber/lo with Go 1.21+ stdlib slices package and minimal internal
helpers in all runtime code paths. This removes 80 transitive dependencies
from the production binary.

Changes:
- Create internal/sliceutil package with Unique and FindMapKey helpers
- Replace lo.Without with slices.DeleteFunc in event handling
- Replace lo.Ternary with inline if/else in Windows code
- Replace lo.Uniq with sliceutil.Unique for feature flags
- Replace lo.FindKey with sliceutil.FindMapKey for method aliases
- Replace lo.Filter with slices.DeleteFunc in event listeners
- Replace lo.Must with inline panic in w32 package

Binary size: 10.18MB -> 9.87MB (~310KB / 3% reduction)

Note: CLI tools still use samber/lo since they don't affect
production binary size. The application_debug.go file also
retains lo usage as it has //go:build !production tag.

* fix: address CodeRabbit review comments

- Use application/x-typescript MIME type (not IANA-registered text/typescript)
- Fix potential panic in mimetype_stdlib_test.go for short MIME strings
- Use cached isVariadic flag in bindings_optimized_bench_test.go

* fix: initialize goccy/go-json decoder early to fix Windows test failure

On Windows, goccy/go-json's type address calculation can fail if the
decoder is first invoked during test execution rather than at init time.
Force early initialization by unmarshaling a []int during package init.

See: https://github.com/goccy/go-json/issues/474

* 📝 Add docstrings to `v3/performance-improvements` (#4844)

* fix: initialize goccy/go-json decoder early to fix Windows test failure

On Windows, goccy/go-json's type address calculation can fail if the
decoder is first invoked during test execution rather than at init time.
Force early initialization by unmarshaling a []int during package init.

See: https://github.com/goccy/go-json/issues/474

* 📝 Add docstrings to `v3/performance-improvements`

Docstrings generation was requested by @leaanthony.

* https://github.com/wailsapp/wails/pull/4843#issuecomment-3703472562

The following files were modified:

* `v3/internal/assetserver/common.go`
* `v3/internal/assetserver/content_type_sniffer.go`
* `v3/internal/assetserver/mimecache.go`
* `v3/internal/fileexplorer/desktopfile.go`
* `v3/internal/fileexplorer/fileexplorer_linux.go`
* `v3/internal/sliceutil/sliceutil.go`
* `v3/pkg/application/application_ios.go`
* `v3/pkg/application/bindings.go`
* `v3/pkg/application/ios_runtime_ios.go`
* `v3/pkg/w32/window.go`

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2026-01-02 07:03:36 +11:00
github-actions[bot]
3256041d8b chore(v3): bump to v3.0.0-alpha.54 and update changelog [skip ci] 2025-12-29 02:52:26 +00:00
wux1an
cee729dd85
fix(v3): resolve some issues in template code when compiling macOS program on Linux (#4832)
* fix(v3): resolve Docker error "undefined symbol: ___ubsan_handle_xxxxxxx" when running 'wails3 build GOOS=darwin GOARCH=arm64' on Linux

* fix(v3): correct command argument error when executing 'build:universal:lipo:go' task on Linux

* docs(v3): update changelog

* Fix CHANGELOG

* Fix CHANGELOG

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-12-29 12:14:25 +11:00
Lea Anthony
0de429b8fc
feat(macos): add CollectionBehavior option to MacWindow (#4799)
* feat(macos): add CollectionBehavior option to MacWindow (#4756)

Add configurable NSWindowCollectionBehavior support for macOS windows,
allowing control over window behavior across Spaces and fullscreen.

New options include:
- MacWindowCollectionBehaviorCanJoinAllSpaces
- MacWindowCollectionBehaviorFullScreenAuxiliary
- MacWindowCollectionBehaviorMoveToActiveSpace
- And more...

This enables building Spotlight-like apps that appear on all Spaces
or overlay fullscreen applications.

Closes #4756

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

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

* Potential fix for code scanning alert no. 140: Workflow does not contain permissions

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

* Potential fix for code scanning alert no. 139: Workflow does not contain permissions

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

* feat(examples): add spotlight example for CollectionBehavior

Demonstrates creating a Spotlight-like launcher window that:
- Appears on all macOS Spaces
- Floats above other windows
- Uses accessory activation policy (no Dock icon)
- Has frameless translucent design

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

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

* feat(macos): support bitwise OR for CollectionBehavior options

Update CollectionBehavior to use actual NSWindowCollectionBehavior
bitmask values, allowing multiple behaviors to be combined:

```go
CollectionBehavior: application.MacWindowCollectionBehaviorCanJoinAllSpaces |
                    application.MacWindowCollectionBehaviorFullScreenAuxiliary,
```

Changes:
- Update Go constants to use actual bitmask values (1<<0, 1<<1, etc.)
- Simplify C function to pass through combined bitmask directly
- Add ParticipatesInCycle, IgnoresCycle, FullScreenDisallowsTiling options
- Update documentation with combined behavior examples
- Update spotlight example to demonstrate combining behaviors

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

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

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-12-29 11:07:37 +11:00
Dzmitryi Hilimovich
7bc6501a84
[v3] Debug printf statements left in webview_window_darwin.m (#4834)
* Clean up debug output in webView URL scheme handler

Removed debug print statements for CSS requests in web view.

* Add changelog entry for #4834

* Fix Changelog

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-12-29 11:05:17 +11:00
github-actions[bot]
9ebdf229bb chore(v3): bump to v3.0.0-alpha.53 and update changelog [skip ci] 2025-12-27 02:40:47 +00:00
Lea Anthony
2604ecc0f8
test(v3): add comprehensive unit tests for pkg/application (#4827)
* test(v3): add comprehensive unit tests for pkg/application

Add 11 new test files to improve test coverage of the pkg/application
package from 13.6% to 17.7%.

New test files:
- context_test.go: Context struct operations
- services_test.go: Service management and lifecycle
- parameter_test.go: Parameter and CallError types
- dialogs_test.go: Dialog utilities and button methods
- webview_window_options_test.go: Window options and constants
- application_options_test.go: ChainMiddleware and app config
- keys_test.go: Keyboard accelerator parsing
- single_instance_test.go: Single instance management and encryption
- menuitem_internal_test.go: Menu item internal functions
- menu_internal_test.go: Menu internal functions
- screenmanager_internal_test.go: Screen geometry and transformations

The 40% target was not fully achievable because ~50% of the codebase
is platform-specific code that can only be tested on respective
platforms. Tests focus on pure Go logic, utility functions, and
data structures that can be tested cross-platform.

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

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

* fix: address CodeRabbit review comments

- dialogs_test.go: improve ID recycling test to verify either recycled
  ID (id3 == id1) or new unique ID (id3 > id2)
- keys_test.go: make accelerator String() tests platform-agnostic by
  checking suffix patterns rather than exact platform-specific strings

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

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

* fix: normalize temp dir path for macOS compatibility in test

os.TempDir() returns a trailing slash on macOS, causing path comparison
to fail. Use filepath.Clean() to normalize both paths.

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

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

* chore: remove REVIEW.md

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

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

* chore: simplify changelog entry

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

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

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 09:53:24 +11:00
Lea Anthony
ab33eb594e
docs: fix custom protocol association documentation (#4825)
* docs: fix custom protocol association documentation

The documentation was incorrectly referencing `wails.json` with JSON format
when the actual configuration file is `build/config.yml` using YAML format.

Changes:
- Update config file reference from `wails.json` to `build/config.yml`
- Change format from JSON to YAML in code examples
- Fix structure: `protocols` is at root level, not nested under `info`
- Correct template variable references from `{{.Info.Protocols}}` to `{{.Protocols}}`
- Update Info.plist example to show actual generated format (`wails.com.scheme`)
- Add note about running `wails3 task common:update:build-assets` after changes
- Clean up redundant file path references in platform-specific sections

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

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

* docs: consolidate custom protocol docs and add Universal Links

- Remove duplicate custom-protocol-association.mdx
- Add Universal Links section to macOS tab
- Add Web-to-App Linking section to Windows tab
- Keep the more comprehensive distribution/custom-protocols.mdx

Addresses review comment about duplicate documentation.

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

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

* feat(windows): add custom protocol support to MSIX packaging

- Add uap3 namespace and protocol extension to MSIX template
- Protocols defined in build/config.yml are now automatically
  registered when building MSIX packages
- Update docs with MSIX section and clarify Web-to-App linking
  requires manual manifest configuration

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

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

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-27 09:52:26 +11:00
github-actions[bot]
3b055efcae chore(v3): bump to v3.0.0-alpha.52 and update changelog [skip ci] 2025-12-26 02:43:00 +00:00
Lea Anthony
f30c888c5b
fix(windows): Prevent systray menu crash on rapid clicks (#4151) (#4812)
Add guard against concurrent TrackPopupMenuEx calls using atomic.Bool
to prevent race condition when user clicks systray icon repeatedly.
Change TrackPopupMenuEx failure from fatal to debug log with early
return so the application gracefully handles failed menu display
attempts instead of crashing.

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

Co-authored-by: Vibe Kanban <noreply@vibekanban.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-12-25 19:35:44 +11:00
github-actions[bot]
e34c172f0c chore(v3): bump to v3.0.0-alpha.51 and update changelog [skip ci] 2025-12-23 02:43:45 +00:00
Lea Anthony
9174be76f2
Prevent app crashing when calling systray.Run() before app.Run() (#4826) 2025-12-23 06:33:09 +11:00
github-actions[bot]
0271c9e10c chore(v3): bump to v3.0.0-alpha.50 and update changelog [skip ci] 2025-12-21 02:47:21 +00:00
ruhuang
618489800c
docs: add examples for window X/Y coordinate options (#4817)
* docs: add examples for window X/Y coordinate options

* Update UNRELEASED_CHANGELOG.md
2025-12-20 15:50:32 +11:00
github-actions[bot]
6b8c8d495f chore(v3): bump to v3.0.0-alpha.49 and update changelog [skip ci] 2025-12-18 02:41:03 +00:00
Ndianabasi Udonkang
a81cb18f0c
Enhance bindings generation documentation (#4773)
* Enhance bindings generation documentation

Added TypeScript option and help command for bindings generation.

* Update UNRELEASED_CHANGELOG with new events and docs

Updated the changelog to include new WebKit2 load-change events and additional documentation for frontend bindings.

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-12-17 10:40:18 +00:00
github-actions[bot]
a13a426bcc chore(v3): bump to v3.0.0-alpha.48 and update changelog [skip ci] 2025-12-16 02:42:52 +00:00
Ndianabasi Udonkang
6eb9415d37
Update asset-server Documentation to Reflect Current Implementation (#4802)
* Refactor asset-server documentation for clarity

Updated references from 'frontend/Taskfile.yml' to 'build/Taskfile.yml' and adjusted environment variable names for clarity. Enhanced the explanation of how the dev proxy works and clarified the roles of the tasks in the templates.

* Update changelog

* Apply suggestion from @coderabbitai[bot]

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

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-12-16 06:08:45 +11:00
Lea Anthony
84b9021ea9
docs: Update dialogs documentation to match actual v3 API (#4793)
* All the documentation files have been updated. Here's a summary of the changes I made:

## Summary of Documentation Updates

### Key API Corrections Made:

1. **Dialog Creation**:
   - Changed `app.InfoDialog()` → `application.InfoDialog()` (package-level functions)
   - Also documented `app.Dialog.Info()` via DialogManager

2. **Question Dialog Buttons**:
   - Removed non-existent `SetButtons("Save", "Don't Save", "Cancel")` method
   - Now uses `AddButton("label")` which returns a `*Button`
   - Button callbacks via `button.OnClick(func() { ... })`

3. **Default/Cancel Buttons**:
   - Changed `SetDefaultButton("Cancel")` (string) → `SetDefaultButton(cancelBtn)` (`*Button`)
   - Changed `SetCancelButton("Cancel")` (string) → `SetCancelButton(cancelBtn)` (`*Button`)
   - Also documented fluent `SetAsDefault()` and `SetAsCancel()` methods on Button

4. **File Dialog Filters**:
   - Changed `SetFilters([]application.FileFilter{...})` → `AddFilter("Display Name", "*.ext;*.ext2")`

5. **Save Dialog Filename**:
   - Changed `SetDefaultFilename()` → `SetFilename()`

6. **Folder Selection**:
   - Removed non-existent `app.SelectFolderDialog()`
   - Now uses `application.OpenFileDialog().CanChooseDirectories(true).CanChooseFiles(false)`

7. **Show() Return Value**:
   - Removed incorrect `result, err := dialog.Show()` pattern
   - `Show()` returns nothing - responses are handled via button callbacks

### Files Modified:
- `docs/src/content/docs/features/dialogs/message.mdx` - Complete rewrite of question dialog examples
- `docs/src/content/docs/features/dialogs/overview.mdx` - Updated all code examples
- `docs/src/content/docs/features/dialogs/file.mdx` - Updated file dialog examples
- `v3/UNRELEASED_CHANGELOG.md` - Added changelog entry

* All changes are complete. Here's a summary of what was updated:

## Summary

I've updated the Wails v3 dialogs documentation to match the actual API. The documentation now consistently uses:

### DialogManager Pattern (Recommended)
- `app.Dialog.Info()`, `app.Dialog.Question()`, `app.Dialog.Warning()`, `app.Dialog.Error()`
- `app.Dialog.OpenFile()`, `app.Dialog.SaveFile()`

This is consistent with other runtime features like `app.Window`, `app.Event`, etc.

### Key API Corrections

1. **Dialog Creation**: Both `app.Dialog.*()` (DialogManager) and `application.*Dialog()` (package-level) are documented
2. **Question Dialog Buttons**: Use `AddButton("label")` which returns `*Button`, then `button.OnClick(callback)`
3. **Default/Cancel Buttons**: `SetDefaultButton(button)` and `SetCancelButton(button)` take `*Button` pointers
4. **File Filters**: Use `AddFilter("Display Name", "*.ext")` instead of `SetFilters()`
5. **Save Dialog Filename**: Use `SetFilename()` instead of `SetDefaultFilename()`
6. **Folder Selection**: Use `app.Dialog.OpenFile().CanChooseDirectories(true).CanChooseFiles(false)`

### Files Modified
- `docs/src/content/docs/features/dialogs/overview.mdx`
- `docs/src/content/docs/features/dialogs/message.mdx`
- `docs/src/content/docs/features/dialogs/file.mdx`
- `v3/UNRELEASED_CHANGELOG.md`

* Audit complete! All documentation files now consistently use `app.Dialog.*` for all code examples. Here's the summary:

## Audit Complete

All dialog documentation has been updated to consistently use the `app.Dialog.*` pattern:

### Changes Made:

**message.mdx:**
- All examples now use `app.Dialog.Info()`, `app.Dialog.Question()`, `app.Dialog.Warning()`, `app.Dialog.Error()`
- Function signatures updated to accept `app *application.App` parameter
- Nested dialog calls within callbacks also updated

**file.mdx:**
- All examples now use `app.Dialog.OpenFile()`, `app.Dialog.SaveFile()`
- Function signatures updated to accept `app *application.App` parameter
- All error/info dialogs within file operations also updated

**overview.mdx:**
- Already consistent from earlier edits

### Documentation Structure:
Each file now properly documents both approaches in a dedicated section:

```go
// Via DialogManager (recommended when you have an app instance):
app.Dialog.Info()
app.Dialog.OpenFile()

// Package-level functions (useful in callbacks or when app isn't in scope):
application.InfoDialog()
application.OpenFileDialog()
```

But all code examples use the `app.Dialog.*` pattern for consistency with other runtime features like `app.Window`, `app.Event`, etc.

* docs: Fix reference/dialogs.mdx and reference/application.mdx API documentation

Updated docs to match actual Wails v3 Dialogs API:

- reference/dialogs.mdx: Complete rewrite with correct API
  - Use `app.Dialog.OpenFile()` and `app.Dialog.SaveFile()` instead of `app.OpenFileDialog()`
  - Use `AddFilter("name", "pattern")` instead of `SetFilters([]FileFilter{...})`
  - Use `SetFilename()` instead of `SetDefaultFilename()`
  - Use `SetDirectory()` instead of `SetDefaultDirectory()`
  - Remove non-existent `SelectFolderDialog()` - use `OpenFile().CanChooseDirectories(true).CanChooseFiles(false)`
  - Use `AddButton()` with callbacks instead of `SetButtons()`
  - Use `SetDefaultButton(*Button)` instead of `SetDefaultButton(int)`
  - Document that `Show()` returns nothing, use callbacks

- reference/application.mdx: Fix Dialog Methods section
  - Use `app.Dialog.*` manager pattern
  - Show correct Question dialog with button callbacks
  - Fix file dialog examples with `AddFilter()`
  - Remove `SelectFolderDialog()` reference

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

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

* docs: Remove package-level dialog function references

Remove all references to package-level dialog functions
(application.InfoDialog(), application.OpenFileDialog(), etc.)
from documentation. Only the app.Dialog manager pattern
should be used.

Updated files:
- reference/dialogs.mdx
- features/dialogs/overview.mdx
- features/dialogs/message.mdx
- features/dialogs/file.mdx

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

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

* refactor: Remove package-level dialog functions in favor of app.Dialog manager

BREAKING CHANGE: Remove package-level dialog functions. Use app.Dialog manager instead.

Removed functions:
- application.InfoDialog()
- application.QuestionDialog()
- application.WarningDialog()
- application.ErrorDialog()
- application.OpenFileDialog()
- application.SaveFileDialog()

Use the Dialog manager pattern instead:
- app.Dialog.Info()
- app.Dialog.Question()
- app.Dialog.Warning()
- app.Dialog.Error()
- app.Dialog.OpenFile()
- app.Dialog.SaveFile()

This aligns dialogs with other runtime managers like app.Window and app.Event.

Updated files:
- v3/pkg/application/application.go - Remove exported dialog functions
- v3/pkg/application/dialog_manager.go - Use internal newMessageDialog/newOpenFileDialog
- v3/pkg/application/messageprocessor_dialog.go - Use internal dialog constructors
- v3/examples/* - Update all examples to use app.Dialog pattern
- v3/internal/commands/appimage_testfiles/main.go - Update test file
- v3/UNRELEASED_CHANGELOG.md - Document breaking change

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

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

* fix: Use application.Get() in dialogs-basic example and correct filter docs

- Update dialogs-basic helper functions to use application.Get() instead
  of passing app through function parameters
- Fix incorrect documentation claiming space/comma delimiters work for
  filter patterns (only semicolons are supported)

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

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

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-16 06:05:40 +11:00
Lea Anthony
f3af37be72
fix(darwin): prevent window destruction when hiding with ApplicationShouldTerminateAfterLastWindowClosed (#4800)
* ## Summary

I've verified and fixed the bug reported in GitHub issue #4389. Here's what was done:

### Root Cause Analysis

The crash occurred on macOS when using `Hide()` and `Show()` to toggle window visibility via a system tray. The sequence was:

1. `Hide()` calls `orderOut:nil` which removes the window from screen
2. With `ApplicationShouldTerminateAfterLastWindowClosed = true` (default), macOS considers the app to have no visible windows
3. macOS triggers `windowShouldClose:` which emits `EventWindowShouldClose`
4. The event mapping translates this to `Common.WindowClosing`
5. The `WindowClosing` handler destroys the window and removes it from the window map
6. When `Show()` is called later, the window doesn't exist anymore → crash

### Fix Implementation

**File: `v3/pkg/application/webview_window_close_darwin.go`**
- Added new exported function `windowIsHidden()` that checks if a window is marked as hidden via `window.options.Hidden`

**File: `v3/pkg/application/webview_window_darwin.m`**
- Added extern declaration for `windowIsHidden`
- Modified `windowShouldClose:` delegate method to return `false` early (without emitting close events) if the window is hidden

The fix ensures that when a window is intentionally hidden (not closed), the close event sequence is not triggered, preserving the window for later re-showing.

### Test Case Created

Created `v3/tests/systray-hide-show-test/` - a test application that:
- Creates a window and system tray
- Clicking the tray toggles window visibility
- Previously crashed after hide→show→hide sequence; now works correctly

### Files Modified

1. `v3/pkg/application/webview_window_close_darwin.go` - Added `windowIsHidden()` function
2. `v3/pkg/application/webview_window_darwin.m` - Check hidden state in `windowShouldClose:`
3. `v3/UNRELEASED_CHANGELOG.md` - Added fix entry

### Files Added

1. `v3/tests/systray-hide-show-test/main.go` - Test case
2. `v3/tests/systray-hide-show-test/icon.png` - Icon for test

All existing tests pass. The fix is minimal and targeted, only affecting the specific scenario where a hidden window receives a close query.

* Done. The redundant test case has been removed. The fix is covered by the existing `v3/examples/hide-window/` example.

Current staged changes:
- Deleted `v3/tests/systray-hide-show-test/` (test case, icon, and binary)

The fix itself (in `webview_window_close_darwin.go` and `webview_window_darwin.m`) and the changelog entry were already committed in the previous commit.
2025-12-15 22:28:41 +11:00
Lea Anthony
531f9e0c5b
fix(v3): fix context menu memory leak and improve native resource reuse (#4801)
All tests pass. Let me provide a summary of the changes.

## Summary

This issue (#4012) is about **Dynamic Context Menu** support, labeled as a Bug affecting macOS.

### Root Cause Analysis

I identified two related issues:

1. **macOS Memory Leak**: In `webview_window_darwin.go`, the `openContextMenu` function created a **new** `macosMenu` and `NSMenu` every time a context menu was displayed, ignoring any existing `menu.impl`. This caused:
   - Memory leaks (NSMenu objects never released)
   - Wasted CPU cycles rebuilding the native menu each time
   - Inconsistent behavior with other platforms

2. **Windows Memory Leak**: In `webview_window_windows.go`, the `openContextMenu` function created a new `Win32Menu` each time without destroying the previous one, leaking Windows menu handles.

### Fixes Applied

**1. macOS (`v3/pkg/application/webview_window_darwin.go:889-897`):**
```go
func (w *macosWebviewWindow) openContextMenu(menu *Menu, data *ContextMenuData) {
    // Reuse existing impl if available, otherwise create new one
    if menu.impl == nil {
        menu.impl = newMenuImpl(menu)
    }
    thisMenu := menu.impl.(*macosMenu)
    thisMenu.update()
    C.windowShowMenu(w.nsWindow, thisMenu.nsMenu, C.int(data.X), C.int(data.Y))
}
```

This now:
- Reuses existing `menu.impl` if available (consistent with Linux)
- Only creates new impl on first display
- The `update()` call still rebuilds native items from current Go state for dynamic updates

**2. Windows (`v3/pkg/application/webview_window_windows.go:1174-1184`):**
```go
func (w *windowsWebviewWindow) openContextMenu(menu *Menu, _ *ContextMenuData) {
    // Destroy previous context menu if it exists to prevent memory leak
    if w.currentlyOpenContextMenu != nil {
        w.currentlyOpenContextMenu.Destroy()
    }
    // Create the menu from current Go-side menu state
    thisMenu := NewPopupMenu(w.hwnd, menu)
    thisMenu.Update()
    w.currentlyOpenContextMenu = thisMenu
    thisMenu.ShowAtCursor()
}
```

This now properly destroys the old `Win32Menu` before creating a new one.

**3. Updated `v3/UNRELEASED_CHANGELOG.md`** with fix entries.

### Files Changed
- `v3/pkg/application/webview_window_darwin.go`
- `v3/pkg/application/webview_window_windows.go`
- `v3/UNRELEASED_CHANGELOG.md`

### Testing
- Build passes ✓
- All existing tests pass ✓
- Manual testing recommended using `v3/examples/contextmenus` app
2025-12-15 22:26:31 +11:00
Ndianabasi Udonkang
9b03981d06
Fix documentation to Use singular 'Screen' (#4784)
* Fix documentation to use singular 'Screen'

Updated references from 'Screens' to 'Screen' in documentation.

* Update UNRELEASED_CHANGELOG.md
2025-12-15 22:19:51 +11:00
COD3HUNT3R
698d950add
Add desktop environment detection on linux (#4797)
* add desktop environment detection on linux

* Update UNRELEASED_CHANGELOG.md
2025-12-15 18:18:48 +11:00
github-actions[bot]
c5af373c43 chore(v3): bump to v3.0.0-alpha.47 and update changelog [skip ci] 2025-12-15 02:46:36 +00:00
Lea Anthony
35500c891e
fix(macos): Show hidden windows when dock icon is clicked (#4583) (#4790)
When an application starts with Hidden: true, clicking the dock icon
now correctly shows the window. This matches standard macOS UX where
clicking the dock icon should bring up the app's windows.

The fix adds a default handler for ApplicationShouldHandleReopen that
automatically shows all hidden windows when there are no visible windows.

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

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-14 15:26:16 +11:00
GitHub Actions
3da9b0a8de [skip ci] Publish @wailsio/runtime v3.0.0-alpha.77 2025-12-14 04:06:00 +00:00
Lea Anthony
2c9d23b040
fix(macos): fix print dialog not opening and add Window.Print() to runtime (#4789)
fix(macos): fix print dialog not opening and add Window.Print() to runtime (#4290)

The print dialog was not opening on macOS because the CGO windowPrint function was passing the wrong pointer type to NSPrintOperation's runOperationModalForWindow method. It was passing the raw void* window instead of the properly cast WebviewWindow* nsWindow.

This also adds a Window.Print() method to the JavaScript runtime, allowing frontend code to trigger the print dialog directly without needing a Go binding.

Changes:
- Fix webview_window_darwin.go to use nsWindow instead of window
- Add WindowPrint constant (51) and handler to messageprocessor_window.go
- Add Print() method to window.ts in the runtime
- Rebuild bundled runtime (runtime.js and runtime.debug.js)
- Add print example in v3/examples/print to demonstrate both Go API and JS runtime methods
- Update API documentation for Window.Print() in both Go and JavaScript references

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

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-14 15:04:54 +11:00
github-actions[bot]
780568b030 chore(v3): bump to v3.0.0-alpha.46 and update changelog [skip ci] 2025-12-14 02:47:08 +00:00
Lea Anthony
4fbe0353f7 chore: disable setup wizard from CLI
Remove the setup.Action that runs the wizard when calling `wails setup`.
The signing and entitlements subcommands are retained.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 07:23:49 +11:00
GitHub Actions
b1dd5a437b [skip ci] Publish @wailsio/runtime v3.0.0-alpha.76 2025-12-13 20:00:01 +00:00
Lea Anthony
f0a8bcad34
feat(linux): add WebKit2 load-change events (#4783)
* All changes are complete. Here's a summary of what was implemented for issue #3896:

## Summary

Added four new WebKit2 load-change events for Linux to match WebKitGTK's documented load-change signals:

### New Events
| Event | ID | WebKit Signal | Description |
|-------|-----|---------------|-------------|
| `WindowLoadStarted` | 1059 | `WEBKIT_LOAD_STARTED` | Fired when page load begins |
| `WindowLoadRedirected` | 1060 | `WEBKIT_LOAD_REDIRECTED` | Fired when a redirect occurs |
| `WindowLoadCommitted` | 1061 | `WEBKIT_LOAD_COMMITTED` | Fired when load is committed |
| `WindowLoadFinished` | 1062 | `WEBKIT_LOAD_FINISHED` | Fired when load completes |

### Files Modified
1. **`v3/pkg/events/events.go`** - Added new event types to `linuxEvents` struct and updated all platform event IDs (Mac, Windows, iOS shifted by +4 to accommodate new Linux events)
2. **`v3/pkg/events/events_linux.h`** - Added C defines for new events
3. **`v3/pkg/application/linux_cgo.go`** - Updated `handleLoadChanged()` to dispatch all four load events
4. **`v3/UNRELEASED_CHANGELOG.md`** - Documented the new feature

### Backward Compatibility
- The existing `WindowLoadChanged` event (1058) continues to fire on `WEBKIT_LOAD_FINISHED` for backward compatibility
- `WindowLoadFinished` also fires on `WEBKIT_LOAD_FINISHED` for consistent naming with the new events

Would you like me to commit these changes?

* These are the remaining changes that need to be committed - the generator properly updated:
1. `events.txt` - source of truth for events
2. `event_types.ts` - TypeScript runtime types for JS/TS clients
3. `events_darwin.h` - Mac C header with updated event IDs
4. `events_ios.h` - iOS C header with updated event IDs

These are the final changes needed on top of the previous commit. Would you like me to commit these changes?

* chore: add new Linux WebKit2 load events to known_events.go

Add WindowLoadStarted, WindowLoadRedirected, WindowLoadCommitted,
and WindowLoadFinished to the known events registry.

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

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

* docs: add Linux WebKit2 load events to events-reference guide

Document the new WindowLoadStarted, WindowLoadRedirected,
WindowLoadCommitted, and WindowLoadFinished events in the
Linux Events section of the events reference guide.

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

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

* Update UNRELEASED_CHANGELOG

* refactor(linux): remove deprecated WindowLoadChanged event

Remove the legacy WindowLoadChanged event and replace all internal
references with WindowLoadFinished. This simplifies the event system
by having granular events (LoadStarted, LoadRedirected, LoadCommitted,
LoadFinished) rather than a generic LoadChanged that fired on any state.

- Remove WindowLoadChanged from events.go and event_types.ts
- Update linux_cgo.go to only fire WindowLoadFinished
- Update webview_window_linux.go hooks to use WindowLoadFinished
- Regenerate runtime bundles and known_events
- Update events documentation

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

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

* docs: add breaking change note for WindowLoadChanged removal

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

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

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-14 06:59:01 +11:00
github-actions[bot]
bf1173c831 chore(v3): bump to v3.0.0-alpha.45 and update changelog [skip ci] 2025-12-13 02:39:16 +00:00
Lea Anthony
4607913b67
fix(doctor): correct webkit package detection on Fedora/DNF systems (#4781)
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-13 12:23:17 +11:00
Lea Anthony
41ba4e7d11
feat(linux): generate .desktop file during build (#4575) (#4780)
* ## Summary

I've implemented the fix for issue #4575. Here's what was changed:

### Changes Made

**File: `v3/internal/commands/build_assets/linux/Taskfile.yml`**

1. Added `generate:dotdesktop` as a dependency to `build:native` task (line 45)
2. Added `generate:dotdesktop` as a dependency to `build:docker` task (line 63)

This ensures that the `.desktop` file is generated during every Linux build (both native and Docker-based), not just during packaging operations.

### How it works

- When running `wails build` or `wails dev` on Linux, the build process now automatically generates a `.desktop` file at `build/linux/<app-name>.desktop`
- The `.desktop` file contains:
  - Application name
  - Executable path
  - Icon reference
  - Categories (defaulting to "Development")
- This allows Linux desktop environments to properly display the application icon and metadata even during development

### Testing

To test the changes:
1. Create a new Wails v3 project: `wails3 init -n testapp`
2. Build it: `cd testapp && wails3 build`
3. Verify the `.desktop` file exists: `cat build/linux/testapp.desktop`

Would you like me to run a test or make any additional changes?

* feat(linux): generate .desktop file during build (#4575)

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

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

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-13 12:22:59 +11:00
Lea Anthony
657ca6b2c4
docs: add Linux runtime dependencies and nfpm packaging guide (#4779)
Add documentation for:
- Runtime dependencies table for different Linux distributions
- WebKit2GTK ABI version differences (4.0 vs 4.1)
- Build tags for targeting different ABI versions
- nfpm configuration examples for packaging

Based on community contribution in #4339.

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

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-13 10:59:33 +11:00
Lea Anthony
404b49e3f4 Revert "docs: add Linux runtime dependencies and nfpm packaging guide"
This reverts commit 17bce06c58.
2025-12-13 10:57:05 +11:00
Lea Anthony
9ad954b8d8 Revert "chore: update ISSUES-PLATFORM.md with session progress"
This reverts commit 2b8baf0751.
2025-12-13 10:56:56 +11:00
Lea Anthony
2b8baf0751 chore: update ISSUES-PLATFORM.md with session progress 2025-12-13 10:55:17 +11:00
Lea Anthony
17bce06c58 docs: add Linux runtime dependencies and nfpm packaging guide
Add documentation for:
- Runtime dependencies table for different Linux distributions
- WebKit2GTK ABI version differences (4.0 vs 4.1)
- Build tags for targeting different ABI versions
- nfpm configuration examples for packaging

Based on community contribution in #4339.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-13 10:54:18 +11:00
Lea Anthony
acae20950f
fix(linux): fix file explorer opening wrong directory (#4397) (#4777)
The pathToURI function was using url.PathEscape which incorrectly
escapes forward slashes (/ -> %2F). This caused file URIs like:

  /home/angaz -> file://%2Fhome%2Fangaz (broken)

File managers couldn't parse these malformed URIs correctly, causing
them to open the wrong directory (often a parent directory).

Fixed by using url.URL struct to properly construct file URIs:

  /home/angaz -> file:///home/angaz (correct)

Spaces and other special characters are still properly escaped.

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

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-13 10:35:33 +11:00
Lea Anthony
e0cd24272c
fix(linux): auto-detect and handle .relr.dyn sections for AppImage builds (#4772)
Modern Linux distributions (Arch, Fedora 39+, Ubuntu 24.04+) compile
libraries with .relr.dyn ELF sections. The bundled strip binary in
linuxdeploy cannot process these sections, causing AppImage builds to fail.

This commit:
- Adds hasRelrDynSections() to proactively detect modern toolchains
- Automatically disables stripping (NO_STRIP=1) when detected
- Fixes error output to properly display as string
- Adds documentation explaining the issue and workaround

Fixes #4642

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

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-13 09:56:13 +11:00
Lea Anthony
38c89e06b5 Revert "fix(linux): auto-detect and handle .relr.dyn sections for AppImage builds"
This reverts commit 3d46f4867d.
2025-12-13 08:16:14 +11:00
Lea Anthony
3d46f4867d fix(linux): auto-detect and handle .relr.dyn sections for AppImage builds
Modern Linux distributions (Arch, Fedora 39+, Ubuntu 24.04+) compile
libraries with .relr.dyn ELF sections. The bundled strip binary in
linuxdeploy cannot process these sections, causing AppImage builds to fail.

This commit:
- Adds hasRelrDynSections() to proactively detect modern toolchains
- Automatically disables stripping (NO_STRIP=1) when detected
- Fixes error output to properly display as string
- Adds documentation explaining the issue and workaround

Fixes #4642

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-13 08:14:21 +11:00
Lea Anthony
b35ee41073 docs: add changelog entry for Windows drag-and-drop fix (#4701)
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-13 05:36:05 +11:00
Andraz Vrhovec
54942d4f34
[v3] Fix not enough memory error when initialising drag and drop on Windows
Fix not enough memory error when initialising drag and drop on windows

Co-authored-by: Andraz Vrhovec <andraz@koofr.net>
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-12-13 05:35:39 +11:00
Lea Anthony
e80cf28578
fix: prevent window menu crash on Wayland (#4769) (#4770)
* fix: prevent window menu crash on Wayland by realizing window before showing

On Wayland with GTK3, the appmenu-gtk-module tries to set DBus properties
for global menu integration before the window is fully realized, causing
a crash with the error "GDK_IS_WAYLAND_WINDOW (window) assertion failed".

The fix calls gtk_widget_realize() before gtk_widget_show_all() to ensure
the window has a valid GdkWindow when the menu system accesses it.

This fix is applied to both the CGO and purego implementations.

Fixes wailsapp/wails#4769

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

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

* feat: add Wayland detection to wails3 doctor and test for #4769

- Add Wayland session detection row to `wails3 doctor` output on Linux
- Create test project v3/test/4769-menu to manually verify the menu fix

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

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

* fix: sanitize GTK application name to prevent crashes with invalid characters

Application names containing spaces, parentheses, hash symbols, or other
invalid characters would cause GTK to fail with an assertion error.

Added sanitizeAppName() function that:
- Replaces invalid characters with underscores
- Handles leading digits
- Removes consecutive underscores
- Defaults to "wailsapp" if empty

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

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

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-12 17:59:47 +11:00
github-actions[bot]
726c7546ce chore(v3): bump to v3.0.0-alpha.44 and update changelog [skip ci] 2025-12-12 02:42:17 +00:00
Lea Anthony
c4b614cb10
fix: use structured logging for debug/info methods (#4767)
* fix: use structured logging for debug/info methods

The debug() and info() methods were using fmt.Sprintf() which expects
printf-style format directives, but callers were using slog-style
key-value pairs. Changed to pass args directly to Logger.Debug/Info
which properly handles structured logging.

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

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

* docs: add changelog entries for build fixes

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

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

* chore: remove temporary debug print statements from mobile merge

Remove emoji debug logs (🔴, 🟢, 🟠, 🔵, 🔥) that were accidentally left in
from the iOS/Android mobile platform support merge. These were development
debugging statements that should not have been included in the final code.

Files cleaned:
- application.go
- application_debug.go
- init_android.go
- init_ios.go
- mainthread_android.go
- mainthread_ios.go
- webview_window.go
- webview_window_ios.go

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

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

* docs: add changelog entries for debug cleanup and breaking change

- Add breaking change note: production builds are now default
- Add entry for debug print statement removal

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

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

* fix: convert remaining printf-style debug calls to slog-style

Convert three debug() calls that were still using printf-style format
strings to slog-style structured logging (key-value pairs):

- systemtray_windows.go: ShellNotifyIcon show/hide failures
- application_darwin.go: window lookup failure

This addresses CodeRabbit review feedback and ensures consistency
with the refactored debug() method.

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

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

* fix: convert all printf-style info() calls to slog-style

Convert remaining info() calls that were using printf-style format
strings to slog-style structured logging (key-value pairs):

- application_ios.go: iOS log messages and HandleJSMessage calls
- webview_window_windows.go: WM_SYSKEYDOWN logging
- application.go: handleWindowMessage and handleWebViewRequest logging

Also removed debug fmt.Printf statements from handleWebViewRequest.

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

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

* fix: add build tag to main.m to prevent Go from compiling it on non-iOS platforms

Go's toolchain tries to process .m (Objective-C) files when they're in a
directory with Go files. Adding a //go:build ios tag tells Go to only
process this file when building for iOS, matching how darwin .m files
handle this (e.g., //go:build darwin && !ios).

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

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

* chore: remove orphaned wails-mimetype-migration submodule reference

The iOS merge added a submodule reference without a corresponding
.gitmodules file, causing Cloudflare and other CI systems to fail
with "No url found for submodule path" errors.

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

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

* fix: auto-disable DMA-BUF renderer on Wayland with NVIDIA to prevent crashes

WebKitGTK has a known issue with the DMA-BUF renderer on NVIDIA proprietary
drivers running Wayland, causing "Error 71 (Protocol error)" crashes.

This fix automatically detects NVIDIA GPUs (via /sys/module/nvidia) and sets
WEBKIT_DISABLE_DMABUF_RENDERER=1 when running on Wayland.

Also removes leftover debug print statements from mobile platform merge.

See: https://bugs.webkit.org/show_bug.cgi?id=262607

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

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

* feat: add NVIDIA driver info to wails3 doctor on Linux

Shows NVIDIA driver version and srcversion in doctor output to help
diagnose Wayland/NVIDIA compatibility issues.

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

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

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-12 09:03:11 +11:00
Lea Anthony
2e396bd48f fix(ios): correct service implementation pattern for dock and notifications
The iOS service stubs were importing a non-existent package
`github.com/wailsapp/wails/v3/pkg/services` and using an incompatible
interface pattern.

This fix rewrites both files to follow the same pattern as other platforms
(Linux, Windows, Darwin):
- Implement the internal platformDock/platformNotifier interfaces
- Provide New() functions returning *DockService/*NotificationService
- Stub all required interface methods

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-12 06:01:38 +11:00
Michael Baklor
a878b2c1af
fix(config): dev server started with production build by default 2025-12-11 19:08:32 +02:00
github-actions[bot]
47d827c394 chore(v3): bump to v3.0.0-alpha.43 and update changelog [skip ci] 2025-12-11 02:42:53 +00:00
Lea Anthony
f2c90b00f2 chore: remove .crush directory
Remove local database files that shouldn't be tracked in version control.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 22:14:08 +11:00
GitHub Actions
6f4df3206d [skip ci] Publish @wailsio/runtime v3.0.0-alpha.75 2025-12-10 11:12:45 +00:00
Lea Anthony
04a5e4d768 feat: [EXPERIMENTAL] Add iOS and Android mobile platform support
⚠️ EXPERIMENTAL: This feature is under active development and may change.

This merge adds initial support for building Wails applications for iOS
and Android platforms. Desktop builds are completely unaffected as mobile
code uses platform-specific build tags.

## What's Included

### iOS Support
- Native iOS app structure with WKWebView
- iOS-specific runtime methods (haptics, device info, scroll settings, etc.)
- Xcode project generation (`wails3 ios xcode:gen`)
- iOS Simulator deployment via Taskfile
- Native UITabBar support
- iOS application lifecycle events

### Android Support
- Android app structure with WebView
- Android-specific runtime methods (haptics, device info, toast)
- Gradle-based build system
- APK generation and emulator deployment
- Android NDK cross-compilation support

### Transport Layer
- iOS and Android message processors adapted to new RuntimeRequest pattern
- Mobile-specific error types (InvalidIOSCallError, InvalidAndroidCallError)
- Platform stubs for non-mobile builds

### Build System
- New Taskfile includes for ios: and android: tasks
- Lazy SDK_PATH evaluation (iOS builds don't break Android on Linux)
- Project templates include mobile build configurations

## Requirements
- iOS: macOS with Xcode 15+
- Android: Android Studio with NDK r26d

## Known Limitations
- Some mobile APIs are stubbed pending full implementation
- Mobile builds require platform-specific toolchains
- Not yet tested in production environments

Report issues: https://github.com/wailsapp/wails/issues

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 22:11:29 +11:00
Lea Anthony
d1a7299e27 fix: restore events.go from v3-alpha to fix compilation errors
The iOS branch modified events.go with debug println statements and
changed the EventProcessor.Emit signature from returning error to void.
This broke compatibility with event_manager.go and messageprocessor_events.go.

Restored the v3-alpha version which:
- Uses atomic.Bool for cancelled flags (thread-safe)
- Has EventProcessor.Emit return error for validation
- Includes decodeEventData and validateCustomEvent functions
- Removes debug println statements

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 22:06:33 +11:00
Lea Anthony
29f751931a fix: remove duplicate iOS subcommand and make SDK_PATH lazy in iOS Taskfile
- Remove duplicate iOS subcommand registration in main.go (merge artifact)
- Make SDK_PATH a task-level variable in iOS Taskfile to avoid eager
  evaluation that fails on non-macOS systems when running Android builds

This fixes Android builds failing with "xcrun: command not found" on
Linux systems where Xcode tools are unavailable.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 21:59:12 +11:00
Lea Anthony
637713fae6 feat: adapt iOS and Android message processors to RuntimeRequest transport
Transport layer refactor adaptations for mobile platforms:

- Refactor processIOSMethod to use RuntimeRequest signature
- Refactor processAndroidMethod to use RuntimeRequest signature
- Add androidRequest constant (12) and handler to messageprocessor.go
- Update messageprocessor_mobile_stub.go for non-mobile builds
- Fix undefined windowID variable (use req.WebviewWindowID)
- Add iOS event generation to tasks/events/generate.go
- Add InvalidIOSCallError and InvalidAndroidCallError to errs package
- Update iOS delegate and webview files with generated event handlers

iOS methods refactored: Haptics.Impact, Device.Info, Scroll settings,
Navigation gestures, Link previews, Debug inspector, UserAgent

Android methods refactored: Haptics.Vibrate, Device.Info, Toast.Show

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 21:27:04 +11:00
Lea Anthony
c62a094b9a fix: resolve merge conflict in AndroidOptions and add AGENTS.md
- Fix merge conflict marker in application_options.go
- Add AGENTS.md with beads workflow documentation for AI agents

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 21:15:15 +11:00
Lea Anthony
96dff3885d Merge Android support from v3-alpha-feature/android-support
This commit integrates Android platform support for Wails v3.

Key changes:
- Add Android-specific application, webview, and runtime files
- Add Android event types
- Add Android examples and build system (Gradle)
- Add JNI bridge for Go <-> Java communication
- Update application options for Android configuration
- Add Android include to common Taskfile template

Note: The Android branch was more recent than the iOS branch
and had fewer conflicts with the transport layer refactor.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 18:37:24 +11:00
Lea Anthony
873848a077 Merge iOS support from v3-alpha-feature/ios-support
This commit integrates iOS platform support for Wails v3, adapting the
iOS-specific code to work with the new transport layer architecture.

Key changes:
- Add iOS-specific application, webview, and runtime files
- Add iOS event types and processing
- Add iOS examples and templates
- Update messageprocessor to handle iOS requests
- Move badge_ios.go to dock package

Note: The iOS branch was based on an older v3-alpha and required
significant conflict resolution due to the transport layer refactor
(PR #4702). Some iOS-specific code may need further adaptation:
- processIOSMethod needs to be implemented with new RuntimeRequest signature
- iOS event generation in tasks/events/generate.go needs updating

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 18:34:21 +11:00
Steve Tynor
7c8cc6c0e1
Add aria-label to elements in the helloworld app templates (#4760)
* Add aria-label to elements in the helloworld app templates so they can be directly tested by Appium based E2E test clients

* changelog updated

* fix: restore UNRELEASED_CHANGELOG.md to correct state

Remove accidentally merged changelog entries from other PRs and
restore the base entries from v3-alpha with only this PR's changelog entry.

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

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

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 18:19:40 +11:00
rxliuli
9d9d67984f
fix: https://github.com/wailsapp/wails/issues/4636 (#4682)
* fix(v3): fixed update plist, close https://github.com/wailsapp/wails/issues/4636

* chore: update changelog

* feat: add recursive merge support for nested plist dictionaries

Previously, the plist merge was shallow - nested dictionaries were
completely replaced rather than recursively merged. This caused custom
nested configurations to be lost during build asset updates.

Now nested dictionaries are recursively merged, preserving custom keys
at all levels while still allowing new keys to be added and existing
keys to be updated.

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

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

* refactor: replace temp directory with backup-based plist merge

Instead of extracting to a temp directory and copying files over,
we now:
1. Rename existing plists to .plist.bak
2. Extract new assets directly to target
3. Merge backup content into newly extracted plists
4. Clean up backup files

This is simpler, more crash-safe (backups remain if process crashes),
and avoids the overhead of a temp directory and file copying.

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

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

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 17:55:31 +11:00
Caleb Jasik
89f9365c3d
[v3] Ensure the window name is passed as header to AssetFileServer (#4687)
* Add window name header when making webview requests

* Add changelog item

* Update PR no in changelog entry

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-12-10 05:22:28 +00:00
github-actions[bot]
f4d1a5db5d chore(v3): bump to v3.0.0-alpha.42 and update changelog [skip ci] 2025-12-10 02:41:47 +00:00
Lea Anthony
7545701088
Update UNRELEASED_CHANGELOG.md 2025-12-10 08:39:03 +11:00
Lea Anthony
c863d2ce87 fix(docs): use Starlight admonition syntax instead of Aside component
Replace <Aside type="caution"> JSX with :::caution markdown syntax
to fix the docs build error.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 08:26:36 +11:00
Andrey Pshenkin
dc20ce1fd6
Update RawMessageHandler to include originInfo parameter in documentation (#4758)
* Update `RawMessageHandler` to include `originInfo` parameter in documentation

- Expanded examples and handler signature to reflect the additional `originInfo` parameter.
- Detailed `OriginInfo` structure and its platform-specific behaviors added.

* Expand `raw-messages` documentation to include origin validation guidance
2025-12-09 23:30:45 +11:00
Andrey Pshenkin
7d0016bbbe
[V3] Add origin to raw message handler (#4710)
* Add support for origin tracking in raw message handling

- Implemented origin and top origin tracking for web messages from JavaScript.
- Updated `RawMessageHandler` to include `originInfo`.
- Added cross-platform support for retrieving the origin of messages in macOS, Windows, and Linux.

* fix build

* fix build

* fix build

* fix build

* fix build

* Fix nil checks and string handling for message origins across platforms

- Ensure proper fallback to empty strings for `origin` and `topOrigin` when errors or nil values are encountered.
- Normalize handling of `message.body` to account for non-NSString values in macOS.

* add docs

* Remove unused doc

* update changelog

* fix build

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-12-08 20:29:09 +11:00
Andrey Pshenkin
9336875969
[V3] Add universal link support for macOS (#4712)
* Rename `HandleCustomProtocol` to `HandleOpenURL` and add universal link support on macOS.

* Update changelog.

* add docs

* add docs

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-12-08 08:46:21 +00:00
Lea Anthony
f50061f7c9 docs: add RawMessageHandler documentation
- Add RawMessageHandler section to Application API reference
- Add System.invoke() to Frontend Runtime reference
- Create comprehensive Raw Messages guide

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 19:32:34 +11:00
GitHub Actions
e989d0d248 [skip ci] Publish @wailsio/runtime v3.0.0-alpha.74 2025-12-07 11:20:17 +00:00
Andrey Pshenkin
561473d992
[V3] Refactor binding transport layer (#4702)
* custom transport initial

* transport codecs

* runtime set transport

* events transport

* clauded example

* bundled runtime

* wip: transport

* rework transports

* rework dialog responses

* cleanup

* cleanup

* improve error handling in HTTPTransport

* cleanup

* cleanup

* cleanup

* cleanup

* review changes

* review changes

* review changes

* review changes

* review changes

* review changes

* review changes

* move documentation to website docs

* update doc

* update changelog

* introduce JSClient method for transport for embedding JS part in transport

---------

Co-authored-by: Atterpac <Capretta.Michael@gmail.com>
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-12-07 22:19:12 +11:00
Lea Anthony
d16371b119 fix(commands): update task wrapper tests for cross-platform build system
Update tests to match the new wrapTask behavior introduced in the
cross-platform build system:
- Task names are now prefixed with platform (e.g., linux:build)
- ARCH argument is automatically added based on GOARCH
- GOOS/GOARCH args are filtered from remaining args
- Environment variables are respected with arg overrides

Also adds test for the new SignWrapper command.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07 22:05:01 +11:00
Lea Anthony
f3ad34f475 fix(generator): suppress warning console output during tests
Use NullLogger instead of DefaultPtermLogger during tests to prevent
console output. Warnings are still written to warnings.log for
comparison. This prevents GitHub Actions Go problem matcher from
treating any warning-like output as errors.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07 21:41:14 +11:00
Lea Anthony
db4385faed fix(generator): add [warn] prefix to warnings.log test fixtures
Update test to prefix warnings with [warn] when writing to warnings.log,
and update all fixture files accordingly. This prevents the Go problem
matcher from treating diff output as errors during CI.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07 21:26:07 +11:00
Lea Anthony
d813202159 fix(generator): prevent warnings from triggering GitHub Actions errors
Add [warn] prefix to generator warnings to prevent the Go problem
matcher from interpreting them as errors. The matcher regex matches
file.go:line:col: patterns, causing CI failures on valid warning output.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07 20:53:43 +11:00
Lea Anthony
efa82ec5f3 fix(ci): always run v3 tests for PRs targeting v3-alpha
Remove the paths filter that was causing v3 build and test jobs to be
skipped when PRs targeting v3-alpha didn't contain changes in the v3/
directory. This ensures all PRs to v3-alpha are properly tested.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07 17:41:02 +11:00
Lea Anthony
431869bf84 feat(setup): add global defaults, light/dark mode, and UI improvements
- Add global defaults config stored in ~/.config/wails/defaults.yaml
- Add light/dark mode toggle with theme persistence
- Add PKGBUILD support to Linux build formats display
- Add macOS signing clarification (public identifiers vs Keychain storage)
- Fix spinner animation using CSS animate-spin
- Add signing defaults for macOS and Windows code signing
- Compact defaults page layout with 2-column design
- Add Wails logo with proper light/dark theme variants

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07 17:40:53 +11:00
Lea Anthony
46176d32e4 feat(setup): improve dependency UX with retry button and loading animations
- Add retry button to dependencies page when missing deps exist
- Add loading spinner animation when checking dependencies
- Merge required/optional dependency lists with (optional) indicator
- Show single combined install command for all missing system packages
- Remove individual install commands and redundant status messages
- Fix duplicate npm appearing in both required and optional sections

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07 10:30:44 +11:00
Lea Anthony
ab42b12628 feat(setup): add real OS logos and fix version display
- Add Apple, Windows, and Tux (Linux) SVG logos in welcome screen
- Remove extra "v" prefix from Wails version display
- Remove "go" prefix from Go version display

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-06 20:14:06 +11:00
Lea Anthony
96aa27eb9b feat(setup): redesign wizard as classic installer with actionable install
- Redesign as classic Windows-style page-by-page wizard
- Add install commands from doctor/packagemanager for missing deps
- Show copyable commands for system package installs (pacman, apt, etc)
- Add external links for npm (nodejs.org) and Docker (docker.com)
- Add API endpoint to run install commands from wizard
- Show breadcrumb navigation: Welcome > Dependencies > Docker > Complete
- Add Cancel button and Back/Next navigation
- Dependencies page shows Required/Optional sections with status
- Docker page shows cross-compilation setup with image build option
- Complete page has copyable next steps commands
- Include InstallCommand and HelpURL fields in DependencyStatus

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-06 20:03:02 +11:00
Lea Anthony
b8630ca7b5 feat(v3): add interactive setup wizard command
- Add setup.go command that launches the web-based setup wizard
- Register `wails3 setup` command in main.go
- Fix SignWrapper registration to use NewSubCommand pattern

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-06 17:04:43 +11:00
Lea Anthony
5bac6d7d19 feat(setup): Preserve existing setup wizard design 2025-12-06 17:02:35 +11:00
Lea Anthony
3594b77666 feat(v3): add cross-platform build system and signing support
Add Docker-based cross-compilation for building Wails apps on any platform:
- Linux builds from macOS/Windows using Docker with Zig
- Windows builds with CGO from Linux/macOS using Docker
- macOS builds from Linux/Windows using Docker with osxcross

Add wails3 tool lipo command using konoui/lipo library for creating
macOS universal binaries on any platform.

Add code signing infrastructure:
- wails3 sign wrapper command (like build/package)
- wails3 tool sign low-level command for Taskfiles
- wails3 setup signing interactive wizard
- wails3 setup entitlements for macOS entitlements
- Keychain integration for secure credential storage

Update all platform Taskfiles with signing tasks:
- darwin:sign, darwin:sign:notarize
- windows:sign, windows:sign:installer
- linux:sign:deb, linux:sign:rpm, linux:sign:packages

Reorganize documentation:
- Move building/signing guides to guides/build/
- Add platform-specific packaging guides (macos, linux, windows)
- Add cross-platform build documentation
- Add comprehensive signing guide with CI/CD examples
- Add auto-updates guide and updater reference
- Add distribution tutorial

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-06 13:53:37 +11:00
Lea Anthony
f8175363cf fix(docs): rewrite lifecycle documentation with correct v3 API
- Replace incorrect OnStartup hook with actual v3 lifecycle mechanisms
- Document Services with ServiceStartup/ServiceShutdown interfaces
- Document application-level hooks: ShouldQuit, OnShutdown, PostShutdown
- Document event-based lifecycle with OnApplicationEvent and OnWindowEvent
- Document window hooks with RegisterHook for cancellable events
- Add correct platform-specific defaults for quit-on-last-window-close
- Add JavaScript example to services Quick Start
- Make Taskfile dev task depend on setup task

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 06:34:45 +11:00
Lea Anthony
ea2e0ec891 Merge origin/v3-alpha into v3-alpha-feature/android-support 2025-11-28 21:20:47 +11:00
Lea Anthony
4d8ec29feb feat: Add Android support for Wails v3
This commit adds comprehensive Android support for Wails v3, enabling
Go applications to run as native Android apps with WebView-based UI.

Key features:
- Android-specific application implementation with JNI bridge
- WebView integration via WebViewAssetLoader for serving assets
- JavaScript runtime injection and execution via JNI callbacks
- Binding call support with async result callbacks
- Event system support for Android platform
- Full example Android app with Gradle build system

Technical details:
- Uses CGO with Android NDK for cross-compilation
- Implements JNI callbacks for Go <-> Java communication
- Supports both ARM64 and x86_64 architectures
- WebView debugging support via Chrome DevTools Protocol
- Handles empty response body case in binding calls to prevent panic

Files added:
- v3/pkg/application/*_android.go - Android platform implementations
- v3/pkg/events/events_android.go - Android event definitions
- v3/internal/*/\*_android.go - Android-specific internal packages
- v3/examples/android/ - Complete example Android application
- v3/ANDROID_ARCHITECTURE.md - Architecture documentation

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 21:06:59 +11:00
Lea Anthony
3f0091aba9 fix(docs): update starlight-blog to v0.25.1 to fix build error 2025-11-24 21:54:59 +11:00
Lea Anthony
55f2782559 fix(docs): update starlight to v0.36.2 to support social links array 2025-11-24 21:52:26 +11:00
Lea Anthony
0d02db8ce6 fix(docs): comment out all broken d2 diagrams and fix invalid aside type 2025-11-24 21:46:26 +11:00
Lea Anthony
7e21ce614a fix(docs): disable broken d2 diagram and fix installer 2025-11-24 21:33:15 +11:00
Lea Anthony
af2f054813 fix: Add path filters and fix env placement in docs workflow
- Add path filters to only trigger on docs/** changes
- Remove incorrectly placed GH_TOKEN env variable
- This should make the workflow trigger properly
2025-11-23 22:40:21 +11:00
Lea Anthony
3c78e45426 docs: Trigger rebuild with minor update 2025-11-23 22:36:06 +11:00
Lea Anthony
c42b84f2e2 fix: Correct D2 binary path from ~/.local/bin to /usr/local/bin 2025-11-23 22:32:38 +11:00
Lea Anthony
11b63088fb fix: Update D2 installation in GitHub Actions workflow
- Use cp instead of mv to copy D2 binary
- Add version check to verify installation
- This should resolve the D2 installation failure
2025-11-23 21:32:16 +11:00
Lea Anthony
c8c5bd15e7 fix: Add React integration to Astro config to resolve JSX renderer issue 2025-11-23 21:30:24 +11:00
Lea Anthony
fc510586df fix: Add D2 installation to GitHub Pages workflow and remove temp dev file
- Install D2 binary in GitHub Actions before building docs
- Remove DEVELOPER_GUIDE.md temporary file from docs content
- This fixes the docs build failure on GitHub Pages
2025-11-23 21:28:46 +11:00
Lea Anthony
c84506a8a8 docs: Comprehensive documentation redesign and v3-alpha updates
This commit represents a complete redesign of the Wails v3 documentation structure
and includes all recent v3-alpha updates.

## Major Changes

### Documentation Restructure
- Migrated from /learn to organized /features, /guides, /reference structure
- Created new Quick Start section with installation and first app guides
- Added comprehensive Concepts section explaining architecture and lifecycle
- Reorganized Contributing section with detailed guides for different contribution types
- Added complete API Reference with separate pages for each major component

### New Documentation
- Custom URL Protocols guide with NSIS automatic registration
- Windows Packaging guide with NSIS, MSI, and MSIX options
- Typed Events system with TypeScript binding generation
- Complete menu documentation (Application, Context, System Tray)
- Comprehensive dialog documentation (File, Message, Custom)
- Window management guides (Basics, Events, Frameless, Multiple Windows)
- Bindings documentation (Services, Methods, Models, Best Practices)
- New tutorials: Todo app and Notes app (vanilla JS)

### v3-alpha API Updates
- Typed Events: RegisterEvent[T] with strict mode and binding generation
- Custom Protocols: NSIS macros for automatic Windows protocol registration
- System Tray: Windows Show/Hide now fully functional with tooltip limits
- Window Hidden: Fixed white flash on Windows when creating hidden windows
- Notifications: Corrected import path to pkg/services/notifications
- Frontend Runtime: Events.Emit now returns Promise<boolean> for cancellation

### Documentation Improvements
- Updated all code examples to use @wailsio/runtime imports
- Added platform-specific event tables and examples
- Created comprehensive event reference with use cases
- Added security best practices and validation patterns
- Improved code examples with real-world use cases
- Added troubleshooting sections and common patterns

### Files
- Created: 60+ new documentation pages
- Deleted: Old /learn structure (13 files)
- Modified: 15 existing files for v3-alpha compatibility
- Added: Tutorial assets and showcase images
2025-11-23 20:57:25 +11:00
github-actions[bot]
986efc7e7f chore(v3): bump to v3.0.0-alpha.41 and update changelog [skip ci] 2025-11-23 02:46:07 +00:00
Brad Harker
b652e61e2c
Fix background color alpha on linux (#4722)
* Fix background color alpha on linux

* Add CHANGELOG entry

* Apply suggestion from @coderabbitai[bot]

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

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-11-22 03:58:11 +00:00
github-actions[bot]
c36618c2ac chore(v3): bump to v3.0.0-alpha.40 and update changelog [skip ci] 2025-11-13 02:38:55 +00:00
Lea Anthony
54d5b989bb
Fix Windows systray icon regression (#4706)
* Fix Windows systray icon regression (#4704)

This fixes a regression introduced in commit d58d4ba where the systray
icon no longer defaults to the application icon when no custom icon is
provided.

The issue was that the default icon loading was changed from:
  defaultIcon := w32.LoadIconWithResourceID(w32.GetModuleHandle(""), w32.RT_ICON)

To:
  defaultIcon := getNativeApplication().windowClass.Icon

This caused the systray to display the default Wails icon instead of
the application's custom icon.

The fix reverts the default icon loading back to using
w32.LoadIconWithResourceID with w32.RT_ICON, which correctly loads
the application's icon resource.

Fixes: #4704

* Update changelog for systray icon fix

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-11-13 07:57:46 +11:00
github-actions[bot]
c3b169f0d3 chore(v3): bump to v3.0.0-alpha.39 and update changelog [skip ci] 2025-11-12 02:38:00 +00:00
GitHub Actions
0ed4e05946 [skip ci] Publish @wailsio/runtime v3.0.0-alpha.73 2025-11-11 09:27:10 +00:00
Ian VanSchooten
bbd5d99667
[v3] Typed Events, revisited (#4633)
* Add strong event typings

* Make `EmitEvent` take one data argument only

* Add event registration logic

* Report event cancellation to the emitter

* Prevent registration of system events

* Add support for typed event data initialisation

* Binding generation for events

* Tests for event bindings

* Add vite plugin for typed events

* Fix dev command execution order

Co-authored-by: Fabio Massaioli <fabio.massaioli@gmail.com>

* Propagate module path to templates

* Update templates

Co-authored-by: Ian VanSchooten <ian.vanschooten@gmail.com>

* Go mod tidy for examples

* Switch to tsconfig.json for jetbrains IDE support

* Replace jsconfig in example

* Convert vite plugin to typescript

* Downgrade vite for now

The templates all use 5.x

* Remove root plugins dir from npm files

It's now '/dist/plugins'

* Include types for Create

But keep out of the docs

* Assign a type for cancelAll results

* Restore variadic argument in EmitEvent methods

* Support registered events with void data

* Test cases for void alias support

* Support strict mode

* Support custom event hooks

* Update docs

* Update changelog

* Testdata for typed events

* Test data for void alias support

* fix webview_window emit event

* Update changelog.mdx

* Update events

* Fix generator test path normalization for cross-platform compatibility

The generator tests were failing on CI because they compared absolute file paths
in warning messages. These paths differ between development machines and CI environments.

Changes:
- Normalize file paths in warnings to be relative to testcases/ directory
- Handle both Unix and Windows path separators
- Use Unix line endings consistently in test output
- Update all test expectation files to use normalized paths

This ensures tests pass consistently across different environments including
Windows, macOS, Linux, and CI systems.

* Remove stale comment

* Handle errors returned from validation

* Restore variadic argument to Emit (fix bad rebase)

* Event emitters return a boolean

* Don't use `EmitEvent` in docs

Supposedly it's for internal use, according to comment

* Fix event docs (from rebase)

* Ensure all templates specify @wailsio/runtime: "latest"

* Fix Windows test failure due to CRLF line endings

The test was failing on Windows because:
1. Hardcoded "\n" was being used instead of render.Newline when writing
   warning logs, causing CRLF vs LF mismatch
2. The render package import was missing
3. .got.log files weren't being skipped when building expected file list

Changes:
- Add render package import
- Use render.Newline instead of hardcoded "\n" for cross-platform compatibility
- Skip .got.log files in test file walker

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

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

* Fix template tests by using local runtime package

The template tests were failing because they were installing @wailsio/runtime@latest from npm, which doesn't have the new vite plugin yet. This change packs the local runtime and uses it in template tests instead.

Changes:
- Pack the runtime to a tarball in test_js job
- Upload the runtime package as an artifact
- Download and install the local runtime in template tests before building
- Update cleanup job to delete the runtime package artifact

* Apply suggestion from @leaanthony

* Fix: Install local runtime in frontend directory with correct path

The previous fix wasn't working because:
1. npm install was run in the project root, not in frontend/
2. wails3 build runs npm install again, which would reinstall from npm

Fixed by:
- Using npm pkg set to modify package.json to use file:// protocol
- This ensures subsequent npm install calls use the local tarball

* Fix Vue template syntax conflicts with Go template delimiters

The Vue templates were converted to .tmpl files to support dynamic module
paths, but Vue's template syntax {{ }} conflicts with Go's template syntax.

Fixed by escaping Vue template braces:
- {{ becomes {{"{{"}}
- }} becomes {{"}}"}}

This allows the Go template engine to output the literal {{ }} for Vue to process.

* Fix Vue template escaping and Windows shell compatibility

Two issues fixed:

1. Vue template escaping: Changed from {{"{{"}} to {{ "{{" }}
   - The previous syntax caused "missing value for command" error
   - Correct Go template syntax uses spaces between delimiters and strings

2. Windows PowerShell compatibility: Added 'shell: bash' to template generation step
   - The bash syntax (ls, head, $()) doesn't work in PowerShell
   - Git Bash is available on all GitHub runners including Windows

* Fix: test_templates depends on test_js for runtime package artifact

The runtime-package artifact is created in test_js job, not test_go.
Added test_js to the needs array so the artifact is available for download.

* Fix Windows path compatibility for runtime package artifact

Changed from absolute Unix path '/tmp/wails-runtime' to relative path
'wails-runtime-temp' which works cross-platform. Using realpath to
convert to absolute path for file:// URL in npm pkg set command.

* Fix realpath issue on Windows for runtime package

realpath on Windows Git Bash was producing malformed paths with duplicate
drive letters (D:\d\a\...). Replaced with portable solution using pwd
that works correctly across all platforms.

* Use pwd -W on Windows to get native Windows paths

Git Bash's pwd returns Unix-style paths (/d/a/wails/wails) which npm
then incorrectly resolves as D:/d/a/wails/wails. Using pwd -W returns
native Windows paths (D:\a\wails\wails) that npm can handle correctly.

This is the root cause of all the Windows path issues.

* Improve typechecking for Events.Emit()

* [docs] Clarify where `Events` is imported from in each example

* Add docs for runtime Events.Emit()

* Revert to v2-style Events.Emit (name, data)

* Update changelog

---------

Co-authored-by: Fabio Massaioli <fabio.massaioli@gmail.com>
Co-authored-by: Atterpac <Capretta.Michael@gmail.com>
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-11 20:25:57 +11:00
github-actions[bot]
6e4e340ade chore(v3): bump to v3.0.0-alpha.38 and update changelog [skip ci] 2025-11-04 02:38:30 +00:00
Atterpac
a3a5d25d90
[v3-linux] fileexplorer fix opening dir on Linux (#4521)
* convert file to use lf line-endings

* fileexplorer fix opening dir on Linux

* include update in unreleased changelog

---------

Co-authored-by: Angus Dippenaar <angusdippenaar@gmail.com>
2025-11-04 08:14:27 +11:00
DeltaLaboratory
d58d4ba758
[v3 alpha] windows tray minor refactor (#4653)
* remove systray add retry loop

* correct setTooltip truncation

* track Windows tray icon ownership to avoid destroying shared handles

* fix incorrect warning call

* stop leaking Windows tray theme listener after destroy

* fix default app icon loading

* fix incorrect truncation

* harden system tray flow

* implement windows tray show/hide

* improved readability

* updateIcon call path

* improve error handling

* systray clock example

* added changelog

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-11-04 07:44:58 +11:00
github-actions[bot]
8ac5984dfd chore(v3): bump to v3.0.0-alpha.37 and update changelog [skip ci] 2025-11-02 02:39:44 +00:00
Leo
11751beb8a
[v3] Fix Windows package task failure (#4668)
* Fix package task incompatibility

* Update UNRELEASED_CHANGELOG.md
2025-11-01 22:01:59 +11:00
github-actions[bot]
57d55643bc chore(v3): bump to v3.0.0-alpha.36 and update changelog [skip ci] 2025-10-15 02:36:28 +00:00
Lea Anthony
f091eee98b
[v3] Fix Windows build error with go-webview2 v1.0.22 (#4645)
* Fix Windows build error with go-webview2 v1.0.22

Fixes #4513

The go-webview2 library changed the MessageCallback signature in v1.0.22
from `func(string)` to `func(message string, sender *ICoreWebView2, args *ICoreWebView2WebMessageReceivedEventArgs)`.

This caused a build error for users:
```
cannot use w.processMessage (value of type func(message string)) as
func(message string, sender *ICoreWebView2, args *ICoreWebView2WebMessageReceivedEventArgs)
value in assignment
```

Changes:
- Updated processMessage signature to match go-webview2 v1.0.22
- Upgraded go-webview2 dependency from v1.0.21 to v1.0.22

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

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

* Fix Windows build error with go-webview2 v1.0.22

Fixes #4513

The go-webview2 library changed the MessageCallback signature in v1.0.22
from `func(string)` to `func(message string, sender *ICoreWebView2, args *ICoreWebView2WebMessageReceivedEventArgs)`.

This caused a build error for users:
```
cannot use w.processMessage (value of type func(message string)) as
func(message string, sender *ICoreWebView2, args *ICoreWebView2WebMessageReceivedEventArgs)
value in assignment
```

Changes:
- Updated processMessage signature to match go-webview2 v1.0.22
- Upgraded go-webview2 dependency from v1.0.21 to v1.0.22

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

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

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-10-14 21:40:53 +11:00
github-actions[bot]
8cd89fc5ef chore(v3): bump to v3.0.0-alpha.35 and update changelog [skip ci] 2025-10-14 02:34:13 +00:00
COD3HUNT3R
0f23972fed
Fix linux appimage task (#4644)
* Fixes https://github.com/wailsapp/wails/issues/4642

* Fix Linux appimage appicon variable in Linux taskfile
2025-10-14 08:52:55 +11:00
github-actions[bot]
ca594c5919 chore(v3): bump to v3.0.0-alpha.34 and update changelog [skip ci] 2025-10-06 02:34:59 +00:00
Matthew
f1037c8e22
[v3] Fix Linux Desktop Template & Windows NSIS Template Added (#4510)
* feat: added custom protocols to tmpl for windows wails tools

* fix:: .Info.Protocols, .Info doesn't exist and causes templater to error

* test: tests for build assets

* feat: updated changelog

* feat: insert macro for custom protocols

* Update changelog

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-10-05 10:58:54 +00:00
github-actions[bot]
e2c95ba292 chore(v3): bump to v3.0.0-alpha.33 and update changelog [skip ci] 2025-10-04 02:28:46 +00:00
Jack Doan
84fcd705cc
[V3] Fix Linux systray updates (#4615)
* linux: Refresh the menu when it's set so dbus ever finds out

* changelog

* obey the rabbit
2025-10-03 13:39:41 +10:00
github-actions[bot]
f5fa1158dc chore(v3): bump to v3.0.0-alpha.32 and update changelog [skip ci] 2025-10-02 02:32:29 +00:00
rxliuli
6023f8ba5b
docs(v3): fixed notifications pkg path (#4617)
* docs(v3): fixed notifications pkg path

* chore(v3): update changelog

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-10-02 12:29:51 +10:00
GitHub Actions
a72bc5039c [skip ci] Publish @wailsio/runtime v3.0.0-alpha.72 2025-10-02 02:03:00 +00:00
Lea Anthony
6665a3a4b3
fix: Move HandlePlatformFileDrop to window._wails internal API (#4616)
* fix: Move HandlePlatformFileDrop to window._wails internal API

Fixes #4489

## Problem
The npm package @wailsio/runtime doesn't work for drag-and-drop because
Go backend calls window.wails.Window.HandlePlatformFileDrop(), but the
npm package doesn't populate window.wails (by design for encapsulation).

## Root Cause
PR #3295 (March 2024) intentionally removed window.wails assignment from
the npm package to improve encapsulation. However, this broke platform
handlers that Go backend relies on.

## Solution
Move HandlePlatformFileDrop from public API (window.wails) to internal
API (window._wails), following the existing pattern:
- window._wails.invoke
- window._wails.environment
- window._wails.flags

## Changes
- Register handlePlatformFileDrop in window._wails namespace
- Update Go backend to call window._wails.handlePlatformFileDrop()
- Use camelCase naming for consistency with other internal API methods
- Rebuild bundled runtime with changes

## Benefits
 npm package works without window.wails pollution
 Maintains encapsulation of public API
 Platform handlers clearly separated as internal
 Follows existing internal API conventions

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

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

* chore: Add changelog entry for drag-and-drop fix

Updates UNRELEASED_CHANGELOG.md with the fix for #4489.

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

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

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-10-02 12:01:53 +10:00
Lea Anthony
4d888a3df6
fix: prevent white window flash when Hidden option is true (#4612)
* fix: prevent white window flash when Hidden option is true

Fixes #4611

When creating a window with Hidden: true, the window was briefly
visible as a white window before disappearing. This was caused by
CreateWindowEx using WS_OVERLAPPEDWINDOW style which includes
WS_VISIBLE by default.

The fix excludes WS_VISIBLE from the window style when the Hidden
option is set to true, ensuring the window remains invisible until
explicitly shown via window.Show().

* Update Changelog
2025-10-02 11:55:38 +10:00
GitHub Actions
f70b9bf229 [skip ci] Publish @wailsio/runtime v3.0.0-alpha.71 2025-09-27 22:01:45 +00:00
Lea Anthony
3d1dc86079 Fix commit of npm package changes 2025-09-28 08:00:42 +10:00
Lea Anthony
cb76ef8c60 Bump npm version and fix pipeline 2025-09-28 07:50:55 +10:00
Lea Anthony
4a9d693e93 Regenerate runtime package 2025-09-28 07:37:57 +10:00
github-actions[bot]
cbf70499c3 chore(v3): bump to v3.0.0-alpha.31 and update changelog [skip ci] 2025-09-27 02:30:33 +00:00
Lea Anthony
751e4afe3f
[V3] Fix Window Affinity weirdness (#4600)
* Fix window affinity weirdness

* Update changelog
2025-09-27 12:25:00 +10:00
github-actions[bot]
966e3d5fbc chore(v3): bump to v3.0.0-alpha.30 and update changelog [skip ci] 2025-09-26 02:33:55 +00:00
samstanier
bb53fcbfac
[V3 alpha] Fix ultrawide monitor support on Wayland (fixes #4429) (#4561)
* Fixed Wayland related window maximum size issues on ultrawide monitors by adding a monitor-window search fallback.

* Fixed Wayland related window maximum size issues on ultrawide monitors by adding a monitor-window search fallback.

* Added note to UNRELEASED_CHANGELOG.md regarding Wayland ultrawide monitor fix of issue 4439.

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-09-25 06:01:16 +00:00
Lea Anthony
386034e1ef Update nightly release script 2025-09-25 14:42:51 +10:00
Lea Anthony
c6f6b0d054 Update nightly release script 2025-09-25 14:03:59 +10:00
Lea Anthony
91ee276115 Move to d2 diagrams in docs 2025-09-25 14:02:19 +10:00
Lea Anthony
bfd7a6279c chore(v3): bump to v3.0.0-alpha.29 and update changelog [skip ci] 2025-09-25 13:57:32 +10:00
Richard Bidin
335fa0bcc5
[V3 Alpha] Improves macOS Window menu support (#4588)
* feat: Binds window menu to app windows

* chore: disables tab feature & controls from menu by default

* docs: Adds title to example for it to show in the window menu item

* style: removes redundant SetBackgroundColor call

* chore: rolls back disabling tab controls for a future optional config

* docs: adds change description to unreleased notes

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-09-25 13:30:59 +10:00
Zach Botterman
ff6a333621
[v3] macOS Dock Service (#4451)
* dock service

* add docs and update comments

* remove unneeded doc imports

* update comment

* update comment

* update comment

* update changelog

* consolidate to dock service

* update examples + thread safety

* fix linux

* update docs

* thread safety

* Update v3/pkg/services/dock/dock_darwin.go

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

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-09-24 07:30:02 +00:00
Riad Afridi Shibly
da9fd9690d
fix: v3-alpha wails3 cli installation path (#4597)
* fix: v3-alpha wails3 cli installation path

* Update Changelog

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-09-24 05:45:49 +00:00
Olivier Cornu
c179893911
fix: compilation issue when using react+nextJs application (#4585)
* fix: compilation issue when using react+next application

When building with next, I got an error during the "collecting page data" step.
Cannot find module '/home/node/application/node_modules/@wailsio/runtime/dist/utils' imported from /home/node/application/node_modules/@wailsio/runtime/dist/contextmenu.js] {
code: 'ERR_MODULE_NOT_FOUND',

* doc: added fix in the changelog

* fix: updated UNRELEASED_CHANGELOG.md

* doc: follow naming convention

* Remove v2 changelog entry

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-09-20 04:37:46 +00:00
Lea Anthony
a937780218 Add iOS support for Wails v3 alpha
This commit introduces comprehensive iOS platform support for Wails v3, enabling
developers to build native iOS applications using Go and web technologies.

Key Features:
- Full iOS application lifecycle management with WKWebView integration
- Native iOS options configuration (scroll, bounce, navigation gestures, media playback)
- iOS-specific build system with Xcode project generation
- Support for iOS simulators and physical devices
- Native tab bar (UITabBar) integration with SF Symbols
- iOS runtime API for platform-specific functionality
- Complete example iOS application with Puppertino UI framework
- iOS template for new projects
- Build tasks and configuration for iOS development
- Support for input accessory view management
- Custom user agent configuration
- Background color support for iOS windows

Technical Implementation:
- iOS-specific message processor for event handling
- Native Objective-C bridges for iOS APIs
- WKWebView configuration and management
- iOS asset handling and bundling
- Proper build constraints for iOS platform
- Integration with existing Wails v3 architecture

This enables developers to target iOS alongside existing desktop platforms
(macOS, Windows, Linux) using a single Go + web technology codebase.

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-20 14:14:14 +10:00
Josh Ghiloni
afbbcc9521
Check for empty buffers instead of nil in responsewriter (#4576)
* Check for empty buffers instead of nil in responsewriter

Use Case:

I am using a service that implements `http.Handler` to send streaming
video to the frontend. Reliably, when sending fragmented MP4 data on
MacOS, the app would panic because the buffer being sent through the
response passed a not-nil check but would panic when accessing the first
byte of the buffer.

This PR addresses that by checking if the buffer is not empty instead of
nil, accounting for the case where len(buf) == 0 and cap(buf) > 0, or
maybe where buf[0] == '\0' (I'm not sure how the nil checks work for
slices)

* Update UNRELEASED_CHANGELOG

* Update v3/internal/assetserver/webview/responsewriter_darwin.go

nil and len check

---------

Co-authored-by: Atterpac <89053530+atterpac@users.noreply.github.com>
2025-09-16 16:03:07 -04:00
Atterpac
c567263f56
Bump version to 3.0.0-alpha.69 (#4569) 2025-09-09 14:41:20 +10:00
younggann
9d51280ec6
fix(macOS): Use visibleFrame for window centering to exclude menu bar (#4516)
* fix(macOS): Use visibleFrame for window centering to exclude menu bar

The windowCenter() function was using [screen frame] which includes
the menu bar and dock areas, causing windows to appear positioned
too high on the screen when centered.

This change uses [screen visibleFrame] instead, which excludes the
menu bar and dock areas, resulting in proper visual centering.

Fixes vertical centering issue on macOS in Wails v3 alpha.

* Update v3/UNRELEASED_CHANGELOG.md

* Update changelog entry format

---------

Co-authored-by: Atterpac <89053530+atterpac@users.noreply.github.com>
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-09-07 09:35:08 +00:00
Lea Anthony
f4b9677bdc fix(v3-alpha): correct version.txt content to v3.0.0-alpha.27 2025-09-07 14:40:21 +10:00
Lea Anthony
04ebc69fc6 Resolve version.txt conflict to v3.0.0-alpha.27 2025-09-07 14:39:44 +10:00
Lea Anthony
1993ae3d8f chore(v3-alpha): set base version to v3.0.0-alpha.27 for next nightly (alpha.28) 2025-09-07 14:34:03 +10:00
Lea Anthony
f7326d8fef v3.0.0-alpha.27 2025-09-07 14:06:08 +10:00
Copilot
89ef7f7c55
Fix v3 release pipeline: correct git operation order to prevent version lag (#4546)
* Initial plan

* Fix v3 release pipeline: reorder git operations and add missing trigger workflow

Co-authored-by: leaanthony <1943904+leaanthony@users.noreply.github.com>

* Potential fix for code scanning alert no. 159: Workflow does not contain permissions

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

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: leaanthony <1943904+leaanthony@users.noreply.github.com>
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-09-02 20:39:21 +10:00
Etesam
91f4906908
[v3] Liquid glass redefinition error (#4542)
* Fixed issue with redefinition of NSGlassEffectViewStyle

* Added entry to changelog

* Updated enum names

* Fix docs

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-08-30 11:57:21 +10:00
github-actions[bot]
043c4a0d94 v3.0.0-alpha.26 2025-08-24 02:40:05 +00:00
Lea Anthony
4bfc52f0b5
Add native Liquid Glass effect support for macOS (#4534)
* 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>
2025-08-24 07:16:19 +10:00
github-actions[bot]
8115b88a71 v3.0.0-alpha.25 2025-08-16 02:37:32 +00:00
Josh Ghiloni
15812b4f80
fix: make options in update build-assets override (#4505)
* fix: make options in update build-assets override

Before this fix, if `-config` was passed to `wails3 update
build-assets`, the values in the config file, even if they were empty,
would be used. Now, we only use the config file value if the value was
not passed in on the command line (or is the zero value or default value
for the option).

I'll be honest, I feel a little dirty about this implementation since
I had to copy string constants out of struct tags. Not very DRY of me.
That said, there was no obvious way to get the default value of a given
option. If I missed something, happy to have this corrected, but I've
tested it and it seems to be doing the things it should be doing.

* Update v3 changelog
2025-08-15 18:10:25 +10:00
github-actions[bot]
47af2d2d48 v3.0.0-alpha.24 2025-08-13 02:39:39 +00:00
Lea Anthony
fb664a7c48
[v3] Sanitise browser URL (#4500)
* Sanitise the browser urls!
2025-08-12 21:20:36 +10:00
Aldrich Asuncion
b7414a4303
[v3] Fix SetBackgroundColour on Windows (#4492)
* Fix SetBackgroundColour on Windows

Update Chromium window color on calls to SetBackgroundColour.

* update changelog

* v3.0.0-alpha.23

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-12 20:45:24 +10:00
github-actions[bot]
fdff7e7b21 v3.0.0-alpha.22 2025-08-10 02:50:53 +00:00
Lea Anthony
bf805b4152
Update CLI to pass through variables (#4488)
* feat: Update CLI to pass parameters through to Task commands

- Modified build and package commands to accept otherArgs parameter
- Updated task wrapper to forward CLI variables to Task
- Enhanced task.go to properly parse and handle CLI variables (KEY=VALUE format)
- Fixes issue where 'wails3 build' and 'wails3 package' commands weren't forwarding parameters

Fixes #4422

* Update changelog

* Apply suggestion from @coderabbitai[bot]

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

* Fix cli.mdx

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-08-09 21:44:30 +10:00
Eugene Medvedev
c2ba85663f
Correct nfpm.yaml template package dependencies. (#4481)
* Correct nfpm.yaml template package dependencies.

As is, the `nfpm.yaml` template pulls in `-dev` versions of the packages the built Wails application actually relies on, in addition to `build-essential`. Which will work, but is way overkill. This PR corrects this.

I have tested this on an Ubuntu 22.04 VM and a Rocky Linux 10 VM, *(which actually necessitated attaching the EPEL repository)* but I did not verify Arch beyond looking up packages.

Additionally, it appears that the package name for RPM distro family is not in tune with the rest of them, referring to an earlier version of webkit2gtk, which has also been corrected.

**P.S.** Could we supply our own templates or updatable build files pretty please?

* Addressing points brought up.

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-08-09 18:29:31 +10:00
Lea Anthony
3f11d4e3fa
feat: Add Content Protection for Windows and macOS (#4485)
* feat: Add Content Protection for Windows and macOS

- Prevents window contents from being captured by screen recording/sharing software
- Windows: Uses WDA_EXCLUDEFROMCAPTURE on Windows 10 2004+, falls back to WDA_MONITOR
- macOS: Uses NSWindowSharingType to set window as read-only for screen sharing
- Added ContentProtectionEnabled option to WebviewWindowOptions
- Added SetContentProtection() method for runtime control
- Added comprehensive documentation and example usage

* fix changelog.mdx

* Misc fixes

* Misc fixes

* Update v3/pkg/w32/user32.go

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

* Remove debug line

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-08-09 17:12:39 +10:00
Lea Anthony
fe717c42b5
Refactor to using Window interface (#4471)
Refactor window interface to eliminate type assertions and improve code maintainability
2025-08-09 15:28:08 +10:00
github-actions[bot]
1a03404983 v3.0.0-alpha.21 2025-08-07 02:49:31 +00:00
COD3HUNT3R
b3c01f4c67
[v3] fix linux .desktop file appicon variable (#4477)
* [v3] fix linux .desktop file appicon variable

* Update UNRELEASED_CHANGELOG.md

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-08-06 22:03:25 +10:00
Oussama Sethoum
26a18ef7a0
[v3] Fix WindowUnMinised event not fired when the window was Maxmised on Windows platform. (#4478)
* fix: v3-alpha WindowUnMinimise not fired when window is maximized ( Windows )

* add fix to changelog.mdx

* Apply suggestion from @coderabbitai[bot]

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

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-08-06 22:00:56 +10:00
github-actions[bot]
69929c2c37 v3.0.0-alpha.20 2025-08-06 02:49:12 +00:00
Yules
c02ba8f5d6
[v3] update docs to reflect changes from Manager API Refactoring (#4476)
* (docs) installation.mdx: update required Go version to 1.24

* (docs) update for Manager API Refactoring https://github.com/wailsapp/wails/pull/4359

* add entry in UNRELEASED_CHANGELOG.md to satisfy github actions

* thx coderabbitai

* thx coderabbitai
2025-08-05 23:59:45 +10:00
github-actions[bot]
1cf9042063 v3.0.0-alpha.19 2025-08-05 02:50:29 +00:00
Lea Anthony
d863e525e3
Fix Windows crash bug (#4460)
* ## Summary

I've successfully fixed the nil pointer dereference bug in the Wails v3 system tray functionality on Windows. Here's what I addressed:

**Root Cause**: The bug occurred in `systemtray_windows.go:80` where `*trayBounds = PhysicalToDipRect(*trayBounds)` was dereferencing a potentially nil pointer without checking.

**Fixes Applied**:

1. **`positionWindow` method (lines 80-82)**: Added nil check for `trayBounds` before dereferencing
2. **`bounds` method (lines 121-123, 129-131)**: Added checks for uninitialized `hwnd` and nil return from `GetSystrayBounds`
3. **`iconIsInTrayBounds` method (lines 147-149, 155-157, 160-162)**: Added similar protective checks and taskbar position validation
4. **`getScreen` method (lines 173-175)**: Added `hwnd` initialization check
5. **`openMenu` method (lines 45-47)**: Added nil check for `trayBounds`

**Key Improvements**:
- Added proper initialization checks for `s.hwnd == 0`
- Added nil pointer checks for all Windows API return values
- Ensured graceful error handling instead of panics
- Maintained existing functionality while preventing race conditions

The fix addresses the race condition where system tray operations could be called before the tray was fully initialized, preventing the nil pointer dereference panic described in issue #4456.

* Update changelog
2025-08-04 20:45:01 +10:00
Atterpac
10447e6fcd
[V3] Drag-n-Drop Zones and improvements (#4318)
* new events

* macOS dnd improvements

* wailsio adds for dropzone

* update example

* sorta working

the top 300px of the window are not dropabble for some reason i suspect it has to do with the drag enter/drag leave xy as the performOperation needed to use the ContentView for appropriate X/Y

* implement attribute detection for data-wails-dropzone

* docs

* pass x/y dnd linux

* cleanup exmample

* changelog

* pass all attributes to golang on dragdrop

* filetree example

* fix dnd build windows

* Fix windows dnd

* update docs

* remove debug log

* appease the security bot

* Fix changelog

* Fix changelog

* Revert "Fix event generation issues."

This reverts commit ae4ed4fe

* Fix events

* Fix merge conflicts. Fix events generation formatting

* Update docs

* Fix duplicate bundledassets import causing build failures

Remove duplicate import of bundledassets package that was causing
compilation errors in PR #4318. The import was declared twice in
the same import block, causing "bundledassets redeclared" errors.

Fixes build issues in GitHub Actions for drag-and-drop zones feature.

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

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

* Replace fmt.Printf debug statements with globalApplication.debug

Replace all fmt.Printf debug logging statements in drag-and-drop
functionality with proper globalApplication.debug calls. This provides:

- Consistent logging with the rest of the application
- Proper key-value structured logging
- Better integration with the application's logging system
- Cleaner debug output format

Changes:
- application_darwin.go: Replace 2 fmt.Printf calls
- webview_window.go: Replace 6 fmt.Printf calls
- webview_window_windows.go: Replace 13 fmt.Printf calls
- Remove unused fmt import from application_darwin.go

All debug messages maintain the same information but now use
structured logging with key-value pairs instead of printf formatting.

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

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

* Add nil checks to WindowEventContext methods

Ensure all WindowEventContext methods properly handle nil c.data
by initializing the map when it's nil. This prevents panics when
methods are called on contexts that haven't been properly initialized.

Changes:
- DroppedFiles(): Add nil check and map initialization
- setCoordinates(): Add nil check and map initialization
- setDropZoneDetails(): Add nil check and map initialization
- DropZoneDetails(): Add nil check and map initialization

All methods now follow the same pattern as setDroppedFiles()
where a nil data map is automatically initialized to prevent
runtime panics during drag-and-drop operations.

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

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

* Update v3/pkg/application/webview_window_darwin.m

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

* reinstate events docs.

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-08-04 20:40:19 +10:00
hkhere
ca449a7706
[V3] Windows: fix(application): handle error and type assertion in save file dialog (#4284)
* fix(application): handle error and type assertion in save file dialog

---------

Co-authored-by: hkhere <hk@tinyclouds.cn>
Co-authored-by: Atterpac <89053530+atterpac@users.noreply.github.com>
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-08-04 19:57:53 +10:00
mbaklor
9fe9c6647e
[V3] windows: fix html drag and drop (#4259)
* fix(windows): disable external drag only when EnableDragAndDrop is set

* update changelog for html dnd fix

* remove redundant commented out code for windows dnd

* Fix changelog

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
Co-authored-by: Atterpac <89053530+atterpac@users.noreply.github.com>
2025-08-04 19:29:47 +10:00
github-actions[bot]
1227f140b7 v3.0.0-alpha.18 2025-08-03 02:53:39 +00:00
Hudolus
4c70d4501e
Custom Windows Webview2 Args (#4467)
* Adding the ability to pass custom args to windows webview2

---------

Co-authored-by: Jason Gibson <jason@harbingerinteractive.com>
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-08-02 21:03:41 +10:00
Lea Anthony
ed81ab01e7
Support allowsBackForwardNavigationGestures (#4453)
* ## Summary

I have successfully implemented support for `allowsBackForwardNavigationGestures` in Wails v3. Here's what I accomplished:

### Investigation Results
- **Issue Status**: The feature was **NOT** previously implemented in Wails v3
- **go-webview2**: This library is Windows-only and doesn't provide macOS WKWebView features
- **Need**: A native implementation was required specifically for macOS WKWebView

### Implementation Details
1. **Added new option**: `AllowsBackForwardNavigationGestures u.Bool` to `MacWebviewPreferences`
2. **Extended C bridge**: Updated the C struct to pass the preference to Objective-C code
3. **Implemented WKWebView setting**: Added code to set `webView.allowsBackForwardNavigationGestures` during initialization
4. **Updated preference processing**: Extended the Go code to handle the new preference

### Key Files Modified
- `v3/pkg/application/webview_window_options.go`: Added the preference option
- `v3/pkg/application/webview_window_darwin.go`: Implemented the C bridge and WKWebView configuration

### Usage Example
```go
window.SetOptions(application.WebviewWindowOptions{
    Mac: application.MacWindow{
        WebviewPreferences: application.MacWebviewPreferences{
            AllowsBackForwardNavigationGestures: u.True(),
        },
    },
})
```

### Testing
-  Code compiles successfully
-  Created working example demonstrating the feature
-  Follows existing Wails v3 patterns and conventions

### Benefits
- Provides native macOS two-finger swipe navigation
- Better performance than JavaScript alternatives
- Maintains accessibility features
- Seamless integration with existing Wails v3 API

The implementation is ready for testing and could be submitted as a PR to the Wails repository. The feature addresses the exact requirements from GitHub issue #1857 and provides both specific and API-consistent access to WKWebView's navigation gesture functionality.

* Perfect! I have:

1.  Removed the `NAVIGATION_GESTURES_FEATURE.md` file
2.  Removed the `example_navigation_gestures.go` file 
3.  Updated the `UNRELEASED_CHANGELOG.md` with a FIX entry

The changelog entry properly documents that this fix adds support for `allowsBackForwardNavigationGestures` in macOS WKWebView to enable two-finger swipe navigation gestures, referencing issue #1857.

The implementation is now clean and ready, with only the essential code changes remaining and the changelog properly updated to reflect the fix.
2025-08-02 21:02:52 +10:00
Lea Anthony
a9222b538d
Fix: Disabled menu item callback (#4469)
* Fix: macOS disabled menu item callback issue

Fixes bug where menu items that are initially disabled do not fire
their OnClick callbacks after being enabled via SetEnabled(true).

Problem:
- When creating disabled menu items, actions were not set
- When re-enabling, targets were not properly restored based on action type
- This caused callbacks to never fire for initially-disabled items

Solution:
1. Always set action during menu item creation regardless of disabled state
2. Set appropriate targets based on action type and disabled state
3. Enhanced setMenuItemDisabled to restore correct targets when re-enabling:
   - Custom callbacks (@selector(handleClick)): target = menuItem
   - Role-based actions (system selectors): target = nil (responder chain)

This ensures that menu items with OnClick callbacks work correctly
regardless of their initial disabled state.

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

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

* Update changelog

* Update changelog

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-08-02 20:22:09 +10:00
Lea Anthony
b0871c19e1
[v3] Fix: Vite server not cleaned up when build fails (#4436)
* fix: properly clean up Vite server when build fails

Ensures the Vite server process is terminated when a build fails
during 'wails3 dev', preventing port conflicts on subsequent runs.

Fixes #4403

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

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

* fix: add defer for watcher cleanup and tidy up returns

- Add defer cleanup() to ensure resources are always freed
- Remove manual cleanup in error path since defer handles it
- Simplify error handling for better maintainability

Addresses feedback on PR #4436

* fix: prevent channel deadlock in watcher cleanup

- Separate cleanup logic from channel notification
- cleanup() only stops the engine
- signalCleanup() handles both cleanup and channel notification
- Prevents deadlock when function exits normally

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-08-02 17:48:01 +10:00
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
TDF
6539c80ba2
Add goModTidy function to clean up Go module dependencies during inst… (#4286)
* Add goModTidy function to clean up Go module dependencies during installation (#4283)

* Add goModTidy function and update changelog for automatic execution after wails init (#4283)

* Update CLI documentation to clarify bypassing 'go mod tidy' during project initialization (#4283)

* Add -skipgomodtidy flag to CLI and update installation logic to conditionally run go mod tidy

* Update CLI documentation to reflect default value of -skipgomodtidy flag and clean up code (#4283)

* Update docs/src/content/docs/guides/cli.mdx

* fix changelog

---------

Co-authored-by: Triadmoko  Denny Fatrosa <triadmoko.fatrosa@codemi.co.id>
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-08-02 15:51:30 +10:00
Lea Anthony
68c14d711b Prevent v3 workflow from running on PRs against master
Add explicit base_ref checks to ensure the v3 build and test workflow
only runs for PRs targeting the v3-alpha branch.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-02 14:03:23 +10:00
github-actions[bot]
afcdb15503 v3.0.0-alpha.17 2025-07-31 02:48:09 +00:00
Zach Botterman
48e3bd3dd4
[v3] bugfix/windows linux notifications (#4450)
* fix windows encoding

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-07-30 12:40:58 +00:00
Lea Anthony
8d999ba34d Fix pipeline error
https://github.com/wailsapp/wails/actions/runs/16568203492/job/46853333131?pr=4446
2025-07-28 22:15:09 +10:00
Lea Anthony
5f1c2ff6dc Fix pipelines compile error 2025-07-28 21:34:57 +10:00
Lea Anthony
d9a003b56c
Merge and remove test release files 2025-07-26 08:26:56 +10:00
Lea Anthony
4721add9b8
Remove test release-notes.txt file 2025-07-26 08:21:14 +10:00
github-actions[bot]
09e71d82b5 v3.0.0-alpha.16 2025-07-25 22:17:30 +00:00
Lea Anthony
c2f25131d7
Fix YAML syntax error - indent heredoc content 2025-07-26 08:15:03 +10:00
Lea Anthony
a412b70be5
Fix nightly release workflow issues
- Fix backtick command substitution error using here-document
- Add extra spacing before disclaimer section
- Simplify commit message to just version number
2025-07-26 08:13:20 +10:00
Lea Anthony
81d1459b68
Add tests and documentation for --create-release-notes flag
- Add comprehensive test files for release notes creation
- Add edge case testing for empty changelogs and comments
- Add documentation explaining how the feature works
- Verify all functionality works as expected
2025-07-26 07:55:23 +10:00
Lea Anthony
db5b0dcd4b
Add --create-release-notes flag to release script 2025-07-26 07:45:37 +10:00
Lea Anthony
67058c0923
Fix UNRELEASED_CHANGELOG.md path in release script
The file is located at v3/UNRELEASED_CHANGELOG.md, not at the repository root
2025-07-25 22:03:26 +10:00
Lea Anthony
6dc51420ac
Update release workflow 2025-07-25 21:56:28 +10:00
github-actions[bot]
7bd1b4911c 🤖 Automated nightly release v3.0.0-alpha.15
Generated with [Claude Code](https://claude.ai/code)

    Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-25 11:47:24 +00:00
ALMAS
33a9c05213
[V3] feat: add Windows getAccentColor implementation (#4427)
* [V3] feat: add Windows getAccentColor implementation

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-07-25 21:46:05 +10:00
Lea Anthony
9d6e6232d6
v3.0.0-alpha.14 2025-07-25 19:36:50 +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
Lea Anthony
906cd7003d
Fix TS error in runtime 2025-07-25 08:24:01 +10:00
Lea Anthony
f8e4eeb405
Fix build 2025-07-25 07:49:13 +10:00
Lea Anthony
9f2b992d36
Update changelog-validation-v3.yml 2025-07-25 07:43:59 +10:00
Lea Anthony
c08d2d72c3
Fix build 2025-07-25 07:31:29 +10:00
Lea Anthony
bf762699bd
Dark mode menus changelog 2025-07-25 06:41:28 +10:00
Lea Anthony
a29b4f0861
feat: Add full dark mode support for Windows menus 2025-07-25 06:31:46 +10:00
Atterpac
b5ef00fd42
Merge pull request #4289 from atterpac/v3/deeplink
V3 Deep-link (Port of v2 feature)
2025-07-23 15:24:59 -06:00
Lea Anthony
cc5b46cba1
Merge branch 'v3-alpha' into v3/deeplink 2025-07-22 21:46:04 +10:00
Lea Anthony
b566b1830d Fix CLI docs. Closes #4334 2025-07-22 07:06:49 +10:00
Lea Anthony
12022e4947 Fix tests for CI 2025-07-22 07:03:11 +10:00
Lea Anthony
4e2a3505bb
Update pull_request_template.md 2025-07-19 16:55:32 +10:00
Lea Anthony
fd89187c2f fix: remove branch restriction from nightly workflow job
The workflow now explicitly checks out v3-alpha branch, so the job-level
condition 'if: github.ref == refs/heads/v3-alpha' is no longer needed
and was preventing manual runs from other branches.
2025-07-18 14:44:12 +10:00
Lea Anthony
7a71836224 fix: explicitly checkout v3-alpha branch in nightly workflow
Ensures the workflow always checks out the v3-alpha branch regardless
of which branch triggers it (schedule from master or manual dispatch)
2025-07-17 06:59:29 +10:00
Lea Anthony
23e1f8923c Nightly release action 2025-07-17 06:28:19 +10:00
Atterpac
101b09676d Merge remote-tracking branch 'wails/v3-alpha' into v3/deeplink 2025-07-15 08:54:46 -06:00
Atterpac
810dfbb11b fix linux .desktop generation 2025-07-15 08:52:53 -06:00
Lea Anthony
e018ad6b92 v3.0.0-alpha.12 2025-07-15 22:55:57 +10:00
Lea Anthony
234aea19bd Update runtime 2025-07-15 22:55:12 +10: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
Lea Anthony
112ba7ad4e Revert release script 2025-07-15 22:42:01 +10:00
Kodumulo
584872eb9a
[V3] fix: enhance doctor command to verify Windows SDK dependencies (#4392)
* fix: enhance doctor command to verify Windows SDK dependencies ([#4390](https://github.com/wailsapp/wails/issues/4390))

- Updated the doctor command to check for the presence of Windows SDK dependencies, improving the setup process for Windows users.
- Added relevant entry to the changelog for better documentation of this fix.

* Update changelog

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-07-15 18:43:23 +10:00
Lea Anthony
1481b30610
Merge branch 'v3-alpha' into v3/deeplink 2025-07-15 17:03:11 +10:00
Etesam
e11479170a
Added getAccentColor implementation to Env (#4399)
* Added getAccentColor implementation

* Added entry to changelog

* Update v3/pkg/application/environment_manager.go

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

* Update docs/src/content/docs/changelog.mdx

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

* Moved update to unreleased section

* Fixed typo in changelog

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-07-15 03:44:34 +00:00
Atterpac
919524f287
Merge branch 'v3-alpha' into v3/deeplink 2025-07-12 19:41:09 -06:00
Atterpac
cd06965b1a handle linux file association 2025-07-12 19:36:54 -06:00
Atterpac
c15155b29b fix custom protocol example to new api 2025-07-12 19:13:13 -06:00
Atterpac
426b9fc61e rename context consts 2025-07-12 19:09:57 -06:00
Lea Anthony
fb8f12aca9 Add minimal changelog workflow for testing 2025-07-13 11:04:37 +10:00
Atterpac
6857fb840a build example dist 2025-07-12 19:03:13 -06:00
Lea Anthony
9668e348d8 Add simple test workflow to verify GitHub Actions recognition 2025-07-13 10:58:52 +10:00
Lea Anthony
b029a84fe4 Clean up changelog validation - single working workflow
Remove all test files, extra workflows, and artifacts.
Keep only:
- changelog-validation-v3.yml (main workflow)
- v3/scripts/validate-changelog.go (validation script)

Tested and working with act.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-13 10:55:04 +10:00
Lea Anthony
4532b625c9 Clean up changelog validation workflows
- Remove problematic large workflow files
- Add final clean 'Changelog Validation (v3)' workflow
- Tested and working with act
- Uses external Go script for maintainability

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-13 10:53:09 +10:00
Atterpac
89cafbab55 regenerate events 2025-07-12 18:50:36 -06:00
Lea Anthony
50fe8cb855 Add test workflow to verify changelog validation works
Successfully tested with act - validation script and PR diff detection working

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-13 10:37:04 +10:00
Lea Anthony
425c3469b2 Add clean v3 changelog validation workflow with external Go script
- Created external Go validation script in v3/scripts/
- Clean workflow file without embedded scripts (much smaller)
- Should properly show workflow_dispatch trigger in GitHub

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-13 10:33:00 +10:00
Lea Anthony
6a91656914 Add simplified v3 changelog validation workflow for testing
Testing if GitHub Actions accepts smaller workflow files

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-13 10:23:46 +10:00
Lea Anthony
a3affdc963 Fix YAML multiline commit message - simplify to single line
Fixed line 422 YAML syntax error by using single-line commit message
Verified working with act dry-run test

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-13 10:17:18 +10:00
Lea Anthony
b8fdee2a3a Fix all YAML syntax errors in v3-check-changelog workflow
- Fixed multiline commit message formatting
- Fixed JavaScript template literals in GitHub Actions script sections
- Verified with act dry-run test

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-13 10:14:38 +10:00
Lea Anthony
cad1fae3e4 Fix YAML syntax error in v3-check-changelog workflow
Fixed multiline commit message using HEREDOC syntax on line 421

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-13 10:13:02 +10:00
Lea Anthony
52cd0d4cc7 Add v3 changelog validation workflow
This workflow validates changelog entries in PRs targeting v3-alpha branch:
- Detects entries added to already-released versions using diff analysis
- Automatically moves misplaced entries to [Unreleased] section
- Uses proper ### Category format for Keep a Changelog compliance
- Commits fixes back to PR with clear feedback

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-13 10:11:01 +10:00
Lea Anthony
a25ea74d5c chore: Changelog checker 2025-07-13 09:57:57 +10:00
Atterpac
d3d95e07d1 Merge remote-tracking branch 'wails/v3-alpha' into v3/deeplink 2025-07-12 00:32:13 -06:00
Lea Anthony
a5c43da52f v3.0.0.alpha-11 2025-07-12 14:40:53 +10:00
Lea Anthony
cbfbf4699a Merge remote-tracking branch 'upstream/v3-alpha' into v3-alpha 2025-07-12 14:39:22 +10:00
Atterpac
e8765607ff
advanced bindings documentation (#4404)
* advanced bindings documentation

* update changelog

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-07-11 21:12:03 +10:00
Lea Anthony
9f96439ba1
feat: Add distribution-specific build dependencies for Linux (#4339) (#4345)
* feat: Add distribution-specific dependencies using nfpm overrides

Implements feature #4339 by enhancing the nfpm.yaml.tmpl to use nfpm's built-in
overrides feature for different Linux distributions and package formats.

## Changes Made:

### Enhanced nfpm configuration with overrides:
- **Default**: Debian 12/Ubuntu 22.04+ with WebKit 4.1 dependencies
  - Uses libgtk-3-dev, libwebkit2gtk-4.1-dev, build-essential, pkg-config
- **RPM override**: RHEL/CentOS/AlmaLinux/Rocky Linux with WebKit 4.0 dependencies
  - Uses gtk3-devel, webkit2gtk3-devel, gcc-c++, pkg-config
- **Arch override**: Arch Linux with WebKit 4.1 dependencies
  - Uses gtk3, webkit2gtk-4.1, base-devel, pkgconf

This approach uses nfpm's native override system to automatically select
the correct dependencies based on the target package format, ensuring
that each distribution gets the appropriate WebKit version and package names.

### How it works:
- DEB packages get WebKit 4.1 dependencies (default)
- RPM packages get WebKit 4.0 dependencies (RHEL/CentOS compatibility)
- Arch packages get WebKit 4.1 dependencies with Arch-specific package names

Fixes #4339

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

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

* feat: Enhance wails doctor with WebKit fallback support

Improves the doctor command to better detect WebKit dependencies across
different Linux distributions by adding fallback package support.

## Changes Made:

### Enhanced Package Manager Detection:
- **APT (Debian/Ubuntu)**: Added WebKit 4.1 → 4.0 fallback support
- **DNF (Fedora/RHEL)**: Added webkit2gtk4.0-devel fallback for older systems
- **Zypper (SUSE)**: Added webkit2gtk4_1-devel for modern SUSE distributions
- **Emerge (Gentoo)**: Added support for both webkit-gtk:6 and webkit-gtk:4 slots
- **Pacman (Arch)**: Added fallback from webkit2gtk-4.1 to webkit2gtk

### Improved Developer Experience:
- Doctor command now tries newer WebKit versions first, falls back gracefully
- Provides more accurate dependency detection across distributions
- Better guidance for developers on different Linux systems

### How It Works:
- Each package manager lists multiple WebKit package options in order of preference
- The dependency system tries packages in order until it finds one that's available
- Developers get appropriate installation commands for their specific distribution

This complements the nfpm overrides by ensuring developers can properly
set up their development environment regardless of distribution.

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

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

* update changelog

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-07-11 21:03:33 +10:00
Lea Anthony
568aa6602f
v3.0.0-alpha.10 2025-07-06 22:33:06 +10:00
Lea Anthony
b635b8eef5
Fix for pipelines. New blog post 2025-07-06 22:21:09 +10:00
Lea Anthony
504d456dea
Fix window visibility issue #2861 - initialize showRequested based on Hidden option 2025-07-06 15:55:36 +10:00
Lea Anthony
0bb90b421f fix: correct workflow schedule syntax 2025-07-06 11:19:16 +10:00
Lea Anthony
859e843d02 Add complete automated release workflow
- Detects changes in v2 and v3-alpha branches independently
- Runs release scripts and extracts changelog notes
- Creates GitHub releases with proper tags and release notes
- Supports dry-run mode for testing
- Authorization controls for release permissions
- Comprehensive change detection and summary reporting
- Currently disabled (no schedule) for safety
2025-07-06 09:50:45 +10:00
Lea Anthony
71d11c9469 Update v3 release script to extract and print release notes
- Added extractReleaseNotes function to extract content from Unreleased section
- Script now prints release notes between delimiter markers
- Release notes can be captured for use in GitHub release tags
- Maintains existing functionality for updating changelog with version/date
- Mirrors v2 release script functionality for consistency
2025-07-06 09:18:42 +10:00
Lea Anthony
9b0c653948 Add test workflow for nightly releases
- Created test-nightly-releases.yml for safe testing
- Added local test scripts for changelog extraction and version logic
- Updated nightly-releases.yml with changelog integration
- Ready for dry-run testing

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-06 06:59:28 +10:00
Aldrich Asuncion
67edf873be
[v3] Fix OpenFileManager on windows (#4375)
* Fix OpenFileManager on windows

- Use cmd.SysProcAttr.CmdLine to invoke explorer.exe on Windows
- separate platform-specific code in package fileexplorer into separate files

* Update changelog.mdx

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-07-03 05:36:59 +10:00
Lea Anthony
0fc13fee63 fix: restrict v3 workflow to only v3-alpha PRs with v3 changes
Add path filter to ensure Build + Test v3 workflow only runs on
PRs targeting v3-alpha branch that actually modify v3/ directory.
This prevents the workflow from running on master branch PRs.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-02 20:24:58 +10:00
Lea Anthony
4b98ffd590 fix: remove conflicting dir setting in test:examples task
Remove `dir: examples` from test:examples task to fix working directory
conflict in GitHub Actions. The workflow sets working-directory to v3,
and the individual example tasks already specify their own directories.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-02 19:47:29 +10:00
Etesam
c244eeb21f
fixed bug with nil window in processURLRequest (#4366)
* fixed bug with nil window in processURLRequest

* added row to changelog and added log

* removed old code

* Fix getWindowForID undefined error in processURLRequest

Replace non-existent globalApplication.getWindowForID() call with
the correct globalApplication.Window.GetByID() method. This fixes
the compilation error while preserving the nil check functionality
that was intended in the original PR.

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

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

* Add explicit nil check for safer window validation

Add an additional nil check alongside the boolean check from GetByID()
to handle edge cases where a window interface could theoretically be
nil even when the lookup indicates success. This provides defense
in depth against nil pointer dereferences.

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

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

* Change window not found log to debug level

Use globalApplication.debug() instead of log.Println() for missing
window ID messages. This is more appropriate as it's diagnostic
information rather than a user-facing error.

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

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

* Remove unused log import

Remove the "log" import that is no longer needed after switching
to globalApplication.debug() for logging.

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

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

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-07-02 05:27:38 +10: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
Byron
7b7f3cd754
[v3] Make filtered dialog examples code work for linux (#4287)
* Make examples code work

* Changelog
2025-06-19 06:47:34 +10:00
Atterpac
0b7d1f4f67
fix incorrect window destroy (#4323)
* fix incorrect window destroy

* remove duplicate common signals

* Better handling of "shouldclose"

* Better handling of "shouldclose"

* Fix ABI safety issues in exported function for macOS window closing

Address CodeRabbit feedback on ABI safety and data races:
- Change exported function signature to use C types (C.uint, C.bool) for ABI safety
- Convert unconditionallyClose field from bool to atomic uint32 for thread safety
- Update all read/write operations to use atomic operations across platforms

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

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

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-06-18 07:31:55 +10:00
Lea Anthony
a55c1fedcb fix: Resolve MSIX template field reference errors in wails3 init
This fixes the template execution errors that occurred when running 'wails3 init' with MSIX-related templates. The issue was that the templates were trying to access fields under an 'Info' sub-struct that doesn't exist in the BuildConfig context.

Changes:
- Fixed app_manifest.xml.tmpl to use direct field references (e.g., .ProductIdentifier instead of .Info.ProductIdentifier)
- Fixed template.xml.tmpl with the same field reference corrections
- Added missing MSIX-related fields to BuildAssetsOptions struct (Publisher, ProcessorArchitecture, ExecutablePath, ExecutableName, OutputPath, CertificatePath)
- Set appropriate default values for the new fields in GenerateBuildAssets function

Resolves the error: "can't evaluate field Info in type commands.BuildConfig"

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-17 21:22:25 +10:00
Lea Anthony
01ed7affc9
Update semgrep runner (#4356)
* Update semgrep workflow

---------

Co-authored-by: joshhardy <joshhardy@users.noreply.github.com>
2025-06-16 22:11:32 +10:00
Lea Anthony
fbd39c24f4 fix: Properly declare iconIsInTrayBounds variable in Windows systray
Fixes Windows compilation error where iconIsInTrayBounds was being
assigned without declaration. Declares the variable explicitly
before assignment to resolve 'undefined: iconIsInTrayBounds' error.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 00:33:47 +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
3e9f7fce4e Fix DMG import 2025-06-15 23:55:39 +10:00
Lea Anthony
a8c8417d16
Fix for windows icon handle handle leak. 2025-06-15 20:59:20 +10:00
Lea Anthony
1bdeda8530
linux build error fixes 2025-06-14 21:26:41 +10:00
Lea Anthony
4cc8d1cc2f
Add MSIX packaging support for Windows applications 2025-06-14 21:23:59 +10:00
Lea Anthony
16ea4c72fe
docs: Add comprehensive technical documentation for v3 contributors 2025-06-14 21:23:58 +10:00
Lea Anthony
86f891673a Merge remote-tracking branch 'origin/v3-alpha' into v3-alpha 2025-06-14 13:00:30 +10:00
Lea Anthony
d03a63e1b7 fix: Implement robust cross-platform window visibility fallback for issue #2861
Addresses the issue where application windows fail to show on Windows 10 Pro
due to efficiency mode preventing WebView2 NavigationCompleted events.

## Changes Made

### Windows (webview_window_windows.go)
- **Decouple window container from WebView state**: Window now shows immediately
- **Add timeout fallback**: 3-second timeout to show WebView if navigation is delayed
- **Prevent efficiency mode**: Set WebView2 IsVisible=true per Microsoft recommendation
- **Enhanced state tracking**: Added showRequested, visibilityTimeout, windowShown fields
- **Robust navigation completion**: Improved handler to work with new visibility logic

### macOS (webview_window_darwin.go)
- **Documentation**: Added comment noting macOS already follows best practices
- **No functional changes**: macOS implementation already robust

### Linux (webview_window_linux.go, linux_cgo.go, linux_purego.go)
- **Add missing methods**: Implemented show()/hide() methods in main Linux file
- **CGO implementation**: Added windowShow()/windowHide() delegation methods
- **Purego implementation**: Added windowShow()/windowHide() methods for purego builds
- **Consistent behavior**: Matches CGO implementation with position saving

## Implementation Pattern

Adopts the following pattern:
1. **Separate concerns**: Window container vs WebView content readiness
2. **Immediate visibility**: Show window container immediately
3. **Progressive enhancement**: Show WebView content when ready
4. **Robust fallbacks**: Timeout and multiple strategies for edge cases

## Testing Considerations

- Windows 10 Pro efficiency mode scenarios
- WebView2 navigation delays or failures
- Cross-platform consistency
- Performance impact of timeout mechanisms

Fixes #2861

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-14 12:59:44 +10:00
Lea Anthony
d126a3196c Update github.com/jaypipes/ghw dependency to v0.17.0
- Upgraded from v0.13.0 to v0.17.0 to get latest improvements
- Includes enhanced hardware detection capabilities
- Bug fixes for GPU path parsing and PCI address handling
- Verified wails doctor command continues to work correctly

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-12 23:03:34 +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
Lea Anthony
fe29d1405e Add Linux stubs for badge service and fix capabilities compilation
- Add badge_linux.go with no-op implementation for Linux compatibility
- Fix capabilities_linux.go to not require webkit version detection
- Add missing build tag to webkit_linux.go

Resolves "undefined: badge.NewWithOptions" and "undefined: badge.New" errors
that were causing Linux build failures in GitHub Actions for badge examples.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-11 23:45:34 +10:00
Bas van Zanten
2da5955db7
fix: update command (#4311)
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-06-03 07:42:38 +10:00
Lea Anthony
ae4ed4fe31
Fix event generation issues. 2025-05-31 17:13:54 +10:00
Lea Anthony
2c99f9e43c
Update go test workflow 2025-05-31 07:52:19 +10:00
Lea Anthony
371e05cb1f
fix: Correct indentation for build_results job in build-and-test-v3.yml (must be under jobs:) 2025-05-31 07:37:34 +10:00
Lea Anthony
471ea9350b
Update workflows 2025-05-31 07:11:22 +10:00
Lea Anthony
323327b53f
Fix v3 workflow
(cherry picked from commit d3d87d09aa)
2025-05-30 08:22:19 +10:00
Aram
83005be066
[V3] Update systray.mdx example (#4307)
* Update systray.mdx

GUI operations must run on the main thread I guess? this example calling systray.Run() from a non-main thread context and it will panic.

* Update systray.mdx

OnClick function takes *application.Context. the example if not complete
2025-05-26 21:03:37 +10:00
Atterpac
2134bc6e0d docs 2025-05-18 16:52:50 -04:00
Atterpac
9ebc82afbb windows custom protocol 2025-05-18 16:48:18 -04:00
Atterpac
f143bd6866 linux custom protocol + .desktop 2025-05-18 16:48:09 -04:00
Atterpac
a1c26a3fd9 remove unneeded from example 2025-05-18 16:47:56 -04:00
Atterpac
47f264d010 custom protocol application_darwin 2025-05-18 16:35:06 -04:00
Atterpac
b7c6c82cf3 Add ApplicationLaunchedWithUrl event 2025-05-18 16:34:00 -04:00
Atterpac
6e93efcdc1 mac deeplink delegate 2025-05-18 16:33:15 -04:00
Atterpac
a49285bc21 update mac build assets for custom protocol support 2025-05-18 16:33:02 -04:00
Atterpac
dd206c4b67 custom protocol example 2025-05-18 16:32:33 -04:00
Lea Anthony
3716acaae4
Fix permissions issue for labeller 2025-05-15 06:35:41 +10:00
Lea Anthony
fe4e6c766b
More workflow updates
(cherry picked from commit 0c24aa4313)
2025-05-15 06:26:45 +10:00
Lea Anthony
fa5b486966
Dependency updates 2025-05-15 06:26:20 +10:00
Lea Anthony
44fcdf9ad7
Increase stale workflow operations limit 2025-05-14 20:55:08 +10:00
Lea Anthony
582ad826b8
Add GitHub Actions workflow for stale issue management 2025-05-14 20:53:27 +10:00
Lea Anthony
45d9bbcfae
Update stale bot configuration to protect older issues 2025-05-14 20:49:28 +10:00
Lea Anthony
cbbba79340
Add issue management automation tools 2025-05-14 20:47:45 +10:00
Lea Anthony
2abd05f783
Merge pull request #4234 from popaprozac/dock-badge
[V3] Badging
2025-04-28 22:27:50 +10:00
Lea Anthony
191ce6bba3
Merge pull request #4246 from superDingda/v3-alpha-bugfix/4236_menuitem_restore_position
[V3] Restore hidden menuitem at correct position
2025-04-28 22:19:36 +10:00
popaprozac
934d8c8871 update docs 2025-04-26 23:58:04 -07:00
Zach Botterman
b942293823
Update docs/src/content/docs/learn/badges.mdx
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-04-26 23:55:54 -07: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
popaprozac
40117e6565 fallback to default badge if font cannot be used 2025-04-26 19:15:05 -07:00
popaprozac
ce8c10247d fix double uninit 2025-04-26 19:04:53 -07:00
popaprozac
9e3786c9ea add comments and macOS stub 2025-04-26 18:58:11 -07:00
popaprozac
800810f092 extract taskbar 2025-04-26 18:48:27 -07:00
Lea Anthony
2bfbe7f902
Merge pull request #4245 from justinmoon/flush
fallbackResponseWriter implement Flush()
2025-04-27 10:25:38 +10:00
Justin Moon
1618d53967 Update changelog 2025-04-26 17:41:21 -05:00
popaprozac
dabc18f663 center circle color 2025-04-26 12:59:52 -07:00
popaprozac
73705dc56a add build tag 2025-04-26 12:57:17 -07:00
Justin Moon
754a41537a fallbackResponseWriter implement Flush() 2025-04-26 13:25:44 -05: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
52df4837e0
Tidy up 2025-04-26 13:57:00 +10:00
Lea Anthony
f7aaf848ba
Update v3/pkg/services/badge/badge_windows.go
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-04-25 15:48:44 +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
59cc71bdbb fix code block 2025-04-24 20:45:50 -07:00
Zach Botterman
c0a83efe6d
Update docs/src/content/docs/learn/badges.mdx
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-04-24 20:34:15 -07:00
popaprozac
7287c1eb5c render label on windows and sensible defaults 2025-04-24 20:23:28 -07:00
popaprozac
d1d57c132c rabbit suggestions 2025-04-24 16:10:14 -07:00
popaprozac
f311a33bdd update changelog 2025-04-24 15:50:55 -07:00
popaprozac
b55f4ea8e3 add example, update docs, update changelog 2025-04-24 15:47:14 -07:00
popaprozac
be28da26b8 windows badge 2025-04-24 15:47:09 -07:00
popaprozac
94d03d5f13 badge service 2025-04-24 15:47:03 -07:00
Lea Anthony
685d8101aa
Merge pull request #4230 from popaprozac/windows-improvements
[v3] Windows notifications improvements
2025-04-23 15:45:38 +10:00
Zach Botterman
833d533ed7
Merge branch 'v3-alpha' into windows-improvements 2025-04-22 21:38:13 -07:00
Lea Anthony
da0da5fc69
Add wails3 tool version command 2025-04-23 10:29:51 +10:00
popaprozac
66ba876a65 better errors 2025-04-22 16:21:33 -07:00
popaprozac
9fcede47f7 windows improvements 2025-04-22 14:23:32 -07:00
Lea Anthony
421b75ef21
Multiple fixes. Thanks @kron! 2025-04-19 10:27:25 +10:00
Lea Anthony
89a70b94de
Merge pull request #4222 from wailsapp/v3-alpha-bugfix/4061-input-issue-mac
v3-alpha-bugfix/4061-input-issue-mac
2025-04-19 09:19:39 +10:00
Lea Anthony
facc47bd30
Merge branch 'v3-alpha' into v3-alpha-bugfix/4061-input-issue-mac 2025-04-18 18:43:53 +10:00
Fabio Massaioli
0222bfa728
Fix empty selector 2025-04-18 10:32:18 +02:00
Lea Anthony
edb90bdaab
Merge pull request #4130 from oSethoum/v3-alpha-fix-window-events
[v3] fix: fullscreen, unfullscreen, unminise and unmaximise window events …
2025-04-18 16:33:00 +10:00
Lea Anthony
b2a0e2972a
Merge branch 'v3-alpha' into v3-alpha-fix-window-events 2025-04-18 16:30:54 +10:00
Lea Anthony
e973f5ad86
Merge branch 'v3-alpha' into v3-alpha-bugfix/4061-input-issue-mac 2025-04-18 16:18:24 +10:00
Lea Anthony
f59798ef1d
Update changelog 2025-04-18 16:15:39 +10:00
Lea Anthony
eb8a1b53d2
Fix for input on mac 2025-04-18 16:11:14 +10:00
Lea Anthony
2d57b5b1d5
Merge pull request #4126 from robin-samuel/v3-aplpha-fix/build-assets-version
fix: remove prefix from default version in config.yml to avoid nsis error
2025-04-18 16:08:53 +10:00
Lea Anthony
29706a4bf8
Merge branch 'v3-alpha' into v3-aplpha-fix/build-assets-version 2025-04-18 16:08:22 +10:00
Lea Anthony
b80ec34550
Merge pull request #4128 from wailsapp/v3-alpha-bugfix/gin-support
Gin support
2025-04-18 15:58:02 +10: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
Lea Anthony
7e5edfdfe3
Merge pull request #4134 from oSethoum/v3-alpha-bugfix-auto_fill-auto_password_save
[v3] fix: general auto save and general password auto save always enabled
2025-04-18 15:46:32 +10:00
Lea Anthony
81211d56d9
Merge branch 'v3-alpha' into v3-alpha-bugfix-auto_fill-auto_password_save 2025-04-18 15:45:53 +10:00
Lea Anthony
7453df5aa1
Merge pull request #4219 from yulesxoxo/v3-alpha
fix: correct Windows filename in generate:icons task
2025-04-18 15:38:24 +10:00
yulesxoxo
b3cd25cb4a feat: update changelog 2025-04-16 15:27:05 +02:00
yulesxoxo
a9c031155a fix: correct Windows filename in generate:icons task 2025-04-16 15:22:05 +02:00
Lea Anthony
afb4bd933d
Merge pull request #4098 from popaprozac/notifications_darwin
[v3] Notifications API
2025-04-13 13:01:04 +10:00
Lea Anthony
a8e91e7aec
Merge branch 'v3-alpha' into notifications_darwin 2025-04-12 14:42:36 +10:00
Lea Anthony
f891096d97
Fix for webview2 detection 2025-04-12 13:24:36 +10: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
Lea Anthony
0b546a1856
Merge branch 'v3-alpha' into notifications_darwin 2025-04-12 12:56:26 +10:00
Lea Anthony
9e2e980e52
Merge pull request #4133 from IanVS/template-dependencies
[v3] Move runtime to "dependencies", organize package.json files
2025-04-12 12:46:24 +10:00
Lea Anthony
371e103290
Merge branch 'v3-alpha' into template-dependencies 2025-04-12 12:39:13 +10:00
Lea Anthony
0a05348220
Merge pull request #4188 from TheGB0077/patch-2
[v3] Normalize Windows paths on system Dialogs invocations
2025-04-12 12:32:05 +10:00
Lea Anthony
7977a81606
Merge branch 'v3-alpha' into patch-2 2025-04-12 12:31:08 +10:00
Lea Anthony
3fba0cfb22
Merge pull request #4171 from popaprozac/bundle-sign
[v3] Bundling/signing
2025-04-12 12:30:27 +10:00
popaprozac
c482c85c7b revert and append .dev 2025-04-09 15:48:52 -07:00
popaprozac
dcda263fc8 Merge branch 'v3-alpha' of https://github.com/wailsapp/wails into bundle-sign 2025-04-09 15:27:02 -07:00
Gabriel Lima
f46352dbe1 Create dialogs_windows_test.go 2025-04-09 16:21:59 -03:00
Lea Anthony
1d575e3453
Merge pull request #4156 from johannes-luebke/patch-1
[v3] fix: unhandled error in dialogs.go
2025-04-09 18:32:38 +10:00
Lea Anthony
bd74170fb6
Merge pull request #4177 from wimaha/v3-alpha-feature/mac-file-association
[v3] Support for File-Associations on macOS
2025-04-09 18:23:17 +10:00
Gabriel Lima
1b00dc9ac7 small typo 2025-04-07 20:30:01 -03:00
Gabriel Lima
e62c0b0b80 Add fix to changelog [skip ci] 2025-04-07 20:27:11 -03:00
Gabriel Lima
f6750c3a48 delete redundant method 2025-04-07 13:35:37 -03:00
Gabriel Lima
3f22e1fe0c
Normalize Windows paths by default
JS code ends up escaping Windows paths when data gets passed around from backend to the frontend, so those should be normalized beforehand.
2025-04-06 22:36:22 -03:00
popaprozac
75dbe85ad6 remove comptime check 2025-03-29 23:39:50 -07:00
popaprozac
9a41b0ce9f move icon method, impl interface, check compat, don't panic! 2025-03-29 23:36:25 -07:00
Wilko
5f8a858aa9 Update changelog.mdx 2025-03-29 21:40:50 +01:00
Wilko
8c3ee8f1bd Support for File-Associations on macOS 2025-03-29 21:06:53 +01:00
popaprozac
b313f2cee1 fix docs 2025-03-27 14:43:23 -07:00
popaprozac
bd5c82ef35 fix docs 2025-03-27 14:12:53 -07:00
popaprozac
1022f47f14 fix docs 2025-03-27 13:27:39 -07:00
popaprozac
743882a9b9 update docs/changelog 2025-03-27 13:10:45 -07:00
popaprozac
9db28ec5fd update docs/changelog 2025-03-27 11:47:53 -07:00
popaprozac
38ac5f799b sign all things 2025-03-27 11:24:13 -07:00
popaprozac
1db65a84c3 stage docs 2025-03-26 23:12:46 -07:00
popaprozac
af5abda8b1 update example 2025-03-24 21:34:10 -07:00
popaprozac
7d0f7f4652 revert linux wait and update payload on win 2025-03-24 21:26:02 -07:00
popaprozac
276c653b1d update example 2025-03-24 20:22:29 -07:00
popaprozac
d25f923721 wait on dbus 2025-03-24 20:07:31 -07:00
popaprozac
b102279630 update example 2025-03-24 16:05:57 -07:00
popaprozac
1f821667f2 ensure cat id is set for macOS and other rabbit suggestions 2025-03-24 13:56:47 -07:00
popaprozac
7f496c971d fix linux note 2025-03-24 00:16:45 -07:00
popaprozac
9a4542347d follow dbus spec 2025-03-23 23:40:03 -07:00
popaprozac
a68391880c remove deadlock 2025-03-23 00:05:20 -07:00
popaprozac
5ddb27fd3f move chan creation on macos and handle linux shutdown 2025-03-22 23:07:44 -07:00
popaprozac
448c78b226 rewrite and simplify linux impl 2025-03-22 22:36:29 -07:00
popaprozac
ace4f70e3a fix channel cleanup linux 2025-03-22 18:04:30 -07:00
popaprozac
9948cee1f7 monitor dbus connection 2025-03-22 17:51:51 -07:00
popaprozac
f870dcc168 handle notif content errors 2025-03-22 17:39:20 -07:00
popaprozac
b2b8f14053 windows err handling 2025-03-22 16:01:47 -07:00
popaprozac
f6a5bed582 windows err handling 2025-03-22 12:48:47 -07:00
popaprozac
81b40d2afe ensure exactly one delegate created 2025-03-22 12:16:47 -07:00
popaprozac
ef3b7d2bc3 pass service options 2025-03-22 11:51:02 -07:00
popaprozac
be1da68dbc avoid deadlock on win 2025-03-20 22:12:21 -07:00
popaprozac
5dc7bd97f2 refactor/simplify linux 2025-03-20 16:32:53 -07:00
popaprozac
9adeef2bdf fix linux and remove dup code 2025-03-20 16:21:37 -07:00
popaprozac
e55bf8dffc linux bug fix 2025-03-20 13:56:47 -07:00
popaprozac
94f245f035 bug fix 2025-03-20 13:49:49 -07:00
popaprozac
88f13369b6 reorg platform impl 2025-03-20 13:47:03 -07:00
popaprozac
b1db2bba12 add missing error 2025-03-20 10:59:12 -07:00
Johannes Lübke
471402556b chore: fix changelog 2025-03-20 16:56:33 +00:00
Johannes Lübke
010100456d chore: update changelog 2025-03-20 16:50:24 +00:00
Johannes Lübke
14d6623c13
fix: unhandled error in dialogs.go
Does lead to deadlocks otherwise
2025-03-20 14:46:24 +01:00
popaprozac
c58709c1a3 lock registry access/writes 2025-03-19 22:14:17 -07:00
popaprozac
bd857385d3 fix err message 2025-03-19 21:51:57 -07:00
popaprozac
d98f528734 Merge branch 'notifications_darwin' of github.com:popaprozac/wails into notifications_darwin 2025-03-19 21:41:14 -07:00
popaprozac
25256f747f allow only one notification service per app 2025-03-19 21:40:26 -07:00
Zach Botterman
58b5c105a5
Merge branch 'v3-alpha' into notifications_darwin 2025-03-19 18:14:31 -07:00
popaprozac
4af058bd02 more cleanup 2025-03-19 18:10:59 -07:00
popaprozac
ee885fea44 fix mem crash 2025-03-18 23:13:37 -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
Ian VanSchooten
bccff0f73e Update changelog 2025-03-18 16:21:40 -04:00
Ian VanSchooten
137bcc5cbb
Merge branch 'v3-alpha' into template-dependencies 2025-03-18 14:03:32 -04:00
Lea Anthony
4a2dc2875f
Update semgrep action 2025-03-16 12:37:50 +11:00
Lea Anthony
3a3458cff0
Update verify steps in pipeline 2025-03-16 11:35:46 +11:00
popaprozac
e810d6a4b0 tidy 2025-03-14 23:47:59 -07:00
Zach Botterman
6d15f08db4
Merge branch 'v3-alpha' into notifications_darwin 2025-03-14 23:46:04 -07:00
popaprozac
2cb0dac648 set default action id on MATE 2025-03-14 19:13:58 -07:00
popaprozac
e46abdc793 update example 2025-03-14 19:05:27 -07:00
popaprozac
1fa68949e6 // 2025-03-14 19:03:33 -07:00
popaprozac
1e67e943df rename auth func 2025-03-14 18:58:23 -07:00
Zach Botterman
e4ec06a9c8 update example 2025-03-13 23:33:17 -07:00
Lea Anthony
bbb3a0389a
Update deps 2025-03-14 08:35:03 +11:00
Fabio Massaioli
b9e072905a
Merge branch 'v3-alpha' into template-dependencies 2025-03-13 08:12:36 +01:00
Fabio Massaioli
5bc94ce400
Fix indentation of vanilla template package.json 2025-03-13 08:11:51 +01:00
Fabio Massaioli
959ce42f26
Fix sveltekit template package.json 2025-03-13 08:09:09 +01:00
Fabio Massaioli
ee9e3973bd
Fix indentation of sveltekit-ts package.json 2025-03-13 08:07:40 +01:00
Oussama Sethoum
46dd5ef959 add: entry in changelog.mdx 2025-03-12 21:46:53 +01:00
Oussama Sethoum
0be2efc275 fix: general auto save and general password auto save always enabled 2025-03-12 20:48:05 +01:00
Lea Anthony
8abcd81f30
Merge pull request #4116 from IanVS/fix-hidden-menuitem
[V3] Fix initially-hidden menuItem [mac/win]
2025-03-13 06:34:24 +11:00
Lea Anthony
7bd3a1a15c
Merge branch 'v3-alpha' into fix-hidden-menuitem 2025-03-13 06:16:29 +11:00
Ian VanSchooten
3f2db134c2 Remove package-lock.json from templates 2025-03-12 11:39:25 -04:00
Ian VanSchooten
479e22b7c5 Clean up template package.json files 2025-03-12 11:39:25 -04:00
Oussama Sethoum
302c74e90d add: entry in the changelog.mdx for reference. 2025-03-12 00:34:50 +01:00
Lea Anthony
fe6635c1eb
Update Results stage in pipeline 2025-03-12 08:32:26 +11:00
Oussama Sethoum
635ddf5c36 fix: fullscreen, unfullscreen, unminise and unmaximise window events weren't being emitted. 2025-03-11 13:00:22 +01:00
Lea Anthony
d8671de43b
Update README 2025-03-11 21:12:16 +11: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
robinsamuel
53a2620860
Merge branch 'v3-alpha' into v3-aplpha-fix/build-assets-version 2025-03-10 20:54:52 +01:00
Lea Anthony
3b101705d5
Merge pull request #4125 from robin-samuel/v3-aplpha-fix/generate-icons
fix: correct filename for Windows icon generation in Taskfile
2025-03-11 05:59:35 +11:00
robinsamuel
d0d1691004 feat: update changelog 2025-03-10 15:30:10 +01:00
robinsamuel
1bb14e16a5 feat: update changelog 2025-03-10 15:23:05 +01:00
Ian VanSchooten
d30652a6e6 Update changelog 2025-03-10 09:20:21 -04:00
robinsamuel
1a0096c169 fix: update output paths for generated icons in Taskfile 2025-03-09 23:34:12 +01:00
robinsamuel
a5eed9a486 fix: remove prefix from default version in config.yml to avoid nsis error 2025-03-09 23:18:34 +01:00
robinsamuel
d1be724f41 fix: correct filename for Windows icon generation in Taskfile 2025-03-09 23:17:35 +01:00
Lea Anthony
e4d6e54c63
Add gin guide, fix asset server merge, add gin example 2025-03-09 15:58:50 +11:00
Lea Anthony
38a4299883
Add gin guide 2025-03-09 14:38:47 +11:00
Lea Anthony
15b9118077
Add gin example 2025-03-09 14:38:46 +11:00
Jason Kulatunga
d95b77ad04
update changelog. 2025-03-09 14:38:44 +11:00
Jason Kulatunga
742b802cf7
adding http.CloseNotifier and http.Flusher interface to assetserver.contentTypeSniffer, for Gin (and other framework) compatibility. 2025-03-09 14:38:22 +11:00
Lea Anthony
bd59b8c724
Merge pull request #4119 from mbaklor/v3-alpha
[V3] add ".html" to assetFileServer requests with no extension
2025-03-08 12:02:54 +11:00
Lea Anthony
abd27b285e
Merge branch 'v3-alpha' into v3-alpha 2025-03-08 11:54:03 +11:00
Lea Anthony
fd9c37aa44
Update changelog 2025-03-08 11:52:38 +11:00
Lea Anthony
c8e3ba2d4b
PR workflow change 2025-03-08 11:44:02 +11:00
Lea Anthony
e07e924519
Remove Warp agents 2025-03-08 11:35:42 +11:00
Lea Anthony
91e9d6abe9
Merge remote-tracking branch 'IanVS/fix-hidden-menuitem' into fork/IanVS/fix-hidden-menuitem 2025-03-08 11:25:41 +11:00
Lea Anthony
866fb36b67
Add fix for application menu. Add docs 2025-03-08 11:25:06 +11:00
Ian VanSchooten
b733b1d3c4
Fix hidden menuItem on windows
And bring menu_windows into alignment with popupmenu_windows
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
91c9c3f147
Fix comment 2025-03-08 11:25:05 +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
5e529aed01
Add fix for application menu. Add docs 2025-03-08 11:23:24 +11:00
Lea Anthony
03c0d4ce6f
Merge branch 'v3-alpha' into fix-hidden-menuitem 2025-03-08 11:06:42 +11:00
Lea Anthony
163beb5d58
Merge pull request #4118 from atterpac/v3/watcher-fix
v3/ Fix dev watcher - Bump refresh version
2025-03-08 10:54:18 +11:00
Michael B
f316b19c2b added assetFileServer fix to changelog.mdx 2025-03-07 15:44:24 +02:00
Michael B
10791fabbd add '.html' to requests with no extension and no file found 2025-03-07 14:43:47 +02:00
Ian VanSchooten
0a6a420503 Fix hidden menuItem on windows
And bring menu_windows into alignment with popupmenu_windows
2025-03-06 14:00:40 -05:00
Ian VanSchooten
a5fdc3a6de Revert systray-custom example changes 2025-03-06 13:58:32 -05:00
Ian VanSchooten
42c6c2b524 Fix comment 2025-03-06 08:55:50 -05:00
Ian VanSchooten
39cdd1d1e4 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-06 08:49:22 -05:00
Atterpac
fd420bff32 Bump refresh version 2025-03-05 13:02:46 -07:00
Ian VanSchooten
d7dec9eda7 Fix registration of hidden menuItem [mac] 2025-03-05 14:36:43 -05:00
popaprozac
833d8ec7dc refactor macos 2025-03-04 20:07:23 -08:00
Zach Botterman
d9af6dec32
ignore bindings notification callback
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-03-02 22:49:31 -08:00
Lea Anthony
96fa0d25f0
Merge pull request #4067 from fbbdev/v3-alpha-feature/service-api
[v3] Built-in service standardisation and enhancement
2025-03-01 16:34:32 +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
GitHub Actions
d130544b1b [skip ci] Publish @wailsio/runtime v3.0.0-alpha.67 2025-03-01 05:24:18 +00:00
Lea Anthony
229dfa8f6f
Merge pull request #4104 from fbbdev/v3-alpha-feature/typescript-runtime-testdata
[v3] Testdata update + smarter npm workflow
2025-03-01 16:23:08 +11:00
Fabio Massaioli
2a424f6be5 Simplify ci pipeline 2025-02-28 22:31:10 +01:00
Fabio Massaioli
c468af839c Ignore build artifacts 2025-02-28 22:25:13 +01:00
Fabio Massaioli
7c56c4ce00 Remove build artifacts 2025-02-28 22:25:13 +01:00
Fabio Massaioli
5b6fd04b09 Stop typedoc noise 2025-02-28 22:25:13 +01:00
Fabio Massaioli
69b11109ac Smarter publish pipeline 2025-02-28 01:43:57 +01:00
Fabio Massaioli
e64cbd3e66 Test data updates 2025-02-28 01:33:00 +01:00
GitHub Actions
fc0eb760cd [skip ci] Publish @wailsio/runtime v3.0.0-alpha.66 2025-02-27 20:52:35 +00:00
Lea Anthony
3aa3e09317
Merge pull request #4100 from fbbdev/v3-alpha-feature/typescript-runtime
[v3] TypeScript runtime
2025-02-28 07:51:31 +11:00
GitHub Actions
73da97053e [skip ci] Publish @wailsio/runtime v3.0.0-alpha.65 2025-02-27 20:49:51 +00:00
Lea Anthony
835fcbecc8
[ci] Try warpbuild 2025-02-28 07:49:00 +11:00
Lea Anthony
6423abe630
Merge branch 'v3-alpha' into v3-alpha-feature/typescript-runtime 2025-02-28 07:41:04 +11:00
GitHub Actions
e1a296c68e [skip ci] Publish @wailsio/runtime v3.0.0-alpha.64 2025-02-27 20:33:57 +00:00
Lea Anthony
01a51f74e4
[ci] Better PR checks 2025-02-28 07:33:22 +11:00
GitHub Actions
183abde394 [skip ci] Publish @wailsio/runtime v3.0.0-alpha.63 2025-02-27 20:22:29 +00:00
Fabio Massaioli
9988b7eca8
[v3] Binding generator tests for Go 1.24 features (#4068)
* Enable go1.24 tests

This reverts commit e38684e7885c9c7b5ad3f704ad500c39bbce7715.

* Testdata for go1.24

This reverts commit 7ed397dc452f420551dfdd05dfe0c6a7646b3ba4.

* Require go 1.24

* Update changelog

* Add test for omitzero

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-02-28 07:21:51 +11:00
GitHub Actions
e4f0b64630 [skip ci] Publish @wailsio/runtime v3.0.0-alpha.62 2025-02-27 20:09:11 +00:00
Lea Anthony
3b045ada7b
[ci] update PR Checks conditions 2025-02-28 07:07:52 +11:00
GitHub Actions
2dcd35f181 [skip ci] Publish @wailsio/runtime v3.0.0-alpha.61 2025-02-27 20:07:10 +00:00
Lea Anthony
9ee2ca51d4
[ci] update PR Checks conditions 2025-02-28 07:06:23 +11:00
GitHub Actions
151bc6d36b [skip ci] Publish @wailsio/runtime v3.0.0-alpha.60 2025-02-27 19:14:31 +00:00
Lea Anthony
cdbe38a30e
Merge pull request #4101 from fbbdev/v3-alpha-bugfix/publish-ci-versioning
[v3] Fix npm ci
2025-02-28 06:13:58 +11:00
GitHub Actions
c96b7c693c [skip ci] Publish @wailsio/runtime 3.0.0-alpha.59 2025-02-27 19:07:58 +00:00
Lea Anthony
dee22c18ee
[ci] update PR Checks conditions 2025-02-28 06:07:09 +11:00
Fabio Massaioli
30f0ec4e9c Go mod tidy 2025-02-27 12:05:54 +01:00
Fabio Massaioli
0a0592a52e Fix npm ci 2025-02-27 12:01:43 +01:00
Fabio Massaioli
da9a9603b9 Merge branch 'v3-alpha' into v3-alpha-feature/typescript-runtime
# Conflicts:
#	docs/src/content/docs/changelog.mdx
2025-02-27 11:21:48 +01:00
GitHub Actions
28d22f7bfa [skip ci] Publish @wailsio/runtime 3.0.0-alpha.58 2025-02-27 10:02:02 +00:00
Lea Anthony
b2c43c034f
[windows]Better popup menu positioning 2025-02-27 21:01:14 +11:00
popaprozac
ad749721e9 can you tell i'm not a go programmer? 2025-02-26 19:57:21 -08:00
Zach Botterman
a807c269cc better interop with obj-c 2025-02-26 18:45:46 -08:00
Fabio Massaioli
698f9cac39 Relax typescript compile target 2025-02-27 00:46:37 +01:00
Fabio Massaioli
db9e520f08 Use safari11 as esbuild target for High Sierra support 2025-02-27 00:30:48 +01:00
Zach Botterman
3bdb3ddba3 use app icon 2025-02-26 12:30:31 -08:00
Fabio Massaioli
368678ca6b Update changelog 2025-02-26 17:36:45 +01:00
Fabio Massaioli
5da789c24f Fix creation function types 2025-02-26 16:57:16 +01:00
Fabio Massaioli
6c34e74f0a Build runtime before running go tests 2025-02-26 16:00:14 +01:00
Zach
207b162544 Merge branch 'notifications_darwin' of github.com:popaprozac/wails into notifications_darwin 2025-02-25 17:59:31 -08:00
Zach Botterman
e216b3e513 set icon 2025-02-26 09:32:32 -08:00
Zach Botterman
db2cab7b7c grab icon from app for notifications on windows 2025-02-25 18:04:08 -08:00
Zach
e86cf68b17 linux? 2025-02-25 17:58:24 -08:00
Zach Botterman
5ad3d73001 wrangle variants 2025-02-25 16:40:14 -08:00
Zach
47e5b109c0 add debug 2025-02-25 16:32:10 -08:00
Zach Botterman
60ae0c1598 test linux userInfo 2025-02-25 16:25:06 -08:00
Zach Botterman
acad85e603 update example 2025-02-25 15:59:27 -08:00
Zach Botterman
a4c4ab6c8f add id to macOS payload 2025-02-25 15:55:28 -08:00
Zach Botterman
10ae1f6029 export config from app 2025-02-25 15:04:05 -08:00
Fabio Massaioli
ed8cdfa0f6 Support older module resolution approaches 2025-02-25 21:43:35 +01:00
Zach Botterman
60c1a866f3 update example 2025-02-25 11:37:11 -08:00
Zach Botterman
050e4ef1a8 fix default complex action 2025-02-25 11:27:54 -08:00
Zach Botterman
fa498f1c5e encode user data on windows 2025-02-25 11:20:43 -08:00
Fabio Massaioli
f769fb3953 Update node action version 2025-02-25 19:12:54 +01:00
Fabio Massaioli
8dd1b61f1e Use const for system caller variable 2025-02-25 19:08:01 +01:00
Zach Botterman
7bbc27594b fix windows 2025-02-25 09:32:52 -08:00
Fabio Massaioli
5cf89f362f Update bundled runtime 2025-02-25 18:30:52 +01:00
popaprozac
135defc405 init test linux 2025-02-25 09:11:12 -08:00
Fabio Massaioli
d74ed5ab54 Nitpicks 2025-02-25 18:09:53 +01:00
Fabio Massaioli
ea98bd2e19 Rename copied files 2025-02-25 18:01:36 +01:00
Fabio Massaioli
af635f02c6 Refactor event target resolution logic 2025-02-25 17:59:17 +01:00
Fabio Massaioli
5b2c8eba80 Remove Promise monkey-patching 2025-02-25 17:53:18 +01:00
Fabio Massaioli
c774e198ee Update changelog 2025-02-25 17:48:07 +01:00
Fabio Massaioli
11866ee52f
Remove unneeded return statement
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-02-25 17:19:56 +01:00
Fabio Massaioli
b74b9efa8e
Fix OffAll test
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-02-25 17:15:45 +01:00
Fabio Massaioli
5436ebee71 Allow manual publishing of the npm package 2025-02-25 17:03:09 +01:00
Fabio Massaioli
746b38abe5 Update changelog 2025-02-25 16:39:31 +01:00
Fabio Massaioli
db6295594f Fix cancellation of promise arrays 2025-02-25 16:33:38 +01:00
Fabio Massaioli
c0f92d69a0 Restructure workflows 2025-02-25 15:09:01 +01:00
Fabio Massaioli
b59f003f61 Fix dragging system 2025-02-25 14:03:52 +01:00
popaprozac
253f67243a init linux 2025-02-24 22:39:50 -08:00
popaprozac
67adc452cb update example 2025-02-24 22:00:58 -08:00
Zach Botterman
8bbe3816b7
Merge branch 'v3-alpha' into notifications_darwin 2025-02-24 21:57:21 -08:00
popaprozac
e8ad42aa3f switch to callback style 2025-02-24 21:54:38 -08:00
Fabio Massaioli
026ee7fb78 Fix wording in runtime docs 2025-02-25 04:25:34 +01:00
Fabio Massaioli
5dbd49606b Merge branch 'v3-alpha' into v3-alpha-feature/typescript-runtime 2025-02-25 04:13:47 +01:00
Fabio Massaioli
55a0c7e605 Build more examples when testing 2025-02-25 04:11:01 +01:00
Fabio Massaioli
51223f66cd Update CI workflows 2025-02-25 04:06:25 +01:00
Fabio Massaioli
ea7660d4b1 Update docs 2025-02-25 03:34:12 +01:00
Fabio Massaioli
87ceed05fa Fix logging bug in call message processor 2025-02-25 03:33:56 +01:00
Fabio Massaioli
0dfc2b2a53 Add cancellation examples 2025-02-25 03:33:24 +01:00
Fabio Massaioli
cdb4045542 Update existing examples 2025-02-25 03:33:15 +01:00
Fabio Massaioli
14fb7ed4f7 Update binding generator to new internal API 2025-02-25 03:32:51 +01:00
Fabio Massaioli
7b2c04dcb2 Update bundled runtime 2025-02-25 03:32:30 +01:00
Fabio Massaioli
2c521e63cb Update package-lock.json 2025-02-25 03:32:09 +01:00
Fabio Massaioli
52f1b595e8 Add runtime tests 2025-02-25 03:30:59 +01:00
Fabio Massaioli
95b4bfc253 Migrate runtime to TypeScript 2025-02-25 03:30:30 +01:00
Zach Botterman
8da998191a for review 2025-02-24 17:58:05 -08:00
Zach Botterman
be716fc0ee fix input id 2025-02-24 16:47:19 -08:00
GitHub Actions
1dff481199 [skip ci] Publish @wailsio/runtime 3.0.0-alpha.57 2025-02-24 07:54:46 +00:00
Zach Botterman
3dbf0589ce update comments 2025-02-23 22:25:12 -08:00
Zach Botterman
1e3511c0d3 fix deadlock 2025-02-23 22:18:07 -08:00
Zach Botterman
983c25f69f rw safety 2025-02-23 21:59:27 -08:00
popaprozac
c904433ff3 update example 2025-02-23 16:30:13 -08:00
Zach Botterman
bf4222c9cc update example 2025-02-23 16:00:04 -08:00
Zach Botterman
978a982ab7 don't add title or body quite yet 2025-02-23 15:45:42 -08:00
Zach Botterman
cc760a173a test data with toast 2025-02-23 15:41:56 -08:00
Zach Botterman
9eab58f0d2 update comments 2025-02-23 14:40:40 -08:00
Zach Botterman
c1230d4b86 update win impl to match 2025-02-23 14:37:03 -08:00
popaprozac
f8647ff73c update min macos version 2025-02-23 14:11:32 -08:00
popaprozac
27e512d5f1 add data option to basic notification 2025-02-23 13:55:03 -08:00
Zach Botterman
ab9c460088 quick fixes 2025-02-23 11:40:39 -08:00
Zach Botterman
6d44068ede save notification categories to registry 2025-02-22 20:52:23 -08:00
Lea Anthony
a5e2e42a55
[darwin] Ensure menu updates occur on main thread 2025-02-23 15:46:03 +11:00
popaprozac
47a0977ac6 add overwrite and remove notification category 2025-02-22 20:25:03 -08:00
Zach Botterman
9f39577228 add comments 2025-02-22 20:02:26 -08:00
popaprozac
7757eae745 standalone example 2025-02-22 19:05:00 -08:00
popaprozac
c7d54e2fa9 remove app event 2025-02-22 18:58:16 -08:00
Zach Botterman
01fa3071f1 windows impl 2025-02-22 17:30:04 -08:00
popaprozac
91f1704f68 cleanup 2025-02-22 01:11:44 -08:00
popaprozac
87f15ced04 refactor 2025-02-22 00:34:29 -08:00
popaprozac
cc524d78e4 update example 2025-02-21 18:36:54 -08:00
popaprozac
f694ad223e service and minor refactor 2025-02-21 18:20:37 -08:00
popaprozac
274511c5cb update log message 2025-02-20 22:27:56 -08:00
popaprozac
32839bd0d1 initial notification impl 2025-02-20 14:03:38 -08:00
Fabio Massaioli
82ed0e6842 Merge branch 'v3-alpha' into v3-alpha-feature/service-api
# Conflicts:
#	docs/src/content/docs/changelog.mdx
2025-02-19 15:42:12 +01:00
GitHub Actions
d5a8f1e323 [skip ci] Publish @wailsio/runtime 3.0.0-alpha.56 2025-02-19 10:45:40 +00:00
Fabio Massaioli
29c0d15045
[V3] Fix docs change detection in npm CI (#4091)
Fix docs change detection in nom CI
2025-02-19 21:45:05 +11:00
Fabio Massaioli
e7c134de4e
[v3] Late service registration and error handling overhaul (#4066)
* Add service registration method

* Fix error handling and formatting in messageprocessor

* Add configurable error handling

* Improve error strings

* Fix service shutdown on macOS

* Add post shutdown hook

* Better fatal errors

* Add startup/shutdown sequence tests

* Improve debug messages

* Update JS runtime

* Update docs

* Update changelog

* Fix log message in clipboard message processor

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

* Remove panic in RegisterService

* Fix linux tests (hopefully)

* Fix error formatting everywhere

* Fix typo in windows webview

* Tidy example mods

* Set application name in tests

* Fix ubuntu test workflow

* Cleanup template test pipeline

* Fix dev build detection on Go 1.24

* Update template go.mod/sum to Go 1.24

* Remove redundant caching in template tests

* Final format string cleanup

* Fix wails3 tool references

* Fix legacy log calls

* Remove formatJS and simplify format strings

* Fix indirect import

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-02-19 09:27:41 +01:00
Ian VanSchooten
5059adc561
[v3] Remove ESLint from templates (#4059)
* Remove eslint dependencies from templates

* Add changelog

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-02-16 16:02:25 +11:00
Falco Gerritsjans
0dc7b3c549
More control over menus (#4031)
* Add prepend and clear method to menus

* Document appending and clearing menus

* Add `Destroy()`
Add notes to documentation.

* Remove menu item from map when destroying

* Remove menu items from map when clearing

* Update v3/pkg/application/menu.go

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

* Minor updates

* Fix build error

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-02-16 12:08:08 +11:00
Marcus Crane
1bafc6f22f
[v3] Fix invisible footer for light mode users across default templates (#4056)
* Remove invisible footer styling

Signed-off-by: Marcus Crane <marcus@utf9k.net>

* Add changelog entry

Signed-off-by: Marcus Crane <marcus@utf9k.net>

---------

Signed-off-by: Marcus Crane <marcus@utf9k.net>
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-02-16 11:57:52 +11:00
Lea Anthony
244f32268b
Fix Hidden Mac MenuItem.
Go 1.24
2025-02-16 11:10:19 +11:00
Ian VanSchooten
e75c10d567
[V3] Add docs for event.Sender (#4075)
* Add docs for event.Sender

* Update changelog
2025-02-15 07:17:47 +11:00
Ian VanSchooten
a49bfcc956
[v3] Update copyright date (#4037)
* Update copyright date to 2025

* Update changelog
2025-02-14 08:43:19 +11:00
Ian VanSchooten
69917c2f50
[V3] Add MacOS 15 "Sequoia" to OSInfo.Branding (#4065)
* Add MacOS 15 to names list

* Update changelog

* Listening to the rabbit
2025-02-14 08:40:29 +11:00
Fabio Massaioli
8f815e9974 Grammar fixes 2025-02-13 03:30:41 +01:00
Fabio Massaioli
fe38cd91c5 Update changelog 2025-02-13 03:11:22 +01:00
Fabio Massaioli
d314410d01 Update docs 2025-02-13 03:11:22 +01:00
Fabio Massaioli
2a6597eece Update example bindings 2025-02-13 03:11:22 +01:00
Fabio Massaioli
23412656de Update example 2025-02-13 03:11:22 +01:00
Fabio Massaioli
ae2936927d Standardise and enhance sqlite service 2025-02-13 03:11:22 +01:00
Fabio Massaioli
6edb2b0189 Standardise and enhance kvstore service 2025-02-13 03:11:22 +01:00
Fabio Massaioli
63f47bc9ed Standardise and enhance logger service 2025-02-13 03:11:21 +01:00
Fabio Massaioli
726084fa98 Standardise and enhance fileserver service 2025-02-13 03:11:21 +01:00
Lea Anthony
2c85b109ac
Update docs 2025-02-09 16:57:06 +11:00
Lea Anthony
2d6db0f27f
Update contributors 2025-02-09 11:48:48 +11:00
Fabio Massaioli
37673eb24d
[v3] Fix binding generator bugs and prepare for Go 1.24 (#4045)
* Rename predicates source file

* Overhaul and document type predicates

* Fix model collection logic for named types

* Fix map key type rendering

* Fix map creation code

* Fix rendering of structs that implement marshaler interfaces

* Fix type cycle detection to take type args into account

* Fix enum and typeparam field initialisation

* Improve unsupported type warnings

* Remove internal models file

* Deduplicate template code

* Accept generic aliases in static analyser

* Support new `encoding/json` flag `omitzero`

* Handle special cases when rendering generic aliases

* Update npm test dependencies

* Test class aliases and implicit private dependencies

* Test marshaler combinations

* Test map key types

* Remove bad map keys from unrelated tests

* Test service discovery through generic aliases

* Test generic aliases

* Test warning messages

* Disable go1.24 tests

* Update changelog

* Restore rendering of injected lines in index file

* Test directives

* Add wails:ignore directive

* Fix typo

* Move injections to the bottom of service files

* Handle errors from closing files

* Do not emit messages when services define only lifecycle methods

* Add internal directive for services and models

* Update changelog

* Fix error in service templates

* Test internal directive on services/models

* Fix error in index template

* Base testdata updates

* Testdata for class aliases and implicit private dependencies

* Testdata for marshaler combinations

* Testdata for map key types

* Testdata for bad map key fixes

* Add weakly typed enums aka alias constants

* Testdata for enum and typeparam field fixes

* Testdata for generic aliases

* Testdata for warning messages

* Testdata for directives

* Testdata for weakly typed enums

* Update binding example

* Update services example

* Remove go1.24 testdata

* Update cli doc

* Fix analyser tests

* Fix windows tests... hopefully

* go mod tidy on examples

* Update bindings guide

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-02-09 09:44:34 +11:00
Fabio Massaioli
d4096868e3
[v3] Fix and optimise assetserver (#4049)
* Fix and optimize content type sniffer

- Minimize copying and buffering
- Ensure it sniffs the full 512-bytes prefix

* Fix assorted warnings

* Cleanup error formatting

- Remove unnecessary formatting calls
- Fix invalid format strings
- Standardise logging calls

* Fix and optimize index fallback method

- Pass through non-404 responses correctly
- Do not buffer original response

* Test content sniffing and index fallback

* Update changelog

* Remove obsolete check

* Add safety checks in sniffer
2025-02-09 00:02:54 +11:00
Lea Anthony
d427e9d750
Add systray.SetTooltip 2025-02-08 14:01:22 +11:00
Lea Anthony
2db902ef82
Add menu option for Linux 2025-02-03 20:33:59 +11:00
Lea Anthony
36a1b71f93
The application menu is now macOS only.
Fixed a `Parameter incorrect` error in Windows.
Updated Window example for mica/acrylic/tabbed windows.
2025-02-03 20:08:31 +11:00
Lea Anthony
0ecfcee3bf
Fix IconPosition in Windows/Linux. Update docs. 2025-02-03 19:24:40 +11:00
Lea Anthony
b21bb16c08
Remove bad docs 2025-02-02 17:59:11 +11:00
Lea Anthony
4caf6d6e50
Add systray Show, Hide and Destroy 2025-02-02 17:54:24 +11:00
Lea Anthony
ee24099be8
Fixed event deadlock for macOS 2025-02-02 14:23:34 +11:00
GitHub Actions
6bbac4ad2a [skip ci] Publish @wailsio/runtime 3.0.0-alpha.55 2025-02-01 23:22:46 +00:00
Lea Anthony
b4c4cd8ae8
Fix mac/js events 2025-02-02 10:22:11 +11:00
Lea Anthony
c1251e9441
Add npm docs to file check paths 2025-02-01 07:51:18 +11:00
Lea Anthony
3eb3af8c8c
Only publish changes to npm 2025-02-01 07:37:34 +11:00
GitHub Actions
9ce782be68 [skip ci] Publish @wailsio/runtime 3.0.0-alpha.49 2025-01-31 20:13:00 +00:00
Lea Anthony
9bf63b1581
update pipeline to skip own commmit 2025-02-01 07:12:22 +11:00
GitHub Actions
c51688499c chore: Publish @wailsio/runtime 3.0.0-alpha.48 2025-01-31 20:07:24 +00:00
GitHub Actions
e3ed07997e chore: Publish @wailsio/runtime 3.0.0-alpha.47 2025-01-31 20:06:44 +00:00
GitHub Actions
c911e792dc chore: Publish @wailsio/runtime 3.0.0-alpha.46 2025-01-31 20:06:16 +00:00
GitHub Actions
95891b8ee1 chore: Publish @wailsio/runtime 3.0.0-alpha.45 2025-01-31 20:05:45 +00:00
GitHub Actions
20720ebdad chore: Publish @wailsio/runtime 3.0.0-alpha.44 2025-01-31 20:05:15 +00:00
GitHub Actions
cda9184d83 chore: Publish @wailsio/runtime 3.0.0-alpha.43 2025-01-31 20:04:41 +00:00
GitHub Actions
5ffdc204f6 chore: Publish @wailsio/runtime 3.0.0-alpha.42 2025-01-31 20:04:11 +00:00
Lea Anthony
0f566c5bc8
update pipeline to publish changes 2025-01-31 16:59:59 +11:00
Lea Anthony
5bd131c929
update pipeline 2025-01-31 16:44:27 +11:00
Lea Anthony
0c771e37f9
Auto build docs/types for runtime module 2025-01-31 16:34:39 +11:00
Lea Anthony
e31296fe5d
Revert "Vite 6"
This reverts commit 939e2daff0.
2025-01-31 07:27:16 +11:00
Lea Anthony
282b420faf
Fix windows paths -> forward slashes 2025-01-31 07:14:18 +11:00
Lea Anthony
b3e81f5cbb
BREAKING CHANGE: wml attributes are now prefixed with data- 2025-01-28 07:37:17 +11:00
Lea Anthony
939e2daff0
Vite 6 2025-01-27 11:05:29 +11:00
Lea Anthony
db61f9f263
Event cancellation for standard listeners.
Major doc updates.
Runtime build tidy up.
Removed redundant default event mappings.
2025-01-27 09:29:22 +11:00
Lea Anthony
b4dff607e7
Better context menu demo text 2025-01-25 09:23:12 +11:00
Lea Anthony
46bb4e8414
*BREAKING CHANGE* move Path and Paths methods into application package. 2025-01-24 08:09:29 +11:00
Lea Anthony
631c8a1cc8
New ContextMenu API + example (#4013)
* New ContextMenu API + example

* Remove redundant code

* ContextMenuData now returns a string.
New Menu guide.

* Update readme

* Update v3/pkg/application/context.go

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

* Add new menubar option

* Fix docs

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-01-23 22:10:23 +11:00
Lea Anthony
31487b5a0c
Fix bad merge 2025-01-23 22:03:14 +11:00
Fabio Massaioli
3f825823d5
[v3] Pass build flags to binding generator (#4023)
* Pass build flags to binding generator

* Update changelog

* Track variable dependencies using task labels

* Track JS/TS sources for binding generator

The `/wails:include` directive allows for the inclusion of additional JS/TS files in the generated bindings.

* Pass production var to frontend task

* Track binding generator output as source

* Fix generates pattern for frontend build task

* Fix typo in function `term.Warningf`

* Use facilities from `internal/term` in bindings command instead of `pterm`

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-01-23 10:58:35 +00:00
Fabio Massaioli
16ce1d3448
[v3] Service API cleanup and comments (#4024)
* Gather and document service API

* Update changelog

* Add NewServiceWithOptions

* Revert static analyser change

* Remove infinite loop in NewService[WithOptions]

* Fix compiler warning in bindings command

* Add test for NewServiceWithOptions

* Update changelog

* Fix service example

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-01-23 10:53:48 +00:00
Lea Anthony
547e30f025
Default panic handler should fatal. Update docs and example. 2025-01-21 06:44:28 +11:00
Lea Anthony
b7ab650f36
Skip FileExplorer tests in CI 2025-01-20 20:59:17 +11:00
Lea Anthony
5ccc810999
Fix tests 2025-01-20 19:56:03 +11:00
Lea Anthony
8ba623f5fe
Fix build issue 2025-01-17 21:21:32 +11:00
Lea Anthony
be8159d410
# Conflicts:
#	docs/src/content/docs/changelog.mdx
#	v3/pkg/application/menuitem.go
2025-01-17 21:19:23 +11:00
Fabio Massaioli
f01b4b9a21
[v3] Fix binding generator bugs (#4001)
* Add some clarifying comments

* Remove special handling of window parameters

* Improve internal method exclusion

* Add test for internal method exclusion

* Remove useless blank field from app options

This is a leftover from an older version of the static analyser. It should have been removed long ago.

* Remove redundant godebug setting

gotypesalias=1 is the default starting with go1.23

* Use new range for syntax to simplify code

* Remove generator dependency on github.com/samber/lo

* Ensure generator testing tasks do not use the test cache

* Rename cyclic types test

* Test for cyclic imports

* Fix import cycle between model files

* Sort class aliases after their aliased class

* Test class aliases

* Fix length of default value for array types

* Test array initialization

* Add changelog

* Update changelog

* Fix contrived marking technique in model sorting algorithm

* Update binding example

* Update test data

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-01-17 18:56:07 +11:00
Lea Anthony
e668c81806
Improved panic handling. Added guide. 2025-01-16 22:08:18 +11:00
Lea Anthony
7387e62a95
Update pipeline to use Go 1.23 2025-01-16 20:26:24 +11:00
Lea Anthony
0e02b07ba3
Fix typos 2025-01-16 20:25:07 +11:00
Lea Anthony
f6ebd6b3de
Breaking Change: Service method names 2025-01-16 07:47:23 +11:00
Lea Anthony
51e3a6168c
Fix nil menu issue when calling RegisterContextMenu 2025-01-15 19:43:10 +11:00
Lea Anthony
33ac88dc2a
Add window to context when calling a service method. Add window-call example to demonstrate how to know which window is calling a service. Fix Window ID skip issue. 2025-01-15 19:32:15 +11:00
Lea Anthony
4c59709653
Go 1.23.4 2025-01-15 19:00:26 +11:00
Lea Anthony
9aca915f5c
Add diagnostics section to wails doctor. 2025-01-15 17:46:59 +11:00
Akshay Kalose
9a54f5832d
[v3] Update Templates (macOS Target Version and Linux aarch64 AppImage) (#3981)
* [v3] Update Templates (macOS Target Version and Linux aarch64 AppImage)

* Update changelog.mdx

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-01-15 08:01:24 +11:00
Lea Anthony
7e989b973a
Update changelog.mdx 2025-01-15 07:58:01 +11:00
Lea Anthony
3f78a3a8ce
Fix edit menus on windows and linux 2025-01-15 07:56:00 +11:00
Lea Anthony
c186917c34
v3.0.0-alpha.9 2025-01-13 21:30:16 +11:00
Lea Anthony
8b64705dd6
Frontend builds now use vite environment "development" or "production" depending on build type
Fix windows webview2 bootstrapper path issue
2025-01-13 18:24:21 +11:00
Lea Anthony
10002d892d
Fix v3 PR template 2025-01-12 20:50:21 +11:00
Lea Anthony
aa97009c35
Fix screens infinite loop when retrieving monitor name 2025-01-12 20:38:49 +11:00
Lea Anthony
760b58726a
Fix mac window show/hide event mapping. 2025-01-12 20:30:55 +11:00
Lea Anthony
9569d487a2
Ensure some menuitem methods are run on the main thread. 2025-01-12 15:05:39 +11:00
Mario
20e050b602
[v3] app quit on message (#3990)
* app quit on message

* update changelog
2025-01-11 14:35:32 +11:00
Lea Anthony
c6f9ebe22d
Add -clean option for bindings generation. 2025-01-11 14:31:57 +11:00
Atterpac
e0c5de6e10
[V3/Linux] Fix Min/Max window options (#3979)
fix min/max options for linux

changelog.md

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-01-11 10:32:27 +11:00
5aaee9
a5c32a1504
[v3] allow build with garble (#3192)
* feat: allow build with garble

* docs: update

* Updated docs

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2025-01-10 16:36:24 +11:00
Lea Anthony
1f9f8dae66
Add -buildvcs=false for dev mode 2025-01-10 16:33:26 +11:00
Lea Anthony
88f262b9c2
Make dev version string semantic version compatible. 2025-01-10 16:05:05 +11:00
Lea Anthony
77b8b89130
Remove old template generation files 2025-01-10 16:04:31 +11:00
Lea Anthony
0e239c9771
Add -buildvcs=false flag to Taskfiles 2025-01-10 16:04:05 +11:00
Lea Anthony
b6b8c18ef5
Fix implicit any warning in bindings 2025-01-05 13:43:09 +11:00
Chris Simmons
98c4089d15
[v3 alpha] docs: add note that internal service methods are not included in generated bindings (#3982)
add note that internal service methods are not bound
2025-01-05 12:35:14 +11:00
Lea Anthony
91a99299b1
Fix version string in debug build 2025-01-02 20:47:37 +11:00
Lea Anthony
d3d11593bc
Add update cli
Terminal output refactor
2025-01-02 16:24:37 +11:00
Lea Anthony
78bde14388
Add releasenotes command 2025-01-02 11:38:48 +11:00
Lea Anthony
60d13880d8
Fix internal template generation 2025-01-01 21:22:53 +11:00
Lea Anthony
59a8ecc5b2
Support template generation 2025-01-01 20:58:49 +11:00
Lea Anthony
773dca77d4
Single Instance feature.
Fix missing events on darwin.
2024-12-30 21:02:43 +11:00
Lea Anthony
7cee957161
Fix pipeline tests 2024-12-28 20:45:45 +11:00
Lea Anthony
99b0adfe96
Fix pipeline tests 2024-12-28 20:38:26 +11:00
Lea Anthony
97cc4a4b2c
Make common taskfile generate TS bindings when using a Typescript template. 2024-12-28 19:51:53 +11:00
Lea Anthony
e794f5d6d8
Merge branch 'v3-alpha-bugfix/event-emmission' into v3-alpha
# Conflicts:
#	v3/internal/runtime/desktop/@wailsio/runtime/package.json
2024-12-28 13:24:44 +11:00
Lea Anthony
8b53aa39ff
Update changelog.mdx 2024-12-28 13:23:58 +11:00
Lea Anthony
86f5049d29
Improve move & resize debouncer.
Fix double event.
Fix shutdown issue with webview2.
2024-12-27 12:05:11 +11:00
Lea Anthony
11cdbd8b83
Add in resize debounce as an option 2024-12-27 11:20:32 +11:00
Lea Anthony
0d4cb4698f
Improve frameless example 2024-12-27 09:37:55 +11:00
Lea Anthony
acd9241819
Better logo in systray-menu example 2024-12-27 09:23:39 +11:00
Lea Anthony
1276ef178b
Improved "HiddenOnTaskbar" implementation. 2024-12-27 09:14:43 +11:00
Lea Anthony
27480bc6cb
Reduce flicker. 2024-12-27 09:09:00 +11:00
Atterpac
6bc6de6d37
@wailsio version bump (#3966)
changelog.mdx
2024-12-24 10:27:13 +11:00
Lea Anthony
a90764891f
Update systray-custom to show keep-alive after window kill 2024-12-23 20:55:29 +11:00
Lea Anthony
65f95b0380
Removed OnShouldClose: Create single way of handling conditional and unconditional close. 2024-12-23 08:23:07 +11:00
Lea Anthony
8e98d6dd19
Handle events at a lower level 2024-12-22 10:02:16 +11:00
Lea Anthony
2ff4e6a080
Small improvements around mainthread switching 2024-12-21 12:13:48 +11:00
Lea Anthony
dc598ecf24
More url links in terminal 2024-12-20 18:38:48 +11:00
Anshuman
f61316c18d
Added hyperlink for sponsor (#3958)
* Added hyperlink for sponsor

* Updated the changelog

* removed whitespace
2024-12-20 18:17:42 +11:00
Lea Anthony
454d170dfb
[mac] setPosition - adjust based on scale factor 2024-12-20 18:12:54 +11:00
Lea Anthony
01899adef9
Add bootstrapper back in 2024-12-18 19:51:22 +11:00
Lea Anthony
95a5b926fd
[windows] Improve minimise and restore window drawing 2024-12-18 07:45:33 +11:00
Lea Anthony
bcc3ac296d
Updated tutorial. Fixed sidebar 2024-12-17 06:21:51 +11:00
Lea Anthony
37f9f19d6f
Fix tutorial. Remove animation. 2024-12-17 06:00:08 +11:00
Lea Anthony
19f60798b3
Provide a way to initialise the runtime if not using any runtime features. 2024-12-16 21:10:56 +11:00
Lea Anthony
4dd920df0d
Remove link validator 2024-12-16 20:03:05 +11:00
Lea Anthony
7aa6abfefe
Documentation updates.
New `-git` flag for `wails3 init`.
New `wails3 generate webview2bootstrapper` command.
2024-12-16 20:00:56 +11:00
Lea Anthony
e75f9c9c7f
Fix window shutdown issue.
Handle error serving capabilities.
2024-12-15 09:02:43 +11:00
Lea Anthony
7aa7534852
Fix build issue 2024-12-15 08:32:43 +11:00
Lea Anthony
629374698d
Update changelog 2024-12-14 17:59:37 +11:00
Lea Anthony
957f759197
Improve window destroying on Mac 2024-12-14 17:56:16 +11:00
Lea Anthony
6e84337898
Fix dialog directory chooser example.
Remove debug output.
2024-12-14 15:11:40 +11:00
Lea Anthony
a0b2ab7c0a
Fix default index.html serving.
Support multi-language default.
Remove default page from production builds.
Improve defaultindex.html.
2024-12-14 11:10:07 +11:00
Lea Anthony
beacf06c7d
Fix macOS systray DPI scaling and offset.
Added new systray examples.
2024-12-13 23:46:27 +11:00
Lea Anthony
a0ff53b629
Docs change 2024-12-13 22:00:25 +11:00
Rick Calixte
d03f4ce54a
OpenFileManager for opening with the native file manager and optional file selection support (#3937)
OpenFileManager for opening with the native file manager and optional
file selection support

Closes #3197

Co-authored-by: Krzysztofz01 <krzysztof.zon2001@gmail.com>
2024-12-13 21:37:18 +11:00
Atterpac
8599d7befa
Fix Sveltekit template CSS refrence (#3945)
changelog.md
2024-12-13 20:36:18 +11:00
Stavros Kois
6be3295205
Docs: Add community page(s) (#3941)
* docs: fix tip

* update packages

* add showase

* add 3 showcases from v2

* mdx -> md

* add links page

* add templates page with a caution

* add a tip

* move desc up

* use X instead of twitter

* fix link

* Add clave

* add how to section
2024-12-10 07:53:36 +11:00
Lea Anthony
dcb7a7fdfc
Taskfile / build assets refactor. 2024-12-08 19:27:46 +11:00
Lea Anthony
3600f5030a
Setup starlight workflow 2024-12-08 12:39:41 +11:00
Lea Anthony
8d62a60d60
Setup starlight workflow 2024-12-08 12:37:32 +11:00
Lea Anthony
fef7b0827b
Setup starlight workflow 2024-12-08 12:37:13 +11:00
Lea Anthony
db06fcd087
Update v3-docs.yml 2024-12-08 12:31:31 +11:00
Lea Anthony
3d4f61419a
Setup starlight workflow 2024-12-08 12:28:50 +11:00
Stavros Kois
b6c8d9a90a
[v3] Add starlight website (#3917)
* init docs

* add few categories

* add more

* update home

* add blog

* update favicon

* fix few links and

* untouch

* untouch more

* add some icons

* add icons

* move ggetting started at the top and collapse the rest

* actually collapse

* format

* remove includes

* more format

* remove includes

* move assets

* add i18n

* fix i18n

* formatting

* order

* Prevent sidebar from making the page shake during load

* Prevent sidebar from making the page shake during load

* organize docs

* fix link

* expand a bit

* add credits page

* update all contributors file

* remove underlines

* add alternative

* use html

* lets get the first success build

* add latest entry

* remove example file

* fix examples

* more fixes

* fix grammar

* grammar

* remove dupes

* fix link

* grammar

* typo

* typo

* typo

* Logo update. Minor changes.

* update changelog

* update changelog

* rabbit is right

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2024-12-08 12:09:13 +11:00
Lea Anthony
2e4fce7c67
OpenDirectory for opening native file manager at the given dir 2024-12-07 21:31:13 +11:00
Lea Anthony
296b9debd3
Support fullscreen for frameless windows. 2024-12-07 21:14:38 +11:00
Lea Anthony
2a6e3da30a
Ensure key callbacks in window run() are called on the main thread 2024-12-07 20:54:22 +11:00
Lea Anthony
5445aebe94
Ensure windowDidBecomeKey callback is running on main thread 2024-12-07 20:45:08 +11:00
Lea Anthony
e0d788bea9
v3.0.0-alpha.8.3 2024-12-07 10:13:58 +11:00
Lea Anthony
65e7437eed
v3.0.0-alpha.8.2 2024-12-07 10:11:41 +11:00
Lea Anthony
797481410c
Fix typo 2024-12-07 09:26:24 +11:00
Lea Anthony
424e94542c
v3.0.0-alpha.8.1 2024-12-07 09:24:21 +11:00
Lea Anthony
1707cafbbc
v3.0.0-alpha.8 2024-12-06 22:23:45 +11:00
Lea Anthony
7cbde83f38
[windows] Fix radio group menu items 2024-12-06 22:00:43 +11:00
Lea Anthony
459b5e1036
Added EnabledFeatures and DisabledFeatures options 2024-12-06 17:17:54 +11:00
Lea Anthony
db00ae8eda
Better mac GPU/Memory support for doctor 2024-12-06 17:09:53 +11:00
Atterpac
830f70258e
Merge pull request #3925 from michael-freling/fix-v3
[v3 alpha] Fix deadlock of linux dialog for multiple selections
2024-12-03 13:01:39 -07:00
Michael
7b4befb0b1 [v3-alpha] Update a changelog 2024-12-03 05:54:56 -08:00
Michael
0466bc6936 [v3 alpha] Fix deadlock of linux dialog for multiple selections 2024-12-03 05:54:17 -08:00
Lea Anthony
f2040797d7
[windows] Use application icon as default systray icon if available. 2024-12-03 21:12:01 +11:00
Anshuman
b37cdf5ba9
[v3] fix: Add cross-platform cleanup for .syso files during Windows build (#3924)
* fix: Add cross-platform cleanup for .syso files during Windows build

* Updated changelog
2024-12-02 20:39:00 +11:00
Lea Anthony
8444ccf6f2
Update go-webview2 to v1.0.18. 2024-12-02 07:46:45 +11:00
Lea Anthony
1c34c252cc
Remove resize debounce setting for windows.
Optimise resizing performance on windows automatically.
2024-12-01 09:52:06 +11:00
Atterpac
0ebb21f0fb
[V3] Rework service.OnStartup to close application on error (#3920)
* rework service.OnStartup to close applicatoin on error

CHANGELOG.md

fix index out of bounds potential

* os.Exit -> runtime.Goexit

* Revert to os.Exit

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2024-11-30 13:36:29 +11:00
Atterpac
9173537ce5
[V3-Linux] Support for deb,rpm,arch linux packager packaging (#3909)
* Support for linux deb,rpm,arch linux packager packaging

* remove optional tasks from linux:package task

CHANGELOG.md

* Update Taskfile.linux.yml

* Integrated nfpm into CLI.
Fixed task update.

* package tool fixes and add bundle name field

empty name guard

* add linux depdencies

* Add some docs

* Fixed tests. Updated task to latest.

* Update v3/internal/commands/tool_package.go

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

* Remove doctor references to nfpm

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2024-11-30 13:31:56 +11:00
Lea Anthony
43659cc5b3
Improved warning support. 2024-11-30 12:02:27 +11:00
Atterpac
d27e75c57f
[V3-Linux] Systray OnClick on initial icon click (#3907)
Support linux systrays first click to open

- Convert event handling to switch statement for better readability
- Fix menu event handlers to properly trigger open/close callbacks
- Update click behavior to use doubleClickHandler for Activate

CHANGELOG.md
2024-11-24 07:46:14 +11:00
Anshuman
abcc37f9a1
Add darwin universal build and package (#3902)
* Added Support for darwin universal builds and packages

* Fix universal task

* Added the missing Taskfile.tmpl.yml file
2024-11-23 23:15:10 +11:00
Atterpac
76e7654242
Fix AMD64 appimage generation (#3898)
changelog

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2024-11-22 20:45:27 +11:00
Anshuman
c54fbdb075
Fix build assets update (#3901)
* fix: build assets update from config

* Updated changelog
2024-11-22 20:42:19 +11:00
Lea Anthony
eccfd345b5
Fix TS templates 2024-11-20 19:49:12 +11:00
Lea Anthony
d6866f6317
V3 alpha - calling window id and name (#3888)
* Add the calling window name and ID to the context if available. Update the documentation.

* Update changelog.md
2024-11-20 05:42:16 +11:00
Lea Anthony
a98bf32b24
Fix syso naming issue 2024-11-18 20:43:03 +11:00
Lea Anthony
5f1b1efc66 Better shutdown for macOS 2024-11-17 21:37:59 +11:00
Atterpac
4f9010b024
[V3-Linux] Fix linux compile and systray OnClicks (#3886)
* fix linux compile

* fix systray OnClick and OnRightClick

* changelog.md

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2024-11-17 21:02:58 +11:00
Lea Anthony
d59ad46a9e
Add bindings section 2024-11-17 14:07:36 +11:00
Atterpac
2417251f02
defualt to embed all:frontend/dist (#3887)
changelog.md
2024-11-17 13:27:17 +11:00
Lea Anthony
99d538ea97
V3 alpha feature/3659 support webview options (#3766)
* [windows] Add GeneralAutofillEnabled and PasswordAutosaveEnabled options

* Use latest go-webview2

* Updates

* Fix changelog
2024-11-16 12:30:33 +11:00
Kodflow
3b7c870a53
[V3 Linux] aarch64 compilation (#3854)
* [V3 Linux] Add multi arch package for imageapp

base

quick refacto

* update changelog

* update changelog

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2024-11-16 12:20:32 +11:00
Anshuman
331097f269
[v3] Added AppDataDirectory path (#3823)
* Added appData

* Updated changelog

* Updated doc and added error handling and fallbacks

* Updated doc

* Expose XDG methods

* Refactor Path method. Add Paths method

* Fix changelog

---------

Co-authored-by: Anshuman <anshuman@instasafe.com>
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2024-11-16 12:00:45 +11:00
northes
0b1ef79a8e
[v3] bugfix: update version to support application.ServiceOptions (#3836)
* bugfix: update version to support application.ServiceOptions

* [v3] docs: update changelog

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2024-11-16 11:07:51 +11:00
Lea Anthony
0f0f9a0262
Update PR template 2024-11-16 10:45:14 +11:00
Lea Anthony
3e00b390c1
V3 alpha feature/start window position (#3885)
* New InitialPosition setting

* Fix mac inverted Y issue.
Fix mac centering issue.

* Change position text in example

* Update changelog.md
2024-11-16 10:10:40 +11:00
Lea Anthony
b4a61e11fa
Add devmode config to config.yml.
Remove devmode.config.yaml.
Update Watcher command.
Update templates.
2024-11-09 09:35:13 +11:00
Lea Anthony
35a680632e
V3 alpha feature/file association port (#3873)
* Update nsis template

* Move app data into config.yml

* mac support

* Add FileAssociations application config option
Support `ApplicationOpenedWithFile` event on Windows
Add docs

* Add FileAssociations application config option
Support `ApplicationOpenedWithFile` event on Windows
Add docs
Add test project

* Update example & docs.
Fix show window bug.

* Fix window show event bug

* Update changelog
2024-11-09 09:30:53 +11:00
Lea Anthony
d18b7bc4b8
V3 alpha feature/file association port (#3873)
* Update nsis template

* Move app data into config.yml

* mac support

* Add FileAssociations application config option
Support `ApplicationOpenedWithFile` event on Windows
Add docs

* Add FileAssociations application config option
Support `ApplicationOpenedWithFile` event on Windows
Add docs
Add test project

* Update example & docs.
Fix show window bug.

* Fix window show event bug

* Update changelog
2024-11-09 08:58:20 +11:00
Atterpac
1806aa0d7c
[V3/Docs] Add Events documentation (#3867)
events docs

fix function

fix nav

changelog.md

fix broken link

appease the rabbit

spell check and cleanup
2024-11-05 08:17:45 +11:00
Lea Anthony
8b105fc9c3
Improve runtime to detect browser 2024-11-04 19:44:54 +11:00
Lea Anthony
f078ee9f9a
Support wails3 generate runtime 2024-11-03 17:28:32 +11:00
Windom
e4cfae2885
[v3] Fix service name determination (#3827)
Should use service instance, not Service wrapper struct.
2024-11-01 07:00:35 +11:00
Lea Anthony
bd0c366b2f Fix service generation text 2024-10-30 22:13:41 +11:00
Omar Ferro
f9d80323dd
[v3 alpha test] HTML Drag and Drop API test (#3856)
* [v3 example] HTML dnd API test

* Update v3/examples/html-dnd-api/main.go

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

* docs: add entry to changelog

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2024-10-29 20:15:36 +11:00
Lea Anthony
308304b75e
Use docker for mkdocs serve 2024-10-24 11:26:20 +11:00
Lea Anthony
1cb7a33442
Support updating the build assets 2024-10-24 10:07:11 +11:00
John McCabe
4325b06ac4
[v3 Darwin] Fix NewEditMenu, remove duplicate PasteAndMatchStyle item (#3839)
* [V3 Darwin] Fix NewEditMenu, remove duplicate PasteAndMatchStyle item

* [chore] Add darwin fix for NewEditMenu dupe role to changelog

- PR #3839

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2024-10-21 08:35:34 +11:00
Lea Anthony
4591fb9b95 Make template descriptions consistent 2024-10-20 13:29:38 +11:00
Atterpac
6870e916bb
[V3 Templates] Add Sveltekit and Sveltekit TS templates (#3829)
* node runtime parity

* Add sveltekit templates

changelog

update svelte config

* Update v3/internal/templates/sveltekit-ts/template.json

* Update v3/internal/templates/sveltekit/template.json

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2024-10-20 13:26:51 +11:00
Lea Anthony
b27aed2497
[mac] fix always on top during window creation (#3841)
* [mac] fix always on top during window creation

* Update changelog.md
2024-10-20 13:14:26 +11:00
Atterpac
94e8f8b8d7
[V3 Runtime] Ensure JS package has parity with various node versions (#3821)
node runtime parity
2024-10-13 18:06:06 +11:00
Atterpac
fc6f6bde1d
[V3] setURL bug fix (#3533)
setURL bug fix

s

s

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2024-10-10 19:45:07 +11:00
Atterpac
f16d1be955
[V3 Linux] Fix Keybind remit (#3797)
debounce linux keypress events  remits if held past a certain value
2024-10-02 08:21:14 +10:00
Etesam
77b8132591
Updated Id type to ID for Screen (#3779)
* 🏷️ Updated `Id` type to `ID` for `Screen`

* 📝 Updated changelog
2024-09-27 15:26:33 +10:00
Lea Anthony
df091f02ef [mac] fix rogue brace 2024-09-23 20:36:58 +10:00
Mohamed Gharib
efe0c8d534
[v3-Windows] New DIP system for Enhanced High DPI Monitor Support (#3665)
* [v3-Windows] New DIP system for Enhanced High DPI Monitor Support

* Update changelog

* Remove asset middleware

* Remove SetThreadDpiAwarenessContext()

* Fix macOS build.

* Fill missing screens fields (linux, darwin)

* Skip DPI transformation on unsupported platforms

* Simplify distanceFromRectSquared()

* Update v3/pkg/application/screenmanager.go

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

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2024-09-22 08:38:30 +10:00
Lea Anthony
d5a6d7719c
Update to go-webview2 v1.0.16 2024-09-22 08:12:02 +10:00
Lea Anthony
5367d056e2
Taskfile Refactor (#3748)
* Refactor taskfile

* Fix escaping

* Fix event error

* Fix dev mode

* Fixes for Windows

* Add docs. Improve docs build system

* Update v3/internal/commands/build_assets/Taskfile.darwin.yml

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

* Update v3/internal/commands/build_assets/Taskfile.linux.yml

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

* Improve docs

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2024-09-21 20:49:25 +10:00
Lea Anthony
860d02d1fe
Improve pipelines 2024-09-18 21:48:26 +10:00
Lea Anthony
9bb5c4f64a
v3.0.0-alpha.7 2024-09-18 21:45:56 +10:00
Lea Anthony
cfdd612c8d
Fix linux build 2024-09-18 21:43:22 +10:00
Lea Anthony
40076c6246
Fix linux build 2024-09-18 06:23:53 +10:00
Lea Anthony
5670a4d7e7
Fix build 2024-09-18 06:07:59 +10:00
Lea Anthony
4386f5fcb2
# Conflicts:
#	mkdocs-website/docs/en/changelog.md
2024-09-18 05:55:49 +10:00
Lea O'Anthony
2c55110776
Improved menus.
Fixed warning on windows quit.
2024-09-17 21:19:00 +10:00
stendler
56494d8d1a
[v3] actions improvements & run actions on more branches and in forks (#3747)
* [v3] actions: run in forks and also build v3/* or v3-* branches

* [v3] actions: don't fail fast in test build actions

* [v3] actions: update actions to node20

* [v3] actions: specify cache dependency path for setup-go

to get rid of warnings
2024-09-15 07:14:22 +10:00
Etesam
b30cea0de0
[V3] fix drag n drop example not running (#3742)
* Replaced customEventProcessor with EmitEvent

* 📝 Added bug fix entry to changelog
2024-09-13 05:41:06 +10:00
Lea O'Anthony
6787ce9c40
Significant updates to mac menu items. More roles. More fixes to come. 2024-09-12 20:51:07 +10:00
Lea Anthony
ef8c886b10
Ignore internal service methods when binding (#3720)
* Ignore internal service methods when binding

* Updated changelog.md
2024-09-09 08:36:19 +10:00
Lea Anthony
cc70b98eed Merge remote-tracking branch 'origin/v3-alpha' into v3-alpha 2024-09-08 20:25:10 +10:00
Lea Anthony
1c574e79e8 [mac] events updates 2024-09-08 20:25:00 +10:00
Gabriel Lima
5481f3a684
[linux] fix: update for new events syntax (#3734)
Changed uses of deprecated `.On` to the current standard.
2024-09-08 20:22:42 +10:00
Lea Anthony
7fafee8a6c [mac] events updates 2024-09-08 20:14:45 +10:00
Lea Anthony
5cde12b42a
Refactored Events (#3731)
Experimental rename
2024-09-07 16:39:02 +10:00
Atterpac
5004aac259
[V3] Refactor linux ignore mouse events (#3721)
refactor linux ignore mouse events

changelog.md
2024-09-06 08:10:05 +10:00
DeltaLaboratory
2460b570fe
retry when shellnotifyicon fails (#3710)
* add retry mechanism for create shell notification icon

* add retry mechanism for create shell notification icon

* adjust delay and attempts

* added changelog

* Use application fatal handler instead of panic

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2024-09-02 19:33:17 +10:00
Atterpac
e316cd0719
[V3] Plugins implemenations (#3570)
* plugin handler and lifecycle

* rebase

* remove reflect

s

* remove Config and NewPlugin from plugin template

* Remove plugin manager, generation of plugin interface

* implement http handlers for services

remove log

trim path

prefix wails/services

* update plugine example

* Misc updates

* Ported plugins to services, rewritten example

* Added fileserver

* Update OnStartup and use a context for the application

* Rename PathPrefix to Route. Create docs.

* Use service config copy. Add Name to Service Options. Improve service generation.

* Use service config copy. Add Name to Service Options. Improve service generation. Update README

* Remove rogue db

* Update changelog.md

---------

Co-authored-by: Lea O'Anthony <lea.anthony@gmail.com>
2024-09-01 17:26:22 +10:00
Lea O'Anthony
60c9d1a070
More syscall fixes 2024-08-29 06:49:17 +10:00
Lea O'Anthony
46d7f399ff
windows dialog fixes 2024-08-28 07:07:16 +10:00
stendler
88c9017fdc
[v3,linux] fix: enable to run natively in wayland (#3614)
fix: enable to run natively in wayland

Incorporated from this v2 change:
https://github.com/wailsapp/wails/pull/1811
2024-08-25 21:39:22 +10:00
Windom
46dbbb3b84
[v3] Make Windows window class configurable (#3682) 2024-08-20 18:20:44 +10:00
Oleg Gulevskyy
b756bce67f
Set MacOS window levels (NSWindow) (#3674)
* set nswindow levels via mac options

* add changelog description

* update changelog to conform with others
2024-08-20 18:06:45 +10:00
bruxaodev
1ed6966cbe
Fix: Ensure Window Frame is Applied on First Call in setFrameless Function (#3691)
* fix: force update window frame

* Update changelog.md
2024-08-20 18:01:31 +10:00
bruxaodev
fbcce0b20c
[windows] Add support for click-through overlay window (#3667)
* [windows] Add support for click-through overlay window

* update changelog

* setIgnoreMouseEvents - exemple

* fix - remove unused import

* Add macOS+Linux support. Update example.

* Fix SetIgnoreMouseEvents before window created.

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2024-08-18 20:50:22 +10:00
Lea O'Anthony
96b97b25bf
Fix syso generation bug 2024-08-16 21:09:40 +10:00
Atterpac
cfab21bc81
fix syso icon generation (#3675)
update changelog.md
2024-08-10 07:26:37 +10:00
Lea O'Anthony
d405bd48f0
Fix tests for Windows 2024-08-05 05:22:00 +10:00
Lea Anthony
1cba1416a1 Fix tests 2024-08-04 21:28:15 +10:00
Lea Anthony
cd3b561623 Fix errors with raising errors! 2024-08-04 19:19:40 +10:00
Lea O'Anthony
170039c1d1
Update docs 2024-07-31 21:04:07 +10:00
Lea O'Anthony
38f68f77a0
Doc test 2024-07-31 19:37:56 +10:00
Lea O'Anthony
84aa7a879c
Update doc deps 2024-07-31 08:53:47 +10:00
Lea O'Anthony
87f51ddbda
Improve installation and what's new guides 2024-07-31 08:41:15 +10:00
Lea O'Anthony
011c9e66fb
Update installation guide 2024-07-31 08:06:18 +10:00
Lea O'Anthony
5a61e1007f
Fix module dependencies 2024-07-30 22:10:44 +10:00
Lea O'Anthony
c88f02c5a5
Add build info tool 2024-07-30 22:03:01 +10:00
Lea Anthony
212f5c7270
Clean up footer 2024-07-30 07:57:25 +10:00
Atterpac
7941f00c35
https flag for dev mode (#3603) 2024-07-29 20:46:44 +10:00
Lea Anthony
ed450c1268
Add code rabbit for alpha 2024-07-29 20:46:15 +10:00
Atterpac
76da9e55c9
Add fatalHandler() stubs to fix non-windows builds (#3642) 2024-07-29 19:32:15 +10:00
Lea Anthony
086c7ae32d
Add error handler. Use latest go-webview2. 2024-07-28 20:49:08 +10:00
Lea Anthony
d61bb9c79b
[Windows] Handle menu accelerators 2024-07-27 16:04:26 +10:00
Miklos Gabor
6c7cd651da Fix systemTray.setIcon crashing on Linux (#3636) 2024-07-25 12:34:10 -05:00
Lea Anthony
f94ecaba84
Fix random crash on linux 2024-07-20 08:40:52 +10:00
Atterpac
f0cec1cf37
[V3-Linux] fix resize and update @wailsio runtime (#3617) 2024-07-16 15:44:46 -05:00
Lea Anthony
d7e103de59
Fix nsis install 2024-07-16 06:25:05 +10:00
Lea Anthony
65b983dcb6
Merge remote-tracking branch 'origin/v3-alpha' into v3-alpha 2024-07-16 06:00:50 +10:00
Mohamed Gharib
d5e289880f
[v3] Rename AbsolutePosition() to Position() (#3611) 2024-07-15 19:27:21 +10:00
Mohamed Gharib
e51a481219
[v3] Restore max size example (#3612) 2024-07-15 19:24:51 +10:00
Atterpac
62b795d472
fix resize messaging (#3606)
changelog.md
2024-07-14 16:47:18 +10:00
Lea Anthony
8a7057b3b0
Merge branch 'refs/heads/master' into v3-alpha
# Conflicts:
#	.github/workflows/build-and-test.yml
#	.github/workflows/pr.yml
#	v2/go.mod
#	website/src/pages/changelog.mdx
2024-07-10 09:17:59 +10:00
Lea Anthony
33a0c9e634
Fixed icon warning on Windows 2024-07-03 07:51:10 +10:00
Atterpac
5fcebd0274
fix windows file dialog panic when directory doesnt exist (#3582) 2024-07-02 18:49:19 +10:00
DeltaLaboratory
749c433ca6
feat: disable spinner in ci or non terminal (#3574)
* added nospinner flag to disable spinner in ci environment

Signed-off-by: delta <delta@deltalab.dev>

* deduplicated result message

Signed-off-by: delta <delta@deltalab.dev>

* removed flag and added terminal check

Signed-off-by: delta <delta@deltalab.dev>

* added changelog entry

Signed-off-by: delta <delta@deltalab.dev>

---------

Signed-off-by: delta <delta@deltalab.dev>
2024-07-02 18:35:39 +10:00
Travis McLane
cfe2424f4d
WindowDidMove / WindowDidResize events for Linux and Windows
* [linux] emit system specific event for theme change

Code was incorrectly emitting the `events.Common.ThemeChanged` event
instead of the OS Specific `events.Linux.SystemThemeChanged` event.
It is the reponsibility of the code in events_common_linux.go to map
it to the common variety.

* [linux] implement WindowDidMove

* [linux] implement debounce for WindowDidMove

* [example] listen for events.Common.WindowDidMove

* [windows] move WindowDidMove mapper outside of DnD guard

* WindowDidResize implementation

* windows: WindowDidResize

* chore: changelog update

* events.Common.WindowDidMove and events.Common.WindowDidResize
2024-06-30 16:11:45 -05:00
Lea Anthony
ed88987308
Added a new menu item to create window that listens to movement event. 2024-06-28 21:25:13 +10:00
Lea Anthony
86e43c92b3
[Windows] Check systray menu before destroying it 2024-06-26 21:05:46 +10:00
Lea Anthony
ae3b92f1ef
Add README.md to templates 2024-06-24 21:48:58 +10:00
Lea Anthony
932f1e9161
Remove unused command 2024-06-24 21:28:26 +10:00
Lea Anthony
b0ac644e9b
Update docs text 2024-06-24 21:27:30 +10:00
Lea Anthony
25cccc32db
Add docs and sponsor subcommands 2024-06-24 20:50:17 +10:00
Lea Anthony
2b5adacbb9
Remove OpenDirectoryDialog 2024-06-17 08:06:32 +10:00
Lea Anthony
ab06920e74 Fix non-windows build issues 2024-06-09 08:28:38 +10:00
Lea Anthony
c937c3bd8b
@wailsio/runtime v3.0.0-alpha.25 2024-06-08 20:45:53 +10:00
Lea Anthony
9d488c97e0
Support raw messages from JS 2024-06-08 20:43:24 +10:00
Lea Anthony
9d24c039fe Fix linux window button methods 2024-06-08 15:56:17 +10:00
Lea Anthony
f738f1e246 Add more macOS version checks 2024-06-08 15:16:33 +10:00
Lea Anthony
95c751d4ac Fix compilation issue on Darwin < 12.3 2024-06-08 13:53:31 +10:00
Lea Anthony
bf9e17a6c8
[WEP] Customise Window Titlebars (#3508)
* Add proposal.
Reference Mac implementation

* Add windows support. Update proposal.

* Update example

* Rename Active->Enable,Inactive->Disabled. Ensure window can get controls back after hiding close on windows. Added guide. Updated example.

* Add ExStyle option for setting titlebar style.

* Fix linux builds

* Tidy up
2024-06-08 13:42:27 +10:00
Lea Anthony
2baca5d57d Update dependencies 2024-06-08 13:39:00 +10:00
Lea Anthony
b0fb67451d Fix icon issue for darwin. 2024-06-08 13:05:06 +10:00
Lea Anthony
f454abf45a
Slight clarification to the WEP guidelines 2024-06-02 10:03:00 +10:00
Atterpac
0dd73e249d
Revert "Remove OpenContextMenu" (#3524)
This reverts commit 54140e9adb.
2024-06-02 06:30:17 +10:00
Lea Anthony
54140e9adb
Remove OpenContextMenu 2024-06-01 15:04:35 +10:00
Travis McLane
45195d5bd6
linux: theme handling bugfix (#3515)
* linux: theme handling bugfix

* update changelog
2024-05-28 11:06:30 -05:00
Lea Anthony
2a056a7855
Fix ctrl key accelerator on macOS 2024-05-25 16:33:43 +10:00
Atterpac
940d0f1906
fix windows cross volume init (#3512)
changelog
2024-05-25 16:20:42 +10:00
Lea Anthony
1d2e1b15ea
Update Linux docs + doctor to suggest webkit2gtk-4.1 2024-05-21 07:47:19 +10:00
Lea Anthony
e424a85a99
Menu improvements (#3492)
* Expose `DefaultApplicationMenu`.
Add `FindByLabel` and `ItemAt` for finding menu items in a menu

* Add `Menu.RemoveMenuItem()`, `MneuItem.GetAccelerator()` and `MenuItem.RemoveAccelerator()`

* Remove `Update`

* Iterate when removing menu items

* Add `GetSubmenu()`
2024-05-20 21:15:02 +10:00
Fabio Massaioli
939d22d670
[v3] Enforce stricter typing for generated bindings (#3498)
* Subject generator output to stricter TS linting

* Fix runtime support code typing

* Relax tsconfig for templates

* Update test data

* Update binding example
2024-05-19 23:28:45 +10:00
Fabio Massaioli
90b7ea944d
[v3] New binding generator (#3468)
* Support variadic arguments and slice, pointer types

* Fix computation of type namespaces

* Improve comments and general formatting

* Set default values correctly for composite types

* Add templates for bindings

Additionally:
* fixes generation of tuple return type
* improves imports and namespacing in JS mode
* general cleanup of generated code

* Simplify import list construction

* Refactor type generation code

Improves support for unknown types (encoded as any) and maps (using
Typescript index signatures)

* Support slices with pointer elements

* Match encoding/json behaviour in struct parser

* Update tests and example

* Add tests for complex method signatures and json tag parsing

* Add test `function_multiple_files`

* Attempt looking up idents with missing denotation

* Update test data

* fix quoted bool field

* Test quoted booleans

* Delete old parser code

* Remove old test data

* Update bindgen flags

* Makes call by ID the default

* Add package loading code

* Add static analyser

* Temporarily ignore binding generation code

* Add complex slice expressions test

* Fix variable reference analysis

* Unwrap casts to interface types

* Complete code comments

* Refactor static analyser

* Restrict options struct usage

* Update tests

* Fix method selector sink and source processing

* Improve Set API

* Add package info collector

* Rename analyser package to analyse

* Improve template functions

* Add index file templates

* Add glue code for binding generation

* Refactor collection and rendering code

* Implement binding generator

* Implement global index generation

* Improve marshaler and alias handling

* Use package path in binding calls by name

* Implement model collection and rendering

* Fix wrong exit condition in analyser

* Fix enum rendering

* Generate shortcuts for all packages.

* Implement generator tests

* Ignore non-pointer bound types

* Treat main package specially

* Compute stats

* Plug new API into generate command

* Support all named types

* Update JS runtime

* Report dual role types

* Remove go1.22 syntax

* Fix type assertion in TS bindings

* encoding/json compliance for arrays and slices

* Ignore got files in testdata

* Cleanup type rendering mechanism

* Update JS runtime

* Implement generic models

* Add missing field in renderer initialisation

* Improve generic creation code

* Add generic model test

* Add error reporting infrastructure

* Support configurable file names

* Detect file naming collisions

* Print final error report

* New shortcut file structure + collision detection

* Update test layout and data

* Autoconfiguration for analyser tests

* Live progress reporting

* Update code comments

* Fix model doc rendering

* Simplify name resolution

* Add test for out of tree types

* Fix generic creation code

* Fix potential collisions between methods and models

* Fix generic class alias rendering

* Report model discovery in debug mode

* Add interface mode for JS

* Collect interface method comments

* Add interface methods test

* Unwrap generic instantiations in method receivers

* Fix rendering of nullable types in interface mode

* Fix rendering of class aliases

* Expose promise cancel method to typescript

* Update test data

* Update binding example

* Fix rendering of aliased quoted type params

* Move to strongly typed bindings

* Implement lightweight analyser

* Update test cases

* Update binding example

* Add complex instantiation test

* Load full dependency tree

* Rewrite collector

* Update renderer to match new collector

* Update generator to match new collector

* Update test data

* Update binding example

* Configure includes and injections by language

* Improve system path resolution

* Support rich conditions in inject/include directives

* Fix error handling in Generator.Generate

* Retrieve compiled go file paths from fileset

* Do not rely on struct info in struct flattening algorithm

* Fix doc comment for findDeclaraion

* Fix bugs in embedded field handling

* Fix bugs and comments in package collection

* Remove useless fields from ServiceInfo

* Fix empty line at the beginning of TS indexes

* Remove global index and shortcuts

* Remove generation tests for individual packages

* Enforce lower-case file names

* Update test data

* Improve error reporting

* Update binding example

* Reintroduce go1.22 syntax

* Improve relative import path computation

* Improve alias support

* Add alias test

* Update test data

* Remove no services error

* Rename global analyser test

* Add workaround and test for bug in typeutil.Map

* Update test data

* Do not split fully qualified names

* Update typeutil package and remove workaround

* Unify alias/named type handling

* Fix rendering of generic named class aliases

* Fix rendering of array types

* Minor tweaks and cleanups

* Rmove namespaced export construct

* Update test data

* Update binding example

* Break type cycles

* Fix typo in comment

* Fix creation code for cyclic types

* Fix type of variadic params in interface mode

* Update test data

* Fix bad whitespace

* Refactor type assertions inside bound methods

* Update test data

* Rename field application.Options.Bind to Services

* Rename parser package to generator

* Update binding example

* Update test data

* Update generator readme

* Add typescript test harness

* Move test output to new subfolder

* Fix code generation bugs

* Use .js extensions in TS mode imports

* Update test data

* Revert default generator output dir to frontend/bindings

* Bump runtime package version

* Update templates

* Update changelog

* Improve newline handling

---------

Co-authored-by: Andreas Bichinger <andreas.bichinger@gmail.com>
2024-05-19 20:40:44 +10:00
Atterpac
04a33e2206
refresh version up (#3495)
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2024-05-19 19:03:08 +10:00
Lea Anthony
95956f6362
Update WEP README 2024-05-19 16:02:22 +10:00
Lea Anthony
e5d82915dd
Update WEP 2024-05-19 15:55:57 +10:00
Lea Anthony
e3f673d9db
Update WEP 2024-05-19 11:44:30 +10:00
Lea Anthony
4fd21432c5
Add WEP docs 2024-05-18 07:10:51 +10:00
Atterpac
9c4b412aea
fix react template css (#3477)
changelog
2024-05-14 06:39:20 +10:00
Atterpac
71b2edc0fe
[V3-Linux] Upgrade to Webkitgtk4.1 (#3461)
* webkitgtk4.0->webkitgtk4.1

changelog

* Update mkdocs-website/docs/en/changelog.md

* Update deps in pipeline

* Update deps in pipeline

* Install 4.1 only when v3

* Install 4.1 only when v3

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2024-05-08 18:08:14 +10:00
Lea Anthony
7661cd189f
Fix Go version 2024-05-08 08:27:38 +10:00
Mike D Pilsbury
0833a6d6d3
[v3] Correct detection of npm with acceptable version (#3458)
* Correct detection of npm with acceptable version

* Update changelog
2024-05-06 08:29:28 +10:00
Lea Anthony
7d851d8434
Fix disable min/max buttons on windows 2024-05-06 08:26:41 +10:00
Atterpac
2c29e1ca76
update devmode to use types and yaml (#3454)
go mod update
2024-05-05 17:27:53 +10:00
Travis McLane
5a57ee99ac example: environment - change css
text was colored white and therefore invisible.
2024-05-03 12:52:15 -05:00
Travis McLane
735b6b6c87 noop: remove Println for events.Linux.ApplicationStartup 2024-05-02 15:31:49 -05:00
Travis McLane
7ea0601fc6 remove Println
unknown key codes shouldn't print out to stdout
2024-05-02 11:02:21 -05:00
Travis McLane
99537f2816 remove Register/UnregisterWindow functionality
- this is no longer needed
2024-05-02 09:37:23 -05:00
Harry Fox
b384bb885b
add missing map init from application.init() (#3426)
* add missing map init from `application.init()`

* add changelog entry for #3426

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2024-05-02 21:57:51 +10:00
abichinger
2255af1c45
[v3] Add port flag to dev command (#3429)
* Add `port` flag to dev command, ...

Add support for environment variable WAILS_VITE_PORT

* Check if port is already in use

* Update changelog

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2024-05-02 21:48:50 +10:00
Fabio Massaioli
f55b781d86
[v3] Binding runtime fixes (#3431)
* Unmarshal arguments to appropriate type in binding calls

* Marshal multiple return values to arrays in binding calls

* Improve logging of remote method calls

* Add tests for `BoundMethod.Call`

* Fix return value if error is nil

* Update changelog

---------

Co-authored-by: Andreas Bichinger <andreas.bichinger@gmail.com>
2024-05-02 21:46:07 +10:00
Lea Anthony
38d9a9551f
Add -trimpath for production build in project taskfile 2024-04-29 17:58:48 +10:00
Lea Anthony
c38cee0a4a
More optimised production build in project taskfile 2024-04-29 17:40:46 +10:00
Lea Anthony
0f9c7b1bbf
Fix nanoid dep for npm package 2024-04-28 19:43:37 +10:00
Lea Anthony
32ddbd8e05
set target branch to v3-alpha 2024-04-28 17:13:59 +10:00
Lea Anthony
67c493f1a8
Fix example building 2024-04-27 17:43:58 +10:00
Lea Anthony
69c513e33d
Fix pipeline tests 2024-04-27 17:38:10 +10:00
Lea Anthony
82b910dd6d
Fix pipeline tests 2024-04-27 17:16:21 +10:00
Lea Anthony
5d0a58cc6a
Update GetRelative/AbsolutePosition to take border size into account 2024-04-25 15:59:33 +10:00
Lea Anthony
368ca13314
Update window interface 2024-04-25 15:26:31 +10:00
Lea Anthony
2cee1edcb5
Add window.GetBorderSizes 2024-04-25 15:22:01 +10:00
Travis McLane
1b288a0a1a removing experimental server plugin 2024-04-23 09:32:21 -05:00
Harry Fox
81aba310d0
update Taskfile.tmpl.yml to include darwin run task (#3417)
* update Taskfile.tmpl.yml to include darwin run task

* add changelog line for #3417
2024-04-23 18:19:25 +10:00
Atterpac
b050a07362
dev mode adapt to OS (#3412)
changelog
2024-04-22 12:44:10 +10:00
Travis McLane
021efab84d
allow for non-Window WailsEvent listeners (#3406)
* allow for non-Window WailsEvent listeners

- adds a RegisterListener function on the App struct such
  that code can listen for WailsEvent(s) even if it isn't a Window
- rename dispatchEventToWindows -> dispatchEventToListeners
- add all windows and WailsEventListeners to slice before emitting

* Update v3/pkg/application/application.go

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2024-04-20 09:39:57 +10:00
Atterpac
0a42a050bd
fix dev mode windows pipe (#3402) 2024-04-18 23:14:20 +10:00
abichinger
9ca1b30da1
[v3 alpha] Fix drag-n-drop on some linux distros (#3346)
* Fix drag and drop on linux

- Move C code

* Use GTK_DEST_DEFAULT_DROP

* Update changelog

* Move C code back into `linux_cgo.go`
2024-04-15 10:05:23 -05:00
Atterpac
220d5535f7
revert dialog channel close (#3395)
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2024-04-15 18:03:35 +10:00
Atterpac
0895e6a508
refresh version up (#3391) 2024-04-15 16:57:19 +10:00
Lea Anthony
ed5532a535
Update plugin docs 2024-04-14 21:47:37 +10:00
Lea Anthony
6f41dbf954
Merge branch 'refs/heads/v3-alpha-feature/plugin-updates' into v3-alpha 2024-04-14 21:42:16 +10:00
Lea Anthony
c7ed7e72d4
Major plugin updates 2024-04-14 21:41:33 +10:00
abichinger
a7208f5262
Update changelog (#3389) 2024-04-11 23:50:04 +10:00
Travis McLane
09f6680aa9 restore: run tests only after approval 2024-04-10 09:11:36 -05:00
Travis McLane
9261130fed chore: workflow update to run tests on correct directory 2024-04-09 16:57:04 -05:00
Travis McLane
fec22e0052 chore: bump staticanalysis to v2.8.0 2024-04-09 16:37:50 -05:00
abichinger
7c921d6a81
[v3 alpha] implement setIcon on linux (#3354)
* implement `linuxApp.setIcon`

* Move code into `linux_cgo.go`
2024-04-09 11:04:54 -05:00
Travis McLane
16a029754f disable 'server' example
Doesn't compile currently.
Disabling such that the workflow succeeds
2024-04-08 13:29:42 -05:00
Travis McLane
3c9fd67fd0 doctor: correct compilation errors 2024-04-08 13:23:12 -05:00
Travis McLane
724ca386e7 Merge remote-tracking branch 'origin/v3-alpha-linux-dialogs' into v3-alpha 2024-04-08 11:17:56 -05:00
atterpac
6f75b00463 Proper syncing and canceling of dialogs
s

s

s
2024-04-08 11:17:05 -05:00
Travis McLane
105d9f0d3a allow directory selection 2024-04-07 16:42:33 -05:00
atterpac
38f6b1297d Call linux dialog on main thread 2024-04-07 16:42:33 -05:00
Lea Anthony
cf130a6e25
[windows] Fix directory select in Open Dialog 2024-04-06 14:38:43 +11:00
Lea Anthony
e91c30fad0 Small doctor improvements 2024-04-03 20:48:55 +11:00
Lea Anthony
3e3f7b9273 Update discord link 2024-04-03 08:27:32 +11:00
Lea Anthony
88ff84f5a5
[windows] Improve Set window icon when in debug mode 2024-04-01 05:02:39 +11:00
Lea Anthony
eee373f15a
[windows] Set window icon when in debug mode 2024-04-01 04:55:34 +11:00
Lea Anthony
c839c053cb
[windows] Fix min/max buttons 2024-03-29 21:44:59 +11:00
Lea Anthony
238b9ede78 Update plugin example 2024-03-26 21:11:35 +11:00
Lea Anthony
c7bd39abc7 Update plugin example 2024-03-26 21:02:26 +11:00
Lea Anthony
85b1f909a7 Plugin updates 2024-03-26 20:56:58 +11:00
Calle Gustafsson
675f502802
wails3 alpha windows: fix crash when systray icon is clicked without an attached window (#3271)
* Fix: #3270

removes an unnessecary check which returned a double nil wich in turned causes a crash if systray doesn't have an attached window.

* Add iconIsInFlyout method to systray_windows

and use it to determine if the icon is in the
flyout or not when positioning an attached window.

* optimize the windows systray window positioning

we only need to get the systray bounds if
the icon is in the flyout area.

* Use correct behavior for placing the window

if the systray icon is visible in the taskbar the
window should be centered on the systray icon
otherwise the icon is in a flyout are and the
window should be placed in the corner.

Added comments to explain placement logic

* consistent placing of systray menu on right vs left click

* add PR info in changelog

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2024-03-24 17:04:40 +11:00
abichinger
db5553ec75
[linux] fix closing of custom context menu #3329 (#3330)
* [linux] fix closing of custom context menu

* Update changelog

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2024-03-24 16:51:45 +11:00
Fabio Massaioli
413191411f
Remove class fields (#3333) 2024-03-24 16:42:41 +11:00
Fabio Massaioli
45b2681dfc
[v3] Fix binding generator output and import paths (#3334)
* Fix relative import path computation

* Fix models output path

* Add option to generate bindings using bundled runtime

* Update binding example

* Fix testdata

* Update changelog

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2024-03-22 21:18:04 +11:00
Travis McLane
f0986a6441 chore: version.txt == v3.0.0-alpha.4 2024-03-21 14:16:39 -05:00
stffabi
e6645136f9 [windows] Set HiDPI size scaling before setting up chromium 2024-03-21 09:42:23 +01:00
stffabi
189820135a [windows] Use options for window name 2024-03-21 09:42:23 +01:00
Lea Anthony
f19cc528d4 Fix context menu example 2024-03-20 21:18:46 +11:00
Fabio Massaioli
2b9891da2c
[v3] Update and fix runtime JS API (#3295)
* Cleanup bundled runtime entry point

* Fix JS representation of Screen struct

* Expose IsFocused method in Window interface

* Update JS window API

* Fix cleanup of WML listeners

* Bundle runtime as ES module

* Update runtime dependencies

* Update runtime types and events

* Update bundled runtime

* Update changelog

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2024-03-20 20:30:14 +11:00
Lea Anthony
a5c843f5c6 Disable social plugin in docs 2024-03-20 08:32:24 +11:00
Lea Anthony
aa8e74539c Rebuild docs 2024-03-20 07:52:31 +11:00
Lea Anthony
d1968489b7 Don't build server plugin 2024-03-20 07:43:27 +11:00
Lea Anthony
33946a7aac Don't build server plugin 2024-03-19 21:56:54 +11:00
Lea Anthony
ddf74d3793 Update go version in pipelines 2024-03-19 21:45:52 +11:00
Lea Anthony
1b3b8178ec Update node version in pipelines
(cherry picked from commit c451adc424)
2024-03-19 21:35:38 +11:00
Lea Anthony
bf3bdadd90 Update changelog 2024-03-19 21:07:14 +11:00
Lea Anthony
aba82cc527 Update system.Environment 2024-03-19 20:37:03 +11:00
atterpac
e92994d2e7
Refresh Version Update (CPU Thread Leak Fix) (#3322)
* Fix appimage file sourcing

Add findGTKFiles to source webkit files for appimage generation

s

* Update refresh version to fix CPU usage

s

* update changelong

* refresh version up

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2024-03-19 08:41:47 +11:00
Lea Anthony
26d9b3a832 Update docs config 2024-03-19 08:36:57 +11:00
Lea Anthony
bfabaa50bc Add Cymraeg 2024-03-18 21:52:39 +11:00
Lea Anthony
7fcd172387 Update first steps 2024-03-18 20:57:56 +11:00
Lea Anthony
c5bb4c7405 Refactor docs 2024-03-18 20:47:33 +11:00
Lea Anthony
98aff7778e Support ProgramName on linux 2024-03-17 21:09:20 +11:00
Lea Anthony
4ab6352504 Set default size for linux windows 2024-03-17 20:57:46 +11:00
Lea Anthony
b325381ca0 Normalise app/webview options
Update deps
2024-03-17 20:57:46 +11:00
Lea Anthony
bc0a9b2e52 Add BundledAssetFileServer for bundled /wails/runtime.js. Update examples. 2024-03-17 15:08:30 +11:00
atterpac
75c0236a04
[v3] Fix Dev mode <defunct> processes (#3320)
* Fix appimage file sourcing

Add findGTKFiles to source webkit files for appimage generation

s

* Update refresh version to fix CPU usage

s

* update changelong
2024-03-17 14:17:21 +11:00
atterpac
ec2ce3fcfb
Fix appimage file sourcing (#3306)
Add findGTKFiles to source webkit files for appimage generation

s
2024-03-17 11:17:17 +11:00
Lea Anthony
e9a9420e5c Refactor options.
Update deps
2024-03-17 09:42:27 +11:00
Travis McLane
209e097ba6 rename linux options file
`linux` suffix means it won't compile on non-Linux platforms.
Shorten the name to avoid:

../../pkg/application/options_webview_window.go:104:8: undefined: LinuxWindow
../../pkg/application/options_application.go:28:8: undefined: LinuxOptions
../../pkg/application/options_webview_window.go:104:8: undefined: LinuxWindow
2024-03-14 13:25:23 -05:00
Lea Anthony
8d234cc842 Update execjs signature 2024-03-14 08:57:10 +11:00
Lea Anthony
e6805707d8 Fix mac compilation issues 2024-03-14 08:52:10 +11:00
Lea Anthony
acd6f7af5b Merge remote-tracking branch 'origin/v3-alpha-linux' into v3-alpha 2024-03-14 08:39:19 +11:00
Josh Drake
f38532bcf5
Correctly compute 'startURL' when using a frontend development server. (#3299)
* Fix computing 'startURL' when 'FRONTEND_DEVSERVER_URL' is present.

* Respect provided URL when computing 'startURL' and 'FRONTEND_DEVSERVER_URL' is present.

* Update changelog.

* Correctly produce absolute URI in 'GetStartURL' when input is provided.
2024-03-08 18:06:14 +11:00
Travis McLane
4b2189ba51 allow keypress propagation
- this allows the webkit to add values to the `input` when typed
FIXME: does this need to be configurable?
2024-03-07 09:03:47 -06:00
Travis McLane
fb46cce963 simplify key handling logic 2024-03-07 09:03:32 -06:00
Travis McLane
eedd5eb7d2 reuse the 'wv' variable 2024-03-07 09:02:39 -06:00
Travis McLane
716f4af808 [linux] add missing implementations 2024-03-06 17:10:41 -06:00
Travis McLane
c21784037d wip: fixing rebase issue 2024-03-06 16:59:13 -06:00
Lea Anthony
0fde6c9922 Latest status 2024-03-06 16:59:13 -06:00
Travis McLane
6d90c1678c move install_signal_handlers to proper location 2024-03-06 16:59:13 -06:00
Lea Anthony
a7fb568aff Fix signal handlers 2024-03-06 16:59:13 -06:00
Lea Anthony
065ca5f6d3 Move to latest webkit2 and remove older code.
Fix screen demo.
Update examples.
2024-03-06 16:59:13 -06:00
Lea Anthony
ab9eec12eb Update status. Make wml demo non-drag 2024-03-06 16:59:13 -06:00
Lea Anthony
430736a4f2 Remove need for javascriptcore 2024-03-06 16:59:13 -06:00
Lea Anthony
161444107a Support linux systrays, of sorts... 2024-03-06 16:59:13 -06:00
Lea Anthony
12e2e2101a fix screens 2024-03-06 16:59:13 -06:00
Lea Anthony
e39097a17e fix min/max 2024-03-06 16:59:13 -06:00
Lea Anthony
be7c723c47 Fix window close issues
Update docs
Make uri scheme registration thread safe
2024-03-06 16:59:13 -06:00
Lea Anthony
a60b198b03 Fix window close issues 2024-03-06 16:59:13 -06:00
Lea Anthony
e06df85f02 WindowID now correctly processed by postMessage calls. 2024-03-06 16:59:13 -06:00
Lea Anthony
288a4757f8 WindowID now correctly passed with webview request. 2024-03-06 16:59:13 -06:00
Lea Anthony
29363fc07f ToggleDevTools -> OpenDevTools
More refactor CGO methods.
2024-03-06 16:59:13 -06:00
Lea Anthony
02a1b540ce [WIP] refactor CGO methods 2024-03-06 15:43:50 -06:00
Lea Anthony
a048233f4c Added menu cloning.
Introduced the ability to clone a menu, along with its submenus, in Linux-based web applications to create a full deep copy. This fixes reusing the application menu for window menus.
2024-03-06 15:40:28 -06:00
Lea Anthony
758c4c2c8d Refactor Linux application handling in webview
This update introduces a LinuxOptions struct for Linux-specific application configurations and refines webview for Linux. The 'windows' map has been renamed to 'windowMap' to avoid confusion. Moreover, a method to unregister Windows has been added to ensure the Linux application automatically quits when the last window closes, unless explicitly disabled in the new LinuxOptions structure. Reset Window position after hiding. Some debug output has been removed.
2024-03-06 11:52:06 -06:00
Lea Anthony
adae39efee Add webview GPU policy and update Linux options
The commit introduces a set of webview GPU policies to control hardware acceleration. These policies define when hardware acceleration is enabled on the webview. An option for this has been added to the LinuxWindow struct for Linux specific windows. Additional code modification was carried out to use this new GPU policy option when calling `windowNew` function. Finally, the sequence of the GPU Policies in the const declaration has been updated for better readability.
2024-03-06 11:49:11 -06:00
Lea Anthony
84e1bb4d9b Improve Linux application events and refactor app method receivers
This commit includes the addition of common events for the Linux platform. Refactored and standardized the method receivers for the application from 'm' to 'l'. Also, the application startup events in the window example have been updated according to the new naming scheme.
2024-03-06 11:48:26 -06:00
Lea Anthony
6b0daf3da9 Update windowSetupSignalHandlers & linux events 2024-03-06 11:44:55 -06:00
Lea Anthony
b6c5d90c9d Window Flash for Linux
Set Min/Max window buttons
2024-03-06 11:43:16 -06:00
Lea Anthony
a34ccbff33 ToggleDevTools -> OpenDevTools
More refactor CGO methods.
2024-03-06 11:43:12 -06:00
Lea Anthony
4cd4b46772 [WIP] refactor CGO methods 2024-03-06 11:42:19 -06:00
Lea Anthony
3d93c83920 Added menu cloning.
Introduced the ability to clone a menu, along with its submenus, in Linux-based web applications to create a full deep copy. This fixes reusing the application menu for window menus.
2024-03-06 11:42:19 -06:00
Lea Anthony
809863d61a Refactor Linux application handling in webview
This update introduces a LinuxOptions struct for Linux-specific application configurations and refines webview for Linux. The 'windows' map has been renamed to 'windowMap' to avoid confusion. Moreover, a method to unregister Windows has been added to ensure the Linux application automatically quits when the last window closes, unless explicitly disabled in the new LinuxOptions structure. Reset Window position after hiding. Some debug output has been removed.
2024-03-06 11:42:19 -06:00
Lea Anthony
4c7b643295 Add webview GPU policy and update Linux options
The commit introduces a set of webview GPU policies to control hardware acceleration. These policies define when hardware acceleration is enabled on the webview. An option for this has been added to the LinuxWindow struct for Linux specific windows. Additional code modification was carried out to use this new GPU policy option when calling `windowNew` function. Finally, the sequence of the GPU Policies in the const declaration has been updated for better readability.
2024-03-06 11:42:19 -06:00
Lea Anthony
05b16f1d63 Improve Linux application events and refactor app method receivers
This commit includes the addition of common events for the Linux platform. Refactored and standardized the method receivers for the application from 'm' to 'l'. Also, the application startup events in the window example have been updated according to the new naming scheme.
2024-03-06 11:42:19 -06:00
Lea Anthony
bfa53dfd6c Update windowSetupSignalHandlers & linux events 2024-03-06 11:42:19 -06:00
stffabi
4467a1ffa2 [parser] Move context tests into a separate file 2024-03-04 12:38:21 +01:00
stffabi
bfe9a9d015 [runtime] Add cancelation of bound method calls and context passing 2024-03-04 10:34:14 +01:00
Fabio Massaioli
7e687750b2
[v3] Add option for showing the toolbar in fullscreen mode on macOS (#3282)
* Add option for showing the toolbar in fullscreen mode on macOS

* Add an example demonstrating the ShowToolbarWhenFullscreen option

* Update docs

* Add changelog entry

* Run go mod tidy
2024-03-02 20:10:25 +11:00
Fabio Massaioli
0c3025d695
[v3] Fix ordering of if branches in WebviewWindow.Restore method (#3279)
* Add JS Window API example

* Fix ordering of if branches in Window.Restore method

* Add changelog entry
2024-03-02 16:04:02 +11:00
5aaee9
a9c22f0588
fix: wrong baseURL if open window twice (#3273) 2024-02-29 08:47:25 +11:00
Fabio Massaioli
b8537d1c96
[v3] Restore ToggleMaximise method in Window interface (#3281)
* Add JS Window API example

* Add ToggleMaximise button to Window API example

* Restore ToggleMaximise method in Window interface

* Update docs and changelog
2024-02-29 08:42:57 +11:00
stffabi
12d12a33de [v3, assetServer] Update docs 2024-02-21 13:40:32 +01:00
stffabi
1956f95f9f [templates] Update templates to latest assetserver options 2024-02-16 08:04:16 +01:00
stffabi
723dd976b4 [v3, assetServer] Use middlewares for runtime, caps and falgs instead of having the implementation in the assetserver 2024-02-16 07:38:28 +01:00
stffabi
65251cdafa [v3, assetServer] Remove fs.FS from options and always use a http.Handler 2024-02-16 07:38:27 +01:00
Lea Anthony
471d626043
Add control to disable window buttons on Mac
Three new options have been introduced in the application options for MacOS to disable the minimize, maximize, and close buttons on the window. Corresponding functionality has been added in the webview window for darwin to handle these new options. These changes have been showcased in the window example main.go file.
2024-02-08 08:31:58 +11:00
Lea Anthony
0b82968c0f
Add option to disable min/max windows buttons
This commit introduces the functionality to disable the minimise and maximise buttons on windows. These options have been added to the `application.WebviewWindowOptions` and integrated in the Windows application logic. Effectively, developers can now control the availability of these buttons in their windows applications.
2024-02-07 10:06:07 +11:00
ALMAS
0584a3929d
Fix docs (#3228) 2024-02-03 07:01:57 +11:00
Lea Anthony
09815e6035
Update runtime.md 2024-02-02 17:14:09 +11:00
Lea Anthony
9a01650622
Update runtime.md 2024-02-02 17:10:33 +11:00
Lea Anthony
fb5afbd394
Fix docs 2024-02-02 17:01:41 +11:00
Lea Anthony
fc105cee2b
Update docs 2024-02-01 21:39:32 +11:00
Lea Anthony
1ec3b4ecab
v3.0.0-alpha.4 2024-02-01 21:09:03 +11:00
Lea Anthony
6e2bbe31ac
[windows] fix frameless resize 2024-02-01 06:47:49 +11:00
Lea Anthony
5670c1e655
Update compiled runtime 2024-01-31 21:39:46 +11:00
Lea Anthony
7f5d836916
Fix feedback text 2024-01-31 17:55:21 +11:00
Lea Anthony
cbaf859103
@wailsio/runtime@3.0.0-alpha.20
This fixes dragging by working around Vite's aggressive tree shaking
2024-01-30 21:01:32 +11:00
Lea Anthony
5115b294ee
Fixed runtime. cp tool. 2024-01-29 21:29:16 +11:00
Lea Anthony
c01bc4dbd7
Update runtime 2024-01-29 19:07:44 +11:00
Lea Anthony
7674f8eb2b Fixed dialogs on macOS. Update WML example to use compiled runtime. 2024-01-25 21:00:33 +11:00
Lea Anthony
773bdf8ea2
Fix small bugs in assetserver 2024-01-21 21:46:45 +11:00
Lea Anthony
b249f0d0ce
Bring linux up to date with dev changes 2024-01-21 21:24:30 +11:00
Lea Anthony
6522657893
Refactor menu functions and streamline devtools toggle across systems
This update adds implementation to several menu item functions, replacing their previous 'not implemented' state. This includes actions for close, reload, forcing reload, toggling of fullscreen, reset zoom, and others. The update also includes modifications for the handling of developer tools toggle under different build configurations. This refactoring is aimed to standardize devtools configuration across different operating systems.
2024-01-21 20:52:32 +11:00
Lea Anthony
c82facd6ff
Move startURL calculation to assetserver 2024-01-20 11:50:20 +11:00
Lea Anthony
bcb390f611
@wailsio/runtime v3.0.0-alpha.16 2024-01-20 11:38:56 +11:00
Lea Anthony
a805d6c2b1
@wailsio/runtime v3.0.0-alpha.15 2024-01-20 11:34:36 +11:00
Lea Anthony
3d08f92705
Update status. Fix dev task. 2024-01-20 08:45:44 +11:00
Lea Anthony
2436229145
Fix feedback page 2024-01-19 21:37:37 +11:00
Lea Anthony
e5c14d24ae
Initial implementation of dev mode.
Huge thanks to @atterpac!
2024-01-19 21:34:49 +11:00
Thomas Sénéchal
23c1a7d1d8
[v3/Windows] Fix failing Windows build due to undefined options (#3208)
* Fix failing Windows build due to undefined options

* Update changelog
2024-01-18 05:33:51 +11:00
Thomas Sénéchal
44bbce125b
[V3/macos] Fix systray click handling when no attached window (#3207)
* Fix systray click handling

* Open Menu if no window is attached in defaultClickHandler()

* Remove systemTraySetMenu function

* Fix a crash in hide-window example

* Update changelog
2024-01-17 22:36:22 +11:00
Lea Anthony
dff47263d5 Set default extension for save dialog file filter
The code update sets the default extension to the first pattern in the save dialog file filter when options.Filters is populated. This improvement applies to Windows platform interface function for 'Save File Dialog' and provides a more intuitive user experience.
2024-01-17 22:35:58 +11:00
Lea Anthony
861ddea1b2
Add option to prevent application shutdown
This update allows the application shutdown to be cancelled. It implements the shouldQuit function, which can prevent the application from quitting if it returns false. Additional checks have been added to ensure cleanup and quit processes are performed only if required. The darwin delegate and linux and windows applications were modified to include this new functionality.
2024-01-17 20:45:30 +11:00
Lea Anthony
ab22ea1f27
Update alpha docs 2024-01-14 09:22:27 +11:00
Lea Anthony
a6757c352f
Add shutdown tasks functionality to application
A new method OnShutdown was introduced to allow adding tasks to be run when the application shuts down. The shutdown tasks are run on the main thread and in the order they were added, with the application option `OnShutdown` being run first. This allows more controlled and managed shutdown of the application.
2024-01-14 08:17:17 +11:00
Lea Anthony
2d97776caa
[bindings] Support aliases in package imports 2024-01-14 08:07:47 +11:00
ALMAS
3cd26a2220
[v3] Improve OnShutdown (#3190)
* [v3] Improve OnShutdown

* add change log
2024-01-10 23:28:15 +11:00
Lea Anthony
f759162fd1
Update alpha.3 status 2024-01-10 08:51:29 +11:00
Lea Anthony
6c3bd124ce
Added option to disable AssetServer logging.
An option to disable AssetServer logging has been introduced in the application options. This will suppress every request log from the AssetServer if set to true. This adjustment is useful for preventing log saturation in certain scenarios or environments.
2024-01-09 22:15:42 +11:00
Lea Anthony
68b12d4fff
Refactored application shutdown process to streamline app termination.
The application shutdown process has been significantly reworked to be more efficient and robust. The refactored code removes the event listener for the 'ApplicationTerminate' event. Instead, an in-process flag is added to the 'Quit' method to prevent recursive calls. Additionally, an optional 'OnShutdown' function variable is introduced to allow custom cleanup operations upon app termination.
2024-01-09 18:19:09 +11:00
Lea Anthony
1195464acb Improve window teardown on termination
This commit adds a robust teardown process for windows on application shutdown. It introduces a field to track the destruction state of each window and checks such before performing window operations. Also, it enhances the destroy functions within application for thorough clean up. Finally, redundant event handlers related to application termination were removed while fixing file generating challenge in go tasks.
2024-01-09 07:45:56 +11:00
Lea Anthony
68e779d64e
[darwin] add support for quitting app 2024-01-08 21:22:33 +11:00
Lea Anthony
df0419a7d6
@wails/runtime@v3.0.0-alpha.14 2024-01-08 21:21:24 +11:00
Lea Anthony
3dff6c6875
Update alpha.3 support table 2024-01-07 21:26:35 +11:00
Lea Anthony
07421ead41
@wailsio/runtime@3.0.0-alpha.13 2024-01-07 20:12:17 +11:00
Lea Anthony
b6dc199993
Update bindings tests 2024-01-07 20:11:34 +11:00
Lea Anthony
6d8a004f4a
Fixed Call.ByID JSDoc + TS type 2024-01-07 10:44:18 +11:00
Lea Anthony
1dae9f613f
Improved templates 2024-01-07 08:19:07 +11:00
Lea Anthony
34f7f24e7e
Support Vite 5 templates + @wailsio/runtime module 2024-01-06 16:38:51 +11:00
Lea Anthony
40bd6125f5
Better pass through of args to task 2024-01-02 21:25:09 +11:00
stffabi
012eeab3aa [windows] Fix #2359 by not redirecting the accelerators to wndproc
If someone wants to handle accelerators they could use the key
bindings in a cross-platform way.
2023-12-30 23:34:54 +01:00
stffabi
2f3eb70a4d [windows] Use msWebView2BrowserHitTransparent for non working NC area clicks on unfocused window
Without this patch there's a really strange behaviour if there are
multiple windows.
Having two windows with a webview open with an input field.
Focusing the input field on one window, then focusing the input
field on the second one. Then clicking directly on the non client
area of the first one, e.g. to trigger a minimze, the minimize is
not executed until the mouse is getting moved. As long as the
mouse is not moved the event for the click is blocked and not
executed.

Using this new mode fixes that problem, but we need to handle
‘alt+f4’ on our own.
2023-12-30 23:34:54 +01:00
stffabi
b37d0f1cf4 [windows] Improved focus handling
Make sure the webview is focused on initial show if the window
is focused and make behaviour consistent with macOS
2023-12-30 23:34:53 +01:00
Lea Anthony
6262a4fac7
Update @wailsio/runtime version to 3.0.0-alpha.10 2023-12-31 07:24:40 +11:00
Lea Anthony
c531c714d4
Update vanilla+js template and dependencies
The frontend interaction has been significantly updated, including improvements to the Greet function and the addition of an ongoing time display. Additionally, dependencies in package.json have been updated to their latest versions. Also, redundant print statement was removed from messageprocessor_call.go and changes were made to layout structure and styles in the main.go.tmpl and index.html files.
2023-12-30 21:11:38 +11:00
Lea Anthony
d423c1c366
Fix drag logic 2023-12-30 21:05:17 +11:00
Lea Anthony
5b51e0fad3
@wailsio/runtime alpha.9 - Fix call responses. 2023-12-30 15:49:23 +11:00
Lea Anthony
4151deb9f6
Update milestones 2023-12-30 13:49:27 +11:00
Lea Anthony
d8f9ea7a33
Add NSIS to doctor checks 2023-12-29 20:13:23 +11:00
Lea Anthony
46127c8d4d
Support Typescript in JS Runtime module 2023-12-29 18:12:01 +11:00
Lea Anthony
8a12a32d31
Vanilla template: Update to use runtime module 2023-12-29 12:50:25 +11:00
Lea Anthony
9f567fe2bc
Application: increase message buffer sizes, process all messages in goroutine, Add IsDebug to environment info. 2023-12-29 12:48:26 +11:00
Lea Anthony
7f8c1c8a68
Remove redundant IPC endpoint.
Don't auto-inject runtime.
2023-12-29 12:42:03 +11:00
Lea Anthony
4a910a7197
Update Bindings Generation
Better flow for improved CLI output
Fixed number of methods calculation
2023-12-29 12:39:11 +11:00
Lea Anthony
4c3cbc3535
Update Wails runtime and increase version
The Wails runtime has been updated to correctly handle debug checks and the version in the package.json has been bumped to 3.0.0-alpha.6. Fixed reference to global wails object in WML.
2023-12-29 11:15:40 +11:00
Lea Anthony
0974a3ad18
Use relative paths in go.mod for replace line. 2023-12-28 19:33:37 +11:00
Lea Anthony
b08126d745
Radical JS runtime overhaul. New @wailsio/runtime package 2023-12-28 19:18:26 +11:00
Lea Anthony
d1255d3a9d
Support TS bindings. Update tests. Tidy up. 2023-12-23 08:49:58 +11:00
Lea Anthony
cf7537df01
Update roadmap documentation 2023-12-22 20:38:03 +11:00
Lea Anthony
3e419de86b
Add permalink to doc headers 2023-12-22 20:34:11 +11:00
Lea Anthony
2bb25b12ff
Update bindings generator to generate bindings in packages and files.
Remove unused JavaScript files
Update tests.
Update v3 docs
2023-12-22 20:01:42 +11:00
Lea Anthony
cdf4bdd2ba
Support generating enums from imported package 2023-12-20 08:06:35 +11:00
ALMAS
e0b8da86ed
[v3] export SetIcon method (#3147)
* export `SetIcon` method

* add change log
2023-12-19 23:43:28 +11:00
Lea Anthony
472288b2e3
Support generating bindings by name 2023-12-19 21:28:23 +11:00
ALMAS
51afac4f22
[v3/windows] Fix dpi scaling on start up (#3145)
* [v3/windows] Fix dpi scaling on start up

* add change log
2023-12-19 19:31:38 +11:00
Marcus Crane
daed4141f5
(v3/linux): Add Taskfile template entry for run:linux (#3146)
* Add Taskfile entry for run:linux, used by task dev

Signed-off-by: Marcus Crane <marcus@utf9k.net>

* Add updated CHANGELOG entry

Signed-off-by: Marcus Crane <marcus@utf9k.net>

* Correct CHANGELOG entry

---------

Signed-off-by: Marcus Crane <marcus@utf9k.net>
2023-12-19 19:29:46 +11:00
Lea Anthony
157c5e91fc
Move v3 updates into v3 changelog 2023-12-19 05:58:31 +11:00
Lea Anthony
e51e184cca
Merge branch 'master' into v3-alpha
# Conflicts:
#	v2/internal/app/app_devtools_not.go
#	website/src/pages/changelog.mdx
2023-12-19 05:55:08 +11:00
Lea Anthony
2b3c96ab3d
Fix hex keys5 (#3140)
* [v3 darwin] change hex values for arrow keys pulled from "Key Codes" app

* Update changelog

---------

Co-authored-by: Josh <josh@nerdy.co.nz>
2023-12-18 08:54:55 +11:00
Lea Anthony
371e57588f
Update bindings example 2023-12-16 20:57:00 +11:00
Lea Anthony
182f43004a
Improved bindings generation: support JS Models. 2023-12-16 14:02:19 +11:00
Lea Anthony
23c2660fb0
Fix relative links 2023-12-13 22:46:33 +11:00
Lea Anthony
ea409a2cb2
Improve documentation 2023-12-13 22:40:35 +11:00
Lea Anthony
984db8620a
Support enums in interface generation 2023-12-12 22:25:51 +11:00
Lea Anthony
995d9fdc9b
Update alpha 3 docs 2023-12-12 22:10:22 +11:00
Lea Anthony
4b04c10f14
Support bindings, model & enum generation 2023-12-12 21:51:40 +11:00
Light
43c4966873
Update Alpha3 bindings status (#3116)
* Update alpha3-models.csv

* Update alpha3-bindings.csv
2023-12-11 21:34:34 +11:00
Lea Anthony
85fc3a3af6
Update csv status 2023-12-11 19:56:19 +11:00
Lea Anthony
85d68cec55
Update csv status 2023-12-11 18:33:27 +11:00
Lea Anthony
89b5f0af20
v3.0.0-alpha.3 2023-12-11 08:43:32 +11:00
Light
659f3fa8e2
Update WSL alpha2 support (#3097)
* Update WSL alpha2 support

* fixed missing colons

* change dev to partial support and fix more typos
2023-12-05 21:21:20 +11:00
Lea Anthony
8242834fbd
[windows] improvements to dev 2023-11-27 21:24:58 +11:00
Lea Anthony
814e1ec059
[windows] initial wails dev support 2023-11-27 20:38:42 +11:00
Lea Anthony
12efb8b981
Update default taskfile. WIP linux packaging 2023-11-20 20:41:17 +11:00
Lea Anthony
b9558cc3cb
Update default taskfile. WIP linux packaging 2023-11-18 13:08:59 +11:00
Lea Anthony
022baad9e5
Update default taskfile. Update copyright symbol 2023-11-17 21:53:45 +11:00
Lea Anthony
9629b1414e Improve default taskfile 2023-11-16 22:59:04 +11:00
Lea Anthony
ea44cf850c Improve default taskfile 2023-11-16 22:53:52 +11:00
Lea Anthony
61c8c9eac0 Improve default taskfile 2023-11-16 22:48:08 +11:00
Lea Anthony
c89f59dc7c
Update nav 2023-11-16 09:00:39 +11:00
Lea Anthony
1fed110afd
Update bug reporting docs 2023-11-16 08:52:00 +11:00
Lea Anthony
4ea6a2d120
Support wails package on Windows 2023-11-15 20:45:38 +11:00
Travis McLane
f84bb6a287 chore: update alpha2 status linux 2023-11-13 09:18:27 -06:00
Lea Anthony
869a6f761a [docs] Update alpha2 status 2023-11-12 21:47:00 +11:00
Lea Anthony
2d3029482d [docs] Update alpha2 status 2023-11-12 21:45:57 +11:00
Lea Anthony
250e9f91ba [darwin] Wrappers for init, build, dev, package. Refactored default Taskfile. 2023-11-12 21:41:10 +11:00
Lea Anthony
df49f49c60
v3.0.0-alpha.2 2023-11-12 21:37:09 +11:00
Lea Anthony
3e0ff5edbd [darwin] Update docs 2023-11-12 20:16:19 +11:00
Lea Anthony
1142e81348 [darwin] fix CATransaction errors. Update docs. 2023-11-12 17:06:11 +11:00
Lea Anthony
ae38d1e020
Fix taskfile in templates. Sanitize the project name 2023-11-12 16:36:01 +11:00
Lea Anthony
eefeadc018 [darwin] fix hiding in window example 2023-11-12 16:13:09 +11:00
Lea Anthony
4593b52863
Include javascriptcore lib for build 2023-11-12 15:59:56 +11:00
Lea Anthony
7333ca6c61
Change order of steps for build 2023-11-12 15:51:17 +11:00
Lea Anthony
5b5a4ba4cc
Fix windows build 2023-11-12 14:23:13 +11:00
Lea Anthony
9af14015e4 [chore] add javascriptcoregtk dep in actions 2023-11-12 14:07:11 +11:00
Lea Anthony
ef80562a0f [chore] fix go.mod 2023-11-12 14:01:48 +11:00
Lea Anthony
0b48c3456b
[linux] Add webkit version detection + capabilities 2023-11-12 08:21:31 +11:00
Lea Anthony
1f16655769
[linux] Allow devtools by default 2023-11-11 19:05:03 +11:00
Travis McLane
b8d780ba4a
Feature/template consolidation (#3046)
* remove 'test' project

* dynamic template list generation

- uses a single fs.Embed to contain all templates
- walks and rebuilds the list of TemplateData using the cached data
- pulls the `description` out of the required `template.json` file in
  the template directory

* [v3] template handling update

- move "common" template files to a _common directory
- update generator to render from _common/* first
- render selected template last to overwrite anything provided by
  _common if needed
- remove duplicate files from all templates that do not change

* cleanup template project directory after test

* add linux to _common/Taskfile.yaml

* noop: whitespace cleanup _common/Taskfile.yaml
2023-11-11 12:26:28 +11:00
Travis McLane
965460edb7 [v3 linux] update status matrix 2023-11-09 21:12:56 -06:00
Travis McLane
53ea6511fc [v3 linux] correct bug in getScreenByIndex 2023-11-09 21:11:35 -06:00
Light
eae73dfa18
Update roadmap.md (#3044)
Fix weird characters on roadmap page, seems funky to me.
2023-11-09 21:55:19 +11:00
Travis McLane
27c4c5e6f6 [v3 linux] bail early if bad dbus message
Need at least two elements to decide what theme it is and if it is
a theme message at all.

Addresses #3040
2023-11-08 22:41:35 -06:00
Travis McLane
6f197f67f1 [linux] remove deprecated version of webkit callback handling 2023-11-08 22:31:05 -06:00
Light
412c3a5ed1
update windows drag and drop to working (#3039)
* update windows drag and drop to working

* add pr to changelog
2023-11-08 22:36:47 +11:00
Travis McLane
385b1dbfd4 [linux] implement 'script-message-received' handling
- use unsafe.Pointers for 'signal_connect'
- add handler for 'script-message-received::external'
  need to update this to handle older versions of webkit2gtk better
  currently removed the ifdef guards (since they don't work in Go code
  directly) - need to reimplement using build tags if required.
2023-11-06 23:29:03 -06:00
Travis McLane
0a4c596ecb [v3 darwin] typecast as ApplicationEventType 2023-11-06 12:20:10 -06:00
Travis McLane
d2e0e0ed81 [v3 windows] avoid casting ApplicationEvent as int 2023-11-06 12:14:18 -06:00
Travis McLane
f787cf4bc2 [v3 linux] show dev tools if OpenInspectorAtStartup=true 2023-11-06 12:04:20 -06:00
Travis McLane
ca21a3b79d [v3 linux] initial pass at event generation 2023-11-06 10:49:14 -06:00
Travis McLane
a773da2651 [v3 linux] use dbus for monitoring theme changes 2023-11-06 10:49:14 -06:00
Travis McLane
1a90b45f18 add linux status for examples 2023-11-06 10:49:14 -06:00
Travis McLane
9f6cd35155 [v3 linux] stop key-press event propagation 2023-11-06 10:49:14 -06:00
atterpac
f122db2e7b Linux Keybinds
- Adds getKeyboardState into linux_cgo to parse keypress event and transfer it into
  an accelerator for the handleKeyEvent using GDK keycodes
2023-11-06 10:49:11 -06:00
Travis McLane
d65f1b1647 [v3 docs] update status.md 2023-11-06 10:48:42 -06:00
Travis McLane
0fc535f2f1 [v3 linux] contextMenus 2023-11-06 10:41:14 -06:00
Travis McLane
e420900e55 [v3 examples] go.* update 2023-11-06 10:41:14 -06:00
Travis McLane
0cd64d1fbc [v3 linux] noop: remove commented code 2023-11-06 10:41:14 -06:00
Travis McLane
46a0030387 [v3] noop: gofmt changes 2023-11-06 10:41:14 -06:00
Travis McLane
495da9b292 [v3 linux] implement logPlatformInfo 2023-11-06 10:41:14 -06:00
Travis McLane
efb300c9f0 [v3] update go.sum 2023-11-06 10:41:14 -06:00
Travis McLane
7f1706fc74 [v3 examples/build] Taskfile update
- add Linux production build
- remove OS X env from basic build
2023-11-06 10:41:14 -06:00
Travis McLane
8dbbdc4bf2 [v3 linux] sanitize appId more thoroughly 2023-11-06 10:41:14 -06:00
Light
7c15f9098c
Add extra check for GPU device info for null pointer (#3032)
* add check for GPU device info

* add changelog note

* change return to continue

* Small refactor

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2023-11-06 20:51:03 +11:00
Lea Anthony
36a3e90b1d
Small doc fixes 2023-11-05 19:34:22 +11:00
Lea Anthony
3882201434
Add mkdocs-static-i18n dep 2023-11-05 18:13:20 +11:00
Lea Anthony
857bf40072
Update parser and bindings generation
Update tests
2023-11-05 18:06:11 +11:00
Lea Anthony
075eb1fa3f
Update parser and bindings generation
Update tests
2023-11-05 18:02:36 +11:00
Lea Anthony
dbb7c6e7d0
Update docs workflow 2023-11-05 15:05:44 +11:00
Lea Anthony
947d429688
Build status table from CSV 2023-11-05 14:42:32 +11:00
Lea Anthony
f49d42678b
Add todo project list 2023-11-03 15:41:17 +11:00
Lea Anthony
f28c9515ad
Update installation instructions 2023-11-02 20:53:59 +11:00
Travis McLane
c6ecbd56e5 [v3 examples/bindings] correct binding output + example
- disable output of `import <model> from models` line
- update README to generate bindings in usable location for HTML
- update HTML to reference bindings correctly
- update javascript to call and process the bound Greet function
2023-10-31 17:24:00 -05:00
Travis McLane
144567410d [v3 linux] disable noisy onKeyPressEvent handler 2023-10-31 17:22:36 -05:00
Travis McLane
1b850662ed [v3 example/bindings] enable DevTools 2023-10-31 17:15:16 -05:00
Travis McLane
c7c4cacc29 [v3 linux] auto-toggle devtools (if enabled) 2023-10-31 17:15:16 -05:00
Travis McLane
7e63355353 [v3 linux] correct type of window 2023-10-31 17:08:12 -05:00
Travis McLane
01652c7940 [v3 linux] update devtools behavior to match win/mac 2023-10-31 14:02:36 -05:00
Travis McLane
b379e3b0eb Revert "Merge branch 'linux-keycodes' into v3-alpha"
This reverts commit a2fde7f2c3, reversing
changes made to 985c5bf8e2.
2023-10-31 11:09:11 -05:00
Travis McLane
a2fde7f2c3 Merge branch 'linux-keycodes' into v3-alpha 2023-10-30 10:31:11 -05:00
Atterpac
2beb452207 Update changelog.md 2023-10-30 10:28:24 -05:00
Michael Capretta
73384a562b Add Linux Keycodes that match existing strings for keybinds 2023-10-30 10:27:21 -05:00
Lea Anthony
985c5bf8e2 [darwin] Support Ignore mouse events
[darwin] Support applicationSupportsSecureRestorableState
Update video example
2023-10-29 20:29:45 +11:00
Lea Anthony
daec8a9a64
Update installation instructions 2023-10-29 15:40:06 +11:00
Lea Anthony
f88a7a6f99
Update installation instructions 2023-10-29 15:34:12 +11:00
Lea Anthony
dc16d145c2
Update installation instructions 2023-10-29 15:31:26 +11:00
Lea Anthony
8432ddc2a8
Update installation instructions 2023-10-29 15:25:34 +11:00
Lea Anthony
d072393149
Add another CNAME file (thanks ghpages :/) 2023-10-29 10:03:33 +11:00
Lea Anthony
a8e95bf7f1
Add another CNAME file (thanks ghpages :/) 2023-10-29 09:57:38 +11:00
Lea Anthony
1735bdc9a2
Update roadmap link 2023-10-29 09:49:30 +11:00
Lea Anthony
f00685d592
Add CNAME 2023-10-29 09:48:37 +11:00
Lea Anthony
ee194f3e46
Update docs 2023-10-29 09:39:47 +11:00
Lea Anthony
82a9c5b1dd
Update docs 2023-10-28 17:26:29 +11:00
Lea Anthony
fdd8875986
Update docs 2023-10-28 15:54:42 +11:00
Lea Anthony
3b50e0cbc5
Update docs 2023-10-28 15:44:36 +11:00
Lea Anthony
fb7fda2256
Upgrade mkdocs 2023-10-28 12:22:21 +11:00
Lea Anthony
d9beb6126e
Add CNAME 2023-10-28 11:54:03 +11:00
Travis McLane
a81581129a [v3 linux] menu bitmap update handling 2023-10-27 16:45:10 -05:00
Travis McLane
e95a91861a [v3 linux] noop: cleanup 2023-10-27 16:45:10 -05:00
Travis McLane
fa5948f40e use windowId to avoid miscompilation 2023-10-27 15:46:25 -05:00
Travis McLane
ad4c8aacfb [v3 linux] keypress handling stubout 2023-10-27 14:41:22 -05:00
Travis McLane
afbc09f1e7 [v3 linux] menuItem.setBitmap support 2023-10-26 16:56:06 -05:00
Travis McLane
1a1e5b743a [v3 linux] dbus menu icon support 2023-10-26 16:56:06 -05:00
Lea Anthony
24853a7e3b
Add events README.md 2023-10-25 20:17:41 +11:00
Lea Anthony
1ce83913bd
Fix permissions build issues 2023-10-25 20:06:53 +11:00
Lea Anthony
1650e26da7
[windows] dnd fixes 2023-10-25 20:04:00 +11:00
Travis McLane
bc01fd8ea3 [v3 windows] hide go-webview2 from non-windows 2023-10-24 15:40:58 -05:00
Lea Anthony
3422c40e19
[windows] ignore mouse events 2023-10-23 20:58:55 +11:00
Lea Anthony
e661052c89
[windows] support permissions 2023-10-23 20:50:25 +11:00
Lea Anthony
ff08a5ca2b
[windows] html fullscreen support 2023-10-23 20:49:21 +11:00
5aaee9
f8250fb0d8
darwin: add event ApplicationShouldHandleReopen (#2991)
* darwin: add ApplicationShouldHandleReopen

* docs: update changelog with mr id

* events: update id

* feat: always return true

* Merge v3-alpha and regenerate events

* darwin: allow pass nsdirectory to processApplicationEvent

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2023-10-22 21:12:12 +11:00
Lea Anthony
d1c3f8af7a [darwin] Fix menu icon 2023-10-22 14:34:04 +11:00
Lea Anthony
36b4b3695b
Initial menu item bitmap support 2023-10-22 09:32:04 +11:00
Atterpac
fb17ec8064
Allow Wails3 Doctor recognize globally installed apt packages (#2972)
* Fixes doctor bug for apt package manager

* Actually fix it

* Pad the text " all" 

Adding a space to ensure checking against "all" doesn't always catch "install" or "not-installed" etc

* Update changelog.md

Doctor Apt Verify

---------

Co-authored-by: atterpac <michael@atterpac.dev>
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2023-10-21 16:32:50 +11:00
Lea Anthony
51f52656cc
Update go-webview2 version 2023-10-21 12:02:19 +11:00
Travis McLane
18746c7819
V3 alpha linux dbus (#2996)
* [v3 linux/systray] dbus generation

* [v3 linux] systemtray dbus implementation

* [v3] add 'id' for MenuSeparator

This is needed in order to have a unique value for all
menuItem(s) such that the Linux implementation doesn't have to
generate new identifiers.
Allowing the reuse keeps a 1-1 mapping in place without any extra effort.

* [v3 example/systray] add radio group to example

* [v3 linux] stub out ExportStatusNotifierItem callbacks

Can only seem to get the `SecondaryActivate` to fire when doing a
3-finger click!  I was expecting a right-click interaction to trigger it.
2023-10-21 11:39:46 +11:00
Lea Anthony
8463c01123
[windows] Drag-n-drop support 2023-10-21 11:21:10 +11:00
Lea Anthony
8e0671306a
Mac examples + readme updated 2023-10-17 20:25:36 +11:00
Lea Anthony
131a6da554
Fix resize on windows 2023-10-16 19:29:42 +11:00
Lea Anthony
59273fcdab
Add basic hardware detection to wails doctor 2023-10-15 20:02:29 +11:00
Lea Anthony
7795a2a46f
Fix modifier processing on windows.
Move info logs to debug.
2023-10-15 13:53:31 +11:00
Lea Anthony
2269f64b0a
Fix build output name 2023-10-15 12:52:13 +11:00
Lea Anthony
439da97573
Fix go version 2023-10-15 12:48:11 +11:00
Lea Anthony
2b478a4608
More workflow improvements 2023-10-15 12:42:49 +11:00
Lea Anthony
3b95725f09
Try caching in workflow 2023-10-15 10:48:42 +11:00
Lea Anthony
3a23ad1382
Fix example building. Update workflow 2023-10-15 10:43:39 +11:00
Lea Anthony
61a7f1fba5
Reformat changelog 2023-10-15 09:33:48 +11:00
5aaee9
a8641672cd
[v3] fix deadlock when quit (#2982)
* fix: dead lock when quit

* docs: update changelog
2023-10-14 20:34:00 +11:00
Lea Anthony
320fc20461
Add example build test windows fix 2023-10-12 21:18:42 +11:00
Lea Anthony
69f05c39ec
Add example build test 2023-10-12 21:15:41 +11:00
Lea Anthony
e55ffedc35
Add example build test 2023-10-12 21:13:53 +11:00
Lea Anthony
0577fefd75
Remove Browser plugin. Update plugin example 2023-10-12 08:41:18 +11:00
Lea Anthony
02713670c9
Custom icon shows app icon 2023-10-11 21:29:40 +11:00
Lea Anthony
e6de878395
Move server plugin to experimental dir 2023-10-11 20:25:56 +11:00
Lea Anthony
4c75b288bb
Add BrowserOpenURL and BrowserOpenFile to App.
Better WML assets for demo
Fix dialog responses.
Add `wml-openurl`
Rename: data-wml -> wml
Fix Alpha Feedback URL
2023-10-11 20:23:59 +11:00
Travis McLane
263e1b527a [v3 linux] lower signal memory usage
- drop the gtkSignalHandlers map entirely (wasn't used)
- use 'uint' for mapping signal IDs to MenuItem
- store and retrieve the menuitem identifier to/from the menu item widget
2023-10-10 12:38:10 -05:00
Lea Anthony
3d88bf8795
Fix context menu issues.
Fix WindowID for requests on windows.
Add `Windows.ApplicationStarted` event
2023-10-10 21:48:47 +11:00
Lea Anthony
740b2b0979
Fix windows icon for about box.
Add NewRGBA and NewRGB methods.
Added README.md to all examples.
Add roadmap.md to docs
2023-10-09 20:56:19 +11:00
Lea Anthony
2b843fc12e
Update contextmenus/dev example 2023-10-09 17:38:46 +11:00
Lea Anthony
473cf1cae3
Update window example 2023-10-09 17:38:22 +11:00
Lea Anthony
65d4266400
Update systray example 2023-10-09 17:38:11 +11:00
Lea Anthony
8d5b86fff7
Update dialogs example 2023-10-09 17:38:03 +11:00
Lea Anthony
92843c8237
Update clipboard example 2023-10-09 17:37:50 +11:00
Lea Anthony
13b588b555
Update build example 2023-10-09 17:37:40 +11:00
Lea Anthony
839a9ff498
Update bindings example 2023-10-09 17:37:21 +11:00
Lea Anthony
ef8c16d773
Fix bindings help text 2023-10-09 17:36:58 +11:00
Lea Anthony
602fafafea
[windows] Better corner detection for frameless windows 2023-10-09 17:36:32 +11:00
Lea Anthony
83ed7fd2df
[windows] Fix production logger. Add alpha assets 2023-10-09 17:36:06 +11:00
Lea Anthony
f07e4093be
[windows] Don't show menu for frameless window 2023-10-09 17:35:28 +11:00
Lea Anthony
bf13afd895
[windows] Fix dialog icon 2023-10-09 17:34:56 +11:00
Lea Anthony
9ffc06d42e
Update Task to v3.31.0. Update deps. 2023-10-09 10:39:09 +11:00
Lea Anthony
ebe91ba11d [darwin] Disable listener caching. Run execJS on main thread. 2023-10-07 20:08:22 +11:00
Lea Anthony
48aef46f57 [darwin] Quick event fix 2023-10-07 12:28:50 +11:00
Lea Anthony
c77c823c3c Revert "[linux] Implement events"
This reverts commit 8ddd29d285.
2023-10-07 12:21:49 +11:00
Travis McLane
ccccea1e50 [v3] go mod tidy 2023-10-06 15:03:36 -05:00
Travis McLane
a6163849c6 [v3 linux] match windows transparency logic 2023-10-06 14:38:38 -05:00
Travis McLane
130aab3598 [v3 linux] systray stubout
slim down the printouts and fix compilation
2023-10-05 17:25:45 -05:00
Travis McLane
78b85ce0cc [v3 linux] systray not implemented 2023-10-05 14:04:13 -05:00
Travis McLane
dbcf65b2d6 Revert "Merge branch 'v3-alpha-linux-systray' into v3-alpha"
This reverts commit 92b26488da, reversing
changes made to 1c48d567e1.
2023-10-05 08:34:12 -05:00
Lea Anthony
d8e27aa5f9
Fix svelte template 2023-10-05 21:12:01 +11:00
Lea Anthony
ce6d587771
Fix multiple window weirdness. Update deps 2023-10-05 20:54:12 +11:00
Lea Anthony
81d7bc2d68
Fix vue templates 2023-10-05 20:13:50 +11:00
Lea Anthony
a49350f300
[windows] Remove unused code. 2023-10-05 20:12:28 +11:00
Lea Anthony
9ac6359e56
Merge remote-tracking branch 'origin/v3-alpha' into v3-alpha 2023-10-05 19:19:26 +11:00
Lea Anthony
5958d9c646
[windows] Serve assets async 2023-10-05 19:18:32 +11:00
Lea Anthony
9b88c8afda
Merge branch 'master' into v3-alpha
# Conflicts:
#	v2/internal/app/app_devtools.go
#	v2/internal/app/app_devtools_not.go
2023-10-04 20:23:23 +11:00
Lea Anthony
1b71fef89f
Update v3 website frontpage 2023-10-04 20:22:20 +11:00
Lea Anthony
8ddd29d285
[linux] Implement events 2023-10-03 08:37:11 +11:00
Lea Anthony
dc8cbcf410
[darwin] Refactor events into mac specific files 2023-10-03 08:33:58 +11:00
Travis McLane
757a4383e6 [v3] send dialog results over channels 2023-10-02 11:07:12 -05:00
Travis McLane
7c98ee329a [v3] move linux clipboard logic to linux_cgo 2023-10-02 11:07:12 -05:00
Lea Anthony
9d615463f4
[linux] support clipboard 2023-10-02 20:47:04 +11:00
Lea Anthony
aea0db5919
[linux] Fix packagemap 2023-09-30 21:17:30 +10:00
Lea Anthony
fc593d90cf
Export Package map 2023-09-30 21:09:35 +10:00
Lea Anthony
2524f7b5a0
Remove old KitchenSink example 2023-09-30 21:09:10 +10:00
Lea Anthony
5a0cb1baef
Fix svelte-ts template 2023-09-30 21:04:00 +10:00
Lea Anthony
255690eee0 [darwin] Add webview preferences 2023-09-30 15:23:56 +10:00
Lea Anthony
86b6e10620
[darwin]AlwaysOnTop: NSStatusWindowLevel -> NSFloatingWindowLevel 2023-09-30 14:27:48 +10:00
Travis McLane
b757292211 [v3 darwin] use NativeWindowHandle 2023-09-29 12:13:51 -05:00
Travis McLane
af54419a0b [v3] use concrete *WebviewWindow 2023-09-29 11:40:43 -05:00
Travis McLane
7b84b1c79c [v3] Window fallout 2023-09-28 17:17:11 -05:00
Travis McLane
d047c22526 [v3] change window back to *WebviewWindow 2023-09-28 17:10:17 -05:00
Travis McLane
6feab70a72 [v3 workflow] add libayatana dependency 2023-09-28 17:00:33 -05:00
Travis McLane
5e1b5ca4e8 [v3] typo - missing comma 2023-09-28 16:55:52 -05:00
Travis McLane
1726cdb0ad [v3] add ubuntu-latest to workflow 2023-09-28 16:48:23 -05:00
Travis McLane
2b2828ea41 [v3] goformat fixes 2023-09-28 16:47:04 -05:00
Travis McLane
29859ceedf [v3] correct return types for CurrentWindow
this shouldn't have been changed to Window
2023-09-28 16:46:19 -05:00
Travis McLane
8e2527ad35 [v3 linux] implement single_instance plugin 2023-09-28 15:53:28 -05:00
Travis McLane
92b26488da Merge branch 'v3-alpha-linux-systray' into v3-alpha 2023-09-28 14:52:12 -05:00
Travis McLane
efa67cb01c [v3 linux] systray implementation
Linux requires a `gtk_menu_bar` for a gtk_window to display a menu.
For the `systray` a `gtk_menu` is needed instead.
This change creates the correct type of `impl` for the `Menu`
depending on how it is being used.
2023-09-28 14:50:38 -05:00
Travis McLane
71fc222059 [v3 linux] systray: cleanup + add basic menu 2023-09-28 13:31:09 -05:00
Travis McLane
fa6adad4ab [v3 linux] wip: systray implementation 2023-09-28 13:31:09 -05:00
Travis McLane
1c48d567e1 [v3] NewWebviewWindow* return *WebviewWindow 2023-09-28 13:30:47 -05:00
Travis McLane
2c3216ba36 Merge branch 'v3-alpha-plugin-server' into v3-alpha 2023-09-28 12:15:11 -05:00
Travis McLane
74e2a7e225 [v3 examples] add server plugin to 'plugins' example 2023-09-28 12:14:54 -05:00
Travis McLane
ff2c92451d [v3] go.* update 2023-09-28 12:14:54 -05:00
Travis McLane
2a83402d4a [v3 example/server] initial implementation 2023-09-28 12:14:54 -05:00
Travis McLane
2449b473c0 [v3 plugin/server] initial implementation 2023-09-28 12:14:54 -05:00
Travis McLane
60c44c44ff [v3 runtime] updated javascript 2023-09-28 12:14:54 -05:00
Travis McLane
7e1d685167 [v3 js] add and send x-wails-client-id
The constant x-wails-client-id is generated once on startup and then
sent with each request to the Wails host.  It is used primarily by
the server plugin to distinguish different remote sessions.
2023-09-28 12:14:54 -05:00
Travis McLane
a9d4a393ba [v3 linux] add non-functional activeInstance implementation 2023-09-28 12:10:17 -05:00
Travis McLane
a0953fea93 [v3] Merge feature Window interface 2023-09-28 11:52:23 -05:00
Travis McLane
02d76835c9 [v3 linux] noop: remove spurious print 2023-09-28 11:48:46 -05:00
Travis McLane
dfe03f1347 [v3] WailsEvent expose ToJSON 2023-09-28 11:39:44 -05:00
Travis McLane
c87489adf3 [v3] implement Window interface 2023-09-28 11:39:39 -05:00
Travis McLane
a428a730d5 [v3] define Window interface
Define an interface that all Window(s) need to define.
Currently copies the WebviewWindow public api
2023-09-28 11:37:48 -05:00
Travis McLane
7f7c642339 [v3 linux] systray.openMenu 2023-09-28 10:02:44 -05:00
Travis McLane
03b79e9a67 [v3 linux] noop: handleKeyEvent skeleton 2023-09-27 16:31:59 -05:00
Travis McLane
56b0fcebba [v3 linux] use ifdef for APPLICATION_DEFAULT_FLAGS 2023-09-27 09:53:53 -05:00
Lea Anthony
d9a5130311
Use prettier on docs source 2023-09-25 20:56:29 +10:00
Lea Anthony
4663a45e59
Add raw API docs 2023-09-25 20:50:53 +10:00
Lea Anthony
fb820bcdad
Add some more API docs. Small refactors. 2023-09-24 17:23:24 +10:00
Lea Anthony
31c167b412
Add some more API docs. 2023-09-24 17:03:42 +10:00
Lea Anthony
7cdab16ba9
Add API docs. Do small refactors 2023-09-24 08:57:40 +10:00
Lea Anthony
05262134ca [darwin] Add systray.OpenMenu 2023-09-21 19:24:30 +10:00
Lea Anthony
fe48b9d03d
[windows] Add systray.OpenMenu 2023-09-21 19:14:44 +10:00
Lea Anthony
013ec1d726
Fix compiler error. Add test. 2023-09-21 06:33:08 +10:00
Travis McLane
27b4a984d5 [v3] process pointer and non-pointer receiver functions 2023-09-20 15:09:15 -05:00
Travis McLane
d6b6111395 noop: import sort 2023-09-20 15:09:15 -05:00
Lea Anthony
af8ee6703e [darwin] Support keybindings 2023-09-20 21:34:50 +10:00
Lea Anthony
793191a479
Initial key binding support 2023-09-17 20:48:30 +10:00
Lea Anthony
efc86c1056
Delete wails binary 2023-09-16 15:00:20 +10:00
Lea Anthony
39d44d2644
Merge latest website changes 2023-09-16 14:58:24 +10:00
Lea Anthony
9584a2ce5a
Merge latest v2 changes 2023-09-16 14:56:23 +10:00
Lea Anthony
95b8ceb87a
Merge remote-tracking branch 'origin/master' into v3-alpha 2023-09-16 14:44:57 +10:00
ALMAS
37b99b9cb8
Update webview_window.go (#2912) 2023-09-16 07:20:49 +10:00
Lea Anthony
86354e9fc0 Support IsDarkMode in application event context. Fix bug with event mapping. 2023-09-15 20:10:09 +10:00
Lea Anthony
b49f135e31
Add context to application/common events 2023-09-15 17:12:35 +10:00
Travis McLane
fff266f50d [v3 linux] remove unused dialog callbacks
If it turns out these are needed in the future
we can add them back in then.
2023-09-13 13:12:22 -05:00
Travis McLane
7cfea7c22c [v3 linux] file/directory dialogs 2023-09-13 13:12:22 -05:00
Travis McLane
6141e5a8ce [linux v3] purego: updates
- file/directory chooser dialog logic
- add name + css so that menu isn't transparent
2023-09-13 13:12:22 -05:00
Lea Anthony
ed58949d24
try logging in goroutine 2023-09-13 16:47:14 +10:00
Lea Anthony
c1d85bd3d9
Add generate constants tool 2023-09-13 16:45:19 +10:00
Lea Anthony
8d3324465e
Revert flags change 2023-09-13 16:11:23 +10:00
Lea Anthony
8c72746edb
Update log plugin to have log levels. 2023-09-13 09:45:26 +10:00
Lea Anthony
ea3509d2e7
Add LogLevel application option. Update log plugin to have log levels. 2023-09-13 09:44:37 +10:00
Lea Anthony
bb3a0cc54f
Add WebviewWindow.IsFocused() 2023-09-13 08:57:20 +10:00
Travis McLane
d808654d99 [v3 linux] update purego replace 2023-09-11 17:27:21 -05:00
Travis McLane
a6cfdbb403 [v3 linux] const -> var 2023-09-11 17:26:59 -05:00
Travis McLane
2f7c6834d0 [v3 linux] use invokeSync 2023-09-11 17:12:57 -05:00
Travis McLane
ebdd57a7c4 remove cmd/wails/wails binary 2023-09-11 17:12:57 -05:00
Lea Anthony
4ff6d74054
Remove plain template 2023-09-09 20:08:26 +10:00
Lea Anthony
0d8b4aafd5
Better vanilla taskfile. Better asset generation at init. 2023-09-09 17:31:48 +10:00
Lea Anthony
0cca7e9189
Fix syso tests. Add precommit task 2023-09-09 16:27:51 +10:00
Lea Anthony
a5812578c5
Add generate build-assets. Update Taskfile for vanilla template 2023-09-09 10:25:56 +10:00
Lea Anthony
350b411afe
Update what's new section 2023-09-08 20:18:50 +10:00
Lea Anthony
9ca86c6093
Fix template versions 2023-09-08 18:51:39 +10:00
Lea Anthony
01729ae22a
Add what's new section 2023-09-08 18:45:42 +10:00
Lea Anthony
9196dc2216
Remove ci flag 2023-09-08 14:49:50 +10:00
Lea Anthony
b925335bbb
Fix tests 2023-09-08 14:37:07 +10:00
Lea Anthony
965f939967
Fix parser/generator tests 2023-09-08 12:03:55 +10:00
Lea Anthony
00feccbb77
Add MACOSX_DEPLOYMENT_TARGET to taskfiles 2023-09-08 11:23:38 +10:00
Lea Anthony
b6fc66ba0d
Improve workflow 2023-09-08 11:09:32 +10:00
Lea Anthony
c40debc0e9
Disable linux tests 2023-09-08 11:04:59 +10:00
Lea Anthony
3b31d70865
Update doc dependencies 2023-09-08 11:00:15 +10:00
Lea Anthony
afa8b62de7
Update doc dependencies 2023-09-08 10:57:47 +10:00
Lea Anthony
70fd15de2d
fix workflow 2023-09-08 10:42:13 +10:00
Lea Anthony
c54d330f89
fix workflow 2023-09-08 10:39:29 +10:00
Lea Anthony
4028560d12
fix workflow 2023-09-08 10:37:45 +10:00
Lea Anthony
3c28c28623
fix workflow 2023-09-08 10:36:48 +10:00
Lea Anthony
a958fa06e7
Update docs 2023-09-08 10:31:16 +10:00
Lea Anthony
4d39e9e15a
Update v3-docs.yml 2023-09-08 10:27:32 +10:00
Lea Anthony
679ec49e64
add v3 docs workflow 2023-09-08 10:24:01 +10:00
Travis McLane
d98e1d3693 [v3 linux] Packagemap -> packagemap 2023-09-07 12:16:20 -05:00
Lea Anthony
be3b7d754e
add netlify config 2023-09-07 21:55:45 +10:00
Lea Anthony
ae524c4f84
add workflow for v3 alpha 2023-09-07 21:37:50 +10:00
Lea Anthony
d390cac8db
Fix EnableFraudulentWebsiteWarnings for mac 2023-09-07 21:33:11 +10:00
Lea Anthony
17e20ab029
[v3] Fix requirements.txt 2023-09-07 07:52:18 +10:00
Lea Anthony
34b9b9b508
Add status table to docs. 2023-09-06 20:59:45 +10:00
Lea Anthony
47fd06a445
More doc changes 2023-09-06 19:15:52 +10:00
Lea Anthony
b140ce546f Add CPU detection in mac 2023-09-05 23:14:18 +10:00
Lea Anthony
08ec2beb7c
Move menu to Windows window options. 2023-09-05 22:27:47 +10:00
Lea Anthony
5833f0f109
More docs. 2023-09-05 18:26:10 +10:00
Lea Anthony
eb2ad258ed
More docs. 2023-09-04 22:51:21 +10:00
ALMAS
708aef53e4
[v3] completing missing build tags (#2884)
* Update image.go

* Update popupmenu.go
2023-09-04 22:43:28 +10:00
Lea Anthony
e893c1c205
More docs. 2023-09-04 22:40:40 +10:00
Lea Anthony
3e74255127
Update docs. 2023-09-04 21:27:59 +10:00
Lea Anthony
b8d7eed607
Add awful CallByName method and update docs with warning. 2023-09-04 21:19:10 +10:00
Lea Anthony
8eb62fb483
Update bindings example 2023-09-04 21:01:00 +10:00
Lea Anthony
ee67bff9e3
Docs update 2023-09-04 20:50:32 +10:00
Lea Anthony
21e47dcccf
Fix version in debug build 2023-09-04 19:51:48 +10:00
Lea Anthony
38ddcf59f8
Support linux in doctor 2023-09-04 19:46:07 +10:00
Lea Anthony
4a62b6a5c7 Support Mac in wails doctor 2023-09-03 10:30:31 +10:00
Lea Anthony
6afbcb69f3
Improve doctor 2023-09-03 10:09:16 +10:00
Lea Anthony
4bb522d303
Add doctor. 2023-09-03 08:42:12 +10:00
Lea Anthony
f107173a73
Update README.md 2023-09-03 06:53:10 +10:00
Lea Anthony
eb5aff755f
Update docs 2023-09-02 15:12:35 +10:00
Lea Anthony
2384ae0819
Improve docs tooling 2023-09-02 09:10:35 +10:00
Lea Anthony
4a5663c1cb
Merge branch 'master' into v3-alpha 2023-09-02 08:38:48 +10:00
Travis McLane
9416e01042 [v3 linux] start_at_login initial implementation 2023-09-01 16:04:25 -05:00
Travis McLane
54fcacfed1 [v3 linux] correct transparency setting 2023-09-01 15:57:13 -05:00
Lea Anthony
69ac5caa4b
Fix production build 2023-09-01 22:06:43 +10:00
Lea Anthony
cecbc156d5
Update deps 2023-09-01 20:14:06 +10:00
Lea Anthony
8ca550cc9e
[v3] Add swipe gesture support 2023-08-30 20:57:12 +10:00
Lea Anthony
d44c8eba1c
[v3] Use system logger instead of println 2023-08-28 20:30:40 +10:00
Lea Anthony
6edd667bdf
[v3] Fix application runtime mappings 2023-08-28 20:29:25 +10:00
Vilsol
499ff50903
fix: use string formatting in gtk_message_dialog_new (#2865) 2023-08-28 19:34:24 +10:00
Lea Anthony
5e1f29eda3
[v3] Support //wails:methodID <uint32> directive in bound method comments. 2023-08-27 21:16:30 +10:00
Lea Anthony
e5571defb7
[v3] Support bound methodID aliases. Support []any for bindings generation. Use CallByID in bindings. 2023-08-27 20:39:35 +10:00
Lea Anthony
125d8a6f78
[v3] Update Task to v3.29.1. 2023-08-27 17:14:36 +10:00
Lea Anthony
21790dc3ee
[v3] Add CallByID method to runtime. 2023-08-27 16:59:18 +10:00
Lea Anthony
cdf48e0589
[v3] Fix bindings 2023-08-27 15:54:01 +10:00
Travis McLane
2f9f63771b [v3 examples] add README 2023-08-25 09:39:24 -05:00
Lea Anthony
93335b3843
[v3] Support ANSI label on Mac. Update example. 2023-08-25 06:53:08 +10:00
Travis McLane
f50c8f447e [v3 assetserver] cleanup logging
- remove type assertions
- update contentTypeSniffer to capture the status code
- move logic in ServeHTTP to serveHTTP
- wrap serveHTTP with ServeHTTP adding logging & duration calculation
2023-08-24 12:44:13 -05:00
Travis McLane
bd9f7deb98 [v3 linux] correct minimum zoom 2023-08-23 14:10:22 -05:00
Travis McLane
2171192934 [v3 linux] noop: remove println 2023-08-23 14:09:44 -05:00
Lea Anthony
3352ebef6e
[v3] Tidy up logging 2023-08-19 17:15:15 +10:00
Lea Anthony
2a51ddadfc
[v3] Tidy up plugin init 2023-08-19 17:09:38 +10:00
Lea Anthony
0745aea4d6
[v3] Move to integer call ids for bound methods. 2023-08-19 14:25:36 +10:00
Travis McLane
4804b34208
[v3 linux] api changes (#2830) 2023-08-19 06:12:34 +10:00
Lea Anthony
841289f1d1
[v3 windows] Support isDarkMode. Add common application event mapping 2023-08-18 19:50:57 +10:00
Lea Anthony
c367ef461e
[v3 windows] Support isDarkMode 2023-08-18 19:45:59 +10:00
Lea Anthony
ffed41553a [v3 mac] Add IsDarkMode to application and JS runtime. Add Common.ThemeChanged event 2023-08-18 17:36:14 +10:00
Lea Anthony
79deb37675
Fix return code in logging 2023-08-18 11:15:02 +10:00
Lea Anthony
77ca8fe9e6
Move webview2 options to application. Improve logging. 2023-08-18 11:06:25 +10:00
Lea Anthony
25e58edf28 [v3] Add dev example 2023-08-18 10:51:02 +10:00
Lea Anthony
0f2d19c56e Merge remote-tracking branch 'origin/v3-alpha' into v3-alpha
# Conflicts:
#	v3/internal/operatingsystem/os.go
#	v3/internal/operatingsystem/os_darwin.go
2023-08-18 10:36:01 +10:00
Lea Anthony
8bde3d7522 [v3 mac] Improved operating system detection 2023-08-18 10:34:32 +10:00
Lea Anthony
c169d26d95 [v3] Port operating system detection 2023-08-18 10:24:45 +10:00
Lea Anthony
946a4c56a0 [v3 mac] Better logging 2023-08-18 09:58:43 +10:00
Lea Anthony
23e87e0ad7
Add dev tasks to Taskfile template 2023-08-15 21:48:04 +10:00
Lea Anthony
7d678154c6
Example prod/debug options 2023-08-15 21:40:50 +10:00
Lea Anthony
0b9fec3f87
Add checkport tool for checking open ports 2023-08-15 21:40:01 +10:00
Lea Anthony
763c7708f4
Fix HMR. Better logging. 2023-08-15 20:19:02 +10:00
Lea Anthony
5f2c1f4534
Remove optional prod options - use build tags instead 2023-08-15 20:19:02 +10:00
Lea Anthony
3ac557ccb1
[v3] plugin.toml -> plugin.yaml 2023-08-15 06:39:55 +10:00
Lea Anthony
e6c691a376
Support external asset server 2023-08-14 20:49:09 +10:00
Lea Anthony
ee8eb001c2
Merge branch 'master' into v3-alpha
# Conflicts:
#	v2/internal/frontend/desktop/windows/go-webview2/webviewloader/env_create.go
2023-08-14 18:08:52 +10:00
Lea Anthony
db836b7a48
Move assetserver to internal 2023-08-14 08:31:55 +10:00
Lea Anthony
543b18dd54
Revert v3 changes in v2 asset server 2023-08-14 08:28:32 +10:00
Lea Anthony
ec0731d5d8
Use slog.Logged in assethandler_external.go. Refactor runtime handler. 2023-08-14 08:28:31 +10:00
Lea Anthony
cc5c7d1d29
Log git hash if using replaced module 2023-08-14 08:28:25 +10:00
Lea Anthony
e79c1b7ea3 Merge remote-tracking branch 'origin/v3-alpha' into v3-alpha 2023-08-13 20:43:07 +10:00
Lea Anthony
6cbead5bfe
Improved logging++ 2023-08-13 16:52:39 +10:00
Lea Anthony
429bb2bf17
Refactor application creation. Remove internal logger package. 2023-08-13 15:28:30 +10:00
Lea Anthony
c03c41cb21
Add version command 2023-08-13 15:13:01 +10:00
Lea Anthony
ee29faecbf
Log if native Go webview loader is used 2023-08-12 16:36:08 +10:00
Lea Anthony
d1d0105276
Remove jsonBindings option. Only add ipc in debug mode. 2023-08-12 14:57:01 +10:00
Lea Anthony
1059e36b52
Run go mod tidy on project creation. Use better method of relative module location. 2023-08-12 14:32:52 +10:00
Lea Anthony
15f602f867
Move v2 assetserver to v3 2023-08-12 14:16:53 +10:00
Lea Anthony
13be4a333f
Move to slog logger for application and log plugin 2023-08-10 22:04:13 +10:00
Lea Anthony
2553fa1f74
Update templates to use Go 1.21 2023-08-10 21:32:18 +10:00
Lea Anthony
f0f5011484
Remove log from runtime (there's a plugin for that) 2023-08-10 21:29:42 +10:00
Lea Anthony
5671f3527b
Add ProductionOverrides option so any option can be overridden in production builds 2023-08-10 20:42:25 +10:00
Lea Anthony
adb26fa99f
Add Hook doc 2023-08-10 19:57:12 +10:00
Lea Anthony
805429a7c6
Support remote templates 2023-08-09 21:53:10 +10:00
Lea Anthony
39af86e59d
Improve project creation.
Add `template.json` to templates.
Update dependencies.
2023-08-09 21:30:06 +10:00
Lea Anthony
ecf970d6fe [v3 mac] ANSI systray label [WIP] 2023-08-05 14:04:49 +10:00
Lea Anthony
c9ce17a4d5
[v3] Fix Assets options in templates 2023-07-21 08:24:38 +10:00
stffabi
a6e279f0d3 [v3 panicHandler] Let the default go panic handler handle the panic if there's no panicHandler set in options 2023-07-15 23:57:19 +02:00
stffabi
842bc3733e [v3 windows] Fix missing panic stacktraces during message loop 2023-07-15 23:56:26 +02:00
Lea Anthony
5e76a5e76a [v3 mac] Fix event callback signatures 2023-07-12 21:29:01 +10:00
Lea Anthony
52c3c49f25
[v3] Add window close hook example 2023-07-12 21:27:58 +10:00
Lea Anthony
705239ad7d
[v3] Use WindowEvent rather than WindowEventContext 2023-07-12 20:50:01 +10:00
Lea Anthony
dc865404a9
[v3] Initial hooks implementation 2023-07-12 20:31:13 +10:00
Lea Anthony
ba7ab2e607
[v3 windows] Fix translucency. Update example. 2023-07-11 23:04:22 +10:00
Lea Anthony
d6cfe4414d
[v3 Windows] Add WebviewWindow.Flash() 2023-07-11 20:10:18 +10:00
Lea Anthony
ecbb135949
[v3] Update plugin.js 2023-07-10 20:56:07 +10:00
Lea Anthony
fcb98e6523
[v3] Update docs 2023-07-10 20:46:08 +10:00
Lea Anthony
e7e5597c95 [v3 mac] Fix right click. Slight refactor. 2023-07-10 20:44:30 +10:00
Lea Anthony
7f0479d8b4 [v3 mac] Fix right click menu when window attached. 2023-07-10 20:21:19 +10:00
Lea Anthony
f5c78f365d
[v3] Fix oauth bug. Added logout capability 2023-07-09 20:13:29 +10:00
Lea Anthony
1fc5f9b12d
[v3] Update readme for oauth plugin 2023-07-09 12:33:57 +10:00
Lea Anthony
3f55ce6dfc
[v3] Add provider methods, provide default login window, update readme for oauth plugin 2023-07-09 12:30:36 +10:00
Lea Anthony
1d562d3c27
[v3] Add oauth plugin 2023-07-08 22:56:25 +10:00
Lea Anthony
f3974deb88
[v3] Add Get for application instance 2023-07-08 22:51:33 +10:00
Lea Anthony
1945616328
[v3 windows] Fix WindowClose defaults 2023-07-08 20:28:19 +10:00
Lea Anthony
7db6604227
[v3 windows] Add HideOnTaskbar flag to WebviewWindow 2023-07-08 11:27:36 +10:00
Lea Anthony
12ce6c5ac3
[v3] Add systray.AttachWindow 2023-07-06 20:43:08 +10:00
Lea Anthony
5d9bc4ca81 [v3 mac] Fix systray example toggle 2023-07-05 21:09:48 +10:00
Lea Anthony
c0b4a3ff35
[v3] Fix generation of common events 2023-07-05 20:39:35 +10:00
Lea Anthony
f0bf8cd827
[v3 windows] Refactor events + mappings. Fix app.Quit(). Make systray example work slightly better 2023-07-05 20:35:45 +10:00
Lea Anthony
10144adf61
[v3 windows] Fix window lose focus events. 2023-07-04 20:43:21 +10:00
Lea Anthony
3efab5ba23
[v3 windows] Prevent window close events when the window was just opened 2023-07-04 20:01:06 +10:00
Lea Anthony
3d323ab9d2 [v3] Fix systray example. PositionWindow now takes an offset. EventApplicationDidResignActive -> EventApplicationDidResignActiveNotification 2023-07-04 19:26:00 +10:00
Lea Anthony
16ce9e562f [v3 mac] Window alignment to systray 2023-07-03 20:15:45 +10:00
Lea Anthony
90e66a7ad4
[v3] Add PanicHandler application option. 2023-07-03 19:52:50 +10:00
Lea Anthony
6b59216b32
[v3] Better panic support for methods run on mainthread 2023-07-01 21:56:21 +10:00
Lea Anthony
9764ba6334
[v3] Add CHANGELOG.md. Add instructions for PRs in DEVELOPMENT.md. 2023-07-01 11:09:09 +10:00
Mohamed Gharib
da5929ff34
[v3] Fix examples background color (#2750) 2023-07-01 10:55:10 +10:00
Mohamed Gharib
e419822c77
[v3] Fix default context-menu in selected disabled inputs (#2753)
* [v3] Fix default context-menu in selected disabled inputs

* [v3] Update Task to v3.27.1. Add `wails3 task -version` and `wails3 task taskfile:update`.

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2023-07-01 10:52:55 +10:00
Lea Anthony
b62ce4440e
[v3 windows] Setup chromium sooner 2023-07-01 09:23:19 +10:00
Lea Anthony
3c81fb06e8
[v3 windows] Position window above systray 2023-06-30 21:17:50 +10:00
Lea Anthony
c27366a270
[v3] rename cli to wails3 2023-06-29 18:26:04 +10:00
Lea Anthony
5b6f6c1bff
[v3] Default context menu always shows in debug/dev 2023-06-28 18:47:39 +10:00
Lea Anthony
3fcac435b2
[v3] Support window events in JS. Fix ExecJS blocking issues. 2023-06-26 22:10:31 +10:00
Lea Anthony
03a3edcdc9
[v3] Create experimental plugin directory 2023-06-26 08:39:02 +10:00
Lea Anthony
5737b3cc7b [v3 mac] Fix merge issues 2023-06-25 10:13:20 +10:00
Lea Anthony
b898b79aaf
[v3 windows] Initial support for start_on_login plugin for windows 2023-06-24 21:12:24 +10:00
Lea Anthony
3827ca2d78
[v3] Move dialogs out of application 2023-06-24 13:57:51 +10:00
Lea Anthony
4de5e1b9f1
[v3] Add WindowUnFocus event 2023-06-24 13:23:50 +10:00
Travis McLane
eb18f02fd2 Merge branch 'v3-alpha-linux' into v3-alpha 2023-06-23 21:51:21 -05:00
Travis McLane
1a7d105917 [v3 linux] GetAbsolutePosition 2023-06-23 21:50:51 -05:00
Travis McLane
de5cff799e [v3 linux] setEnabled 2023-06-23 21:50:51 -05:00
Travis McLane
67cada78f6 [v3 linux] purego: windowGetRelativePosition 2023-06-23 21:50:51 -05:00
Travis McLane
5a40f25d03 [v3 linux] webview setAbsolutePosition 2023-06-23 21:50:51 -05:00
Travis McLane
1a09a8a4c8 [v3 linux/cgo] open/save file dialog stub 2023-06-23 21:50:51 -05:00
Travis McLane
daa0cf83d9 [v3 linux] noop: remove fmt.Println 2023-06-23 21:50:51 -05:00
Travis McLane
e92858f64d [v3 linux/purego] initial file/directory dialogs impl 2023-06-23 21:50:51 -05:00
Travis McLane
d52c26e82f [v3 linux] implement missing functions 2023-06-23 21:50:51 -05:00
Travis McLane
83900b03d4 [v3 linux] purego cleanup + dialog images 2023-06-23 21:50:51 -05:00
Travis McLane
c123430f22 [v3 linux] dialog fixes 2023-06-23 21:50:51 -05:00
Travis McLane
33e20cbc77 [v3 linux] allow menu setting on Linux 2023-06-23 21:50:51 -05:00
Travis McLane
e942312c4c [v3 menuitem] bug: avoid setting if nil 2023-06-23 21:50:51 -05:00
Travis McLane
de2e78b507 [v3 linux] purego implementation 2023-06-23 21:50:51 -05:00
Travis McLane
da4a7ac64b [v2] assetserver/webview purego implementation 2023-06-23 21:50:51 -05:00
Travis McLane
e44fbc26ba [v3 linux] STATUS.md 2023-06-23 21:50:51 -05:00
Travis McLane
bef454f950 [v3 linux] initial linux implementation 2023-06-23 21:50:51 -05:00
Travis McLane
94e1ec91ad Revert "Merge branch 'v3-alpha_linux' into v3-alpha"
This reverts commit b317efaf2c, reversing
changes made to 29b9c5200f.
2023-06-23 21:50:51 -05:00
Lea Anthony
56d11ab419
[v3] Update Wails API 2023-06-24 12:11:48 +10:00
Lea Anthony
c96cccab2e
[v3] Add Window AbsolutePosition/SetAbsolutePosition 2023-06-23 21:14:26 +10:00
Lea Anthony
989ef1b4a8
[v3] Update STATUS.md 2023-06-23 20:50:54 +10:00
Lea Anthony
45cfbe917e
[v3] Position/GetPosition -> RelativePosition/GetRelativePosition 2023-06-23 20:49:27 +10:00
Lea Anthony
2e313005e0
[v3] Add window attachment for open/save dialogs. Fix filter bug. 2023-06-23 20:33:35 +10:00
Lea Anthony
722c3a653c
[v3] Allow message dialogs to be attached to windows. JS dialogs default attached. wml confirm dialog attached. 2023-06-23 20:19:29 +10:00
Lea Anthony
76672facfe
[v3] Add window Enabled method. Fix dialog attachment 2023-06-23 19:48:04 +10:00
Lea Anthony
8f075b5d8d [v3] Fix merge issues 2023-06-22 19:56:35 +10:00
Lea Anthony
b317efaf2c Merge branch 'v3-alpha_linux' into v3-alpha
# Conflicts:
#	v3/STATUS.md
#	v3/examples/menu/main.go
#	v3/go.mod
#	v3/pkg/application/application.go
#	v3/pkg/application/webview_window.go
2023-06-22 19:46:10 +10:00
Lea Anthony
29b9c5200f
[v3] Update context menu example. Allow menu for disabled/read only iputs 2023-06-21 20:21:10 +10:00
Lea Anthony
4d2b4b4ee7
[v3] Update dev guide. Remove implLock. 2023-06-21 19:37:39 +10:00
Lea Anthony
9f8f095a78
[v3] Update dev guide. 2023-06-21 19:23:14 +10:00
Lea Anthony
59c09ebee1
[v3] Better default context menu. Started dev guide. 2023-06-21 19:21:41 +10:00
Lea Anthony
5f81a87912
[v3] Add smart context menu example 2023-06-20 21:35:41 +10:00
Lea Anthony
7f6151d573
[v3] Enable default context menu for certain elements. Use CSS to customise. 2023-06-20 21:11:37 +10:00
Lea Anthony
9816960995
[v3] Support "--default-contextmenu" style. Fix URL handling in Windows. 2023-06-20 19:44:01 +10:00
Lea Anthony
3355d5f0af
[v3] Add EnableDevTools option 2023-06-20 08:49:25 +10:00
Lea Anthony
ab38b20444
[v3] Status Update 2023-06-20 08:36:39 +10:00
Lea Anthony
f278229179 Merge remote-tracking branch 'origin/v3-alpha' into v3-alpha 2023-06-20 08:12:42 +10:00
Lea Anthony
552390fb84 [v3 mac] Tidy up 2023-06-19 17:53:16 +10:00
Lea Anthony
68573cdc48
[v3 windows] Focus webview on Show/Restore/Maximise/FullScreen 2023-06-19 07:35:11 +10:00
Lea Anthony
cdf397aaa9 [v3 mac] Implement print() 2023-06-19 07:15:53 +10:00
Lea Anthony
ed27558011
[v3 windows] Add WebviewWindow.Print() 2023-06-18 17:13:07 +10:00
Lea Anthony
50387948df [v3 mac] Refactor drag to use common code 2023-06-18 12:24:44 +10:00
Lea Anthony
9b48cc1799 [v3 mac] Fix window drag example 2023-06-18 12:12:01 +10:00
Lea Anthony
86f2ac0e96 [v3 mac] Fix WindowShouldClose bug 2023-06-18 11:25:38 +10:00
Lea Anthony
1537a002cc
[v3] Add ShouldClose window method. Remove hideOnClose flag. 2023-06-18 11:12:53 +10:00
Lea Anthony
ae9b158b04
[v3 windows] improve main thread calls 2023-06-16 21:04:44 +10:00
Lea Anthony
72ec10b181 [v3 mac] Fix window close bug 2023-06-16 21:01:17 +10:00
Lea Anthony
eed4002a4a [v3 mac] Fix GetPosition Y coordinate 2023-06-16 20:54:53 +10:00
Lea Anthony
155e34c7a8 [v3 mac] Better main thread calls 2023-06-16 20:48:57 +10:00
Lea Anthony
22cc649e81
[v3 mac] translate window position for SetPosition 2023-06-16 20:20:18 +10:00
Lea Anthony
367ca745c3
[v3 windows] Fix frameless window drag. Add better resize for corners. 2023-06-15 21:06:14 +10:00
Lea Anthony
01e2e46e0d
[v3 windows] Support frameless drag. Add /wails/flags endpoint. 2023-06-15 19:08:08 +10:00
Lea Anthony
c03078ca16
[v3] Add capabilities, move to app-region css for drag, support native drag on Windows 2023-06-14 18:12:37 +10:00
Lea Anthony
49e62aebe3
[v3 windows] Support frameless drag 2023-06-13 17:44:07 +10:00
Lea Anthony
dc4daaebac
[v3 windows] Support title bar button events 2023-06-13 17:42:14 +10:00
stffabi
f855b30c9f [v3 windows] Consolidate WM_SIZE/WM_SIZING message handling 2023-06-12 08:26:09 +02:00
stffabi
b614e2b100 [v3 windows] An initially hidden window should show chromium when it is getting unhidden 2023-06-12 05:41:55 +02:00
stffabi
eafbbab233 [v3 windows] Do not Hide/Show chromium on every load of the frontend 2023-06-12 05:12:49 +02:00
Lea Anthony
72a4e9cf6e
[v3] Update STATUS.md 2023-06-12 10:46:31 +10:00
Lea Anthony
1dbe100a43
[v3] Restore window example 2023-06-12 10:45:26 +10:00
Lea Anthony
287d3d066c
[v3] Update WML demo to include restore 2023-06-12 10:45:03 +10:00
Lea Anthony
9387d18e88
[v3 windows] Change how chromium redraw works 2023-06-12 10:44:33 +10:00
Lea Anthony
1600bcb1d0
[v3] Add Restore to JS runtime 2023-06-12 10:44:05 +10:00
Lea Anthony
2b2defb7c0
[v3 windows] Fix chromium redraw bug 2023-06-12 10:28:35 +10:00
Lea Anthony
6d786902eb
[v3] Add some common window events 2023-06-12 10:27:30 +10:00
Lea Anthony
286ce206f0
[v3 windows] Prevent crash when nulls in strings 2023-06-12 09:10:47 +10:00
Lea Anthony
7535f098bd
[v3 windows] Fix clipboard example 2023-06-11 11:57:47 +10:00
Lea Anthony
b517461fbe
[v3 windows] Fix screen example 2023-06-11 11:54:32 +10:00
Lea Anthony
ffbe67e21f
[v3 windows] Fix clipboard js runtime call 2023-06-11 11:47:50 +10:00
Lea Anthony
833671d30c
[v3 windows] Add clipboard support 2023-06-10 13:01:10 +10:00
Lea Anthony
ae691b8e52
[v3 windows] Small icon updates 2023-06-10 10:19:33 +10:00
Lea Anthony
2b56b7b6b9
[v3] Update status and log plugin readme 2023-06-09 20:44:24 +10:00
Lea Anthony
81a5380f67
[v3 windows] Handle null result from callbacks. Call results should respond on main thread. 2023-06-09 20:34:11 +10:00
Lea Anthony
7c45e3ac13
[v3 mac] Fixed drag 2023-06-09 17:00:07 +10:00
Lea Anthony
d1932c36ce
Merge remote-tracking branch 'origin/v3-alpha' into v3-alpha
# Conflicts:
#	v2/internal/app/app_dev.go
#	v3/STATUS.md
#	v3/Taskfile.yaml
#	v3/examples/binding/go.mod
#	v3/examples/binding/go.sum
#	v3/examples/menu/main.go
#	v3/examples/window/main.go
#	v3/go.mod
#	v3/go.sum
#	v3/pkg/application/application_windows.go
#	v3/pkg/application/dialogs_windows.go
#	v3/pkg/application/menuitem_windows.go
#	v3/pkg/application/options_webview_window.go
#	v3/pkg/application/options_win.go
#	v3/pkg/application/popupmenu_windows.go
#	v3/pkg/application/systemtray_windows.go
#	v3/pkg/application/webview_window.go
#	v3/pkg/application/webview_window_windows.go
#	v3/pkg/events/events.go
#	v3/pkg/events/events.txt
#	v3/pkg/w32/constants.go
#	v3/pkg/w32/popupmenu.go
#	v3/pkg/w32/screen.go
#	v3/pkg/w32/typedef.go
#	v3/pkg/w32/user32.go
#	website/src/pages/changelog.mdx
2023-06-07 08:19:25 +10:00
Lea Anthony
adb7ddf8d2
[v3] Update go mod for plugins examples 2023-06-06 21:07:28 +10:00
Lea Anthony
3b0a57ca6d
[v3 plugins] Support single-instance on Windows 2023-06-06 21:06:52 +10:00
Lea Anthony
4ee75e93c9
[v3] Improve examples 2023-06-06 20:41:28 +10:00
Lea Anthony
ff218e5323
[v3 windows] Support systray.Destroy() 2023-06-06 20:40:56 +10:00
Lea Anthony
df0969d1c6
[v3 windows] Support About box. Improve app menu handling. 2023-06-06 20:40:38 +10:00
Lea Anthony
23d7ac0e58
[v3 windows] Add MessageBoxIndirect 2023-06-06 20:39:24 +10:00
Lea Anthony
f9a87944cf
[v3] icons.ico -> icon.ico 2023-06-06 20:38:45 +10:00
Lea Anthony
eff456aa1a
[v3 windows] Improve systray locking 2023-06-06 20:38:01 +10:00
Lea Anthony
1ce07cd67c
[v3 windows] Update Taskfile in templates 2023-06-06 20:37:15 +10:00
Lea Anthony
fc7952ff3b
[v3 windows] Update examples. Add example table to STATUS.md 2023-06-05 20:34:52 +10:00
Lea Anthony
bb28bdf565
[v3 windows] Fix resize bug when using setSize 2023-06-05 20:33:45 +10:00
Lea Anthony
04d5842124
[v3 windows] Add package:windows task 2023-06-05 19:57:40 +10:00
Lea Anthony
1a12890556
[v3 windows] Add Webview2NavigationCompleted event. Support CSS + JS injection 2023-06-05 08:58:53 +10:00
Lea Anthony
d021d885ca
[v3 windows] Update STATUS.md 2023-06-04 14:08:27 +10:00
Lea Anthony
3433b8ce8f
[v3 windows] Support context menus 2023-06-04 14:05:19 +10:00
Lea Anthony
6092730acc
[v3 windows] Support Close and take into account HideOnClose option 2023-06-03 15:23:10 +10:00
Lea Anthony
ba4ffe4ecc
[v3 windows] Support devtools on startup 2023-06-03 15:19:38 +10:00
Lea Anthony
55b3e2d35a
[v3 windows] Update STATUS.md 2023-06-03 15:08:50 +10:00
Lea Anthony
6b926ec463
[v3 windows] Support setURL, execJS, reload, zoomIn/Out/Reset, get/setZoom, setHTML, 2023-06-03 15:03:26 +10:00
Lea Anthony
9b686b5417
[v3 windows] Support Application Menu, hiding menu items 2023-06-01 22:52:04 +10:00
Lea Anthony
82ec56bc7d
[v3 windows] Support GetScreens and GetPrimaryScreen 2023-06-01 22:52:03 +10:00
Lea Anthony
798e51d4d3
[v3 windows] Fix window ID processing 2023-06-01 22:52:02 +10:00
Lea Anthony
35c41552de
[v3 mac] Basic common event support. Taskfile refactor 2023-06-01 22:51:25 +10:00
Lea Anthony
19be7f61ac [v3 windows] Fix resizing. Add resize debouncing 2023-05-30 16:36:00 +08:00
Misite Bao
bbf0e8cdad chore: split Taskfile (#2654) 2023-05-30 16:35:59 +08:00
Lea Anthony
7e2d2a29a1 [v3 windows] Initial webview2 working 2023-05-30 16:33:34 +08:00
Lea Anthony
671dc2aa3a [v3 windows] Implement start x/y + parent window for dialogs 2023-05-30 16:33:34 +08:00
Lea Anthony
294a2c701e [v3] Update esbuild 2023-05-30 16:33:34 +08:00
Lea Anthony
01f03c552d [v3] Improve invoke 2023-05-30 16:33:33 +08:00
Lea Anthony
dc46154d94 [v3 mac] Support drag 2023-05-30 16:33:33 +08:00
Lea Anthony
87737c23eb [v3 mac] DisableWindowShadow -> DisableShadow 2023-05-30 16:33:33 +08:00
Lea Anthony
6e6f099a99 [v3 mac] Basic common event support. Taskfile refactor 2023-05-30 16:33:32 +08:00
Lea Anthony
4cb3321c39 [v3 mac] Update README 2023-05-30 16:32:02 +08:00
Lea Anthony
6a2343a1a0 [v3 mac] Add DisableWindowShadow option 2023-05-30 16:32:01 +08:00
Lea Anthony
f2d6dba2cf [v3 windows] initial dialog support. Refactor button callback name 2023-05-30 16:32:01 +08:00
stffabi
dd1ef7fae9 [v3 darwin] Add darwin identifier darwin only file 2023-05-30 16:32:01 +08:00
stffabi
527cff9ec3 [v3 darwin] Add darwin identifier to all C files of darwin 2023-05-30 16:32:00 +08:00
stffabi
ba150eccae [v3 windows] Add close handling: HideOnClose, QuitOnLastWindowClosed and DisableQuitOnLastWindowClosed 2023-05-30 16:32:00 +08:00
Travis McLane
fa74986f1e [v3 example] menu text toggle 2023-05-30 16:32:00 +08:00
Travis McLane
d1085b5bea [v3 example] add menuitem.Hidden / setHidden example 2023-05-30 16:31:59 +08:00
Travis McLane
4d0a14d2eb [v3 darwin] menuitem.setHidden implementation 2023-05-30 16:31:59 +08:00
Travis McLane
8c3439b733 [dialogs] remove default title
without this removal a user would have to call `SetTitle("")` in order to
erase the default if they desire a title-less dialog.
2023-05-30 16:31:59 +08:00
stffabi
a0534d527a [v3 application] Fix race conditions between starting a window/systray and starting the application
Make sure a window is never run before the windowCreated hooks have been executed.
2023-05-30 16:31:59 +08:00
Lea Anthony
a5b52f2795 [v3 windows] initial systray support 2023-05-30 16:31:58 +08:00
Lea Anthony
b526ebd679 [v3 mac] Update api. New template icon. 2023-05-30 16:31:58 +08:00
Lea Anthony
51b9315ae9 [v3 windows] update status 2023-05-30 16:31:58 +08:00
Lea Anthony
8edf44dc31 [v3 windows] New icons 2023-05-30 16:31:57 +08:00
Lea Anthony
9b7626e59e [v3 windows] Move icons to own package, systray dark mode icon, window.Focus(), 2023-05-30 16:31:57 +08:00
Lea Anthony
6dd092c7a9 [v3 windows] Rename systray callback handlers 2023-05-30 16:31:57 +08:00
Lea Anthony
46a0d467c0 [v3 windows] Dialogs to use invokeSync 2023-05-30 16:31:56 +08:00
Lea Anthony
e3b164ae93 [v3 windows] Systray callback handlers 2023-05-30 16:31:56 +08:00
stffabi
d8f58ab20f [v3 windows] Fix wndproc default case with WMMessageToString 2023-05-30 16:31:56 +08:00
stffabi
0de2bccd28 [v3 windows] Do not disable WndProc messaging for systray when updating icon 2023-05-30 16:31:55 +08:00
Lea Anthony
2eaf724710 [v3 windows] Fix systray icon size 2023-05-30 16:31:55 +08:00
Lea Anthony
58138ac09b [v3 windows] Initial systray support 2023-05-30 16:31:55 +08:00
Lea Anthony
143f090422 [v3] Use invokeSync for systray methods 2023-05-30 16:31:55 +08:00
Lea Anthony
f8f466ba7e [v3 windows] Support irregular shaped windows. Centered option. 2023-05-30 16:31:54 +08:00
Lea Anthony
cb28de47f8 [v3 windows] Support irregular shaped windows 2023-05-30 16:31:54 +08:00
stffabi
4ad2475ed6 [v3] Add some missing methods for darwin and windows 2023-05-30 16:31:54 +08:00
Travis McLane
0172078536 [w32] move windows specific code to impl file 2023-05-30 16:31:53 +08:00
Travis McLane
0bb1fb512a [w32] add missing build constraint 2023-05-30 16:31:53 +08:00
Lea Anthony
b6940d95a2 [v3 windows] Add frameless resize 2023-05-30 16:31:53 +08:00
stffabi
75f0457375 [v3 windows] Add HiDPI awareness 2023-05-30 16:31:52 +08:00
stffabi
ffe31b6265 [v3 windows] Add frameless support 2023-05-30 16:31:52 +08:00
Lea Anthony
8963610722 [v3 windows] Implement getScreen 2023-05-30 16:31:52 +08:00
Lea Anthony
66bfcf0e36 [v3] Ensure impl calls from WebvieWindow are on the main thread. Support size. 2023-05-30 16:31:52 +08:00
Lea Anthony
0b3559abfe [v3] Fix examples 2023-05-30 16:31:51 +08:00
Lea Anthony
773389ee5e [v3] Update examples to use correct options. 2023-05-30 16:31:51 +08:00
Lea Anthony
4c04991d4d [v3] Change WebviewWindow options to be a value, not a pointer. Support Un/Fullscreen. Remove main thread switching. Use parent options instead of local variables. 2023-05-30 16:31:51 +08:00
Lea Anthony
d56bb59b72 [v3 Windows] Support application hide/show. Add WebviewWindow.IsVisible(). 2023-05-30 16:31:50 +08:00
Lea Anthony
6e92a4f71e [v3 Windows] Support setMin/MaxSize, setPosition 2023-05-30 16:31:50 +08:00
Lea Anthony
1f6217c0d8 [v3 Windows] Add Support for SetTitle, Center, Un/Minimise/Maximise, IsMin/Maximised, IsNormal, Show/Hide 2023-05-30 16:31:50 +08:00
Lea Anthony
17204bebd0 [v3 Breaking Change] Add NativeWindowHandle method to WebviewWindow. 2023-05-30 16:31:49 +08:00
Lea Anthony
728e2019d8 [v3 windows] Moved w32 from internal to pkg so it may be used by applications 2023-05-30 16:31:49 +08:00
Lea Anthony
7f3fdd6977 [v3 windows] Add WndProcInterceptor for custom message processing 2023-05-30 16:31:49 +08:00
Lea Anthony
e8798f8371 [v3 windows] Rename options_windows.go -> options_win.go 2023-05-30 16:31:48 +08:00
Lea Anthony
402b743553 [v3 windows] Add APM Events 2023-05-30 16:31:48 +08:00
Lea Anthony
f08ae2fc62 [v3] Update application.On and window.On to return functions that unregister the listener. WebviewWindow.onApplicationEvent is a helper which will manage the unregistering for you on window destroy. 2023-05-30 16:31:48 +08:00
Lea Anthony
178ea9c8c5 [windows] Split out wndProc. Generate windows events, support per-window themes 2023-05-30 16:31:48 +08:00
Lea Anthony
7c63cee9e8 [windows] Support AlwaysOnTop, EnableResize at runtime. Added Solid/Transparent/Translucent options. 2023-05-30 16:31:47 +08:00
stffabi
4a60dfc373 [v3, windows] Add MainThread dispatching and fixes the blocking window 2023-05-30 16:31:47 +08:00
Lea Anthony
829a829cb4 [windows] WIP 2023-05-30 16:31:47 +08:00
Travis McLane
34896ccb4e [darwin] add getPrimaryScreen/getScreens to impl (#2618) 2023-05-30 16:31:46 +08:00
Lea Anthony
5df5eb6a04 Fix module path for non-modified repo 2023-05-30 16:31:46 +08:00
Lea Anthony
31ba36baf3 [windows] Initial commit 2023-05-30 16:31:46 +08:00
Lea Anthony
bf10f71760 [windows] Fix paths for wails init 2023-05-30 16:31:45 +08:00
Lea Anthony
8aa61fff6d Intial STATUS.md commit 2023-05-30 16:31:45 +08:00
Lea Anthony
f645b530da
[v3] Update esbuild 2023-05-19 07:58:25 +10:00
Lea Anthony
27573d191e [v3] Improve invoke 2023-05-18 19:18:20 +10:00
Lea Anthony
d6b4fdf979
[v3 mac] Support drag 2023-05-17 21:09:27 +10:00
Lea Anthony
39c834b83f
[v3 mac] DisableWindowShadow -> DisableShadow 2023-05-17 08:13:05 +10:00
Lea Anthony
f210357bfe
[v3 mac] Basic common event support. Taskfile refactor 2023-05-17 07:58:40 +10:00
Lea Anthony
3094c19cf3 [v3 mac] Update README 2023-05-16 18:00:17 +10:00
Lea Anthony
225437f1e8 [v3 mac] Add DisableWindowShadow option 2023-05-16 17:54:34 +10:00
Lea Anthony
a23bb1e350
[v3 windows] initial dialog support. Refactor button callback name 2023-05-12 20:56:22 +10:00
stffabi
2fbb21a84e [v3 darwin] Add darwin identifier darwin only file 2023-05-12 11:02:15 +02:00
stffabi
5c08fcb43e [v3 darwin] Add darwin identifier to all C files of darwin 2023-05-12 09:25:50 +02:00
stffabi
cc59655cb1 [v3 windows] Add close handling: HideOnClose, QuitOnLastWindowClosed and DisableQuitOnLastWindowClosed 2023-05-12 08:06:05 +02:00
Travis McLane
8ff0a2b0ff [v3 example] menu text toggle 2023-05-11 11:10:17 -05:00
Travis McLane
fe549af784 [v3 example] add menuitem.Hidden / setHidden example 2023-05-11 10:56:19 -05:00
Travis McLane
a4549c94c1 [v3 darwin] menuitem.setHidden implementation 2023-05-11 10:51:52 -05:00
Travis McLane
706256d3f0 [dialogs] remove default title
without this removal a user would have to call `SetTitle("")` in order to
erase the default if they desire a title-less dialog.
2023-05-11 08:54:38 -05:00
stffabi
3049773e7f [v3 application] Fix race conditions between starting a window/systray and starting the application
Make sure a window is never run before the windowCreated hooks have been executed.
2023-05-11 07:00:42 +02:00
Travis McLane
9da5df354e make it compilable again 2023-05-10 09:10:03 -05:00
Travis McLane
54ba6d47f4 Revert "[linux] dispatchOnMainThread"
This reverts commit 346517a185640aa40bc8710b815cf3e5ff7dc4a8.
2023-05-10 09:10:03 -05:00
Travis McLane
17647e2c2f [linux/cgo] hide/show implementation 2023-05-10 09:10:03 -05:00
Travis McLane
9da5cea88d [linux/cgo] bugfix 2023-05-10 09:10:03 -05:00
Travis McLane
3784746ddb [linux] STATUS.md 2023-05-10 09:10:03 -05:00
Travis McLane
281f6335c1 [linux] dispatchOnMainThread 2023-05-10 09:10:03 -05:00
Travis McLane
5129c0f4e2 [fixup] remove 'activate' 2023-05-10 09:10:03 -05:00
Travis McLane
5078e89a71 [darwin] implement isNormal 2023-05-10 09:10:03 -05:00
Travis McLane
41aef27631 [linux] use getNativeApplication 2023-05-10 09:10:03 -05:00
Travis McLane
754d0934bf [darwin] systray basic darkmode implementation 2023-05-10 09:10:03 -05:00
Travis McLane
be2d616190 [linux] getNativeApplication 2023-05-10 09:10:03 -05:00
Travis McLane
ba34e47c4b [linux/purego] updates 2023-05-10 09:10:03 -05:00
Travis McLane
a485b188b3 [linux/cgo] updates 2023-05-10 09:10:03 -05:00
Travis McLane
718e89ad1e [core/menu] prevent nil impl crash 2023-05-10 09:10:03 -05:00
Travis McLane
9453a60254 [linux] window registration + default menu 2023-05-10 09:10:03 -05:00
Travis McLane
f87ec9d401 [purego] 2023-05-10 09:10:03 -05:00
Travis McLane
cb1859a710 [cgo] registerWindow 2023-05-10 09:10:03 -05:00
Travis McLane
1ed95164db [purego] 2023-05-10 09:10:03 -05:00
Travis McLane
ac5d0e54f0 [purego] assethandler updates 2023-05-10 09:10:03 -05:00
Travis McLane
b1e79411e7 [examples] update label on click 2023-05-10 09:10:03 -05:00
Travis McLane
a9d834d715 [examples] update label on click 2023-05-10 09:10:03 -05:00
Travis McLane
68cfd130d3 [linux/cgo] initial implementation 2023-05-10 09:10:03 -05:00
Travis McLane
93a4b823c8 [linux/purego] initial port 2023-05-10 09:10:03 -05:00
Travis McLane
769662d77a [v2] assetserver/webview purego implementation 2023-05-10 09:10:03 -05:00
Lea Anthony
7fd627f169
[v3 windows] initial systray support 2023-05-10 19:35:40 +10:00
Lea Anthony
b91468b6f2 [v3 mac] Update api. New template icon. 2023-05-09 21:55:17 +10:00
Lea Anthony
0b9cd4be5d
[v3 windows] update status 2023-05-09 21:47:22 +10:00
Lea Anthony
4c587ee1b8
[v3 windows] New icons 2023-05-09 19:53:01 +10:00
Lea Anthony
19e1e8b8a6
[v3 windows] Move icons to own package, systray dark mode icon, window.Focus(), 2023-05-09 19:52:33 +10:00
Lea Anthony
67e9522c67
[v3 windows] Rename systray callback handlers 2023-05-08 20:16:25 +10:00
Lea Anthony
a829b38a34
[v3 windows] Dialogs to use invokeSync 2023-05-08 20:11:51 +10:00
Lea Anthony
c8dae94b5b
[v3 windows] Systray callback handlers 2023-05-08 19:43:58 +10:00
stffabi
87267758ac [v3 windows] Fix wndproc default case with WMMessageToString 2023-05-07 22:17:43 +02:00
stffabi
5f72df81fb [v3 windows] Do not disable WndProc messaging for systray when updating icon 2023-05-07 21:40:40 +02:00
Lea Anthony
1ed270fe05
[v3 windows] Fix systray icon size 2023-05-07 20:19:37 +10:00
Lea Anthony
19a654a2b1
[v3 windows] Initial systray support 2023-05-07 19:13:07 +10:00
Lea Anthony
f9bbc11711
[v3] Use invokeSync for systray methods 2023-05-07 10:34:08 +10:00
Lea Anthony
42b1807c36
[v3 windows] Support irregular shaped windows. Centered option. 2023-05-06 20:22:28 +10:00
Lea Anthony
647982de1a
[v3 windows] Support irregular shaped windows 2023-05-06 15:05:00 +10:00
Lea Anthony
f5557c612a
Merge remote-tracking branch 'origin/v3-alpha' into v3-alpha 2023-05-05 06:41:04 +10:00
stffabi
f4749db8b3 [v3] Add some missing methods for darwin and windows 2023-05-02 21:56:40 +02:00
Travis McLane
86a1de6788 [w32] move windows specific code to impl file 2023-05-02 10:52:21 -05:00
Travis McLane
792c5e2d95 [w32] add missing build constraint 2023-05-02 10:52:09 -05:00
Lea Anthony
6758580be9
[v3 windows] Add frameless resize 2023-05-02 23:18:22 +10:00
stffabi
6f246eed4a [v3 windows] Add HiDPI awareness 2023-05-02 09:45:21 +02:00
stffabi
fc3725d3f4 [v3 windows] Add frameless support 2023-05-02 09:29:47 +02:00
Lea Anthony
00c6f0dfdb
[v3 windows] Implement getScreen 2023-05-01 21:11:40 +10:00
Lea Anthony
cf7b4e2458
[v3] Ensure impl calls from WebvieWindow are on the main thread. Support size. 2023-05-01 20:28:46 +10:00
Lea Anthony
f682e44367
[v3] Fix examples 2023-05-01 18:24:24 +10:00
Lea Anthony
9d1f86c410
[v3] Update examples to use correct options. 2023-05-01 18:21:22 +10:00
Lea Anthony
dac281ac32
[v3] Change WebviewWindow options to be a value, not a pointer. Support Un/Fullscreen. Remove main thread switching. Use parent options instead of local variables. 2023-05-01 18:20:28 +10:00
Lea Anthony
29a58086a3
[v3 Windows] Support application hide/show. Add WebviewWindow.IsVisible(). 2023-05-01 11:34:06 +10:00
Lea Anthony
cb8eb755a7
[v3 Windows] Support setMin/MaxSize, setPosition 2023-05-01 10:52:46 +10:00
Lea Anthony
1e8fc29ee4
[v3 Windows] Add Support for SetTitle, Center, Un/Minimise/Maximise, IsMin/Maximised, IsNormal, Show/Hide 2023-04-30 20:55:51 +10:00
Lea Anthony
9a05b49e3d
[v3 Breaking Change] Add NativeWindowHandle method to WebviewWindow. 2023-04-30 10:17:03 +10:00
Lea Anthony
79f8d92084
[v3 windows] Moved w32 from internal to pkg so it may be used by applications 2023-04-30 10:02:00 +10:00
Lea Anthony
6e56542586
[v3 windows] Add WndProcInterceptor for custom message processing 2023-04-30 09:49:50 +10:00
Lea Anthony
c53443b62b
[v3 windows] Rename options_windows.go -> options_win.go 2023-04-30 09:10:00 +10:00
Lea Anthony
1128662c89
[v3 windows] Add APM Events 2023-04-29 20:33:33 +10:00
Lea Anthony
676787417f
[v3] Update application.On and window.On to return functions that unregister the listener. WebviewWindow.onApplicationEvent is a helper which will manage the unregistering for you on window destroy. 2023-04-29 19:39:05 +10:00
Lea Anthony
57422dccf3
[windows] Split out wndProc. Generate windows events, support per-window themes 2023-04-29 12:14:12 +10:00
Lea Anthony
7f3f51e36b
[windows] Support AlwaysOnTop, EnableResize at runtime. Added Solid/Transparent/Translucent options. 2023-04-28 21:11:49 +10:00
stffabi
ef184ec8bf [v3, windows] Add MainThread dispatching and fixes the blocking window 2023-04-26 21:06:54 +02:00
Lea Anthony
9bfe3094dd
[windows] WIP 2023-04-26 21:07:04 +10:00
stffabi
3547b4d010
[v2, darwin] Add some missing default shortcuts (#2586)
* [v2, darwin] Add "Hide, Hide Others, Show All“ to appmenu

This also includes shortcuts support for those commands.
Arrange the menu items in the well known MacOS order.

* [v2, darwin] Add Window menu with well known shortcuts Minimize, Full-Screen and Zoom.
2023-04-26 21:07:04 +10:00
stffabi
1222e3aa1b
[v2, dev] Use custom schemes for in-app dev mode (#2610)
This fixes some long-standing inconsistencies between
dev mode builds and production builds but is a breaking
change. Dev mode uses custom scheme for Vite versions >= 3.0.0
and for older it still behaves in the old way.
2023-04-26 21:07:03 +10:00
stffabi
cff3ee5079
[assetServer] Improve release/close handling of webview requests (#2612) 2023-04-26 21:07:03 +10:00
Travis McLane
c91aa462aa
[darwin] add getPrimaryScreen/getScreens to impl (#2618) 2023-04-24 09:34:44 +10:00
Lea Anthony
62b3775e2f
Fix module path for non-modified repo 2023-04-19 08:22:58 +10:00
Lea Anthony
54bf8c1142
[windows] Initial commit 2023-04-18 21:27:09 +10:00
Lea Anthony
c4f613e4c5
[windows] Fix paths for wails init 2023-04-18 20:41:59 +10:00
Lea Anthony
a66d9ab0b1
Intial STATUS.md commit 2023-04-18 18:53:39 +10:00
3249 changed files with 303623 additions and 92 deletions

View file

@ -1,6 +1,7 @@
{ {
"files": [ "files": [
"website/src/pages/credits.mdx" "website/src/pages/credits.mdx",
"docs/src/assets/contributors.html"
], ],
"imageSize": 75, "imageSize": 75,
"commit": false, "commit": false,

71
.coderabbit.yaml Normal file
View file

@ -0,0 +1,71 @@
language: en-US
tone_instructions: ''
early_access: false
enable_free_tier: true
reviews:
profile: chill
request_changes_workflow: false
high_level_summary: true
high_level_summary_placeholder: '@coderabbitai summary'
auto_title_placeholder: '@coderabbitai'
review_status: true
poem: true
collapse_walkthrough: false
sequence_diagrams: true
path_filters: []
path_instructions: []
abort_on_close: true
auto_review:
enabled: true
auto_incremental_review: true
ignore_title_keywords: []
labels: []
drafts: false
base_branches: ['v3-alpha', 'master']
tools:
shellcheck:
enabled: true
ruff:
enabled: true
markdownlint:
enabled: true
github-checks:
enabled: true
timeout_ms: 90000
languagetool:
enabled: true
enabled_only: false
level: default
biome:
enabled: true
hadolint:
enabled: true
swiftlint:
enabled: true
phpstan:
enabled: true
level: default
golangci-lint:
enabled: true
yamllint:
enabled: true
gitleaks:
enabled: true
checkov:
enabled: true
detekt:
enabled: true
eslint:
enabled: true
chat:
auto_reply: true
knowledge_base:
opt_out: false
learnings:
scope: auto
issues:
scope: auto
jira:
project_keys: []
linear:
team_keys: []

View file

@ -7,6 +7,8 @@ body:
- type: markdown - type: markdown
attributes: attributes:
value: | value: |
***Please note: No bug reports are currently being accepted for Wails v3***
***Please note: No bug reports are currently being accepted for Wails v3***
***Please note: No bug reports are currently being accepted for Wails v3*** ***Please note: No bug reports are currently being accepted for Wails v3***
Before submitting this issue, please do the following: Before submitting this issue, please do the following:
- Do a web search for your error. This usually leads to a much better understanding of the issue. - Do a web search for your error. This usually leads to a much better understanding of the issue.

44
.github/file-labeler.yml vendored Normal file
View file

@ -0,0 +1,44 @@
# File path specific labels
v2-only:
- 'v2/**/*'
v3-alpha:
- 'v3/**/*'
windows:
- '**/*_windows.go'
- 'v2/internal/frontend/desktop/windows/**/*'
macos:
- '**/*_darwin.go'
- 'v2/internal/frontend/desktop/darwin/**/*'
linux:
- '**/*_linux.go'
- 'v2/internal/frontend/desktop/linux/**/*'
cli:
- 'v2/cmd/**/*'
- 'v3/cmd/**/*'
- '**/cli/**/*'
- '**/commands/**/*'
documentation:
- '**/*.md'
- 'docs/**/*'
- 'website/**/*'
- 'mkdocs-website/**/*'
templates:
- '**/templates/**/*'
- '**/template/**/*'
runtime:
- '**/runtime/**/*'
- 'v2/internal/runtime/**/*'
- 'v3/internal/runtime/**/*'
bindings:
- 'v2/internal/binding/**/*'
- 'v3/internal/generator/**/*'

144
.github/issue-labeler.yml vendored Normal file
View file

@ -0,0 +1,144 @@
# Version labels
v2-only:
- '\[v2\]'
- '\(v2\)'
- 'v2:'
- 'version 2'
- 'wails v2'
- 'using v2'
- 'master branch'
v3-alpha:
- '\[v3\]'
- '\(v3\)'
- 'v3:'
- '\[v3-alpha\]'
- '\(v3-alpha\)'
- 'version 3'
- 'wails v3'
- 'using v3'
- 'v3-alpha branch'
# Component labels
webview2:
- 'webview2'
- 'windows'
- 'microsoft edge'
- 'edge browser'
- 'IE'
- 'Explorer'
- 'browser crashes'
macos:
- 'macOS'
- 'mac OS'
- 'OS X'
- 'darwin'
- 'cocoa'
- 'Safari'
- 'Catalyst'
- 'Ventura'
- 'Sonoma'
- 'apple'
linux:
- 'linux'
- 'ubuntu'
- 'debian'
- 'fedora'
- 'gtk'
- 'webkitgtk'
- 'webkit2gtk'
- 'gnome'
- 'x11'
- 'wayland'
cli:
- 'cli'
- 'command line'
- 'wails doctor'
- 'wails init'
- 'wails build'
- 'wails dev'
- 'template'
- 'scaffolding'
# Type labels
bug:
- 'bug'
- 'crash'
- 'broken'
- 'failure'
- 'error'
- 'failed'
- 'panic'
- 'segfault'
- 'issue'
- 'not working'
- 'problem'
enhancement:
- 'feature'
- 'enhancement'
- 'request'
- 'add'
- 'new'
- 'improve'
- 'functionality'
- 'support for'
- 'please add'
- 'would be nice'
documentation:
- 'docs'
- 'documentation'
- 'readme'
- 'example'
- 'tutorial'
- 'guide'
- 'explanation'
- 'clarification'
- 'instructions'
security:
- 'security'
- 'vulnerability'
- 'exploit'
- 'hack'
- 'CVE'
- 'secure'
- 'encryption'
- 'hardening'
performance:
- 'performance'
- 'slow'
- 'speed'
- 'memory leak'
- 'cpu usage'
- 'high memory'
- 'lag'
- 'freeze'
- 'optimization'
# Priority labels
high-priority:
- 'urgent'
- 'critical'
- 'security'
- 'high priority'
- 'important'
- 'production'
- 'blocker'
- 'blocking'
question:
- 'how to'
- 'how do i'
- 'can I'
- 'is it possible'
- 'question'
- 'help me'
- 'need help'
- 'assistance'
- 'confused'

View file

@ -1,9 +1,20 @@
<!-- <!--
READ CAREFULLY: Before submitting your PR, please ensure you have created an issue for your PR.
It is essential that you do this so that we can discuss the proposed changes before you spend time on them. *********************************************************************
If you do not create an issue, your PR may be rejected without review. * PLEASE READ BEFORE SUBMITTING YOUR PR *
If a relevant issue already exists, please reference it in your PR by including `Fixes #<issue number>` in your PR description. * YOUR PR MAY BE REJECTED IF IT DOES NOT FOLLOW THESE STEPS *
*********************************************************************
- *DO NOT* submit bugs for a source install of v3, ONLY tagged versions, e.g. v3.0.0-alpha.11
- *DO NOT* submit PRs for v3 alpha enhancements, unless you have opened a post on the discord channel.
All enhancements must be discussed first.
The feedback guide for v3 is here: https://v3alpha.wails.io/getting-started/feedback/
- Before submitting your PR, please ensure you have created and linked the PR to an issue.
- If a relevant issue already exists, please reference it in your PR by including `Fixes #<issue number>` in your PR description.
- Please fill in the checklists.
--> -->
# Description # Description
@ -14,7 +25,7 @@ Fixes # (issue)
## Type of change ## Type of change
Please delete options that are not relevant. Please select the option that is relevant.
- [ ] Bug fix (non-breaking change which fixes an issue) - [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality) - [ ] New feature (non-breaking change which adds functionality)
@ -28,6 +39,8 @@ Please describe the tests that you ran to verify your changes. Provide instructi
- [ ] Windows - [ ] Windows
- [ ] macOS - [ ] macOS
- [ ] Linux - [ ] Linux
If you checked Linux, please specify the distro and version.
## Test Configuration ## Test Configuration
@ -35,7 +48,7 @@ Please paste the output of `wails doctor`. If you are unable to run this command
# Checklist: # Checklist:
- [ ] I have updated `website/src/pages/changelog.mdx` with details of this PR - [ ] I have updated `v3/UNRELEASED_CHANGELOG.md` with details of this PR
- [ ] My code follows the general coding style of this project - [ ] My code follows the general coding style of this project
- [ ] I have performed a self-review of my own code - [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas - [ ] I have commented my code, particularly in hard-to-understand areas

26
.github/stale.yml vendored
View file

@ -1,7 +1,7 @@
# Number of days of inactivity before an issue becomes stale # Number of days of inactivity before an issue becomes stale
daysUntilStale: 30 daysUntilStale: 45
# Number of days of inactivity before a stale issue is closed # Number of days of inactivity before a stale issue is closed
daysUntilClose: 7 daysUntilClose: 10
# Issues with these labels will never be considered stale # Issues with these labels will never be considered stale
exemptLabels: exemptLabels:
- pinned - pinned
@ -9,14 +9,28 @@ exemptLabels:
- onhold - onhold
- inprogress - inprogress
- "Selected For Development" - "Selected For Development"
- bug
- enhancement
- v3-alpha
- high-priority
# Label to use when marking an issue as stale # Label to use when marking an issue as stale
staleLabel: "Wont Fix" staleLabel: "stale"
# Comment to post when marking an issue as stale. Set to `false` to disable # Comment to post when marking an issue as stale. Set to `false` to disable
markComment: > markComment: >
This issue has been automatically marked as stale because it has not had This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you recent activity. It will be closed if no further activity occurs within the next 10 days.
for your contributions.
If this issue is still relevant, please add a comment to keep it open.
Thank you for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable # Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false closeComment: >
This issue has been automatically closed due to lack of activity.
Please feel free to reopen it if it's still relevant.
exemptMilestones: true exemptMilestones: true
exemptAssignees: true exemptAssignees: true
# Only mark issues (not PRs)
only: issues
# Exempt issues created before a certain date
exemptCreatedBefore: "2024-01-01T00:00:00Z"
# Starts checking issues only after the specified date
startDate: "2025-06-01T00:00:00Z"

33
.github/workflows/auto-label-issues.yml vendored Normal file
View file

@ -0,0 +1,33 @@
name: Auto Label Issues
on:
issues:
types: [opened, edited, reopened]
pull_request_target:
types: [opened, edited, reopened, synchronize]
jobs:
auto-label:
runs-on: ubuntu-latest
permissions:
issues: write
pull-requests: write
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Label issues and PRs by content
uses: github/issue-labeler@v3.4
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
configuration-path: .github/issue-labeler.yml
enable-versioned-regex: 0
include-title: 1
- name: Label issues and PRs by file paths
uses: actions/labeler@v4
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
configuration-path: .github/file-labeler.yml
sync-labels: true

373
.github/workflows/automated-releases.yml vendored Normal file
View file

@ -0,0 +1,373 @@
name: Automated Nightly Releases
on:
workflow_dispatch:
inputs:
force_release:
description: 'Force release even if no changes detected'
required: false
default: false
type: boolean
dry_run:
description: 'Run in dry-run mode (no actual releases)'
required: false
default: false
type: boolean
# schedule:
# Run at 2 AM UTC every day - DISABLED for safety until ready
# - cron: '0 2 * * *'
env:
GO_VERSION: '1.24'
jobs:
check-permissions:
name: Check Release Permissions
permissions: {}
runs-on: ubuntu-latest
outputs:
authorized: ${{ steps.check.outputs.authorized }}
steps:
- name: Check if user is authorized for releases
id: check
run: |
# Only allow specific users to trigger releases
AUTHORIZED_USERS="leaanthony"
if [[ "$AUTHORIZED_USERS" == *"${{ github.actor }}"* ]]; then
echo "✅ User ${{ github.actor }} is authorized for releases"
echo "authorized=true" >> $GITHUB_OUTPUT
else
echo "❌ User ${{ github.actor }} is not authorized for releases"
echo "authorized=false" >> $GITHUB_OUTPUT
fi
detect-v2-changes:
name: Detect v2 Changes
runs-on: ubuntu-latest
needs: check-permissions
if: needs.check-permissions.outputs.authorized == 'true'
outputs:
has_changes: ${{ steps.changes.outputs.has_changes }}
commits_since_last: ${{ steps.changes.outputs.commits_since_last }}
last_release_tag: ${{ steps.changes.outputs.last_release_tag }}
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- name: Check for v2 changes since last release
id: changes
run: |
echo "🔍 Checking for v2 changes since last release..."
# Find the last v2 release tag
LAST_TAG=$(git tag -l "v2.*" --sort=-version:refname | head -n 1)
if [ -z "$LAST_TAG" ]; then
echo "No previous v2 tags found, assuming first release"
LAST_TAG=$(git rev-list --max-parents=0 HEAD)
echo "has_changes=true" >> $GITHUB_OUTPUT
echo "commits_since_last=999" >> $GITHUB_OUTPUT
echo "last_release_tag=none" >> $GITHUB_OUTPUT
else
echo "Last v2 release tag: $LAST_TAG"
echo "last_release_tag=$LAST_TAG" >> $GITHUB_OUTPUT
# Count commits since last release affecting v2 or root files
COMMITS_COUNT=$(git rev-list --count ${LAST_TAG}..HEAD -- v2/ website/ README.md CHANGELOG.md || echo "0")
echo "Commits since last v2 release: $COMMITS_COUNT"
echo "commits_since_last=$COMMITS_COUNT" >> $GITHUB_OUTPUT
if [ "$COMMITS_COUNT" -gt 0 ] || [ "${{ github.event.inputs.force_release }}" == "true" ]; then
echo "✅ Changes detected or forced release"
echo "has_changes=true" >> $GITHUB_OUTPUT
else
echo " No changes detected since last release"
echo "has_changes=false" >> $GITHUB_OUTPUT
fi
fi
detect-v3-changes:
name: Detect v3-alpha Changes
runs-on: ubuntu-latest
needs: check-permissions
if: needs.check-permissions.outputs.authorized == 'true'
outputs:
has_changes: ${{ steps.changes.outputs.has_changes }}
commits_since_last: ${{ steps.changes.outputs.commits_since_last }}
last_release_tag: ${{ steps.changes.outputs.last_release_tag }}
steps:
- name: Checkout v3-alpha branch
uses: actions/checkout@v4
with:
ref: v3-alpha
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- name: Check for v3-alpha changes since last release
id: changes
run: |
echo "🔍 Checking for v3-alpha changes since last release..."
# Find the last v3 alpha release tag
LAST_TAG=$(git tag -l "v3.*-alpha.*" --sort=-version:refname | head -n 1)
if [ -z "$LAST_TAG" ]; then
echo "No previous v3-alpha tags found, assuming first release"
LAST_TAG=$(git rev-list --max-parents=0 HEAD)
echo "has_changes=true" >> $GITHUB_OUTPUT
echo "commits_since_last=999" >> $GITHUB_OUTPUT
echo "last_release_tag=none" >> $GITHUB_OUTPUT
else
echo "Last v3-alpha release tag: $LAST_TAG"
echo "last_release_tag=$LAST_TAG" >> $GITHUB_OUTPUT
# Count commits since last release affecting v3 or docs
COMMITS_COUNT=$(git rev-list --count ${LAST_TAG}..HEAD -- v3/ docs/ || echo "0")
echo "Commits since last v3-alpha release: $COMMITS_COUNT"
echo "commits_since_last=$COMMITS_COUNT" >> $GITHUB_OUTPUT
if [ "$COMMITS_COUNT" -gt 0 ] || [ "${{ github.event.inputs.force_release }}" == "true" ]; then
echo "✅ Changes detected or forced release"
echo "has_changes=true" >> $GITHUB_OUTPUT
else
echo " No changes detected since last release"
echo "has_changes=false" >> $GITHUB_OUTPUT
fi
fi
release-v2:
name: Create v2 Release
runs-on: ubuntu-latest
needs: [check-permissions, detect-v2-changes]
if: |
needs.check-permissions.outputs.authorized == 'true' &&
needs.detect-v2-changes.outputs.has_changes == 'true'
outputs:
version: ${{ steps.release.outputs.version }}
release_notes: ${{ steps.release.outputs.release_notes }}
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Go
uses: actions/setup-go@v4
with:
go-version: ${{ env.GO_VERSION }}
- name: Run v2 release script and extract notes
id: release
run: |
echo "🚀 Running v2 release script..."
cd v2/tools/release
# Run release script and capture output
RELEASE_OUTPUT=$(go run release.go 2>&1)
echo "$RELEASE_OUTPUT"
# Extract version from output or version file
NEW_VERSION=$(cat ../../cmd/wails/internal/version.txt)
echo "version=$NEW_VERSION" >> $GITHUB_OUTPUT
# Extract release notes from delimited output
RELEASE_NOTES=$(echo "$RELEASE_OUTPUT" | sed -n '/=== RELEASE NOTES FOR/,/=== END RELEASE NOTES ===/p' | sed '1d;$d')
# Save release notes to file for multiline output
echo "$RELEASE_NOTES" > ../../../release_notes_v2.md
# Set output (escape for GitHub Actions)
{
echo "release_notes<<EOF"
echo "$RELEASE_NOTES"
echo "EOF"
} >> $GITHUB_OUTPUT
echo "✅ v2 release script completed - version: $NEW_VERSION"
- name: Create v2 git tag and release
if: github.event.inputs.dry_run != 'true'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
VERSION="${{ steps.release.outputs.version }}"
echo "📝 Creating v2 release: $VERSION"
# Configure git
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
# Commit the changelog changes
git add website/src/pages/changelog.mdx v2/cmd/wails/internal/version.txt
git commit -m "chore: release $VERSION
Automated release created by GitHub Actions
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>"
# Create and push tag
git tag -a "$VERSION" -m "Release $VERSION"
git push origin master
git push origin "$VERSION"
# Create GitHub release with notes
gh release create "$VERSION" \
--title "Release $VERSION" \
--notes-file release_notes_v2.md \
--target master
- name: Log dry-run results for v2
if: github.event.inputs.dry_run == 'true'
run: |
echo "🧪 DRY RUN - Would have created v2 release:"
echo "Version: ${{ steps.release.outputs.version }}"
echo "Release Notes:"
cat release_notes_v2.md
release-v3:
name: Create v3-alpha Release
runs-on: ubuntu-latest
needs: [check-permissions, detect-v3-changes]
if: |
needs.check-permissions.outputs.authorized == 'true' &&
needs.detect-v3-changes.outputs.has_changes == 'true'
outputs:
version: ${{ steps.release.outputs.version }}
release_notes: ${{ steps.release.outputs.release_notes }}
steps:
- name: Checkout v3-alpha branch
uses: actions/checkout@v4
with:
ref: v3-alpha
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Go
uses: actions/setup-go@v4
with:
go-version: ${{ env.GO_VERSION }}
- name: Run v3 release script and extract notes
id: release
run: |
echo "🚀 Running v3-alpha release script..."
cd v3/tasks/release
# Run release script and capture output
RELEASE_OUTPUT=$(go run release.go 2>&1)
echo "$RELEASE_OUTPUT"
# Extract version from output or version file
NEW_VERSION=$(cat ../../internal/version/version.txt)
echo "version=$NEW_VERSION" >> $GITHUB_OUTPUT
# Extract release notes from delimited output
RELEASE_NOTES=$(echo "$RELEASE_OUTPUT" | sed -n '/=== RELEASE NOTES FOR/,/=== END RELEASE NOTES ===/p' | sed '1d;$d')
# Save release notes to file for multiline output
echo "$RELEASE_NOTES" > ../../../release_notes_v3.md
# Set output (escape for GitHub Actions)
{
echo "release_notes<<EOF"
echo "$RELEASE_NOTES"
echo "EOF"
} >> $GITHUB_OUTPUT
echo "✅ v3-alpha release script completed - version: $NEW_VERSION"
- name: Create v3-alpha git tag and release
if: github.event.inputs.dry_run != 'true'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
VERSION="${{ steps.release.outputs.version }}"
echo "📝 Creating v3-alpha release: $VERSION"
# Configure git
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
# Commit the changelog changes
git add docs/src/content/docs/changelog.mdx v3/internal/version/version.txt
git commit -m "chore: release $VERSION
Automated v3-alpha release created by GitHub Actions
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>"
# Create and push tag
git tag -a "$VERSION" -m "Release $VERSION"
git push origin v3-alpha
git push origin "$VERSION"
# Create GitHub release with notes
gh release create "$VERSION" \
--title "Release $VERSION" \
--notes-file release_notes_v3.md \
--target v3-alpha \
--prerelease
- name: Log dry-run results for v3-alpha
if: github.event.inputs.dry_run == 'true'
run: |
echo "🧪 DRY RUN - Would have created v3-alpha release:"
echo "Version: ${{ steps.release.outputs.version }}"
echo "Release Notes:"
cat release_notes_v3.md
summary:
name: Release Summary
runs-on: ubuntu-latest
needs: [check-permissions, detect-v2-changes, detect-v3-changes, release-v2, release-v3]
if: always() && needs.check-permissions.outputs.authorized == 'true'
steps:
- name: Create release summary
run: |
echo "# 🚀 Automated Release Summary" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "**Repository**: ${{ github.repository }}" >> $GITHUB_STEP_SUMMARY
echo "**Triggered by**: ${{ github.actor }}" >> $GITHUB_STEP_SUMMARY
echo "**Dry Run Mode**: ${{ github.event.inputs.dry_run || 'false' }}" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
# v2 Summary
echo "## v2 Release" >> $GITHUB_STEP_SUMMARY
if [ "${{ needs.detect-v2-changes.outputs.has_changes }}" == "true" ]; then
if [ "${{ needs.release-v2.result }}" == "success" ]; then
echo "✅ **v2 Release**: Created successfully" >> $GITHUB_STEP_SUMMARY
echo " - Version: ${{ needs.release-v2.outputs.version }}" >> $GITHUB_STEP_SUMMARY
echo " - Commits since last: ${{ needs.detect-v2-changes.outputs.commits_since_last }}" >> $GITHUB_STEP_SUMMARY
else
echo "❌ **v2 Release**: Failed" >> $GITHUB_STEP_SUMMARY
fi
else
echo "⏭️ **v2 Release**: Skipped (no changes)" >> $GITHUB_STEP_SUMMARY
echo " - Commits since last: ${{ needs.detect-v2-changes.outputs.commits_since_last }}" >> $GITHUB_STEP_SUMMARY
fi
# v3 Summary
echo "## v3-alpha Release" >> $GITHUB_STEP_SUMMARY
if [ "${{ needs.detect-v3-changes.outputs.has_changes }}" == "true" ]; then
if [ "${{ needs.release-v3.result }}" == "success" ]; then
echo "✅ **v3-alpha Release**: Created successfully" >> $GITHUB_STEP_SUMMARY
echo " - Version: ${{ needs.release-v3.outputs.version }}" >> $GITHUB_STEP_SUMMARY
echo " - Commits since last: ${{ needs.detect-v3-changes.outputs.commits_since_last }}" >> $GITHUB_STEP_SUMMARY
else
echo "❌ **v3-alpha Release**: Failed" >> $GITHUB_STEP_SUMMARY
fi
else
echo "⏭️ **v3-alpha Release**: Skipped (no changes)" >> $GITHUB_STEP_SUMMARY
echo " - Commits since last: ${{ needs.detect-v3-changes.outputs.commits_since_last }}" >> $GITHUB_STEP_SUMMARY
fi
echo "" >> $GITHUB_STEP_SUMMARY
echo "---" >> $GITHUB_STEP_SUMMARY
echo "🤖 **Automated Release System** | Generated with [Claude Code](https://claude.ai/code)" >> $GITHUB_STEP_SUMMARY

282
.github/workflows/build-and-test-v3.yml vendored Normal file
View file

@ -0,0 +1,282 @@
name: Build + Test v3
on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
branches:
- v3-alpha
pull_request_review:
types: [submitted]
branches:
- v3-alpha
jobs:
check_approval:
name: Check PR Approval
runs-on: ubuntu-latest
if: github.base_ref == 'v3-alpha'
outputs:
approved: ${{ steps.check.outputs.approved }}
steps:
- name: Check if PR is approved
id: check
run: |
if [[ "${{ github.event.review.state }}" == "approved" || "${{ github.event.pull_request.approved }}" == "true" ]]; then
echo "approved=true" >> $GITHUB_OUTPUT
else
echo "approved=false" >> $GITHUB_OUTPUT
fi
test_js:
name: Run JS Tests
needs: check_approval
runs-on: ubuntu-latest
if: github.base_ref == 'v3-alpha'
strategy:
matrix:
node-version: [20.x]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Install Task
uses: arduino/setup-task@v2
with:
version: 3.x
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Install dependencies
working-directory: v3/internal/runtime/desktop/@wailsio/runtime
run: |
npm ci
npx --yes esbuild@latest --version
- name: Clean build artifacts
working-directory: v3/internal/runtime/desktop/@wailsio/runtime
run: npm run clean
- name: Type-check runtime
working-directory: v3
run: task runtime:check
- name: Test runtime
working-directory: v3
run: task runtime:test
- name: Check that the bundled runtime builds
working-directory: v3
run: task runtime:build
- name: Check that the npm package builds
working-directory: v3/internal/runtime/desktop/@wailsio/runtime
run: npm run build
- name: Pack runtime for template tests
working-directory: v3/internal/runtime/desktop/@wailsio/runtime
run: npm pack
- name: Store runtime build artifacts
uses: actions/upload-artifact@v4
with:
name: runtime-build-artifacts
path: |
v3/internal/runtime/desktop/@wailsio/runtime/dist/
v3/internal/runtime/desktop/@wailsio/runtime/types/
v3/internal/runtime/desktop/@wailsio/runtime/tsconfig.tsbuildinfo
- name: Store runtime package
uses: actions/upload-artifact@v4
with:
name: runtime-package
path: v3/internal/runtime/desktop/@wailsio/runtime/*.tgz
test_go:
name: Run Go Tests v3
needs: [check_approval, test_js]
runs-on: ${{ matrix.os }}
if: github.base_ref == 'v3-alpha'
strategy:
fail-fast: false
matrix:
os: [windows-latest, ubuntu-latest, macos-latest]
go-version: [1.24]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install linux dependencies
uses: awalsh128/cache-apt-pkgs-action@latest
if: matrix.os == 'ubuntu-latest'
with:
packages: libgtk-3-dev libwebkit2gtk-4.1-dev build-essential pkg-config xvfb x11-xserver-utils at-spi2-core xdg-desktop-portal-gtk
version: 1.0
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: ${{ matrix.go-version }}
cache: true
cache-dependency-path: "v3/go.sum"
- name: Install Task
uses: arduino/setup-task@v2
with:
version: 3.x
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Retrieve runtime build artifacts
uses: actions/download-artifact@v4
with:
name: runtime-build-artifacts
path: v3/internal/runtime/desktop/@wailsio/runtime/
- name: Build Examples
working-directory: v3
run: |
echo "Starting example compilation tests..."
task test:examples
echo "Example compilation tests completed successfully"
- name: Run tests (mac)
if: matrix.os == 'macos-latest'
env:
CGO_LDFLAGS: -framework UniformTypeIdentifiers -mmacosx-version-min=10.13
working-directory: v3
run: go test -v ./...
- name: Run tests (windows)
if: matrix.os == 'windows-latest'
working-directory: v3
run: go test -v ./...
- name: Run tests (ubuntu)
if: matrix.os == 'ubuntu-latest'
working-directory: v3
run: >
xvfb-run --auto-servernum
sh -c '
dbus-update-activation-environment --systemd --all &&
go test -v ./...
'
- name: Typecheck binding generator output
working-directory: v3
run: task generator:test:check
cleanup:
name: Cleanup build artifacts
if: always()
needs: [test_js, test_go, test_templates]
runs-on: ubuntu-latest
steps:
- uses: geekyeggo/delete-artifact@v5
with:
name: |
runtime-build-artifacts
runtime-package
failOnError: false
test_templates:
name: Test Templates
needs: [test_js, test_go]
runs-on: ${{ matrix.os }}
if: github.base_ref == 'v3-alpha'
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
template:
- svelte
- svelte-ts
- vue
- vue-ts
- react
- react-ts
- preact
- preact-ts
- lit
- lit-ts
- vanilla
- vanilla-ts
go-version: [1.24]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install linux dependencies
uses: awalsh128/cache-apt-pkgs-action@latest
if: matrix.os == 'ubuntu-latest'
with:
packages: libgtk-3-dev libwebkit2gtk-4.1-dev build-essential pkg-config
version: 1.0
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: ${{ matrix.go-version }}
cache: true
cache-dependency-path: "v3/go.sum"
- name: Install Task
uses: arduino/setup-task@v2
with:
version: 3.x
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Build Wails3 CLI
working-directory: v3
run: |
task install
wails3 doctor
- name: Download runtime package
uses: actions/download-artifact@v4
with:
name: runtime-package
path: wails-runtime-temp
- name: Generate template '${{ matrix.template }}'
shell: bash
run: |
# Get absolute path - use pwd -W on Windows for native paths, pwd elsewhere
if [[ "$RUNNER_OS" == "Windows" ]]; then
RUNTIME_TGZ="$(cd wails-runtime-temp && pwd -W)/$(ls wails-runtime-temp/*.tgz | xargs basename)"
else
RUNTIME_TGZ="$(cd wails-runtime-temp && pwd)/$(ls wails-runtime-temp/*.tgz | xargs basename)"
fi
mkdir -p ./test-${{ matrix.template }}
cd ./test-${{ matrix.template }}
wails3 init -n ${{ matrix.template }} -t ${{ matrix.template }}
cd ${{ matrix.template }}/frontend
# Replace @wailsio/runtime version with local tarball
npm pkg set dependencies.@wailsio/runtime="file://$RUNTIME_TGZ"
cd ..
wails3 build
build_results:
if: ${{ always() }}
runs-on: ubuntu-latest
name: v3 Build Results
needs: [test_go, test_js, test_templates]
steps:
- run: |
go_result="${{ needs.test_go.result }}"
js_result="${{ needs.test_js.result }}"
templates_result="${{ needs.test_templates.result }}"
if [[ $go_result == "success" || $go_result == "skipped" ]] && \
[[ $js_result == "success" || $js_result == "skipped" ]] && \
[[ $templates_result == "success" || $templates_result == "skipped" ]]; then
echo "All required jobs succeeded or were skipped"
exit 0
else
echo "One or more required jobs failed"
exit 1
fi

View file

@ -0,0 +1,74 @@
name: Changelog Validation (v3)
on:
pull_request:
branches: [ v3-alpha ]
workflow_dispatch:
inputs:
pr_number:
description: 'PR number to validate (for manual testing)'
required: true
type: string
jobs:
validate-changelog:
runs-on: ubuntu-latest
if: github.event_name == 'pull_request' || github.event.inputs.pr_number
permissions:
contents: write
pull-requests: write
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha || format('refs/pull/{0}/head', github.event.inputs.pr_number) }}
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Go
uses: actions/setup-go@v4
with:
go-version: '1.23'
- name: Get PR information
id: pr_info
run: |
if [ "${{ github.event_name }}" = "pull_request" ]; then
echo "pr_number=${{ github.event.pull_request.number }}" >> $GITHUB_OUTPUT
echo "base_ref=${{ github.event.pull_request.base.ref }}" >> $GITHUB_OUTPUT
else
echo "pr_number=${{ github.event.inputs.pr_number }}" >> $GITHUB_OUTPUT
echo "base_ref=v3-alpha" >> $GITHUB_OUTPUT
fi
- name: Check if changelog was modified
id: changelog_check
run: |
git fetch origin ${{ steps.pr_info.outputs.base_ref }}
if git diff --name-only origin/${{ steps.pr_info.outputs.base_ref }}..HEAD | grep -q "v3/UNRELEASED_CHANGELOG.md"; then
echo "changelog_modified=true" >> $GITHUB_OUTPUT
echo "✅ UNRELEASED_CHANGELOG.md was modified in this PR"
else
echo "changelog_modified=false" >> $GITHUB_OUTPUT
echo "⚠️ UNRELEASED_CHANGELOG.md was not modified"
fi
- name: Comment on PR about missing changelog
if: steps.changelog_check.outputs.changelog_modified == 'false' && github.event_name == 'pull_request'
uses: actions/github-script@v7
with:
script: |
const author = context.payload.pull_request.user.login;
const message = '## ⚠️ Missing Changelog Update\n\n' +
`Hi @${author}, please update \`v3/UNRELEASED_CHANGELOG.md\` with a description of your changes.\n\n` +
'This helps us keep track of changes for the next release.';
await github.rest.issues.createComment({
issue_number: ${{ steps.pr_info.outputs.pr_number }},
owner: context.repo.owner,
repo: context.repo.repo,
body: message
});

View file

@ -29,7 +29,12 @@ jobs:
with: with:
commit-message: "chore: update sponsors.svg" commit-message: "chore: update sponsors.svg"
add-paths: "website/static/img/sponsors.svg" add-paths: "website/static/img/sponsors.svg"
title: Update Sponsor Image title: "chore: update sponsors.svg"
body: Generated new image body: |
Auto-generated by the sponsor image workflow
[skip ci] [skip actions]
branch: update-sponsors branch: update-sponsors
base: master
delete-branch: true delete-branch: true
draft: false

View file

@ -0,0 +1,77 @@
name: Issue Triage Automation
on:
issues:
types: [opened, reopened, labeled, unlabeled]
jobs:
triage:
runs-on: ubuntu-latest
permissions:
issues: write
contents: read
steps:
# Request more info for unclear bug reports
- name: Request more info
uses: actions/github-script@v6
if: |
contains(github.event.issue.labels.*.name, 'bug') &&
!contains(github.event.issue.body, 'wails doctor') &&
!contains(github.event.issue.body, 'reproduction')
with:
script: |
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: `👋 Thanks for reporting this issue! To help us investigate, could you please:
1. Add the output of \`wails doctor\` if not already included
2. Provide clear steps to reproduce the issue
3. If possible, create a minimal reproduction of the issue
This will help us resolve your issue much faster. Thank you!`
});
github.rest.issues.addLabels({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
labels: ['awaiting feedback']
});
# Prioritize security issues
- name: Prioritize security issues
uses: actions/github-script@v6
if: contains(github.event.issue.labels.*.name, 'security')
with:
script: |
github.rest.issues.addLabels({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
labels: ['high-priority']
});
# Tag version-specific issues for project boards
- name: Add to v2 project
uses: actions/github-script@v6
if: |
contains(github.event.issue.labels.*.name, 'v2-only') &&
!contains(github.event.issue.labels.*.name, 'v3-alpha')
with:
script: |
// Replace PROJECT_ID with your actual GitHub project ID
// This is a placeholder as the actual implementation would require
// GraphQL API calls to add to a project board
console.log('Would add to v2 project board');
# Tag version-specific issues for project boards
- name: Add to v3 project
uses: actions/github-script@v6
if: contains(github.event.issue.labels.*.name, 'v3-alpha')
with:
script: |
// Replace PROJECT_ID with your actual GitHub project ID
// This is a placeholder as the actual implementation would require
// GraphQL API calls to add to a project board
console.log('Would add to v3 project board');

210
.github/workflows/nightly-release-v3.yml vendored Normal file
View file

@ -0,0 +1,210 @@
name: Nightly Release v3-alpha
on:
schedule:
- cron: '0 2 * * *' # 2 AM UTC daily
workflow_dispatch:
inputs:
force_release:
description: 'Force release even if no changes detected'
required: false
default: false
type: boolean
dry_run:
description: 'Run in dry-run mode (no actual release)'
required: false
default: true
type: boolean
jobs:
nightly-release:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: read
actions: write
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: v3-alpha
fetch-depth: 0
token: ${{ secrets.WAILS_REPO_TOKEN || github.token }}
- name: Setup Go
uses: actions/setup-go@v4
with:
go-version: '1.24'
cache: true
cache-dependency-path: 'v3/go.sum'
- name: Install Task
uses: arduino/setup-task@v2
with:
version: 3.x
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Git
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
# Configure git to use the token for authentication
git config --global url."https://x-access-token:${{ secrets.WAILS_REPO_TOKEN || github.token }}@github.com/".insteadOf "https://github.com/"
- name: Check for existing release tag
id: check_tag
run: |
if git describe --tags --exact-match HEAD 2>/dev/null; then
echo "has_tag=true" >> $GITHUB_OUTPUT
echo "tag=$(git describe --tags --exact-match HEAD)" >> $GITHUB_OUTPUT
else
echo "has_tag=false" >> $GITHUB_OUTPUT
echo "tag=" >> $GITHUB_OUTPUT
fi
- name: Check for unreleased changelog content
id: changelog_check
run: |
echo "🔍 Checking UNRELEASED_CHANGELOG.md for content..."
# Run the release script in check mode to see if there's content
cd v3/tasks/release
# Use the release script itself to check for content
if go run release.go --check-only 2>/dev/null; then
echo "has_unreleased_content=true" >> $GITHUB_OUTPUT
echo "✅ Found unreleased changelog content"
else
echo "has_unreleased_content=false" >> $GITHUB_OUTPUT
echo " No unreleased changelog content found"
fi
- name: Quick change detection and early exit
id: quick_check
run: |
echo "🔍 Quick check for changes to determine if we should continue..."
# First check if we have unreleased changelog content
if [ "${{ steps.changelog_check.outputs.has_unreleased_content }}" == "true" ]; then
echo "✅ Found unreleased changelog content, proceeding with release"
echo "has_changes=true" >> $GITHUB_OUTPUT
echo "should_continue=true" >> $GITHUB_OUTPUT
echo "reason=Found unreleased changelog content" >> $GITHUB_OUTPUT
exit 0
fi
# If no unreleased changelog content, check for git changes as fallback
echo "No unreleased changelog content found, checking for git changes..."
# Check if current commit has a release tag
if git describe --tags --exact-match HEAD 2>/dev/null; then
CURRENT_TAG=$(git describe --tags --exact-match HEAD)
echo "Current commit has release tag: $CURRENT_TAG"
# For tagged commits, check if there are changes since the tag
COMMIT_COUNT=$(git rev-list ${CURRENT_TAG}..HEAD --count)
if [ "$COMMIT_COUNT" -eq 0 ]; then
echo "has_changes=false" >> $GITHUB_OUTPUT
echo "should_continue=false" >> $GITHUB_OUTPUT
echo "reason=No changes since existing tag $CURRENT_TAG and no unreleased changelog content" >> $GITHUB_OUTPUT
else
echo "has_changes=true" >> $GITHUB_OUTPUT
echo "should_continue=true" >> $GITHUB_OUTPUT
fi
else
# No current tag, check against latest release
LATEST_TAG=$(git tag --list "v3.0.0-alpha.*" | sort -V | tail -1)
if [ -z "$LATEST_TAG" ]; then
echo "No previous release found, proceeding with release"
echo "has_changes=true" >> $GITHUB_OUTPUT
echo "should_continue=true" >> $GITHUB_OUTPUT
else
COMMIT_COUNT=$(git rev-list ${LATEST_TAG}..HEAD --count)
if [ "$COMMIT_COUNT" -gt 0 ]; then
echo "Found $COMMIT_COUNT commits since $LATEST_TAG"
echo "has_changes=true" >> $GITHUB_OUTPUT
echo "should_continue=true" >> $GITHUB_OUTPUT
else
echo "has_changes=false" >> $GITHUB_OUTPUT
echo "should_continue=false" >> $GITHUB_OUTPUT
echo "reason=No changes since latest release $LATEST_TAG and no unreleased changelog content" >> $GITHUB_OUTPUT
fi
fi
fi
- name: Early exit - No changes detected
if: |
steps.quick_check.outputs.should_continue == 'false' &&
github.event.inputs.force_release != 'true'
run: |
echo "🛑 EARLY EXIT: ${{ steps.quick_check.outputs.reason }}"
echo ""
echo " No changes detected since last release and force_release is not enabled."
echo " Workflow will exit early to save resources."
echo ""
echo " To force a release anyway, run this workflow with 'force_release=true'"
echo ""
echo "## 🛑 Early Exit Summary" >> $GITHUB_STEP_SUMMARY
echo "**Reason:** ${{ steps.quick_check.outputs.reason }}" >> $GITHUB_STEP_SUMMARY
echo "**Action:** Workflow exited early to save resources" >> $GITHUB_STEP_SUMMARY
echo "**Force Release:** Set 'force_release=true' to override this behavior" >> $GITHUB_STEP_SUMMARY
exit 0
- name: Continue with release process
if: |
steps.quick_check.outputs.should_continue == 'true' ||
github.event.inputs.force_release == 'true'
run: |
echo "✅ Proceeding with release process..."
if [ "${{ github.event.inputs.force_release }}" == "true" ]; then
echo "🔨 FORCE RELEASE: Overriding change detection"
fi
- name: Run release script
id: release
if: |
steps.quick_check.outputs.should_continue == 'true' ||
github.event.inputs.force_release == 'true'
env:
WAILS_REPO_TOKEN: ${{ secrets.WAILS_REPO_TOKEN || github.token }}
GITHUB_TOKEN: ${{ secrets.WAILS_REPO_TOKEN || github.token }}
run: |
cd v3/tasks/release
ARGS=()
if [ "${{ github.event.inputs.dry_run }}" == "true" ]; then
ARGS+=(--dry-run)
fi
go run release.go "${ARGS[@]}"
- name: Summary
if: always()
run: |
if [ "${{ github.event.inputs.dry_run }}" == "true" ]; then
echo "## 🧪 DRY RUN Release Summary" >> $GITHUB_STEP_SUMMARY
else
echo "## 🚀 Nightly Release Summary" >> $GITHUB_STEP_SUMMARY
fi
echo "================================" >> $GITHUB_STEP_SUMMARY
if [ -n "${{ steps.release.outputs.release_version }}" ]; then
echo "- **Version:** ${{ steps.release.outputs.release_version }}" >> $GITHUB_STEP_SUMMARY
echo "- **Tag:** ${{ steps.release.outputs.release_tag }}" >> $GITHUB_STEP_SUMMARY
echo "- **Status:** ${{ steps.release.outcome == 'success' && '✅ Success' || '⚠️ Failed' }}" >> $GITHUB_STEP_SUMMARY
echo "- **Mode:** ${{ steps.release.outputs.release_dry_run == 'true' && '🧪 Dry Run' || '🚀 Live release' }}" >> $GITHUB_STEP_SUMMARY
if [ -n "${{ steps.release.outputs.release_url }}" ]; then
echo "- **Release URL:** ${{ steps.release.outputs.release_url }}" >> $GITHUB_STEP_SUMMARY
fi
echo "" >> $GITHUB_STEP_SUMMARY
echo "### Changelog" >> $GITHUB_STEP_SUMMARY
if [ "${{ steps.changelog_check.outputs.has_unreleased_content }}" == "true" ]; then
echo "✅ Unreleased changelog processed and reset." >> $GITHUB_STEP_SUMMARY
else
echo " No unreleased changelog content detected." >> $GITHUB_STEP_SUMMARY
fi
else
echo "- Release script did not run (skipped or failed before execution)." >> $GITHUB_STEP_SUMMARY
fi

View file

@ -1,20 +1,23 @@
name: PR Checks name: PR Checks (master)
on: on:
pull_request: pull_request:
branches:
- master
pull_request_review: pull_request_review:
types: [submitted] types: [submitted]
branches:
- master
jobs: jobs:
check_docs: check_docs:
name: Check Docs name: Check Docs
if: ${{github.repository == 'wailsapp/wails' && contains(github.head_ref,'feature/')}} if: ${{github.repository == 'wailsapp/wails' && github.base_ref == 'master'}}
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
- name: Verify Changed files - name: Verify Changed files
uses: tj-actions/verify-changed-files@v17 uses: step-security/changed-files@3dbe17c78367e7d60f00d78ae6781a35be47b4a1 # v45.0.1
id: verify-changed-files id: verify-changed-files
with: with:
files: | files: |
@ -26,47 +29,28 @@ jobs:
run: | run: |
echo "::warning::Feature branch does not contain any changes to the website." echo "::warning::Feature branch does not contain any changes to the website."
# lint_go:
# name: Run Go Linters
# runs-on: ubuntu-latest
# steps:
# - name: Checkout code
# uses: actions/checkout@v4
#
# - name: Setup Go
# uses: actions/setup-go@v4
# with:
# go-version: "1.21"
#
# - name: Update go modules
# working-directory: ./v2
# run: go mod tidy
#
# - name: Run Linter
# uses: golangci/golangci-lint-action@v3
# with:
# version: v1.54
# working-directory: ./v2
# args: --timeout=10m0s --config ./.golangci.yml
test_go: test_go:
name: Run Go Tests name: Run Go Tests
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
if: github.event.review.state == 'approved' if: >
github.event.review.state == 'approved' &&
github.repository == 'wailsapp/wails' &&
github.base_ref == 'master' &&
github.event.pull_request.head.ref != 'update-sponsors'
strategy: strategy:
matrix: matrix:
os: [ubuntu-22.04, windows-latest, macos-latest, ubuntu-24.04] os: [ubuntu-22.04, windows-latest, macos-latest, ubuntu-24.04]
go-version: ['1.21'] go-version: ['1.23']
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v3 uses: actions/checkout@v3
- name: Install linux dependencies ( 22.04 ) - name: Install linux dependencies (22.04)
if: matrix.os == 'ubuntu-22.04' if: matrix.os == 'ubuntu-22.04'
run: sudo apt-get update -y && sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev build-essential pkg-config run: sudo apt-get update -y && sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev build-essential pkg-config
- name: Install linux dependencies ( 24.04 ) - name: Install linux dependencies (24.04)
if: matrix.os == 'ubuntu-24.04' if: matrix.os == 'ubuntu-24.04'
run: sudo apt-get update -y && sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.1-dev build-essential pkg-config run: sudo apt-get update -y && sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.1-dev build-essential pkg-config

119
.github/workflows/publish-npm.yml vendored Normal file
View file

@ -0,0 +1,119 @@
on:
push:
branches: ['v3-alpha']
workflow_dispatch:
concurrency:
group: publish-npm-v3
cancel-in-progress: true
jobs:
detect:
name: Detect committed changes
if: github.event_name != 'workflow_dispatch'
outputs:
changed: ${{ steps.package-json-changes.outputs.any_modified == 'true' || steps.source-changes.outputs.any_modified == 'true' }}
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ github.sha }}
persist-credentials: 'true'
- name: Detect committed package.json changes
id: package-json-changes
uses: step-security/changed-files@3dbe17c78367e7d60f00d78ae6781a35be47b4a1 # v45.0.1
with:
files: |
v3/internal/runtime/desktop/@wailsio/runtime/package.json
v3/internal/runtime/desktop/@wailsio/runtime/package-lock.json
- name: Detect committed source changes
if: >-
steps.package-json-changes.outputs.any_modified != 'true'
id: source-changes
uses: step-security/changed-files@3dbe17c78367e7d60f00d78ae6781a35be47b4a1 # v45.0.1
with:
files: |
v3/internal/runtime/Taskfile.yaml
v3/internal/runtime/desktop/@wailsio/compiled/main.js
v3/internal/runtime/desktop/@wailsio/runtime/tsconfig.json
v3/internal/runtime/desktop/@wailsio/runtime/src/**
v3/pkg/events/events.txt
v3/tasks/events/**
rebuild_and_publish:
name: Rebuild and publish
needs: [detect]
if: >-
!failure() && !cancelled()
&& (github.event_name == 'workflow_dispatch' || needs.detect.outputs.changed == 'true')
runs-on: ubuntu-latest
permissions:
contents: write
actions: read
pull-requests: read
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: 'v3-alpha'
token: ${{ secrets.WAILS_REPO_TOKEN || github.token }}
- name: Configure git
run: |
git config --global user.email "github-actions@github.com"
git config --global user.name "GitHub Actions"
git config --global url."https://x-access-token:${{ secrets.WAILS_REPO_TOKEN || github.token }}@github.com/".insteadOf "https://github.com/"
- name: Install Task
uses: arduino/setup-task@v2
with:
version: 3.x
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Use Node.js 20
uses: actions/setup-node@v4
with:
node-version: "20"
- name: Install dependencies
working-directory: v3/internal/runtime/desktop/@wailsio/runtime
run: |
npm ci
npx --yes esbuild@latest --version
- name: Clean build artifacts
working-directory: v3/internal/runtime/desktop/@wailsio/runtime
run: npm run clean
- name: Build bundled runtime
working-directory: v3
run: task runtime:build
- name: Test+Build npm package
working-directory: v3/internal/runtime/desktop/@wailsio/runtime
run: |
npm test
npm run build
- name: Bump version
id: bump-version
working-directory: v3/internal/runtime/desktop/@wailsio/runtime
run: |
echo "version=$(npm --no-git-tag-version --force version prerelease)" >> "$GITHUB_OUTPUT"
- name: Commit changes
run: |
git add .
git commit -m "[skip ci] Publish @wailsio/runtime ${{ steps.bump-version.outputs.version }}"
git push
- name: Publish npm package
uses: JS-DevTools/npm-publish@v3
with:
package: v3/internal/runtime/desktop/@wailsio/runtime
access: public
token: ${{ secrets.NPM_TOKEN }}

View file

@ -5,6 +5,7 @@ on:
branches: branches:
- main - main
- master - master
- v3-alpha
paths: paths:
- .github/workflows/semgrep.yml - .github/workflows/semgrep.yml
schedule: schedule:
@ -14,7 +15,7 @@ name: Semgrep
jobs: jobs:
semgrep: semgrep:
name: semgrep/ci name: semgrep/ci
runs-on: ubuntu-20.04 runs-on: ubuntu-24.04
env: env:
SEMGREP_APP_TOKEN: ${{ secrets.SEMGREP_APP_TOKEN }} SEMGREP_APP_TOKEN: ${{ secrets.SEMGREP_APP_TOKEN }}
container: container:

57
.github/workflows/stale-issues.yml vendored Normal file
View file

@ -0,0 +1,57 @@
name: Mark and Close Stale Issues
on:
schedule:
- cron: '0 1 * * *' # Run at 1 AM UTC every day
workflow_dispatch: # Allow manual triggering
jobs:
stale:
runs-on: ubuntu-latest
permissions:
issues: write
pull-requests: write
steps:
- uses: actions/stale@v9
with:
# General settings
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: 45
days-before-close: 10
stale-issue-label: 'stale'
operations-per-run: 250 # Increased from 50 to 250
# Issue specific settings
stale-issue-message: |
This issue has been automatically marked as stale because it has not had recent activity.
It will be closed if no further activity occurs within the next 10 days.
If this issue is still relevant, please add a comment to keep it open.
Thank you for your contributions.
close-issue-message: |
This issue has been automatically closed due to lack of activity.
Please feel free to reopen it if it's still relevant.
# PR specific settings - We will not mark PRs as stale
days-before-pr-stale: -1 # Disable PR staling
days-before-pr-close: -1 # Disable PR closing
# Exemptions
exempt-issue-labels: 'pinned,security,onhold,inprogress,Selected For Development,bug,enhancement,v3-alpha,high-priority'
exempt-all-issue-milestones: true
exempt-all-issue-assignees: true
# Protection for existing issues
exempt-issue-created-before: '2024-01-01T00:00:00Z'
start-date: '2025-06-01T00:00:00Z' # Don't start checking until June 1, 2025
# Only process issues, not PRs
only-labels: ''
any-of-labels: ''
remove-stale-when-updated: true
# Debug options
debug-only: false # Set to true to test without actually marking issues
ascending: true # Process older issues first

View file

@ -0,0 +1,218 @@
name: Test Nightly Releases (Dry Run)
permissions:
contents: read
on:
workflow_dispatch:
inputs:
dry_run:
description: 'Run in dry-run mode (no actual releases)'
required: false
default: true
type: boolean
test_branch:
description: 'Branch to test against'
required: false
default: 'master'
type: string
env:
GO_VERSION: '1.24'
jobs:
test-permissions:
name: Test Release Permissions
runs-on: ubuntu-latest
outputs:
authorized: ${{ steps.check.outputs.authorized }}
steps:
- name: Check if user is authorized
id: check
run: |
# Test authorization logic
AUTHORIZED_USERS="leaanthony"
if [[ "$AUTHORIZED_USERS" == *"${{ github.actor }}"* ]]; then
echo "✅ User ${{ github.actor }} is authorized"
echo "authorized=true" >> $GITHUB_OUTPUT
else
echo "❌ User ${{ github.actor }} is not authorized"
echo "authorized=false" >> $GITHUB_OUTPUT
fi
test-changelog-extraction:
name: Test Changelog Extraction
runs-on: ubuntu-latest
needs: test-permissions
if: needs.test-permissions.outputs.authorized == 'true'
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ github.event.inputs.test_branch }}
fetch-depth: 0
- name: Test v2 changelog extraction
run: |
echo "🧪 Testing v2 changelog extraction..."
CHANGELOG_FILE="website/src/pages/changelog.mdx"
if [ ! -f "$CHANGELOG_FILE" ]; then
echo "❌ v2 changelog file not found"
exit 1
fi
# Extract unreleased section
awk '
/^## \[Unreleased\]/ { found=1; next }
found && /^## / { exit }
found && !/^$/ { print }
' $CHANGELOG_FILE > v2_release_notes.md
echo "📝 v2 changelog content (first 10 lines):"
head -10 v2_release_notes.md || echo "No content found"
echo "Total lines: $(wc -l < v2_release_notes.md)"
- name: Test v3 changelog extraction (if accessible)
run: |
echo "🧪 Testing v3 changelog extraction..."
if git show v3-alpha:docs/src/content/docs/changelog.mdx > /dev/null 2>&1; then
echo "✅ v3 changelog accessible"
git show v3-alpha:docs/src/content/docs/changelog.mdx | awk '
/^## \[Unreleased\]/ { found=1; next }
found && /^## / { exit }
found && !/^$/ { print }
' > v3_release_notes.md
echo "📝 v3 changelog content (first 10 lines):"
head -10 v3_release_notes.md || echo "No content found"
echo "Total lines: $(wc -l < v3_release_notes.md)"
else
echo "⚠️ v3 changelog not accessible from current context"
fi
test-version-detection:
name: Test Version Detection
runs-on: ubuntu-latest
needs: test-permissions
if: needs.test-permissions.outputs.authorized == 'true'
outputs:
v2_current_version: ${{ steps.versions.outputs.v2_current }}
v2_next_patch: ${{ steps.versions.outputs.v2_next_patch }}
v2_next_minor: ${{ steps.versions.outputs.v2_next_minor }}
v2_next_major: ${{ steps.versions.outputs.v2_next_major }}
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Test version detection logic
id: versions
run: |
echo "🧪 Testing version detection..."
# Test v2 version parsing
if [ -f "v2/cmd/wails/internal/version.txt" ]; then
CURRENT_V2=$(cat v2/cmd/wails/internal/version.txt | sed 's/^v//')
echo "Current v2 version: v$CURRENT_V2"
echo "v2_current=v$CURRENT_V2" >> $GITHUB_OUTPUT
# Parse and increment
IFS='.' read -ra VERSION_PARTS <<< "$CURRENT_V2"
MAJOR=${VERSION_PARTS[0]}
MINOR=${VERSION_PARTS[1]}
PATCH=${VERSION_PARTS[2]}
PATCH_VERSION="v$MAJOR.$MINOR.$((PATCH + 1))"
MINOR_VERSION="v$MAJOR.$((MINOR + 1)).0"
MAJOR_VERSION="v$((MAJOR + 1)).0.0"
echo "v2_next_patch=$PATCH_VERSION" >> $GITHUB_OUTPUT
echo "v2_next_minor=$MINOR_VERSION" >> $GITHUB_OUTPUT
echo "v2_next_major=$MAJOR_VERSION" >> $GITHUB_OUTPUT
echo "✅ Patch: v$CURRENT_V2 → $PATCH_VERSION"
echo "✅ Minor: v$CURRENT_V2 → $MINOR_VERSION"
echo "✅ Major: v$CURRENT_V2 → $MAJOR_VERSION"
else
echo "❌ v2 version file not found"
fi
test-commit-analysis:
name: Test Commit Analysis
runs-on: ubuntu-latest
needs: test-permissions
if: needs.test-permissions.outputs.authorized == 'true'
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Test commit analysis
run: |
echo "🧪 Testing commit analysis..."
# Get recent commits for testing
echo "Recent commits:"
git log --oneline -10
# Test conventional commit detection
RECENT_COMMITS=$(git log --oneline --since="7 days ago")
echo "Commits from last 7 days:"
echo "$RECENT_COMMITS"
# Analyze for release type
RELEASE_TYPE="patch"
if echo "$RECENT_COMMITS" | grep -q "feat!\|fix!\|BREAKING CHANGE:"; then
RELEASE_TYPE="major"
elif echo "$RECENT_COMMITS" | grep -q "feat\|BREAKING CHANGE"; then
RELEASE_TYPE="minor"
fi
echo "✅ Detected release type: $RELEASE_TYPE"
test-summary:
name: Test Summary
runs-on: ubuntu-latest
needs: [test-permissions, test-changelog-extraction, test-version-detection, test-commit-analysis]
if: always()
steps:
- name: Print test results
run: |
echo "# 🧪 Nightly Release Workflow Test Results" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
if [ "${{ needs.test-permissions.result }}" == "success" ]; then
echo "✅ **Permissions Test**: Passed" >> $GITHUB_STEP_SUMMARY
else
echo "❌ **Permissions Test**: Failed" >> $GITHUB_STEP_SUMMARY
fi
if [ "${{ needs.test-changelog-extraction.result }}" == "success" ]; then
echo "✅ **Changelog Extraction**: Passed" >> $GITHUB_STEP_SUMMARY
else
echo "❌ **Changelog Extraction**: Failed" >> $GITHUB_STEP_SUMMARY
fi
if [ "${{ needs.test-version-detection.result }}" == "success" ]; then
echo "✅ **Version Detection**: Passed" >> $GITHUB_STEP_SUMMARY
echo " - Current v2: ${{ needs.test-version-detection.outputs.v2_current_version }}" >> $GITHUB_STEP_SUMMARY
echo " - Next patch: ${{ needs.test-version-detection.outputs.v2_next_patch }}" >> $GITHUB_STEP_SUMMARY
echo " - Next minor: ${{ needs.test-version-detection.outputs.v2_next_minor }}" >> $GITHUB_STEP_SUMMARY
echo " - Next major: ${{ needs.test-version-detection.outputs.v2_next_major }}" >> $GITHUB_STEP_SUMMARY
else
echo "❌ **Version Detection**: Failed" >> $GITHUB_STEP_SUMMARY
fi
if [ "${{ needs.test-commit-analysis.result }}" == "success" ]; then
echo "✅ **Commit Analysis**: Passed" >> $GITHUB_STEP_SUMMARY
else
echo "❌ **Commit Analysis**: Failed" >> $GITHUB_STEP_SUMMARY
fi
echo "" >> $GITHUB_STEP_SUMMARY
echo "**Note**: This was a dry-run test. No actual releases were created." >> $GITHUB_STEP_SUMMARY

11
.github/workflows/test-simple.yml vendored Normal file
View file

@ -0,0 +1,11 @@
name: Test Simple
on:
workflow_dispatch:
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Test
run: echo "Hello World"

View file

@ -0,0 +1,128 @@
name: Auto Release on Changelog Update
on:
push:
branches:
- v3-alpha
paths:
- 'v3/UNRELEASED_CHANGELOG.md'
workflow_dispatch:
inputs:
dry_run:
description: 'Run in dry-run mode (no actual release)'
required: false
default: false
type: boolean
jobs:
check-permissions:
name: Check Release Permissions
runs-on: ubuntu-latest
outputs:
authorized: ${{ steps.check.outputs.authorized }}
steps:
- name: Check if user is authorized for releases
id: check
run: |
# Only allow specific users to trigger releases
AUTHORIZED_USERS="leaanthony"
if [[ "$AUTHORIZED_USERS" == *"${{ github.actor }}"* ]]; then
echo "✅ User ${{ github.actor }} is authorized for releases"
echo "authorized=true" >> $GITHUB_OUTPUT
else
echo "❌ User ${{ github.actor }} is not authorized for releases"
echo "authorized=false" >> $GITHUB_OUTPUT
fi
trigger-release:
name: Trigger v3-alpha Release
permissions:
contents: read
runs-on: ubuntu-latest
needs: check-permissions
if: needs.check-permissions.outputs.authorized == 'true'
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: v3-alpha
fetch-depth: 0
token: ${{ secrets.WAILS_REPO_TOKEN || github.token }}
- name: Check for unreleased changelog content
id: changelog_check
run: |
echo "🔍 Checking UNRELEASED_CHANGELOG.md for content..."
cd v3
# Check if UNRELEASED_CHANGELOG.md has actual content beyond the template
if [ -f "UNRELEASED_CHANGELOG.md" ]; then
# Use a simple check for actual content (bullet points starting with -)
CONTENT_LINES=$(grep -E "^\s*-\s+[^[:space:]]" UNRELEASED_CHANGELOG.md | wc -l)
if [ "$CONTENT_LINES" -gt 0 ]; then
echo "✅ Found $CONTENT_LINES content lines in UNRELEASED_CHANGELOG.md"
echo "has_content=true" >> $GITHUB_OUTPUT
else
echo " No actual content found in UNRELEASED_CHANGELOG.md"
echo "has_content=false" >> $GITHUB_OUTPUT
fi
else
echo "❌ UNRELEASED_CHANGELOG.md not found"
echo "has_content=false" >> $GITHUB_OUTPUT
fi
- name: Trigger nightly release workflow
if: steps.changelog_check.outputs.has_content == 'true'
uses: actions/github-script@v7
with:
github-token: ${{ secrets.WAILS_REPO_TOKEN || github.token }}
script: |
const response = await github.rest.actions.createWorkflowDispatch({
owner: context.repo.owner,
repo: context.repo.repo,
workflow_id: 'nightly-release-v3.yml',
ref: 'v3-alpha',
inputs: {
force_release: 'true',
dry_run: '${{ github.event.inputs.dry_run || "false" }}'
}
});
console.log('🚀 Successfully triggered nightly release workflow');
console.log(`Workflow dispatch response status: ${response.status}`);
// Create a summary
core.summary
.addHeading('🚀 Auto Release Triggered')
.addRaw('The v3-alpha release workflow has been automatically triggered due to changes in UNRELEASED_CHANGELOG.md')
.addTable([
[{data: 'Trigger', header: true}, {data: 'Value', header: true}],
['Repository', context.repo.repo],
['Branch', 'v3-alpha'],
['Actor', context.actor],
['Dry Run', '${{ github.event.inputs.dry_run || "false" }}'],
['Force Release', 'true']
])
.addRaw('\n---\n*This release was automatically triggered by the unreleased-changelog-trigger workflow*')
.write();
- name: No content found
if: steps.changelog_check.outputs.has_content == 'false'
run: |
echo " No content found in UNRELEASED_CHANGELOG.md, skipping release trigger"
echo "## No Release Triggered" >> $GITHUB_STEP_SUMMARY
echo "**Reason:** UNRELEASED_CHANGELOG.md does not contain actual changelog content" >> $GITHUB_STEP_SUMMARY
echo "**Action:** No release workflow was triggered" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "To trigger a release, add actual changelog entries to the UNRELEASED_CHANGELOG.md file." >> $GITHUB_STEP_SUMMARY
- name: Unauthorized user
if: needs.check-permissions.outputs.authorized == 'false'
run: |
echo "❌ User ${{ github.actor }} is not authorized to trigger releases"
echo "## ❌ Unauthorized Release Attempt" >> $GITHUB_STEP_SUMMARY
echo "**User:** ${{ github.actor }}" >> $GITHUB_STEP_SUMMARY
echo "**Action:** Release trigger was blocked due to insufficient permissions" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "Only authorized users can trigger automatic releases via changelog updates." >> $GITHUB_STEP_SUMMARY

View file

@ -15,7 +15,7 @@ jobs:
- name: Verify Changed files - name: Verify Changed files
id: changed-files id: changed-files
uses: tj-actions/changed-files@v41 uses: step-security/changed-files@3dbe17c78367e7d60f00d78ae6781a35be47b4a1 # v45.0.1
with: with:
files: | files: |
website/**/*.mdx website/**/*.mdx

51
.github/workflows/v3-docs.yml vendored Normal file
View file

@ -0,0 +1,51 @@
name: Deploy to GitHub Pages
on:
# Trigger the workflow every time you push to the `main` branch
# Using a different branch name? Replace `main` with your branch's name
push:
branches: [v3-alpha]
paths:
- 'docs/**'
- '.github/workflows/v3-docs.yml'
# Allows you to run this workflow manually from the Actions tab on GitHub.
workflow_dispatch:
# Allow this job to clone the repo and create a page deployment
permissions:
contents: read
pages: write
id-token: write
jobs:
build:
runs-on: ubuntu-latest
if: github.event.repository.fork == false
steps:
- name: Checkout your repository using git
uses: actions/checkout@v4
- name: Install D2
run: |
curl -fsSL https://d2lang.com/install.sh > install.sh
chmod +x install.sh
./install.sh
sudo cp ~/.local/bin/d2 /usr/local/bin/d2
d2 --version
rm install.sh
- name: Install, build, and upload your site output
uses: withastro/action@v2
with:
path: docs
node-version: 20 # The specific version of Node that should be used to build your site. Defaults to 18. (optional)
# package-manager: pnpm@latest # The Node package manager that should be used to install dependencies and build your site. Automatically detected based on your lockfile. (optional)
deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4

58
.gitignore vendored
View file

@ -37,5 +37,61 @@ v2/cmd/wails/internal/commands/initialise/templates/testtemplates/
/websitev3/site/ /websitev3/site/
/v3/examples/plugins/bin/testapp /v3/examples/plugins/bin/testapp
# V3 Example binaries - ignore executables that match directory names
/v3/examples/badge-custom/badge-custom
/v3/examples/badge/badge
/v3/examples/binding/binding
/v3/examples/cancel-async/cancel-async
/v3/examples/cancel-chaining/cancel-chaining
/v3/examples/clipboard/clipboard
/v3/examples/contextmenus/contextmenus
/v3/examples/dev/dev
/v3/examples/dialogs-basic/dialogs-basic
/v3/examples/dialogs/dialogs
/v3/examples/drag-n-drop/drag-n-drop
/v3/examples/environment/environment
/v3/examples/events-bug/events-bug
/v3/examples/events/events
/v3/examples/file-association/file-association
/v3/examples/frameless/frameless
/v3/examples/gin-example/gin-example
/v3/examples/gin-routing/gin-routing
/v3/examples/gin-service/gin-service
/v3/examples/hide-window/hide-window
/v3/examples/html-dnd-api/html-dnd-api
/v3/examples/ignore-mouse/ignore-mouse
/v3/examples/keybindings/keybindings
/v3/examples/menu/menu
/v3/examples/notifications/notifications
/v3/examples/panic-handling/panic-handling
/v3/examples/plain/plain
/v3/examples/raw-message/raw-message
/v3/examples/screen/screen
/v3/examples/services/services
/v3/examples/show-macos-toolbar/show-macos-toolbar
/v3/examples/single-instance/single-instance
/v3/examples/systray-basic/systray-basic
/v3/examples/systray-custom/systray-custom
/v3/examples/systray-menu/systray-menu
/v3/examples/video/video
/v3/examples/window-api/window-api
/v3/examples/window-call/window-call
/v3/examples/window-menu/window-menu
/v3/examples/window/window
/v3/examples/wml/wml
# Common binary names in examples
/v3/examples/*/main
/v3/examples/*/app
/v3/examples/*/changeme
/v3/examples/*/testbuild-*
# Temporary called mkdocs, should be renamed to more standard -website or similar # Temporary called mkdocs, should be renamed to more standard -website or similar
/mkdocs-website/site /docs/site
.aider*
.aider*
.cache
.local
# Ignore local iOS test app
/v3/testiosapp/

View file

@ -1,6 +1,7 @@
overrides: overrides:
- files: - files:
- "**/*.md" - "**/*.md"
- "**/*.mdx"
options: options:
printWidth: 80 printWidth: 80
proseWrap: always proseWrap: always

144
AGENTS.md Normal file
View file

@ -0,0 +1,144 @@
# AI Agent Instructions for Wails v3
## Issue Tracking with bd (beads)
**IMPORTANT**: This project uses **bd (beads)** for ALL issue tracking. Do NOT use markdown TODOs, task lists, or other tracking methods.
### Why bd?
- Dependency-aware: Track blockers and relationships between issues
- Git-friendly: Auto-syncs to JSONL for version control
- Agent-optimized: JSON output, ready work detection, discovered-from links
- Prevents duplicate tracking systems and confusion
### Quick Start
**Check for ready work:**
```bash
bd ready --json
```
**Create new issues:**
```bash
bd create "Issue title" -t bug|feature|task -p 0-4 --json
bd create "Issue title" -p 1 --deps discovered-from:bd-123 --json
bd create "Subtask" --parent <epic-id> --json # Hierarchical subtask (gets ID like epic-id.1)
```
**Claim and update:**
```bash
bd update bd-42 --status in_progress --json
bd update bd-42 --priority 1 --json
```
**Complete work:**
```bash
bd close bd-42 --reason "Completed" --json
```
### Issue Types
- `bug` - Something broken
- `feature` - New functionality
- `task` - Work item (tests, docs, refactoring)
- `epic` - Large feature with subtasks
- `chore` - Maintenance (dependencies, tooling)
### Priorities
- `0` - Critical (security, data loss, broken builds)
- `1` - High (major features, important bugs)
- `2` - Medium (default, nice-to-have)
- `3` - Low (polish, optimization)
- `4` - Backlog (future ideas)
### Workflow for AI Agents
1. **Check ready work**: `bd ready` shows unblocked issues
2. **Claim your task**: `bd update <id> --status in_progress`
3. **Work on it**: Implement, test, document
4. **Discover new work?** Create linked issue:
- `bd create "Found bug" -p 1 --deps discovered-from:<parent-id>`
5. **Complete**: `bd close <id> --reason "Done"`
6. **Commit together**: Always commit the `.beads/issues.jsonl` file together with the code changes so issue state stays in sync with code state
### Auto-Sync
bd automatically syncs with git:
- Exports to `.beads/issues.jsonl` after changes (5s debounce)
- Imports from JSONL when newer (e.g., after `git pull`)
- No manual export/import needed!
### GitHub Copilot Integration
If using GitHub Copilot, also create `.github/copilot-instructions.md` for automatic instruction loading.
Run `bd onboard` to get the content, or see step 2 of the onboard instructions.
### MCP Server (Recommended)
If using Claude or MCP-compatible clients, install the beads MCP server:
```bash
pip install beads-mcp
```
Add to MCP config (e.g., `~/.config/claude/config.json`):
```json
{
"beads": {
"command": "beads-mcp",
"args": []
}
}
```
Then use `mcp__beads__*` functions instead of CLI commands.
### Managing AI-Generated Planning Documents
AI assistants often create planning and design documents during development:
- PLAN.md, IMPLEMENTATION.md, ARCHITECTURE.md
- DESIGN.md, CODEBASE_SUMMARY.md, INTEGRATION_PLAN.md
- TESTING_GUIDE.md, TECHNICAL_DESIGN.md, and similar files
**Best Practice: Use a dedicated directory for these ephemeral files**
**Recommended approach:**
- Create a `history/` directory in the project root
- Store ALL AI-generated planning/design docs in `history/`
- Keep the repository root clean and focused on permanent project files
- Only access `history/` when explicitly asked to review past planning
**Example .gitignore entry (optional):**
```
# AI planning documents (ephemeral)
history/
```
**Benefits:**
- Clean repository root
- Clear separation between ephemeral and permanent documentation
- Easy to exclude from version control if desired
- Preserves planning history for archeological research
- Reduces noise when browsing the project
### CLI Help
Run `bd <command> --help` to see all available flags for any command.
For example: `bd create --help` shows `--parent`, `--deps`, `--assignee`, etc.
### Important Rules
- Use bd for ALL task tracking
- Always use `--json` flag for programmatic use
- Link discovered work with `discovered-from` dependencies
- Check `bd ready` before asking "what should I work on?"
- Store AI planning docs in `history/` directory
- Run `bd <cmd> --help` to discover available flags
- **ALWAYS run `coderabbit --plain` before committing** to get code analysis and catch issues early
- Do NOT create markdown TODO lists
- Do NOT use external issue trackers
- Do NOT duplicate tracking systems
- Do NOT clutter repo root with planning documents
For more details, see README.md and QUICKSTART.md.

1
CNAME Normal file
View file

@ -0,0 +1 @@
v3alpha.wails.io

419
IOS_ARCHITECTURE.md Normal file
View file

@ -0,0 +1,419 @@
# Wails v3 iOS Architecture
## Executive Summary
This document provides a comprehensive technical architecture for iOS support in Wails v3. The implementation enables Go applications to run natively on iOS with a WKWebView frontend, maintaining the Wails philosophy of using web technologies for UI while leveraging Go for business logic.
## Table of Contents
1. [Architecture Overview](#architecture-overview)
2. [Core Components](#core-components)
3. [Layer Architecture](#layer-architecture)
4. [Implementation Details](#implementation-details)
5. [Battery Optimization](#battery-optimization)
6. [Build System](#build-system)
7. [Security Considerations](#security-considerations)
8. [API Reference](#api-reference)
## Architecture Overview
### Design Principles
1. **Battery Efficiency First**: All architectural decisions prioritize battery life
2. **No Network Ports**: Asset serving happens in-process via native APIs
3. **Minimal WebView Instances**: Maximum 2 concurrent WebViews (1 primary, 1 for transitions)
4. **Native Integration**: Deep iOS integration using Objective-C runtime
5. **Wails v3 Compatibility**: Maintain API compatibility with existing Wails v3 applications
### High-Level Architecture
```
┌─────────────────────────────────────────────────────────────┐
│ iOS Application │
├─────────────────────────────────────────────────────────────┤
│ UIKit Framework │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ WailsViewController │ │
│ │ ┌───────────────────────────────────────────────┐ │ │
│ │ │ WKWebView Instance │ │ │
│ │ │ ┌─────────────────────────────────────────┐ │ │ │
│ │ │ │ Web Application (HTML/JS) │ │ │ │
│ │ │ └─────────────────────────────────────────┘ │ │ │
│ │ └───────────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ Bridge Layer (CGO) │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │URL Handler │ │JS Bridge │ │Message Handler│ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ Go Runtime │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Wails Application │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │ │
│ │ │App Logic │ │Services │ │Asset Server │ │ │
│ │ └──────────┘ └──────────┘ └──────────────────┘ │ │
│ └──────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
```
## Core Components
### 1. Platform Layer (`application_ios.go`)
**Purpose**: Go interface for iOS platform operations
**Key Functions**:
- `platformRun()`: Initialize and run the iOS application
- `platformQuit()`: Gracefully shutdown the application
- `isDarkMode()`: Detect iOS dark mode state
- `ExecuteJavaScript(windowID uint, js string)`: Execute JS in WebView
**Exported Go Functions (Called from Objective-C)**:
- `ServeAssetRequest(windowID C.uint, urlStr *C.char, callbackID C.uint)`
- `HandleJSMessage(windowID C.uint, message *C.char)`
### 2. Native iOS Layer (`application_ios.m`)
**Components**:
#### WailsSchemeHandler
```objc
@interface WailsSchemeHandler : NSObject <WKURLSchemeHandler>
```
- Implements `WKURLSchemeHandler` protocol
- Intercepts `wails://` URL requests
- Bridges to Go for asset serving
- Manages pending requests with callback IDs
**Methods**:
- `startURLSchemeTask:`: Intercept request, call Go handler
- `stopURLSchemeTask:`: Cancel pending request
- `completeRequest:withData:mimeType:`: Complete request with data from Go
#### WailsMessageHandler
```objc
@interface WailsMessageHandler : NSObject <WKScriptMessageHandler>
```
- Implements JavaScript to Go communication
- Handles `window.webkit.messageHandlers.external.postMessage()`
- Serializes messages to JSON for Go processing
**Methods**:
- `userContentController:didReceiveScriptMessage:`: Process JS messages
#### WailsViewController
```objc
@interface WailsViewController : UIViewController
```
- Main view controller containing WKWebView
- Manages WebView lifecycle
- Handles JavaScript execution requests
**Properties**:
- `webView`: WKWebView instance
- `schemeHandler`: Custom URL scheme handler
- `messageHandler`: JS message handler
- `windowID`: Unique window identifier
**Methods**:
- `viewDidLoad`: Initialize WebView with configuration
- `executeJavaScript:`: Run JS code in WebView
### 3. Bridge Layer (CGO)
**C Interface Functions**:
```c
void ios_app_init(void); // Initialize iOS app
void ios_app_run(void); // Run main loop
void ios_app_quit(void); // Quit application
bool ios_is_dark_mode(void); // Check dark mode
unsigned int ios_create_webview(void); // Create WebView
void ios_execute_javascript(unsigned int windowID, const char* js);
void ios_complete_request(unsigned int callbackID, const char* data, const char* mimeType);
```
## Layer Architecture
### Layer 1: Presentation Layer (WebView)
**Responsibilities**:
- Render HTML/CSS/JavaScript UI
- Handle user interactions
- Communicate with native layer
**Key Features**:
- WKWebView for modern web standards
- Hardware-accelerated rendering
- Efficient memory management
### Layer 2: Communication Layer
**Request Interception**:
```
WebView Request → WKURLSchemeHandler → Go ServeAssetRequest → AssetServer → Response
```
**JavaScript Bridge**:
```
JS postMessage → WKScriptMessageHandler → Go HandleJSMessage → Process → ExecuteJavaScript
```
### Layer 3: Application Layer (Go)
**Components**:
- Application lifecycle management
- Service binding and method calls
- Asset serving from embedded fs.FS
- Business logic execution
### Layer 4: Platform Integration Layer
**iOS-Specific Features**:
- Dark mode detection
- System appearance integration
- iOS-specific optimizations
## Implementation Details
### Request Handling Flow
1. **WebView makes request** to `wails://localhost/path`
2. **WKURLSchemeHandler intercepts** request
3. **Creates callback ID** and stores `WKURLSchemeTask`
4. **Calls Go function** `ServeAssetRequest` with URL and callback ID
5. **Go processes request** through AssetServer
6. **Go calls** `ios_complete_request` with response data
7. **Objective-C completes** the `WKURLSchemeTask` with response
### JavaScript Execution Flow
1. **Go calls** `ios_execute_javascript` with JS code
2. **Bridge dispatches** to main thread
3. **WKWebView evaluates** JavaScript
4. **Completion handler** logs any errors
### Message Passing Flow
1. **JavaScript calls** `window.webkit.messageHandlers.wails.postMessage(data)`
2. **WKScriptMessageHandler receives** message
3. **Serializes to JSON** and passes to Go
4. **Go processes** message in `HandleJSMessage`
5. **Go can respond** via `ExecuteJavaScript`
## Battery Optimization
### WebView Configuration
```objc
// Disable unnecessary features
config.suppressesIncrementalRendering = NO;
config.allowsInlineMediaPlayback = YES;
config.mediaTypesRequiringUserActionForPlayback = WKAudiovisualMediaTypeNone;
```
### Memory Management
1. **Single WebView Instance**: Reuse instead of creating new instances
2. **Automatic Reference Counting**: Use ARC for Objective-C objects
3. **Lazy Loading**: Initialize components only when needed
4. **Resource Cleanup**: Properly release resources when done
### Request Optimization
1. **In-Process Serving**: No network overhead
2. **Direct Memory Transfer**: Pass data directly without serialization
3. **Efficient Caching**: Leverage WKWebView's built-in cache
4. **Minimal Wake Locks**: No background network activity
## Build System
### Build Tags
```go
//go:build ios
```
### CGO Configuration
```go
#cgo CFLAGS: -x objective-c -fobjc-arc
#cgo LDFLAGS: -framework Foundation -framework UIKit -framework WebKit
```
### Build Script (`build_ios.sh`)
**Steps**:
1. Check dependencies (go, xcodebuild, xcrun)
2. Set up iOS cross-compilation environment
3. Build Go binary with iOS tags
4. Create app bundle structure
5. Generate Info.plist
6. Sign for simulator
7. Create launch script
**Environment Variables**:
```bash
export CGO_ENABLED=1
export GOOS=ios
export GOARCH=arm64
export SDK_PATH=$(xcrun --sdk iphonesimulator --show-sdk-path)
```
### Simulator Deployment
```bash
xcrun simctl install "$DEVICE_ID" "WailsIOSDemo.app"
xcrun simctl launch "$DEVICE_ID" "com.wails.iosdemo"
```
## Security Considerations
### URL Scheme Security
1. **Custom Scheme**: Use `wails://` to avoid conflicts
2. **Origin Validation**: Only serve to authorized WebViews
3. **No External Access**: Scheme handler only responds to app's WebView
### JavaScript Execution
1. **Input Validation**: Sanitize JS code before execution
2. **Sandboxed Execution**: WKWebView provides isolation
3. **No eval()**: Avoid dynamic code evaluation
### Data Protection
1. **In-Memory Only**: No temporary files on disk
2. **ATS Compliance**: App Transport Security enabled
3. **Secure Communication**: All data stays within app process
## API Reference
### Go API
#### Application Functions
```go
// Create new iOS application
app := application.New(application.Options{
Name: "App Name",
Description: "App Description",
})
// Run the application
app.Run()
// Execute JavaScript
app.ExecuteJavaScript(windowID, "console.log('Hello')")
```
#### Service Binding
```go
type MyService struct{}
func (s *MyService) Greet(name string) string {
return fmt.Sprintf("Hello, %s!", name)
}
app := application.New(application.Options{
Services: []application.Service{
application.NewService(&MyService{}),
},
})
```
### JavaScript API
#### Send Message to Go
```javascript
window.webkit.messageHandlers.wails.postMessage({
type: 'methodCall',
service: 'MyService',
method: 'Greet',
args: ['World']
});
```
#### Receive from Go
```javascript
window.wailsCallback = function(data) {
console.log('Received:', data);
};
```
### Objective-C Bridge API
#### From Go to Objective-C
```c
// Execute JavaScript
ios_execute_javascript(windowID, "alert('Hello')");
// Complete asset request
ios_complete_request(callbackID, htmlData, "text/html");
```
#### From Objective-C to Go
```c
// Serve asset request
ServeAssetRequest(windowID, urlString, callbackID);
// Handle JavaScript message
HandleJSMessage(windowID, jsonMessage);
```
## Performance Metrics
### Target Metrics
- **WebView Creation**: < 100ms
- **Asset Request**: < 10ms for cached, < 50ms for first load
- **JS Execution**: < 5ms for simple scripts
- **Message Passing**: < 2ms round trip
- **Memory Usage**: < 50MB baseline
- **Battery Impact**: < 2% per hour active use
### Monitoring
1. **Xcode Instruments**: CPU, Memory, Energy profiling
2. **WebView Inspector**: JavaScript performance
3. **Go Profiling**: pprof for Go code analysis
## Future Enhancements
### Phase 1: Core Stability
- [ ] Production-ready error handling
- [ ] Comprehensive test suite
- [ ] Performance optimization
### Phase 2: Feature Parity
- [ ] Multiple window support
- [ ] System tray integration
- [ ] Native menu implementation
### Phase 3: iOS-Specific Features
- [ ] Widget extension support
- [ ] App Clip support
- [ ] ShareSheet integration
- [ ] Siri Shortcuts
### Phase 4: Advanced Features
- [ ] Background task support
- [ ] Push notifications
- [ ] CloudKit integration
- [ ] Apple Watch companion app
## Conclusion
This architecture provides a solid foundation for iOS support in Wails v3. The design prioritizes battery efficiency, native performance, and seamless integration with the existing Wails ecosystem. The proof of concept demonstrates all four required capabilities:
1. ✅ **WebView Creation**: Native WKWebView with optimized configuration
2. ✅ **Request Interception**: Custom scheme handler without network ports
3. ✅ **JavaScript Execution**: Bidirectional communication bridge
4. ✅ **iOS Simulator Support**: Complete build and deployment pipeline
The architecture is designed to scale from this proof of concept to a full production implementation while maintaining the simplicity and elegance that Wails developers expect.

View file

@ -16,6 +16,11 @@ includes:
dir: v3 dir: v3
optional: true optional: true
docs:
taskfile: docs
dir: docs
optional: true
tasks: tasks:
contributors:check: contributors:check:
cmds: cmds:

21
docs/.gitignore vendored Normal file
View file

@ -0,0 +1,21 @@
# build output
dist/
# generated types
.astro/
# dependencies
node_modules/
# logs
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
# environment variables
.env
.env.production
# macOS-specific files
.DS_Store

1
docs/.npmrc Normal file
View file

@ -0,0 +1 @@
save-exact=true

4
docs/.vscode/extensions.json vendored Normal file
View file

@ -0,0 +1,4 @@
{
"recommendations": ["astro-build.astro-vscode"],
"unwantedRecommendations": []
}

11
docs/.vscode/launch.json vendored Normal file
View file

@ -0,0 +1,11 @@
{
"version": "0.2.0",
"configurations": [
{
"command": "./node_modules/.bin/astro dev",
"name": "Development server",
"request": "launch",
"type": "node-terminal"
}
]
}

1
docs/CNAME Normal file
View file

@ -0,0 +1 @@
v3alpha.wails.io

65
docs/README.md Normal file
View file

@ -0,0 +1,65 @@
# Wails v3 Documentation
[![Built with Starlight](https://astro.badg.es/v2/built-with-starlight/tiny.svg)](https://starlight.astro.build)
World-class documentation for Wails v3, redesigned following Netflix documentation principles.
## 📚 Documentation Redesign (2025-10-01)
This documentation has been completely redesigned to follow the **Netflix approach** to developer documentation:
- **Problem-first framing** - Start with why, not what
- **Progressive disclosure** - Multiple entry points for different skill levels
- **Real production examples** - No toy code
- **Story-Code-Context pattern** - Why → How → When
- **Scannable content** - Clear structure, visual aids
**Status:** Foundation complete (~20%), ready for content migration
See [IMPLEMENTATION_SUMMARY.md](./IMPLEMENTATION_SUMMARY.md) for full details.
## 🚀 Project Structure
Inside of your Astro + Starlight project, you'll see the following folders and
files:
```sh
.
├── public/
├── src/
│ ├── assets/
│ ├── content/
│ │ ├── docs/
│ │ └── config.ts
│ └── env.d.ts
├── astro.config.mjs
├── package.json
└── tsconfig.json
```
Starlight looks for `.md` or `.mdx` files in the `src/content/docs/` directory.
Each file is exposed as a route based on its file name.
Images can be added to `src/assets/` and embedded in Markdown with a relative
link.
Static assets, like favicons, can be placed in the `public/` directory.
## 🧞 Commands
All commands are run from the root of the project, from a terminal:
| Command | Action |
| :------------------------ | :----------------------------------------------- |
| `npm install` | Installs dependencies |
| `npm run dev` | Starts local dev server at `localhost:4321` |
| `npm run build` | Build your production site to `./dist/` |
| `npm run preview` | Preview your build locally, before deploying |
| `npm run astro ...` | Run CLI commands like `astro add`, `astro check` |
| `npm run astro -- --help` | Get help using the Astro CLI |
## 👀 Want to learn more?
Check out [Starlights docs](https://starlight.astro.build/), read
[the Astro documentation](https://docs.astro.build), or jump into the
[Astro Discord server](https://astro.build/chat).

36
docs/Taskfile.yml Normal file
View file

@ -0,0 +1,36 @@
# https://taskfile.dev
version: '3'
vars:
# Change this to switch package managers: bun, npm, pnpm, yarn
PKG_MANAGER: npm
tasks:
setup:
summary: Setup the project (including D2 diagram tool)
preconditions:
- sh: '{{.PKG_MANAGER}} --version'
msg: "Looks like {{.PKG_MANAGER}} isn't installed."
- sh: 'go version'
msg: "Go is not installed. Install from https://go.dev/dl/"
cmds:
- '{{.PKG_MANAGER}} install'
- go install oss.terrastruct.com/d2@latest
- echo "✓ Setup complete. D2 installed to $(go env GOPATH)/bin/d2"
dev:
summary: Run the dev server
deps: [setup]
cmds:
- '{{.PKG_MANAGER}} run dev'
build:
summary: Build the docs
preconditions:
- sh: '{{.PKG_MANAGER}} --version'
msg: "Looks like {{.PKG_MANAGER}} isn't installed."
cmds:
- '{{.PKG_MANAGER}} run build'

357
docs/astro.config.mjs Normal file
View file

@ -0,0 +1,357 @@
// @ts-check
import { defineConfig } from "astro/config";
import { fileURLToPath } from "node:url";
import starlight from "@astrojs/starlight";
import sitemap from "@astrojs/sitemap";
import starlightLinksValidator from "starlight-links-validator";
import starlightImageZoom from "starlight-image-zoom";
import starlightBlog from "starlight-blog";
import { authors } from "./src/content/authors";
import d2 from 'astro-d2';
import react from '@astrojs/react';
// https://astro.build/config
export default defineConfig({
site: "https://wails.io",
vite: {
resolve: {
alias: {
'@components': fileURLToPath(new URL('./src/components', import.meta.url))
}
}
},
trailingSlash: "ignore",
compressHTML: true,
output: "static",
build: { format: "directory" },
devToolbar: { enabled: true },
integrations: [
react(),
d2(),
sitemap(),
starlight({
title: "",
titleDelimiter: "",
logo: {
dark: "./src/assets/wails-logo-horizontal-dark.svg",
light: "./src/assets/wails-logo-horizontal-light.svg",
},
favicon: "./public/favicon.svg",
description: "Build beautiful desktop applications using Go and modern web technologies.",
pagefind: true,
customCss: ["./src/stylesheets/extra.css"],
lastUpdated: true,
pagination: true,
editLink: {
baseUrl: "https://github.com/wailsapp/wails/edit/v3-alpha/docs",
},
social: [
{ icon: 'github', label: 'GitHub', href: 'https://github.com/wailsapp/wails' },
{ icon: 'discord', label: 'Discord', href: 'https://discord.gg/JDdSxwjhGf' },
{ icon: 'x.com', label: 'X', href: 'https://x.com/wailsapp' },
],
head: [
{
tag: 'script',
content: `
document.addEventListener('DOMContentLoaded', () => {
const socialLinks = document.querySelector('.social-icons');
if (socialLinks) {
const sponsorLink = document.createElement('a');
sponsorLink.href = 'https://github.com/sponsors/leaanthony';
sponsorLink.className = 'sl-flex';
sponsorLink.title = 'Sponsor';
sponsorLink.innerHTML = '<span class="sr-only">Sponsor</span><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="#ef4444" stroke="none"><path d="M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z"/></svg>';
socialLinks.appendChild(sponsorLink);
}
});
`,
},
],
defaultLocale: "root",
locales: {
root: { label: "English", lang: "en", dir: "ltr" },
},
plugins: [
starlightImageZoom(),
starlightBlog({
title: "Wails Blog",
authors: authors,
}),
],
sidebar: [
{ label: "Home", link: "/" },
// Progressive Onboarding - Netflix Principle: Start with the problem
{ label: "Why Wails?", link: "/quick-start/why-wails" },
{
label: "Quick Start",
collapsed: false,
items: [
{ label: "Installation", link: "/quick-start/installation" },
{ label: "Your First App", link: "/quick-start/first-app" },
{ label: "Next Steps", link: "/quick-start/next-steps" },
],
},
// Tutorials
{
label: "Tutorials",
collapsed: true,
autogenerate: { directory: "tutorials" },
},
// Core Concepts
{
label: "Core Concepts",
collapsed: true,
items: [
{ label: "How Wails Works", link: "/concepts/architecture" },
{ label: "Manager API", link: "/concepts/manager-api" },
{ label: "Application Lifecycle", link: "/concepts/lifecycle" },
{ label: "Go-Frontend Bridge", link: "/concepts/bridge" },
{ label: "Build System", link: "/concepts/build-system" },
],
},
{
label: "Features",
collapsed: true,
items: [
{
label: "Windows",
collapsed: true,
items: [
{ label: "Window Basics", link: "/features/windows/basics" },
{ label: "Window Options", link: "/features/windows/options" },
{ label: "Multiple Windows", link: "/features/windows/multiple" },
{ label: "Frameless Windows", link: "/features/windows/frameless" },
{ label: "Window Events", link: "/features/windows/events" },
],
},
{
label: "Menus",
collapsed: true,
items: [
{ label: "Application Menus", link: "/features/menus/application" },
{ label: "Context Menus", link: "/features/menus/context" },
{ label: "System Tray Menus", link: "/features/menus/systray" },
{ label: "Menu Reference", link: "/features/menus/reference" },
],
},
{
label: "Bindings & Services",
collapsed: true,
items: [
{ label: "Method Binding", link: "/features/bindings/methods" },
{ label: "Services", link: "/features/bindings/services" },
{ label: "Advanced Binding", link: "/features/bindings/advanced" },
{ label: "Best Practices", link: "/features/bindings/best-practices" },
],
},
{
label: "Events",
collapsed: true,
items: [
{ label: "Event System", link: "/features/events/system" },
{ label: "Application Events", link: "/features/events/application" },
{ label: "Window Events", link: "/features/events/window" },
{ label: "Custom Events", link: "/features/events/custom" },
],
},
{
label: "Dialogs",
collapsed: true,
items: [
{ label: "File Dialogs", link: "/features/dialogs/file" },
{ label: "Message Dialogs", link: "/features/dialogs/message" },
{ label: "Custom Dialogs", link: "/features/dialogs/custom" },
],
},
{
label: "Clipboard",
collapsed: true,
autogenerate: { directory: "features/clipboard" },
},
{
label: "Browser",
collapsed: true,
autogenerate: { directory: "features/browser" },
},
{
label: "Drag & Drop",
collapsed: true,
autogenerate: { directory: "features/drag-and-drop" },
},
{
label: "Keyboard",
collapsed: true,
autogenerate: { directory: "features/keyboard" },
},
{
label: "Notifications",
collapsed: true,
autogenerate: { directory: "features/notifications" },
},
{
label: "Screens",
collapsed: true,
autogenerate: { directory: "features/screens" },
},
{
label: "Environment",
collapsed: true,
autogenerate: { directory: "features/environment" },
},
{
label: "Platform-Specific",
collapsed: true,
autogenerate: { directory: "features/platform" },
},
],
},
// Guides - Task-oriented patterns (Netflix: When to use it, when not to use it)
{
label: "Guides",
collapsed: true,
items: [
{
label: "Development",
collapsed: true,
items: [
{ label: "Project Structure", link: "/guides/dev/project-structure" },
{ label: "Development Workflow", link: "/guides/dev/workflow" },
{ label: "Debugging", link: "/guides/dev/debugging" },
{ label: "Testing", link: "/guides/dev/testing" },
],
},
{
label: "Building & Packaging",
collapsed: true,
items: [
{ label: "Building Applications", link: "/guides/build/building" },
{ label: "Build Customization", link: "/guides/build/customization" },
{ label: "Cross-Platform Builds", link: "/guides/build/cross-platform" },
{ label: "Code Signing", link: "/guides/build/signing" },
{ label: "Windows Packaging", link: "/guides/build/windows" },
{ label: "macOS Packaging", link: "/guides/build/macos" },
{ label: "Linux Packaging", link: "/guides/build/linux" },
{ label: "MSIX Packaging", link: "/guides/build/msix" },
],
},
{
label: "Distribution",
collapsed: true,
items: [
{ label: "Auto-Updates", link: "/guides/distribution/auto-updates" },
{ label: "File Associations", link: "/guides/distribution/file-associations" },
{ label: "Custom Protocols", link: "/guides/distribution/custom-protocols" },
{ label: "Single Instance", link: "/guides/distribution/single-instance" },
],
},
{
label: "Integration Patterns",
collapsed: true,
items: [
{ label: "Using Gin Router", link: "/guides/patterns/gin-routing" },
{ label: "Gin Services", link: "/guides/patterns/gin-services" },
{ label: "Database Integration", link: "/guides/patterns/database" },
{ label: "REST APIs", link: "/guides/patterns/rest-api" },
],
},
{
label: "Advanced Topics",
collapsed: true,
items: [
{ label: "Server Build", link: "/guides/server-build", badge: { text: "Experimental", variant: "caution" } },
{ label: "Custom Templates", link: "/guides/advanced/custom-templates" },
{ label: "WML (Wails Markup)", link: "/guides/advanced/wml" },
{ label: "Panic Handling", link: "/guides/advanced/panic-handling" },
{ label: "Security Best Practices", link: "/guides/advanced/security" },
],
},
],
},
// Reference - Comprehensive API docs (Netflix: Complete technical reference)
{
label: "API Reference",
collapsed: true,
items: [
{ label: "Overview", link: "/reference/overview" },
{ label: "Application", link: "/reference/application" },
{ label: "Window", link: "/reference/window" },
{ label: "Menu", link: "/reference/menu" },
{ label: "Events", link: "/reference/events" },
{ label: "Dialogs", link: "/reference/dialogs" },
{ label: "Frontend Runtime", link: "/reference/frontend-runtime" },
{ label: "CLI", link: "/reference/cli" },
],
},
// Contributing
{
label: "Contributing",
collapsed: true,
items: [
{ label: "Getting Started", link: "/contributing/getting-started" },
{ label: "Development Setup", link: "/contributing/setup" },
{ label: "Coding Standards", link: "/contributing/standards" },
],
},
// Migration & Troubleshooting
{
label: "Migration",
collapsed: true,
items: [
{ label: "From v2 to v3", link: "/migration/v2-to-v3" },
{ label: "From Electron", link: "/migration/from-electron" },
],
},
{
label: "Troubleshooting",
collapsed: true,
autogenerate: { directory: "troubleshooting" },
},
// Community & Resources
{
label: "Community",
collapsed: true,
items: [
{ label: "Links", link: "/community/links" },
{ label: "Templates", link: "/community/templates" },
{
label: "Showcase",
collapsed: true,
items: [
{ label: "Overview", link: "/community/showcase" },
{
label: "Applications",
autogenerate: {
directory: "community/showcase",
collapsed: true,
},
},
],
},
],
},
{ label: "What's New", link: "/whats-new" },
{ label: "Status", link: "/status" },
{ label: "Changelog", link: "/changelog" },
{
label: "Sponsor",
link: "https://github.com/sponsors/leaanthony",
badge: { text: "❤️" },
},
{ label: "Credits", link: "/credits" },
],
}),
],
});

9082
docs/package-lock.json generated Normal file

File diff suppressed because it is too large Load diff

31
docs/package.json Normal file
View file

@ -0,0 +1,31 @@
{
"name": "wails-docs",
"type": "module",
"version": "0.0.1",
"scripts": {
"dev": "astro dev",
"start": "astro dev",
"build": "astro check && astro build",
"preview": "astro preview",
"astro": "astro"
},
"dependencies": {
"@astrojs/check": "^0.9.4",
"@astrojs/react": "^4.1.0",
"@astrojs/starlight": "0.36.2",
"@types/react": "^19.0.1",
"@types/react-dom": "^19.0.2",
"astro": "^5.0.0",
"astro-d2": "^0.5.0",
"framer-motion": "^11.14.4",
"motion": "^11.14.4",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"sharp": "^0.33.5",
"starlight-blog": "0.25.1",
"starlight-image-zoom": "^0.9.0",
"starlight-links-validator": "^0.13.4",
"starlight-showcases": "^0.2.0",
"typescript": "^5.7.2"
}
}

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 38 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 33 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 40 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 37 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 26 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 34 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 37 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 26 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 31 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 27 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 39 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 36 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 41 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 33 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 33 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 30 KiB

1
docs/public/favicon.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" version="1.1" viewBox="0 0 550 310" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2"><g><path d="M0.883,-0.081L0.121,0.081L0.256,-0.063L0.883,-0.081Z" transform="matrix(-166.599,4.57132,4.57132,166.599,147.403,167.648)" style="fill:url(#_Linear1);fill-rule:nonzero"/></g><g><path d="M0.878,-0.285L-0.073,0.71L-1.186,0.542L0.015,0.207L-0.846,0.077L0.355,-0.258L-0.505,-0.388L0.649,-0.71L0.878,-0.285Z" transform="matrix(-106.443,-16.0669,-16.0669,106.443,428.19,188.033)" style="fill:url(#_Linear2);fill-rule:nonzero"/></g><g><path d="M0.44,-0.04L0.265,-0.056L0.177,0.437L-0.311,-0.255L0.262,-0.437L0.568,-0.437L0.44,-0.04Z" transform="matrix(-114.484,-162.408,-162.408,114.484,333.291,285.804)" style="fill:url(#_Linear3);fill-rule:nonzero"/></g><g><path d="M0.622,-0.115L0.761,-0.115L0.806,-0.013L0.826,0.182L0.622,-0.115Z" transform="matrix(238.126,298.893,298.893,-238.126,113.516,-150.536)" style="fill:url(#_Linear4);fill-rule:nonzero"/></g><g><path d="M0.467,0.005L0.49,0.062L0.271,-0.062L0.467,0.005Z" transform="matrix(-369.529,-97.4118,-97.4118,369.529,582.38,94.027)" style="fill:url(#_Linear5);fill-rule:nonzero"/></g><g><path d="M0.2,0.001L0.219,-0.018L0.614,0.012L0.519,0.089L0.282,0.068L0.2,0.135L0.463,0.194L0.374,0.266L0.138,0.186L0.047,0.033L-0.131,-0.266L0.2,0.001Z" transform="matrix(-496.156,-53.9751,-53.9751,496.156,367.888,125.085)" style="fill:url(#_Linear6);fill-rule:nonzero"/></g><g><path d="M269.095,104.527L287.764,111.419L263.632,106.75L269.095,104.527Z" transform="matrix(0.436503,-1.22916,4.88651,1.73532,-368.043,253.619)" style="fill:#fff"/></g><defs><linearGradient id="_Linear1" x1="0" x2="1" y1="0" y2="0" gradientTransform="matrix(1,-3.46945e-18,3.46945e-18,1,0,-3.05761e-06)" gradientUnits="userSpaceOnUse"><stop offset="0" style="stop-color:#e33232;stop-opacity:1"/><stop offset="1" style="stop-color:#6b000d;stop-opacity:1"/></linearGradient><linearGradient id="_Linear2" x1="0" x2="1" y1="0" y2="0" gradientTransform="matrix(1,0,0,1,0,-2.75467e-06)" gradientUnits="userSpaceOnUse"><stop offset="0" style="stop-color:#e33232;stop-opacity:1"/><stop offset="1" style="stop-color:#6b000d;stop-opacity:1"/></linearGradient><linearGradient id="_Linear3" x1="0" x2="1" y1="0" y2="0" gradientTransform="matrix(1,-1.11022e-16,1.11022e-16,1,0,-2.61861e-06)" gradientUnits="userSpaceOnUse"><stop offset="0" style="stop-color:#e33232;stop-opacity:1"/><stop offset="1" style="stop-color:#6b000d;stop-opacity:1"/></linearGradient><linearGradient id="_Linear4" x1="0" x2="1" y1="0" y2="0" gradientTransform="matrix(-0.801899,-0.59746,0.59746,-0.801899,1.3495,0.447457)" gradientUnits="userSpaceOnUse"><stop offset="0" style="stop-color:#e33232;stop-opacity:1"/><stop offset="1" style="stop-color:#6b000d;stop-opacity:1"/></linearGradient><linearGradient id="_Linear5" x1="0" x2="1" y1="0" y2="0" gradientTransform="matrix(1,-2.77556e-17,2.77556e-17,1,0,-1.92826e-06)" gradientUnits="userSpaceOnUse"><stop offset="0" style="stop-color:#e33232;stop-opacity:1"/><stop offset="1" style="stop-color:#6b000d;stop-opacity:1"/></linearGradient><linearGradient id="_Linear6" x1="0" x2="1" y1="0" y2="0" gradientTransform="matrix(1,0,0,1,0,9.68429e-07)" gradientUnits="userSpaceOnUse"><stop offset="0" style="stop-color:#e33232;stop-opacity:1"/><stop offset="1" style="stop-color:#6b000d;stop-opacity:1"/></linearGradient></defs></svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
docs/public/missing.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 498 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 503 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 235 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 269 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Some files were not shown because too many files have changed in this diff Show more