Skip to content

Commit 44dd5b3

Browse files
another one
1 parent be53540 commit 44dd5b3

File tree

2 files changed

+17
-76
lines changed

2 files changed

+17
-76
lines changed

mcpjam-inspector/client/src/components/CiEvalsTab.tsx

Lines changed: 14 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@ import {
1111
} from "@/components/ui/resizable";
1212
import { useSharedAppState } from "@/state/app-state-context";
1313
import { useCiEvalsRoute, navigateToCiEvalsRoute } from "@/lib/ci-evals-router";
14-
import { aggregateSuite, groupSuitesByTag, groupRunsByCommit } from "./evals/helpers";
15-
import { OverviewPanel } from "./evals/overview-panel";
14+
import { aggregateSuite, groupRunsByCommit } from "./evals/helpers";
1615
import { useEvalMutations } from "./evals/use-eval-mutations";
1716
import { useEvalQueries } from "./evals/use-eval-queries";
1817
import { useEvalHandlers } from "./evals/use-eval-handlers";
@@ -35,7 +34,6 @@ export function CiEvalsTab({ convexWorkspaceId }: CiEvalsTabProps) {
3534

3635
const [deletingSuiteId, setDeletingSuiteId] = useState<string | null>(null);
3736
const [deletingRunId, setDeletingRunId] = useState<string | null>(null);
38-
const [filterTag, setFilterTag] = useState<string | null>(null);
3937
const [sidebarMode, setSidebarMode] = useState<SidebarMode>("runs");
4038
const [hasAutoSwitchedMode, setHasAutoSwitchedMode] = useState(false);
4139

@@ -89,9 +87,6 @@ export function CiEvalsTab({ convexWorkspaceId }: CiEvalsTabProps) {
8987
[queries.sortedSuites],
9088
);
9189

92-
const tagGroups = useMemo(() => groupSuitesByTag(sdkSuites), [sdkSuites]);
93-
const hasTags = tagGroups.some((g) => g.tag !== "Untagged");
94-
9590
const commitGroups = useMemo(
9691
() => groupRunsByCommit(sdkSuites),
9792
[sdkSuites],
@@ -117,12 +112,6 @@ export function CiEvalsTab({ convexWorkspaceId }: CiEvalsTabProps) {
117112
commitGroups.find((g) => g.commitSha === selectedCommitSha) ?? null
118113
);
119114
}, [commitGroups, selectedCommitSha]);
120-
const allTags = useMemo(
121-
() =>
122-
Array.from(new Set(sdkSuites.flatMap((e) => e.suite.tags ?? []))).sort(),
123-
[sdkSuites],
124-
);
125-
126115
const selectedSuiteEntry = useMemo(() => {
127116
if (!selectedSuiteId) return null;
128117
return (
@@ -166,10 +155,6 @@ export function CiEvalsTab({ convexWorkspaceId }: CiEvalsTabProps) {
166155
navigateToCiEvalsRoute({ type: "suite-overview", suiteId });
167156
}, []);
168157

169-
const handleSelectOverview = useCallback(() => {
170-
navigateToCiEvalsRoute({ type: "list" });
171-
}, []);
172-
173158
const handleSelectCommit = useCallback((commitSha: string) => {
174159
navigateToCiEvalsRoute({ type: "commit-detail", commitSha });
175160
}, []);
@@ -293,11 +278,7 @@ export function CiEvalsTab({ convexWorkspaceId }: CiEvalsTabProps) {
293278
suites={sdkSuites}
294279
selectedSuiteId={selectedSuiteId}
295280
onSelectSuite={handleSelectSuite}
296-
onSelectOverview={handleSelectOverview}
297-
isOverviewSelected={!selectedSuiteId && route.type !== "commit-detail"}
298281
isLoading={queries.isOverviewLoading}
299-
filterTag={filterTag}
300-
hasTags={true}
301282
sidebarMode={sidebarMode}
302283
onSidebarModeChange={setSidebarMode}
303284
commitGroups={commitGroups}
@@ -333,18 +314,19 @@ export function CiEvalsTab({ convexWorkspaceId }: CiEvalsTabProps) {
333314
</div>
334315
</div>
335316
) : route.type === "list" || !selectedSuite ? (
336-
<OverviewPanel
337-
suites={sdkSuites}
338-
allTags={allTags}
339-
filterTag={filterTag}
340-
onFilterTagChange={setFilterTag}
341-
onSelectSuite={handleSelectSuite}
342-
onRerunSuite={(suiteId) => {
343-
const entry = sdkSuites.find((e) => e.suite._id === suiteId);
344-
if (entry) handlers.handleRerun(entry.suite);
345-
}}
346-
allCommitGroups={commitGroups}
347-
/>
317+
<div className="flex-1 flex items-center justify-center">
318+
<div className="text-center max-w-md mx-auto p-8">
319+
<div className="w-20 h-20 bg-muted rounded-full flex items-center justify-center mx-auto mb-6">
320+
<GitBranch className="h-10 w-10 text-muted-foreground" />
321+
</div>
322+
<h2 className="text-2xl font-semibold text-foreground mb-2">
323+
Select a suite
324+
</h2>
325+
<p className="text-sm text-muted-foreground">
326+
Choose a CI suite or commit from the sidebar to inspect runs and test iterations.
327+
</p>
328+
</div>
329+
</div>
348330
) : queries.isSuiteDetailsLoading ? (
349331
<div className="flex h-full items-center justify-center">
350332
<div className="text-center">

mcpjam-inspector/client/src/components/evals/ci-suite-list-sidebar.tsx

Lines changed: 3 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { useState, useEffect, useMemo } from "react";
2-
import { BarChart3 } from "lucide-react";
32
import { cn } from "@/lib/utils";
43
import type { CommitGroup, EvalSuiteOverviewEntry } from "./types";
54
import { TagBadges } from "./tag-editor";
@@ -20,12 +19,7 @@ interface CiSuiteListSidebarProps {
2019
suites: EvalSuiteOverviewEntry[];
2120
selectedSuiteId: string | null;
2221
onSelectSuite: (suiteId: string) => void;
23-
onSelectOverview: () => void;
24-
isOverviewSelected: boolean;
2522
isLoading?: boolean;
26-
filterTag?: string | null;
27-
onFilterTagChange?: (tag: string | null) => void;
28-
hasTags: boolean;
2923
sidebarMode: SidebarMode;
3024
onSidebarModeChange: (mode: SidebarMode) => void;
3125
commitGroups: CommitGroup[];
@@ -77,11 +71,7 @@ export function CiSuiteListSidebar({
7771
suites,
7872
selectedSuiteId,
7973
onSelectSuite,
80-
onSelectOverview,
81-
isOverviewSelected,
8274
isLoading = false,
83-
filterTag,
84-
hasTags,
8575
sidebarMode,
8676
onSidebarModeChange,
8777
commitGroups,
@@ -90,15 +80,11 @@ export function CiSuiteListSidebar({
9080
}: CiSuiteListSidebarProps) {
9181
useTick(); // keep "Xm ago" labels ticking
9282

93-
const filteredSuites = filterTag
94-
? suites.filter((e) => e.suite.tags?.includes(filterTag))
95-
: suites;
96-
9783
// Group suites by base name (strip trailing timestamps/parenthetical suffixes
9884
// that some SDK users append, e.g. "Suite Name (2026-03-12 15:20:43)")
9985
const groupedSuites = useMemo(() => {
10086
const groups = new Map<string, EvalSuiteOverviewEntry[]>();
101-
for (const entry of filteredSuites) {
87+
for (const entry of suites) {
10288
const rawName = entry.suite.name || "Untitled suite";
10389
// Strip trailing " (YYYY-MM-DD ...)" or " (timestamp)" patterns
10490
const baseName = rawName.replace(/\s*\(\d{4}-\d{2}-\d{2}[^)]*\)\s*$/, "").trim() || rawName;
@@ -116,13 +102,7 @@ export function CiSuiteListSidebar({
116102
});
117103
}
118104
return groups;
119-
}, [filteredSuites]);
120-
121-
const uniqueSuiteCount = groupedSuites.size;
122-
123-
const failCount = suites.filter(
124-
(e) => e.latestRun?.result === "failed",
125-
).length;
105+
}, [suites]);
126106

127107
return (
128108
<div className="flex h-full flex-col">
@@ -153,27 +133,6 @@ export function CiSuiteListSidebar({
153133
</div>
154134
</div>
155135

156-
{/* Dashboard button — always visible regardless of sidebar mode */}
157-
<div className="px-3 py-2 border-b">
158-
<button
159-
onClick={onSelectOverview}
160-
className={cn(
161-
"w-full flex items-center gap-2 rounded-md px-2.5 py-1.5 text-left text-xs font-medium transition-colors cursor-pointer border border-transparent",
162-
isOverviewSelected
163-
? "bg-primary/15 text-primary border-primary/30"
164-
: "text-muted-foreground hover:bg-accent hover:text-foreground hover:border-border",
165-
)}
166-
>
167-
<BarChart3 className="h-3.5 w-3.5 shrink-0" />
168-
<span className="flex-1">Dashboard</span>
169-
{failCount > 0 && (
170-
<span className="shrink-0 flex h-4 min-w-[16px] items-center justify-center rounded-full bg-destructive px-1 text-[9px] font-bold text-destructive-foreground">
171-
{failCount}
172-
</span>
173-
)}
174-
</button>
175-
</div>
176-
177136
{sidebarMode === "runs" ? (
178137
<CommitListSidebar
179138
commitGroups={commitGroups}
@@ -187,7 +146,7 @@ export function CiSuiteListSidebar({
187146
<div className="p-4 text-center text-xs text-muted-foreground">
188147
Loading suites...
189148
</div>
190-
) : filteredSuites.length === 0 ? (
149+
) : suites.length === 0 ? (
191150
<div className="p-4 text-center text-xs text-muted-foreground">
192151
No SDK suites found.
193152
</div>

0 commit comments

Comments
 (0)