You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Figma-style measurement in the new trace viewer: with a span selected, hold Alt and hover any other row to see the time delta between the two spans, drawn as a single measurement line.
How it works
Selection + Alt + hover → one measurement between the selected (anchor) span and the hovered row's span: a stub + vertical guide off the anchor bar's measured edge, elbowing into a 1px line that ends at the hovered span's start, with a duration chip.
Delta rule: disjoint spans → gap (anchor end → later start, same semantic as the existing sibling gaps); overlapping/contained spans → start-to-start offset ("how far into the run did this step start").
No selection → the existing all-consecutive-gaps overlay, restyled to the same measurement-line design (the old I-beam + pill DeltaIndicator is deleted; both modes render through one DeltaMeasureLine component).
Edges clamped by the viewport keep the true duration in the label; if the hovered span is fully off-screen, the line stops short of the row's edge arrow.
Implementation
New pure computeSpanDelta() in utils.ts next to computeSpanGaps, unit-tested (disjoint both directions, overlap, containment, identical starts, zero-duration, clamping, off-screen).
Hovered row derived from clientY in the existing timeline mousemove handler (now a single TimelineHover {fraction, rowIndex} state) — no per-row listeners, TimelineBar memoization untouched.
Overlay renders in the existing absolute, pointer-events-none layer, so it works across virtualized rows.
Avg deltas compare against the most recent benchmark run on main at the time of this run.
Metrics — TTFS: time to first step body execution · STSO: step-to-step overhead (gap between consecutive step bodies) · WO: workflow overhead (time outside step bodies, client start → last step body exit) · SL: stream latency (first chunk write → visible to the reader)
Scenarios — stream: one step that streams chunks back to the client; no hooks, so the run stays in turbo mode · hook + stream: registers a hook before the same streaming step, which exits turbo mode · 1020 steps: 1020 trivial sequential steps; STSO is measured between consecutive steps in the given step ranges
TTFS/WO compare client vs deployment clocks and SL compares the step runner’s clock vs the client’s (NTP-synced in CI). WO ends at the last step body exit, the closest observable proxy for the final step-completion request.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Alt+hover span measurement
CleanShot.2026-07-17.at.11.26.19.mp4
Figma-style measurement in the new trace viewer: with a span selected, hold Alt and hover any other row to see the time delta between the two spans, drawn as a single measurement line.
How it works
DeltaIndicatoris deleted; both modes render through oneDeltaMeasureLinecomponent).Implementation
computeSpanDelta()inutils.tsnext tocomputeSpanGaps, unit-tested (disjoint both directions, overlap, containment, identical starts, zero-duration, clamping, off-screen).clientYin the existing timeline mousemove handler (now a singleTimelineHover {fraction, rowIndex}state) — no per-row listeners,TimelineBarmemoization untouched.