Not exactly what you asked, but one idea I just picked is keeping a proper Changelog, ie, stop assuming that "Git history solved that".
And a good way to write those is to have a `## Unreleased` entry on top of `CHANGELOG.md` - the idea is to add tasks as they are being completed.
Then when a version is published/tagged/milestone, replace the "Unreleased" with "v1.2.3".