Live Changelog
An auto-updating changelog page that refreshes after every commit via GitHub Actions. Parses conventional commits and displays development history.
A detailed timeline of development, extracted from the Git commit history. This page updates automatically after every push to the main branch.
Loading changelog...
How It Works
The changelog uses a GitHub Actions workflow that:
- Triggers on push — Every push to
mainruns the workflow - Parses git history — Extracts commit hash, author, date, and message
- Categorizes commits — Detects conventional commit types (feat, fix, chore, etc.)
- Updates JSON data — Writes to
data/changelog.json - Commits changes — Uses
[skip ci]to prevent infinite loops
Tech Stack
| Component | Technology | Purpose |
|---|---|---|
| Automation | GitHub Actions | Trigger on push to main |
| Script | TypeScript + tsx | Parse git log and generate JSON |
| Data | JSON | Store parsed commit data |
| Rendering | Next.js Server Component | Dynamic page with locale support |
| i18n | next-intl | Locale-aware date formatting |
Conventional Commit Parsing
The script recognizes standard conventional commit prefixes:
feat:— New featuresfix:— Bug fixeschore:— Maintenance tasksdocs:— Documentation updatesrefactor:— Code refactoringstyle:— Styling changestest:— Test updatesperf:— Performance improvements
Commits are automatically categorized and stats are calculated.
Loop Prevention
The GitHub Action avoids infinite loops by:
- Adding
[skip ci]to its commit message - Checking
if: "!contains(github.event.head_commit.message, '[skip ci]')"in the workflow
Files
.github/workflows/update-changelog.yml # GitHub Action
scripts/generate-changelog.ts # Generation script
data/changelog.json # Generated data
lib/types/changelog.ts # TypeScript types
app/[locale]/changelog/page.tsx # Page component
components/changelog-stats.tsx # Stats component
components/changelog-table.tsx # Table component
Outcomes
- •GitHub Actions workflow triggers on every push to main
- •Conventional commit parsing (feat, fix, chore, etc.)
- •Commits grouped by date with locale-aware formatting
- •Full i18n support across 5 locales