## When to use

Recurring product announcements where users care about the cumulative trail (engineers, power users, paid tiers). Distinct from toast-ui (single ephemeral notification), feed-ui (top-layer notification queue), and timeline-ui (single-actor narrative). Composed inline; not a routed page — consumers choose the surface (drawer, sidebar, settings tab).

## Basic — three releases

Section-grouped layout (GitHub / Linear convention): each release carries a version + date header, then per-section eyebrows (Added / Changed / Fixed / Deprecated / Removed) followed by bulleted prose. Sections are grouped, not tagged per row — variable tag widths break left-edge alignment of prose; eyebrow + bullets keep one consistent reading column.

What's new 3 releases in the last 30 days
v2.3.0 Latest March 12, 2026 Added

- Bulk-edit mode for the data-table — multi-select rows, then update column values in one pass.
- CSV export now respects the visible-columns filter.

Fixed

- Resolved a sort-stability bug when two rows had identical sort keys.

v2.2.1 March 5, 2026 Fixed

- API rate-limit headers (`X-RateLimit-*`) now surface in client SDKs.
- Date-range picker no longer resets to today when reopening with a saved selection.

v2.2.0 February 26, 2026 Added

- Workspace-level audit log — see who did what across all members.

Changed

- Toast notifications gained an `Undo` affordance for destructive actions.

Deprecated

- Legacy `/v1/export` endpoint will be removed in v3.0. Migrate to `/v2/jobs/export`.

## Composition rules

- Newest first — top-down chronological. The most recent release is the first the user sees; load-older appends below.
- Latest tag on the newest entry — a `variant="primary"` "Latest" tag next to the top version disambiguates which is the current shipping release.
- Date in subtle text — date sits in `color="subtle"` typography to the right of the version; never the primary read. Absolute date (March 12, 2026) — never relative for a permanent changelog.
- Group by section, don't tag per row — Keep-a-Changelog sections (Added / Changed / Fixed / Deprecated / Removed / Security) are eyebrow labels above bulleted prose, not per-row tag pills. Variable tag widths (Added 3-letter, Deprecated 9-letter) break left-edge alignment; eyebrow headers keep one consistent reading column.
- Eyebrow color encodes severity — Added (primary), Fixed (success), Deprecated (warning), Removed/Security (danger). Changed uses the default fg. Same vocabulary every release.
- Bullets stay tight — one sentence per change, code spans for endpoints / config keys. If a change needs three paragraphs, link out to a docs page; the changelog is a scan surface.
- Footer affordance is "View all", not pagination — most users don't want page 47. Link to a dedicated /releases route; advanced users follow.

## Cross-references

- card-ui · tag-ui · list-ui · divider-ui — primitives composed here.
- admin-shell — common surface for the Changelog nav item; this pattern slots into a sidebar drawer or settings tab.
- Keep-a-Changelog spec — section-tag vocabulary source.