KQ-967 · RELEASE/NOTES

Release Notes

The note a release writes about itself while it is still being cut: commits arrive as props and the card groups them into added, changed, fixed and removed, each group with a count that cross-fades in one cell. A landing line arrives from 4px away on glide, staggered inside its group by cascade, while the lines already there travel under layout on the same spring, so a new entry pushing the rest down reads as a shift rather than a bounce. Pressing a line swaps it for an input in the same cell, focused as it arrives; Enter or blur commits, Escape reverts, and an edited line keeps a quiet edited mark.

KQ-967 · RELEASE/NOTES
ledger-api 2.14.03 entriescut on day 214 · straight from the commits

Added1

Changed1

Fixed1

2.14.0 · 3 of 10 commits · 3 groups

Install

One command — the source lands in your repo. Or copy it from the Code tab.

$ pnpm dlx shadcn@latest add @kinetiq/release-notes

Props

ref
React.Ref<HTMLDivElement>
default —
Reaches the root group element.
commits
ReleaseCommit[]
default —
The landed commits, in the order they landed: id, kind, the line as written, and an optional scope.
version
string
default —
The release being written.
service
string
default —
What the release is of; printed before the version.
dateLabel
string
default —
The release date as a string — the card never reads a clock.
edits / defaultEdits
Record<string, string>
default {}
Controlled or initial per-commit text overrides, keyed by commit id.
onEditsChange
(edits: Record<string, string>) => void
default —
Fires from the setter that committed an edit.
onEntryCommit
(id: string, text: string) => void
default —
Fires once per committed line, with the text it now reads.
onEditingChange
(id: string | null) => void
default —
Which line is open for editing — a state, so it also fires on mount.
label
string
default "Release notes"
Names the card for assistive technology.
className
string
default —
Merged onto the root element's classes.