KQ-969 · ROLLBACK/ARC

Rollback Arc

Every version a service has worn, laid on one static arc with the newest at the frontier and each node's coordinates rounded before they reach an attribute. The deployed marker rides the curve rather than cutting the chord: one scalar motion value carries its position between version indices and useTransform derives cx and cy from it, so a rollback across three versions travels the arc on glide. Choosing an earlier node moves a hollow caret to it on snap and unfolds a roll-back row at a ResizeObserver-measured height, and only when the marker has settled does the version become current and the sentence get spoken.

KQ-969 · ROLLBACK/ARC
gate-relayon 2.14.0
deployed
2.14.0bad
chosen
2.14.0bad
note
Holds time out under the yard's clock

On 2.14.0 · chosen 2.14.0 · bad

Install

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

$ pnpm dlx shadcn@latest add @kinetiq/rollback-arc

Props

ref
React.Ref<HTMLDivElement>
default —
Reaches the root group element.
versions
ReleaseVersion[]
default —
Oldest first, frontier last: id, label, a good, bad or unknown status, and an optional note.
service
string
default —
Whose versions these are; printed in the head.
value / defaultValue
string
default the frontier
Controlled or initial deployed version id.
onValueChange
(id: string) => void
default —
Fires when a rollback settles, from the setter that committed it.
onChosenChange
(id: string) => void
default —
The caret's version — a state, so it also fires on the first commit.
onRollbackStart
(id: string) => void
default —
Fires from the press that started the travel.
rollbackLabel
(version: ReleaseVersion) => string
default "Roll back to <label>" or "Roll forward to <label>"
Copy on the confirm control; the default names the direction.
label
string
default "Version arc"
Names the arc for assistive technology.
className
string
default —
Merged onto the root element's classes.