Changelog
How to maintain a changelog section in your documentation site.
zudo-doc includes a changelog section for tracking release notes and version history. The changelog uses descending sidebar sort so the newest entries always appear at the top.
Directory Structure
Changelog entries live in a dedicated content directory:
src/ content/ docs/
└── changelog/
├── index. mdx # Category index page (sets desc sort order)
├── 0. 2. 0. mdx # Newer entry (sidebar_ position: 2)
└── 0. 1. 0. mdx # Older entry (sidebar_ position: 1)Category Configuration
The index.mdx file configures descending sort order so newer entries appear first in the sidebar:
---
title: Changelog
sidebar_position: 10
category_sort_order: "desc"
---With category_sort_order: "desc", entries with higher sidebar_position values appear first. This means newer versions naturally sort to the top.
Adding a New Entry
To add a new changelog entry:
Create a new MDX file in
src/named after the version (e.g.,content/ docs/ changelog/ 0.2.0.mdx)Set the
sidebar_positionto a value higher than the previous entryMirror the file in the Japanese content directory (
src/)content/ docs- ja/ changelog/
---
title: "0.2.0"
description: Short summary of this release.
sidebar_position: 2
---
Summary of changes in this release.
### Features
- Feature A
- Feature B
### Bug Fixes
- Fix for issue XTip
Use incrementing sidebar_position values for each new version. Combined with category_sort_order: "desc" in the category's index.mdx, this ensures the newest entry always appears at the top of the sidebar.
Entry Format
Each changelog entry is a standard MDX file. A recommended structure:
Title: The version number (e.g.,
"0.2.0")Description: A brief summary of the release
Content sections: Features, Bug Fixes, Breaking Changes, etc.
There is no enforced format — use whatever structure fits your project. The examples above follow a common convention similar to Keep a Changelog.
Version Bump Script
zudo-doc includes a scripts/ script that automates version management:
# Bump version and create changelog entry
./scripts/version-bump.sh 0.2.0
# Bump version, create changelog entry, and snapshot current docs
./scripts/version-bump.sh 1.0.0 --snapshotThe script performs the following steps:
Updates the
versionfield inpackage.jsonCreates a changelog entry MDX file in both English and Japanese directories
Sets the correct
sidebar_positionautomatically (incremented from existing entries)
Doc Snapshots
When called with --snapshot, the script also archives the current documentation as a versioned snapshot before bumping. This integrates with zudo-doc's versioning system:
Copies
src/tocontent/ docs/ src/content/ docs- v{old}/ Copies
src/tocontent/ docs- ja/ src/content/ docs- v{old}- ja/ Prints the version config entry to add to
src/config/ settings. ts
Note
The --snapshot flag archives the old version's docs, not the new version. After the script runs, src/ represents the new version and the snapshot preserves the previous state.
Version Bump Skill
For Claude Code users, zudo-doc includes a / skill that orchestrates the entire release workflow. Instead of running the script manually, the skill handles everything end-to-end:
Analyzes commits since the last git tag and categorizes them (breaking, features, fixes, other)
Proposes a version bump type (major/minor/patch) based on the changes
Runs
version-bump.shto updatepackage.jsonand create changelog entriesFills in the changelog templates with actual commit details (both EN and JA)
Runs
pnpm b4pushto validate the buildCommits, pushes, and waits for CI
Creates a git tag and GitHub release
Guides you through npm publishing (or skips it for private packages)
# Run the skill in Claude Code
/zudo-doc-version-bump
# Or skip the proposal step by specifying the bump type
/zudo-doc-version-bump patchNote
The skill requires at least one v* tag to exist. If this is the first release, create the initial tag manually: git tag v0.1.0 && git push --tags.
Header Navigation
The changelog section is linked from the header navigation. This is configured in src/:
headerNav: [
// ...other items
{ label: "Changelog", labelKey: "nav.changelog", path: "/docs/changelog", categoryMatch: "changelog" },
],i18n
Mirror changelog entries in the Japanese content directory (src/) to provide translated release notes. The index.mdx and directory structure should match the English version.