From cadd26ab994de3a1dbb97132fe0c38a34aa652fa Mon Sep 17 00:00:00 2001 From: Seto Date: Tue, 20 Oct 2026 22:09:12 +0200 Subject: [PATCH] Rename the winget package to SplitFireAI.Agent SplitFireAI.splitfire-agent repeated the publisher in the package segment. SplitFireAI.Agent follows winget's Publisher.Product convention. Nothing is merged under the old ID, so no users are affected. The exe name, command alias, moniker and zip asset name stay as they are, since those describe the binary and not the package. The release workflow also now checks for an open "New package" PR before submitting. Until the first one merges, the folder check is always false, so each dispatch opened another PR and Package Request issue for the same package. Co-Authored-By: Claude Sonnet 5.5 --- .github/workflows/release-winget.yml | 27 +++++++++++++++---- ...in => SplitFireAI.Agent.installer.yaml.in} | 2 +- ...=> SplitFireAI.Agent.locale.en-US.yaml.in} | 2 +- ...gent.yaml.in => SplitFireAI.Agent.yaml.in} | 2 +- 4 files changed, 25 insertions(+), 8 deletions(-) rename packaging/winget/{SplitFireAI.splitfire-agent.installer.yaml.in => SplitFireAI.Agent.installer.yaml.in} (93%) rename packaging/winget/{SplitFireAI.splitfire-agent.locale.en-US.yaml.in => SplitFireAI.Agent.locale.en-US.yaml.in} (96%) rename packaging/winget/{SplitFireAI.splitfire-agent.yaml.in => SplitFireAI.Agent.yaml.in} (79%) diff --git a/.github/workflows/release-winget.yml b/.github/workflows/release-winget.yml index 71fefef..14a0b96 100644 --- a/.github/workflows/release-winget.yml +++ b/.github/workflows/release-winget.yml @@ -36,7 +36,7 @@ permissions: env: REPO: SplitFireAI/splitfire-agent - PACKAGE_IDENTIFIER: SplitFireAI.splitfire-agent + PACKAGE_IDENTIFIER: SplitFireAI.Agent jobs: submit-winget-manifest: @@ -92,7 +92,7 @@ jobs: GH_TOKEN: ${{ github.token }} run: | # Manifests are filed under the lowercased first letter of the - # publisher, e.g. manifests/s/SplitFireAI/splitfire-agent. + # publisher, e.g. manifests/s/SplitFireAI/Agent. PUBLISHER="${PACKAGE_IDENTIFIER%%.*}" NAME="${PACKAGE_IDENTIFIER#*.}" FIRST=$(echo "${PUBLISHER:0:1}" | tr '[:upper:]' '[:lower:]') @@ -101,13 +101,29 @@ jobs: if gh api "repos/microsoft/winget-pkgs/contents/${PATH_IN_REPO}" >/dev/null 2>&1; then echo "Found ${PACKAGE_IDENTIFIER} at ${PATH_IN_REPO}; submitting an update." echo "found=true" >> "$GITHUB_OUTPUT" + echo "pending=false" >> "$GITHUB_OUTPUT" + exit 0 + fi + + echo "found=false" >> "$GITHUB_OUTPUT" + + # Until the first New-package PR merges the folder check above is + # always false, so without this every release would open another + # PR and Package Request issue for the same package. + OPEN_PR=$(gh pr list --repo microsoft/winget-pkgs --state open \ + --search "New package: ${PACKAGE_IDENTIFIER} in:title" \ + --json number,url --jq '.[0].url // empty') + + if [ -n "$OPEN_PR" ]; then + echo "No ${PACKAGE_IDENTIFIER} at ${PATH_IN_REPO}, but ${OPEN_PR} is already open; not submitting again." + echo "pending=true" >> "$GITHUB_OUTPUT" else echo "No ${PACKAGE_IDENTIFIER} at ${PATH_IN_REPO}; submitting it as a new package." - echo "found=false" >> "$GITHUB_OUTPUT" + echo "pending=false" >> "$GITHUB_OUTPUT" fi - name: Render manifests for a first submission - if: steps.exists.outputs.found == 'false' + if: steps.exists.outputs.found == 'false' && steps.exists.outputs.pending != 'true' shell: bash run: | TAG="${{ steps.release.outputs.tag }}" @@ -150,6 +166,7 @@ jobs: # scope error without them. - name: File the winget Package Request issue id: issue + if: steps.exists.outputs.pending != 'true' shell: bash env: GH_TOKEN: ${{ secrets.WINGET_ISSUE_TOKEN }} @@ -197,7 +214,7 @@ jobs: - name: Submit new package id: submit_new - if: steps.exists.outputs.found == 'false' + if: steps.exists.outputs.found == 'false' && steps.exists.outputs.pending != 'true' shell: pwsh env: WINGET_CREATE_GITHUB_TOKEN: ${{ secrets.WINGET_PR_TOKEN }} diff --git a/packaging/winget/SplitFireAI.splitfire-agent.installer.yaml.in b/packaging/winget/SplitFireAI.Agent.installer.yaml.in similarity index 93% rename from packaging/winget/SplitFireAI.splitfire-agent.installer.yaml.in rename to packaging/winget/SplitFireAI.Agent.installer.yaml.in index 8d728c5..8a58b54 100644 --- a/packaging/winget/SplitFireAI.splitfire-agent.installer.yaml.in +++ b/packaging/winget/SplitFireAI.Agent.installer.yaml.in @@ -1,5 +1,5 @@ # yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.12.0.schema.json -PackageIdentifier: SplitFireAI.splitfire-agent +PackageIdentifier: SplitFireAI.Agent PackageVersion: @VERSION@ InstallerType: zip # `NestedInstallerType` and `NestedInstallerFiles` tell winget where to find diff --git a/packaging/winget/SplitFireAI.splitfire-agent.locale.en-US.yaml.in b/packaging/winget/SplitFireAI.Agent.locale.en-US.yaml.in similarity index 96% rename from packaging/winget/SplitFireAI.splitfire-agent.locale.en-US.yaml.in rename to packaging/winget/SplitFireAI.Agent.locale.en-US.yaml.in index 46de6e0..0275781 100644 --- a/packaging/winget/SplitFireAI.splitfire-agent.locale.en-US.yaml.in +++ b/packaging/winget/SplitFireAI.Agent.locale.en-US.yaml.in @@ -1,5 +1,5 @@ # yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.12.0.schema.json -PackageIdentifier: SplitFireAI.splitfire-agent +PackageIdentifier: SplitFireAI.Agent PackageVersion: @VERSION@ PackageLocale: en-US Publisher: SplitFireAI diff --git a/packaging/winget/SplitFireAI.splitfire-agent.yaml.in b/packaging/winget/SplitFireAI.Agent.yaml.in similarity index 79% rename from packaging/winget/SplitFireAI.splitfire-agent.yaml.in rename to packaging/winget/SplitFireAI.Agent.yaml.in index 0d8db63..dda2d2d 100644 --- a/packaging/winget/SplitFireAI.splitfire-agent.yaml.in +++ b/packaging/winget/SplitFireAI.Agent.yaml.in @@ -1,5 +1,5 @@ # yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.12.0.schema.json -PackageIdentifier: SplitFireAI.splitfire-agent +PackageIdentifier: SplitFireAI.Agent PackageVersion: @VERSION@ DefaultLocale: en-US ManifestType: version