Changelog plugin
Generate searchable release pages from GitHub Releases, local CHANGELOG files, or Changesets
Changelog plugin#
@preactpress/plugin-changelog turns release notes into documentation pages with search, sidebar integration, and optional RSS feeds.
Installation#
pnpm add -D @preactpress/plugin-changelog
Peer dependency: @kamod-ch/preactpress >= 2.2.0
GitHub Releases#
import { defineConfig } from "@kamod-ch/preactpress/config";
import { changelogPlugin } from "@preactpress/plugin-changelog";
export default defineConfig({
site: {
title: "My library",
url: "https://docs.example.com",
},
plugins: [
changelogPlugin({
provider: "github",
repository: "owner/repo",
route: "/changelog",
}),
],
});
Set GITHUB_TOKEN or GH_TOKEN for higher API rate limits in CI.
Local CHANGELOG.md#
changelogPlugin({
provider: "local",
local: "./CHANGELOG.md",
route: "/changelog",
});
The plugin parses Keep a Changelog format.
Changesets (optional)#
Merge unpublished .changeset/*.md entries as an Unreleased section:
changelogPlugin({
provider: "local",
local: "./CHANGELOG.md",
changesets: true,
});
Generated pages#
| Page | Contents |
|---|---|
| Changelog overview | Release table, recent highlights |
| Release pages | Version, date, breaking changes, features, fixes |
| Contributors | Parsed from @mentions and GitHub release authors |
| Migration links | Parsed from release bodies when authors include migration guide URLs |
Options#
| Option | Default | Description |
|---|---|---|
provider |
— | local, github, or changesets |
repository |
— | GitHub owner/name (required for github) |
local |
CHANGELOG.md |
Path to Keep a Changelog file |
route |
/changelog |
URL prefix for generated pages |
cache |
true |
Cache manifests and remote payloads |
offline |
false |
Use cache only, no network (CI reproducibility) |
changesets |
false |
Merge pending Changesets |
versionIntegration |
false |
Routes under /versions/{value}/changelog |
feed |
true |
Atom feed at {route}/feed.xml |
Version integration#
Enable version-scoped changelog routes when using documentation versioning:
changelogPlugin({
provider: "local",
local: "./CHANGELOG.md",
versionIntegration: true,
});
Caching and CI#
- Online builds fetch GitHub Releases and cache to
node_modules/.preactpress/changelog/. - Offline builds (
offline: true) reuse cached payloads — ideal for reproducible CI when cache is restored.
Provider architecture#
Future providers (GitLab, Gitea, Forgejo) implement the ChangelogProvider interface. Only local, github, and changesets ship today. See Known limitations.
Next steps#
| Page | Why |
|---|---|
| Plugins | Plugin system overview |
| Versioning | Multi-version docs |
| GitHub Actions | CI deployment patterns |