Conversation
| </DropdownMenuTrigger> | ||
| </TagsDropdown> | ||
| {tags.map(({ name, color }) => ( | ||
| <Badge variant="outline" className="rounded-full gap-1"> |
| </DropdownMenuTrigger> | ||
| </TagsDropdown> | ||
| {tags.map(({ name, color }) => ( | ||
| <Badge variant="outline" className="rounded-full gap-1"> |
Greptile SummaryThis PR refactors the trace and span view headers to display all tags inline as
Confidence Score: 4/5Safe to merge after fixing the duplicate DropdownMenuTrigger nesting in span-tags-list.tsx. The overall change is straightforward UI — displaying tags inline instead of only inside a dropdown. The trace side (trace-tags-list.tsx) is clean. The only concrete issue is the accidental double-nested DropdownMenuTrigger asChild in span-tags-list.tsx, which is a one-line fix and does not affect data integrity or security. frontend/components/tags/span-tags-list.tsx — remove the outer duplicate DropdownMenuTrigger wrapper (lines 158-165).
|
| Filename | Overview |
|---|---|
| frontend/components/tags/span-tags-list.tsx | New component showing span tags as inline badges; contains a duplicate nested DropdownMenuTrigger asChild (lines 158-165) that is absent from the equivalent trace-tags-list.tsx. |
| frontend/components/tags/trace-tags-list.tsx | New component showing trace tags as inline badges; correctly structured with a single DropdownMenuTrigger wrapping the Tags button. |
| frontend/components/traces/span-controls.tsx | Renders SpanTagsList inline in the span controls header so all tags are visible without opening the dropdown. |
| frontend/components/traces/trace-view/header/index.tsx | Renders TraceTagsList inline in the trace view header; logic is correct and consistent with the existing header layout. |
| .gitignore | Widens the .agent-team/TODO.md ignore entry to ignore the entire .agent-team/ directory — benign cleanup. |
Reviews (1): Last reviewed commit: "fix: add keys to mapped badges" | Re-trigger Greptile
| <DropdownMenuTrigger asChild> | ||
| <DropdownMenuTrigger asChild> | ||
| <Button variant="outline" className={cn("h-6 text-xs px-1.5 gap-1.5", className)}> | ||
| <Tag className="size-3.5" /> | ||
| Tags | ||
| </Button> | ||
| </DropdownMenuTrigger> | ||
| </DropdownMenuTrigger> |
There was a problem hiding this comment.
Duplicate nested
DropdownMenuTrigger
There are two nested DropdownMenuTrigger asChild wrappers here — the outer one (line 158) wraps the inner one (line 159). With Radix UI's asChild, each trigger clones its immediate child and merges event handlers/refs. The outer trigger will clone the inner trigger, and the inner trigger will clone the Button, so the Button ends up with two layers of trigger wiring. This is clearly unintentional — compare to trace-tags-list.tsx which correctly has a single DropdownMenuTrigger.
| <DropdownMenuTrigger asChild> | |
| <DropdownMenuTrigger asChild> | |
| <Button variant="outline" className={cn("h-6 text-xs px-1.5 gap-1.5", className)}> | |
| <Tag className="size-3.5" /> | |
| Tags | |
| </Button> | |
| </DropdownMenuTrigger> | |
| </DropdownMenuTrigger> | |
| <DropdownMenuTrigger asChild> | |
| <Button variant="outline" className={cn("h-6 text-xs px-1.5 gap-1.5", className)}> | |
| <Tag className="size-3.5" /> | |
| Tags | |
| </Button> | |
| </DropdownMenuTrigger> |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 137f91d. Configure here.
| Tags | ||
| </Button> | ||
| </DropdownMenuTrigger> | ||
| </DropdownMenuTrigger> |
There was a problem hiding this comment.
Doubled DropdownMenuTrigger breaks span tags dropdown
High Severity
In span-tags-list.tsx, the Button is wrapped by two nested DropdownMenuTrigger asChild components. This accidental duplication registers multiple Radix triggers, leading to duplicated event handlers and ARIA attributes. The dropdown will likely malfunction, failing to open or toggling erratically.
Reviewed by Cursor Bugbot for commit 137f91d. Configure here.
| </TagsDropdown> | ||
| {tags.map(({ name, color, id }) => ( | ||
| <Badge key={id} variant="outline" className="rounded-full gap-1"> | ||
| <div className="rounded-full size-2.5" style={{ backgroundColor: color }} /> |
There was a problem hiding this comment.
Missing fallback color for tags without a color
Medium Severity
The color dot for tags displayed in the SpanTagsList component is invisible when a tag's color property is undefined. This is a visual regression, as the backgroundColor style is applied directly without a fallback, unlike other tag rendering components that use a bg-gray-300 default.
Reviewed by Cursor Bugbot for commit 137f91d. Configure here.


List all tags in trace view header and span view header
Note
Low Risk
Mostly UI refactor to render tags as badges instead of a compact count, with minimal behavioral changes; small risk of layout/regression in dropdown trigger rendering and tag color handling.
Overview
Updates trace and span tag controls to always display all applied tags inline as
Badges next to a simplified "Tags" dropdown button, replacing the prior compact dot/count button UI.Renames/rewires usages to
TraceTagsListandSpanTagsListin the trace header and span controls, and adjusts.gitignoreto ignore the entire.agent-team/directory.Reviewed by Cursor Bugbot for commit 137f91d. Bugbot is set up for automated code reviews on this repo. Configure here.