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
Microsoft Store + WinGet Get Started Learn More View Releases
+
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`.