Repository navigation
feat(ui): share trace drawer as a closable SidePanel and polish Lens - #44473
Merged
Merged
Conversation
… outside press Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Larger Traces/Investigations switch, a subtle dot when an investigation is running or queued, and a bigger Lens title with a docs link. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The dev server answered GET /lens with the Lens page HTML because the UI route shadowed the proxy fallback rewrite. JSON API requests now go to the proxy before page routes, and a non-JSON success body raises a readable ApiError. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… bars Add local/no-arbitrary-design-value, scoped to TraceView and Lens, banning arbitrary font size, tracking, leading, radius, border and CSS property values. Map the Figma-export values onto the theme scale and replace hex colors with info/destructive tokens. Add PaneBar, a fixed-height bordered row, and build the step tree and span detail headers from it so their borders line up across the split. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
Author
|
I'll fix CI failures and address comments from users with write access. I'll skip comments containing "(aside)".
|
… a banner Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…o frame The SVG corner strokes did not snap to the same device pixels as the tab and card borders, leaving a visible offset at the join. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
|
The status, run counts, truncated agent legend and range span all repeated the Live toggle, runs table and range picker Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…for timers and observers SidePanel J/K/Esc now yields to menus and listboxes, not just dialogs. The step tree shortcut footer wraps instead of clipping in narrow columns. Replace hand-rolled timeout, keydown, media query and ResizeObserver effects with usehooks-ts, and drop routine doc comments. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent and status dropdowns are gone. One query box (react-prosemirror) takes free text plus key:value clauses (-key:value, key:*glob*) over name, agent, status, model, input and trace_id, with field and value autocomplete. The editor emits after a 150ms pause so typing no longer re-renders the runs view per keystroke, and the URL keeps only q. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Switching to an unvisited trace remounted the panel and flashed a loading skeleton. The drawer now keeps the previous trace visible, dimmed and inert, until the new one arrives. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The footer's run count only tracked how many pages had loaded and "Updated just now" never changed, so it carried no signal. The zoom clear button moves onto the timeline. Rows now render through @tanstack/react-virtual so scrolling deep into a range stays cheap Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… useDeferredValue Replaces keepPreviousData with the React pattern for showing stale content while fresh content loads. Load failures go through an error boundary that retries the query on reset. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t dialog Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
yujonglee-berri
approved these changes
Oct 4, 2026
yujonglee-berri
enabled auto-merge (squash)
October 4, 2026 01:59
Contributor
|
@greptile-apps wdyt |
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Contributor
Author
|
@greptileai review |
3 of 6 tasks
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
TLDR
Problem this solves:
How it solves it:
components/shared/SidePanel: outside press closes it, panel triggers keep it open, drag/arrow-key resize with clamped min width, width persisted to localStorage, exit animation preservedRunDrawernow renders throughSidePanelinstead of owning the chromeApiErrornaming the path and returned content type when JSON was expectedlocal/no-arbitrary-design-valueeslint rule plus atailwind-utilityhelper rule@tanstack/react-virtualso only rows near the viewport render as more pages loadkey:valueclauses (-key:valuenegation,key:*glob*wildcards) over name, agent, status, model, input, and trace_id, with field and value autocomplete and a 150ms debounced emit; the URL keeps onlyqIntentional product change: the trace drawer now closes when you press outside it, "Set up tracing" appears inside the empty runs table instead of above it, the Lens mode switch is centered in a notch connected to the card below, demo mode is marked by a blue toggle and frame instead of a banner line, the timeline's header strip is removed, the agent/status dropdowns are replaced by a single query box, and the runs footer is removed
User Flow
Before: an admin reviewing runs in Lens could only dismiss the drawer through its own controls and got no setup guidance on an empty table
https://litellm-domain/ui/lens/?tab=tracesand click a run; the drawer opens on the rightagentandstatusparamsJSON.parsewith a cryptic syntax errorAfter: the same review flow dismisses naturally, filters become one query, and an empty range shows the setup path in place
https://litellm-domain/ui/lens/?tab=tracesand click a run; the drawer opens on the rightagent:research status:errorin the query box (autocomplete offers fields and values); the URL keeps onlyqPre-Submission checklist
Link to Devin session: https://app.devin.ai/sessions/d46fbba3b52b4edb9a80edf15a0d27bc
Open in Devin Desktop: https://app.devin.ai/desktop/session/d46fbba3b52b4edb9a80edf15a0d27bc?variant=devin
Requested by: @yujonglee-berri