From 56e8437a83d33f77ab8eca605eb8f84a4127cf97 Mon Sep 17 00:00:00 2001 From: arc53-machine <232052973+arc53-machine@users.noreply.github.com> Date: Wed, 23 Sep 2026 21:06:49 +0100 Subject: [PATCH] Drop the visible heading from the trace drawer The drawer opens straight onto the trace. Its title stays as the dialog's screen-reader name, and the unused subtitle string is removed from every locale. --- frontend/src/locale/de.json | 1 - frontend/src/locale/en.json | 1 - frontend/src/locale/es.json | 1 - frontend/src/locale/jp.json | 1 - frontend/src/locale/ru.json | 1 - frontend/src/locale/zh-TW.json | 1 - frontend/src/locale/zh.json | 1 - frontend/src/settings/traces/TraceSheet.tsx | 23 +++++++------------ .../e2e/specs/tier-a/execution-traces.spec.ts | 8 +++---- 9 files changed, 12 insertions(+), 26 deletions(-) diff --git a/frontend/src/locale/de.json b/frontend/src/locale/de.json index 90cdca21..2c1bceab 100644 --- a/frontend/src/locale/de.json +++ b/frontend/src/locale/de.json @@ -441,7 +441,6 @@ "viewRounds_one": "Trace anzeigen ({{count}} Runde)", "viewRounds_other": "Trace anzeigen ({{count}} Runden)", "title": "Ausführungs-Trace", - "subtitle": "Jeder Schritt hinter diesem Eintrag – Abruf, Modellaufrufe und Tool-Aufrufe – mit seiner Dauer.", "empty": "Für diesen Eintrag wurde kein Trace aufgezeichnet.", "failed": "Der Trace konnte nicht geladen werden.", "noSpans": "Für diese Ausführung wurde nichts aufgezeichnet.", diff --git a/frontend/src/locale/en.json b/frontend/src/locale/en.json index d02926ce..6ee9dfaf 100644 --- a/frontend/src/locale/en.json +++ b/frontend/src/locale/en.json @@ -446,7 +446,6 @@ "viewRounds_one": "View trace ({{count}} round)", "viewRounds_other": "View trace ({{count}} rounds)", "title": "Execution trace", - "subtitle": "Every step behind this entry — retrieval, model calls and tool calls — with its timing.", "empty": "No trace was recorded for this entry.", "failed": "Could not load the trace.", "noSpans": "Nothing was recorded for this run.", diff --git a/frontend/src/locale/es.json b/frontend/src/locale/es.json index e1a3c307..d0aa427c 100644 --- a/frontend/src/locale/es.json +++ b/frontend/src/locale/es.json @@ -441,7 +441,6 @@ "viewRounds_one": "Ver traza ({{count}} ronda)", "viewRounds_other": "Ver traza ({{count}} rondas)", "title": "Traza de ejecución", - "subtitle": "Cada paso detrás de esta entrada (recuperación, llamadas al modelo y llamadas a herramientas) con su duración.", "empty": "No se registró ninguna traza para esta entrada.", "failed": "No se pudo cargar la traza.", "noSpans": "No se registró nada en esta ejecución.", diff --git a/frontend/src/locale/jp.json b/frontend/src/locale/jp.json index ef316ca3..33a05be7 100644 --- a/frontend/src/locale/jp.json +++ b/frontend/src/locale/jp.json @@ -440,7 +440,6 @@ "viewRounds_one": "トレースを表示({{count}} ラウンド)", "viewRounds_other": "トレースを表示({{count}} ラウンド)", "title": "実行トレース", - "subtitle": "このエントリの各ステップ(検索、モデル呼び出し、ツール呼び出し)とその所要時間。", "empty": "このエントリのトレースは記録されていません。", "failed": "トレースを読み込めませんでした。", "noSpans": "この実行では何も記録されませんでした。", diff --git a/frontend/src/locale/ru.json b/frontend/src/locale/ru.json index bf090d6b..5e724a0b 100644 --- a/frontend/src/locale/ru.json +++ b/frontend/src/locale/ru.json @@ -455,7 +455,6 @@ "viewRounds_many": "Открыть трассировку ({{count}} раундов)", "viewRounds_other": "Открыть трассировку ({{count}} раунда)", "title": "Трассировка выполнения", - "subtitle": "Каждый шаг за этой записью — поиск, вызовы модели и инструментов — с длительностью.", "empty": "Для этой записи трассировка не сохранена.", "failed": "Не удалось загрузить трассировку.", "noSpans": "Для этого запуска ничего не записано.", diff --git a/frontend/src/locale/zh-TW.json b/frontend/src/locale/zh-TW.json index c7184ad8..fbc8b567 100644 --- a/frontend/src/locale/zh-TW.json +++ b/frontend/src/locale/zh-TW.json @@ -440,7 +440,6 @@ "viewRounds_one": "檢視追蹤({{count}} 輪)", "viewRounds_other": "檢視追蹤({{count}} 輪)", "title": "執行追蹤", - "subtitle": "此項目背後的每個步驟(檢索、模型呼叫和工具呼叫)及其耗時。", "empty": "此項目沒有記錄追蹤。", "failed": "無法載入追蹤。", "noSpans": "此次執行沒有記錄任何內容。", diff --git a/frontend/src/locale/zh.json b/frontend/src/locale/zh.json index 9db7d12f..c1db1fee 100644 --- a/frontend/src/locale/zh.json +++ b/frontend/src/locale/zh.json @@ -440,7 +440,6 @@ "viewRounds_one": "查看追踪({{count}} 轮)", "viewRounds_other": "查看追踪({{count}} 轮)", "title": "执行追踪", - "subtitle": "此条目背后的每一步(检索、模型调用和工具调用)及其耗时。", "empty": "此条目没有记录追踪。", "failed": "无法加载追踪。", "noSpans": "此次运行没有记录任何内容。", diff --git a/frontend/src/settings/traces/TraceSheet.tsx b/frontend/src/settings/traces/TraceSheet.tsx index 5a847c96..f459527f 100644 --- a/frontend/src/settings/traces/TraceSheet.tsx +++ b/frontend/src/settings/traces/TraceSheet.tsx @@ -4,13 +4,7 @@ import { useSelector } from 'react-redux'; import userService from '../../api/services/userService'; import Spinner from '../../components/Spinner'; -import { - Sheet, - SheetContent, - SheetDescription, - SheetHeader, - SheetTitle, -} from '../../components/ui/sheet'; +import { Sheet, SheetContent } from '../../components/ui/sheet'; import { selectToken } from '../../preferences/preferenceSlice'; import { formatDateTime } from '../../utils/dateTimeUtils'; import { Trace, TraceRef } from '../types'; @@ -76,17 +70,15 @@ export default function TraceSheet({ return ( !open && onClose()}> + {/* The waterfall speaks for itself: the title is for screen readers + only, and there is no description to announce. */} - - {t('settings.logs.trace.title')} - - {t('settings.logs.trace.subtitle')} - - -
+
{loading && (
@@ -104,7 +96,8 @@ export default function TraceSheet({ )} {traces.map((trace, index) => (
-
+ {/* Right padding keeps the first row clear of the close button. */} +
{traces.length > 1 && ( {t('settings.logs.trace.round', { n: index + 1 })} diff --git a/tests/e2e/specs/tier-a/execution-traces.spec.ts b/tests/e2e/specs/tier-a/execution-traces.spec.ts index 2f1f4653..e355b43d 100644 --- a/tests/e2e/specs/tier-a/execution-traces.spec.ts +++ b/tests/e2e/specs/tier-a/execution-traces.spec.ts @@ -106,8 +106,8 @@ test.describe('tier-a · execution traces', () => { await page.goto('/settings/logs'); await page.getByText('what do you remember about me?').first().click(); await page.getByRole('button', { name: 'View trace' }).click(); - const sheet = page.getByRole('dialog'); - await expect(sheet.getByText('Execution trace')).toBeVisible(); + const sheet = page.getByRole('dialog', { name: 'Execution trace' }); + await expect(sheet).toBeVisible(); await expect(sheet.getByText('execute_tool memory_view').first()).toBeVisible(); await sheet.getByText('execute_tool memory_view').first().click(); await expect(sheet.getByText('Arguments')).toBeVisible(); @@ -165,8 +165,8 @@ test.describe('tier-a · execution traces', () => { await page.goto('/settings/logs'); await page.getByText('how do I get started?').first().click(); await page.getByRole('button', { name: 'View trace' }).click(); - const sheet = page.getByRole('dialog'); - await expect(sheet.getByText('Execution trace')).toBeVisible(); + const sheet = page.getByRole('dialog', { name: 'Execution trace' }); + await expect(sheet).toBeVisible(); await sheet.getByText(/^retrieval/).first().click(); await expect(sheet.getByText('Retrieved chunks')).toBeVisible(); if (process.env.TRACE_SCREENSHOT_RAG) {