From 218e3dc5db8fe3060f9817166ac558895b36540c Mon Sep 17 00:00:00 2001 From: juwpegatron Date: Wed, 11 Nov 2026 22:09:59 +0700 Subject: [PATCH 1/2] CI: Mac installer check on macos-15 and only on main pushes macos-14 is no longer offered by GitHub (job cancelled: configuration 'macos-14-arm64-us-default' is not supported), so the Apple Silicon install was never checked. Tag pushes ignore path filters, so every release started this check before Buddy-mac.zip existed and it 404ed. --- .github/workflows/mac-install-check.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/mac-install-check.yml b/.github/workflows/mac-install-check.yml index 1d719f4..c1c2f5f 100644 --- a/.github/workflows/mac-install-check.yml +++ b/.github/workflows/mac-install-check.yml @@ -2,6 +2,7 @@ name: Mac one-line installer on: workflow_dispatch: push: + branches: [main] paths: - "docs/mac-install.sh" - ".github/workflows/mac-install-check.yml" @@ -10,7 +11,7 @@ jobs: install: strategy: matrix: - os: [macos-14, macos-15-intel] + os: [macos-15, macos-15-intel] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 From 395a0c04d8fa8ec4b29e7aac4f783a9fe5403260 Mon Sep 17 00:00:00 2001 From: juwpegatron Date: Wed, 11 Nov 2026 22:14:30 +0700 Subject: [PATCH 2/2] Mac app version matches its release (1.3.2) and publish checks it The manifest gives the Mac entry the version of the release the zip is in (1.3.2), but the app said 1.2.0, so Mac Buddy would offer the same build as an update forever. The publish job now refuses to upload a zip whose Info.plist version differs from the release tag. --- .github/workflows/mac.yml | 7 +++++++ mac/buddy_mac/core.py | 2 +- mac/tests/test_core.py | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/mac.yml b/.github/workflows/mac.yml index c0a4eb6..85d82e9 100644 --- a/.github/workflows/mac.yml +++ b/.github/workflows/mac.yml @@ -165,4 +165,11 @@ jobs: GH_TOKEN: ${{ github.token }} run: | TAG=$(gh release view --repo "$GITHUB_REPOSITORY" --json tagName --jq .tagName) + # The manifest gives the Mac entry the release's version; an app with another version would offer itself + # as an update forever. Refuse to upload unless the app inside the zip has the release's version. + APP_VERSION=$(unzip -p Buddy-mac.zip Buddy.app/Contents/Info.plist | python3 -c "import plistlib,sys; print(plistlib.load(sys.stdin.buffer)['CFBundleShortVersionString'])") + if [ "$APP_VERSION" != "${TAG#v}" ]; then + echo "::error::Buddy.app is $APP_VERSION but the latest release is $TAG; set VERSION in mac/buddy_mac/core.py to ${TAG#v}" + exit 1 + fi gh release upload "$TAG" Buddy-mac.zip --clobber --repo "$GITHUB_REPOSITORY" diff --git a/mac/buddy_mac/core.py b/mac/buddy_mac/core.py index afcddff..8a6abb4 100644 --- a/mac/buddy_mac/core.py +++ b/mac/buddy_mac/core.py @@ -21,7 +21,7 @@ from pathlib import Path APP_NAME = "Buddy" -VERSION = "1.2.0" +VERSION = "1.3.2" SUPPORT_DIR = Path.home() / "Library" / "Application Support" / APP_NAME SETTINGS_PATH = SUPPORT_DIR / "settings.json" diff --git a/mac/tests/test_core.py b/mac/tests/test_core.py index 19842e2..b841c12 100644 --- a/mac/tests/test_core.py +++ b/mac/tests/test_core.py @@ -311,7 +311,7 @@ def test_island_is_on_by_default(): assert core.DEFAULTS["island"] is True -# --------------------------------------------------------------------------- languages (1.2.0) +# --------------------------------------------------------------------------- languages (1.3.2) def test_prompt_answers_in_the_questions_language(): assert "Reply in the language of the question" in core.SYSTEM_PROMPT