Skip to content

[V3] fix: enhance doctor command to verify Windows SDK dependencies - #4391

Closed
kodumulo wants to merge 1482 commits into
wailsapp:masterfrom
kodumulo:v3-alpha
Closed

kodumulo wants to merge 1482 commits into
wailsapp:masterfrom
kodumulo:v3-alpha

Conversation

@kodumulo

@kodumulo kodumulo commented Jul 4, 2025 •

Copy link
Copy Markdown

Description

This PR fixes issue #4390.
It corrects the wails doctor check for the MSIX Packaging Tool on Windows. The previous check was unreliable. This change uses a PowerShell command (Get-AppxPackage) to accurately detect if the MSIX Packaging Tool is installed from the Microsoft Store and retrieves its version number.
This ensures that developers get an accurate report on whether the necessary tooling for creating MSIX packages is available on their system.
Fixes #4390

Fixes # (issue)

Type of change

Please select the option that is relevant.

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • This change requires a documentation update

How Has This Been Tested?

Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration using wails doctor.

  • Windows
  • macOS
  • Linux

If you checked Linux, please specify the distro and version.

Test Configuration

Please paste the output of wails doctor. If you are unable to run this command, please describe your environment in as much detail as possible.

# System 

┌──────────────────────────────────────────────────────────────────────────────┐
| Name              | Windows 10 Pro                                           |
| Version           | 2009 (Build: 26100)                                      |
| ID                | 24H2                                                     |
| Branding          | Windows 11 Pro                                           |
| Platform          | windows                                                  |
| Architecture      | amd64                                                    |
| Go WebView2Loader | true                                                     |
| WebView2 Version  | 137.0.3296.93                                            |
| CPU               | Intel(R) Core(TM) i7-14700KF                             |
| GPU 1             | NVIDIA GeForce RTX 3050 (NVIDIA) - Driver: 32.0.15.7640  |
| Memory            | 64GB                                                     |
└──────────────────────────────────────────────────────────────────────────────┘

# Build Environment 

┌─────────────────────────────────────────────────────────┐
| Wails CLI    | v3.0.0-dev                               |
| Go Version   | go1.24.4                                 |
| Revision     | 67edf873be7be6ede8f4eb065ca753a3c53ff4bd |
| Modified     | false                                    |
| -buildmode   | exe                                      |
| -compiler    | gc                                       |
| CGO_CFLAGS   |                                          |
| CGO_CPPFLAGS |                                          |
| CGO_CXXFLAGS |                                          |
| CGO_ENABLED  | 1                                        |
| CGO_LDFLAGS  |                                          |
| GOAMD64      | v1                                       |
| GOARCH       | amd64                                    |
| GOOS         | windows                                  |
| vcs          | git                                      |
| vcs.modified | false                                    |
| vcs.revision | 67edf873be7be6ede8f4eb065ca753a3c53ff4bd |
| vcs.time     | 2025-07-02T19:36:59Z                     |
└─────────────────────────────────────────────────────────┘

# Dependencies 

┌────────────────────────────────────────────┐
| NSIS                       | v3.11         |
| MakeAppx.exe (Windows SDK) | Installed     |
| MSIX Packaging Tool        | Not Installed |
| SignTool.exe (Windows SDK) | Installed     |
| npm                        | 11.4.2        |
|                                            |
└───────── * - Optional Dependency ──────────┘

Checklist:

  • I have updated website/src/pages/changelog.mdx with details of this PR
  • My code follows the general coding style of this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes

Summary by CodeRabbit

  • New Features

    • Introduced new documentation site with comprehensive guides, technical references, community showcases, and detailed API documentation.
    • Added automated workflows for building, testing, publishing, and managing issues and pull requests.
    • Implemented automated labeling for issues and pull requests based on content and file paths.
    • Added configuration files for enhanced code quality, formatting, and project management.
  • Documentation

    • Added extensive documentation covering installation, getting started, guides, technical internals, community projects, and changelogs.
    • Included detailed guides on menus, bindings, events, packaging, code signing, single instance management, and more.
    • Published showcase entries for numerous community-developed applications and templates.
  • Chores

    • Added and updated configuration files for contributors, code formatting, ignore patterns, and task automation.
    • Updated workflow and template files for improved contribution and maintenance processes.
    • Enhanced stale issue management and automated sponsor image updates.

leaanthony and others added 30 commits February 28, 2025 07:06
* 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>
…ime-testdata

[v3] Testdata update + smarter npm workflow
# 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
[v3] Built-in service standardisation and enhancement
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
Previously, when calling `.SetHidden(false)` on a menu item that was not hidden, a duplicate menu item was created.
leaanthony and others added 18 commits June 14, 2025 21:23
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>
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>
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>
* Update semgrep workflow

---------

Co-authored-by: joshhardy <joshhardy@users.noreply.github.com>
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>
* 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>
…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>
* 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>
* 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>
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>
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>
* 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>
#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.
@dosubot dosubot Bot added the size:XXL This PR changes 1000+ lines, ignoring generated files. label Jul 4, 2025
@coderabbitai

coderabbitai Bot commented Jul 4, 2025 •

Copy link
Copy Markdown
Contributor

Walkthrough

This update introduces extensive documentation and configuration changes, especially for the Wails v3 project. It adds a new documentation website using Astro/Starlight, comprehensive technical and user guides, community showcase entries, configuration files for GitHub Actions and automation, and updates to ignore rules and contributor listings. No functional code changes or modifications to public APIs are present.

Changes

File(s) / Path(s) Change Summary
.all-contributorsrc Added docs/src/assets/contributors.html to the contributors file list.
.coderabbit.yaml, .github/file-labeler.yml, .github/issue-labeler.yml Added CodeRabbit config and GitHub labeler configurations for automated labeling and review settings.
.github/ISSUE_TEMPLATE/bug_report.yml, .github/pull_request_template.md Updated templates: added duplicate warning in bug report; enhanced PR template with clearer instructions and warnings.
.github/stale.yml, .github/workflows/stale-issues.yml Updated stale issue configuration: longer inactivity period, new labels, improved messages, and new workflow for staling issues.
.github/workflows/auto-label-issues.yml, .github/workflows/issue-triage-automation.yml Added workflows for auto-labeling issues/PRs and automated issue triage using custom scripts and labelers.
.github/workflows/build-and-test-v3.yml Added a comprehensive workflow for building and testing the v3 codebase across OSes and templates.
.github/workflows/pr-master.yml, .github/workflows/publish-npm.yml, .github/workflows/v3-docs.yml Updated/added workflows for PR checks (master), npm publishing (v3-alpha), and docs deployment.
.github/workflows/generate-sponsor-image.yml, .github/workflows/semgrep.yml, .github/workflows/upload-source-documents.yml Minor updates to workflow triggers, commit messages, and runner versions.
.gitignore, docs/.gitignore Expanded ignore rules for build artifacts, documentation outputs, and editor/project files.
.prettierrc.yml Extended markdown formatting rules to include .mdx files.
CNAME, docs/CNAME Added CNAME files for custom domain configuration.
Taskfile.yaml, docs/Taskfile.yml Added/updated Taskfile includes and tasks for documentation automation.
docs/ (multiple files: config, VSCode, npm, Astro, assets, content, guides, etc.) Introduced a full documentation site: config, launch, package, content, guides, community showcase, technical docs, and assets.
docs/src/assets/contributors.html Added static HTML listing project contributors.
docs/src/components/CardAnimation.astro, docs/src/components/Mermaid.astro Added Astro components for card animations and Mermaid diagram rendering.
docs/src/content/... (many .mdx, .md, .ts, .json files) Added comprehensive documentation: guides, technical docs, community showcases, changelog, credits, feedback, and more.

Sequence Diagram(s)

No sequence diagrams generated as all changes are documentation, configuration, or workflow additions without new or modified control flow.

Assessment against linked issues

Objective Addressed Explanation
Correctly detect Windows SDK and MSIX Packaging Tool version in wails doctor (Issue #4390) ❌ No changes to wails doctor or related Go code; this PR is documentation and config only.

Assessment against linked issues: Out-of-scope changes

Code Change Explanation
Addition of documentation website, guides, showcase entries, config files, and automation workflows (docs/, .github/, etc.) These changes are unrelated to the objective of fixing Windows SDK/MSIX detection in wails doctor.
Updates to .all-contributorsrc and addition of contributors HTML Contributor listing changes are not related to the linked issue's functional requirements.
Changes to ignore rules, formatting configs, and task automation These are general repo maintenance and not connected to the Windows SDK/MSIX detection objective.

Possibly related PRs

  • wailsapp/wails#4359: Updates documentation and examples to match the new modular App API, directly related to the documentation and guides added here.
  • wailsapp/wails#3917: Adds the Starlight website and documentation assets, closely related to the new documentation site introduced in this PR.

Suggested labels

awaiting feedback, Windows

Suggested reviewers

  • leaanthony

Poem

🐇
In docs and guides, the carrots grow,
With Astro’s light, our knowledge flows.
Configs and workflows hop in line,
Community projects now brightly shine.
Though code unchanged, the garden’s neat,
This rabbit’s work makes docs complete!

✨ Finishing Touches
  • 📝 Generate Docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@kodumulo kodumulo changed the title [V#] fix: enhance doctor command to verify Windows SDK dependencies ([[#4390](https://github.com/kodumulo/wails/issues/4390)](https://github.com/wailsapp/wails/issues/4390)) [V#] fix: enhance doctor command to verify Windows SDK dependencies ([[#4390] Jul 4, 2025
@kodumulo kodumulo changed the title [V#] fix: enhance doctor command to verify Windows SDK dependencies ([[#4390] [V#] fix: enhance doctor command to verify Windows SDK dependencies Jul 4, 2025
@kodumulo kodumulo changed the title [V#] fix: enhance doctor command to verify Windows SDK dependencies [V3] fix: enhance doctor command to verify Windows SDK dependencies Jul 4, 2025
@dosubot dosubot Bot added Bug Something isn't working Windows labels Jul 4, 2025
@sonarqubecloud

sonarqubecloud Bot commented Jul 4, 2025

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
121 Security Hotspots
24.7% Duplication on New Code (required ≤ 3%)
D Reliability Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

@kodumulo kodumulo closed this Jul 4, 2025
@kodumulo
kodumulo deleted the v3-alpha branch July 4, 2025 03:28

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 24

🔭 Outside diff range comments (2)
.github/ISSUE_TEMPLATE/bug_report.yml (1)

75-79: Fix typo in field id systemetails

The textarea id is misspelled. This can break form parsing/automation relying on stable ids.

-  - type: textarea
-    id: systemetails
+  - type: textarea
+    id: systemdetails
.github/workflows/generate-sponsor-image.yml (1)

17-19: actions/setup-node@v2 doesn’t ship Node 20 – bump to v3

Node 20.x is only supported by actions/setup-node@v3. Staying on v2 will fall back to 16.x.

-        uses: actions/setup-node@v2
+        uses: actions/setup-node@v3
🧹 Nitpick comments (109)
.coderabbit.yaml (2)

25-59: Consider enabling ast-grep (and pruning unused linters) for better signal-to-noise

The current tools block enables ≈15 linters (ruff, golangci-lint, eslint, etc.) but omits ast-grep, which powers many of CodeRabbit’s deeper pattern checks.
Conversely, enabling linters for ecosystems you don’t use (e.g., swiftlint, phpstan, detekt) slows CI and produces irrelevant warnings.

Suggested tweak:

+    ast-grep:
+      # essentials give you most of the value
+      essential_rules: true

-    swiftlint:
-      enabled: true
-    phpstan:
-      enabled: true
-    detekt:
-      enabled: true
+    # Remove language-specific linters not used in this repo

Adjust the enabled set to match the languages actually present in Wails.
This keeps pipelines fast and feedback focused.


60-72: Minor: add newline at end-of-file to satisfy POSIX tools

A trailing newline is missing; some linters (e.g., yamllint) flag this as no-trailing-spaces / missing-newline-at-eof.

CNAME (1)

1-1: Add a terminating newline to comply with POSIX text-file conventions

Many tooling and git diff viewers flag files that lack a trailing newline.
Appending one avoids needless noise in future diffs.

 v3alpha.wails.io
+
.gitignore (1)

40-88: Collapse the long list of example-binary paths into a single glob for easier upkeep

Enumerating every example executable makes the ignore list brittle—each new example will require another entry.
A concise glob maintains the same behaviour without manual updates.

-# V3 Example binaries - ignore executables that match directory names
-/v3/examples/badge-custom/badge-custom
-/v3/examples/badge/badge
-…  ⟵  ~40 more lines
-/v3/examples/window/window
-/v3/examples/wml/wml
+# V3 Example binaries – ignore any file whose name matches its parent dir
+/v3/examples/**/*( )?  # keep this comment if your shell supports extglob
+# Fallback, portable glob:
+/v3/examples/*/*

(The fallback pattern ignores every file directly inside an example sub-directory, which still covers main, app, etc.)
This shrinks the ignore list dramatically and reduces merge-conflict surface.

docs/CNAME (1)

1-1: Terminate file with a newline + verify whether the duplicate CNAME is intentional

  1. Add the missing trailing newline (same rationale as for the root CNAME file).
 v3alpha.wails.io
+
  1. You now have two CNAME files (/CNAME and docs/CNAME).
    GitHub Pages uses only the one at the publish root; the second may be redundant and could confuse contributors. Confirm both are required.
docs/.vscode/extensions.json (1)

1-5: Remove the superfluous blank line at EOF to match surrounding config files

   "unwantedRecommendations": []
 }
-
docs/src/content/docs/community/showcase/wombat.md (1)

7-7: Hyphenate “cross-platform”.

Minor language nit: compound adjective should be hyphenated.

-[Wombat](https://github.com/rogchap/wombat) is a cross platform gRPC client.
+[Wombat](https://github.com/rogchap/wombat) is a cross-platform gRPC client.
docs/src/content/docs/community/showcase/hiposter.md (1)

7-8: Capitalize acronyms & product names for consistency.

-[hiposter](https://github.com/obity/hiposter) is a simple and efficient http API
-testing client tool. Based on Wails, Go and sveltejs.
+[hiposter](https://github.com/obity/hiposter) is a simple and efficient HTTP API
+testing client tool. Based on Wails, Go and SvelteJS.
docs/src/content/docs/community/showcase/wailsterm.md (1)

7-8: Optional wording tweak for clarity (no action required).

The sentence reads well, but if you prefer stricter grammar, consider:

“…a simple, translucent terminal application powered by Wails and Xterm.js.”

docs/src/content/docs/community/showcase/portfall.md (1)

7-8: Capitalize “K8s” and tighten description.

-[Portfall](https://github.com/rekon-oss/portfall) - A desktop k8s
-port-forwarding portal for easy access to all your cluster UIs
+[Portfall](https://github.com/rekon-oss/portfall) – A desktop K8s
+port-forwarding portal for easy access to all your cluster UIs
Taskfile.yaml (2)

19-23: Add matching formatting task for the new docs include

The includes.docs block is wired up, but there is no accompanying docs:format:md invocation in the aggregate format-all-md task below. That means markdown in the new docs site will be skipped when contributors run task format-all-md.

   - task: website:format:md
   - task: v2:format:md
   # - task: v2:website:format
   - task: v3:format:md
   # - task: v3:website:format:md
+  - task: docs:format:md

19-23: Nit: keep include blocks alphabetically sorted

The new docs include now sits between v3 and tasks, breaking the existing alphabetical grouping (v2, v3, …). Sorting helps spot duplicates and merge conflicts faster.

.github/workflows/upload-source-documents.yml (1)

14-18: Consider updating core actions to latest major versions

actions/checkout@v2 and actions/setup-node@v2 are two majors behind their current stable (v4). Upgrading brings speedups and better cache behaviour.

-      - uses: actions/checkout@v2
+      - uses: actions/checkout@v4
…
-        uses: actions/setup-node@v2
+        uses: actions/setup-node@v4

Also applies to: 26-29

docs/src/content/docs/community/showcase/mchat.md (1)

7-8: Minor wording & accessibility polish

  1. “end2end” → “end-to-end” for readability.
  2. Consider a more descriptive link text than “Official page” for accessibility (screen readers).
-[Official page](https://marcio199226.github.io/mchat-site/public/) Fully
-anonymous end2end encrypted chat.
+[Mchat official site](https://marcio199226.github.io/mchat-site/public/) – fully
+anonymous end-to-end encrypted chat.
docs/src/content/docs/community/showcase/optimus.md (1)

7-9: Drop tautological “image” after image formats

“PNG” already implies an image format; trimming redundant words tightens the copy.

-It supports conversion and compression between WebP, JPEG, and PNG
-image formats.
+It supports conversion and compression between WebP, JPEG, and PNG.
docs/.gitignore (1)

16-19: Consider broadening env-file ignore patterns

Many tooling setups generate multiple environment files (e.g. .env.local, .env.development, .env.test).
Ignoring only the two explicit filenames may leave the others accidentally committed.

-# environment variables
-.env
-.env.production
+# environment variables
+.env*
docs/src/content/docs/community/showcase/resizem.md (1)

7-9: Minor grammar polish

process → processing for smoother reading.

-[Resizem](https://github.com/barats/resizem) - is an app designed for bulk image
-process. It is particularly useful for users who need to resize, convert, and
+[Resizem](https://github.com/barats/resizem) is an app designed for bulk image
+processing. It is particularly useful for users who need to resize, convert, and
docs/src/content/docs/community/showcase/surge.md (1)

7-9: Tighten wording & avoid unexplained acronym

Consider expanding p2p and tightening the sentence.

-[Surge](https://getsurge.io/) is a p2p filesharing app designed to utilize
-blockchain technologies to enable 100% anonymous file transfers. Surge is
+[Surge](https://getsurge.io/) is a peer-to-peer file-sharing app that leverages
+blockchain technology to enable fully anonymous file transfers. Surge is
docs/src/content/docs/community/showcase/_template.md (1)

5-9: Add alt-text placeholder in template

Encourage contributors to supply meaningful alt text for accessibility.

-<!-- This is an image -->
-
-![My Project](../../../../assets/showcase-images/my-project.webp)
+<!-- Project screenshot (replace alt text accordingly) -->
+
+![My Project screenshot](../../../../assets/showcase-images/my-project.webp)
docs/src/content/docs/community/showcase/espstudio.md (1)

7-9: Hyphenate “cross-platform” and capitalize “IoT”.
Minor style tweaks improve readability and keep wording consistent with the rest of the showcase entries.

-[ESP Studio](https://github.com/torabian/esp-studio) - Cross platform, Desktop,
-Cloud, and Embedded software for controlling ESP/Arduino devices, and building
-complex IOT workflows and control systems
+[ESP Studio](https://github.com/torabian/esp-studio) – Cross-platform desktop,
+cloud and embedded software for controlling ESP/Arduino devices and building
+complex IoT workflows and control systems
docs/src/content/docs/community/showcase/mollywallet.md (2)

2-5: Correct project name in front-matter.
The title uses “Molley” (with an e) whereas the project is consistently referred to as “Molly” elsewhere (alt text, repo, official branding). Align these to avoid broken links and search issues.

-title: Molley Wallet
+title: Molly Wallet

7-9: Tighten wording and add missing article.

-[Molly Wallet](https://github.com/grvlle/constellation_wallet/) the official
-$DAG wallet of the Constellation Network. It'll let users interact with the
-Hypergraph Network in various ways, not limited to producing $DAG transactions.
+[Molly Wallet](https://github.com/grvlle/constellation_wallet/) is the official
+$DAG wallet of the Constellation Network. It lets users interact with the
+Hypergraph Network in various ways, not limited to submitting $DAG transactions.
docs/src/content/docs/community/showcase/encrypteasy.md (1)

7-9: Hyphenate compound adjective and fix possessive.

-**[EncryptEasy](https://www.encrypteasy.app) is a simple and easy to use PGP
-encryption tool, managing all your and your contacts keys. Encryption should be
-simple. Developed with Wails.**
+**[EncryptEasy](https://www.encrypteasy.app) is a simple, easy-to-use PGP
+encryption tool that manages all your keys and your contacts' keys. Encryption
+should be simple. Developed with Wails.**
docs/.vscode/launch.json (1)

5-5: Prefer an npm/yarn script over a hard-coded path.
Embedding ./node_modules/.bin/astro makes the config OS-sensitive (e.g., Windows astro.cmd) and breaks if the binary moves. Expose it via a package-json script and call npm run dev (or pnpm dev) instead.

-      "command": "./node_modules/.bin/astro dev",
+      "command": "npm run dev",
docs/src/content/docs/community/showcase/clave.md (1)

9-14: Add missing determiners for smoother reading.

-🎨 Simple, intuitive design for hassle-free experience
+🎨 Simple, intuitive design for a hassle-free experience
@@
-⚡ Quick access from system tray for convenience
+⚡ Quick access from the system tray for convenience
docs/src/content/docs/community/showcase/ytd.md (1)

7-10: Polish wording & fix minor grammar/typos

Capitalisation, verb agreement, and article usage need a quick tidy-up.

-[Ytd](https://github.com/marcio199226/ytd/tree/v2-wails) is an app for
-downloading tracks from youtube, creating offline playlists and share them with
-your friends, your friends will be able to playback your playlists or download
-them for offline listening, has an built-in player.
+[Ytd](https://github.com/marcio199226/ytd/tree/v2-wails) is an app for
+downloading tracks from YouTube, creating offline playlists and sharing them with
+your friends. Your friends can **play back** your playlists or download
+them for offline listening. The app also includes **a** built-in player.
docs/src/content/docs/community/showcase/tinyrdm.md (1)

8-12: Fix misspelling & clarify sentences

Minor spelling error (“beautful”) and a missing verb; also replace “Mac” with “macOS”.

-The [Tiny RDM](https://redis.tinycraft.cc/) application is an open-source,
-modern lightweight Redis GUI. It has a beautful UI, intuitive Redis database
-management, and compatible with Windows, Mac, and Linux. It provides visual
-key-value data operations, supports various data decoding and viewing options,
-built-in console for executing commands, slow log queries and more.
+The [Tiny RDM](https://redis.tinycraft.cc/) application is an open-source,
+modern, lightweight Redis GUI. It has a **beautiful** UI and provides intuitive
+Redis database management. It is compatible with Windows, macOS, and Linux. Tiny
+RDM offers visual key-value data operations, supports various data decoding and
+viewing options, includes a built-in console for executing commands, provides
+slow-log queries, and more.
docs/src/content/docs/community/showcase/warmine.md (1)

8-17: Tighten grammar & punctuation

A couple of comma splices and missing determiners; suggested tidy-up below.

-[Minecraft launcher for WarMine](https://warmine.ru/) is a Wails application,
-that allows you to easily join modded game servers and manage your game
-accounts.
+The [Minecraft launcher for WarMine](https://warmine.ru/) is a Wails application
+that allows you to easily join modded game servers and manage your game
+accounts.
@@
-The Launcher downloads the game files, checks their integrity and launches the
-game with a wide range of customization options for the launch arguments from
-the backend.
+The launcher downloads the game files, checks their integrity, and launches the
+game with a wide range of customisable launch arguments controlled by the
+backend.
@@
-Frontend is written in Svelte, whole launcher fits in 9MB and supports Windows
-7-11.
+The frontend is written in Svelte; the whole launcher fits in 9 MB and supports
+Windows 7–11.
docs/src/content/docs/community/showcase/october.md (1)

7-10: Tone – “really” is an unnecessary intensifier

Dropping “really” keeps the copy tight and professional.

-[October](https://october.utf9k.net) is a small Wails application that makes it
-really easy to extract highlights from
+[October](https://october.utf9k.net) is a small Wails application that makes it
+easy to extract highlights from
docs/src/content/authors.ts (1)

3-11: Leverage TypeScript ’s satisfies for cleaner, stricter typing

You can avoid the extra alias and gain exhaustiveness checking with:

-type Authors = NonNullable<StarlightBlogUserConfig>["authors"];
-export const authors: Authors = {
+export const authors = {
   leaanthony: {
     name: "Lea Anthony",
     title: "Maintainer of Wails",
     url: "https://github.com/leaanthony",
     picture: "https://github.com/leaanthony.png",
   },
-};
+} satisfies NonNullable<StarlightBlogUserConfig>["authors"];
docs/src/content/docs/community/showcase/scriptbar.md (1)

8-14: Spelling & clarity tweaks

-output of scripts or [Node-Red](https://nodered.org) server. It runs scripts
-defined in EmailIt program and shows the output. Scripts from xBar or TextBar
-can be used, but currently on the TextBar scripts work well. It also displays
-the output of scripts on your system. ScriptBar doesn't put them in the menubar,
-but has them all in a convient window for easy viewing. You can have multiple
-tabs to have many different things show. You can also keep the links to your
-most visited web sites.
+output of scripts or a [Node-RED](https://nodered.org) server. It runs scripts
+defined in the EmailIt program and shows the output. Scripts from xBar or TextBar
+can be used, but currently only the TextBar scripts work well. ScriptBar doesn’t
+put them in the menubar; instead, all outputs appear in a convenient window.
+Multiple tabs let you view different outputs simultaneously, and you can keep
+links to your most-visited websites.
docs/src/content/docs/community/showcase/riftshare.md (1)

12-15: Minor wording improvement (“in the local network”)

-- Easy secure file sharing between computers both in the local network and
-  through the internet
+- Easy, secure file sharing between computers on the local network or
+  over the internet
docs/src/content/docs/credits.mdx (3)

10-14: Spelling – “MacOS” → “macOS”

Apple’s operating system is styled “macOS”.

-  maintainer
-  - [Travis McLane](https://github.com/tmclane) - Cross-compilation work, MacOS
+  maintainer
+  - [Travis McLane](https://github.com/tmclane) - Cross-compilation work, macOS

30-31: React style object is malformed

style={{ … "max-width": "1600px;" }} mixes kebab-case and includes a trailing semicolon. Prefer camelCase and drop the semicolon:

-  style={{ margin: "auto", width: "100%", "max-width": "1600px;" }}
+  style={{ margin: "auto", width: "100%", maxWidth: "1600px" }}

53-54: Hyphenate compound adjective

-  - [Byron Chris](https://github.com/bh90210) - For his long term contributions to
+  - [Byron Chris](https://github.com/bh90210) - For his long-term contributions to
docs/Taskfile.yml (1)

15-29: Duplicate npm pre-condition deserves a DRY refactor

All three tasks repeat the same npm --version guard. Consider a reusable included task or a YAML anchor to avoid copy-paste noise:

-  dev:
-    summary: Run the dev server
-    preconditions:
-      - sh: npm --version
-        msg: "Looks like npm isn't installed."
-    cmds:
-      - npm run dev
+  dev:
+    desc: Run the dev server
+    preconditions: *npm_check   # ← anchor defined once at the top
+    cmds:
+      - npm run dev

This keeps the file shorter and future-proof.
(If anchors feel over-engineered, at least extract a helper task check:npm.)

docs/src/content/docs/community/showcase/filehound.md (1)

11-15: Tighten wording & fix “metadata” spelling

Current sentence is awkward and uses “meta data”. Suggested tweak:

-The FileHound Export Utility allows FileHound Administrators the ability to run
-a secure document and data extraction tasks for alternative back-up and recovery
-purposes. This application will download all documents and/or meta data saved in
-FileHound based on the filters you choose. The metadata will be exported in both
-JSON and XML formats.
+The FileHound Export Utility lets administrators run secure document- and data-
+extraction tasks for backup or disaster-recovery purposes. It downloads all
+documents and/or metadata that match the selected filters and exports the
+metadata in both JSON and XML formats.
.github/workflows/generate-sponsor-image.yml (1)

32-36: Remove trailing whitespace flagged by YAML-lint

Line 35 has superfluous spaces that break some linters.

-            Auto-generated by the sponsor image workflow␠␠
+            Auto-generated by the sponsor image workflow
docs/src/content/docs/community/showcase/modalfilemanager.md (1)

10-15: Fix minor grammar issues (“been”, “Git must be installed”)

-version uses the same Svelte based frontend code (but it has be greatly modified
-since the departure from NW.js), but the backend is a
-[Wails 2](https://wails.io/) implementation. By using this implementation, I no
-longer use command line `rm`, `cp`, etc. commands, but a git install has to be
-on the system to download themes and extensions. It is fully coded using Go and
+version uses the same Svelte-based frontend (although it has been greatly
+modified since the departure from NW.js). The backend is now a
+[Wails 2](https://wails.io/) implementation. It no longer shells out to `rm`,
+`cp`, etc.; however, Git must be installed to download themes and extensions.
+The application is written entirely in Go and
 runs much faster than the previous versions.
docs/src/content/docs/community/links.md (1)

20-22: Capitalize “GitHub”

-- [Github Issues](https://github.com/wailsapp/wails/issues)
+- [GitHub Issues](https://github.com/wailsapp/wails/issues)
docs/src/content/docs/community/showcase/bulletinboard.md (1)

7-16: Fix multiple typos & a stray space in the showcase text

A few small spelling/grammar slips slipped in:

- versital message board
+ versatile message board

- dialogs that can latter be
+ dialogs that can later be

- T here is also an
+ There is also an

Tidying these keeps the docs polished.

docs/src/content/docs/community/showcase/snippetexpander.md (1)

20-27: Use consistent and correct compound words (“Wails-based”, “Go CLI”, “Vala”)

- The Wails based GUI, go-lang CLI and vala-lang auto expander daemon
+ The Wails-based GUI, Go CLI and Vala auto-expander daemon

This aligns with common naming conventions and the LanguageTool hint.

docs/src/content/config.ts (1)

7-9: Consider separating blog posts into their own collection

Mixing docsSchema and blogSchema may blur routing/content-type concerns (all blog pages will render under /docs/).
If you plan distinct URLs like /blog/…, define a separate "blog" collection instead:

export const collections = {
  i18n: defineCollection({ type: "data", schema: i18nSchema() }),
  docs: defineCollection({ schema: docsSchema() }),
  blog: defineCollection({ schema: blogSchema }),
};
docs/README.md (1)

16-18: Minor wording tweak for conciseness

-Inside of your Astro + Starlight project, you'll see
+Inside your Astro + Starlight project you’ll see

Removes an unnecessary preposition.

.github/workflows/auto-label-issues.yml (1)

29-31: Pin actions/labeler to a full semver tag

While v4 works, pinning to v4.x or a commit SHA guards against unexpected breaking changes on a future major.

-        uses: actions/labeler@v4
+        uses: actions/labeler@v4.0.2

(Replace with the current latest patch tag.)

docs/src/content/docs/community/showcase/emailit.md (1)

7-14: Fix grammar and spelling issues.

The static analysis tools identified several legitimate language issues that should be corrected for professional documentation:

Apply these corrections:

-[EmailIt](https://github.com/raguay/EmailIt/) is a Wails 2 program that is a
-markdown based email sender only with nine notepads, scripts to manipulate the
+[EmailIt](https://github.com/raguay/EmailIt/) is a Wails 2 program that is a
+markdown-based email sender only with nine notepads, scripts to manipulate the
 text, and templates. It also has a scripts terminal to run scripts in EmailIt on
 files in your system. The scripts and templates can be used from the commandline
 itself or with the Alfred, Keyboard Maestro, Dropzone, or PopClip extensions. It
-also supports scripts and themes downloaded form GitHub. Documentation is not
-complete, but the programs works. It's built using Wails2 and Svelte, and the
+also supports scripts and themes downloaded from GitHub. Documentation is 
+incomplete, but the program works. It's built using Wails2 and Svelte, and the
 download is a universal macOS application.
docs/src/content/docs/community/showcase/cfntracker.md (1)

31-32: Fix minor grammar issue.

-- a http stream to send tracking updates to OBS browser sources
+- an http stream to send tracking updates to OBS browser sources
docs/src/content/docs/guides/file-associations.mdx (2)

109-109: Fix missing comma for clarity.

-- For macOS add copy statement like `cp build/darwin/documenticon.icns {{.BIN_DIR}}/{{.APP_NAME}}.app/Contents/Resources` in the `create:app:bundle:` task.
+- For macOS, add copy statement like `cp build/darwin/documenticon.icns {{.BIN_DIR}}/{{.APP_NAME}}.app/Contents/Resources` in the `create:app:bundle:` task.

147-152: Consider using "whether" for improved formality.

-    application has no way of knowing if the first argument is a file or a command
+    application has no way of knowing whether the first argument is a file or a command
docs/src/content/docs/learn/badges.mdx (1)

172-176: Fix malformed Markdown table row

The extra leading pipe (| |) before NewWithOptions shifts the columns and is the root cause of the duplicated-word warning. It breaks table rendering in both GitHub and the Starlight site.

-| | `NewWithOptions(options Options)`          | Creates a new badge service with custom options (Windows only, options are ignored on macOS) |
+| `NewWithOptions(options Options)`            | Creates a new badge service with custom options (Windows only; options are ignored on macOS) |
.github/stale.yml (1)

20-24: Remove trailing whitespace to satisfy YAML linters

Lines 21 – 22 contain stray spaces that trigger the trailing-spaces rule.

-  recent activity. It will be closed if no further activity occurs within the next 10 days. 
+  recent activity. It will be closed if no further activity occurs within the next 10 days.
 
-  
+
docs/package.json (1)

1-30: Consider marking the docs package as private

Adding "private": true prevents an accidental npm publish of internal docs tooling.

 {
   "name": "wails-docs",
   "type": "module",
+  "private": true,
   "version": "0.0.1",
.github/workflows/pr-master.yml (1)

36-37: Remove trailing spaces.

YAML formatting issue with trailing spaces detected by static analysis.

-    if: >
-      github.event.review.state == 'approved' && 
-      github.repository == 'wailsapp/wails' && 
+    if: >
+      github.event.review.state == 'approved' &&
+      github.repository == 'wailsapp/wails' &&
.github/file-labeler.yml (2)

25-25: Remove trailing spaces.

YAML formatting issues detected by static analysis.

-  - '**/commands/**/*'
-  
+  - '**/commands/**/*'
+
-  - 'v3/internal/runtime/**/*'
-  
+  - 'v3/internal/runtime/**/*'
+

Also applies to: 40-40


44-45: Remove excessive blank lines.

Too many blank lines at the end of the file.

-  - 'v3/internal/generator/**/*'
-
-
+  - 'v3/internal/generator/**/*'
docs/src/components/CardAnimation.astro (3)

54-61: Optimize event listener registration.

Multiple event listeners for the same function may cause duplicate initialization. Consider using a flag to prevent multiple executions.

+let initialized = false;
+
 function initAnimation() {
+  if (initialized) return;
+  initialized = true;
+  
   console.log('Initializing animation');

5-5: Remove console.log from production code.

Console.log statements should not be left in production code.

-  console.log('Initializing animation');

13-48: Consider security implications of CDN usage.

Loading external libraries from CDN introduces potential security risks. Consider bundling the library or using subresource integrity.

If you must use CDN, add SRI hash:

-script.src = 'https://cdn.jsdelivr.net/npm/motion@10.16.2/dist/motion.min.js';
+script.src = 'https://cdn.jsdelivr.net/npm/motion@10.16.2/dist/motion.min.js';
+script.integrity = 'sha384-[hash]';
+script.crossOrigin = 'anonymous';
docs/src/content/docs/community/templates.md (2)

11-11: Address TODO comment and verify link.

The TODO comment indicates the link needs updating. Please verify the current link is correct or update it.

-<!-- TODO: Update this link -->
-
 This page serves as a list for community supported templates. To build your own
-template, please see the [Templates](https://wails.io/docs/guides/templates)
+template, please see the [Templates](https://v3alpha.wails.io/guides/custom-templates)
 guide.

Would you like me to verify the correct link for the v3 documentation?

Also applies to: 14-14


53-53: Replace HTML entities with actual characters.

Use actual characters instead of HTML entities for better readability in markdown.

-  Prettier, Composition API with &lt;script setup&gt;)
+  Prettier, Composition API with <script setup>)
-  template using Vue+TypeScript+Vite+Element-plus(仿网易云)
+  template using Vue+TypeScript+Vite+Element-plus (仿网易云)

Also applies to: 61-61

.github/workflows/v3-docs.yml (1)

41-42: Terminate file with a newline

A missing trailing newline triggers many linters and occasionally causes merge-tool noise.
Add a single \n at the end of the file.

docs/src/content/docs/contributing/build-packaging.mdx (1)

26-30: Add a clarifying comma

Minor readability nit:

-High-level tasks are delegated to **Taskfile** targets so the same logic runs in
+High-level tasks are delegated to **Taskfile** targets, so the same logic runs in

This matches the pauses in the sentence and silences the grammar checker.

docs/astro.config.mjs (1)

5-7: Remove unused starlight-links-validator import or enable the plugin

starlightLinksValidator is imported but never referenced because the plugin stanza is commented out.
ESLint/TS will flag this as an unused binding.

Two options:

-import starlightLinksValidator from "starlight-links-validator";

or

-        // starlightLinksValidator({
-        //   exclude: [ ... ]
-        // }),
+        starlightLinksValidator({
+          // TODO: adjust excludes once broken links are fixed
+        }),

Choose one to keep the config clean.

Also applies to: 54-70

.github/workflows/issue-triage-automation.yml (1)

14-18: Strip trailing whitespace & fix indentation

Several lines contain trailing spaces and line 16 is indented with 4 instead of 6 spaces.
Run yamllint -d relaxed or enable the VS Code YAML extension’s formatter to clean this up.

docs/src/content/docs/feedback.mdx (2)

57-59: Grammar tweak: “affect” ➜ “affects”

Minor wording correction to keep subject/verb agreement.

-... such as "this bug also affect ARM builds" ...
+... such as "this bug also affects ARM builds" ...

65-66: Re-phrase awkward sentence

The current wording duplicates the verb phrase. A simpler construction reads more naturally.

-There is a list of known issues & work in progress can be found
-A list of known issues and work in progress can be found
+You can find the list of known issues and work in progress
 [here](https://github.com/orgs/wailsapp/projects/6).
docs/src/content/docs/guides/panic-handling.mdx (1)

70-73: Missing comma after “handler”

Add a comma to avoid a run-on sentence.

-... default handler which outputs error information ...
+... default handler, which outputs error information ...
docs/src/content/docs/getting-started/installation.mdx (2)

50-52: Hyphenate compound adjective “platform-specific”

-You will also need to install platform specific dependencies:
+You will also need to install platform-specific dependencies:

56-60: Capitalize “Xcode” and hyphenate “command-line”

-Wails requires that the xcode command line tools are installed. This can be
+Wails requires that the Xcode command-line tools are installed. This can be
docs/src/content/docs/guides/single-instance.mdx (1)

47-51: Add article and hyphen for clarity

-...passed to it from second instance callback as untrusted.
+...passed to it from the second-instance callback as untrusted.
docs/src/content/docs/getting-started/your-first-app.mdx (1)

251-254: Streamline wording & prefer US spelling

-You can automate all of the initialisation steps by using the `-git` flag when creating your project:
+You can automate all the initialization steps by using the `-git` flag when creating your project:
docs/src/content/docs/guides/cli.mdx (1)

100-104: Incomplete macOS package-type entry

The macOS row ends with a dangling comma, implying a missing entry:

| macOS    | `.app`,                                   |

Either delete the comma or list the second format (e.g. .dmg).

-| macOS    | `.app`,                                   |
+| macOS    | `.app`                                    |
docs/src/content/docs/community/showcase/index.mdx (1)

178-187: Minor grammar & punctuation clean-up in contributor steps

  1. Insert the article “the”.
  2. Fix unmatched parenthesis.
  3. Use the preposition “to” instead of “on”.
-2. Add the image(s) under `docs/src/assets/showcase-images` folder.
-4. Rename the copied file to the name of your project. (Name should not start
-   with `_`))
-6. Add it on the above list in
+2. Add the image(s) under **the** `docs/src/assets/showcase-images` folder.
+4. Rename the copied file to the name of your project (name must not start
+   with `_`).
+6. Add it to the above list in
    `docs/src/content/docs/community/showcase/index.mdx`.
docs/src/content/docs/contributing/template-system.mdx (1)

161-163: Replace en-dash with ASCII hyphen in command sample

Using an en-dash (–) in go run ./v3/cmd/wails3 –help will copy-paste as an invalid flag on most shells.

-go run ./v3/cmd/wails3 –help
+go run ./v3/cmd/wails3 --help
docs/src/content/docs/guides/windows-uac.mdx (1)

142-146: Missing “to” in infinitive phrase

Add the preposition “to” for grammatical correctness.

- Try reverting to `asInvoker` to isolate the issue
+ Try reverting to `asInvoker` to isolate the issue
docs/src/content/docs/blog/2022-09-22-v2-release-notes.md (3)

48-52: Comma missing after “templates” breaks sentence rhythm

A tiny readability glitch — insert a comma after “templates” so the bullet flows naturally.

-templates.
- - [Vite](https://vitejs.dev/) integration providing a hot-reload development
+templates,
+- [Vite](https://vitejs.dev/) integration providing a hot-reload development

103-106: “Cheers Mat!” → add comma for correct direct address

Addressing a person directly should be “Cheers, Mat!”.

-flagship application for the project. Cheers Mat!
+flagship application for the project. Cheers, Mat!

118-120: Spelling: “focussed” → “focused” (preferred form)

Minor spelling consistency with the rest of the docs.

-smaller, quicker, focussed releases
+smaller, quicker, focused releases
docs/src/content/docs/contributing/testing-ci.mdx (1)

212-215: Missing comma after an introductory clause

Add a comma after “matrix” to avoid a run-on sentence.

-matrix you can contribute confidently
+matrix, you can contribute confidently
docs/src/content/docs/contributing/codebase-layout.mdx (1)

90-97: Use the proper “e.g.” abbreviation (with dots)

The docs use “eg.” twice – conventional technical writing prefers “e.g.”.

-Wraps platform-specific packaging CLIs (eg. `electron-builder` equivalents)
+Wraps platform-specific packaging CLIs (e.g. `electron-builder` equivalents)

-utilities (eg. `s/`, `hash/`, `flags/`) keep internal
+utilities (e.g. `s/`, `hash/`, `flags/`) keep internal
docs/src/content/docs/contributing/asset-server.mdx (2)

70-74: Add the missing definite article

-your browser devtools  map errors back to original source.
+your browser devtools map errors back to the original source.

200-203: Comma required before coordinating conjunction

-in both **development** and **production**.  
-Master this layer and you can debug
+in both **development** and **production**.  
+Master this layer, and you can debug
docs/src/content/docs/learn/browser.mdx (2)

364-369: Missing import in snippet

The snippet calls url.Parse but doesn’t show the import. Add it so readers can copy-paste without errors.

import "net/url"

504-506: Insert definite article

-such as copying URLs to clipboard or showing them in a dialog
+such as copying URLs to the clipboard or showing them in a dialog
docs/src/content/docs/blog/2021-11-08-v2-beta2-release-notes.md (2)

40-45: Use the hyphenated form “Mac-specific”

Conventional style guides treat compound adjectives such as “Mac-specific” as hyphenated.
Changing the heading keeps the docs stylistically consistent.

-### Mac Specific Options
+### Mac-specific Options

137-139: Remove stray “bu” token

Line 138 appears to be a left-over fragment and renders on the page.
Delete it to avoid confusing readers.

-![build-cross-windows screenshot](../../../assets/blog-images/build-cross-windows.webp)
-bu
+![build-cross-windows screenshot](../../../assets/blog-images/build-cross-windows.webp)
docs/src/content/docs/learn/application-menu.mdx (2)

94-97: Prefer “dialog” over “dialogue” for consistency

Elsewhere in the docs (and the Wails API) the spelling “dialog” is used.
Aligning the wording avoids search/grep mismatches.

-    // Show settings dialogue
+    // Show settings dialog

100-101: Use absolute root-relative link instead of “./”

All pages under docs/src/content/docs are published at the site root (/).
An absolute link avoids inadvertently breaking if the file moves.

-[Menu Reference](./menu-reference)
+[Menu Reference](/menu-reference)
docs/src/content/docs/index.mdx (1)

63-68: Pin the CLI version to ensure reproducible installs

Relying on @latest means anyone following the quick-start could pick up a
future breaking alpha. Pinning to the current tag makes the guide deterministic.

-go install github.com/wailsapp/wails/v3/cmd/wails3@latest
+go install github.com/wailsapp/wails/v3/cmd/wails3@v3.0.0-alpha.1
docs/src/content/docs/contributing/architecture.mdx (1)

16-18: Spell “vice versa” without a hyphen

Minor spelling tidy-up for professional polish.

-2. **Runtime Flow** – what happens when JS calls Go and vice-versa  
+2. **Runtime Flow** – what happens when JS calls Go and vice versa  
docs/src/content/docs/blog/2021-09-27-v2-beta1-release-notes.md (1)

39-39: Use the correct branding: “macOS” instead of “MacOS”.

Apple’s operating-system name is officially styled “macOS”. Using the correct spelling avoids brand-name mistakes in public documentation.

- unlike MacOS and Linux, it doesn't come with a default compiler.
+ unlike macOS and Linux, it doesn't come with a default compiler.
…
- PS: MacOS and Linux users need not feel left out - porting to this new
+ PS: macOS and Linux users need not feel left out – porting to this new

Also applies to: 201-201

docs/src/content/docs/guides/custom-templates.mdx (1)

278-278: Tone & clarity tweak for the Best Practices intro (optional).

A concise, impersonal sentence reads more professionally.

-Let's talk about some key practices that will help make your template more useful and maintainable. Here are the main areas to focus on:
+The following key practices will make your template more useful and maintainable:
docs/src/content/docs/contributing/runtime-internals.mdx (1)

90-93: Minor readability tweak

Processors are **stateless** – they pull everything they need from the ApplicationContext passed with each message.
Consider inserting a comma after “stateless” to avoid a garden-path read.

No action required if you prefer the current style.

docs/src/content/docs/contributing/extending-wails.mdx (1)

50-55: Shutdown() placeholder could mislead newcomers

The stub Shutdown returns nil without releasing resources.
Maybe add a short comment (e.g. “// close DB, stop goroutines, …”) to signal that real cleanup belongs here.

docs/src/content/docs/learn/bindings.mdx (1)

70-73: Grammar glitch

“we define a GreetService services”

Plural noun is incorrect – change to “service”.

docs/src/content/docs/guides/signing.mdx (1)

60-62: Hard-coded signtool path may break on future Windows SDKs

10.0.17763.0 is tied to an older SDK. Consider parameterising the path (e.g. via $env:WINDOWS_SDK_VERSION or Get-ChildItem "$Env:ProgramFiles\Windows Kits\10\bin" -Recurse -Filter signtool.exe | Select-Object -First 1) to avoid workflow drift when GitHub Actions updates images.

.github/workflows/build-and-test-v3.yml (1)

238-247: YAML lint failures: trailing spaces + missing final newline

yamllint flags these lines; CI that runs yamllint --strict will fail.

-            exit 1␀
+            exit 1
+
docs/src/content/docs/guides/gin-routing.mdx (1)

317-349: ce.Events symbol does not exist in the runtime

All other snippets use wails.Events. Using a non-existent global will confuse readers.

-        ce.Events.Emit("my-event", { 
+        wails.Events.Emit("my-event", {
docs/src/content/docs/guides/gin-services.mdx (1)

120-124: Don’t call the global application.Get() inside ServiceStartup

ServiceStartup(ctx, options) already receives everything needed; relying on a
global makes unit-testing harder.

- s.app = application.Get()
+ s.app = options.App // hypothetical – adjust to real field name
docs/src/content/docs/changelog.mdx (5)

70-72: Duplicate “New Menu guide” entry – remove the second line
Two consecutive bullets refer to the same addition, creating noise in the changelog.

- - New Menu guide by [@leaanthony](https://github.com/leaanthony)

171-174: Duplicate “ContextMenuData” bullet
The point is listed twice; keep a single occurrence to avoid confusion.

- - ContextMenuData now returns a string instead of any by [@leaanthony](https://github.com/leaanthony)

415-423: Duplicate “Do not bind internal service methods” bullet
This bullet is repeated a few lines apart. Remove the duplicate.

- - Do not bind internal service methods in
-   [#3720](https://github.com/wailsapp/wails/pull/3720) by
-   [leaanthony](https://github.com/leaanthony)

180-180: Typo – repeated word “by”

- - Remove ESLint from templates by by [@IanVS](https://github.com/IanVS) in [#4059](https://github.com/wailsapp/wails/pull/4059)
+ - Remove ESLint from templates by [@IanVS](https://github.com/IanVS) in [#4059](https://github.com/wailsapp/wails/pull/4059)

370-370: Capitalisation: use “macOS” consistently
Apple’s operating system should be written “macOS” (lower-case “m”). Update both occurrences for consistency.

- - Fix error on building runnable .app on MacOS when 'name' and 'outputfilename'
+ - Fix error on building runnable .app on macOS when 'name' and 'outputfilename'

- - Fix MacOS systray click handling when no attached window by
+ - Fix macOS systray click handling when no attached window by

Also applies to: 539-539

.github/issue-labeler.yml (1)

1-21: Consider a single case-insensitive regex instead of many near-duplicates

Maintaining dozens of variants (\[v3\], (v3), v3: …) is error-prone.
A concise alternative:

v3-alpha:
  - '(?i)\\bv3(\\-alpha)?\\b'

Same applies to v2-only.
This simplifies the list and avoids missing new permutations.

docs/src/content/docs/blog/2023-01-17-v3-roadmap.md (2)

18-27: Minor wording & grammar improvements

• “Creating of NSIS Installer” → “Creation of NSIS installers”
• “brought with it a lot of enhancements including:” → “introduced several enhancements, including:”

- - Creating of NSIS Installer
+ - Creation of NSIS installers

31-40: Long sentences read well in prose but break when rendered in narrow docs panes

Lines 36-40 contain a 4-line sentence; consider splitting after “community” for readability and to help screen-readers.

docs/src/content/docs/contributing/binding-system.mdx (2)

142-146: Hex ID capitalisation inconsistent with previous example

Go snippet uses 0x7A1201D3, JS snippet uses 0x7a1201d3.
Although functionally equivalent, choose one style for copy-paste friendliness.


181-184: Comma needed for readability

“one-way (Go methods). For JS-exposed functions…”

Add comma after “methods)”.

-one-way (Go methods).  
-For JS-exposed
+one-way (Go methods),  
+for JS-exposed
📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 01be6e3 and 96f3646.

⛔ Files ignored due to path filters (46)
  • docs/package-lock.json is excluded by !**/package-lock.json
  • docs/public/favicon.svg is excluded by !**/*.svg
  • docs/public/missing.png is excluded by !**/*.png
  • docs/public/sponsors/sponsors.svg is excluded by !**/*.svg
  • docs/public/sponsors/zsa.png is excluded by !**/*.png
  • docs/src/assets/blog-images/devtools.png is excluded by !**/*.png
  • docs/src/assets/blog-images/montage.png is excluded by !**/*.png
  • docs/src/assets/menus/context-menu.png is excluded by !**/*.png
  • docs/src/assets/qr1.png is excluded by !**/*.png
  • docs/src/assets/qr2.png is excluded by !**/*.png
  • docs/src/assets/showcase-images/clave.png is excluded by !**/*.png
  • docs/src/assets/showcase-images/esp-studio.png is excluded by !**/*.png
  • docs/src/assets/showcase-images/mac-app.png is excluded by !**/*.png
  • docs/src/assets/showcase-images/mchat.png is excluded by !**/*.png
  • docs/src/assets/showcase-images/restic-browser-2.png is excluded by !**/*.png
  • docs/src/assets/showcase-images/snippetexpandergui-add-snippet.png is excluded by !**/*.png
  • docs/src/assets/showcase-images/snippetexpandergui-search-and-paste.png is excluded by !**/*.png
  • docs/src/assets/showcase-images/snippetexpandergui-select-snippet.png is excluded by !**/*.png
  • docs/src/assets/showcase-images/surge.png is excluded by !**/*.png
  • docs/src/assets/showcase-images/warmine1.png is excluded by !**/*.png
  • docs/src/assets/showcase-images/warmine2.png is excluded by !**/*.png
  • docs/src/assets/wails-logo-dark.svg is excluded by !**/*.svg
  • docs/src/assets/wails-logo-horizontal-dark.svg is excluded by !**/*.svg
  • docs/src/assets/wails-logo-horizontal-light.svg is excluded by !**/*.svg
  • docs/src/assets/wails-logo-light.svg is excluded by !**/*.svg
  • docs/src/assets/wails_build.mp4 is excluded by !**/*.mp4
  • docs/src/assets/wails_dev.mp4 is excluded by !**/*.mp4
  • docs/src/assets/wails_init.mp4 is excluded by !**/*.mp4
  • v2/examples/customlayout/go.sum is excluded by !**/*.sum
  • v2/internal/staticanalysis/test/standard/go.sum is excluded by !**/*.sum
  • v3/examples/badge-custom/build/appicon.png is excluded by !**/*.png
  • v3/examples/badge-custom/build/windows/icon.ico is excluded by !**/*.ico
  • v3/examples/badge-custom/frontend/dist/Inter-Medium.ttf is excluded by !**/dist/**, !**/*.ttf
  • v3/examples/badge-custom/frontend/dist/assets/index-DHsC0KxN.js is excluded by !**/dist/**
  • v3/examples/badge-custom/frontend/dist/index.html is excluded by !**/dist/**
  • v3/examples/badge-custom/frontend/dist/style.css is excluded by !**/dist/**
  • v3/examples/badge-custom/frontend/dist/typescript.svg is excluded by !**/dist/**, !**/*.svg
  • v3/examples/badge-custom/frontend/dist/wails.png is excluded by !**/dist/**, !**/*.png
  • v3/examples/badge-custom/frontend/package-lock.json is excluded by !**/package-lock.json
  • v3/examples/badge-custom/frontend/public/Inter-Medium.ttf is excluded by !**/*.ttf
  • v3/examples/badge-custom/frontend/public/typescript.svg is excluded by !**/*.svg
  • v3/examples/badge-custom/frontend/public/wails.png is excluded by !**/*.png
  • v3/examples/badge/build/appicon.png is excluded by !**/*.png
  • v3/examples/badge/build/windows/icon.ico is excluded by !**/*.ico
  • v3/examples/badge/frontend/dist/Inter-Medium.ttf is excluded by !**/dist/**, !**/*.ttf
  • v3/examples/badge/frontend/dist/assets/index-edhLCYCH.js is excluded by !**/dist/**
📒 Files selected for processing (107)
  • .all-contributorsrc (1 hunks)
  • .coderabbit.yaml (1 hunks)
  • .github/ISSUE_TEMPLATE/bug_report.yml (1 hunks)
  • .github/file-labeler.yml (1 hunks)
  • .github/issue-labeler.yml (1 hunks)
  • .github/pull_request_template.md (3 hunks)
  • .github/stale.yml (1 hunks)
  • .github/workflows/auto-label-issues.yml (1 hunks)
  • .github/workflows/build-and-test-v3.yml (1 hunks)
  • .github/workflows/generate-sponsor-image.yml (1 hunks)
  • .github/workflows/issue-triage-automation.yml (1 hunks)
  • .github/workflows/pr-master.yml (2 hunks)
  • .github/workflows/publish-npm.yml (1 hunks)
  • .github/workflows/semgrep.yml (2 hunks)
  • .github/workflows/stale-issues.yml (1 hunks)
  • .github/workflows/upload-source-documents.yml (1 hunks)
  • .github/workflows/v3-docs.yml (1 hunks)
  • .gitignore (1 hunks)
  • .prettierrc.yml (1 hunks)
  • CNAME (1 hunks)
  • Taskfile.yaml (1 hunks)
  • docs/.gitignore (1 hunks)
  • docs/.npmrc (1 hunks)
  • docs/.vscode/extensions.json (1 hunks)
  • docs/.vscode/launch.json (1 hunks)
  • docs/CNAME (1 hunks)
  • docs/README.md (1 hunks)
  • docs/Taskfile.yml (1 hunks)
  • docs/astro.config.mjs (1 hunks)
  • docs/package.json (1 hunks)
  • docs/src/assets/contributors.html (1 hunks)
  • docs/src/components/CardAnimation.astro (1 hunks)
  • docs/src/components/Mermaid.astro (1 hunks)
  • docs/src/content/authors.ts (1 hunks)
  • docs/src/content/config.ts (1 hunks)
  • docs/src/content/docs/blog/2021-09-27-v2-beta1-release-notes.md (1 hunks)
  • docs/src/content/docs/blog/2021-11-08-v2-beta2-release-notes.md (1 hunks)
  • docs/src/content/docs/blog/2022-02-22-v2-beta3-release-notes.md (1 hunks)
  • docs/src/content/docs/blog/2022-09-22-v2-release-notes.md (1 hunks)
  • docs/src/content/docs/blog/2023-01-17-v3-roadmap.md (1 hunks)
  • docs/src/content/docs/changelog.mdx (1 hunks)
  • docs/src/content/docs/community/links.md (1 hunks)
  • docs/src/content/docs/community/showcase/_template.md (1 hunks)
  • docs/src/content/docs/community/showcase/bulletinboard.md (1 hunks)
  • docs/src/content/docs/community/showcase/cfntracker.md (1 hunks)
  • docs/src/content/docs/community/showcase/clave.md (1 hunks)
  • docs/src/content/docs/community/showcase/emailit.md (1 hunks)
  • docs/src/content/docs/community/showcase/encrypteasy.md (1 hunks)
  • docs/src/content/docs/community/showcase/espstudio.md (1 hunks)
  • docs/src/content/docs/community/showcase/filehound.md (1 hunks)
  • docs/src/content/docs/community/showcase/hiposter.md (1 hunks)
  • docs/src/content/docs/community/showcase/index.mdx (1 hunks)
  • docs/src/content/docs/community/showcase/mchat.md (1 hunks)
  • docs/src/content/docs/community/showcase/minecraftupdater.md (1 hunks)
  • docs/src/content/docs/community/showcase/minesweeper-xp.md (1 hunks)
  • docs/src/content/docs/community/showcase/modalfilemanager.md (1 hunks)
  • docs/src/content/docs/community/showcase/mollywallet.md (1 hunks)
  • docs/src/content/docs/community/showcase/october.md (1 hunks)
  • docs/src/content/docs/community/showcase/optimus.md (1 hunks)
  • docs/src/content/docs/community/showcase/portfall.md (1 hunks)
  • docs/src/content/docs/community/showcase/resizem.md (1 hunks)
  • docs/src/content/docs/community/showcase/restic-browser.md (1 hunks)
  • docs/src/content/docs/community/showcase/riftshare.md (1 hunks)
  • docs/src/content/docs/community/showcase/scriptbar.md (1 hunks)
  • docs/src/content/docs/community/showcase/snippetexpander.md (1 hunks)
  • docs/src/content/docs/community/showcase/surge.md (1 hunks)
  • docs/src/content/docs/community/showcase/tinyrdm.md (1 hunks)
  • docs/src/content/docs/community/showcase/wailsterm.md (1 hunks)
  • docs/src/content/docs/community/showcase/wally.md (1 hunks)
  • docs/src/content/docs/community/showcase/warmine.md (1 hunks)
  • docs/src/content/docs/community/showcase/wombat.md (1 hunks)
  • docs/src/content/docs/community/showcase/ytd.md (1 hunks)
  • docs/src/content/docs/community/templates.md (1 hunks)
  • docs/src/content/docs/contributing/_category_.json (1 hunks)
  • docs/src/content/docs/contributing/architecture.mdx (1 hunks)
  • docs/src/content/docs/contributing/asset-server.mdx (1 hunks)
  • docs/src/content/docs/contributing/binding-system.mdx (1 hunks)
  • docs/src/content/docs/contributing/build-packaging.mdx (1 hunks)
  • docs/src/content/docs/contributing/codebase-layout.mdx (1 hunks)
  • docs/src/content/docs/contributing/extending-wails.mdx (1 hunks)
  • docs/src/content/docs/contributing/index.mdx (1 hunks)
  • docs/src/content/docs/contributing/runtime-internals.mdx (1 hunks)
  • docs/src/content/docs/contributing/template-system.mdx (1 hunks)
  • docs/src/content/docs/contributing/testing-ci.mdx (1 hunks)
  • docs/src/content/docs/credits.mdx (1 hunks)
  • docs/src/content/docs/feedback.mdx (1 hunks)
  • docs/src/content/docs/getting-started/installation.mdx (1 hunks)
  • docs/src/content/docs/getting-started/your-first-app.mdx (1 hunks)
  • docs/src/content/docs/guides/_category_.json (1 hunks)
  • docs/src/content/docs/guides/cli.mdx (1 hunks)
  • docs/src/content/docs/guides/custom-templates.mdx (1 hunks)
  • docs/src/content/docs/guides/customising-windows.mdx (1 hunks)
  • docs/src/content/docs/guides/events-reference.mdx (1 hunks)
  • docs/src/content/docs/guides/file-associations.mdx (1 hunks)
  • docs/src/content/docs/guides/gin-routing.mdx (1 hunks)
  • docs/src/content/docs/guides/gin-services.mdx (1 hunks)
  • docs/src/content/docs/guides/menus.mdx (1 hunks)
  • docs/src/content/docs/guides/msix-packaging.mdx (1 hunks)
  • docs/src/content/docs/guides/panic-handling.mdx (1 hunks)
  • docs/src/content/docs/guides/signing.mdx (1 hunks)
  • docs/src/content/docs/guides/single-instance.mdx (1 hunks)
  • docs/src/content/docs/guides/windows-uac.mdx (1 hunks)
  • docs/src/content/docs/index.mdx (1 hunks)
  • docs/src/content/docs/learn/application-menu.mdx (1 hunks)
  • docs/src/content/docs/learn/badges.mdx (1 hunks)
  • docs/src/content/docs/learn/bindings.mdx (1 hunks)
  • docs/src/content/docs/learn/browser.mdx (1 hunks)
⛔ Files not processed due to max files limit (43)
  • docs/src/content/docs/learn/build.mdx
  • docs/src/content/docs/learn/clipboard.mdx
  • docs/src/content/docs/learn/context-menu.mdx
  • docs/src/content/docs/learn/dialogs.mdx
  • docs/src/content/docs/learn/environment.mdx
  • docs/src/content/docs/learn/events.mdx
  • docs/src/content/docs/learn/keybindings.mdx
  • docs/src/content/docs/learn/manager-api.mdx
  • docs/src/content/docs/learn/menu-reference.mdx
  • docs/src/content/docs/learn/notifications.mdx
  • docs/src/content/docs/learn/runtime.mdx
  • docs/src/content/docs/learn/screens.mdx
  • docs/src/content/docs/learn/services.mdx
  • docs/src/content/docs/learn/systray.mdx
  • docs/src/content/docs/learn/windows.mdx
  • docs/src/content/docs/status.mdx
  • docs/src/content/docs/troubleshooting/mac-syso.mdx
  • docs/src/content/docs/tutorials/01-creating-a-service.mdx
  • docs/src/content/docs/whats-new.md
  • docs/src/env.d.ts
  • docs/src/stylesheets/extra.css
  • docs/src/stylesheets/mermaid.css
  • docs/tsconfig.json
  • mkdocs-website/docs/en/changelog.md
  • qodana.yaml
  • scripts/AUTOMATION-README.md
  • scripts/issue-triage.ps1
  • scripts/issue-triage.sh
  • scripts/pr-review-helper.ps1
  • v2/cmd/wails/doctor.go
  • v2/examples/customlayout/go.mod
  • v2/internal/app/app_devtools.go
  • v2/internal/frontend/desktop/darwin/WailsMenu.m
  • v2/internal/frontend/desktop/windows/winc/w32/user32.go
  • v2/internal/go-common-file-dialog/cfd/iShellItem.go
  • v2/internal/staticanalysis/test/standard/go.mod
  • v2/pkg/assetserver/assethandler.go
  • v2/pkg/options/linux/linux.go
  • v3/.gitignore
  • v3/.prettierignore
  • v3/.prettierrc.yml
  • v3/README.md
  • v3/TESTING.md
🧰 Additional context used
🧠 Learnings (55)
📓 Common learnings
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/astro.config.mjs:0-0
Timestamp: 2024-12-02T22:00:10.339Z
Learning: In the Wails documentation, all content under 'docs/src/content/docs' is accessible at the root path '/', so links in the sidebar configuration should not include the '/docs' prefix.
docs/CNAME (5)
Learnt from: fbbdev
PR: wailsapp/wails#4045
File: v3/internal/generator/render/info.go:28-68
Timestamp: 2025-02-04T23:59:43.956Z
Learning: In the Wails v3 project, internal functions are designed to panic on nil parameters as they represent contract violations, rather than adding defensive nil checks.
Learnt from: popaprozac
PR: wailsapp/wails#4256
File: v2/internal/frontend/desktop/linux/notifications.go:27-28
Timestamp: 2025-04-29T23:54:07.488Z
Learning: In Wails v2, unlike v3-alpha which has a `ServiceShutdown` method for services, there is no standardized teardown pattern for frontend implementations. When implementing features that require cleanup (like goroutines or resources), add explicit cleanup methods (e.g., `CleanupNotifications()`) that handle resource release, context cancellation, and connection closure.
Learnt from: popaprozac
PR: wailsapp/wails#4256
File: v2/internal/frontend/desktop/linux/notifications.go:27-28
Timestamp: 2025-04-29T23:54:07.488Z
Learning: In Wails v2, unlike v3-alpha which has a `ServiceShutdown` method for services, there is no standardized teardown pattern for frontend implementations. When implementing features that require cleanup (like goroutines or resources), add explicit cleanup methods (e.g., `CleanupNotifications()`) that handle resource release, context cancellation, and connection closure.
Learnt from: leaanthony
PR: wailsapp/wails#4013
File: v3/examples/contextmenus/main.go:38-44
Timestamp: 2025-01-17T05:51:02.521Z
Learning: Error handling is not required in example code within the Wails repository as examples should prioritize clarity and simplicity over production-level concerns.
Learnt from: fbbdev
PR: wailsapp/wails#4001
File: v3/internal/generator/testdata/output/lang=TS/UseInterfaces=true/UseNames=false/github.com/wailsapp/wails/v3/internal/generator/testcases/function_single_internal/greetservice.ts:0-0
Timestamp: 2025-01-15T22:33:30.639Z
Learning: In the Wails framework's TypeScript bindings, the import path "/wails/runtime.js" is intentionally absolute and should not be changed to a relative path.
CNAME (5)
Learnt from: fbbdev
PR: wailsapp/wails#4045
File: v3/internal/generator/render/info.go:28-68
Timestamp: 2025-02-04T23:59:43.956Z
Learning: In the Wails v3 project, internal functions are designed to panic on nil parameters as they represent contract violations, rather than adding defensive nil checks.
Learnt from: popaprozac
PR: wailsapp/wails#4256
File: v2/internal/frontend/desktop/linux/notifications.go:27-28
Timestamp: 2025-04-29T23:54:07.488Z
Learning: In Wails v2, unlike v3-alpha which has a `ServiceShutdown` method for services, there is no standardized teardown pattern for frontend implementations. When implementing features that require cleanup (like goroutines or resources), add explicit cleanup methods (e.g., `CleanupNotifications()`) that handle resource release, context cancellation, and connection closure.
Learnt from: popaprozac
PR: wailsapp/wails#4256
File: v2/internal/frontend/desktop/linux/notifications.go:27-28
Timestamp: 2025-04-29T23:54:07.488Z
Learning: In Wails v2, unlike v3-alpha which has a `ServiceShutdown` method for services, there is no standardized teardown pattern for frontend implementations. When implementing features that require cleanup (like goroutines or resources), add explicit cleanup methods (e.g., `CleanupNotifications()`) that handle resource release, context cancellation, and connection closure.
Learnt from: leaanthony
PR: wailsapp/wails#4013
File: v3/examples/contextmenus/main.go:38-44
Timestamp: 2025-01-17T05:51:02.521Z
Learning: Error handling is not required in example code within the Wails repository as examples should prioritize clarity and simplicity over production-level concerns.
Learnt from: fbbdev
PR: wailsapp/wails#4001
File: v3/internal/generator/testdata/output/lang=TS/UseInterfaces=true/UseNames=false/github.com/wailsapp/wails/v3/internal/generator/testcases/function_single_internal/greetservice.ts:0-0
Timestamp: 2025-01-15T22:33:30.639Z
Learning: In the Wails framework's TypeScript bindings, the import path "/wails/runtime.js" is intentionally absolute and should not be changed to a relative path.
.github/ISSUE_TEMPLATE/bug_report.yml (3)
Learnt from: Taiterbase
PR: wailsapp/wails#4241
File: v2/examples/privatewindow/frontend/src/main.js:7-15
Timestamp: 2025-04-26T02:15:24.843Z
Learning: The `wails init` command generates template code that includes an unmatched closing div tag in the HTML structure.
Learnt from: fbbdev
PR: wailsapp/wails#4001
File: v3/internal/generator/testdata/output/lang=TS/UseInterfaces=false/UseNames=true/github.com/wailsapp/wails/v3/internal/generator/testcases/function_single_internal/greetservice.ts:0-0
Timestamp: 2025-01-15T22:33:47.244Z
Learning: In the Wails framework, files with the header comment "Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL" are automatically generated and should not be modified manually.
Learnt from: leaanthony
PR: wailsapp/wails#4013
File: v3/examples/contextmenus/main.go:38-44
Timestamp: 2025-01-17T05:51:02.521Z
Learning: Error handling is not required in example code within the Wails repository as examples should prioritize clarity and simplicity over production-level concerns.
docs/.vscode/extensions.json (1)
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/src/assets/contributors.astro:0-0
Timestamp: 2024-12-03T07:49:16.593Z
Learning: The table in 'docs/src/assets/contributors.astro' is autogenerated by another bot, so manual changes to it would be overwritten and are unnecessary.
docs/src/content/docs/guides/_category_.json (1)
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/astro.config.mjs:0-0
Timestamp: 2024-12-02T22:00:10.339Z
Learning: In the Wails documentation, all content under 'docs/src/content/docs' is accessible at the root path '/', so links in the sidebar configuration should not include the '/docs' prefix.
Taskfile.yaml (2)
Learnt from: leaanthony
PR: wailsapp/wails#3748
File: v3/internal/templates/_common/Taskfile.tmpl.yml:18-18
Timestamp: 2024-09-15T11:08:01.900Z
Learning: In Taskfile, variables are referenced using `{{ "{{variable}}" }}` without the dot notation.
Learnt from: leaanthony
PR: wailsapp/wails#3748
File: v3/internal/templates/_common/Taskfile.tmpl.yml:18-18
Timestamp: 2024-10-08T22:11:37.054Z
Learning: In Taskfile, variables are referenced using `{{ "{{variable}}" }}` without the dot notation.
docs/src/content/docs/contributing/_category_.json (3)
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/astro.config.mjs:0-0
Timestamp: 2024-12-02T22:00:10.339Z
Learning: In the Wails documentation, all content under 'docs/src/content/docs' is accessible at the root path '/', so links in the sidebar configuration should not include the '/docs' prefix.
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/src/assets/contributors.astro:0-0
Timestamp: 2024-12-03T07:49:16.593Z
Learning: The table in 'docs/src/assets/contributors.astro' is autogenerated by another bot, so manual changes to it would be overwritten and are unnecessary.
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/src/content/docs/index.mdx:13-18
Timestamp: 2024-12-02T22:14:41.158Z
Learning: The documentation page `/learn/services` exists in `docs/src/content/docs/learn/services.md`.
docs/src/content/docs/community/showcase/resizem.md (1)
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/src/content/docs/api/events_mac.md:9-9
Timestamp: 2024-12-02T22:13:32.421Z
Learning: In `docs/src/content/docs/api/events_mac.md`, the heading levels are intentionally adjusted to improve sizing on the browser, to avoid manually customizing the styling of the doc generator.
docs/src/content/docs/community/showcase/wailsterm.md (3)
Learnt from: Taiterbase
PR: wailsapp/wails#4241
File: v2/examples/privatewindow/frontend/src/main.js:7-15
Timestamp: 2025-04-26T02:15:24.843Z
Learning: The `wails init` command generates template code that includes an unmatched closing div tag in the HTML structure.
Learnt from: fbbdev
PR: wailsapp/wails#4001
File: v3/internal/generator/testdata/output/lang=TS/UseInterfaces=true/UseNames=false/github.com/wailsapp/wails/v3/internal/generator/testcases/function_single_internal/greetservice.ts:0-0
Timestamp: 2025-01-15T22:33:30.639Z
Learning: In the Wails framework's TypeScript bindings, the import path "/wails/runtime.js" is intentionally absolute and should not be changed to a relative path.
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/astro.config.mjs:0-0
Timestamp: 2024-12-02T22:00:10.339Z
Learning: In the Wails documentation, all content under 'docs/src/content/docs' is accessible at the root path '/', so links in the sidebar configuration should not include the '/docs' prefix.
docs/.gitignore (1)
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/src/assets/contributors.astro:0-0
Timestamp: 2024-12-03T07:49:16.593Z
Learning: The table in 'docs/src/assets/contributors.astro' is autogenerated by another bot, so manual changes to it would be overwritten and are unnecessary.
docs/src/content/docs/community/showcase/wally.md (1)
Learnt from: leaanthony
PR: wailsapp/wails#4013
File: v3/examples/contextmenus/main.go:38-44
Timestamp: 2025-01-17T05:51:02.521Z
Learning: Error handling is not required in example code within the Wails repository as examples should prioritize clarity and simplicity over production-level concerns.
docs/src/content/authors.ts (1)
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/src/assets/contributors.astro:0-0
Timestamp: 2024-12-03T07:49:16.593Z
Learning: The table in 'docs/src/assets/contributors.astro' is autogenerated by another bot, so manual changes to it would be overwritten and are unnecessary.
docs/src/content/docs/community/showcase/modalfilemanager.md (1)
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/src/content/docs/development/introduction.mdx:43-44
Timestamp: 2024-12-02T22:08:55.625Z
Learning: When using the `<FileTree>` component in `docs/src/content/docs/development/introduction.mdx`, repeating words like `examples Examples` and `internal Internal` is intentional to achieve the desired formatting.
docs/src/content/docs/community/links.md (1)
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/astro.config.mjs:0-0
Timestamp: 2024-12-02T22:00:10.339Z
Learning: In the Wails documentation, all content under 'docs/src/content/docs' is accessible at the root path '/', so links in the sidebar configuration should not include the '/docs' prefix.
docs/Taskfile.yml (2)
Learnt from: leaanthony
PR: wailsapp/wails#3748
File: v3/internal/templates/_common/Taskfile.tmpl.yml:18-18
Timestamp: 2024-09-15T11:08:01.900Z
Learning: In Taskfile, variables are referenced using `{{ "{{variable}}" }}` without the dot notation.
Learnt from: leaanthony
PR: wailsapp/wails#3748
File: v3/internal/templates/_common/Taskfile.tmpl.yml:18-18
Timestamp: 2024-10-08T22:11:37.054Z
Learning: In Taskfile, variables are referenced using `{{ "{{variable}}" }}` without the dot notation.
docs/src/content/docs/credits.mdx (1)
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/src/assets/contributors.astro:0-0
Timestamp: 2024-12-03T07:49:16.593Z
Learning: The table in 'docs/src/assets/contributors.astro' is autogenerated by another bot, so manual changes to it would be overwritten and are unnecessary.
.gitignore (2)
Learnt from: fbbdev
PR: wailsapp/wails#4001
File: v3/internal/generator/testcases/aliases/main.go:65-68
Timestamp: 2025-01-15T22:40:58.594Z
Learning: Files in `v3/internal/generator/testcases` are test dummies used for testing purposes only. They are never compiled into the application and should not be subject to the same level of code review as production code.
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/src/content/docs/development/introduction.mdx:43-44
Timestamp: 2024-12-02T22:08:55.625Z
Learning: When using the `<FileTree>` component in `docs/src/content/docs/development/introduction.mdx`, repeating words like `examples Examples` and `internal Internal` is intentional to achieve the desired formatting.
docs/README.md (1)
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/src/assets/contributors.astro:0-0
Timestamp: 2024-12-03T07:49:16.593Z
Learning: The table in 'docs/src/assets/contributors.astro' is autogenerated by another bot, so manual changes to it would be overwritten and are unnecessary.
docs/astro.config.mjs (1)
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/src/assets/contributors.astro:0-0
Timestamp: 2024-12-03T07:49:16.593Z
Learning: The table in 'docs/src/assets/contributors.astro' is autogenerated by another bot, so manual changes to it would be overwritten and are unnecessary.
docs/src/content/docs/getting-started/your-first-app.mdx (1)
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/astro.config.mjs:0-0
Timestamp: 2024-12-02T22:00:10.339Z
Learning: In the Wails documentation, all content under 'docs/src/content/docs' is accessible at the root path '/', so links in the sidebar configuration should not include the '/docs' prefix.
docs/src/content/docs/community/templates.md (2)
Learnt from: fbbdev
PR: wailsapp/wails#4045
File: v3/internal/generator/render/templates/index.tmpl:37-37
Timestamp: 2025-02-05T11:53:01.219Z
Learning: The template `v3/internal/generator/render/templates/index.tmpl` relies on models being sorted with exported ones first, which enables breaking early when encountering non-exported models. This contract needs to be verified and documented in the codebase.
Learnt from: Taiterbase
PR: wailsapp/wails#4241
File: v2/examples/privatewindow/frontend/src/main.js:7-15
Timestamp: 2025-04-26T02:15:24.843Z
Learning: The `wails init` command generates template code that includes an unmatched closing div tag in the HTML structure.
docs/src/content/docs/learn/badges.mdx (2)
Learnt from: popaprozac
PR: wailsapp/wails#4234
File: v3/pkg/services/badge/badge_windows.go:273-275
Timestamp: 2025-04-25T03:34:23.566Z
Learning: For the badge service in Windows, a maximum text length of 2 characters is recommended but not enforced through truncation to maintain API flexibility. The code adjusts font size for labels longer than 1 character instead.
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/src/content/docs/index.mdx:13-18
Timestamp: 2024-12-02T22:14:41.158Z
Learning: The documentation page `/learn/services` exists in `docs/src/content/docs/learn/services.md`.
docs/src/content/docs/guides/single-instance.mdx (1)
Learnt from: popaprozac
PR: wailsapp/wails#4098
File: v3/pkg/services/notifications/notifications.go:46-55
Timestamp: 2025-03-24T20:22:56.233Z
Learning: In the notifications package, initialization of the `Service` struct is handled through platform-specific `New()` functions in each implementation file (darwin, windows, linux) rather than a generic constructor in the main package file. Each platform implementation follows a singleton pattern using `notificationServiceOnce.Do()` and creates a global `NotificationService` variable that's accessed through a thread-safe `getNotificationService()` function.
docs/src/content/docs/guides/panic-handling.mdx (8)
Learnt from: fbbdev
PR: wailsapp/wails#4024
File: v3/pkg/application/services.go:38-51
Timestamp: 2025-01-18T21:19:47.778Z
Learning: In the Wails v3 codebase, panic is used to catch invalid invocations that should never occur in production (programming errors), while error returns are reserved for recoverable error conditions (runtime errors). For example, the `NewService` function in `v3/pkg/application/services.go` uses panic to handle the case where more than one `ServiceOptions` instance is provided, as this is considered an unrecoverable programming error.
Learnt from: fbbdev
PR: wailsapp/wails#4045
File: v3/internal/generator/render/info.go:28-68
Timestamp: 2025-02-04T23:59:43.956Z
Learning: In the Wails v3 project, internal functions are designed to panic on nil parameters as they represent contract violations, rather than adding defensive nil checks.
Learnt from: popaprozac
PR: wailsapp/wails#4256
File: v2/internal/frontend/desktop/linux/notifications.go:27-28
Timestamp: 2025-04-29T23:54:07.488Z
Learning: In Wails v2, unlike v3-alpha which has a `ServiceShutdown` method for services, there is no standardized teardown pattern for frontend implementations. When implementing features that require cleanup (like goroutines or resources), add explicit cleanup methods (e.g., `CleanupNotifications()`) that handle resource release, context cancellation, and connection closure.
Learnt from: popaprozac
PR: wailsapp/wails#4256
File: v2/internal/frontend/desktop/linux/notifications.go:27-28
Timestamp: 2025-04-29T23:54:07.488Z
Learning: In Wails v2, unlike v3-alpha which has a `ServiceShutdown` method for services, there is no standardized teardown pattern for frontend implementations. When implementing features that require cleanup (like goroutines or resources), add explicit cleanup methods (e.g., `CleanupNotifications()`) that handle resource release, context cancellation, and connection closure.
Learnt from: leaanthony
PR: wailsapp/wails#4013
File: v3/examples/contextmenus/main.go:38-44
Timestamp: 2025-01-17T05:51:02.521Z
Learning: Error handling is not required in example code within the Wails repository as examples should prioritize clarity and simplicity over production-level concerns.
Learnt from: popaprozac
PR: wailsapp/wails#4098
File: v3/pkg/services/notifications/notifications_darwin.go:39-46
Timestamp: 2025-03-23T00:41:39.612Z
Learning: For the macOS notifications implementation in Wails, an early panic is used when the bundle identifier check fails rather than returning an error, because the Objective-C code would crash later anyway. The panic provides clear instructions to developers about bundling and signing requirements.
Learnt from: leaanthony
PR: wailsapp/wails#4234
File: v3/examples/badge-custom/main.go:87-93
Timestamp: 2025-04-26T21:03:42.481Z
Learning: In Wails applications, it's not necessary to implement explicit graceful shutdown for simple goroutines (like time emitters) as Go automatically terminates all goroutines as part of the application shutdown process.
Learnt from: fbbdev
PR: wailsapp/wails#4001
File: v3/internal/generator/analyse_test.go:105-107
Timestamp: 2025-01-15T22:42:09.774Z
Learning: In the FindServices function of v3/internal/generator/analyse.go, services should never be nil when err is nil. This is a design contract and any violation should result in a panic rather than being handled silently.
docs/src/content/docs/guides/customising-windows.mdx (1)
Learnt from: nixpare
PR: wailsapp/wails#3763
File: v3/examples/keybindings/main.go:16-17
Timestamp: 2024-09-20T23:34:29.841Z
Learning: In the codebase, `application.Options.KeyBindings` uses the `application.Window` type, whereas `application.WebviewWindowOptions.KeyBindings` uses `*application.WebviewWindow`. This is intentional and acceptable.
docs/src/content/docs/getting-started/installation.mdx (1)
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/astro.config.mjs:0-0
Timestamp: 2024-12-02T22:00:10.339Z
Learning: In the Wails documentation, all content under 'docs/src/content/docs' is accessible at the root path '/', so links in the sidebar configuration should not include the '/docs' prefix.
docs/src/content/docs/contributing/template-system.mdx (3)
Learnt from: fbbdev
PR: wailsapp/wails#4045
File: v3/internal/generator/render/templates/index.tmpl:37-37
Timestamp: 2025-02-05T11:53:01.219Z
Learning: The template `v3/internal/generator/render/templates/index.tmpl` relies on models being sorted with exported ones first, which enables breaking early when encountering non-exported models. This contract needs to be verified and documented in the codebase.
Learnt from: Taiterbase
PR: wailsapp/wails#4241
File: v2/examples/privatewindow/frontend/src/main.js:7-15
Timestamp: 2025-04-26T02:15:24.843Z
Learning: The `wails init` command generates template code that includes an unmatched closing div tag in the HTML structure.
Learnt from: fbbdev
PR: wailsapp/wails#4045
File: v3/internal/generator/render/templates/index.tmpl:37-37
Timestamp: 2025-02-05T11:53:01.219Z
Learning: The template `v3/internal/generator/render/templates/index.tmpl` uses `break` when encountering the first non-exported model, which relies on a contract that models are sorted with exported ones first.
docs/src/content/docs/blog/2022-09-22-v2-release-notes.md (2)
Learnt from: popaprozac
PR: wailsapp/wails#4256
File: v2/internal/frontend/desktop/linux/notifications.go:27-28
Timestamp: 2025-04-29T23:54:07.488Z
Learning: In Wails v2, unlike v3-alpha which has a `ServiceShutdown` method for services, there is no standardized teardown pattern for frontend implementations. When implementing features that require cleanup (like goroutines or resources), add explicit cleanup methods (e.g., `CleanupNotifications()`) that handle resource release, context cancellation, and connection closure.
Learnt from: popaprozac
PR: wailsapp/wails#4256
File: v2/internal/frontend/desktop/linux/notifications.go:27-28
Timestamp: 2025-04-29T23:54:07.488Z
Learning: In Wails v2, unlike v3-alpha which has a `ServiceShutdown` method for services, there is no standardized teardown pattern for frontend implementations. When implementing features that require cleanup (like goroutines or resources), add explicit cleanup methods (e.g., `CleanupNotifications()`) that handle resource release, context cancellation, and connection closure.
docs/src/content/docs/community/showcase/index.mdx (1)
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/src/content/docs/development/introduction.mdx:43-44
Timestamp: 2024-12-02T22:08:55.625Z
Learning: When using the `<FileTree>` component in `docs/src/content/docs/development/introduction.mdx`, repeating words like `examples Examples` and `internal Internal` is intentional to achieve the desired formatting.
docs/src/content/docs/learn/browser.mdx (3)
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/astro.config.mjs:0-0
Timestamp: 2024-12-02T22:00:10.339Z
Learning: In the Wails documentation, all content under 'docs/src/content/docs' is accessible at the root path '/', so links in the sidebar configuration should not include the '/docs' prefix.
Learnt from: leaanthony
PR: wailsapp/wails#4031
File: v3/pkg/application/menu.go:199-202
Timestamp: 2025-01-24T22:41:18.566Z
Learning: In the Wails menu system (v3/pkg/application/menu.go), shared state between menus is intentionally designed and desirable. Methods like `Append()` and `Prepend()` should maintain shared references to menu items rather than creating deep copies.
Learnt from: nixpare
PR: wailsapp/wails#3763
File: v3/examples/keybindings/main.go:16-17
Timestamp: 2024-09-20T23:34:29.841Z
Learning: In the codebase, `application.Options.KeyBindings` uses the `application.Window` type, whereas `application.WebviewWindowOptions.KeyBindings` uses `*application.WebviewWindow`. This is intentional and acceptable.
docs/src/content/docs/contributing/codebase-layout.mdx (3)
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/astro.config.mjs:0-0
Timestamp: 2024-12-02T22:00:10.339Z
Learning: In the Wails documentation, all content under 'docs/src/content/docs' is accessible at the root path '/', so links in the sidebar configuration should not include the '/docs' prefix.
Learnt from: fbbdev
PR: wailsapp/wails#4001
File: v3/internal/generator/testdata/output/lang=TS/UseInterfaces=true/UseNames=false/github.com/wailsapp/wails/v3/internal/generator/testcases/function_single_internal/greetservice.ts:0-0
Timestamp: 2025-01-15T22:33:30.639Z
Learning: In the Wails framework's TypeScript bindings, the import path "/wails/runtime.js" is intentionally absolute and should not be changed to a relative path.
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/src/content/docs/development/introduction.mdx:43-44
Timestamp: 2024-12-02T22:08:55.625Z
Learning: When using the `<FileTree>` component in `docs/src/content/docs/development/introduction.mdx`, repeating words like `examples Examples` and `internal Internal` is intentional to achieve the desired formatting.
docs/src/content/docs/guides/cli.mdx (1)
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/astro.config.mjs:0-0
Timestamp: 2024-12-02T22:00:10.339Z
Learning: In the Wails documentation, all content under 'docs/src/content/docs' is accessible at the root path '/', so links in the sidebar configuration should not include the '/docs' prefix.
docs/src/content/docs/guides/menus.mdx (2)
Learnt from: leaanthony
PR: wailsapp/wails#4031
File: v3/pkg/application/menu.go:199-202
Timestamp: 2025-01-24T22:41:18.566Z
Learning: In the Wails menu system (v3/pkg/application/menu.go), shared state between menus is intentionally designed and desirable. Methods like `Append()` and `Prepend()` should maintain shared references to menu items rather than creating deep copies.
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/astro.config.mjs:0-0
Timestamp: 2024-12-02T22:00:10.339Z
Learning: In the Wails documentation, all content under 'docs/src/content/docs' is accessible at the root path '/', so links in the sidebar configuration should not include the '/docs' prefix.
docs/src/content/docs/blog/2021-09-27-v2-beta1-release-notes.md (2)
Learnt from: popaprozac
PR: wailsapp/wails#4256
File: v2/internal/frontend/desktop/linux/notifications.go:27-28
Timestamp: 2025-04-29T23:54:07.488Z
Learning: In Wails v2, unlike v3-alpha which has a `ServiceShutdown` method for services, there is no standardized teardown pattern for frontend implementations. When implementing features that require cleanup (like goroutines or resources), add explicit cleanup methods (e.g., `CleanupNotifications()`) that handle resource release, context cancellation, and connection closure.
Learnt from: popaprozac
PR: wailsapp/wails#4256
File: v2/internal/frontend/desktop/linux/notifications.go:27-28
Timestamp: 2025-04-29T23:54:07.488Z
Learning: In Wails v2, unlike v3-alpha which has a `ServiceShutdown` method for services, there is no standardized teardown pattern for frontend implementations. When implementing features that require cleanup (like goroutines or resources), add explicit cleanup methods (e.g., `CleanupNotifications()`) that handle resource release, context cancellation, and connection closure.
docs/src/content/docs/index.mdx (4)
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/astro.config.mjs:0-0
Timestamp: 2024-12-02T22:00:10.339Z
Learning: In the Wails documentation, all content under 'docs/src/content/docs' is accessible at the root path '/', so links in the sidebar configuration should not include the '/docs' prefix.
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/src/content/docs/index.mdx:13-18
Timestamp: 2024-12-02T22:14:41.158Z
Learning: The documentation page `/learn/services` exists in `docs/src/content/docs/learn/services.md`.
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/src/content/docs/api/events_mac.md:9-9
Timestamp: 2024-12-02T22:13:32.421Z
Learning: In `docs/src/content/docs/api/events_mac.md`, the heading levels are intentionally adjusted to improve sizing on the browser, to avoid manually customizing the styling of the doc generator.
Learnt from: Taiterbase
PR: wailsapp/wails#4241
File: v2/examples/privatewindow/frontend/src/main.js:7-15
Timestamp: 2025-04-26T02:15:24.843Z
Learning: The `wails init` command generates template code that includes an unmatched closing div tag in the HTML structure.
docs/src/content/docs/contributing/extending-wails.mdx (4)
Learnt from: popaprozac
PR: wailsapp/wails#4256
File: v2/internal/frontend/desktop/linux/notifications.go:27-28
Timestamp: 2025-04-29T23:54:07.488Z
Learning: In Wails v2, unlike v3-alpha which has a `ServiceShutdown` method for services, there is no standardized teardown pattern for frontend implementations. When implementing features that require cleanup (like goroutines or resources), add explicit cleanup methods (e.g., `CleanupNotifications()`) that handle resource release, context cancellation, and connection closure.
Learnt from: popaprozac
PR: wailsapp/wails#4256
File: v2/internal/frontend/desktop/linux/notifications.go:27-28
Timestamp: 2025-04-29T23:54:07.488Z
Learning: In Wails v2, unlike v3-alpha which has a `ServiceShutdown` method for services, there is no standardized teardown pattern for frontend implementations. When implementing features that require cleanup (like goroutines or resources), add explicit cleanup methods (e.g., `CleanupNotifications()`) that handle resource release, context cancellation, and connection closure.
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/src/content/docs/index.mdx:13-18
Timestamp: 2024-12-02T22:14:41.158Z
Learning: The documentation page `/learn/services` exists in `docs/src/content/docs/learn/services.md`.
Learnt from: fbbdev
PR: wailsapp/wails#4045
File: v3/internal/generator/testcases/directives/otherpackage/js/test_t.ts:1-3
Timestamp: 2025-02-05T11:53:45.812Z
Learning: The `//wails:inject` directive in Wails enables custom code injection, allowing methods like `CustomMethod` to be injected and used in JavaScript/TypeScript files without being explicitly defined in a service.js file.
docs/src/content/docs/learn/application-menu.mdx (2)
Learnt from: leaanthony
PR: wailsapp/wails#4031
File: v3/pkg/application/menu.go:199-202
Timestamp: 2025-01-24T22:41:18.566Z
Learning: In the Wails menu system (v3/pkg/application/menu.go), shared state between menus is intentionally designed and desirable. Methods like `Append()` and `Prepend()` should maintain shared references to menu items rather than creating deep copies.
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/astro.config.mjs:0-0
Timestamp: 2024-12-02T22:00:10.339Z
Learning: In the Wails documentation, all content under 'docs/src/content/docs' is accessible at the root path '/', so links in the sidebar configuration should not include the '/docs' prefix.
docs/src/content/docs/guides/custom-templates.mdx (2)
Learnt from: fbbdev
PR: wailsapp/wails#4045
File: v3/internal/generator/render/templates/index.tmpl:37-37
Timestamp: 2025-02-05T11:53:01.219Z
Learning: The template `v3/internal/generator/render/templates/index.tmpl` relies on models being sorted with exported ones first, which enables breaking early when encountering non-exported models. This contract needs to be verified and documented in the codebase.
Learnt from: Taiterbase
PR: wailsapp/wails#4241
File: v2/examples/privatewindow/frontend/src/main.js:7-15
Timestamp: 2025-04-26T02:15:24.843Z
Learning: The `wails init` command generates template code that includes an unmatched closing div tag in the HTML structure.
docs/src/content/docs/contributing/runtime-internals.mdx (1)
Learnt from: fbbdev
PR: wailsapp/wails#4001
File: v3/internal/generator/testdata/output/lang=TS/UseInterfaces=true/UseNames=false/github.com/wailsapp/wails/v3/internal/generator/testcases/function_single_internal/greetservice.ts:0-0
Timestamp: 2025-01-15T22:33:30.639Z
Learning: In the Wails framework's TypeScript bindings, the import path "/wails/runtime.js" is intentionally absolute and should not be changed to a relative path.
.all-contributorsrc (1)
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/src/assets/contributors.astro:0-0
Timestamp: 2024-12-03T07:49:16.593Z
Learning: The table in 'docs/src/assets/contributors.astro' is autogenerated by another bot, so manual changes to it would be overwritten and are unnecessary.
docs/package.json (1)
Learnt from: fbbdev
PR: wailsapp/wails#4001
File: v3/internal/generator/testdata/output/lang=TS/UseInterfaces=true/UseNames=false/github.com/wailsapp/wails/v3/internal/generator/testcases/function_single_internal/greetservice.ts:0-0
Timestamp: 2025-01-15T22:33:30.639Z
Learning: In the Wails framework's TypeScript bindings, the import path "/wails/runtime.js" is intentionally absolute and should not be changed to a relative path.
docs/src/content/docs/contributing/architecture.mdx (2)
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/astro.config.mjs:0-0
Timestamp: 2024-12-02T22:00:10.339Z
Learning: In the Wails documentation, all content under 'docs/src/content/docs' is accessible at the root path '/', so links in the sidebar configuration should not include the '/docs' prefix.
Learnt from: fbbdev
PR: wailsapp/wails#4001
File: v3/internal/generator/testdata/output/lang=TS/UseInterfaces=true/UseNames=false/github.com/wailsapp/wails/v3/internal/generator/testcases/function_single_internal/greetservice.ts:0-0
Timestamp: 2025-01-15T22:33:30.639Z
Learning: In the Wails framework's TypeScript bindings, the import path "/wails/runtime.js" is intentionally absolute and should not be changed to a relative path.
docs/src/content/docs/blog/2022-02-22-v2-beta3-release-notes.md (2)
Learnt from: popaprozac
PR: wailsapp/wails#4256
File: v2/internal/frontend/desktop/linux/notifications.go:27-28
Timestamp: 2025-04-29T23:54:07.488Z
Learning: In Wails v2, unlike v3-alpha which has a `ServiceShutdown` method for services, there is no standardized teardown pattern for frontend implementations. When implementing features that require cleanup (like goroutines or resources), add explicit cleanup methods (e.g., `CleanupNotifications()`) that handle resource release, context cancellation, and connection closure.
Learnt from: popaprozac
PR: wailsapp/wails#4256
File: v2/internal/frontend/desktop/linux/notifications.go:27-28
Timestamp: 2025-04-29T23:54:07.488Z
Learning: In Wails v2, unlike v3-alpha which has a `ServiceShutdown` method for services, there is no standardized teardown pattern for frontend implementations. When implementing features that require cleanup (like goroutines or resources), add explicit cleanup methods (e.g., `CleanupNotifications()`) that handle resource release, context cancellation, and connection closure.
docs/src/content/docs/contributing/testing-ci.mdx (2)
Learnt from: fbbdev
PR: wailsapp/wails#4001
File: v3/internal/generator/testcases/aliases/main.go:65-68
Timestamp: 2025-01-15T22:40:58.594Z
Learning: Files in `v3/internal/generator/testcases` are test dummies used for testing purposes only. They are never compiled into the application and should not be subject to the same level of code review as production code.
Learnt from: leaanthony
PR: wailsapp/wails#4013
File: v3/examples/contextmenus/main.go:38-44
Timestamp: 2025-01-17T05:51:02.521Z
Learning: Error handling is not required in example code within the Wails repository as examples should prioritize clarity and simplicity over production-level concerns.
docs/src/content/docs/blog/2023-01-17-v3-roadmap.md (3)
Learnt from: fbbdev
PR: wailsapp/wails#4001
File: v3/internal/generator/testdata/output/lang=TS/UseInterfaces=true/UseNames=false/github.com/wailsapp/wails/v3/internal/generator/testcases/function_single_internal/greetservice.ts:0-0
Timestamp: 2025-01-15T22:33:30.639Z
Learning: In the Wails framework's TypeScript bindings, the import path "/wails/runtime.js" is intentionally absolute and should not be changed to a relative path.
Learnt from: popaprozac
PR: wailsapp/wails#4256
File: v2/internal/frontend/desktop/linux/notifications.go:27-28
Timestamp: 2025-04-29T23:54:07.488Z
Learning: In Wails v2, unlike v3-alpha which has a `ServiceShutdown` method for services, there is no standardized teardown pattern for frontend implementations. When implementing features that require cleanup (like goroutines or resources), add explicit cleanup methods (e.g., `CleanupNotifications()`) that handle resource release, context cancellation, and connection closure.
Learnt from: popaprozac
PR: wailsapp/wails#4256
File: v2/internal/frontend/desktop/linux/notifications.go:27-28
Timestamp: 2025-04-29T23:54:07.488Z
Learning: In Wails v2, unlike v3-alpha which has a `ServiceShutdown` method for services, there is no standardized teardown pattern for frontend implementations. When implementing features that require cleanup (like goroutines or resources), add explicit cleanup methods (e.g., `CleanupNotifications()`) that handle resource release, context cancellation, and connection closure.
docs/src/content/docs/contributing/asset-server.mdx (2)
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/astro.config.mjs:0-0
Timestamp: 2024-12-02T22:00:10.339Z
Learning: In the Wails documentation, all content under 'docs/src/content/docs' is accessible at the root path '/', so links in the sidebar configuration should not include the '/docs' prefix.
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/src/content/docs/index.mdx:13-18
Timestamp: 2024-12-02T22:14:41.158Z
Learning: The documentation page `/learn/services` exists in `docs/src/content/docs/learn/services.md`.
docs/src/content/docs/contributing/binding-system.mdx (1)
Learnt from: fbbdev
PR: wailsapp/wails#4001
File: v3/internal/generator/testdata/output/lang=TS/UseInterfaces=true/UseNames=false/github.com/wailsapp/wails/v3/internal/generator/testcases/function_single_internal/greetservice.ts:0-0
Timestamp: 2025-01-15T22:33:30.639Z
Learning: In the Wails framework's TypeScript bindings, the import path "/wails/runtime.js" is intentionally absolute and should not be changed to a relative path.
docs/src/content/docs/learn/bindings.mdx (9)
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/src/content/docs/index.mdx:13-18
Timestamp: 2024-12-02T22:14:41.158Z
Learning: The documentation page `/learn/services` exists in `docs/src/content/docs/learn/services.md`.
Learnt from: fbbdev
PR: wailsapp/wails#4001
File: v3/internal/generator/testdata/output/lang=TS/UseInterfaces=true/UseNames=false/github.com/wailsapp/wails/v3/internal/generator/testcases/function_single_internal/greetservice.ts:0-0
Timestamp: 2025-01-15T22:33:30.639Z
Learning: In the Wails framework's TypeScript bindings, the import path "/wails/runtime.js" is intentionally absolute and should not be changed to a relative path.
Learnt from: fbbdev
PR: wailsapp/wails#4045
File: v3/internal/generator/testcases/directives/otherpackage/js/test_t.ts:1-3
Timestamp: 2025-02-05T11:53:45.812Z
Learning: The `//wails:inject` directive in Wails enables custom code injection, allowing methods like `CustomMethod` to be injected and used in JavaScript/TypeScript files without being explicitly defined in a service.js file.
Learnt from: popaprozac
PR: wailsapp/wails#4256
File: v2/internal/frontend/desktop/linux/notifications.go:27-28
Timestamp: 2025-04-29T23:54:07.488Z
Learning: In Wails v2, unlike v3-alpha which has a `ServiceShutdown` method for services, there is no standardized teardown pattern for frontend implementations. When implementing features that require cleanup (like goroutines or resources), add explicit cleanup methods (e.g., `CleanupNotifications()`) that handle resource release, context cancellation, and connection closure.
Learnt from: popaprozac
PR: wailsapp/wails#4256
File: v2/internal/frontend/desktop/linux/notifications.go:27-28
Timestamp: 2025-04-29T23:54:07.488Z
Learning: In Wails v2, unlike v3-alpha which has a `ServiceShutdown` method for services, there is no standardized teardown pattern for frontend implementations. When implementing features that require cleanup (like goroutines or resources), add explicit cleanup methods (e.g., `CleanupNotifications()`) that handle resource release, context cancellation, and connection closure.
Learnt from: fbbdev
PR: wailsapp/wails#4024
File: v3/pkg/application/services.go:38-51
Timestamp: 2025-01-18T21:19:47.778Z
Learning: In the Wails v3 codebase, panic is used to catch invalid invocations that should never occur in production (programming errors), while error returns are reserved for recoverable error conditions (runtime errors). For example, the `NewService` function in `v3/pkg/application/services.go` uses panic to handle the case where more than one `ServiceOptions` instance is provided, as this is considered an unrecoverable programming error.
Learnt from: fbbdev
PR: wailsapp/wails#4001
File: v3/internal/generator/analyse_test.go:105-107
Timestamp: 2025-01-15T22:42:09.774Z
Learning: In the FindServices function of v3/internal/generator/analyse.go, services should never be nil when err is nil. This is a design contract and any violation should result in a panic rather than being handled silently.
Learnt from: fbbdev
PR: wailsapp/wails#4001
File: v3/internal/generator/testcases/no_bindings_here/person.go:9-9
Timestamp: 2025-01-15T22:30:08.796Z
Learning: When dealing with fixed-length arrays in Go structs, encoding/json automatically handles bounds checking during unmarshaling, returning an error if the JSON array length exceeds the Go array length. No additional runtime validation is needed.
Learnt from: leaanthony
PR: wailsapp/wails#4013
File: v3/examples/contextmenus/main.go:38-44
Timestamp: 2025-01-17T05:51:02.521Z
Learning: Error handling is not required in example code within the Wails repository as examples should prioritize clarity and simplicity over production-level concerns.
docs/src/assets/contributors.html (1)
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/src/assets/contributors.astro:0-0
Timestamp: 2024-12-03T07:49:16.593Z
Learning: The table in 'docs/src/assets/contributors.astro' is autogenerated by another bot, so manual changes to it would be overwritten and are unnecessary.
docs/src/content/docs/contributing/index.mdx (1)
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/astro.config.mjs:0-0
Timestamp: 2024-12-02T22:00:10.339Z
Learning: In the Wails documentation, all content under 'docs/src/content/docs' is accessible at the root path '/', so links in the sidebar configuration should not include the '/docs' prefix.
docs/src/content/docs/guides/events-reference.mdx (5)
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/src/content/docs/api/events_mac.md:9-9
Timestamp: 2024-12-02T22:13:32.421Z
Learning: In `docs/src/content/docs/api/events_mac.md`, the heading levels are intentionally adjusted to improve sizing on the browser, to avoid manually customizing the styling of the doc generator.
Learnt from: popaprozac
PR: wailsapp/wails#4256
File: v2/internal/frontend/desktop/linux/notifications.go:27-28
Timestamp: 2025-04-29T23:54:07.488Z
Learning: In Wails v2, unlike v3-alpha which has a `ServiceShutdown` method for services, there is no standardized teardown pattern for frontend implementations. When implementing features that require cleanup (like goroutines or resources), add explicit cleanup methods (e.g., `CleanupNotifications()`) that handle resource release, context cancellation, and connection closure.
Learnt from: popaprozac
PR: wailsapp/wails#4256
File: v2/internal/frontend/desktop/linux/notifications.go:27-28
Timestamp: 2025-04-29T23:54:07.488Z
Learning: In Wails v2, unlike v3-alpha which has a `ServiceShutdown` method for services, there is no standardized teardown pattern for frontend implementations. When implementing features that require cleanup (like goroutines or resources), add explicit cleanup methods (e.g., `CleanupNotifications()`) that handle resource release, context cancellation, and connection closure.
Learnt from: leaanthony
PR: wailsapp/wails#4234
File: v3/examples/badge-custom/main.go:87-93
Timestamp: 2025-04-26T21:03:42.481Z
Learning: In Wails applications, it's not necessary to implement explicit graceful shutdown for simple goroutines (like time emitters) as Go automatically terminates all goroutines as part of the application shutdown process.
Learnt from: leaanthony
PR: wailsapp/wails#4013
File: v3/examples/contextmenus/main.go:38-44
Timestamp: 2025-01-17T05:51:02.521Z
Learning: Error handling is not required in example code within the Wails repository as examples should prioritize clarity and simplicity over production-level concerns.
docs/src/content/docs/guides/gin-routing.mdx (2)
Learnt from: leaanthony
PR: wailsapp/wails#4128
File: v3/examples/gin-service/services/gin_service.go:67-85
Timestamp: 2025-04-18T05:57:34.711Z
Learning: In Wails services (like GinService), initializing the app field in ServiceStartup rather than in the constructor is an acceptable pattern, as ServiceStartup is guaranteed to be called before any HTTP requests are handled.
Learnt from: leaanthony
PR: wailsapp/wails#4234
File: v3/examples/badge-custom/main.go:87-93
Timestamp: 2025-04-26T21:03:42.481Z
Learning: In Wails applications, it's not necessary to implement explicit graceful shutdown for simple goroutines (like time emitters) as Go automatically terminates all goroutines as part of the application shutdown process.
docs/src/content/docs/guides/gin-services.mdx (4)
Learnt from: stavros-k
PR: wailsapp/wails#3917
File: docs/src/content/docs/index.mdx:13-18
Timestamp: 2024-12-02T22:14:41.158Z
Learning: The documentation page `/learn/services` exists in `docs/src/content/docs/learn/services.md`.
Learnt from: leaanthony
PR: wailsapp/wails#4128
File: v3/examples/gin-service/services/gin_service.go:67-85
Timestamp: 2025-04-18T05:57:34.711Z
Learning: In Wails services (like GinService), initializing the app field in ServiceStartup rather than in the constructor is an acceptable pattern, as ServiceStartup is guaranteed to be called before any HTTP requests are handled.
Learnt from: popaprozac
PR: wailsapp/wails#4256
File: v2/internal/frontend/desktop/linux/notifications.go:27-28
Timestamp: 2025-04-29T23:54:07.488Z
Learning: In Wails v2, unlike v3-alpha which has a `ServiceShutdown` method for services, there is no standardized teardown pattern for frontend implementations. When implementing features that require cleanup (like goroutines or resources), add explicit cleanup methods (e.g., `CleanupNotifications()`) that handle resource release, context cancellation, and connection closure.
Learnt from: popaprozac
PR: wailsapp/wails#4256
File: v2/internal/frontend/desktop/linux/notifications.go:27-28
Timestamp: 2025-04-29T23:54:07.488Z
Learning: In Wails v2, unlike v3-alpha which has a `ServiceShutdown` method for services, there is no standardized teardown pattern for frontend implementations. When implementing features that require cleanup (like goroutines or resources), add explicit cleanup methods (e.g., `CleanupNotifications()`) that handle resource release, context cancellation, and connection closure.
docs/src/content/docs/changelog.mdx (5)
Learnt from: popaprozac
PR: wailsapp/wails#4256
File: v2/internal/frontend/desktop/linux/notifications.go:27-28
Timestamp: 2025-04-29T23:54:07.488Z
Learning: In Wails v2, unlike v3-alpha which has a `ServiceShutdown` method for services, there is no standardized teardown pattern for frontend implementations. When implementing features that require cleanup (like goroutines or resources), add explicit cleanup methods (e.g., `CleanupNotifications()`) that handle resource release, context cancellation, and connection closure.
Learnt from: popaprozac
PR: wailsapp/wails#4256
File: v2/internal/frontend/desktop/linux/notifications.go:27-28
Timestamp: 2025-04-29T23:54:07.488Z
Learning: In Wails v2, unlike v3-alpha which has a `ServiceShutdown` method for services, there is no standardized teardown pattern for frontend implementations. When implementing features that require cleanup (like goroutines or resources), add explicit cleanup methods (e.g., `CleanupNotifications()`) that handle resource release, context cancellation, and connection closure.
Learnt from: fbbdev
PR: wailsapp/wails#4001
File: v3/internal/generator/testdata/output/lang=TS/UseInterfaces=true/UseNames=false/github.com/wailsapp/wails/v3/internal/generator/testcases/function_single_internal/greetservice.ts:0-0
Timestamp: 2025-01-15T22:33:30.639Z
Learning: In the Wails framework's TypeScript bindings, the import path "/wails/runtime.js" is intentionally absolute and should not be changed to a relative path.
Learnt from: nixpare
PR: wailsapp/wails#3763
File: v3/examples/keybindings/main.go:16-17
Timestamp: 2024-09-20T23:34:29.841Z
Learning: In the codebase, `application.Options.KeyBindings` uses the `application.Window` type, whereas `application.WebviewWindowOptions.KeyBindings` uses `*application.WebviewWindow`. This is intentional and acceptable.
Learnt from: nixpare
PR: wailsapp/wails#3763
File: v3/pkg/application/application_options.go:93-93
Timestamp: 2024-10-08T22:11:37.054Z
Learning: The `KeyBindings` property of `application.Option` uses the `application.Window` type, while `application.WebviewWindowOptions` still accepts `*application.WebviewWindow`, and this is intentional.
🪛 LanguageTool
docs/src/content/docs/community/showcase/wombat.md

[misspelling] ~7-~7: This word is normally spelled with a hyphen.
Context: ...https://github.com/rogchap/wombat) is a cross platform gRPC client.

(EN_COMPOUNDS_CROSS_PLATFORM)

docs/src/content/docs/community/showcase/optimus.md

[style] ~8-~8: This phrase is redundant (‘G’ stands for ‘graphic’). Use simply “PNG”.
Context: ...and compression between WebP, JPEG, and PNG image formats.

(ACRONYM_TAUTOLOGY)

docs/src/content/docs/community/showcase/ytd.md

[uncategorized] ~8-~8: This verb may not be in the correct form. Consider using a different form for this context.
Context: ...youtube, creating offline playlists and share them with your friends, your friends wi...

(AI_EN_LECTOR_REPLACEMENT_VERB_FORM)


[grammar] ~9-~9: The word “playback” is a noun. The verb is spelled with a space.
Context: ...r friends, your friends will be able to playback your playlists or download them for off...

(NOUN_VERB_CONFUSION)


[misspelling] ~10-~10: Use “a” instead of ‘an’ if the following word doesn’t start with a vowel sound, e.g. ‘a sentence’, ‘a university’.
Context: ...ownload them for offline listening, has an built-in player.

(EN_A_VS_AN)

docs/src/content/docs/community/showcase/clave.md

[uncategorized] ~9-~9: You might be missing the article “a” here.
Context: ...ures - 🎨 Simple, intuitive design for hassle-free experience - ✅ Add accounts easily...

(AI_EN_LECTOR_MISSING_DETERMINER_A)


[uncategorized] ~13-~13: You might be missing the article “the” here.
Context: ...indows, and Linux - ⚡ Quick access from system tray for convenience - 📂 Easily backup...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

docs/src/content/docs/community/showcase/october.md

[style] ~7-~7: As an alternative to the over-used intensifier ‘really’, consider replacing this phrase.
Context: ...a small Wails application that makes it really easy to extract highlights from [Kobo eReade...

(EN_WEAK_ADJECTIVE)

docs/src/content/docs/community/showcase/riftshare.md

[uncategorized] ~12-~12: The preposition “on” seems more likely in this position than the preposition “in”.
Context: ...ure file sharing between computers both in the local network and through the int...

(AI_EN_LECTOR_REPLACEMENT_PREPOSITION_IN_ON)

docs/src/content/docs/community/showcase/warmine.md

[uncategorized] ~15-~15: You might be missing the article “the” here.
Context: ...the launch arguments from the backend. Frontend is written in Svelte, whole launcher fi...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[uncategorized] ~16-~16: You might be missing the article “the” here.
Context: ...ackend. Frontend is written in Svelte, whole launcher fits in 9MB and supports Windo...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

docs/src/content/docs/community/showcase/scriptbar.md

[style] ~14-~14: Nowadays, it’s more common to write this as one word.
Context: ...lso keep the links to your most visited web sites.

(RECOMMENDED_COMPOUNDS)

docs/src/content/docs/community/showcase/modalfilemanager.md

[grammar] ~10-~10: The verb form ‘be’ does not seem to be suitable in this context.
Context: ... Svelte based frontend code (but it has be greatly modified since the departure fr...

(HAVE_VB)

docs/src/content/docs/credits.mdx

[grammar] ~12-~12: The operating system from Apple is written “macOS”.
Context: ....com/tmclane) - Cross-compilation work, MacOS testing - [Atterpac](https://github.c...

(MAC_OS)


[uncategorized] ~53-~53: Possible missing comma found.
Context: ...er) - For advice, support and bants. - Byron Chris - Fo...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~53-~53: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...](https://github.com/bh90210) - For his long term contributions to this project. - [Dus...

(EN_COMPOUND_ADJECTIVE_INTERNAL)

docs/src/content/docs/community/showcase/cfntracker.md

[misspelling] ~32-~32: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...US/docs/Web/API/Server-sent_events) - a http stream to send tracking updates to...

(EN_A_VS_AN)

docs/src/content/docs/community/showcase/snippetexpander.md

[uncategorized] ~24-~24: This expression is usually spelled with a hyphen.
Context: ...y selecting and pasting a snippet. The Wails based GUI, go-lang CLI and vala-lang auto exp...

(BASED_HYPHEN)

docs/src/content/docs/community/showcase/emailit.md

[uncategorized] ~7-~7: This expression is usually spelled with a hyphen.
Context: ...mailIt/) is a Wails 2 program that is a markdown based email sender only with nine notepads, s...

(BASED_HYPHEN)


[uncategorized] ~12-~12: “form” (shape/structure, to make) seems less likely than “from” (“originating from”).
Context: ... supports scripts and themes downloaded form GitHub. Documentation is not complete, ...

(AI_HYDRA_LEO_CP_FORM_FROM)


[uncategorized] ~12-~12: A determiner appears to be missing. Consider inserting it.
Context: ...ipts and themes downloaded form GitHub. Documentation is not complete, but the programs works...

(AI_EN_LECTOR_MISSING_DETERMINER)


[style] ~12-~12: Consider using “incomplete” to avoid wordiness.
Context: ...ownloaded form GitHub. Documentation is not complete, but the programs works. It’s built usi...

(NOT_ABLE_PREMIUM)


[uncategorized] ~13-~13: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...ation is not complete, but the programs works. It’s built using Wails2 and Svelte, an...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)

docs/README.md

[style] ~14-~14: Using many exclamation marks might seem excessive (in this case: 3 exclamation marks for a text that’s 1825 characters long)
Context: ... astronaut?** Delete this file. Have fun! ## 🚀 Project Structure Inside of you...

(EN_EXCESSIVE_EXCLAMATION)


[style] ~17-~17: This phrase is redundant. Consider using “Inside”.
Context: ...le. Have fun! ## 🚀 Project Structure Inside of your Astro + Starlight project, you'll ...

(OUTSIDE_OF)

docs/src/content/docs/guides/file-associations.mdx

[uncategorized] ~109-~109: Possible missing comma found.
Context: ...or more information. ::: - For macOS add copy statement like `cp build/darwi...

(AI_HYDRA_LEO_MISSING_COMMA)


[style] ~151-~151: In contexts where ‘if’ is followed by ‘or’, using ‘whether’ may be more appropriate (and formal).
Context: ...he application options to determine if the first argument is an associated fil...

(IF_WHETHER)

docs/src/content/docs/guides/msix-packaging.mdx

[uncategorized] ~121-~121: Possible missing preposition found.
Context: ... | Package cannot be installed because publisher mismatch | The certificate subject (CN...

(AI_EN_LECTOR_MISSING_PREPOSITION)

docs/src/content/docs/getting-started/your-first-app.mdx

[style] ~151-~151: Consider shortening or rephrasing this to strengthen your wording.
Context: ...pment mode. This mode allows you to make changes to your frontend code and see the changes ...

(MAKE_CHANGES)


[style] ~252-~252: Consider removing “of” to be more concise
Context: ... :::tip[Pro Tip] You can automate all of the initialisation steps by using the `-git...

(ALL_OF_THE)


[style] ~265-~265: Using many exclamation marks might seem excessive (in this case: 6 exclamation marks for a text that’s 4136 characters long)
Context: ...t` ::: ## Congratulations! You've just created, developed and pac...

(EN_EXCESSIVE_EXCLAMATION)


[uncategorized] ~272-~272: A comma might be missing here.
Context: ...recommend reading through our Tutorials next which will be a practical guide through...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)

docs/src/content/docs/contributing/build-packaging.mdx

[uncategorized] ~28-~28: Possible missing comma found.
Context: ...vel tasks are delegated to Taskfile targets so the same logic runs in CI or locally...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~48-~48: A comma might be missing here.
Context: ...g works out of the box. If the task fails the pipeline aborts early, returning th...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[uncategorized] ~76-~76: Possible missing comma found.
Context: ...collects version, git commit, and build time then injects them using `go build -ldfl...

(AI_HYDRA_LEO_MISSING_COMMA)


[typographical] ~151-~151: It appears that a comma is missing.
Context: ...ild Artefact Layout After a successful build the CLI prints: ``` build/bin/ ├── mya...

(DURING_THAT_TIME_COMMA)


[uncategorized] ~162-~162: You might be missing the article “the” here.
Context: ...md64.deb ``` The exact files depend on -platform and `-package` flags. --- #...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[uncategorized] ~210-~210: A comma might be missing here.
Context: ...ode** to installer. Armed with this knowledge you can tweak the pipeline, add new pac...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)

docs/src/content/docs/learn/badges.mdx

[uncategorized] ~159-~159: Possible missing preposition found.
Context: ...y badge updates can distract users - Reserve badges for important notifications 2. ...

(AI_HYDRA_LEO_MISSING_TO)


[duplication] ~176-~176: Possible typo: you repeated a word.
Context: ...e service with default options | | NewWithOptions(options Options) | Creates a new badge servic...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~182-~182: Possible typo: you repeated a word.
Context: ...pecified label | | SetCustomBadge(label string, options Options) error | Sets a badge with the specifi...

(ENGLISH_WORD_REPEAT_RULE)

docs/src/content/docs/guides/single-instance.mdx

[uncategorized] ~38-~38: Loose punctuation mark.
Context: ... has the following fields: - UniqueID: A unique identifier for your applicatio...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~39-~39: Loose punctuation mark.
Context: ...com.company.appname"). - EncryptionKey: Optional 32-byte array for encrypting d...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~40-~40: Loose punctuation mark.
Context: ...be encrypted. - OnSecondInstanceLaunch: A callback function that is called when...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~49-~49: Possible missing article found.
Context: ...should treat any data passed to it from second instance callback as untrusted. You sho...

(AI_HYDRA_LEO_MISSING_A)

docs/src/content/docs/guides/panic-handling.mdx

[uncategorized] ~66-~66: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ... panic occurred. If you want to see the full stack trace, you can use the FullStackTrace...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


[uncategorized] ~72-~72: Possible missing comma found.
Context: ...nic handler, Wails will use its default handler which outputs error information in a fo...

(AI_HYDRA_LEO_MISSING_COMMA)

docs/src/content/docs/feedback.mdx

[typographical] ~70-~70: It appears that a comma is missing.
Context: ...e are looking for feedback on - The API - Is it easy to use? - Does it do what you...

(COMMA_BEFORE_QUESTION_WITH_MD)


[style] ~75-~75: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...re anything that should be removed? - Is it consistent between Go and JS? - The ...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[typographical] ~76-~76: It appears that a comma is missing.
Context: ...nt between Go and JS? - The build system - Is it easy to use? - Can we improve it? ...

(COMMA_BEFORE_QUESTION_WITH_MD)


[typographical] ~79-~79: It appears that a comma is missing.
Context: ...e? - Can we improve it? - The examples - Are they clear? - Do they cover the basic...

(COMMA_BEFORE_QUESTION_WITH_MD)

docs/src/content/docs/guides/customising-windows.mdx

[uncategorized] ~30-~30: Loose punctuation mark.
Context: ...ButtonState = 2 ) ``` - ButtonEnabled: The button is enabled and visible. - `B...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~31-~31: Loose punctuation mark.
Context: ... enabled and visible. - ButtonDisabled: The button is visible but disabled (gra...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~32-~32: Loose punctuation mark.
Context: ... disabled (grayed out). - ButtonHidden: The button is hidden from the titlebar....

(UNLIKELY_OPENING_PUNCTUATION)

docs/src/content/docs/getting-started/installation.mdx

[uncategorized] ~52-~52: When ‘platform-specific’ is used as a modifier, it is usually spelled with a hyphen.
Context: ...ndencies You will also need to install platform specific dependencies: <Tabs syncKey="platform"...

(SPECIFIC_HYPHEN)

docs/src/content/docs/contributing/template-system.mdx

[uncategorized] ~179-~179: You might be missing the article “the” here.
Context: ...## 5. Template Authoring Tips * Keep frontend generic – avoid referencing Wails-spe...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[uncategorized] ~184-~184: You might be missing the article “the” here.
Context: ...anges** – create a new template ID if overhaul is big. --- ## 6. Troubleshooting | ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

docs/src/content/docs/blog/2022-09-22-v2-release-notes.md

[uncategorized] ~50-~50: Possible missing comma found.
Context: ...emplates. - Vite integration providing a hot-reload development en...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~102-~102: This verb may not be in the correct form. Consider using a different form for this context.
Context: ...shaping the direction of v2, as well as give me an understanding of some design flaw...

(AI_EN_LECTOR_REPLACEMENT_VERB_FORM)


[style] ~103-~103: Consider using a different adjective to strengthen your wording.
Context: ...design flaws in the early releases. I'm happy to announce that as of today, we will s...

(HAPPY_EXCITED)


[formatting] ~105-~105: Insert a comma after ‘Cheers’.
Context: ...e flagship application for the project. Cheers Mat! # Lessons Learnt There are a num...

(SENT_START_THANKS_COMMA)


[uncategorized] ~125-~125: A determiner appears to be missing. Consider inserting it.
Context: ...iately help everyone who had a problem. Issues were "personal" and I wanted them resol...

(AI_EN_LECTOR_MISSING_DETERMINER)


[uncategorized] ~129-~129: A comma might be missing here.
Context: ...e good to get some tooling to help with this so if you have any suggestions, please ...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[style] ~134-~134: Consider using “who” when you are referring to people instead of objects.
Context: ... ## Learning to say No The more people that engage with an Open Source project, the...

(THAT_WHO)


[uncategorized] ~134-~134: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...No The more people that engage with an Open Source project, the more requests there will b...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


[style] ~137-~137: This phrase is often redundant. Consider writing “I” unless you want to emphasize that you and not someone else will do something.
Context: ...ng maintenance cost from that point on. I myself am the most guilty of this, often wanti...

(I_MYSELF)


[style] ~174-~174: Consider using a more formal and expressive alternative to ‘amazing’.
Context: ...le to achieve with the V2 release. It's amazing to see what people have already been ab...

(AWESOME)


[style] ~183-~183: ‘each and every’ might be wordy. Consider a shorter alternative.
Context: ...s not only been my time and the time of each and every contributor, but also the cost of absen...

(EN_WORDINESS_PREMIUM_EACH_AND_EVERY)


[style] ~190-~190: Consider using a more formal and expressive alternative to ‘awesome’.
Context: ...have such a huge impact! It would be so awesome if you too were part of the story in ge...

(AWESOME)

docs/src/content/docs/community/showcase/index.mdx

[uncategorized] ~179-~179: You might be missing the article “the” here.
Context: ...e repository. 2. Add the image(s) under docs/src/assets/showcase-images folder....

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[uncategorized] ~185-~185: The preposition “to” seems more likely in this position.
Context: ...link and content of the file. 6. Add it on the above list in `docs/src/content/...

(AI_EN_LECTOR_REPLACEMENT_PREPOSITION)

docs/src/content/docs/learn/browser.mdx

[uncategorized] ~505-~505: You might be missing the article “the” here.
Context: ...perations fail, such as copying URLs to clipboard or showing them in a dialog for manual ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

docs/src/content/docs/blog/2021-11-08-v2-beta2-release-notes.md

[uncategorized] ~12-~12: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...taken quite a while to get to this point and I'm hoping that today's release will gi...

(COMMA_COMPOUND_SENTENCE)


[uncategorized] ~14-~14: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...of twists and turns to get to this point and I'm hoping, with your help, to iron out...

(COMMA_COMPOUND_SENTENCE)


[grammar] ~16-~16: It seems that an auxiliary verb is missing at the beginning of this question.
Context: ...ort polished for the final v2 release. You mean this isn't ready for production? F...

(PRP_VB_QUESTION)


[uncategorized] ~18-~18: A comma might be missing here.
Context: ..., but there are still a number of known issues so keep your eye on [this project board...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[style] ~29-~29: Consider using a synonym to be more concise.
Context: ...mages/wails-menus-mac.webp) There were a lot of requests for native menu support. Wails...

(A_LOT_OF)


[style] ~35-~35: Consider using a different adjective to strengthen your wording.
Context: ...eater control of the window itself. I'm happy to announce that there's new runtime AP...

(HAPPY_EXCITED)


[uncategorized] ~40-~40: When ‘Mac-Specific’ is used as a modifier, it is usually spelled with a hyphen.
Context: ...o cater for all your dialog needs. ### Mac Specific Options In addition to the normal appl...

(SPECIFIC_HYPHEN)


[style] ~53-~53: Consider using a different adjective to strengthen your wording.
Context: ...tion down to single JS & CSS files. I'm happy to announce that for v2, there is no re...

(HAPPY_EXCITED)


[uncategorized] ~76-~76: “and” (in addition to, following this) seems less likely than “an” (indefinite article before a vowel sound).
Context: ...changes to frontend assets will trigger and auto reload of the application fronte...

(AI_HYDRA_LEO_CP_AND_AN)


[uncategorized] ~76-~76: It appears that a hyphen is missing (if ‘auto’ is not used in the context of ‘cars’).
Context: ...ges to frontend assets will trigger and auto reload of the application frontend - Auto re...

(AUTO_HYPHEN)


[style] ~88-~88: Consider using a different adjective to strengthen your wording.
Context: ...a bit of a burden on the developer. I'm happy to announce that in v2, any application...

(HAPPY_EXCITED)


[style] ~106-~106: To elevate your writing, try using a synonym here.
Context: ...nt is very opinionated, fast moving and hard to keep on top of! As a result, we foun...

(HARD_TO)


[style] ~119-~119: Consider using a more formal and expressive alternative to ‘amazing’.
Context: ...! ### Native M1 Support Thanks to the amazing support of [Mat Ryer](https://github.co...

(AWESOME)


[uncategorized] ~143-~143: A comma might be missing here.
Context: ...onent. V2 uses the most recent WKWebKit component so expect the latest and greatest from ...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[grammar] ~155-~155: Consider using third-person verb forms for singular and mass nouns.
Context: ...etbrains.com?from=Wails), whose support drive the project in many ways behind the sce...

(MASS_AGREEMENT)


[style] ~166-~166: Using many exclamation marks might seem excessive (in this case: 11 exclamation marks for a text that’s 6287 characters long)
Context: .../github.com/sponsors/leaanthony). Thanks!

(EN_EXCESSIVE_EXCLAMATION)

docs/src/content/docs/contributing/codebase-layout.mdx

[uncategorized] ~94-~94: The abbreviation “e.g.” (= for example) requires two periods.
Context: ...Wraps platform-specific packaging CLIs (eg. electron-builder equivalents) into Go...

(E_G)


[uncategorized] ~96-~96: The abbreviation “e.g.” (= for example) requires two periods.
Context: ...ils3 package. | Supporting utilities (eg. s/, hash/, flags/`) keep internal ...

(E_G)


[grammar] ~130-~130: Adverb repetition.
Context: ...n() } ``` Under the hood it: 1. Spins up internal.runtime.* 2. Sets up an `assetserver` 3. Registers bindings ...

(ADVERB_VERB_ADVERB_REPETITION)


[misspelling] ~131-~131: Use “a” instead of ‘an’ if the following word doesn’t start with a vowel sound, e.g. ‘a sentence’, ‘a university’.
Context: ...pins up internal.runtime.* 2. Sets up an assetserver 3. Registers bindings gen...

(EN_A_VS_AN)

docs/src/content/docs/guides/windows-uac.mdx

[grammar] ~145-~145: It seems that “to” is missing before the verb.
Context: ...fy the execution level value is valid - Try reverting to asInvoker to isolate the...

(MISSING_TO_BETWEEN_BE_AND_VB)

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

[uncategorized] ~55-~55: Use a comma before “and” if it connects two independent clauses (unless they are closely connected and short).
Context: ...es to your Go code will also be detected and the application will automatically rebu...

(COMMA_COMPOUND_SENTENCE_2)


[style] ~238-~238: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... constants ### `generate appimage` Generates a Linux AppImage. bash wails3 gener...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[uncategorized] ~393-~393: Do not mix variants of the same word (‘pre-release’ and ‘prerelease’) within a single text.
Context: ...-----| | -pre | Update to latest pre-release | false | | -version | Update t...

(EN_WORD_COHERENCY)


[uncategorized] ~398-~398: Do not mix variants of the same word (‘pre-release’ and ‘prerelease’) within a single text.
Context: ...the -pre flag to update to the latest pre-release version, or specify a particular versio...

(EN_WORD_COHERENCY)

docs/src/content/docs/guides/menus.mdx

[grammar] ~34-~34: This phrase is duplicated. You should probably use “Radio Groups” only once.
Context: ... // true = initially checked ``` #### Radio Groups Radio groups allow users to select one option from a...

(PHRASE_REPETITION)


[duplication] ~43-~43: Possible typo: you repeated a word.
Context: ...u.AddRadio("Option 3", false) ``` #### Separators Separators are horizontal lines that help organise...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~50-~50: Possible typo: you repeated a word.
Context: ...s: go menu.AddSeparator() #### Submenus Submenus are nested menus that appear when hover...

(ENGLISH_WORD_REPEAT_RULE)


[style] ~288-~288: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...at the top of the screen (macOS). ### Application Menu Behaviour When you set an applica...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[uncategorized] ~378-~378: Did you mean “precedent”? (As in ‘set an example’)
Context: ...e most specific (closest) setting takes precedence 3. The auto value can be used to rese...

(PRECEDENT_PRECEDENCE_CONFUSION)


[style] ~457-~457: Consider shortening or rephrasing this to strengthen your wording.
Context: ...nd #### Context Menu Management After making changes to a context menu, call the Update() met...

(MAKE_CHANGES)

docs/src/content/docs/blog/2021-09-27-v2-beta1-release-notes.md

[uncategorized] ~22-~22: Use a comma before ‘but’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...was a frustrating development experience but there wasn't much that could have been ...

(COMMA_COMPOUND_SENTENCE_2)


[uncategorized] ~33-~33: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...is release, so grab a drink, take a seat and we'll begin... ### No CGO Dependency! ...

(COMMA_COMPOUND_SENTENCE)


[grammar] ~39-~39: The operating system from Apple is written “macOS”.
Context: ...The thing about Windows is that, unlike MacOS and Linux, it doesn't come with a defau...

(MAC_OS)


[style] ~56-~56: ‘On top of that’ might be wordy. Consider a shorter alternative.
Context: ... your frontend code to work on Windows. On top of that, you get a first-class developer tools ...

(EN_WORDINESS_PREMIUM_ON_TOP_OF_THAT)


[style] ~65-~65: As a shorter alternative for ‘able to’, consider using “can”.
Context: ... Chadwick](https://github.com/jchv), we are able to bundle this dll inside the binary and g...

(BE_ABLE_TO)


[style] ~74-~74: Consider using a synonym to be more concise.
Context: ...og-images/wails-menus.webp) There were a lot of requests for native menu support. Wails...

(A_LOT_OF)


[style] ~80-~80: Consider using a different adjective to strengthen your wording.
Context: ...eater control of the window itself. I'm happy to announce that there's new runtime AP...

(HAPPY_EXCITED)


[uncategorized] ~85-~85: You might be missing the article “an” here.
Context: ...s. There is now the option to generate IDE configuration along with your project. ...

(AI_EN_LECTOR_MISSING_DETERMINER_AN)


[uncategorized] ~87-~87: A comma may be missing after the conjunctive/linking adverb ‘Currently’.
Context: ...uilding and debugging your application. Currently VSCode is supported but we hope to supp...

(SENT_START_CONJUNCTIVE_LINKING_ADVERB_COMMA)


[uncategorized] ~88-~88: Use a comma before ‘but’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...plication. Currently VSCode is supported but we hope to support other IDEs such as G...

(COMMA_COMPOUND_SENTENCE)


[style] ~95-~95: Consider using a different adjective to strengthen your wording.
Context: ...tion down to single JS & CSS files. I'm happy to announce that for v2, there is no re...

(HAPPY_EXCITED)


[uncategorized] ~120-~120: “and” (in addition to, following this) seems less likely than “an” (indefinite article before a vowel sound).
Context: ...changes to frontend assets will trigger and auto reload of the application fronte...

(AI_HYDRA_LEO_CP_AND_AN)


[uncategorized] ~120-~120: It appears that a hyphen is missing (if ‘auto’ is not used in the context of ‘cars’).
Context: ...ges to frontend assets will trigger and auto reload of the application frontend - Auto re...

(AUTO_HYPHEN)


[style] ~132-~132: Consider using a different adjective to strengthen your wording.
Context: ...a bit of a burden on the developer. I'm happy to announce that in v2, any application...

(HAPPY_EXCITED)


[style] ~150-~150: To elevate your writing, try using a synonym here.
Context: ...nt is very opinionated, fast moving and hard to keep on top of! As a result, we foun...

(HARD_TO)


[grammar] ~201-~201: The operating system from Apple is written “macOS”.
Context: ...citing phase of the project! Lea. PS: MacOS and Linux users need not feel left out ...

(MAC_OS)


[style] ~206-~206: Using many exclamation marks might seem excessive (in this case: 15 exclamation marks for a text that’s 9426 characters long)
Context: .../github.com/sponsors/leaanthony). Thanks!

(EN_EXCESSIVE_EXCLAMATION)

docs/src/content/docs/contributing/extending-wails.mdx

[grammar] ~8-~8: Did you mean “are” or “were”?
Context: ...ils v3 sidebar: order: 8 --- > Wails is designed to be hackable. > Every ...

(SENT_START_NNS_IS)


[uncategorized] ~64-~64: Use a comma before ‘so’ if it connects two independent clauses (unless they are closely connected and short).
Context: ... > Now wails3 generate emits bindings so JS can call > `window.backend.chat.Send...

(COMMA_COMPOUND_SENTENCE_2)


[uncategorized] ~67-~67: Possible missing comma found.
Context: ...ndow.backend.chat.Send("hi"). ### 1.4 Ship an Example Copy v3/examples/services/...

(AI_HYDRA_LEO_MISSING_COMMA)

docs/src/content/docs/guides/custom-templates.mdx

[style] ~193-~193: Consider using a more formal and expressive alternative to ‘awesome’.
Context: ...n| Description of the product |"An awesome application" | |ProductVersio...

(AWESOME)


[style] ~278-~278: This phrase can be considered informal. To elevate your writing, consider using a more professional alternative.
Context: ...://wails.io) ## Best Practices Let's talk about some key practices that will help make ...

(TALK_ABOUT_DISCUSS)

docs/src/content/docs/contributing/runtime-internals.mdx

[uncategorized] ~78-~78: Possible missing comma found.
Context: ...e result or error is marshalled back to JS where a Promise resolves. Specialise...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~112-~112: A comma might be missing here.
Context: ...sOn("chat:new-message", cb) Under the hood both map to the same **EventBus** inp...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[uncategorized] ~155-~155: Possible missing comma found.
Context: ... see live reload & asset requests. * On macOS run under lldb -- to catch Objective-...

(AI_HYDRA_LEO_MISSING_COMMA)

docs/src/content/docs/contributing/architecture.mdx

[grammar] ~17-~17: The expression “vice versa” is spelled without hyphens.
Context: ...w** – what happens when JS calls Go and vice-versa 3. Development vs Production – tw...

(VICE_VERSA)


[duplication] ~56-~56: Possible typo: you repeated a word.
Context: ...<--> BRIDGE <--> FRONTEND BRIDGE <--> RT RT <-->|serve assets| ASSETDEV ...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~102-~102: Possible typo: you repeated a word.
Context: ...Window] end VITE <-->|proxy / HMR| ASDEV ASDEV <-->|http| FRONTENDDEV EMBED --> ASP...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~105-~105: Possible typo: you repeated a word.
Context: ...DEV <-->|http| FRONTENDDEV EMBED --> ASPROD ASPROD <-->|in-memory| FRONTENDPROD ...

(ENGLISH_WORD_REPEAT_RULE)

docs/src/content/docs/blog/2022-02-22-v2-beta3-release-notes.md

[style] ~11-~11: Qualifiers like “somewhat” can weaken your message and make your writing sound uncertain. Consider removing it or choosing an alternative to sound more confident.
Context: ...ails v2 is now in beta for Linux! It is somewhat ironic that the very first experiments ...

(SOMEWHAT)


[uncategorized] ~12-~12: The verb “was” doesn’t seem to fit in this context, “were” is probably more formally correct.
Context: ...that the very first experiments with v2 was on Linux and yet it has ended up as the...

(AI_HYDRA_LEO_CPT_WAS_WERE)


[uncategorized] ~12-~12: Possible missing comma found.
Context: ...e very first experiments with v2 was on Linux and yet it has ended up as the last rel...

(AI_HYDRA_LEO_MISSING_COMMA)


[typographical] ~12-~12: Consider adding a comma after the introductory adverb.
Context: ...st experiments with v2 was on Linux and yet it has ended up as the last release. Th...

(YET_COMMA)


[style] ~21-~21: Consider using a synonym to be more concise.
Context: ...ges/wails-menus-linux.webp) There were a lot of requests for native menu support. Wails...

(A_LOT_OF)


[style] ~27-~27: Consider using a different adjective to strengthen your wording.
Context: ...eater control of the window itself. I'm happy to announce that there's new runtime AP...

(HAPPY_EXCITED)


[style] ~35-~35: Consider using a different adjective to strengthen your wording.
Context: ...tion down to single JS & CSS files. I'm happy to announce that for v2, there is no re...

(HAPPY_EXCITED)


[uncategorized] ~58-~58: It appears that a hyphen is missing (if ‘auto’ is not used in the context of ‘cars’).
Context: ...nges to frontend assets will trigger an auto reload of the application frontend - Auto re...

(AUTO_HYPHEN)


[style] ~70-~70: Consider using a different adjective to strengthen your wording.
Context: ...a bit of a burden on the developer. I'm happy to announce that in v2, any application...

(HAPPY_EXCITED)


[style] ~88-~88: To elevate your writing, try using a synonym here.
Context: ...nt is very opinionated, fast moving and hard to keep on top of! As a result, we foun...

(HARD_TO)


[style] ~129-~129: Using many exclamation marks might seem excessive (in this case: 10 exclamation marks for a text that’s 5233 characters long)
Context: .../github.com/sponsors/leaanthony). Thanks!

(EN_EXCESSIVE_EXCLAMATION)

docs/src/content/docs/contributing/testing-ci.mdx

[uncategorized] ~179-~179: A punctuation mark might be missing here.
Context: ...| Fix | |---------|--------------|-----| | Race in runtime_darwin.go | Forg...

(AI_EN_LECTOR_MISSING_PUNCTUATION)


[uncategorized] ~213-~213: A comma might be missing here.
Context: ...race detection, and a cross-platform CI matrix you can contribute confidently, knowing...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)

docs/src/content/docs/blog/2023-01-17-v3-roadmap.md

[grammar] ~13-~13: Did you mean “are” or “were”?
Context: ...ultiwindow.webp) # Introduction Wails is a project that simplifies the ability t...

(SENT_START_NNS_IS)


[style] ~18-~18: Consider using a synonym to be more concise.
Context: ...d of September 2022 and brought with it a lot of enhancements including: - Live develop...

(A_LOT_OF)


[uncategorized] ~19-~19: Possible missing comma found.
Context: ...ember 2022 and brought with it a lot of enhancements including: - Live development, leverag...

(AI_HYDRA_LEO_MISSING_COMMA)


[style] ~27-~27: For conciseness, consider replacing this expression with an adverb.
Context: ... of NSIS Installer - Obfuscated builds Right now, Wails v2 provides powerful tooling for...

(AT_THE_MOMENT)


[typographical] ~47-~47: To make your text more readable, consider placing this phrase between commas.
Context: ...I've identified the following areas that I feel are holding the project back: - The AP...

(WHICH_I_THOUGHT_COMMA)


[uncategorized] ~51-~51: Possible missing preposition found.
Context: ...ack: - The API - Bindings generation - The Build System ### The API The API to b...

(AI_HYDRA_LEO_MISSING_OF)


[style] ~61-~61: As an alternative to the over-used intensifier ‘very’, consider replacing this phrase.
Context: ...e application will work. Whilst this is very simple to use, it is also very limiting. It is...

(EN_WEAK_ADJECTIVE)


[style] ~68-~68: Consider using a synonym to be more concise.
Context: ...iple windows. The Runtime API provides a lot of utility functions for the developer. Th...

(A_LOT_OF)


[uncategorized] ~83-~83: Use a comma before “and” if it connects two independent clauses (unless they are closely connected and short).
Context: ...he demand for multiple windows has grown and the API is not well suited to this. ##...

(COMMA_COMPOUND_SENTENCE_2)


[uncategorized] ~138-~138: Possible missing comma found.
Context: ...ial flag and then running the resultant binary which uses reflection to determine what...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~139-~139: It appears that there are hyphens missing.
Context: ...as been bound. This leads to a bit of a chicken and egg situation: You can't build the application withou...

(CHICKEN_AND_EGG_HYPHEN)


[uncategorized] ~140-~140: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...ild the application without the bindings and you can't generate the bindings without...

(COMMA_COMPOUND_SENTENCE)


[uncategorized] ~141-~141: Use a comma before ‘but’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...ication. There are many ways around this but the best one would be not to use this a...

(COMMA_COMPOUND_SENTENCE_2)


[uncategorized] ~144-~144: Use a comma before ‘but’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...ing a static analyser for Wails projects but they didn't get very far. In more recen...

(COMMA_COMPOUND_SENTENCE)


[uncategorized] ~148-~148: A comma might be missing here.
Context: ...to reflection, the AST approach is much faster however it is significantly more compli...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[style] ~157-~157: Consider using a synonym to be more concise.
Context: ...on. When you run wails build, it does a lot of things behind the scenes: - Builds the...

(A_LOT_OF)


[style] ~175-~175: As an alternative to the over-used intensifier ‘very’, consider replacing this phrase.
Context: ... builds it This entire process, whilst very powerful, is also very opaque. It is very diffic...

(EN_WEAK_ADJECTIVE)


[uncategorized] ~176-~176: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...ue. It is very difficult to customise it and it is very difficult to debug. To addr...

(COMMA_COMPOUND_SENTENCE)


[uncategorized] ~183-~183: Possible missing comma found.
Context: ...ld be configured using a Taskfile.yml file which would be generated by default wit...

(AI_HYDRA_LEO_MISSING_COMMA)


[style] ~184-~184: Consider removing “of” to be more concise
Context: ...he supported templates. This would have all of the steps required to do all the current ta...

(ALL_OF_THE)


[uncategorized] ~188-~188: Possible missing comma found.
Context: ...ill be no external requirement for this tooling as it would form part of the Wails CLI....

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~201-~201: Possible missing comma found.
Context: ...s will be a much more transparent build system which will allow for easier customisati...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~220-~220: The adjective “community-driven” is spelled with a hyphen.
Context: ... this will lead to a new ecosystem of community driven build pipelines. - Better separation of...

(DRIVEN_HYPHEN)


[uncategorized] ~226-~226: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...mentation for this has already been done and it's looking good. There is no current ...

(COMMA_COMPOUND_SENTENCE)


[uncategorized] ~227-~227: Use a comma before ‘but’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...ere is no current timeline for this work but I'm hoping by the end of Q1 2023, there...

(COMMA_COMPOUND_SENTENCE)


[uncategorized] ~233-~233: Possible missing comma found.
Context: ...PI is declarative, hides a lot from the developer and not suitable for features such as...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~236-~236: Possible missing comma found.
Context: ...build system is opaque and difficult to customise so we will move to an external build ...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~238-~238: A comma might be missing here.
Context: .... - The bindings generation is slow and complex so we will move to static analysis wh...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[uncategorized] ~241-~241: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...en a lot of work put into the guts of v2 and it's solid. It's now time to address th...

(COMMA_COMPOUND_SENTENCE)


[style] ~256-~256: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...th Wails. It's not a mockup. It's real. It's awesome. It's coming soon.

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~256-~256: Consider using a more formal and expressive alternative to ‘awesome’.
Context: ...ils. It's not a mockup. It's real. It's awesome. It's coming soon.

(AWESOME)


[style] ~256-~256: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... not a mockup. It's real. It's awesome. It's coming soon.

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

docs/src/content/docs/contributing/asset-server.mdx

[uncategorized] ~72-~72: You might be missing the article “the” here.
Context: ...r browser devtools map errors back to original source. * No Go Re-compile – Only t...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[uncategorized] ~202-~202: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ... and production. Master this layer and you can debug loading issues, add middl...

(COMMA_COMPOUND_SENTENCE)


[style] ~203-~203: Consider using a different adverb to strengthen your wording.
Context: ...ssues, add middlewares, or even swap in a completely different frontend tool-chain with conf...

(COMPLETELY_ENTIRELY)

docs/src/content/docs/contributing/binding-system.mdx

[uncategorized] ~53-~53: Loose punctuation mark.
Context: ....go ``` Analyse(cfg generator.Config): 1. Recursively loads provided Go packa...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~182-~182: Possible missing comma found.
Context: ... one-way (Go methods). For JS-exposed functions use runtime.EventsOn in JS and `appli...

(AI_HYDRA_LEO_MISSING_COMMA)

docs/src/content/docs/learn/bindings.mdx

[style] ~35-~35: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... methods that operate on that state. 2. Services can be used similar to controllers in H...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[uncategorized] ~70-~70: The grammatical number of this noun doesn’t look right. Consider replacing it.
Context: ...his example, we define a GreetService services with a public Greet method. The `Gree...

(AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)


[grammar] ~74-~74: A noun may be missing here.
Context: ...urns a greeting string. We then create a new Wails application using `application.Ne...

(DT_JJ_NO_NOUN)


[style] ~81-~81: As a shorter alternative for ‘able to’, consider using “can”.
Context: ... Bindings By binding the struct, Wails is able to generate the necessary JavaScript or Ty...

(BE_ABLE_TO)


[uncategorized] ~440-~440: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...e special cancel method on the promise and it will reject immediately with a speci...

(COMMA_COMPOUND_SENTENCE)


[typographical] ~556-~556: The word “hence” is an adverb that can’t be used like a conjunction, and therefore needs to be separated from the sentence.
Context: ...Call.RuntimeError` class from the wails runtime, hence you can also test its type like this: ...

(THUS_SENTENCE)


[style] ~657-~657: As a shorter alternative for ‘able to’, consider using “can not”.
Context: ...ctions are not allowed to fail. If they are not able to process a given error and return valid ...

(BE_ABLE_TO)

docs/src/content/docs/changelog.mdx

[style] ~19-~19: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... existing functionality. - Deprecated for soon-to-be removed features. - `Removed...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[typographical] ~20-~20: Consider adding a comma here.
Context: ...oon-to-be removed features. - Removed for now removed features. - Fixed for any bug...

(FOR_NOW_COMMA)


[style] ~21-~21: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...edfor now removed features. -Fixedfor any bug fixes. -Security` in case of ...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[grammar] ~120-~120: The correct preposition appears to be “on”.
Context: ...2) - Updated the minimum system version in macOS .plist files from 10.13.0 to 10.1...

(IN_WINDOWS)


[uncategorized] ~148-~148: Although a hyphen is possible, it is not necessary in a compound modifier in which the first word is an adverb that ends in ‘ly’.
Context: ...b.com//pull/4100) - Fixed initially-hidden menu items by [@IanVS](https://github.c...

(HYPHENATED_LY_ADVERB_ADJECTIVE)


[grammar] ~150-~150: The auxiliary verb ‘do’ requires the base form of the verb.
Context: ...esn't exist but [request].html does - Fixed icon generation paths by [@robin-samuel...

(DID_BASEFORM)


[style] ~156-~156: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...hony](https://github.com/leaanthony). - Fixed Windows icon generation task file name ...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~157-~157: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...github.com//pull/4219). - Fixed transparency issue for frameless window...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~158-~158: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...m/leaanthony) based on work by @Kron. - Fixed focus calls when window is disabled or ...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~159-~159: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...m/leaanthony) based on work by @Kron. - Fixed system trays not showing after taskbar ...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~160-~160: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...m/leaanthony) based on work by @Kron. - Fixed fallbackResponseWriter not implementing...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~166-~166: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...github.com//pull/4375). - Fixed doctor command to check for Windows SDK...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[uncategorized] ~172-~172: Do not mix variants of the same word (‘initialize’ and ‘initialise’) within a single text.
Context: ...lds of fixed-length array types are now initialized with their expected length instead of b...

(EN_WORD_COHERENCY)


[duplication] ~180-~180: Possible typo: you repeated a word.
Context: ...ll/4045) - Remove ESLint from templates by by @IanVS in [...

(ENGLISH_WORD_REPEAT_RULE)


[grammar] ~370-~370: The operating system from Apple is written “macOS”.
Context: ... Fix error on building runnable .app on MacOS when 'name' and 'outputfilename' are ...

(MAC_OS)


[grammar] ~539-~539: The operating system from Apple is written “macOS”.
Context: ...aths with spaces - @leaanthony. - Fix MacOS systray click handling when no attached...

(MAC_OS)


[grammar] ~545-~545: “Windows” (operating system by Microsoft) is a proper noun and needs to be capitalized.
Context: ...ailsapp/wails/pull/3208) - Fix crash on windows left clicking the systray icon when not...

(A_WINDOWS)


[grammar] ~545-~545: The verb “left-clicking” is spelled with a hyphen.
Context: ...wails/pull/3208) - Fix crash on windows left clicking the systray icon when not having an a...

(CLICK_HYPHEN)


[uncategorized] ~632-~632: Do not mix variants of the same word (‘organise’ and ‘organize’) within a single text.
Context: ...de layout: output files were previously organised in folders named after their containi...

(EN_WORD_COHERENCY)

🪛 actionlint (1.7.7)
.github/workflows/auto-label-issues.yml

18-18: the runner of "actions/checkout@v3" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)


29-29: the runner of "actions/labeler@v4" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

.github/workflows/pr-master.yml

9-9: "branches" filter is not available for pull_request_review event. it is only for merge_group, push, pull_request, pull_request_target, workflow_run events

(events)


17-17: the runner of "actions/checkout@v3" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)


47-47: the runner of "actions/checkout@v3" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

.github/workflows/stale-issues.yml

47-47: input "exempt-issue-created-before" is not defined in action "actions/stale@v9". available inputs are "any-of-issue-labels", "any-of-labels", "any-of-pr-labels", "ascending", "close-issue-label", "close-issue-message", "close-issue-reason", "close-pr-label", "close-pr-message", "days-before-close", "days-before-issue-close", "days-before-issue-stale", "days-before-pr-close", "days-before-pr-stale", "days-before-stale", "debug-only", "delete-branch", "enable-statistics", "exempt-all-assignees", "exempt-all-issue-assignees", "exempt-all-issue-milestones", "exempt-all-milestones", "exempt-all-pr-assignees", "exempt-all-pr-milestones", "exempt-assignees", "exempt-draft-pr", "exempt-issue-assignees", "exempt-issue-labels", "exempt-issue-milestones", "exempt-milestones", "exempt-pr-assignees", "exempt-pr-labels", "exempt-pr-milestones", "ignore-issue-updates", "ignore-pr-updates", "ignore-updates", "include-only-assigned", "labels-to-add-when-unstale", "labels-to-remove-when-stale", "labels-to-remove-when-unstale", "only-issue-labels", "only-labels", "only-pr-labels", "operations-per-run", "remove-issue-stale-when-updated", "remove-pr-stale-when-updated", "remove-stale-when-updated", "repo-token", "stale-issue-label", "stale-issue-message", "stale-pr-label", "stale-pr-message", "start-date"

(action)

.github/workflows/issue-triage-automation.yml

16-16: the runner of "actions/github-script@v6" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)


44-44: the runner of "actions/github-script@v6" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)


57-57: the runner of "actions/github-script@v6" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)


70-70: the runner of "actions/github-script@v6" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

.github/workflows/build-and-test-v3.yml

12-12: "branches" filter is not available for pull_request_review event. it is only for merge_group, push, pull_request, pull_request_target, workflow_run events

(events)

🪛 YAMLlint (1.37.1)
.github/workflows/generate-sponsor-image.yml

[error] 35-35: trailing spaces

(trailing-spaces)

.github/file-labeler.yml

[error] 25-25: trailing spaces

(trailing-spaces)


[error] 40-40: trailing spaces

(trailing-spaces)


[warning] 44-44: too many blank lines (1 > 0)

(empty-lines)

.github/stale.yml

[error] 21-21: trailing spaces

(trailing-spaces)


[error] 22-22: trailing spaces

(trailing-spaces)

.github/workflows/pr-master.yml

[error] 36-36: trailing spaces

(trailing-spaces)


[error] 37-37: trailing spaces

(trailing-spaces)

.github/workflows/stale-issues.yml

[error] 14-14: trailing spaces

(trailing-spaces)


[warning] 16-16: wrong indentation: expected 6 but found 4

(indentation)


[error] 24-24: trailing spaces

(trailing-spaces)


[error] 29-29: trailing spaces

(trailing-spaces)


[error] 32-32: trailing spaces

(trailing-spaces)


[error] 36-36: trailing spaces

(trailing-spaces)


[error] 40-40: trailing spaces

(trailing-spaces)


[error] 45-45: trailing spaces

(trailing-spaces)


[error] 49-49: trailing spaces

(trailing-spaces)


[error] 54-54: trailing spaces

(trailing-spaces)

.github/workflows/issue-triage-automation.yml

[error] 32-32: trailing spaces

(trailing-spaces)


[error] 64-64: trailing spaces

(trailing-spaces)


[error] 75-75: trailing spaces

(trailing-spaces)

.github/workflows/v3-docs.yml

[warning] 27-27: wrong indentation: expected 10 but found 11

(indentation)


[error] 42-42: no new line character at the end of file

(new-line-at-end-of-file)

.github/workflows/build-and-test-v3.yml

[error] 238-238: trailing spaces

(trailing-spaces)


[error] 247-247: no new line character at the end of file

(new-line-at-end-of-file)

🪛 ast-grep (0.38.1)
docs/src/assets/contributors.html

[warning] 62-62: "This link points to a plaintext HTTP URL. Prefer an encrypted HTTPS URL if possible."
Context: Andreas Wenk
Andreas Wenk

Note: [CWE-319] Authentication Bypass by Primary Weakness [REFERENCES]
- https://cwe.mitre.org/data/definitions/319.html

(plaintext-http-link-html)


[warning] 70-70: "This link points to a plaintext HTTP URL. Prefer an encrypted HTTPS URL if possible."
Context: Blake Bourque
Blake Bourque

Note: [CWE-319] Authentication Bypass by Primary Weakness [REFERENCES]
- https://cwe.mitre.org/data/definitions/319.html

(plaintext-http-link-html)


[warning] 71-71: "This link points to a plaintext HTTP URL. Prefer an encrypted HTTPS URL if possible."
Context: Denis
Denis

Note: [CWE-319] Authentication Bypass by Primary Weakness [REFERENCES]
- https://cwe.mitre.org/data/definitions/319.html

(plaintext-http-link-html)


[warning] 77-77: "This link points to a plaintext HTTP URL. Prefer an encrypted HTTPS URL if possible."
Context: Elie Grenon
Elie Grenon

Note: [CWE-319] Authentication Bypass by Primary Weakness [REFERENCES]
- https://cwe.mitre.org/data/definitions/319.html

(plaintext-http-link-html)


[warning] 166-166: "This link points to a plaintext HTTP URL. Prefer an encrypted HTTPS URL if possible."
Context: Maicarons J
Maicarons J

Note: [CWE-319] Authentication Bypass by Primary Weakness [REFERENCES]
- https://cwe.mitre.org/data/definitions/319.html

(plaintext-http-link-html)


[warning] 172-172: "This link points to a plaintext HTTP URL. Prefer an encrypted HTTPS URL if possible."
Context: Richard Guay
Richard Guay

Note: [CWE-319] Authentication Bypass by Primary Weakness [REFERENCES]
- https://cwe.mitre.org/data/definitions/319.html

(plaintext-http-link-html)


[warning] 177-177: "This link points to a plaintext HTTP URL. Prefer an encrypted HTTPS URL if possible."
Context: Scott Opell
Scott Opell

Note: [CWE-319] Authentication Bypass by Primary Weakness [REFERENCES]
- https://cwe.mitre.org/data/definitions/319.html

(plaintext-http-link-html)


[warning] 189-189: "This link points to a plaintext HTTP URL. Prefer an encrypted HTTPS URL if possible."
Context: Brian Dwyer
Brian Dwyer

Note: [CWE-319] Authentication Bypass by Primary Weakness [REFERENCES]
- https://cwe.mitre.org/data/definitions/319.html

(plaintext-http-link-html)


[warning] 190-190: "This link points to a plaintext HTTP URL. Prefer an encrypted HTTPS URL if possible."
Context: Christian Kilb
Christian Kilb

Note: [CWE-319] Authentication Bypass by Primary Weakness [REFERENCES]
- https://cwe.mitre.org/data/definitions/319.html

(plaintext-http-link-html)


[warning] 236-236: "This link points to a plaintext HTTP URL. Prefer an encrypted HTTPS URL if possible."
Context: Michael Eatherly
Michael Eatherly

Note: [CWE-319] Authentication Bypass by Primary Weakness [REFERENCES]
- https://cwe.mitre.org/data/definitions/319.html

(plaintext-http-link-html)

🪛 HTMLHint (1.5.0)
docs/src/assets/contributors.html

[error] 1-1: Doctype must be declared before any non-comment content.

(doctype-first)

🔇 Additional comments (29)
.coderabbit.yaml (1)

24-24: master may not exist – double-check the target branches list

The repository appears to use main (and v3-alpha) as primary branches.
Keeping master here will cause CodeRabbit to trigger on a non-existent branch and skip reviews on main.

-    base_branches: ['v3-alpha', 'master']
+    base_branches: ['v3-alpha', 'main']
docs/.npmrc (1)

1-1: LGTM – explicit, deterministic dependency locking

save-exact=true is helpful for reproducible builds. No action needed.

.all-contributorsrc (1)

3-4: Path addition looks correct.

Adding docs/src/assets/contributors.html aligns with the new docs site and will be picked up by the all-contributors bot. No concerns.

.github/workflows/semgrep.yml (1)

8-9: Verify runner availability on ubuntu-24.04

The image is still in preview; some marketplace actions occasionally lag behind new LTS images. If you see unexplained CI failures, try falling back to ubuntu-22.04 until GitHub marks 24.04 as stable.

Also applies to: 18-18

.github/workflows/upload-source-documents.yml (1)

18-18: Good call pinning the changed-files action 👍

Locking to a commit SHA eliminates supply-chain drift.

docs/src/content/docs/guides/_category_.json (1)

1-8: Looks good – consistent with Docusaurus expectations
The attributes (label, position, link) are correct and will render as intended.

.prettierrc.yml (1)

3-5: Good call including *.mdx in the Prettier override
Ensures uniform formatting across the newly-added MDX docs.

docs/src/content/docs/community/showcase/minesweeper-xp.md (1)

5-6: Asset path verified—no action needed

The image reference ../../../../assets/showcase-images/minesweeper-xp.webp in
docs/src/content/docs/community/showcase/minesweeper-xp.md
resolves to docs/src/assets/showcase-images/minesweeper-xp.webp, which exists.

docs/src/content/docs/community/showcase/minecraftupdater.md (1)

5-6: Image asset path verified

The file minecraft-mod-updater.webp exists at docs/src/assets/showcase-images/minecraft-mod-updater.webp, and the relative path (../../../../assets/showcase-images/minecraft-mod-updater.webp) correctly resolves from docs/src/content/docs/community/showcase/minecraftupdater.md. No changes needed.

docs/src/content/docs/community/showcase/restic-browser.md (1)

7-9: Looks great – no issues spotted
Content is clear and free of typos.

docs/src/content/docs/community/showcase/wally.md (1)

7-10: All good – concise and readable
No changes needed.

docs/src/content/docs/community/showcase/emailit.md (1)

1-15: Inconsistency detected between PR objectives and actual changes.

The PR objectives describe fixing Windows SDK dependency detection, but these files are documentation additions for Wails v3. Please verify that the correct files are being reviewed.

Likely an incorrect or invalid review comment.

docs/src/assets/contributors.html (1)

1-246: File is autogenerated - no changes needed.

Based on previous learnings, this contributors table is autogenerated by another bot, so manual changes would be overwritten. The static analysis issues can be ignored for this autogenerated content.

docs/src/components/Mermaid.astro (1)

9-50: Well-implemented Mermaid component.

The component properly handles DOM loading, separates source display from rendered output, and follows good practices for client-side diagram rendering. The approach of extracting content from the details section and rendering it separately is clean and maintainable.

docs/src/content/docs/guides/file-associations.mdx (1)

1-171: Excellent comprehensive guide.

This file associations guide is well-structured, technically accurate, and provides both conceptual overview and practical step-by-step implementation. The coverage of both Windows and macOS platforms with platform-specific considerations is thorough and helpful.

.github/pull_request_template.md (3)

3-17: LGTM! Enhanced warning section improves visibility.

The boxed warning section effectively draws attention to important submission guidelines and the v3 alpha process. This should help reduce rejected PRs and improve contributor experience.


27-27: Good improvement in instruction clarity.

Changing from "delete options" to "select the option" is clearer and more positive in tone.


41-42: Valuable addition for Linux testing context.

Requiring Linux users to specify their distribution and version will significantly help with reproducing and debugging platform-specific issues.

.github/workflows/pr-master.yml (1)

1-1: Good updates for branch targeting and Go version.

The workflow name change and Go version update to 1.23 are appropriate improvements for the master branch workflow.

Also applies to: 43-43

.github/file-labeler.yml (1)

1-44: Excellent coverage of labeling rules.

The file labeler configuration provides comprehensive coverage of the codebase areas including platform-specific files, version branches, and component types. This will significantly improve PR and issue categorization.

docs/src/content/docs/community/templates.md (1)

1-133: Excellent comprehensive template documentation.

This documentation page provides valuable community resources with clear categorization by framework and comprehensive usage instructions. The warning about third-party template responsibility is particularly important for user safety.

docs/src/content/docs/guides/cli.mdx (1)

361-376: Duplicate Flags table – please remove one copy

Two identical Flags tables for tool package appear back-to-back, which bloats the page and breaks anchor navigation.

@@
-| Flag      | Description                          | Default  |
-|-----------|--------------------------------------|----------|
-| `-format` | Package format (deb, rpm, archlinux) | `deb`    |
-| `-name`   | Executable name                      | Required |
-| `-config` | Config file path                     | Required |
-| `-out`    | Output directory                     | `.`      |
-
-#### Flags
-| Flag      | Description                          | Default |
-|-----------|--------------------------------------|---------|
-| `-format` | Package format (deb, rpm, archlinux) | `deb`   |
-| `-name`   | Executable name                      | `myapp` |
-| `-config` | Config file path                     |         |
-| `-out`    | Output directory                     | `.`     |
+#### Flags
+| Flag      | Description                          | Default |
+|-----------|--------------------------------------|---------|
+| `-format` | Package format (deb, rpm, archlinux) | `deb`   |
+| `-name`   | Executable name                      | `myapp` |
+| `-config` | Config file path                     |         |
+| `-out`    | Output directory                     | `.`     |

Likely an incorrect or invalid review comment.

docs/src/content/docs/guides/events-reference.mdx (1)

319-327: Verify that Events.Emit exists in the JS runtime

The official v3 runtime exports Events.Emit ? Previous v2 APIs used
EventsEmit. If the symbol doesn’t exist the sample will break.

Please double-check the generated @wailsio/runtime typings; adjust the example
or add a helper wrapper if needed.

docs/src/content/docs/contributing/index.mdx (1)

9-9: Verify the relative import path for the Mermaid component.

../../components/Mermaid.astro resolves to docs/src/content/components/Mermaid.astro.
If the component actually lives under docs/src/components/, the import will break at build time. Please double-check and adjust the number of .. segments.

docs/src/content/docs/guides/menus.mdx (1)

78-83: Shared-state behaviour is correctly highlighted

Nice job calling out that Append / Prepend keep shared references and suggesting .Clone() for isolation – this matches the intended design of the menu system.

.github/workflows/build-and-test-v3.yml (1)

24-29: github.event.pull_request.approved is not a real field

The expression will expand to an empty string, making the approval check unreliable.
Consider using the GraphQL API (gh api) or github.event.review.state == 'approved' exclusively.

if [[ "${{ github.event.review.state }}" == "approved" ]]; then
  echo "approved=true" >> "$GITHUB_OUTPUT"
else
  echo "approved=false" >> "$GITHUB_OUTPUT"
fi
.github/issue-labeler.yml (1)

125-134: Priority high-priority list overlaps with security keyword

Because security is also present under type → security, issues containing the word will receive both labels.
If that is intentional, add a comment; otherwise remove the duplicate to keep labels mutually exclusive.

docs/src/content/docs/blog/2023-01-17-v3-roadmap.md (1)

9-10: Asset path may break when docs are hosted at site root

![multiwindow screenshot](../../../assets/blog-images/multiwindow.webp) climbs three levels; the generated site usually serves Markdown from / so ../../.. lands outside the public dir.
Verify in local pnpm run dev—if the image is missing, change to /assets/blog-images/multiwindow.webp.

docs/src/content/docs/contributing/binding-system.mdx (1)

35-41: CLI command may confuse users — project CLI is wails, not wails3

Unless a renamed binary ships with v3, update examples:

-wails3 generate
+wails generate bindings

Please verify the correct invocation before publishing.

Comment on lines +7 to +8
"order": 50,
"collapsed": false

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

order will be ignored – use position to control sidebar ordering

Docusaurus only recognises the position key for ordering. Leaving it as order means this category will float to the end of the sidebar instead of slotting in at 50.

-  "order": 50,
+  "position": 50,
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"order": 50,
"collapsed": false
"position": 50,
"collapsed": false
🤖 Prompt for AI Agents
In docs/src/content/docs/contributing/_category_.json around lines 7 to 8, the
key "order" is used to control sidebar ordering, but Docusaurus only recognizes
"position" for this purpose. Replace the "order" key with "position" and set its
value to 50 to ensure the category appears in the correct order in the sidebar.

Comment on lines +10 to 12
***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***

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Remove duplicated disclaimer lines

The same notice is rendered three times, needlessly increasing template length and noise.

-        ***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***
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
***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***
🤖 Prompt for AI Agents
In .github/ISSUE_TEMPLATE/bug_report.yml around lines 10 to 12, there are three
identical disclaimer lines stating that no bug reports are accepted for Wails
v3. Remove the duplicate lines so that the notice appears only once, reducing
unnecessary repetition and template length.

Comment thread docs/Taskfile.yml
Comment on lines +7 to +14
setup:
summary: Setup the project
preconditions:
- sh: npm --version
msg: "Looks like npm isn't installed."
cmds:
- npm install

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

summary is not a recognised Taskfile directive – use desc instead

Taskfile v3 expects the key desc: (or description: in newer snapshots).
summary: will be silently ignored and the description won’t show up in task --list.

-  setup:
-    summary: Setup the project
+  setup:
+    desc: Setup the project
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
setup:
summary: Setup the project
preconditions:
- sh: npm --version
msg: "Looks like npm isn't installed."
cmds:
- npm install
setup:
desc: Setup the project
preconditions:
- sh: npm --version
msg: "Looks like npm isn't installed."
cmds:
- npm install
🤖 Prompt for AI Agents
In docs/Taskfile.yml around lines 7 to 14, replace the unrecognized key
`summary:` with `desc:` to ensure the task description is properly recognized
and displayed by Taskfile v3. This change will make the description appear when
running `task --list`.

Comment on lines +17 to +20
- name: Checkout repository
uses: actions/checkout@v3

- name: Label issues and PRs by content

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Update actions/checkout to v4

actions/checkout@v3 is flagged as outdated by actionlint. Jumping to the latest major fixes that warning and brings performance/security fixes.

-        uses: actions/checkout@v3
+        uses: actions/checkout@v4
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- name: Checkout repository
uses: actions/checkout@v3
- name: Label issues and PRs by content
- name: Checkout repository
uses: actions/checkout@v4
- name: Label issues and PRs by content
🧰 Tools
🪛 actionlint (1.7.7)

18-18: the runner of "actions/checkout@v3" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

🤖 Prompt for AI Agents
In .github/workflows/auto-label-issues.yml around lines 17 to 20, the GitHub
Action uses actions/checkout@v3, which is outdated. Update the version to
actions/checkout@v4 to resolve the actionlint warning and benefit from the
latest performance and security improvements.

Comment on lines +71 to +75
```go
window.SetMinimiseButtonState(wails.ButtonHidden)
window.SetMaximiseButtonState(wails.ButtonEnabled)
window.SetCloseButtonState(wails.ButtonDisabled)
```

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Incorrect package qualifier in runtime example

ButtonHidden, ButtonEnabled, and ButtonDisabled live in the application package, not wails.
Using wails.ButtonHidden will not compile and confuses readers.

-window.SetMinimiseButtonState(wails.ButtonHidden)
-window.SetMaximiseButtonState(wails.ButtonEnabled)
-window.SetCloseButtonState(wails.ButtonDisabled)
+window.SetMinimiseButtonState(application.ButtonHidden)
+window.SetMaximiseButtonState(application.ButtonEnabled)
+window.SetCloseButtonState(application.ButtonDisabled)
🤖 Prompt for AI Agents
In docs/src/content/docs/guides/customising-windows.mdx around lines 71 to 75,
the example code incorrectly uses the package qualifier 'wails' for
ButtonHidden, ButtonEnabled, and ButtonDisabled constants. These constants
belong to the 'application' package. Update the code to use
'application.ButtonHidden', 'application.ButtonEnabled', and
'application.ButtonDisabled' instead of 'wails.ButtonHidden',
'wails.ButtonEnabled', and 'wails.ButtonDisabled' to ensure correct compilation
and clarity.

Comment on lines +43 to +52
import (
"context"
"net/http"
"strconv"
"sync"
"time"

"github.com/gin-gonic/gin"
"github.com/wailsapp/wails/v3/pkg/application"
)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Missing import for log – example will not compile

log.Printf is used in LoggingMiddleware but log isn’t imported.

-import (
+import (
     "context"
     "net/http"
     "strconv"
     "sync"
     "time"
 
+    "log"
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
import (
"context"
"net/http"
"strconv"
"sync"
"time"
"github.com/gin-gonic/gin"
"github.com/wailsapp/wails/v3/pkg/application"
)
import (
"context"
"net/http"
"strconv"
"sync"
"time"
"log"
"github.com/gin-gonic/gin"
"github.com/wailsapp/wails/v3/pkg/application"
)
🤖 Prompt for AI Agents
In docs/src/content/docs/guides/gin-services.mdx around lines 43 to 52, the code
uses log.Printf in the LoggingMiddleware but does not import the log package.
Add an import statement for "log" alongside the other imports to ensure the
example compiles correctly.

Comment on lines +213 to +228
s.mu.Lock()
defer s.mu.Unlock()

// Set the ID and creation time
newUser.ID = s.nextID
newUser.CreatedAt = time.Now()
s.nextID++

// Add to the users slice
s.users = append(s.users, newUser)

c.JSON(http.StatusCreated, newUser)

// Emit an event to notify about the new user
s.app.EmitEvent("user-created", newUser)
})

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Emit event while holding mu.Lock – risk of self-deadlock

EmitEvent can synchronously invoke user handlers that might acquire s.mu.RLock()
(e.g. to read s.users). Emit after releasing the mutex.

-   s.mu.Lock()
-   defer s.mu.Unlock()
    ...
-   s.users = append(s.users, newUser)
-   ...
-   s.app.EmitEvent("user-created", newUser)
+   s.mu.Lock()
+   s.users = append(s.users, newUser)
+   s.mu.Unlock()
+
+   s.app.EmitEvent("user-created", newUser)
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
s.mu.Lock()
defer s.mu.Unlock()
// Set the ID and creation time
newUser.ID = s.nextID
newUser.CreatedAt = time.Now()
s.nextID++
// Add to the users slice
s.users = append(s.users, newUser)
c.JSON(http.StatusCreated, newUser)
// Emit an event to notify about the new user
s.app.EmitEvent("user-created", newUser)
})
// Set the ID and creation time
newUser.ID = s.nextID
newUser.CreatedAt = time.Now()
s.nextID++
s.mu.Lock()
// Add to the users slice
s.users = append(s.users, newUser)
s.mu.Unlock()
c.JSON(http.StatusCreated, newUser)
// Emit an event to notify about the new user
s.app.EmitEvent("user-created", newUser)
})
🤖 Prompt for AI Agents
In docs/src/content/docs/guides/gin-services.mdx around lines 213 to 228, the
call to s.app.EmitEvent("user-created", newUser) is made while holding
s.mu.Lock(), which risks self-deadlock if event handlers try to acquire
s.mu.RLock(). To fix this, move the EmitEvent call to after the deferred
s.mu.Unlock() has executed, ensuring the mutex is released before emitting the
event.

Comment thread .github/issue-labeler.yml
Comment on lines +23 to +31
webview2:
- 'webview2'
- 'windows'
- 'microsoft edge'
- 'edge browser'
- 'IE'
- 'Explorer'
- 'browser crashes'

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Over-broad component matchers may trigger false-positive labels

Patterns such as IE and Explorer are common substrings and risk labelling unrelated issues (e.g. “Tier list”, “File Explorer”).
Recommend anchoring with word boundaries and case-insensitive flag:

-  - 'IE'
-  - 'Explorer'
+  - '(?i)\\bIE\\b'
+  - '(?i)\\bExplorer\\b'
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
webview2:
- 'webview2'
- 'windows'
- 'microsoft edge'
- 'edge browser'
- 'IE'
- 'Explorer'
- 'browser crashes'
webview2:
- 'webview2'
- 'windows'
- 'microsoft edge'
- 'edge browser'
- '(?i)\\bIE\\b'
- '(?i)\\bExplorer\\b'
- 'browser crashes'
🤖 Prompt for AI Agents
In .github/issue-labeler.yml lines 23 to 31, the patterns 'IE' and 'Explorer'
are too broad and may cause false-positive labels by matching substrings in
unrelated words. Update these patterns to use word boundaries and make them
case-insensitive by modifying them into regex patterns that match whole words
only, ensuring more precise issue labeling.

Comment on lines +1 to +7
---
slug: blog/the-road-to-wails-v3
title: The Road to Wails v3
authors: [leaanthony]
tags: [wails, v3]
date: 2023-01-17
---

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Front-matter slug duplicates the blog/ prefix

File resides in docs/blog/**, and Starlight already prefixes blog routes.
slug: blog/the-road-to-wails-v3 will therefore emit /blog/blog/the-road-to-wails-v3.
Drop the blog/ segment:

-slug: blog/the-road-to-wails-v3
+slug: the-road-to-wails-v3
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
---
slug: blog/the-road-to-wails-v3
title: The Road to Wails v3
authors: [leaanthony]
tags: [wails, v3]
date: 2023-01-17
---
---
slug: the-road-to-wails-v3
title: The Road to Wails v3
authors: [leaanthony]
tags: [wails, v3]
date: 2023-01-17
---
🤖 Prompt for AI Agents
In docs/src/content/docs/blog/2023-01-17-v3-roadmap.md lines 1 to 7, the
front-matter slug includes a redundant 'blog/' prefix which causes the URL to
have a duplicated 'blog/blog/' segment. Remove the 'blog/' prefix from the slug
value so it only reads 'the-road-to-wails-v3' to avoid the duplicated path in
the emitted route.

Comment on lines +53 to +67
`Analyse(cfg generator.Config)`:

1. Recursively loads provided Go packages with `go/packages`.
2. Walks the *type* and *value* specs of every AST file.
3. Filters **exported** symbols (capitalised) outside `internal/` packages.
4. Records:
* Receiver type (`struct`, `interface`)
* Method name
* Parameter list (name, type, pointer, variadic)
* Return tuple (values + error presence)
5. Normalises types to a **serialisable set**
(`int`, `float64`, `string`, `[]byte`, slices, maps, structs, pointers).

Unsupported types produce a **compile-time error** so mistakes are caught early.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Markdown code-fence has a dangling back-tick

The block around Analyse(cfg generator.Config) starts with “```” but ends without a matching fence, causing the remainder of the doc to render as code in many MD engines.

-```
-internal/generator/analyse.go
-```
+```text
+internal/generator/analyse.go
+```
🧰 Tools
🪛 LanguageTool

[uncategorized] ~53-~53: Loose punctuation mark.
Context: ....go ``` Analyse(cfg generator.Config): 1. Recursively loads provided Go packa...

(UNLIKELY_OPENING_PUNCTUATION)

🤖 Prompt for AI Agents
In docs/src/content/docs/contributing/binding-system.mdx around lines 53 to 67,
the markdown code block starting with ``` is missing a proper closing fence,
causing rendering issues. Fix this by changing the opening fence to ```text,
adding the filename line inside the block, and then properly closing the block
with a matching ``` fence to ensure correct markdown rendering.

"node": "^10 || ^12 || >=14"
}
},
"node_modules/rollup": {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

High severity vulnerability may affect your project—review required:
Line 569 lists a dependency (rollup) with a known High severity vulnerability.

ℹ️ Why this matters

Affected versions of rollup are vulnerable to Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting').

References: GHSA, CVE

To resolve this comment:
Check if you use Rollup to bundle JavaScript with import.meta.url and the output format is set to cjs, umd, or iife formats, while allowing users to inject scriptless HTML elements with unsanitized name attributes.

💬 Ignore this finding

To ignore this, reply with:

  • /fp <comment> for false positive
  • /ar <comment> for acceptable risk
  • /other <comment> for all other reasons

You can view more details on this finding in the Semgrep AppSec Platform here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Bug Something isn't working size:XXL This PR changes 1000+ lines, ignoring generated files. Windows

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[v3] doctor: Fails to correctly detect Windows SDK and MSIX Packaging Tool version