feat(packaging): add Windows winget manifest (fixes #524)

Adds winget manifest files for publishing beads to Windows Package Manager:
- winget/SteveYegge.beads.yaml (version manifest)
- winget/SteveYegge.beads.installer.yaml (installer config)
- winget/SteveYegge.beads.locale.en-US.yaml (package metadata)
- scripts/update-winget.sh (helper script for updating manifests)

Once submitted to microsoft/winget-pkgs, users can install with:
  winget install SteveYegge.beads

The update-winget.sh script automates manifest updates for new releases.

Closes #524

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Steve Yegge
2025-12-20 03:38:31 -08:00
parent c988b171e8
commit 5892a826fc
5 changed files with 201 additions and 0 deletions

109
scripts/update-winget.sh Executable file
View File

@@ -0,0 +1,109 @@
#!/bin/bash
#
# Update winget manifest files for a new release
#
# Usage: ./scripts/update-winget.sh <version>
# Example: ./scripts/update-winget.sh 0.31.0
#
set -e
VERSION="${1:-}"
if [ -z "$VERSION" ]; then
echo "Usage: $0 <version>"
echo "Example: $0 0.31.0"
exit 1
fi
# Remove 'v' prefix if present
VERSION="${VERSION#v}"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
WINGET_DIR="$SCRIPT_DIR/../winget"
# Get SHA256 from release checksums
echo "Fetching SHA256 for v$VERSION..."
SHA256=$(curl -sL "https://github.com/steveyegge/beads/releases/download/v$VERSION/checksums.txt" | grep windows | awk '{print $1}')
if [ -z "$SHA256" ]; then
echo "Error: Could not find Windows checksum for v$VERSION"
echo "Make sure the release exists: https://github.com/steveyegge/beads/releases/tag/v$VERSION"
exit 1
fi
# Convert to uppercase for winget
SHA256=$(echo "$SHA256" | tr '[:lower:]' '[:upper:]')
echo "SHA256: $SHA256"
echo ""
echo "Updating manifest files..."
# Update version manifest
cat > "$WINGET_DIR/SteveYegge.beads.yaml" << EOF
# yaml-language-server: \$schema=https://aka.ms/winget-manifest.version.1.6.0.schema.json
PackageIdentifier: SteveYegge.beads
PackageVersion: $VERSION
DefaultLocale: en-US
ManifestType: version
ManifestVersion: 1.6.0
EOF
# Update installer manifest
cat > "$WINGET_DIR/SteveYegge.beads.installer.yaml" << EOF
# yaml-language-server: \$schema=https://aka.ms/winget-manifest.installer.1.6.0.schema.json
PackageIdentifier: SteveYegge.beads
PackageVersion: $VERSION
InstallerType: zip
NestedInstallerType: portable
NestedInstallerFiles:
- RelativeFilePath: bd.exe
PortableCommandAlias: bd
Installers:
- Architecture: x64
InstallerUrl: https://github.com/steveyegge/beads/releases/download/v$VERSION/beads_${VERSION}_windows_amd64.zip
InstallerSha256: $SHA256
ManifestType: installer
ManifestVersion: 1.6.0
EOF
# Update locale manifest
cat > "$WINGET_DIR/SteveYegge.beads.locale.en-US.yaml" << EOF
# yaml-language-server: \$schema=https://aka.ms/winget-manifest.defaultLocale.1.6.0.schema.json
PackageIdentifier: SteveYegge.beads
PackageVersion: $VERSION
PackageLocale: en-US
Publisher: Steve Yegge
PublisherUrl: https://github.com/steveyegge
PublisherSupportUrl: https://github.com/steveyegge/beads/issues
Author: Steve Yegge
PackageName: beads
PackageUrl: https://github.com/steveyegge/beads
License: MIT
LicenseUrl: https://github.com/steveyegge/beads/blob/main/LICENSE
Copyright: Copyright (c) 2024 Steve Yegge
ShortDescription: Distributed, git-backed graph issue tracker for AI agents
Description: |
beads (bd) is a distributed, git-backed graph issue tracker designed for AI-supervised coding workflows.
It provides a persistent, structured memory for coding agents, replacing messy markdown plans with a
dependency-aware graph that allows agents to handle long-horizon tasks without losing context.
Moniker: bd
Tags:
- issue-tracker
- ai
- coding-assistant
- git
- cli
- developer-tools
ReleaseNotesUrl: https://github.com/steveyegge/beads/releases/tag/v$VERSION
ManifestType: defaultLocale
ManifestVersion: 1.6.0
EOF
echo ""
echo "✓ Updated winget manifests for v$VERSION"
echo ""
echo "Next steps:"
echo "1. Commit these changes"
echo "2. Fork https://github.com/microsoft/winget-pkgs"
echo "3. Copy winget/*.yaml to manifests/s/SteveYegge/beads/$VERSION/"
echo "4. Submit PR to microsoft/winget-pkgs"

43
winget/README.md Normal file
View File

@@ -0,0 +1,43 @@
# Windows Package Manager (winget) Manifest
This directory contains the winget manifest files for publishing beads to the Windows Package Manager.
## Installation (once published)
```powershell
winget install SteveYegge.beads
```
## Manifest Files
- `SteveYegge.beads.yaml` - Version manifest (main file)
- `SteveYegge.beads.installer.yaml` - Installer configuration
- `SteveYegge.beads.locale.en-US.yaml` - Package description and metadata
## Submitting to winget-pkgs
1. Fork https://github.com/microsoft/winget-pkgs
2. Create directory: `manifests/s/SteveYegge/beads/<version>/`
3. Copy the three manifest files to that directory
4. Submit a PR to microsoft/winget-pkgs
Or use the wingetcreate tool:
```powershell
wingetcreate update SteveYegge.beads --version <new-version> --urls <new-url> --submit
```
## Updating for New Releases
When releasing a new version:
1. Update the version in all three manifest files
2. Update the InstallerUrl in the installer manifest
3. Update the InstallerSha256 (get from checksums.txt in the release)
4. Update the ReleaseNotesUrl
5. Submit PR to microsoft/winget-pkgs
### Getting the SHA256
```bash
curl -sL https://github.com/steveyegge/beads/releases/download/v<VERSION>/checksums.txt | grep windows
```

View File

@@ -0,0 +1,14 @@
# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.6.0.schema.json
PackageIdentifier: SteveYegge.beads
PackageVersion: 0.30.7
InstallerType: zip
NestedInstallerType: portable
NestedInstallerFiles:
- RelativeFilePath: bd.exe
PortableCommandAlias: bd
Installers:
- Architecture: x64
InstallerUrl: https://github.com/steveyegge/beads/releases/download/v0.30.7/beads_0.30.7_windows_amd64.zip
InstallerSha256: 91A3D0799533DE8FA9AAB6415B8A57BDD542C59A21805FBF80A559A53F3CD02E
ManifestType: installer
ManifestVersion: 1.6.0

View File

@@ -0,0 +1,29 @@
# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.6.0.schema.json
PackageIdentifier: SteveYegge.beads
PackageVersion: 0.30.7
PackageLocale: en-US
Publisher: Steve Yegge
PublisherUrl: https://github.com/steveyegge
PublisherSupportUrl: https://github.com/steveyegge/beads/issues
Author: Steve Yegge
PackageName: beads
PackageUrl: https://github.com/steveyegge/beads
License: MIT
LicenseUrl: https://github.com/steveyegge/beads/blob/main/LICENSE
Copyright: Copyright (c) 2024 Steve Yegge
ShortDescription: Distributed, git-backed graph issue tracker for AI agents
Description: |
beads (bd) is a distributed, git-backed graph issue tracker designed for AI-supervised coding workflows.
It provides a persistent, structured memory for coding agents, replacing messy markdown plans with a
dependency-aware graph that allows agents to handle long-horizon tasks without losing context.
Moniker: bd
Tags:
- issue-tracker
- ai
- coding-assistant
- git
- cli
- developer-tools
ReleaseNotesUrl: https://github.com/steveyegge/beads/releases/tag/v0.30.7
ManifestType: defaultLocale
ManifestVersion: 1.6.0

View File

@@ -0,0 +1,6 @@
# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.6.0.schema.json
PackageIdentifier: SteveYegge.beads
PackageVersion: 0.30.7
DefaultLocale: en-US
ManifestType: version
ManifestVersion: 1.6.0