Skip to content

fix(conversations): Redesign the timeline loading skeleton#119103

Merged
priscilawebdev merged 11 commits into
masterfrom
worktree-fix-conversation-timeline-skeleton
Jul 8, 2026
Merged

fix(conversations): Redesign the timeline loading skeleton#119103
priscilawebdev merged 11 commits into
masterfrom
worktree-fix-conversation-timeline-skeleton

Conversation

@priscilawebdev

@priscilawebdev priscilawebdev commented Jul 7, 2026

Copy link
Copy Markdown
Member

Before

image

After

image

@github-actions github-actions Bot added the Scope: Frontend Automatically applied to PRs that change frontend components label Jul 7, 2026
Add ConversationViewSkeletonNew, a loading placeholder for the redesigned
timeline tab that mirrors the real AiSpanTimeline render: a bordered span-row
card (icon, title/tool-name, optional secondary, metric + duration columns,
timeline bar) on the left and the fixed-width span-detail card on the right.

Wire it into ConversationViewContentNew (redesign path only) and add the
missing Trace-link placeholder to the summary header skeleton. The legacy
ConversationViewSkeleton is left untouched.

Co-Authored-By: Claude <noreply@anthropic.com>
Extract ConversationTimelineLayout so the live timeline view and its loading
skeleton render into the same two-column shell instead of hand-duplicating the
wrapper markup, which had already started to drift (the skeleton detail header
used a tighter gap than the real card).

Also fix the stale comment claiming the timeline tab still uses the legacy
span-detail skeleton, and key the skeleton rows by content rather than array
index.

Co-Authored-By: Claude <noreply@anthropic.com>
Extract SpanDetailCard so ConversationSpanDetail and the loading skeleton share
the card's outer geometry (border, radius, padding, height) instead of each
declaring it, keeping the box the content lands in identical across the two.

Also drop null/false noise from the timeline skeleton row table via optional
props.

Co-Authored-By: Claude <noreply@anthropic.com>
priscilawebdev and others added 2 commits July 8, 2026 09:05
…nelNew

Move the isLoading branch into MessagesPanelNew via an optional isLoading
prop so the panel renders its own skeleton, instead of the view picking
between MessagesPanelSkeleton and MessagesPanelNew at the call site. The
skeleton is now internal to the module. No behavior change.

Co-Authored-By: Claude <noreply@anthropic.com>
The timeline loading skeleton placed the metric and duration placeholders
in a single flex-end block with no reserved widths, so the right edge
snapped to fixed columns when real content loaded. Mirror TimelineRow's
100px/56px columns and flex-1 secondary spacer so the layout no longer
shifts on load.

Co-Authored-By: Claude <noreply@anthropic.com>
priscilawebdev and others added 2 commits July 8, 2026 09:12
The span-detail skeleton drew a full-width borderBottom under the tab
placeholders, but the real flat TabList has no such divider (only a 2px
accent under the selected tab). Drop the divider and widen the tab-label
placeholders so the skeleton matches the loaded layout.

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Drop the whole-view ConversationViewSkeletonNew early return and move each
skeleton into the component that renders it: the timeline skeleton lives in
AiSpanTimeline (behind an isLoading prop) and the span-detail skeleton in
ConversationSpanDetail (isLoading prop, node now optional). The view passes
isLoading to each panel, mirroring MessagesPanelNew. Delete the now-unused
conversationViewSkeleton file.

Co-Authored-By: Claude <noreply@anthropic.com>
Widen the title placeholders in the timeline loading skeleton so they read
more like real span/tool labels, and inline the span-detail visibility check
at its single use site.

Co-Authored-By: Claude <noreply@anthropic.com>
Switch the timeline skeleton title/secondary placeholders from fixed px to
percentage widths so they scale with the pane instead of clipping or looking
stubby, and slim the token/duration columns (100/56 -> 64/44px) so rows read
well down to narrow (iPhone SE) widths.

Co-Authored-By: Claude <noreply@anthropic.com>
…sation-timeline-skeleton

# Conflicts:
#	static/app/views/explore/conversations/components/messagesPanelNew.tsx
#	static/app/views/insights/pages/agents/components/aiSpanTimeline.tsx
@priscilawebdev priscilawebdev marked this pull request as ready for review July 8, 2026 08:44
@priscilawebdev priscilawebdev requested a review from a team as a code owner July 8, 2026 08:44
@priscilawebdev priscilawebdev merged commit 7869925 into master Jul 8, 2026
72 checks passed
@priscilawebdev priscilawebdev deleted the worktree-fix-conversation-timeline-skeleton branch July 8, 2026 09:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Scope: Frontend Automatically applied to PRs that change frontend components

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants