Releases and versions: tags, SemVer, changelogs
What a tag is, how to read a version number like v1.4.1 (SemVer in plain words), how GitHub Releases and generated release notes work, how to check whether a fix is in a version, and why merged, released and live for every user can be three different moments.
Lesson 12 of 15~38 min of learningIncludes ~24 min for questions and tasks
Contents1 of 63 steps
You
Daniel
Tags page. There are four old tags, v1.0.0 to v1.3.0, which I set by hand for big launches. The last one sits on the cat treats bundle.Alex Tutor
Alex Tutor
8be2f70Add cat treats bundlev1.3.06f2c8a1Raise free-delivery threshold to 1000 UAH (#133)a7d93e4Rewrite delivery page copy (#132)d51c7e8Fix checkout button after cart edits (#134)3b8e1f6Add autumn sale banner (#136)9c4a2d7Add loyalty points behind a flag (#155)main
Commit graph, oldest first: main and its only recent tag 1. commit 8be2f70 on main "Add cat treats bundle", tagged v1.3.0 2. commit 6f2c8a1 on main "Raise free-delivery threshold to 1000 UAH (#133)" 3. commit a7d93e4 on main "Rewrite delivery page copy (#132)" 4. commit d51c7e8 on main "Fix checkout button after cart edits (#134)" (highlighted) 5. commit 3b8e1f6 on main "Add autumn sale banner (#136)" 6. commit 9c4a2d7 on main "Add loyalty points behind a flag (#155)"
You
main has moved five commits past it.Daniel
v1.3.0 meaning the same thing forever.Alex Tutor
main, which is already live, gets a version number and notes. Urgent fixes get their own version right away.Alex Tutor
Question 1
Support asks: "Was the checkout fix, #134, released in v1.3.0?" What is the correct answer on Thursday morning?
8be2f70v1.3.06f2c8a1#133a7d93e4#132d51c7e8#1343b8e1f6#1369c4a2d7#155main
Commit graph, oldest first: main on Thursday morning 1. commit 8be2f70 on main, tagged v1.3.0 2. commit 6f2c8a1 on main "#133" 3. commit a7d93e4 on main "#132" 4. commit d51c7e8 on main "#134" (highlighted) 5. commit 3b8e1f6 on main "#136" 6. commit 9c4a2d7 on main "#155"
You
v1.3.0 and not simply "version 13"?Alex Tutor
1.3.0, a fix gives 1.3.1, a new feature gives 1.4.0, a breaking change gives 2.0.0.Daniel
You
v in front?Daniel
1.3.0. Sometimes you'll also see 2.0.0-beta.1: a pre-release, a test version that comes before the real 2.0.0.Alex Tutor
Question 2
The last release is v1.4.0. Match each next release with the version it should get under CatChow's rules.
Tap an answer, then tap the row it belongs to. You can also drag.
- Only a fix for a wrong link in the footer
- A new gift note field at checkout
- New page addresses; all old product links stop working
- A test build of the new catalogue before its real release
Answers left to place
You
1.4.10 older than 1.4.9? Alphabetically it would be.Alex Tutor
1.4.10 is newer. And a pre-release is older than its release: 1.5.0-beta.1 comes before 1.5.0.Daniel
You
Alex Tutor
Question 3
Put these versions in order from oldest to newest.
Tap an item, then tap where it should go. You can also drag or use the arrows.
Alex Tutor
v1.3.0 there are two new features, the sale banner and the hidden loyalty groundwork, so it's a MINOR release: v1.4.0. Daniel opens Releases from the repository page.Daniel
Draft a new release, then type v1.4.0 as a new tag, target main. GitHub creates the tag when I publish. Previous tag v1.3.0, and then the magic button: Generate release notes.Alex Tutor
You
v1.3.0, with its title and author. So good titles pay off twice.Alex Tutor
Daniel
Set as a pre-release for test versions; not today. Set as the latest release: yes. Publish release, and the repository page shows v1.4.0 with a green Latest badge.Alex Tutor
v1.4.0
Latest · on 9c4a2d7 · release notes by Daniel and Sofia
v1.3.0
on 8be2f70 · no release page, tag only
Alex Tutor
Question 4
Which statements about CatChow's new v1.4.0 release are true? Select all that apply.
You
Alex Tutor
Daniel
CHANGELOG.md file with sections like Added, Changed, Fixed. We'll use the release pages as our changelog. I'll also add a small config so the generator groups pull requests by label: bug under "Fixes".Alex Tutor
You
Alex Tutor
Question 5Short answer · AI-checked task
Write the "For customers and support" part of the v1.4.0 notes (3–5 short lines), based on the generated list above. Loyalty points must not be announced yet.
Write your answer and get a score with feedback from our AI reviewer.
Log in to get AI feedbackYou
Alex Tutor
Daniel
develop, released weeks later, then store review, and even after approval the stores can roll a version out gradually to a growing share of users.Alex Tutor
v1.4.0, and no customer can see it.You
Alex Tutor
Question 6
Match each situation with what customers actually get.
Tap an answer, then tap the row it belongs to. You can also drag.
- #134 at CatChow, merged last Wednesday, part of
v1.4.0since Thursday - #155 at CatChow, part of
v1.4.0, flagloyalty-pointsoff - Reminders in the app's
v2.8.0, approved, on day 2 of a gradual rollout - Step goals merged into the app's
developyesterday
Answers left to place
You
Daniel
Alex Tutor
main that jumps the queue.Daniel
v1.4.0, so after the fix main is v1.4.0 plus one fix. If a feature had slipped in, it would honestly be v1.5.0.Alex Tutor
Alex Tutor
Question 7Case · AI-checked task
Plan the hotfix for the loyalty menu link and write its release notes.
Friday, 10:00. Since Tuesday's deploy of #155, customers see a "Loyalty points" link in the account menu that opens an empty page. The programme hasn't been announced; the flag loyalty-points is off, but the menu link ignores it. v1.4.0 was published yesterday and is marked Latest; nothing has been merged since.
CatChow works in GitHub flow: main is protected (pull request, at least one approval, required checks build and test, branch up to date), every pull request gets a preview, and every merge into main is deployed within minutes.
Write: (1) the steps from branch to "fixed on the live site", with who does what; (2) the version number and why; (3) short release notes for support; (4) what support tells the two customers.
Write your answer and get a score with feedback from our AI reviewer.
Log in to get AI feedbackDaniel
e5f81a3, deployed. v1.4.1 is published and now carries Latest.You
v1.4.1 too? It isn't in its notes.Alex Tutor
8be2f70Add cat treats bundlev1.3.06f2c8a1Raise free-delivery threshold to 1000 UAH (#133)a7d93e4Rewrite delivery page copy (#132)d51c7e8Fix checkout button after cart edits (#134)3b8e1f6Add autumn sale banner (#136)9c4a2d7Add loyalty points behind a flag (#155)v1.4.00d7b3c9Check flag before showing menu linkfix/loyalty-menu-linke5f81a3Hide loyalty menu link when flag is off (#158)mainv1.4.1
Commit graph, oldest first: main with two new tags 1. commit 8be2f70 on main "Add cat treats bundle", tagged v1.3.0 2. commit 6f2c8a1 on main "Raise free-delivery threshold to 1000 UAH (#133)" 3. commit a7d93e4 on main "Rewrite delivery page copy (#132)" 4. commit d51c7e8 on main "Fix checkout button after cart edits (#134)" (highlighted) 5. commit 3b8e1f6 on main "Add autumn sale banner (#136)" 6. commit 9c4a2d7 on main "Add loyalty points behind a flag (#155)", tagged v1.4.0 7. branch fix/loyalty-menu-link starts from commit 9c4a2d7 8. commit 0d7b3c9 on fix/loyalty-menu-link "Check flag before showing menu link" 9. commit e5f81a3: fix/loyalty-menu-link squash-merged into main "Hide loyalty menu link when flag is off (#158)", tagged v1.4.1
v1.4.1 is later than v1.4.0, and v1.4.0 contains d51c7e8.Daniel
v1.4.0...v1.4.1, shows exactly what was added between the tags: one commit. And as of 2026 a commit's page lists the tags that contain it.You
d51c7e8 I'd see both v1.4.0 and v1.4.1, but not v1.3.0.Alex Tutor
Alex Tutor
Question 8
Daniel opens the compare view v1.4.0...v1.4.1. Which pull requests does it show?
d51c7e8#1343b8e1f6#1369c4a2d7#155v1.4.0e5f81a3#158mainv1.4.1
Commit graph, oldest first: Between two tags 1. commit d51c7e8 on main "#134" 2. commit 3b8e1f6 on main "#136" 3. commit 9c4a2d7 on main "#155", tagged v1.4.0 4. commit e5f81a3 on main "#158", tagged v1.4.1
You
Alex Tutor
Daniel
You
Alex Tutor
Question 9
Support asks: "Is the checkout fix #134 in v1.4.1?" Which ways of checking give a reliable answer? Select all that apply.
You
Daniel
Alex Tutor
That’s the lesson. You answered every task — nicely done.