Skip to Content

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:

  1. fumapressPlugin()tegami.config.ts

    When you apply a Tegami draft, it writes each release as an MDX file in content/changelog.

  2. changelogPlugin()press.config.tsx

    Reads these files as a content source, and shows them at /changelog.

Setup

Install

npm i @fumapress/tegami tegami

Add the Styles

Add this after the imports in your stylesheet:

src/app.css
@import "@fumapress/tegami/css/preset.css";

Write the Notes

tegami.config.ts
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:

content/changelog/2026-08-24-example.mdx
---
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

press.config.tsx
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:

press.config.tsx
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

On this page