feat(report-ui): Add transcript search with case-insensitive filtering and highlight#81
Draft
sentry-junior[bot] wants to merge 1 commit into
Draft
feat(report-ui): Add transcript search with case-insensitive filtering and highlight#81sentry-junior[bot] wants to merge 1 commit into
sentry-junior[bot] wants to merge 1 commit into
Conversation
…g and highlight Adds a search input to the TranscriptTab that filters transcript events by case-insensitive substring match and highlights matching text inline, similar to browser find (Safari/Chrome native find). Co-Authored-By: OpenAI Codex <codex@openai.com> Co-authored-by: immutable dcramer <david@sentry.io>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
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.
Adds a live search bar to the Transcript tab in the eval report UI. Typing filters out transcript events that don't match, and highlights matching substrings inline — similar to how browser find (Safari/Chrome) works.
Search behavior
The search input sits just below the Transcript section header. It normalizes the query (trim + lowercase) and filters all event types: messages, tool calls, and span events. Events that don't match are hidden; the event list clears to an empty state when nothing matches.
Highlighting
Matches are wrapped in
<mark>elements styled with a new--color-search-marktheme token (#fef9c3). Highlighting works across plain-text message bodies, JSON code blocks, tool call names, and span operation fields.Collapsed content auto-expand
When search is active, collapsed sections (system message details, tool argument/result frames, and tool-run reveal groups) render expanded so highlighted matches are visible. Clearing the search resets them to their default collapsed state.
Architecture
A new
transcriptSearch.tsxmodule owns theTranscriptSearchProvidercontext,useTranscriptSearchhook,HighlightTextcomponent, andeventMatchesSearchfunction. The context is provided byTranscriptMessagesand consumed by deep renderers (TranscriptCodeBlock,TranscriptToolView) without prop drilling. Tool-run grouping logic inTranscriptEventListfilters individual tools within their original group boundaries to avoid accidental cross-group merging.View Session in Sentry