Changelog Entry

A release grouped by change type, with breaking changes hoisted to the top whatever order they came in. Everything else in a changelog is optional reading; a breaking change is not.

src/components/ui/changelog-entry.tsx

About

From the component's own source, where it was written.

One release's notes, grouped by change type.

Breaking changes are hoisted to the top regardless of the order they were supplied in, and they carry their own tone. Everything else in a changelog is optional reading; a breaking change is the one thing that has to be seen, and burying it under "Features" is how a minor bump takes a service down.

The version is a heading and the date is secondary. People navigate a changelog by version, and a date-led entry forces a translation step every time.

Groups render in a fixed order — breaking, added, changed, fixed, removed, deprecated, security — rather than in object key order, so two releases are visually comparable.

Install

npx astralyx-ui add changelog-entry

Usage

import { ChangelogEntry } from '@/components/ui/changelog-entry'

<ChangelogEntry version="2.4.0" date={date} changes={changes} />

Composer

Change the props and the source below follows.

v2.4.0

Class merging moves to the compiled engine.

Breaking
  • `cn` no longer re-exports `clsx`. Import it from the package directly.
Security
  • Webhook signatures are now checked before the handler runs.
Added
  • `RequestBuilder`, `ResponseViewer` and `EndpointList`.
  • 30 developer-tooling components.
Changed
  • Header and footer bands use uniform padding.
Fixed
  • `Leaderboard` no longer remounts every row on each render.
Deprecated
  • `twMerge` re-export — use `cn`.
Props
tsx
<ChangelogEntry version="v2.4.0" date={date} changes={changes} />

API

Generated from the source, so it cannot fall behind the code. One table per exported component, then hooks, functions and types.

ChangelogEntry

One release's notes, grouped by change type.

Extends Omit<ComponentProps<'article'>, 'children'>.

PropTypeDefaultDescription
versionReactNoderequiredPeople navigate a changelog by version; a date-led entry forces a translation step every time.
dateDate——
changesPartial<Record<ChangeGroup, ReactNode[]>>requiredGroups: breaking, security, added, changed, fixed, deprecated, removed.
summaryReactNode——
prereleasebooleanfalse—
yankedbooleanfalseDims the entry and states plainly that it was withdrawn.
localestring'en-GB'—
groupLabelsPartial<Record<ChangeGroup, ReactNode>>——
prereleaseLabelReactNode'pre-release'—
yankedLabelReactNode'yanked'—
yankedNoteReactNode'This release was withdrawn. Do not upgrade to it.'—
orderfixed—Rendered in a fixed sequence rather than object key order, so two releases are visually comparable.

Functions

FunctionSignatureDescription
changelogGroupOrderChangeGroup[]—

Types

TypeDefinitionDescription
ChangeGroup
| 'breaking' | 'added' | 'changed' | 'fixed' | 'removed' | 'deprecated' | 'security'
—