This document outlines the process for releasing new versions of Setlist Player.
This plugin follows the wordpress-develop versioning practice:
- After releasing version X.Y.Z, immediately bump to the next anticipated version (X.Y+1.0)
- All subsequent commits are part of the next release
- When ready to release, tag and release, then bump again
Prepare 1.0.0 → Commit → Tag v1.0.0 → Push → Create GitHub Release → Bump to 1.1.0 → Development
When ready for 1.1.0, repeat the process.
This project follows Semantic Versioning (MAJOR.MINOR.PATCH).
- Development: All development happens in GitHub
- GitHub Releases: Tagged releases distributed as complete zip files
- WordPress.org SVN: Only final tagged releases are pushed to SVN (no development versions)
- SVN trunk contains the latest release
- SVN tags contain specific releases
- All version numbers match within each release
Version numbers must be updated in these files:
-
setlist-player.php(main plugin file)Version:header (line ~10)SETLIST_PLAYER_VERSIONconstant (line ~24)
-
readme.txt(WordPress.org readme)Stable tag:field (line ~8)
-
package.jsonversionfield (line ~2)
Note that the versions indicated in
block.jsonfiles are specific to their blocks, and not the plugin release version.
Before creating a release, ensure:
- All tests pass (
npm test) - Code is linted and formatted (
npm run lint) - CHANGELOG section in
readme.txtis updated with changes - Version numbers are correct across all files (see "Version Locations" above)
-
readme.txt"Tested up to" field reflects latest WordPress version tested - Documentation is up to date (README.md, CONTRIBUTING.md)
- Build is clean (
npm run build)
# Ensure you're on trunk and up to date
git checkout trunk
git pull origin trunk
# Run full test suite
npm test
# Ensure build is clean
npm run build
# Run linting
npm run lintEdit readme.txt and add release notes under the == Changelog == section:
== Changelog ==
= 1.0.0 =
* Feature: Add new keyboard shortcut for audio-only mode
* Enhancement: Improve playlist loading performance
* Fix: Resolve issue with speed control not persisting
Update version in all locations listed above. For example, when releasing 1.0.0:
setlist-player.php:
* Version: 1.0.0define( 'SETLIST_PLAYER_VERSION', '1.0.0' );readme.txt:
Stable tag: 1.0.0
package.json:
"version": "1.0.0"# Commit version bump
git add setlist-player.php readme.txt package.json
git commit -m "Release version 1.0.0"
# Create annotated tag (use -a flag for annotated tag, not lightweight)
git tag -a v1.0.0 -m "Version 1.0.0"
# Push commit and tag together
git push --follow-tags origin trunkNote on Tags:
- Always use annotated tags (
-aflag) for releases - Use
git push --follow-tagsto push commits and their associated annotated tags together - Alternatively, push tags explicitly with
git push origin <tagname>
- Go to the Releases page
- Click "Draft a new release"
- Select the tag you just created (v1.0.0)
- Title: "Version 1.0.0"
- Description: Copy the changelog from readme.txt
- Attach the distribution zip (generated via
npm run plugin-zip) - Publish release
(For future use when plugin is approved)
WordPress.org deployment is handled by pushing tagged releases from GitHub to WordPress.org SVN. Consider using 10up/action-wordpress-plugin-deploy GitHub Action to automate this process.
Immediately after releasing, bump to the next version. For example, after releasing 1.0.0:
setlist-player.php:
* Version: 1.1.0define( 'SETLIST_PLAYER_VERSION', '1.1.0' );readme.txt:
Stable tag: 1.1.0
package.json:
"version": "1.1.0"Commit the bump:
git add setlist-player.php readme.txt package.json
git commit -m "Bump version to 1.1.0"
git push origin trunkIf you notice version numbers are out of sync:
- All three files (setlist-player.php, readme.txt, package.json) should have matching version numbers
- Each released zip is self-contained with all versions matching
- Trunk can have unreleased version numbers since trunk isn't distributed
If you forget to bump the version after a release:
- Do it as soon as you notice
- This ensures all new commits are clearly marked as part of the next release
If you realize you tagged the wrong version:
- Delete the local tag:
git tag -d v1.0.0 - Delete the remote tag:
git push origin :refs/tags/v1.0.0 - Delete the GitHub release
- Start over with the correct version