KQ-965 · BUILD/LOG

Build Log

A build read the way an engineer reads one: step headers that fold, with the step in flight opening itself and tailing, so new lines arrive at the bottom from 4px away on glide while the oldest leave the tail window and the body holds one steady, ResizeObserver-measured height. A step that finishes folds back to its header unless the reader has pressed one, because a reader's choice outranks the script. When the build settles the summary stamps its duration: a pass lands from 1.2× on recoil, and a failure arrives on snap with no bounce at all.

KQ-965 · BUILD/LOG
dock-worker · build 8120 of 5 steps · 0 s

—

Install

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

$ pnpm dlx shadcn@latest add @kinetiq/build-log

Props

ref
React.Ref<HTMLDivElement>
default —
Reaches the root group element.
steps
BuildStep[]
default —
The build, in order: id, name, status, seconds and every line the step has printed, oldest first.
open / defaultOpen
string[]
default —
Controlled or initial set of open step ids; without one the log follows the step in flight.
onOpenChange
(ids: string[]) => void
default —
Fires from the press or key that folded or unfolded a step.
onBuildChange
(reading: BuildReading) => void
default —
The whole reading — phase, step, index, passed count and total seconds — reported from the first commit as well, because it is a state.
tailLines
number
default 6
How many lines a running step shows.
totalSeconds
number
default the steps added up
What the summary stamps.
formatSeconds
(seconds: number) => string
default seconds, then m:ss
Renders every duration.
label
string
default "Build"
Names the log for assistive technology and prints above it.
className
string
default —
Merged onto the root element's classes.