Files
CodeWhale Bot be676502df feat(release): single-binary packaging follow-ups (5259/5260)
Complete 5259 single-binary sweep for packaging/docs: remove
codewhale-tui from .cnb.yml, nix, npm bin, installer, bundles,
locales, and docs/INSTALL matrix; add .winget + packaging/ manifests
(single-binary 27-asset inventory, FreeBSD source-build note) and
update release-artifacts comments from 34 to 27 assets. 27-asset
inventory verified via assemble-release-assets --verify.

Co-Authored-By: internal-model
2026-08-07 06:14:45 -07:00

3.3 KiB
Raw Permalink Blame History

winget packaging for CodeWhale

This directory holds the source winget manifest for Hmbown.CodeWhale (resolves #1561). The single-binary release (v0.9.5+) ships codewhale + codew per target — no codewhale-tui asset.

Files

  • Hmbown.CodeWhale.yaml — singleton manifest for winget install Hmbown.CodeWhale. The installers all point at the signed (or checksum-verified) GitHub Release assets for the same version (CodeWhaleSetup.exe for x64 NSIS, plus portable ZIP fallbacks for x64/arm64).
  • generate-winget-manifest.sh — bumps PackageVersion, ReleaseDate, and the four InstallerSha256 placeholders from a local release-assets/ checkout.
  • .winget/Hmbown.CodeWhale.yaml (repo root) is a verbatim mirror for tooling that expects .winget/. Keep both in sync; packaging/winget/Hmbown.CodeWhale.yaml is canonical.

Version flow

  1. Tag vX.Y.Z publishes CodeWhaleSetup.exe, codewhale-windows-x64.zip, codewhale-windows-x64-portable.zip, codewhale-windows-arm64.zip, codewhale-windows-arm64-portable.zip, and codewhale-artifacts-sha256.txt.
  2. From the release tag checkout, run:
    ./packaging/winget/generate-winget-manifest.sh X.Y.Z /path/to/release-assets
    
    It rewrites both packaging/winget/Hmbown.CodeWhale.yaml and .winget/Hmbown.CodeWhale.yaml with the fresh version and the four SHA-256 values extracted from codewhale-artifacts-sha256.txt.
  3. Validate locally with winget validate (requires winget + the manifest schema):
    winget validate --manifest packaging/winget/Hmbown.CodeWhale.yaml
    # or the Microsoft validator in winget-pkgs CI:
    # https://github.com/microsoft/winget-pkgs#validation
    
  4. Submit to microsoft/winget-pkgs via wingetcreate or a manual PR that adds manifests/h/Hmbown/CodeWhale/X.Y.Z/:
    wingetcreate update Hmbown.CodeWhale --version X.Y.Z --urls \
      https://github.com/Hmbown/CodeWhale/releases/download/vX.Y.Z/CodeWhaleSetup.exe \
      https://github.com/Hmbown/CodeWhale/releases/download/vX.Y.Z/codewhale-windows-x64.zip \
      https://github.com/Hmbown/CodeWhale/releases/download/vX.Y.Z/codewhale-windows-x64-portable.zip \
      https://github.com/Hmbown/CodeWhale/releases/download/vX.Y.Z/codewhale-windows-arm64.zip \
      https://github.com/Hmbown/CodeWhale/releases/download/vX.Y.Z/codewhale-windows-arm64-portable.zip
    
    The generated PR must pass the winget-pkgs validation workflow before merge.

Single-binary note

Until v0.9.4 the release matrix was 7 targets × 3 binaries (codewhale, codew, codewhale-tui). v0.9.5 is 7×1 — each target publishes only codewhale + codew (Windows also ships codewhale.bat via the npm wrapper). The winget ZIP NestedInstallerFiles therefore lists only those two executables; codewhale-tui.exe is intentionally absent.

FreeBSD

FreeBSD has no prebuilt GitHub Release asset (see docs/INSTALL.md § FreeBSD). Install via Cargo:

pkg install -y rust pkgconf  # or ports-mgmt/pkg
cargo install codewhale-cli --locked   # provides `codewhale` and `codew`

The npm wrapper on FreeBSD exits with Unsupported platform: freebsd and points to the Cargo path. A native pkg install codewhale port is tracked as a follow-up to #1097 — contributions welcome under packaging/freebsd/.