Clicking a trace row in the eval detail view does nothing (UI stays on eval-level panel)

Open Beginner friendly
#391 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
1/5
Estimated time
1-3 hours
Newbie friendliness
82/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Quiet
Tech stack
typescript
Domain
frontend

Research direction

Start in apps/evalite-ui/app/routes/suite.$name.eval.$evalIndex.tsx and inspect TraceMenuItem alongside the route's Route.useSearch() handling. Verify that clicking a trace updates the URL with the trace index while preserving other search parameters, then confirm the per-trace panel and active indicator render; also check that the top Eval row clears the trace parameter.

Written by the indexing model from the issue text.

Description

Summary

In evalite@1.0.0-beta.16 and current v1, clicking a trace row in the eval detail page does not navigate to the per-trace view. The per-trace view is fully implemented — it just never mounts.

Reproduction

  1. pnpm run example (or any run with a case that produces ≥1 trace, e.g. anything using wrapAISDKModel).
  2. Open the UI, navigate to a suite, open an eval that has traces.
  3. Click any Trace N row in the left sidebar.

Expected: URL becomes /suite/<name>/eval/<index>?trace=<N-1> and the right panel swaps to Token Usage / Input / Output for that trace.

Actual: URL does not change; the right panel stays on the eval-level view. The border-l-4 border-primary active indicator also doesn't move.

Workaround: manually append ?trace=N to the URL — the per-trace panel renders correctly, confirming the route logic works and only the click navigation is broken.

Root cause

TraceMenuItem in apps/evalite-ui/app/routes/suite.$name.eval.$evalIndex.tsx accepts a traceIndex prop but the Link never forwards it to the route's search. The route reads trace from Route.useSearch() to choose which panel to render, so if trace is never written to the URL, the per-trace view never mounts.

Proposed fix

PR up: a four-line addition to the Linksearch={(prev) => ({ ...prev, trace: props.traceIndex })} — that preserves other search params (timestamp, q) and still clears ?trace for the top "Eval" row (where traceIndex is undefined). The validateSearch schema already declares trace: z.number().optional(), so no schema change is required.

Environment

  • evalite@1.0.0-beta.16 (reproduced from the shipped bundle), v1 branch (reproduced in source)
  • main (v0.x) uses different route files and is unaffected.
Dominant language
TypeScript
Stars
1.7k
Forks
102
PR merge metrics
No merged PRs in 30d

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from mattpocock/evalite

All issues in mattpocock/evalite

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.