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