From d798800e269ed9c3189494f3e1f5db9191db8ca9 Mon Sep 17 00:00:00 2001 From: 4nrry Date: Fri, 10 Jul 2026 20:34:51 -0300 Subject: [PATCH] feat(packaging): winget manifests + auto-submit workflow, standardize productName Add the winget-pkgs submission for 4nrry.OpenCherryDesktop 0.0.1 (installer, locale, and version manifests) plus a workflow that auto-submits future GitHub releases to microsoft/winget-pkgs. Standardize productName in tauri.conf.json from "opencherry" to "OpenCherry". The lowercase value was producing lowercase installer/artifact filenames and a lowercase Windows Add/Remove Programs DisplayName, diverging from the published "OpenCherry" branding and the already-shipped 0.0.1 installer. Realigning it keeps artifact names consistent and preserves winget upgrade detection (which matches on DisplayName). The installer manifest's InstallerSha256 matches the x64 setup.exe actually served in the v0.0.1 release (e3d57b...a5d67). Co-Authored-By: Claude Opus 4.8 --- .github/workflows/winget.yml | 38 +++++++++++++++++++ apps/desktop/src-tauri/tauri.conf.json | 2 +- .../4nrry.OpenCherryDesktop.installer.yaml | 15 ++++++++ .../4nrry.OpenCherryDesktop.locale.en-US.yaml | 26 +++++++++++++ packaging/winget/4nrry.OpenCherryDesktop.yaml | 6 +++ 5 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/winget.yml create mode 100644 packaging/winget/4nrry.OpenCherryDesktop.installer.yaml create mode 100644 packaging/winget/4nrry.OpenCherryDesktop.locale.en-US.yaml create mode 100644 packaging/winget/4nrry.OpenCherryDesktop.yaml diff --git a/.github/workflows/winget.yml b/.github/workflows/winget.yml new file mode 100644 index 0000000..d7d9cad --- /dev/null +++ b/.github/workflows/winget.yml @@ -0,0 +1,38 @@ +name: Publish to winget + +# Submits the Windows installer to microsoft/winget-pkgs whenever a GitHub +# Release is published, so `winget install 4nrry.OpenCherryDesktop` picks up new +# versions automatically. +# +# Prerequisites (one-time): +# 1. The package 4nrry.OpenCherryDesktop must exist in winget-pkgs (do the first +# submission manually with wingetcreate — see README/notes). +# 2. Add a repo secret WINGET_TOKEN: a GitHub Personal Access Token (classic) +# with the `public_repo` scope. The action uses it to fork winget-pkgs and +# open the PR. A fine-grained token also works (Contents + Pull requests +# read/write on your winget-pkgs fork). +# +# Note: `released` does not fire for releases marked "pre-release". If you tag +# alpha builds as pre-releases, change the trigger to `published`. + +on: + release: + types: [released] + +jobs: + publish: + runs-on: ubuntu-latest + steps: + - name: Strip leading "v" from the tag + id: ver + run: echo "version=${GITHUB_REF_NAME#v}" >> "$GITHUB_OUTPUT" + + - name: Submit to winget-pkgs + uses: vedantmgoyal9/winget-releaser@v2 + with: + identifier: 4nrry.OpenCherryDesktop + version: ${{ steps.ver.outputs.version }} + # Match only the Windows NSIS installer among the release assets + # (deb/rpm/dmg/AppImage/.sha256 files are ignored). + installers-regex: '_x64-setup\.exe$' + token: ${{ secrets.WINGET_TOKEN }} diff --git a/apps/desktop/src-tauri/tauri.conf.json b/apps/desktop/src-tauri/tauri.conf.json index cce7830..2094f68 100644 --- a/apps/desktop/src-tauri/tauri.conf.json +++ b/apps/desktop/src-tauri/tauri.conf.json @@ -1,6 +1,6 @@ { "$schema": "https://schema.tauri.app/config/2", - "productName": "opencherry", + "productName": "OpenCherry", "version": "0.0.1", "identifier": "ai.opencherry.desktop", "build": { diff --git a/packaging/winget/4nrry.OpenCherryDesktop.installer.yaml b/packaging/winget/4nrry.OpenCherryDesktop.installer.yaml new file mode 100644 index 0000000..d22ea91 --- /dev/null +++ b/packaging/winget/4nrry.OpenCherryDesktop.installer.yaml @@ -0,0 +1,15 @@ +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.6.0.schema.json +PackageIdentifier: 4nrry.OpenCherryDesktop +PackageVersion: 0.0.1 +InstallerType: nullsoft +Scope: user +InstallModes: + - silent + - silentWithProgress +ReleaseDate: 2026-06-26 +Installers: + - Architecture: x64 + InstallerUrl: https://github.com/4nrry/opencherry/releases/download/v0.0.1/OpenCherry_0.0.1_x64-setup.exe + InstallerSha256: E3D57BC2284A41F5A1C923B19C20B567A8440E29EA7CDAA6DC8F78DDB10A5D67 +ManifestType: installer +ManifestVersion: 1.6.0 diff --git a/packaging/winget/4nrry.OpenCherryDesktop.locale.en-US.yaml b/packaging/winget/4nrry.OpenCherryDesktop.locale.en-US.yaml new file mode 100644 index 0000000..315d5ff --- /dev/null +++ b/packaging/winget/4nrry.OpenCherryDesktop.locale.en-US.yaml @@ -0,0 +1,26 @@ +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.6.0.schema.json +PackageIdentifier: 4nrry.OpenCherryDesktop +PackageVersion: 0.0.1 +PackageLocale: en-US +Publisher: anrry +PublisherUrl: https://github.com/4nrry +PublisherSupportUrl: https://github.com/4nrry/opencherry/issues +PackageName: OpenCherry Desktop +PackageUrl: https://github.com/4nrry/opencherry +License: AGPL-3.0-or-later +LicenseUrl: https://github.com/4nrry/opencherry/blob/main/LICENSE +ShortDescription: Multi-repo x multi-agent control tower for AI-assisted coding. +Description: |- + OpenCherry is an open source, Ubuntu/GNOME-first desktop app that orchestrates + many Git repositories across many AI coding agents (Claude Code, OpenCode, + Codex, Gemini CLI, Aider, ...) from a single VS Code Source Control-style + interface. +Moniker: opencherry +Tags: + - ai + - developer-tools + - git + - tauri + - version-control +ManifestType: defaultLocale +ManifestVersion: 1.6.0 diff --git a/packaging/winget/4nrry.OpenCherryDesktop.yaml b/packaging/winget/4nrry.OpenCherryDesktop.yaml new file mode 100644 index 0000000..d458903 --- /dev/null +++ b/packaging/winget/4nrry.OpenCherryDesktop.yaml @@ -0,0 +1,6 @@ +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.6.0.schema.json +PackageIdentifier: 4nrry.OpenCherryDesktop +PackageVersion: 0.0.1 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.6.0