Quick reference for managing versions, tags, and changelogs.
versionCode = 1 // Integer. Google Play uses this. Must always go UP. Never reset.
versionName = "1.0.0" // String. Users see this. Format: MAJOR.MINOR.PATCH| What changed? | Example bump | versionCode |
|---|---|---|
| Bug fix, crash fix, small tweak | 1.0.0 → 1.0.1 | +1 |
| New feature, new screen, new behavior | 1.0.0 → 1.1.0 | +1 |
| Major redesign, breaking data/schema change | 1.0.0 → 2.0.0 | +1 |
💪 Pep Talk analogy: PATCH = new ending phrase. MINOR = new feature added. MAJOR = whole new app structure.
feat: add daily notification reminders
fix: crash when database returns null phrase
chore: bump compileSdk to 34
refactor: extract PepTalkCard into shared composable
docs: update README with setup instructions
test: add unit tests for pep talk generation
Types and their meaning:
feat→ new feature → bumps MINOR on release (1.0.0 → 1.1.0)fix→ bug fix → bumps PATCH on release (1.0.0 → 1.0.1)feat!→ breaking change → bumps MAJOR on release (1.0.0 → 2.0.0)chore→ maintenance, no user-facing changerefactor→ code cleanup, behavior unchangeddocs→ documentation onlytest→ tests only
After bumping versions in build.gradle and updating CHANGELOG.md:
# 1. Commit the version bump
git add app/build.gradle CHANGELOG.md
git commit -m "chore: release v1.1.0"
# 2. Create an annotated tag
git tag -a v1.1.0 -m "Release 1.1.0"
# 3. Push the commit AND the tag (push alone does NOT push tags)
git push
git push origin v1.1.0
⚠️ git pushalone silently skips tags. Always push the tag explicitly.
# List all tags
git tag
# See commits between two releases
git log v1.0.0..v1.1.0 --oneline
# Check out the code exactly as it was at a release
git checkout v1.0.0
# Return to your working branch
git checkout mainEvery released version block in CHANGELOG.md must follow this structure:
## [X.Y.Z] - YYYY-MM-DD
> **What's new:** One or two sentences summarising what changed in plain language
> for users and future contributors.
### Added / Changed / Fixed / Removed
- bullet points describing feature/bug changes
### Phrases Added to Greeting
- "Hey champ, ..." — short description or count if many
### Phrases Added to First
- "You are the kind of person who ..." — short description or count if many
### Phrases Added to Second
- "Even on your worst day ..." — short description or count if many
### Phrases Added to Ending
- "Keep it up!" — short description or count if manyIf no phrases were added to a type in a given release, write
- *(none)*so the section is never silently omitted.
- All features for this version merged and working on device
-
versionCodeincremented inapp/build.gradle -
versionNameupdated inapp/build.gradle -
[Unreleased]inCHANGELOG.mdrenamed to new version + today's date -
> **What's new:**summary line added to the version block -
### Phrases Added to Greetingsection filled in (or marked*(none)*) -
### Phrases Added to Firstsection filled in (or marked*(none)*) -
### Phrases Added to Secondsection filled in (or marked*(none)*) -
### Phrases Added to Endingsection filled in (or marked*(none)*) - Fresh empty
[Unreleased]section (with all four Phrase subsections) added at top ofCHANGELOG.md - Commit made:
git commit -m "chore: release vX.Y.Z" - Annotated tag created:
git tag -a vX.Y.Z -m "Release X.Y.Z" - Tag pushed:
git push origin vX.Y.Z - Signed release APK or AAB generated
| Version | versionCode | Date | Notes |
|---|---|---|---|
| 1.2.0 | 3 | 2026-04-27 | Style customization, share as image, widget, manage sayings, settings, block feature, companion website |
| 1.1.0 | 2 | 2026-03-11 | Daily morning pep talk notification |
| 1.0.0 | 1 | 2026-03-11 | Initial build |
Keep this table updated each release for a quick at-a-glance history.