Changelog
Publish your Tegami release notes on a filterable page.
Tegami is a tool that manages changelogs, versions and publishing in a monorepo. This plugin shows its release notes on your site at /changelog, with filters and search.
@fumapress/tegami has two plugins, one for Tegami and one for your site:
fumapressPlugin()tegami.config.tsWhen you apply a Tegami draft, it writes each release as an MDX file in content/changelog.
changelogPlugin()press.config.tsxReads these files as a content source, and shows them at /changelog.
Setup
Install
npm i @fumapress/tegami tegamiAdd the Styles
Add this after the imports in your stylesheet:
@import "@fumapress/tegami/css/preset.css";Write the Notes
import { tegami } from "tegami";
import { fumapressPlugin } from "@fumapress/tegami/tegami";
export default tegami({
plugins: [
fumapressPlugin({
dir: "content/changelog",
}),
],
});Each note it writes looks like this. The schema requires date and packages:
---
title: Markdown for every route
date: 2026-08-24T15:26:51.468Z
packages:
fumapress:
version: 1.1.0
---Add the Collection
Add a collection for the notes, with the changelog schema, and pass its key to the site plugin:
press({
collections: {
docs: { dir: "content/docs" },
changelog: { dir: "content/changelog" },
},
});With another content source, entries take their date from the getPageCreatedAt hook of its plugin.
Customization
URL
changelogPlugin({
source: "changelog",
paths: {
index: "/releases",
},
});Set index to false to remove the page.
Custom UI
The page type is changelog.index. Replace it in renderPage, or filter its entries:
import { ChangelogIndexView } from "@fumapress/tegami";
import { HomeLayout } from "fumadocs-ui/layouts/home";
renderPage(props) {
const { renderDefault } = props;
// the Home Layout takes these props, the others are for docs layouts
const { nav, links, githubUrl, i18n, themeSwitch, searchToggle } = props.layoutProps;
const home = { nav, links, githubUrl, i18n, themeSwitch, searchToggle };
switch (props.type) {
case "changelog.index":
return (
<HomeLayout {...home}>
<ChangelogIndexView
entries={props.entries.filter((entry) => entry.packages.length > 0)}
/>
</HomeLayout>
);
default:
return renderDefault();
}
},ChangelogIndexView also takes heading, description and pageSize.
Options
Prop
Type
Last updated on