From d7077bee72070b63bdc67281ff693c2241bca860 Mon Sep 17 00:00:00 2001 From: "sentry-junior[bot]" <264270552+sentry-junior[bot]@users.noreply.github.com> Date: Fri, 14 Aug 2026 01:21:29 +0000 Subject: [PATCH 01/12] feat(dashboard): Stack sidebar annotations Co-Authored-By: David Cramer Co-Authored-By: David Cramer --- .../client/conversations/ConversationMeta.tsx | 61 +++++++-- .../tests/telemetry-components.test.tsx | 16 ++- packages/junior-github/src/annotations.ts | 73 ++++------- packages/junior-github/src/plugin.ts | 8 +- .../junior-github/tests/annotations.test.ts | 122 ++++++++++-------- packages/junior-plugin-api/src/annotations.ts | 6 +- 6 files changed, 155 insertions(+), 131 deletions(-) diff --git a/packages/junior-dashboard/src/client/conversations/ConversationMeta.tsx b/packages/junior-dashboard/src/client/conversations/ConversationMeta.tsx index 8d2b8057e2..5f9619bc31 100644 --- a/packages/junior-dashboard/src/client/conversations/ConversationMeta.tsx +++ b/packages/junior-dashboard/src/client/conversations/ConversationMeta.tsx @@ -96,23 +96,55 @@ export function hasConversationAnnotations( ); } -/** Render annotations selected by plugins for a conversation row. */ +/** Render plugin annotations as a newest-first stack in a conversation row. */ export function ConversationSidebarAnnotations(props: { annotations: ConversationDetailReport["sidebarAnnotations"] | undefined; }) { - if (!props.annotations?.length) return null; - return props.annotations.map((summary) => ( - annotation.label).join(", "); + return ( + + {annotations.map((annotation, index) => ( +
  • + {annotation.icon ? ( + + ) : null} + {annotation.label} +
  • + ))} + + } + label="Linked work" + triggerClassName="min-w-0" > - {summary.icon ? : null} - - {summary.label} + + {annotations.map((annotation, index) => ( + + {annotation.icon ? ( + + ) : null} + + {annotation.label} + + + ))} - - )); +
    + ); } type SidebarAnnotationIconName = NonNullable< @@ -149,7 +181,10 @@ function SidebarAnnotationIcon(props: { }) { const presentation = SIDEBAR_ICON_PRESENTATION[props.icon]; return ( - +