KQ-941 · LOG/TAIL
Log Tail
A log that follows its own floor. While it tails, each arriving line is pinned into view in a layout effect and travels 8px up on glide with its level rail drawing down beside it; scroll up and the tail breaks, holding the box where you left it while an opaque strip rises off the floor on snap counting what has arrived. The strip, End, and the Follow control all run scrollTop back down, and scrolling to the floor by hand latches the tail on again.
KQ-941 · LOG/TAIL
coldbrook / gate-relay
Waiting for lines. Start the feed.
Tailing · 0 lines · 0 held
Install
One command — the source lands in your repo. Or copy it from the Code tab.
$ pnpm dlx shadcn@latest add @kinetiq/log-tail
Props
- lines
- LogLine[]
- default —
- The buffer, oldest first; each line carries id, level, service, time and text. Cap it in the host — nothing here virtualises.
- tailing / defaultTailing
- boolean
- default true
- Controlled or initial follow state.
- onTailingChange
- (tailing: boolean) => void
- default —
- Fires from the break, the strip, the Follow control, and End.
- onPendingChange
- (pending: number) => void
- default —
- Fires when the count of lines that arrived while held changes.
- onAnnounce
- (sentence: string) => void
- default —
- The sentence the polite region just spoke.
- maxHeight
- number
- default 216
- Scroll ceiling for the box, in px.
- label
- string
- default "Log"
- Names the log region and heads the card.
- emptyLabel
- string
- default "Waiting for lines."
- Printed while the buffer is empty.
| Prop | Type | Default | Description |
|---|---|---|---|
| lines | LogLine[] | — | The buffer, oldest first; each line carries id, level, service, time and text. Cap it in the host — nothing here virtualises. |
| tailing / defaultTailing | boolean | true | Controlled or initial follow state. |
| onTailingChange | (tailing: boolean) => void | — | Fires from the break, the strip, the Follow control, and End. |
| onPendingChange | (pending: number) => void | — | Fires when the count of lines that arrived while held changes. |
| onAnnounce | (sentence: string) => void | — | The sentence the polite region just spoke. |
| maxHeight | number | 216 | Scroll ceiling for the box, in px. |
| label | string | "Log" | Names the log region and heads the card. |
| emptyLabel | string | "Waiting for lines." | Printed while the buffer is empty. |