Repository navigation
feat: Add experimental wails3 setup wizard - #4906
leaanthony wants to merge 59 commits into
Conversation
- Add 'splash' step as the initial wizard page - Scrolling montage background with Wails app screenshots - Centered logo with red glow effect - Apple-style welcome text - Footer with theme toggle, sponsor link, and Get Started button - Simplified button styling (rounded-lg, no glow) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add TemplateFooter with theme toggle + sponsor on left, nav on right - Redesign WelcomePage with logo on left, title/subtitle on right - Add numbered setup steps (1, 2, 3) and links bar - Footer styling now matches splash page design 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add logo (80px) top left with header/subheader next to it - Footer grounded to bottom with theme toggle, sponsor, and nav buttons - Remove WelcomePage (splash now goes directly to dependencies) - Match splash page footer dimensions with template footer 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Move dependency checking from splash transition to dependencies page - Show inline spinner above deps list while checking - Show green success message above deps when all installed - Disable Next button while checking - Trigger check automatically via useEffect on page mount 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add imageBuilt field to DependencyStatus struct to track whether the wails-cross Docker image exists. This allows the OOBE flow to properly detect when Docker is installed but the cross-compilation image hasn't been built yet, and prompt users to set up cross-platform builds. Also moves the Docker build progress indicator to the center of the footer for better visual placement. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add Docker logo asset and updated frontend build output files. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add comprehensive test coverage for the applyGlobalDefaults function
that applies global defaults from ~/.config/wails/defaults.yaml to
init options when creating new projects.
Tests cover:
- Template default application
- Company default application
- Copyright generation with year/company placeholders
- Product identifier generation from prefix
- Description template with {name} placeholder
- Version default application
- Verification that non-default values are not overridden
- Combined defaults application
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Move URLs from Message field to HelpURL field on Windows and Darwin so the frontend can render them as clickable links. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…encies On Windows, when software is installed, the PATH environment variable is updated in the registry but running processes still have the old PATH. This adds a refreshPath() function that reads the current PATH from both system and user registry keys before checking for npm and docker. This allows "Check Again" to work without restarting setup. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Show the cross-platform build question regardless of Docker install status. Previously, the page was only shown when Docker was installed but the wails-cross image wasn't built. Now it's shown when: 1. Docker is not installed (user might want to install it), OR 2. Docker is installed but wails-cross image is not built 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Replace all Docker logo SVGs with official path that includes container boxes - Add "Some platforms may require a reboot" note on Docker install page - Affects: Install Docker, Start Docker, Building image, Docker ready pages 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Combine Company and Bundle ID fields into one page called "Projects" in the sidebar. Remove template selection from setup wizard as it's not needed during initial setup. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…page - Fix CheckingPage centering by using justify-start with pt-[30%] padding - Replace h-full with flex-1 for proper flex container sizing - Redesign CompletePage with compact terminal-style command display - Add framework logos (JavaScript, TypeScript, React, Vue, Svelte, etc.) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove terminal-style command display from complete page - Remove "Read the documentation" link - Change "Start Building" button to link to first-app quickstart guide - Remove unused CopyableCommand component and handleClose function 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…asses) - Add new wizard step after TypeScript selection for binding style choice - Add UseInterfaces field to GlobalDefaults and pass through to templates - Update Taskfile template to conditionally add -i flag for interfaces - Improve button positioning to match SplashPage layout - Remove "This sets the default template" text from template page - Fix overflow issues when resizing window 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…ebar - Move Docker build progress indicator to sidebar (above bottom icons) - Fix light mode text colors in ProjectsPage settings rows - Add light mode CSS variants for settings-group and settings-row - Improve button positioning consistency across pages 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update language selection cards with light mode text colors - Update framework/template cards with light mode backgrounds and borders - Use text-gray-900 dark:text-white pattern for proper contrast - Add bg-gray-100 dark:bg-white/5 for unselected card backgrounds 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Use Docker Engine API for accurate download progress with byte counts - Add SSE streaming for smooth real-time UI updates (replaces polling) - Show toast notification when Docker completes in background mode - Fix progress calculation to use bytes instead of layer count - Fix framework selection border clipping with padding - Pull pre-built image from ghcr.io/wailsapp/wails-cross instead of building locally
- Add lipgloss-based styling (term/styles.go) with Wails brand colors - Update init output to show Framework, Language, Bindings from config - Display '(default)' suffix for values from global config - Add Framework/Language fields to defaults for cleaner config - New minimal banner style: 'Wails v3.x.x › Command'
- Add SigningDefaults to GlobalDefaults for macOS/Windows/Linux signing config - Add signing status section to doctor command with platform detection - Add --json flag to doctor command for machine-readable output - Add /api/signing and /api/signing/status endpoints to setup wizard - Add SigningStep component with platform tabs and status indicators - Wire signing step into wizard flow after projects step The signing step shows detected signing identities from: - macOS: keychain codesigning identities, notarization config - Windows: certificate file/store/cloud, SignTool availability - Linux: GPG keys from keyring or config
- Add Configure button for each platform that opens a form - Add configuration forms for macOS (identity, team ID, notarization profile) - Add configuration forms for Windows (certificate path, thumbprint, timestamp) - Add configuration forms for Linux (GPG key ID, key path) - Use inline SVGs for platform icons (same as CrossPlatformPage) - Forms save to defaults.yaml via /api/signing endpoint - Include helpful command hints for finding signing identities
- Detect host OS and show platform-appropriate guidance - On Mac: show 'security find-identity' and 'xcrun notarytool' commands - On Linux/Windows: show rcodesign info and P12 certificate path field - Add App Store Connect API fields for cross-platform notarization - Link to Apple docs for API key creation - Disable keychain profile field on non-Mac (not applicable)
… detection - Add user-facing documentation at docs/getting-started/setup.mdx - Remove internal design storyboard (docs/setup-wizard-storyboard.md) - Wire up main `wails3 setup` command in CLI - Add experimental warning with link to feedback issue #4904 - Add "Report Bug" button in wizard sidebar with clipboard template - Fix npm detection on Linux to check PATH, not just package manager - Use term.Warning and term.Hyperlink for styled terminal output Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add tip about setup wizard in Dependencies section - Add "Next Steps" section recommending `wails3 setup` - Keep manual installation as fallback option - Link to setup guide and feedback issue Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add setup step to quickstart code blocks on home page - Add setup to TL;DR section in quick-start/installation - Add new step 4 "Run Setup Wizard" with experimental warning - Link to feedback issue #4904 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
| peerDependencies: | ||
| webpack: ^4.0.0 || ^5.0.0 | ||
|
|
||
| webpack-dev-server@4.15.2: |
There was a problem hiding this comment.
Medium severity vulnerability may affect your project—review required:
Line 4457 lists a dependency (webpack-dev-server) with a known Medium severity vulnerability.
ℹ️ Why this matters
Affected versions of webpack-dev-server are vulnerable to Origin Validation Error. webpack-dev-server improperly validates the WebSocket connection Origin header, unconditionally accepting any IP-address-based Origin. A malicious website can perform a cross-site WebSocket hijack against a running dev server and exfiltrate the developer source code carried in Hot Module Reloading (HMR) messages. The insecure origin check is the package default and is reached on every WebSocket connection, so any project running an affected version is vulnerable.
To resolve this comment:
Check if you are using webpack dev server CLI setup and access untrusted web site with non-Chromium based browser.
- If you're affected, upgrade this dependency to at least version 5.2.1 at website/pnpm-lock.yaml.
- If you're not affected, comment
/fp we don't use this [condition]
💬 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.
| "url": "https://github.com/sponsors/ljharb" | ||
| } | ||
| }, | ||
| "node_modules/vite": { |
There was a problem hiding this comment.
Medium severity vulnerability may affect your project—review required:
Line 602 lists a dependency (vite) with a known Medium severity vulnerability.
ℹ️ Why this matters
Affected versions of vite are vulnerable to Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal'). Vite's server.fs.deny blocklist—which protects sensitive files such as .env and certificate files from being served—can be bypassed on Windows by appending a trailing backslash to request URLs, allowing an attacker to read otherwise-denied files.
To resolve this comment:
Check if you expose the Vite dev server to the network by configuring to a non-loopback address using the --host CLI flag on windows.
- If you're affected, upgrade this dependency to at least version 5.4.21 at v2/examples/dragdrop-test/frontend/package-lock.json.
- If you're not affected, comment
/fp we don't use this [condition]
💬 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.
| "url": "https://github.com/sponsors/ljharb" | ||
| } | ||
| }, | ||
| "node_modules/vite": { |
There was a problem hiding this comment.
Medium severity vulnerability may affect your project—review required:
Line 602 lists a dependency (vite) with a known Medium severity vulnerability.
ℹ️ Why this matters
Affected versions of vite are vulnerable to Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal'). An attacker can bypass the server.fs.deny file-access blocklist by requesting paths with a trailing /. segment, gaining read access to protected files such as .env secrets and TLS certificates from the Vite dev server.
To resolve this comment:
Check if you expose the Vite dev server to the network by configuring to a non-loopback address using the --host CLI flag.
- If you're affected, upgrade this dependency to at least version 4.5.14 at v2/examples/dragdrop-test/frontend/package-lock.json.
- If you're not affected, comment
/fp we don't use this [condition]
💬 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.
| "url": "https://github.com/sponsors/ljharb" | ||
| } | ||
| }, | ||
| "node_modules/vite": { |
There was a problem hiding this comment.
Medium severity vulnerability may affect your project—review required:
Line 602 lists a dependency (vite) with a known Medium severity vulnerability.
ℹ️ Why this matters
Affected versions of vite are vulnerable to Exposure of Sensitive Information to an Unauthorized Actor. An attacker on the network can craft HTTP requests containing '#' in the request-target to bypass Vite's server.fs.deny restrictions and read arbitrary files from the host machine.
To resolve this comment:
Check if you expose the Vite dev server to the network by configuring to a non-loopback address using the --host CLI flag.
- If you're affected, upgrade this dependency to at least version 4.5.13 at v2/examples/dragdrop-test/frontend/package-lock.json.
- If you're not affected, comment
/fp we don't use this [condition]
💬 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.
| "url": "https://github.com/sponsors/ljharb" | ||
| } | ||
| }, | ||
| "node_modules/vite": { |
There was a problem hiding this comment.
Medium severity vulnerability may affect your project—review required:
Line 602 lists a dependency (vite) with a known Medium severity vulnerability.
ℹ️ Why this matters
Affected versions of vite are vulnerable to Exposure of Sensitive Information to an Unauthorized Actor / Improper Access Control. Vite's server.fs.deny file-access restriction can be bypassed by appending ?inline&import or ?raw?import query parameters to any request URL, allowing an attacker to read arbitrary files from the host filesystem — including .env files and TLS private keys — when the dev server is reachable from the network.
To resolve this comment:
Check if you expose the Vite dev server to the network by configuring to a non-loopback address using the --host CLI flag.
- If you're affected, upgrade this dependency to at least version 4.5.11 at v2/examples/dragdrop-test/frontend/package-lock.json.
- If you're not affected, comment
/fp we don't use this [condition]
💬 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.
| "url": "https://github.com/sponsors/ljharb" | ||
| } | ||
| }, | ||
| "node_modules/vite": { |
There was a problem hiding this comment.
Medium severity vulnerability may affect your project—review required:
Line 602 lists a dependency (vite) with a known Medium severity vulnerability.
ℹ️ Why this matters
Affected versions of vite are vulnerable to Exposure of Sensitive Information to an Unauthorized Actor / Improper Access Control. An attacker on the same network can exploit the server.fs.deny bypass to read arbitrary files from the server's filesystem, including sensitive files such as .env files, private keys, and source code.
To resolve this comment:
Check if you expose the Vite dev server to the network by configuring to a non-loopback address using the --host CLI flag.
- If you're affected, upgrade this dependency to at least version 4.5.12 at v2/examples/dragdrop-test/frontend/package-lock.json.
- If you're not affected, comment
/fp we don't use this [condition]
💬 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.
| "url": "https://github.com/sponsors/ljharb" | ||
| } | ||
| }, | ||
| "node_modules/vite": { |
There was a problem hiding this comment.
Medium severity vulnerability may affect your project—review required:
Line 602 lists a dependency (vite) with a known Medium severity vulnerability.
ℹ️ Why this matters
Affected versions of vite are vulnerable to Exposure of Sensitive Information to an Unauthorized Actor / Improper Access Control. An attacker who can send HTTP requests to the exposed dev server can read arbitrary files outside the project root by appending trailing query separators (e.g. ?raw??) to /@fs/ URLs, bypassing server.fs.deny access controls.
To resolve this comment:
Check if you expose the Vite dev server to the network by configuring to a non-loopback address using the --host CLI flag.
- If you're affected, upgrade this dependency to at least version 4.5.10 at v2/examples/dragdrop-test/frontend/package-lock.json.
- If you're not affected, comment
/fp we don't use this [condition]
💬 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.
| "url": "https://github.com/sponsors/ljharb" | ||
| } | ||
| }, | ||
| "node_modules/vite": { |
There was a problem hiding this comment.
Medium severity vulnerability may affect your project—review required:
Line 602 lists a dependency (vite) with a known Medium severity vulnerability.
ℹ️ Why this matters
Affected versions of vite are vulnerable to Missing Origin Validation in WebSockets / Origin Validation Error / Reliance on Reverse DNS Resolution for a Security-Critical Action. Vite's development server allows any website to read responses from the dev server and steal source code via permissive default CORS settings (Access-Control-Allow-Origin: *), missing Origin validation on HMR WebSocket connections enabling Cross-Site WebSocket Hijacking, and absent Host header validation enabling DNS rebinding attacks. This vulnerability applies even when the dev server is only accessible on localhost.
To resolve this comment:
Check if you are running the vite development server.
- If you're affected, upgrade this dependency to at least version 4.5.6 at v2/examples/dragdrop-test/frontend/package-lock.json.
- If you're not affected, comment
/fp we don't use this [condition]
💬 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.
| axios@0.25.0: | ||
| resolution: {integrity: sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==} | ||
|
|
||
| axios@1.13.2: |
There was a problem hiding this comment.
Medium severity vulnerability introduced by a package you're using:
Line 1519 lists a dependency (axios) with a known Medium severity vulnerability. Fixing requires upgrading or replacing the dependency.
ℹ️ Why this matters
Affected versions of axios are vulnerable to Improper Neutralization of CRLF Sequences in HTTP Headers ('HTTP Request/Response Splitting') / Inconsistent Interpretation of HTTP Requests ('HTTP Request/Response Smuggling') / Server-Side Request Forgery (SSRF). Axios can be used as a gadget for header injection: if another dependency enables prototype pollution, polluted properties can be merged into Axios request headers and written without CRLF sanitization, allowing request smuggling/SSRF that can reach internal services such as AWS IMDSv2 and potentially lead to credential theft or broader compromise.
To resolve this comment:
Upgrade this dependency to at least version 1.15.0 at website/pnpm-lock.yaml.
💬 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.
| peerDependencies: | ||
| postcss: ^8.1.0 | ||
|
|
||
| axios@0.25.0: |
There was a problem hiding this comment.
Medium severity vulnerability introduced by a package you're using:
Line 1516 lists a dependency (axios) with a known Medium severity vulnerability. Fixing requires upgrading or replacing the dependency.
ℹ️ Why this matters
Affected versions of axios are vulnerable to Improper Neutralization of CRLF Sequences in HTTP Headers ('HTTP Request/Response Splitting') / Inconsistent Interpretation of HTTP Requests ('HTTP Request/Response Smuggling') / Server-Side Request Forgery (SSRF). Axios can be used as a gadget for header injection: if another dependency enables prototype pollution, polluted properties can be merged into Axios request headers and written without CRLF sanitization, allowing request smuggling/SSRF that can reach internal services such as AWS IMDSv2 and potentially lead to credential theft or broader compromise.
To resolve this comment:
Upgrade this dependency to at least version 0.31.0 at website/pnpm-lock.yaml.
💬 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.
| "postcss": "^8.1.0" | ||
| } | ||
| }, | ||
| "node_modules/axios": { |
There was a problem hiding this comment.
Medium severity vulnerability introduced by a package you're using:
Line 5934 lists a dependency (axios) with a known Medium severity vulnerability. Fixing requires upgrading or replacing the dependency.
ℹ️ Why this matters
Affected versions of axios are vulnerable to Improper Neutralization of CRLF Sequences in HTTP Headers ('HTTP Request/Response Splitting') / Inconsistent Interpretation of HTTP Requests ('HTTP Request/Response Smuggling') / Server-Side Request Forgery (SSRF). Axios can be used as a gadget for header injection: if another dependency enables prototype pollution, polluted properties can be merged into Axios request headers and written without CRLF sanitization, allowing request smuggling/SSRF that can reach internal services such as AWS IMDSv2 and potentially lead to credential theft or broader compromise.
To resolve this comment:
Upgrade this dependency to at least version 1.15.0 at website/package-lock.json.
💬 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.
| axios@0.25.0: | ||
| resolution: {integrity: sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==} | ||
|
|
||
| axios@1.13.2: |
There was a problem hiding this comment.
Medium severity vulnerability may affect your project—review required:
Line 1519 lists a dependency (axios) with a known Medium severity vulnerability.
ℹ️ Why this matters
Affected versions of axios are vulnerable to Server-Side Request Forgery (SSRF) / Unintended Proxy or Intermediary ('Confused Deputy'). Axios does not normalize hostnames before applying NO_PROXY, so requests to loopback or internal hosts such as localhost. or [::1] can be sent through a configured proxy instead of bypassing it. If an attacker can influence request URLs, they may force local/internal Axios traffic through an attacker-controlled proxy, undermining SSRF protections and exposing sensitive responses.
To resolve this comment:
Check if you have NO_PROXY configured in your environment.
- If you're affected, upgrade this dependency to at least version 1.15.0 at website/pnpm-lock.yaml.
- If you're not affected, comment
/fp we don't use this [condition]
💬 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.
| peerDependencies: | ||
| postcss: ^8.1.0 | ||
|
|
||
| axios@0.25.0: |
There was a problem hiding this comment.
Medium severity vulnerability may affect your project—review required:
Line 1516 lists a dependency (axios) with a known Medium severity vulnerability.
ℹ️ Why this matters
Affected versions of axios are vulnerable to Server-Side Request Forgery (SSRF) / Unintended Proxy or Intermediary ('Confused Deputy'). Axios does not normalize hostnames before applying NO_PROXY, so requests to loopback or internal hosts such as localhost. or [::1] can be sent through a configured proxy instead of bypassing it. If an attacker can influence request URLs, they may force local/internal Axios traffic through an attacker-controlled proxy, undermining SSRF protections and exposing sensitive responses.
To resolve this comment:
Check if you have NO_PROXY configured in your environment.
- If you're affected, upgrade this dependency to at least version 0.31.0 at website/pnpm-lock.yaml.
- If you're not affected, comment
/fp we don't use this [condition]
💬 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.
| "postcss": "^8.1.0" | ||
| } | ||
| }, | ||
| "node_modules/axios": { |
There was a problem hiding this comment.
Medium severity vulnerability may affect your project—review required:
Line 5934 lists a dependency (axios) with a known Medium severity vulnerability.
ℹ️ Why this matters
Affected versions of axios are vulnerable to Server-Side Request Forgery (SSRF) / Unintended Proxy or Intermediary ('Confused Deputy'). Axios does not normalize hostnames before applying NO_PROXY, so requests to loopback or internal hosts such as localhost. or [::1] can be sent through a configured proxy instead of bypassing it. If an attacker can influence request URLs, they may force local/internal Axios traffic through an attacker-controlled proxy, undermining SSRF protections and exposing sensitive responses.
To resolve this comment:
Check if you have NO_PROXY configured in your environment.
- If you're affected, upgrade this dependency to at least version 1.15.0 at website/package-lock.json.
- If you're not affected, comment
/fp we don't use this [condition]
💬 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.
| axios@0.25.0: | ||
| resolution: {integrity: sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==} | ||
|
|
||
| axios@1.13.2: |
There was a problem hiding this comment.
High severity vulnerability may affect your project—review required:
Line 1519 lists a dependency (axios) with a known High severity vulnerability.
ℹ️ Why this matters
Affected versions of axios are vulnerable to Inefficient Regular Expression Complexity / Uncontrolled Resource Consumption. axios is vulnerable to a regular expression denial of service (ReDoS). The internal cookies.read() helper in lib/helpers/cookies.js builds a regular expression by concatenating the cookie name directly into the pattern without escaping regex metacharacters. When the cookie name flowing into the XSRF cookie read (e.g. via xsrfCookieName) contains a catastrophic-backtracking payload, evaluating the regex against document.cookie can freeze the JavaScript event loop, causing a denial of service in the browser tab or in Node.js/SSR applications. The affected code path is reached during ordinary axios request processing, so any importer of an affected version is exposed. Upgrade to a patched version (0.32.0 or 1.16.0), or set xsrfCookieName: null to disable XSRF cookie reading.
References: GHSA
To resolve this comment:
Check if you are using axios in browser with untrusted xsrfCookieName value.
- If you're affected, upgrade this dependency to at least version 1.16.0 at website/pnpm-lock.yaml.
- If you're not affected, comment
/fp we don't use this [condition]
💬 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.
| peerDependencies: | ||
| postcss: ^8.1.0 | ||
|
|
||
| axios@0.25.0: |
There was a problem hiding this comment.
High severity vulnerability may affect your project—review required:
Line 1516 lists a dependency (axios) with a known High severity vulnerability.
ℹ️ Why this matters
Affected versions of axios are vulnerable to Inefficient Regular Expression Complexity / Uncontrolled Resource Consumption. axios is vulnerable to a regular expression denial of service (ReDoS). The internal cookies.read() helper in lib/helpers/cookies.js builds a regular expression by concatenating the cookie name directly into the pattern without escaping regex metacharacters. When the cookie name flowing into the XSRF cookie read (e.g. via xsrfCookieName) contains a catastrophic-backtracking payload, evaluating the regex against document.cookie can freeze the JavaScript event loop, causing a denial of service in the browser tab or in Node.js/SSR applications. The affected code path is reached during ordinary axios request processing, so any importer of an affected version is exposed. Upgrade to a patched version (0.32.0 or 1.16.0), or set xsrfCookieName: null to disable XSRF cookie reading.
References: GHSA
To resolve this comment:
Check if you are using axios in browser with untrusted xsrfCookieName value.
- If you're affected, upgrade this dependency to at least version 0.32.0 at website/pnpm-lock.yaml.
- If you're not affected, comment
/fp we don't use this [condition]
💬 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.
| "postcss": "^8.1.0" | ||
| } | ||
| }, | ||
| "node_modules/axios": { |
There was a problem hiding this comment.
High severity vulnerability may affect your project—review required:
Line 5934 lists a dependency (axios) with a known High severity vulnerability.
ℹ️ Why this matters
Affected versions of axios are vulnerable to Inefficient Regular Expression Complexity / Uncontrolled Resource Consumption. axios is vulnerable to a regular expression denial of service (ReDoS). The internal cookies.read() helper in lib/helpers/cookies.js builds a regular expression by concatenating the cookie name directly into the pattern without escaping regex metacharacters. When the cookie name flowing into the XSRF cookie read (e.g. via xsrfCookieName) contains a catastrophic-backtracking payload, evaluating the regex against document.cookie can freeze the JavaScript event loop, causing a denial of service in the browser tab or in Node.js/SSR applications. The affected code path is reached during ordinary axios request processing, so any importer of an affected version is exposed. Upgrade to a patched version (0.32.0 or 1.16.0), or set xsrfCookieName: null to disable XSRF cookie reading.
References: GHSA
To resolve this comment:
Check if you are using axios in browser with untrusted xsrfCookieName value.
- If you're affected, upgrade this dependency to at least version 1.16.0 at website/package-lock.json.
- If you're not affected, comment
/fp we don't use this [condition]
💬 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.
| axios@0.25.0: | ||
| resolution: {integrity: sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==} | ||
|
|
||
| axios@1.13.2: |
There was a problem hiding this comment.
High severity vulnerability may affect your project—review required:
Line 1519 lists a dependency (axios) with a known High severity vulnerability.
ℹ️ Why this matters
Affected versions of axios are vulnerable to Improperly Controlled Modification of Object Prototype Attributes ('Prototype Pollution') / Unintended Proxy or Intermediary ('Confused Deputy'). axios reads config.proxy via prototype-chain property access, so any Object.prototype pollution elsewhere in the dependency tree silently routes all HTTP requests through an attacker-controlled proxy, yielding a full man-in-the-middle. The vulnerability fires on ordinary axios usage with no specific API call or configuration required; upgrade to axios 1.16.0 or later.
To resolve this comment:
Check if you use axios to make HTTP requests.
- If you're affected, upgrade this dependency to at least version 1.16.0 at website/pnpm-lock.yaml.
- If you're not affected, comment
/fp we don't use this [condition]
💬 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.
| "postcss": "^8.1.0" | ||
| } | ||
| }, | ||
| "node_modules/axios": { |
There was a problem hiding this comment.
High severity vulnerability may affect your project—review required:
Line 5934 lists a dependency (axios) with a known High severity vulnerability.
ℹ️ Why this matters
Affected versions of axios are vulnerable to Improperly Controlled Modification of Object Prototype Attributes ('Prototype Pollution') / Unintended Proxy or Intermediary ('Confused Deputy'). axios reads config.proxy via prototype-chain property access, so any Object.prototype pollution elsewhere in the dependency tree silently routes all HTTP requests through an attacker-controlled proxy, yielding a full man-in-the-middle. The vulnerability fires on ordinary axios usage with no specific API call or configuration required; upgrade to axios 1.16.0 or later.
To resolve this comment:
Check if you use axios to make HTTP requests.
- If you're affected, upgrade this dependency to at least version 1.16.0 at website/package-lock.json.
- If you're not affected, comment
/fp we don't use this [condition]
💬 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.
|
|
||
| /@babel/plugin-transform-dynamic-import@7.24.7(@babel/core@7.24.7): | ||
| resolution: {integrity: sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==} | ||
| '@babel/plugin-transform-modules-systemjs@7.28.5': |
There was a problem hiding this comment.
High severity vulnerability may affect your project—review required:
Line 536 lists a dependency (@babel/plugin-transform-modules-systemjs) with a known High severity vulnerability.
ℹ️ Why this matters
Affected versions of @babel/plugin-transform-modules-systemjs are vulnerable to Access of Resource Using Incompatible Type ('Type Confusion') / Improper Control of Generation of Code ('Code Injection'). @babel/plugin-transform-modules-systemjs mishandles module string specifiers when compiling code into SystemJS module form. An attacker who can supply specially crafted source code to a Babel build that uses this plugin (directly, or transitively via @babel/preset-env configured with modules: "systemjs") can cause Babel to emit output that executes arbitrary JavaScript when the compiled bundle is loaded.
To resolve this comment:
Check if you install @babel/plugin-transform-modules-systemjs plugin through cli, or use @babel/preset-env preset with modules set to "systemjs".
- If you're affected, upgrade this dependency to at least version 7.29.4 at website/pnpm-lock.yaml.
- If you're not affected, comment
/fp we don't use this [condition]
💬 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.
| "@babel/core": "^7.0.0-0" | ||
| } | ||
| }, | ||
| "node_modules/@babel/plugin-transform-modules-systemjs": { |
There was a problem hiding this comment.
High severity vulnerability may affect your project—review required:
Line 1289 lists a dependency (@babel/plugin-transform-modules-systemjs) with a known High severity vulnerability.
ℹ️ Why this matters
Affected versions of @babel/plugin-transform-modules-systemjs are vulnerable to Access of Resource Using Incompatible Type ('Type Confusion') / Improper Control of Generation of Code ('Code Injection'). @babel/plugin-transform-modules-systemjs mishandles module string specifiers when compiling code into SystemJS module form. An attacker who can supply specially crafted source code to a Babel build that uses this plugin (directly, or transitively via @babel/preset-env configured with modules: "systemjs") can cause Babel to emit output that executes arbitrary JavaScript when the compiled bundle is loaded.
To resolve this comment:
Check if you install @babel/plugin-transform-modules-systemjs plugin through cli, or use @babel/preset-env preset with modules set to "systemjs".
- If you're affected, upgrade this dependency to at least version 7.29.4 at website/package-lock.json.
- If you're not affected, comment
/fp we don't use this [condition]
💬 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.
Brings the setup wizard branch up to date with master (498 commits). Resolves merge conflicts preserving setup wizard additions alongside master's v3 improvements, removing accidental v2 regressions from the PR diff. Key conflict resolutions: - CI workflows: adopt master's target-branch and GOWORK=off env - docs/astro.config.mjs: keep v3.wails.io URL + setup's @components alias - v3/cmd/wails3/main.go: keep flags.Doctor (--json) + add doctor-ng from master - Taskfile.tmpl.yml: merge -obfuscated (master) + -i UseInterfaces (setup) - doctor.go: use master's git.HeadHash (go-git was removed in master)
- init_test.go: rename misleading test case — copyright IS normalized by applyGlobalDefaults even when global defaults are empty - sign.go: fix resolveSigningDefaults early-return to also check Entitlements; previously --identity + --keychain-profile would skip filling in the default entitlements file from ~/.config/wails/defaults.yaml - wizard.go: reset PullStatus to "pulling" before Docker CLI fallback so the SSE stream stays open and handleClose correctly detects the active build - wizard.go: propagate LoadGlobalDefaults/SaveGlobalDefaults errors in handleNotarizeCreate; return success:false instead of silently swallowing them - SigningStep.tsx: add loadError state — show retry button when initial data load fails instead of leaving users on a blank/stuck screen - SigningStep.tsx: add saveError state — show error message inline when saving signing config fails - SigningStep.tsx: gate macOS notarization flow to mac hosts only; non-mac users get a Save button that writes config and returns to status view, since handleNotarizeCreate rejects non-darwin hosts anyway - Dockerfile.cross: add SHA-256 verification for Zig download by fetching the expected hash from Zig's official download manifest before extracting
|
Closing in favour of #5601, which is rebased on current master with all merge conflicts resolved and review comments addressed. The diff here was unreadable due to the branch being 498 commits behind. |
* feat(setup): add splash landing page with scrolling background - Add 'splash' step as the initial wizard page - Scrolling montage background with Wails app screenshots - Centered logo with red glow effect - Apple-style welcome text - Footer with theme toggle, sponsor link, and Get Started button - Simplified button styling (rounded-lg, no glow) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat(setup): redesign welcome page with PageTemplate layout - Add TemplateFooter with theme toggle + sponsor on left, nav on right - Redesign WelcomePage with logo on left, title/subtitle on right - Add numbered setup steps (1, 2, 3) and links bar - Footer styling now matches splash page design 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat(setup): update dependencies page to use PageTemplate layout - Add logo (80px) top left with header/subheader next to it - Footer grounded to bottom with theme toggle, sponsor, and nav buttons - Remove WelcomePage (splash now goes directly to dependencies) - Match splash page footer dimensions with template footer 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat(setup): check dependencies on page load with inline spinner - Move dependency checking from splash transition to dependencies page - Show inline spinner above deps list while checking - Show green success message above deps when all installed - Disable Next button while checking - Trigger check automatically via useEffect on page mount 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat(setup): add imageBuilt status to Docker dependency check Add imageBuilt field to DependencyStatus struct to track whether the wails-cross Docker image exists. This allows the OOBE flow to properly detect when Docker is installed but the cross-compilation image hasn't been built yet, and prompt users to set up cross-platform builds. Also moves the Docker build progress indicator to the center of the footer for better visual placement. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat(setup): add docker logo and updated build assets Add Docker logo asset and updated frontend build output files. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * test(init): add tests for applyGlobalDefaults Add comprehensive test coverage for the applyGlobalDefaults function that applies global defaults from ~/.config/wails/defaults.yaml to init options when creating new projects. Tests cover: - Template default application - Company default application - Copyright generation with year/company placeholders - Product identifier generation from prefix - Description template with {name} placeholder - Version default application - Verification that non-default values are not overridden - Combined defaults application 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(setup): use HelpURL field for clickable links in dependency messages Move URLs from Message field to HelpURL field on Windows and Darwin so the frontend can render them as clickable links. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(setup/windows): refresh PATH from registry before checking dependencies On Windows, when software is installed, the PATH environment variable is updated in the registry but running processes still have the old PATH. This adds a refreshPath() function that reads the current PATH from both system and user registry keys before checking for npm and docker. This allows "Check Again" to work without restarting setup. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(setup): always show cross-platform page in wizard Show the cross-platform build question regardless of Docker install status. Previously, the page was only shown when Docker was installed but the wails-cross image wasn't built. Now it's shown when: 1. Docker is not installed (user might want to install it), OR 2. Docker is installed but wails-cross image is not built 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(setup): use correct Docker SVG with container boxes, add reboot note - Replace all Docker logo SVGs with official path that includes container boxes - Add "Some platforms may require a reboot" note on Docker install page - Affects: Install Docker, Start Docker, Building image, Docker ready pages 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat(setup): merge author and project defaults into single Projects page Combine Company and Bundle ID fields into one page called "Projects" in the sidebar. Remove template selection from setup wizard as it's not needed during initial setup. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(setup): improve layout centering and add terminal-style complete page - Fix CheckingPage centering by using justify-start with pt-[30%] padding - Replace h-full with flex-1 for proper flex container sizing - Redesign CompletePage with compact terminal-style command display - Add framework logos (JavaScript, TypeScript, React, Vue, Svelte, etc.) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(setup): simplify complete page with direct docs link - Remove terminal-style command display from complete page - Remove "Read the documentation" link - Change "Start Building" button to link to first-app quickstart guide - Remove unused CopyableCommand component and handleClose function 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat(setup): add TypeScript binding style selection (interfaces vs classes) - Add new wizard step after TypeScript selection for binding style choice - Add UseInterfaces field to GlobalDefaults and pass through to templates - Update Taskfile template to conditionally add -i flag for interfaces - Improve button positioning to match SplashPage layout - Remove "This sets the default template" text from template page - Fix overflow issues when resizing window 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(setup): improve light mode styling and add Docker progress to sidebar - Move Docker build progress indicator to sidebar (above bottom icons) - Fix light mode text colors in ProjectsPage settings rows - Add light mode CSS variants for settings-group and settings-row - Improve button positioning consistency across pages 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(setup): improve light mode styling for language and framework cards - Update language selection cards with light mode text colors - Update framework/template cards with light mode backgrounds and borders - Use text-gray-900 dark:text-white pattern for proper contrast - Add bg-gray-100 dark:bg-white/5 for unselected card backgrounds 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix: use real macOS SDK version 26.1 with robust download * feat(setup): add real-time Docker pull progress via Docker Engine API - Use Docker Engine API for accurate download progress with byte counts - Add SSE streaming for smooth real-time UI updates (replaces polling) - Show toast notification when Docker completes in background mode - Fix progress calculation to use bytes instead of layer count - Fix framework selection border clipping with padding - Pull pre-built image from ghcr.io/wailsapp/wails-cross instead of building locally * chore: remove wails3 binary from tracking * feat(init): add lipgloss TUI styling and show global config defaults - Add lipgloss-based styling (term/styles.go) with Wails brand colors - Update init output to show Framework, Language, Bindings from config - Display '(default)' suffix for values from global config - Add Framework/Language fields to defaults for cleaner config - New minimal banner style: 'Wails v3.x.x › Command' * feat(setup): add code signing configuration and status display - Add SigningDefaults to GlobalDefaults for macOS/Windows/Linux signing config - Add signing status section to doctor command with platform detection - Add --json flag to doctor command for machine-readable output - Add /api/signing and /api/signing/status endpoints to setup wizard - Add SigningStep component with platform tabs and status indicators - Wire signing step into wizard flow after projects step The signing step shows detected signing identities from: - macOS: keychain codesigning identities, notarization config - Windows: certificate file/store/cloud, SignTool availability - Linux: GPG keys from keyring or config * feat(setup): add signing configuration forms with inline platform icons - Add Configure button for each platform that opens a form - Add configuration forms for macOS (identity, team ID, notarization profile) - Add configuration forms for Windows (certificate path, thumbprint, timestamp) - Add configuration forms for Linux (GPG key ID, key path) - Use inline SVGs for platform icons (same as CrossPlatformPage) - Forms save to defaults.yaml via /api/signing endpoint - Include helpful command hints for finding signing identities * feat(setup): improve macOS signing UX for non-Mac hosts - Detect host OS and show platform-appropriate guidance - On Mac: show 'security find-identity' and 'xcrun notarytool' commands - On Linux/Windows: show rcodesign info and P12 certificate path field - Add App Store Connect API fields for cross-platform notarization - Link to Apple docs for API key creation - Disable keychain profile field on non-Mac (not applicable) * feat(setup): add documentation, bug reporting, and improve dependency detection - Add user-facing documentation at docs/getting-started/setup.mdx - Remove internal design storyboard (docs/setup-wizard-storyboard.md) - Wire up main `wails3 setup` command in CLI - Add experimental warning with link to feedback issue #4904 - Add "Report Bug" button in wizard sidebar with clipboard template - Fix npm detection on Linux to check PATH, not just package manager - Use term.Warning and term.Hyperlink for styled terminal output Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * docs: update installation guide to recommend wails3 setup - Add tip about setup wizard in Dependencies section - Add "Next Steps" section recommending `wails3 setup` - Keep manual installation as fallback option - Link to setup guide and feedback issue Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * docs: add wails3 setup to home page and quick-start guide - Add setup step to quickstart code blocks on home page - Add setup to TL;DR section in quick-start/installation - Add new step 4 "Run Setup Wizard" with experimental warning - Link to feedback issue #4904 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * docs: simplify setup guide with two-step quick start Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * docs: add first project steps to setup guide Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * docs: simplify home page quickstart to two-step format Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * docs: add Desktop/Server text morphing effect on home page Adds CSS animation that morphs between "Desktop" and "Server" text to highlight the new server mode feature. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * docs: improve text morphing with multiple transitions in tagline - Morphs "desktop" to "server" in the hero tagline - 4 transition types: fade, blur, scale, slide - Random transition selection - Random interval 3-5 seconds - Fixed width to prevent layout shift - Slow 0.8s transitions Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * docs: center morphing text within fixed-width container Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * docs: add Desktop/Server morph effect and clean up changelog - Add MorphText component for animated title text morphing - Title morphs between "Desktop" and "Server" with fade/blur/scale effects - Add humorous footnote to "No browsers*" tagline - Add Vite alias for component imports in MDX - Clean up UNRELEASED_CHANGELOG to only show setup wizard changes Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix: address CodeRabbit review feedback - Use fileURLToPath for Vite alias in astro.config.mjs - Add gcompat to Alpine Dockerfiles for Zig glibc compatibility - Add conditional check for UseInterfaces in applyGlobalDefaults - Expand REG_EXPAND_SZ registry values in Windows PATH refresh - Route Header/Section output through pterm to honor DisableOutput Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix: address CodeRabbit minor review feedback - Add BuildKit syntax directive to Dockerfiles for heredoc support - Log warning when defaults.Load() fails in signing check - Use errors.Is(err, io.EOF) instead of string comparison - Clean up temp SDK file after Docker build copies it - Guard against short/empty rows in RenderTable to prevent panics Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * chore: remove TODO.md planning doc Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Remove local SDK upload from setup wizard - Replace "Use local file" upload with "Build your own" docs link - Remove handleDockerBuildWithSDK endpoint and startDockerBuildLocal - Remove embedded Dockerfile.cross files (now documented inline) - Add comprehensive "Build Your Own Image" documentation section - Clean up unused imports (bufio, strconv) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Improve wizard UX and fix CodeRabbit issues - Add docker-options intermediate step with two choices: - "Download official image" (red outline) → SDK license → download - "Build your own image" (gray outline) → opens docs in new tab - Update SDK license page to match other pages (back button at bottom) - Add Wails favicon to wizard - Fix shutdown channel panic on repeated /api/close (sync.Once guard) - Fix Go version parsing for beta/rc versions like go1.25beta1 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Reset stale Docker pull state when starting new pull Clear PullError, BytesTotal, BytesDone, LayerCount, LayersDone, and dockerBuildLogs when starting a new Docker pull to prevent stale UI state. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Update Build your own link to v3.wails.io Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Fix Docker image name and stream error handling - Use shared crossImageName constant in platform-specific wizard files - Return error on non-EOF decode failures to trigger CLI fallback Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Remove duplicate public/ dir and unused showcase images - Add public/ to .gitignore (dist/ already contains copied files) - Remove unused showcase images (only montage.png is used) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Fix CodeRabbit review comments - Fix .gitignore: track public/ (source), ignore dist/ (build output) - Apply beta/rc Go version parsing fix to Linux and Darwin - Surface LoadGlobalDefaults error in signing status response Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Remove unused formatBytes function Only formatBytesMB is used in the codebase. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Fix CORS and Docker API error handling - Remove unnecessary Access-Control-Allow-Origin: * from SSE endpoint (UI is served same-origin, no CORS needed) - Return error when Docker API reports event.Error to trigger CLI fallback Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Fix CI: restore dist/ for Go embed directive The Go embed directive requires frontend/dist/* to exist at build time. Reverting .gitignore change - dist/ must be tracked for CI to pass. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Document Docker API version and fallback behavior Add comment explaining that pullViaDockerAPI uses API v1.44 (Docker 25.0+) and that older versions gracefully fall back to CLI-based pulling. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(setup): macOS signing and notarization improvements - Deduplicate signing identities from keychain in wizard and doctor - Auto-detect and pre-populate signing identity and Team ID from keychain - Show single identity as static text, dropdown only for multiple - Add notarization profile creation flow (two-step inner wizard) - Create profiles via xcrun notarytool store-credentials with validation - Remove config source pills from signing status display - Make header scrollable in signing step for more content space - Hide outer navigation when inside signing config flow - Resolve signing identity and keychain profile from defaults.yaml in `wails3 tool sign` when flags are not provided - Simplify darwin Taskfile to use wails3 tool sign without manual vars Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(init): apply UseInterfaces from global defaults correctly The UseInterfaces flag had default:"true", so the condition `!options.UseInterfaces` was never true - meaning global defaults could never set UseInterfaces=false. Fix by always applying the global defaults value for UseInterfaces, making `wails3 setup` the authoritative source for this preference. Addresses: #4906 (comment) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Potential fix for code scanning alert no. 176: Workflow does not contain permissions Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> * fix(ci): add top-level permissions to build-cross-image workflow Add explicit permissions block (contents: read, packages: write) at the workflow level so all jobs have restricted GITHUB_TOKEN scope. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(setup): address three Linux wizard QA issues Issue A: checkGo() now detects GOTOOLCHAIN (go env GOTOOLCHAIN ≠ "off") and scans the module cache for a downloaded go1.25+ toolchain. Users who installed wails3 via GOTOOLCHAIN auto-download will see "installed" rather than "needs_update" for Go. Issue B: gcc version now comes from `gcc --version` (e.g. "13.3.0") instead of the build-essential meta-package version ("12.10ubuntu1"). Issue C: ProjectDefaults string fields gain omitempty YAML/JSON tags so a partial POST to /api/defaults does not zero out CopyrightTemplate, DescriptionTemplate, DefaultVersion, etc. in the saved YAML. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Co-authored-by: multica-agent <github@multica.ai> * fix(setup): address code review issues in wizard Linux fixes - findToolchainGo: use GOMODCACHE instead of GOPATH+/pkg/mod to handle custom GOMODCACHE env var and multi-entry GOPATH values correctly - findToolchainGo: scan for toolchain@v*-go* (not toolchain@v0.0.1-go*) so the detection stays correct if golang.org/toolchain is re-versioned - POST /api/defaults: load existing defaults before decoding request body so fields absent from the partial POST retain their saved values (merge semantics) rather than being zeroed (replace semantics) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Co-authored-by: multica-agent <github@multica.ai> * fix(setup): address code review issues - init_test.go: rename misleading test case — copyright IS normalized by applyGlobalDefaults even when global defaults are empty - sign.go: fix resolveSigningDefaults early-return to also check Entitlements; previously --identity + --keychain-profile would skip filling in the default entitlements file from ~/.config/wails/defaults.yaml - wizard.go: reset PullStatus to "pulling" before Docker CLI fallback so the SSE stream stays open and handleClose correctly detects the active build - wizard.go: propagate LoadGlobalDefaults/SaveGlobalDefaults errors in handleNotarizeCreate; return success:false instead of silently swallowing them - SigningStep.tsx: add loadError state — show retry button when initial data load fails instead of leaving users on a blank/stuck screen - SigningStep.tsx: add saveError state — show error message inline when saving signing config fails - SigningStep.tsx: gate macOS notarization flow to mac hosts only; non-mac users get a Save button that writes config and returns to status view, since handleNotarizeCreate rejects non-darwin hosts anyway - Dockerfile.cross: add SHA-256 verification for Zig download by fetching the expected hash from Zig's official download manifest before extracting * chore(docs): remove generated d2 SVGs — not related to setup wizard These are astro-d2 build artifacts committed accidentally from a local docs build. They don't exist in master and have no connection to the setup wizard feature. The deployment pipeline regenerates them. * fix(docs): remove invalid MDX anchor syntax from cross-platform heading * docs: add manual setup guide link below quickstart on index page * fix(docs): point manual setup hint to /quick-start/installation (not 404) * fix(setup): address code review comments - Dockerfile.cross: add python3 to apt-get (required for Zig SHA lookup) - Taskfile.tmpl.yml: only emit -i when both UseInterfaces and Typescript are true - init.go: don't override --useinterfaces=false with global defaults - doctor.go: sort dependency keys; use fixed order for signing table rows - wizard.go: pass notarytool password via stdin, not --password arg - SigningStep.tsx: return boolean from handleSave; callers use return value instead of reading stale saveError state - term.go: DisableColor() now also disables lipgloss ANSI via termenv.Ascii - build-cross-image.yml: narrow packages:write to build job only - docs: fix /docs/ prefix on internal links in setup/installation pages - docs: note SDK version must be replaced in "Use Your Own SDK" snippet * fix(wizard): add allowlist to install endpoint and remove Windows dead code - handleInstallDependency now validates the command executable against an allowlist of known package managers (apt, brew, winget, pacman, etc.) and additionally validates the sudo subcommand, preventing an adversarial local process from invoking arbitrary binaries through the wizard API. - pullViaDockerAPI now returns early on Windows instead of deferring the error to a DialContext closure that could never succeed, removing the unreachable socketPath assignment for Windows named pipes. --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com> Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> Co-authored-by: Engineer - Linux (Multica Agent) <agent-engineer-linux@multica.ai> Co-authored-by: multica-agent <github@multica.ai> Co-authored-by: taliesin <bot@taliesin.ai>
Summary
Adds an experimental interactive setup wizard (
wails3 setup) that guides users through:The wizard runs in the browser and saves configuration to
~/.config/wails/config.yaml.Also includes:
wails3 setup signingandwails3 setup entitlementssub-commands--jsonflag forwails3 doctor(machine-readable output)wails3 doctorScreenshots
The wizard provides a step-by-step browser UI for configuration.
Test plan
wails3 setupon Linux - verify dependency detection and Docker setupwails3 setupon macOS - verify Xcode tools and signing detectionwails3 setupon Windows - verify WebView2 and signing detectionwails3 doctor --jsonoutputs valid JSONwails3 initNotes
🤖 Generated with Claude Code
Summary by CodeRabbit
New Features
Documentation
Bug Fixes
Tests