Skip to content

Fix: stamp release version from git tag into Info.plists#1

Merged
ljchang merged 1 commit intomainfrom
fix/stamp-version-from-tag
May 2, 2026
Merged

Fix: stamp release version from git tag into Info.plists#1
ljchang merged 1 commit intomainfrom
fix/stamp-version-from-tag

Conversation

@ljchang
Copy link
Copy Markdown
Collaborator

@ljchang ljchang commented May 2, 2026

Summary

  • The CI release pipeline never threaded the git tag version into the build, so every release since v1.0.8 (Nov 26, 2025) shipped a binary stamped 1.0.8 inside a DMG that was merely renamed to match the tag (e.g., GigEVirtualCamera-v1.0.14.dmg contains a 1.0.8 app and extension).
  • This PR adds one workflow step that uses plutil to overwrite CFBundleShortVersionString and CFBundleVersion in both Info.plist files with the tag version (stripping the leading v) before xcodebuild archive runs.

Why this approach

Both GigECameraApp/Info.plist and GigEVirtualCameraExtension/Info.plist literally hardcode 1.0.8 for both bundle-version keys. Because the Xcode project uses INFOPLIST_FILE = ...Info.plist (not GENERATE_INFOPLIST_FILE = YES), the MARKETING_VERSION in project.pbxproj is never substituted — the literal plist value wins.

A surgical workflow-only fix was chosen over reworking the project to use $(MARKETING_VERSION) because:

  • One file changes; no impact on local/manual builds.
  • Scripts/automated_distribution.sh already uses the same defaults write pattern (line 191), so this is consistent with existing conventions.
  • Easy to revert.

Test plan

  • Merge this PR
  • Push a fresh tag (e.g., v1.0.15) and watch the workflow run
  • Confirm the Stamp version into Info.plists step prints 1.0.15 for both plists
  • Download the resulting DMG, mount, and run:
    defaults read /Volumes/GigEVirtualCamera/GigEVirtualCamera.app/Contents/Info.plist CFBundleShortVersionString
    
    Expected output: 1.0.15
  • Install, then systemextensionsctl list should report the extension at 1.0.15/1.0.15

Notes

  • Don't bother re-tagging v1.0.14 — cleaner to ship a fresh v1.0.15 once this lands.
  • Long-term cleanup (separate PR if desired): change the two Info.plists to use $(MARKETING_VERSION) placeholders and pass MARKETING_VERSION=... to xcodebuild so manual local builds also get a sensible version. Not required for this fix.

🤖 Generated with Claude Code

…lists

Both Info.plist files have CFBundleShortVersionString and CFBundleVersion
literally hardcoded (currently 1.0.8). Because INFOPLIST_FILE is used (not
GENERATE_INFOPLIST_FILE), MARKETING_VERSION in project.pbxproj is never
substituted — the literal value wins. As a result, every CI release since
1.0.8 has shipped a 1.0.8 binary inside a renamed DMG wrapper.

Add a workflow step that uses plutil to overwrite CFBundleShortVersionString
and CFBundleVersion in both Info.plists with the tag version (vX.Y.Z stripped
to X.Y.Z) before xcodebuild runs. Local/manual builds are unaffected — they
continue to use whatever's committed in the plists.
@ljchang ljchang merged commit 74af271 into main May 2, 2026
@ljchang ljchang deleted the fix/stamp-version-from-tag branch May 2, 2026 01:33
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.

1 participant