Skip to content

Add winget package manifests and release workflow - #12

Merged
setoelkahfi merged 6 commits into
developmentfrom
feature/winget-support
Oct 13, 2026
Merged

setoelkahfi merged 6 commits into
developmentfrom
feature/winget-support

Conversation

@setoelkahfi

@setoelkahfi setoelkahfi commented Oct 11, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Adds winget (Windows Package Manager) distribution support for splitfire-agent.

What's included

  • packaging/winget/ — three manifest templates (.yaml.in):

    • SplitFireAI.splitfire-agent.yaml — version manifest
    • SplitFireAI.splitfire-agent.installer.yaml — installer manifest (zip + portable exe, x64)
    • SplitFireAI.splitfire-agent.locale.en-US.yaml — English locale manifest
    • Placeholders: @VERSION@, @TAG@, @SHA_X64@, @RELEASE_DATE@
  • .github/workflows/release.yml — appended a checksums job that collects per-platform .sha256 sidecar files, concatenates them into checksums.txt, and uploads it as a release asset.

  • .github/workflows/release-winget.yml — manually triggered workflow (workflow_dispatch with a tag input) that:

    1. Downloads checksums.txt from the release and extracts the x64 SHA256
    2. Checks whether SplitFireAI.splitfire-agent already exists in microsoft/winget-pkgs
    3. First submission: files the Package Request issue, renders the manifest templates and runs wingetcreate submit
    4. Subsequent releases: runs wingetcreate update to bump the version and re-hash

Required secrets

The workflow files a Package Request issue first, then opens the manifest PR, under two separate PATs:

  • WINGET_ISSUE_TOKEN: public_repo. Files the [Package Request]: issue on microsoft/winget-pkgs.
  • WINGET_PR_TOKEN: public_repo, read:org and read:discussion. Lets wingetcreate fork microsoft/winget-pkgs and open the PR, and lets gh pr edit rewrite the PR body with Resolves #N.

Each step stops with an error naming the secret if it is missing.

setoelkahfi and others added 2 commits October 11, 2026 19:04
Hosts decide what stems mean through a client-supplied demucs MCP
server, or by returning no built-in servers from their Profile. The
README and AGENTS.md now say so, and name the two result shapes the
stem hooks read.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- packaging/winget/SplitFireAI.splitfire-agent.{yaml,installer,locale.en-US}.yaml.in:
  manifest templates with @Version@/@SHA_X64@/@RELEASE_DATE@ placeholders
- .github/workflows/release.yml: append checksums job that concatenates all
  per-platform SHA256 files into a combined checksums.txt and uploads it as a
  release asset (required by the winget workflow)
- .github/workflows/release-winget.yml: manually triggered workflow that
  extracts the x64 SHA256 from checksums.txt, detects whether the package
  already exists in winget-pkgs, and either submits a new package via
  `wingetcreate submit` or updates an existing one via `wingetcreate update`

Co-Authored-By: siGit Code v1.6.7-acp <noreply@sigit.si>
@sigit-code-review

Copy link
Copy Markdown

siGit Code Review is paused because the linked siGit account has reached its monthly cloud allowance. On siGit Code Unlimited, reviews don't count toward it: https://sigit.si/billing

Split the single WINGET_TOKEN into WINGET_ISSUE_TOKEN (files the
tracking issue under one identity) and WINGET_PR_TOKEN (opens and edits
the manifest PR under another), matching the winget-pkgs submission
convention. The new link step ties the PR back to the issue and ticks
the submission checklist.

Co-Authored-By: siGit Code v1.6.7-acp <noreply@sigit.si>
@sigit-code-review

Copy link
Copy Markdown

siGit Code Review is paused because this GitHub App installation is not linked to a siGit account. Link it at https://sigit.si/settings to resume reviews.

@setoelkahfi setoelkahfi self-assigned this Oct 12, 2026
@setoelkahfi
setoelkahfi requested a review from paydii October 12, 2026 19:18
setoelkahfi and others added 2 commits October 13, 2026 13:51
…r winget

winget's validator runs the bare exe on a console and expects exit 0, and the
exe has to load on a machine without the VC++ redistributable.

- Link the MSVC runtime statically on Windows and fail the release build if the
  exe still imports vcruntime or ucrt DLLs (packaging/windows/check-static-crt.ps1).
- Put splitfire-agent.exe at the zip root so it matches RelativeFilePath.
- Print the missing-API-key hint and exit 0 when the TUI is launched bare.
- File the winget-pkgs issue from the Package Request form fields, wait a few
  minutes, then open the PR with "Resolves #N". WINGET_PR_TOKEN needs read:org
  and read:discussion for the PR body edit.
- Move the manifests to schema 1.12.0 and set License to Apache-2.0.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

@sigit-code-review sigit-code-review Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This change adds Windows Package Manager (winget) support for splitfire-agent. It introduces winget manifest templates with placeholders, a new release workflow for winget submission (handling both first-time and update flows), and a checksums job in the main release workflow to produce a combined checksums.txt. The build is now checked for static CRT linkage on Windows to avoid runtime DLL dependencies. The main binary exits successfully (code 0) if no API key is configured, to satisfy winget validation. Documentation is updated to clarify agent embedding and stem separation. All earlier findings were about review system state, not code, so this is the first substantive review.


Automated review by siGit Code Review · commit 2271a56 · see the review dashboard

Comment thread .github/workflows/release-winget.yml
Comment thread .github/workflows/release-winget.yml
Comment thread .github/workflows/release.yml
Comment thread src/main.rs

@sigit-code-review sigit-code-review Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Comment thread .github/workflows/release-winget.yml Outdated
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

@sigit-code-review sigit-code-review Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This change adds Windows Package Manager (winget) support for splitfire-agent. It introduces three manifest templates under packaging/winget/ for version, installer, and locale, with placeholders for version, tag, SHA, and release date. The new .github/workflows/release-winget.yml workflow automates both first-time and update submissions to winget-pkgs, handling both the Package Request issue and the manifest PR using two separate PATs. The main release workflow (.github/workflows/release.yml) is updated to generate and upload a checksums.txt file, and to verify that the Windows binary is statically linked to the CRT (using a new PowerShell script). Documentation is updated to clarify agent embedding and stem handling. All previously raised findings have been addressed, including secret documentation, error handling, and platform-specific details. No new critical or warning issues are introduced in this diff.


Automated review by siGit Code Review · commit 8f530e2 · see the review dashboard

@setoelkahfi
setoelkahfi requested a review from paydii October 13, 2026 12:12
@setoelkahfi
setoelkahfi merged commit 317a69b into development Oct 13, 2026
2 checks passed
@setoelkahfi
setoelkahfi deleted the feature/winget-support branch October 13, 2026 12:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants