Skip to content

Commit 1fc047a

Browse files
authored
Merge branch 'main' into nm/sample-tests
2 parents 355fa72 + b2e2d56 commit 1fc047a

200 files changed

Lines changed: 1233 additions & 2642 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/actions/collect-metrics/action.yml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,15 @@ runs:
1818
$artifacts = "${{ inputs.artifacts-path }}"
1919
$sizes = @{}
2020
21-
$x64Exe = Get-Item "$artifacts/cli/win-x64/winapp.exe" -ErrorAction SilentlyContinue
22-
$arm64Exe = Get-Item "$artifacts/cli/win-arm64/winapp.exe" -ErrorAction SilentlyContinue
21+
# Sum all files excluding PDBs to get total CLI distribution size
22+
$x64Files = Get-ChildItem "$artifacts/cli/win-x64" -File -ErrorAction SilentlyContinue | Where-Object { $_.Extension -ne '.pdb' }
23+
$arm64Files = Get-ChildItem "$artifacts/cli/win-arm64" -File -ErrorAction SilentlyContinue | Where-Object { $_.Extension -ne '.pdb' }
2324
$npmPkg = Get-ChildItem "$artifacts/*.tgz" -ErrorAction SilentlyContinue | Select-Object -First 1
2425
$msixX64 = Get-ChildItem "$artifacts/msix-packages/*x64*.msix" -ErrorAction SilentlyContinue | Select-Object -First 1
2526
$msixArm64 = Get-ChildItem "$artifacts/msix-packages/*arm64*.msix" -ErrorAction SilentlyContinue | Select-Object -First 1
2627
27-
if ($x64Exe) { $sizes["cli-win-x64"] = $x64Exe.Length }
28-
if ($arm64Exe) { $sizes["cli-win-arm64"] = $arm64Exe.Length }
28+
if ($x64Files) { $sizes["cli-win-x64"] = ($x64Files | Measure-Object -Property Length -Sum).Sum }
29+
if ($arm64Files) { $sizes["cli-win-arm64"] = ($arm64Files | Measure-Object -Property Length -Sum).Sum }
2930
if ($npmPkg) { $sizes["npm-package"] = $npmPkg.Length }
3031
if ($msixX64) { $sizes["msix-x64"] = $msixX64.Length }
3132
if ($msixArm64) { $sizes["msix-arm64"] = $msixArm64.Length }

.github/plugin/agents/winapp.agent.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -143,9 +143,9 @@ Does the project already have an appxmanifest.xml?
143143
- `--logo-path` — source image for asset generation
144144
- `--if-exists error|skip|overwrite`
145145

146-
### `winapp manifest update-assets <image-path>`
147-
**Purpose:** Regenerate all required icon sizes from a single source image.
148-
**When to use:** When updating your app icon. Source image should be at least 400×400 pixels.
146+
### `winapp manifest update-assets <image-path> [--light-image <path>]`
147+
**Purpose:** Regenerate all required icon sizes, scale variants, and app.ico from a single source image (PNG, SVG, ICO, etc.).
148+
**When to use:** When updating your app icon. Source image should be at least 400×400 pixels. SVG recommended for best quality. Use `--light-image` for light theme variants.
149149

150150
### `winapp tool <toolname> [args...]` (alias: `winapp run-buildtool`)
151151
**Purpose:** Run Windows SDK tools directly (makeappx, signtool, makepri, etc.).

.github/plugin/plugin.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "winapp-cli",
33
"description": "Windows app development, packaging, and distribution. Helps with creating Windows installers (MSIX), code signing, certificates, Windows SDK and Windows App SDK setup, package identity for Windows APIs (push notifications, background tasks, share target), appxmanifest authoring, and Microsoft Store distribution. Supports Electron, .NET, C++, Rust, Flutter, and Tauri apps.",
4-
"version": "0.2.1",
4+
"version": "0.2.2",
55
"author": {
66
"name": "Microsoft",
77
"url": "https://github.com/microsoft/WinAppCli"

.github/plugin/skills/winapp-cli/frameworks/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
name: winapp-frameworks
33
description: Framework-specific Windows development guidance for Electron, .NET (WPF, WinForms), C++, Rust, Flutter, and Tauri. Use when packaging or adding Windows features to an Electron app, .NET desktop app, Flutter app, Tauri app, Rust app, or C++ app.
4-
version: 0.2.1
4+
version: 0.2.2
55
---
66
## When to use
77

.github/plugin/skills/winapp-cli/identity/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
name: winapp-identity
33
description: Enable Windows package identity for desktop apps to access Windows APIs like push notifications, background tasks, share target, and startup tasks. Use when adding Windows notifications, background tasks, or other identity-requiring Windows features to a desktop app.
4-
version: 0.2.1
4+
version: 0.2.2
55
---
66
## When to use
77

.github/plugin/skills/winapp-cli/manifest/SKILL.md

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
name: winapp-manifest
3-
description: Create and edit Windows app manifest files (appxmanifest.xml) that define app identity, capabilities, and visual assets. Use when creating a Windows app manifest for any app type (GUI, console, CLI tool, service), adding Windows capabilities, updating app icons and assets, or adding execution aliases, file associations, protocol handlers, or other app extensions.
4-
version: 0.2.1
3+
description: Create and edit Windows app manifest files (appxmanifest.xml) that define app identity, capabilities, and visual assets, or generate new assets from existing images. Use when creating a Windows app manifest for any app type (GUI, console, CLI tool, service), adding Windows capabilities, generating new app icons and assets, or adding execution aliases, file associations, protocol handlers, or other app extensions.
4+
version: 0.2.2
55
---
66
## When to use
77

@@ -13,7 +13,7 @@ Use this skill when:
1313
## Prerequisites
1414

1515
- winapp CLI installed
16-
- Optional: a source image (PNG, at least 400x400 pixels) for custom app icons
16+
- Optional: a source image (PNG or SVG, at least 400x400 pixels) for custom app icons
1717

1818
## Key concepts
1919

@@ -64,11 +64,24 @@ Output:
6464
# Generate all required icon sizes from one source image
6565
winapp manifest update-assets ./my-logo.png
6666
67+
# SVG source images produce the best quality at all sizes
68+
winapp manifest update-assets ./my-logo.svg
69+
6770
# Specify manifest location (if not in current directory)
6871
winapp manifest update-assets ./my-logo.png --manifest ./path/to/appxmanifest.xml
72+
73+
# Generate light theme variants from a separate image
74+
winapp manifest update-assets ./my-logo.png --light-image ./my-logo-light.png
75+
76+
# Use the same image for both (generates all MRT light theme qualifiers)
77+
winapp manifest update-assets ./my-logo.png --light-image ./my-logo.png
6978
```
7079

71-
The source image should be at least 400x400 pixels (PNG recommended). The command reads the manifest to determine which asset sizes are needed and generates them all.
80+
The source image should be at least 400x400 pixels (PNG or SVG recommended). The command reads the manifest to determine which asset sizes are needed and generates:
81+
- **5 scale variants** per asset (100%, 125%, 150%, 200%, 400%)
82+
- **14 plated + 14 unplated targetsize variants** for the app icon (44x44)
83+
- **app.ico** — multi-resolution ICO file for shell integration. If an existing `.ico` file is present in the assets directory, it is replaced in-place (preserving the original filename)
84+
- With `--light-image`: light theme variants using the correct MRT qualifiers per asset type
7285

7386
## Manifest structure overview
7487

@@ -113,7 +126,7 @@ Key fields to edit:
113126
- The `sparse` template adds `uap10:AllowExternalContent="true"` for apps that need identity but run outside the MSIX container
114127
- You can manually edit `appxmanifest.xml` after generation — it's a standard XML file
115128
- Image assets must match the paths referenced in the manifest — `update-assets` handles this automatically
116-
- For logos, transparent PNGs work best. Use a square image for best results across all sizes.
129+
- For logos, transparent PNGs or SVGs work best. SVG source images are rendered as vectors directly at each target size, producing pixel-perfect results. Use a square image for best results across all sizes.
117130
- **`$targetnametoken$` placeholder:** When `winapp manifest generate` creates `appxmanifest.xml`, it sets `Application.Executable` to `$targetnametoken$.exe` by default. This is a valid placeholder that gets automatically resolved by `winapp package --executable <name>` at packaging time — you rarely need to override it during manifest generation. If `--executable` is provided to `winapp manifest generate`, winapp reads `FileVersionInfo` from the actual exe to auto-fill package name, description, publisher, and extract an icon, so the exe must already exist on disk.
118131

119132
## Related skills
@@ -125,7 +138,7 @@ Key fields to edit:
125138
| Error | Cause | Solution |
126139
|-------|-------|----------|
127140
| "Manifest already exists" | `appxmanifest.xml` present | Use `--if-exists overwrite` to replace, or edit existing file directly |
128-
| "Invalid source image" | Image too small or wrong format | Use PNG, at least 400x400 pixels |
141+
| "Invalid source image" | Image too small or wrong format | Use PNG or SVG, at least 400x400 pixels |
129142
| "Publisher mismatch" during packaging | Manifest publisher ≠ cert publisher | Edit `Identity.Publisher` in manifest, or regenerate cert with `--manifest` |
130143

131144

@@ -162,10 +175,11 @@ Generate new assets for images referenced in an appxmanifest.xml from a single s
162175
<!-- auto-generated from cli-schema.json -->
163176
| Argument | Required | Description |
164177
|----------|----------|-------------|
165-
| `<image-path>` | Yes | Path to source image file |
178+
| `<image-path>` | Yes | Path to source image file (SVG, PNG, ICO, JPG, BMP, GIF) |
166179

167180
#### Options
168181
<!-- auto-generated from cli-schema.json -->
169182
| Option | Description | Default |
170183
|--------|-------------|---------|
184+
| `--light-image` | Path to source image for light theme variants (SVG, PNG, ICO, JPG, BMP, GIF) | (none) |
171185
| `--manifest` | Path to AppxManifest.xml file (default: search current directory) | (none) |

.github/plugin/skills/winapp-cli/package/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
name: winapp-package
33
description: Package a Windows app as an MSIX installer for distribution or testing. Use when creating a Windows installer, packaging an Electron/Flutter/.NET/Rust/C++/Tauri app for Windows, building an MSIX, distributing a desktop app, packaging a console app or CLI tool, or adding MSIX packaging to a build script or CI/CD pipeline.
4-
version: 0.2.1
4+
version: 0.2.2
55
---
66
## When to use
77

.github/plugin/skills/winapp-cli/setup/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
name: winapp-setup
33
description: Set up a Windows app project for MSIX packaging, Windows SDK access, or Windows API usage. Use when adding Windows support to an Electron, .NET, C++, Rust, Flutter, or Tauri project, or restoring SDK packages after cloning.
4-
version: 0.2.1
4+
version: 0.2.2
55
---
66
## When to use
77

.github/plugin/skills/winapp-cli/signing/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
name: winapp-signing
33
description: Create and manage code signing certificates for Windows apps and MSIX packages. Use when generating a certificate, signing a Windows app or installer, or fixing certificate trust issues.
4-
version: 0.2.1
4+
version: 0.2.2
55
---
66
## When to use
77

.github/plugin/skills/winapp-cli/troubleshoot/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
name: winapp-troubleshoot
33
description: Diagnose and fix common Windows app packaging, signing, identity, and SDK errors. Use when encountering errors with MSIX packaging, certificate signing, Windows SDK setup, or app installation.
4-
version: 0.2.1
4+
version: 0.2.2
55
---
66
## When to use
77

0 commit comments

Comments
 (0)