| last_reviewed | 2026-03-28 |
|---|
MARKETING_VERSIONis the user-facing product version.CURRENT_PROJECT_VERSIONis the build number.MARKETING_VERSIONshould always usemajor.minor.patchformat, for example0.2.0.CURRENT_PROJECT_VERSIONshould be a monotonically increasing integer, for example3.- GitHub prerelease tags should use
v<MARKETING_VERSION>-beta.<CURRENT_PROJECT_VERSION>. - GitHub prerelease titles should use
Hypnograph <MARKETING_VERSION> beta <CURRENT_PROJECT_VERSION>. - Unsigned artifact names use
Hypnograph-<MARKETING_VERSION>-<CURRENT_PROJECT_VERSION>-macOS-unsigned.
This maps the Xcode settings cleanly to Apple bundle version fields:
MARKETING_VERSION->CFBundleShortVersionStringCURRENT_PROJECT_VERSION->CFBundleVersion
Tooling note:
agvtoolwas evaluated, but the current project shape does not make it a clean fit.- In this repo it reports ambiguous build versions across targets and attempts to update missing/generated Info.plist paths for some targets.
- For now, version bumps are handled by
scripts/bump-version.shso the release line stays explicit and predictable.
To build unsigned artifacts locally without publishing:
- Open
Hypnograph.xcodeprojin Xcode. - Verify the
Hypnographtarget builds inRelease. - From repo root, run
./scripts/build-unsigned.sh.
This writes the unsigned .dmg, .zip, and .sha256 files into dist/.
dist/ is local build/release staging only.
Those artifacts are uploaded directly to GitHub Releases by scripts/release-unsigned.sh and should not be committed to the repository.
Recommended beta release preparation:
- Confirm the working tree is in a state you want to release from.
- Run
./scripts/bump-version.sh --commit --tag. - This increments
CURRENT_PROJECT_VERSIONby default, commits the version change, and creates the matching beta tag.
Options:
--marketing-version <x.y.z>to change the release line and reset the build number to1unless--build-numberis also provided--build-number <n>to set a specific build number--committo create the version-bump commit--tagto create the matching beta tag after committing
To build and publish the current unsigned beta release to GitHub Releases:
- Open
Hypnograph.xcodeprojin Xcode. - Confirm
MARKETING_VERSIONandCURRENT_PROJECT_VERSIONare correct. - Authenticate GitHub CLI with
gh auth loginif needed. - From repo root, run
./scripts/release-unsigned.sh.
Optional flags:
--skip-buildto publish existing artifacts already present indist/--draftto create or update the release as a draft--notes-file <path>to provide custom release notes--previous-tag <tag>to override which previous tag is used for generated notes--tag <tag>to override the default tag--title <title>to override the default release title
Default release notes behavior:
- If
--notes-fileis not provided, the script generates notes from commit subjects since the previousv*tag. - If needed,
--previous-tagcan be used to choose a different comparison point. - This project is not currently using Conventional Commits or GitHub autogenerated release notes as the default release-notes source.
Generated artifacts:
Hypnograph-<version>-<build>-macOS-unsigned.dmgHypnograph-<version>-<build>-macOS-unsigned.zipHypnograph-<version>-<build>-macOS-unsigned.sha256
Notes:
dist/remains local staging and should stay uncommitted.- This path does not use TestFlight or notarization.
- Gatekeeper will show a warning because the app is unsigned and not notarized.
- This is the current direct-download beta path when Apple Developer Program distribution is not being used.