| name | bump-driftwood-version |
| description | Bump Driftwood marketing version and build number, update CHANGELOG.md and the README download link, and verify with a release build. Use when the user asks to bump the version, prepare a release, write changelog notes, or cut a new Driftwood version. |
Bump Driftwood version
Prepare a Driftwood release by updating the changelog, project.yml, and the
README download link, then building to regenerate the Xcode project from
XcodeGen.
Constraints
- Do not edit
Driftwood.xcodeproj/project.pbxproj directly. Version lives
in project.yml; ./script/build_and_run.sh --build runs xcodegen and
syncs the project.
- Do not commit, tag, or push unless the user asks.
Workflow
Copy this checklist and track progress:
- [ ] Step 1: Determine versions
- [ ] Step 2: Update CHANGELOG.md
- [ ] Step 3: Update project.yml
- [ ] Step 4: Update README.md
- [ ] Step 5: Build
- [ ] Step 6: Verify
Step 1: Determine versions
From the repo root:
git tag -l 'v*' --sort=-v:refname | head -5
git log "$(git describe --tags --abbrev=0 2>/dev/null || echo HEAD~20)..HEAD" --oneline
- New marketing version: from the user (semver
x.y.z).
- Previous tag: latest
v* tag (e.g. v1.2.3).
- Build number: increment
CURRENT_PROJECT_VERSION in project.yml by 1
for both targets (Driftwood and DriftwoodWallpaperExtension). Read the
current value first; do not guess.
Step 2: Update CHANGELOG.md
Follow Keep a Changelog. Insert a new
section above the previous release:
## [1.3.0] - 2026-07-31
Optional one-line release summary (e.g. first public release callout).
### Added
- ...
### Changed
- ...
### Fixed
- ...
### Performance
- ...
Guidelines:
- Use today's date (
YYYY-MM-DD).
- Group entries under
Added, Changed, Fixed, Deprecated, Removed,
Security, or Performance as appropriate. Omit empty sections.
- Turn commit subjects since the last tag into user-facing bullets. Prefer
plain language over commit prefixes (
feat:, fix:).
- Honor user-provided release copy verbatim when they supply exact wording
(e.g. "first public release").
Footer compare links: use tag-based URLs, not commit SHAs. Add a new line
at the top of the footer block (after the last ## [...] section):
[1.3.0]: https://github.com/iamEvanYT/driftwood/compare/v1.2.3...v1.3.0
Pattern: [NEW]: https://github.com/iamEvanYT/driftwood/compare/vPREVIOUS...vNEW
For the first tagged release with no predecessor, use a commit link instead:
[1.0.0]: https://github.com/iamEvanYT/driftwood/commit/<sha>
Step 3: Update project.yml
Set both MARKETING_VERSION entries (app + wallpaper extension) to the new
version and bump both CURRENT_PROJECT_VERSION entries to the new build number.
MARKETING_VERSION: "1.3.0"
CURRENT_PROJECT_VERSION: "8"
Step 4: Update README.md
Update the direct download link in the README to the new GitHub release DMG.
Keep the visible link text version-neutral and update both the release tag and
asset filename in the URL:
[**Download Driftwood for macOS**](https://github.com/iamEvanYT/driftwood/releases/download/v1.3.0/Driftwood-1.3.0.dmg)
The expected pattern is:
https://github.com/iamEvanYT/driftwood/releases/download/v<VERSION>/Driftwood-<VERSION>.dmg
Step 5: Build
./script/build_and_run.sh --build
Run from the repo root. This regenerates the Xcode project via XcodeGen and
produces a Release build in dist/. Fix any build errors before finishing.
Step 6: Verify
./script/changelog_notes.sh 1.3.0
/usr/libexec/PlistBuddy -c "Print :CFBundleShortVersionString" dist/Driftwood.app/Contents/Info.plist
/usr/libexec/PlistBuddy -c "Print :CFBundleVersion" dist/Driftwood.app/Contents/Info.plist
Confirm:
changelog_notes.sh prints the new section body (used by .github/workflows/release.yml).
- Built app short version matches
MARKETING_VERSION.
- Built app bundle version matches
CURRENT_PROJECT_VERSION.
- README links directly to the new versioned GitHub release DMG.
Release integration
- CI reads version from
project.yml (MARKETING_VERSION) and must match the
GitHub release tag (vx.y.z).
- Release notes are extracted from
CHANGELOG.md via ./script/changelog_notes.sh.
- Tag format:
v1.3.0 (with v prefix).
Example
Request: Bump to 1.3.0, first public release.
CHANGELOG entry:
## [1.3.0] - 2026-07-31
First public release of Driftwood: native live wallpapers for macOS from local video and Metal scene files. Free, open source, and fully offline.
### Added
- Sparkle in-app updater
- Update button in the main window when a new version is available
- Update icon in the menu bar status item
- DMG installer for distribution
Footer:
[1.3.0]: https://github.com/iamEvanYT/driftwood/compare/v1.2.3...v1.3.0
project.yml: MARKETING_VERSION: "1.3.0", CURRENT_PROJECT_VERSION: "8"