Skip to content
✨ Publier v1 is live — a polished docs platform built for the open web.
On this page

Changelog page

Release history at /changelog — MDX entries in src/content/changelog/ using changelogSchema, with a sticky two-column timeline layout.

The changelog standard page renders a release history at /changelog. Each release is an MDX file in src/content/changelog/. The route is auto-injected by docsShell() — no src/pages/changelog.astro needed.

Route control

The default route requires entries under src/content/changelog/ and a registered collection. pages.changelog is not applied. The existing docsShell({ routes: { changelog: false } }) option disables the shell-injected changelog and its feed; it does not remove a custom src/pages/changelog.astro. See Pages for all default-route controls.

Content collection setup

Register the changelog collection in src/content.config.ts using changelogSchema from @publier/shell/schemas:

src/content.config.ts
import { defineCollection } from 'astro:content';
import { contentLoader } from '@publier/shell/loaders';
import { changelogSchema } from '@publier/shell/schemas';
export const collections = {
changelog: defineCollection({
loader: contentLoader({ base: './src/content/changelog' }),
schema: changelogSchema,
}),
};

Writing changelog entries

Each file in src/content/changelog/ is one release entry:

src/content/changelog/v1-0-0.mdx
---
title: v1.0.0
description: First stable release.
date: 2026-04-15
version: v1.0.0
tags:
- new releases
- improvements
---
The first stable release of our platform is live.
## New
- **Full site templates.** Docs, blog, marketing, changelog, status — one codebase.
- **14 theme presets.** Typed constrained-inheritance overrides.
## Fixed
- Sidebar ordering edge case with deeply nested folders.
## Breaking
- None. (This is v1.0.0.)

Frontmatter fields

FieldTypeRequiredDescription
titlestring✓Release title shown in the right column (e.g. "v1.0.0" or "Docs Refresh").
dateISO date✓Shown in the left column as the formatted release date. Entries are sorted newest-first.
versionstring—Version label (e.g. "v1.0.0") shown below the date in the left column.
tagsstring[]—Category labels shown below the version in the left column (e.g. ["new releases", "improvements"]).
descriptionstring—Short summary for listings and OG tags.
authorstring—Author or team name.
draftboolean—Hides the entry from production builds.

Layout

The /changelog page uses a sticky two-column timeline:

  • Left column — date (formatted as “April 15, 2026”), version, and tags. Sticks to the top of the viewport as you scroll through a long entry, and advances to the next entry’s metadata when it comes into view.
  • Thick themed vertical line — border-primary left border on each entry’s content block. Per-release, not continuous.
  • Right column — entry title and MDX body content. Constrained to a readable max-width.

Using ChangelogEntry in entry bodies

Optionally, use the ChangelogEntry component from @publier/shell to add semantic type badges inside the MDX body for individual sub-changes. The type prop accepts: 'feature', 'fix', 'breaking', 'security', 'deprecation'.

import { ChangelogEntry } from '@publier/shell/components';
<ChangelogEntry date="2026-04-15" version="v1.0.0" type="feature" title="Docs template">
Full documentation scaffolding with sidebar, TOC, search, and snippet reuse.
</ChangelogEntry>
<ChangelogEntry date="2026-04-15" type="fix" title="Build flake on Linux">
Resolved intermittent failures when the build could not write to `dist/`.
</ChangelogEntry>

See ChangelogEntry for the full prop reference.