From 5dc4b5c925e8e3ccc3e2ddf0ff31cb4c1f4447ca Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Tue, 8 Sep 2026 23:06:34 +0900 Subject: [PATCH] feat(ui): move trace attempts selector to viewer header (#11189) Co-authored-by: Hiroshi Ogawa <4232207+hi-ogawa@users.noreply.github.com> Co-authored-by: Codex --- .../components/trace/TraceArtifacts.vue | 48 +++++-------------- .../client/components/trace/TraceViewPane.vue | 27 +++++++++-- packages/ui/client/composables/trace-view.ts | 21 +++++--- test/ui/test/trace.spec.ts | 32 ++++++++----- 4 files changed, 72 insertions(+), 56 deletions(-) diff --git a/packages/ui/client/components/trace/TraceArtifacts.vue b/packages/ui/client/components/trace/TraceArtifacts.vue index 38dd0adb4..3902a0601 100644 --- a/packages/ui/client/components/trace/TraceArtifacts.vue +++ b/packages/ui/client/components/trace/TraceArtifacts.vue @@ -1,48 +1,24 @@ diff --git a/packages/ui/client/components/trace/TraceViewPane.vue b/packages/ui/client/components/trace/TraceViewPane.vue index 66b85f346..df6e9d2a1 100644 --- a/packages/ui/client/components/trace/TraceViewPane.vue +++ b/packages/ui/client/components/trace/TraceViewPane.vue @@ -2,7 +2,7 @@ import type { TraceSelection } from '~/composables/trace-view' import { computed } from 'vue' import IconButton from '~/components/IconButton.vue' -import { closeTrace, getSelectedTrace, getTraceAttemptLabel, showTraceSelectorHighlight } from '~/composables/trace-view' +import { closeTrace, getSelectedTrace, getTraceAttemptLabel, getTraceAttemptMap, selectActiveTraceAttempt, showTraceSelectorHighlight } from '~/composables/trace-view' import TraceView from './TraceView.vue' const props = defineProps<{ @@ -11,6 +11,14 @@ const props = defineProps<{ const trace = computed(() => getSelectedTrace(props.selection)) const attemptLabel = computed(() => trace.value ? getTraceAttemptLabel(trace.value) : '') +const traceAttempts = computed(() => [...getTraceAttemptMap(props.selection.test.artifacts)].map(([key, trace]) => ({ + key, + label: getTraceAttemptLabel(trace) || 'Initial run', +}))) +const selectedAttemptKey = computed({ + get: () => props.selection.attemptKey ?? '0:0', + set: selectActiveTraceAttempt, +})