diff --git a/.gitignore b/.gitignore
index 331480ab..a6b62f75 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,6 +10,7 @@ _nupkg/
_winget-pkgs/
_winget-pr/
_winget-test/
+winget-out/
# Shared Claude hooks/settings; ignore the rest of the tree.
.claude/*
diff --git a/README.md b/README.md
index 149cb5c0..102c3aa1 100644
--- a/README.md
+++ b/README.md
@@ -281,7 +281,7 @@ The Store package is **Command Palette only**. For PowerToys Run, see [PowerToys
### Option 2: WinGet
-Two packages, same extension, different extras:
+Same extension, choose bundled (CmdPal + Run) or CmdPal only:
| Package | What you get |
| --- | --- |
@@ -292,7 +292,7 @@ Two packages, same extension, different extras:
# Bundled (CmdPal + Run)
winget install tonythethompson.QuickShell
-# CmdPal only
+# CmdPal only (Store-equivalent)
winget install tonythethompson.QuickShellforCmdPal
```
diff --git a/cmdpal-gallery/README.md b/cmdpal-gallery/README.md
index a452c4e5..9cf1fc38 100644
--- a/cmdpal-gallery/README.md
+++ b/cmdpal-gallery/README.md
@@ -11,6 +11,11 @@ Ready-to-submit package for [microsoft/CmdPal-Extensions](https://github.com/mic
Publishing to the Microsoft Store registers the extension with Command Palette, but **does not** add it to the in-app Extension Gallery. That requires a separate PR to `microsoft/CmdPal-Extensions`.
+## Install sources
+
+- Store: `9PC8S6LNRT3R`
+- WinGet: `tonythethompson.QuickShellforCmdPal` (CmdPal only; not the bundled Run package)
+
## Submit / update
Listing already lives at `extensions/tonythethompson/quickshell/` upstream. To refresh logo, screenshots, or metadata:
@@ -21,6 +26,8 @@ Listing already lives at `extensions/tonythethompson/quickshell/` upstream. To r
Manual path: fork https://github.com/microsoft/CmdPal-Extensions, replace `extensions/tonythethompson/quickshell/`, open a PR titled `Update tonythethompson.quickshell gallery listing`.
+WinGet version bumps do not need a gallery PR; the listing only stores the package ID.
+
## Gallery title note
The gallery entry uses **Quick Shell** in Command Palette. The Store listing title **Quick Shell for CmdPal** is set in Partner Center, not in the MSIX manifest (CmdPal reads package display name from the manifest).
diff --git a/cmdpal-gallery/extensions/tonythethompson/quickshell/extension.json b/cmdpal-gallery/extensions/tonythethompson/quickshell/extension.json
index 826fe30a..ed59a47a 100644
--- a/cmdpal-gallery/extensions/tonythethompson/quickshell/extension.json
+++ b/cmdpal-gallery/extensions/tonythethompson/quickshell/extension.json
@@ -29,7 +29,7 @@
},
{
"type": "winget",
- "id": "tonythethompson.QuickShell"
+ "id": "tonythethompson.QuickShellforCmdPal"
}
]
}
diff --git a/docs/assets/css/main.scss b/docs/assets/css/main.scss
index 1fd4a4f4..546fb224 100644
--- a/docs/assets/css/main.scss
+++ b/docs/assets/css/main.scss
@@ -321,6 +321,21 @@ kbd {
}
}
+.install-snippet {
+ margin: 0 0 0.5rem;
+ max-width: 36rem;
+ text-align: left;
+ font-size: 0.82rem;
+ padding: 0.9rem 1.1rem;
+}
+
+.install-snippet-note {
+ margin: 0 0 1.5rem;
+ color: $text-muted;
+ font-size: 0.85rem;
+ max-width: 36rem;
+}
+
// ── Sponsor ─────────────────────────────────────────────
.sponsor-row {
diff --git a/docs/index.md b/docs/index.md
index d1a4d5c9..ec94d5aa 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -14,11 +14,19 @@ description: Quick Shell opens saved project folders from PowerToys Command Pale
+ winget install tonythethompson.QuickShell
+winget install tonythethompson.QuickShellforCmdPal
+
+ Bundled (Command Palette + PowerToys Run), or CmdPal only (Store-equivalent).
+ More install options
+
+
### WinGet (Command Line)
+{: #winget-command-line}
+
+Both Command Palette packages are live on WinGet. Prefer the bundled ID if you also want PowerToys Run (`qs`).
```powershell
-# Command Palette + PowerToys Run
+# Command Palette + PowerToys Run (recommended for most users)
winget install tonythethompson.QuickShell
-# Command Palette only (Store-equivalent)
+# Command Palette only (same scope as Microsoft Store)
winget install tonythethompson.QuickShellforCmdPal
-# PowerToys Run only
+# PowerToys Run only (awaits initial package listing)
winget install tonythethompson.QuickShellforRun
```
diff --git a/docs/release-packages.md b/docs/release-packages.md
index f6135cf0..bc50e09c 100644
--- a/docs/release-packages.md
+++ b/docs/release-packages.md
@@ -56,7 +56,7 @@ winget install tonythethompson.QuickShellforCmdPal
winget install tonythethompson.QuickShellforRun
```
-Initial manifests for `QuickShellforCmdPal` and `QuickShellforRun` must be created in [microsoft/winget-pkgs](https://github.com/microsoft/winget-pkgs) before CI can auto-submit updates for those IDs. Until then, release CI updates **`tonythethompson.QuickShell`** (bundled) and soft-skips the missing packages. The release workflow submits updates when `WINGET_PAT` is configured.
+`tonythethompson.QuickShell` (bundled) and `tonythethompson.QuickShellforCmdPal` are published in [microsoft/winget-pkgs](https://github.com/microsoft/winget-pkgs); release CI submits version bumps for both when `WINGET_PAT` is configured. `tonythethompson.QuickShellforRun` awaits its initial package merge before CI can auto-update that ID.
The former `tonythethompson.QuickShellforRaycast` WinGet package is retired (no further CI updates). Prefer the Raycast Store.
diff --git a/scripts/submit-cmdpal-gallery.ps1 b/scripts/submit-cmdpal-gallery.ps1
index 171cf914..d804c69e 100644
--- a/scripts/submit-cmdpal-gallery.ps1
+++ b/scripts/submit-cmdpal-gallery.ps1
@@ -1,8 +1,12 @@
# Submit or update Quick Shell in the Command Palette Extension Gallery.
# Requires: gh auth login, fork of microsoft/CmdPal-Extensions
+#
+# Always creates a fresh branch from upstream main and a normal push (no force).
param(
[switch]$DryRun,
- [string]$Branch = 'update-tonythethompson-quickshell'
+ [string]$Branch = '',
+ [string]$Title = 'Update tonythethompson.quickshell gallery listing',
+ [string]$Body = ''
)
$ErrorActionPreference = 'Stop'
@@ -15,8 +19,12 @@ if (-not (Test-Path $source)) {
throw "Missing gallery source at $source"
}
+if ([string]::IsNullOrWhiteSpace($Branch)) {
+ $Branch = 'update-tonythethompson-quickshell-' + (Get-Date -Format 'yyyyMMdd-HHmmss')
+}
+
if ($DryRun) {
- Write-Host "Would sync fork $upstream, copy $source, and open PR on branch $Branch"
+ Write-Host "Would sync fork $upstream, copy $source, push branch $Branch (no force), and open a PR"
exit 0
}
@@ -41,36 +49,55 @@ if (-not $forkExists) {
}
Write-Host "Using fork: $forkRepo"
+# Sync the fork's default branch from upstream (not a branch force-push).
gh repo sync $forkRepo --source $upstream --force 2>$null
gh repo clone $forkRepo $workDir -- --depth=1
Push-Location $workDir
-git checkout -b $Branch
-$dest = Join-Path $workDir 'extensions\tonythethompson\quickshell'
-New-Item -ItemType Directory -Force -Path $dest | Out-Null
-# Replace listing contents so renamed/removed screenshots do not linger.
-Get-ChildItem -Force $dest | Remove-Item -Recurse -Force -ErrorAction SilentlyContinue
-Copy-Item -Recurse -Force (Join-Path $source '*') $dest
-git add -A extensions/tonythethompson/quickshell
-git status --short
-git commit -m "Update tonythethompson.quickshell gallery listing"
-git push -u origin $Branch --force-with-lease
-$bodyFile = Join-Path $env:TEMP 'cmdpal-gallery-pr-body.md'
-@'
+try {
+ git checkout -b $Branch
+ $dest = Join-Path $workDir 'extensions\tonythethompson\quickshell'
+ New-Item -ItemType Directory -Force -Path $dest | Out-Null
+ # Replace listing contents so renamed/removed screenshots do not linger.
+ Get-ChildItem -Force $dest | Remove-Item -Recurse -Force
+ Copy-Item -Recurse -Force (Join-Path $source '*') $dest
+ git add -A extensions/tonythethompson/quickshell
+ git status --short
+
+ if (-not (git status --porcelain)) {
+ throw 'No gallery listing changes to commit.'
+ }
+
+ git commit -m $Title
+ git push -u origin $Branch
+ if ($LASTEXITCODE -ne 0) {
+ throw "git push failed for branch $Branch (refusing to force-push)."
+ }
+
+ if ([string]::IsNullOrWhiteSpace($Body)) {
+ $Body = @"
## Summary
Updates the **Quick Shell** Command Palette Extension Gallery listing.
-- New product logo (`icon.png`, Store AppTile)
-- Screenshots refreshed for current workspace UI (list, create, settings, detail)
-- Description/tags aligned with current product language
-- Install sources unchanged: Microsoft Store `9PC8S6LNRT3R`, WinGet `tonythethompson.QuickShell`
+Describe only what this PR changes (for example logo, screenshots, copy, or install sources). Do not reuse stale bullets from a prior submission.
## Test plan
- [ ] CI schema validation passes
-- [ ] Store product ID resolves
-- [ ] Icon under 100 KB; screenshots under 1 MB each
-- [ ] Tags ≤ 5
-'@ | Set-Content -Path $bodyFile -Encoding utf8
-$prUrl = gh pr create --repo $upstream --head "${login}:$Branch" --title 'Update tonythethompson.quickshell gallery listing' --body-file $bodyFile
-Remove-Item $bodyFile -Force -ErrorAction SilentlyContinue
-Pop-Location
-Write-Host "PR opened: $prUrl"
+- [ ] Store / WinGet install source IDs resolve
+- [ ] Icon under 100 KB; screenshots under 1 MB each (when media changed)
+- [ ] Tags: at most 5
+"@
+ }
+
+ $bodyFile = Join-Path $env:TEMP 'cmdpal-gallery-pr-body.md'
+ Set-Content -Path $bodyFile -Value $Body -Encoding utf8
+ $prUrl = gh pr create --repo $upstream --head "${login}:$Branch" --title $Title --body-file $bodyFile
+ if ($LASTEXITCODE -ne 0 -or [string]::IsNullOrWhiteSpace($prUrl)) {
+ Remove-Item $bodyFile -Force -ErrorAction SilentlyContinue
+ throw 'gh pr create failed; no PR was opened.'
+ }
+ Remove-Item $bodyFile -Force -ErrorAction SilentlyContinue
+ Write-Host "PR opened: $prUrl"
+}
+finally {
+ Pop-Location
+}
diff --git a/winget/README.md b/winget/README.md
index 47ea4e2d..1202997b 100644
--- a/winget/README.md
+++ b/winget/README.md
@@ -13,12 +13,12 @@ Both installers register the same Command Palette extension (shared Inno `AppId`
Template manifests for the repo copy. Release CI runs `wingetcreate update` against both IDs after each GitHub Release.
-## First-time setup for `tonythethompson.QuickShellforCmdPal`
+## Package status
-`wingetcreate update` only works after the package exists in [microsoft/winget-pkgs](https://github.com/microsoft/winget-pkgs). Before the first release that ships `QuickShellforCmdPal-Setup-*.exe`:
+| Package ID | Status |
+| --- | --- |
+| `tonythethompson.QuickShell` | Published; CI submits version bumps |
+| `tonythethompson.QuickShellforCmdPal` | Published (initial `0.2.3.0`); CI submits version bumps |
+| `tonythethompson.QuickShellforRun` | Awaits initial package merge before CI can `wingetcreate update` |
-1. Cut a GitHub Release that includes the CmdPal-only installers.
-2. Update SHA256 values in `tonythethompson.QuickShellforCmdPal.installer.yaml`.
-3. Open a PR to winget-pkgs with the three manifest files (or run `wingetcreate new` / `wingetcreate submit`).
-
-Subsequent releases are updated automatically by `.github/workflows/release-extension.yml`.
+`wingetcreate update` only works after the package exists in [microsoft/winget-pkgs](https://github.com/microsoft/winget-pkgs). Subsequent releases for published IDs are submitted by `.github/workflows/release-extension.yml`.