Extract and export worship song lyrics from ProPresenter 7
View the Project on GitHub adamswbrown/propresenterlyricexport
How to publish a new version of ProPresenter Lyrics Export.
ProPresenter Lyrics Export uses Semantic Versioning with a hotfix pattern:
MAJOR.MINOR.HOTFIX
2 . 2 . 1
| Version | When | Example | Description |
|---|---|---|---|
| MAJOR | Breaking changes | v3.0.0 | Incompatible API changes, major rewrites |
| MINOR | New features | v2.3.0 | New features, significant improvements |
| HOTFIX | Bug fixes | v2.2.1 | Bug fixes, small improvements, patches |
Use for new features or significant improvements. Example: Service Generator in v2.2.0.
Timeline: When you’ve completed a significant feature Distribution: Electron app + CLI executables + GitHub Release Announcement: Update README, social media, etc.
Use for bug fixes and small improvements. Example: Nested folder expansion in v2.2.1.
Timeline: As soon as a bug is identified and fixed Distribution: Same as feature release Announcement: Brief mention in release notes
Use for breaking changes only. Very rare.
Timeline: When planning incompatible changes Distribution: Same as feature release, with migration guide Announcement: Prominent notice in README and docs
Before starting the release, verify:
git status shows clean working treegit pull origin mainnpm test (if available)npm start -- statusnpm run electron:dev# Verify everything
git status # Must be clean
npm test # Must pass
npm run build # Must compile
npm start -- status # Must connect
npm run electron:dev # Must start
package.json version field:
{
"version": "2.2.1"
}
CHANGELOG.md with new section at top:
## [2.2.1] - 2026-02-03
### Fixed
- Fixed nested folder expansion not working properly
- Resolved issue with deep playlist hierarchies
### Details
More detailed explanation of changes...
### Previous Releases
[Previous content...]
Include:
Commit message format:
v2.2.1: Release notes
- Brief change 1
- Brief change 2
Example:
git add package.json CHANGELOG.md
git commit -m "v2.2.1: Nested folder expansion fix
- Fixed recursive folder expansion in playlist tree
- Now expands all nested folders instead of just 2 levels"
Tags trigger GitHub Actions to build all distributable files.
# Create tag
git tag v2.2.1
# Push main branch (with version commits)
git push origin main
# Push tag (this triggers GitHub Actions)
git push origin v2.2.1
⚠️ Critical: Tag MUST match version in package.json (include v prefix).
After pushing the tag, GitHub Actions automatically:
Monitor the build:
.github/workflows/ on your repoAfter GitHub Actions completes:
https://github.com/adamswbrown/propresenterlyricexport/releases# Test the executable works
./propresenter-lyrics-macos-arm64 status
# Test the Electron app starts
# Open the .zip and run the app
After a feature release (not hotfixes):
# 1. Fix the bug in code
# Edit src/file.ts, test with npm start -- command
# 2. Update files
# - Change version in package.json to 2.2.1
# - Add entry to CHANGELOG.md
# 3. Commit and tag
git add package.json CHANGELOG.md src/file.ts
git commit -m "v2.2.1: Fix issue with X
- Fixed bug description
- Tested with scenario Y"
git tag v2.2.1
git push origin main
git push origin v2.2.1
# 4. Monitor GitHub Actions completion
# 5. Test release from GitHub
# 1. Complete feature and test thoroughly
npm test
npm start -- status
npm run electron:dev
# 2. Update version to 2.3.0
# - Update package.json
# - Add to CHANGELOG.md with detailed feature description
# 3. Commit
git add package.json CHANGELOG.md
git commit -m "v2.3.0: New feature name
Detailed description of what the feature does and why it's useful.
- Feature detail 1
- Feature detail 2
Closes #123"
# 4. Tag and push
git tag v2.3.0
git push origin main
git push origin v2.3.0
# 5. Wait for GitHub Actions
# 6. Test release downloads
# 7. Update README if needed
# 8. Announce release
If you accidentally tagged without committing code changes:
# 1. Delete local and remote tags
git tag -d v2.2.1
git push origin :v2.2.1
# 2. Commit the missing changes
git add src/file.ts
git commit -m "Include fixes for v2.2.1"
# 3. Update version and changelog again
git add package.json CHANGELOG.md
git commit -m "v2.2.1: Release notes"
# 4. Re-create and push tag
git tag v2.2.1
git push origin main
git push origin v2.2.1
Good release notes explain:
Example (Feature):
## [2.2.0] - 2026-02-02
### Added
- **Service Generator** - New feature for creating complete worship service documents
- Automatically parse song files from presentations
- Match songs against ProPresenter library
- Add Bible passages from online database
- Generate formatted PDF or PowerPoint service documents
- See [Service Generator Guide](docs/guides/service-generator.md) for details
Example (Hotfix):
## [2.2.1] - 2026-02-03
### Fixed
- Fixed playlist tree not expanding nested folders properly
- Now recursively expands all folder levels by default
- Improves usability for deeply nested playlists
# Delete local tag
git tag -d v2.2.1
# Delete remote tag
git push origin :v2.2.1
# Re-create with correct commit
git tag v2.2.1
git push origin v2.2.1
node-version in workflowpackage-lock.jsonnpm run build# Verify CHANGELOG.md was committed
git log --oneline | grep "v2.2.1"
# If missing, edit CHANGELOG.md and re-commit
git add CHANGELOG.md
git commit --amend -m "v2.2.1: Release notes with fixes
- Updated changelog"
.github/workflows/ tabscripts/ folder exist and are executablepackage-lock.json is committednpm run build:exe
After publishing:
See CLAUDE.md for project-specific release guidelines and common mistakes to avoid.