From 841c6c7d02e9169a458e2a514f4efa1f71badcf7 Mon Sep 17 00:00:00 2001 From: Roo Code Date: Sat, 6 Sep 2025 20:56:19 +0000 Subject: [PATCH 1/7] feat: show dash instead of zero for missing data on evals page --- apps/web-roo-code/src/app/evals/evals.tsx | 26 ++++++++++++-------- apps/web-roo-code/src/lib/format-currency.ts | 7 +++++- apps/web-roo-code/src/lib/format-duration.ts | 6 ++++- apps/web-roo-code/src/lib/format-score.ts | 7 +++++- apps/web-roo-code/src/lib/format-tokens.ts | 6 ++++- 5 files changed, 38 insertions(+), 14 deletions(-) diff --git a/apps/web-roo-code/src/app/evals/evals.tsx b/apps/web-roo-code/src/app/evals/evals.tsx index 6b619de2b82..07570599607 100644 --- a/apps/web-roo-code/src/app/evals/evals.tsx +++ b/apps/web-roo-code/src/app/evals/evals.tsx @@ -129,15 +129,13 @@ export function Evals({
{run.label}
-
- {formatTokens(run.modelInfo?.contextWindow ?? 0)} -
+
{formatTokens(run.modelInfo?.contextWindow)}
-
{formatCurrency(run.modelInfo?.inputPrice ?? 0)}
+
{formatCurrency(run.modelInfo?.inputPrice)}
/
-
{formatCurrency(run.modelInfo?.outputPrice ?? 0)}
+
{formatCurrency(run.modelInfo?.outputPrice)}
{formatDuration(run.taskMetrics.duration)} @@ -150,19 +148,27 @@ export function Evals({ {formatCurrency(run.taskMetrics.cost)} - {formatScore(run.languageScores?.go ?? 0)}% + {run.languageScores?.go !== undefined ? `${formatScore(run.languageScores.go)}%` : "-"} - {formatScore(run.languageScores?.java ?? 0)}% + {run.languageScores?.java !== undefined + ? `${formatScore(run.languageScores.java)}%` + : "-"} - {formatScore(run.languageScores?.javascript ?? 0)}% + {run.languageScores?.javascript !== undefined + ? `${formatScore(run.languageScores.javascript)}%` + : "-"} - {formatScore(run.languageScores?.python ?? 0)}% + {run.languageScores?.python !== undefined + ? `${formatScore(run.languageScores.python)}%` + : "-"} - {formatScore(run.languageScores?.rust ?? 0)}% + {run.languageScores?.rust !== undefined + ? `${formatScore(run.languageScores.rust)}%` + : "-"} {run.score}%
diff --git a/apps/web-roo-code/src/lib/format-currency.ts b/apps/web-roo-code/src/lib/format-currency.ts index 05c4b2954a6..e9ea9f25ef8 100644 --- a/apps/web-roo-code/src/lib/format-currency.ts +++ b/apps/web-roo-code/src/lib/format-currency.ts @@ -3,6 +3,11 @@ const formatter = new Intl.NumberFormat("en-US", { currency: "USD", }) -export const formatCurrency = (amount: number) => formatter.format(amount) +export const formatCurrency = (amount: number | null | undefined) => { + if (amount === null || amount === undefined) { + return "-" + } + return formatter.format(amount) +} export const parsePrice = (price?: string) => (price ? parseFloat(price) * 1_000_000 : undefined) diff --git a/apps/web-roo-code/src/lib/format-duration.ts b/apps/web-roo-code/src/lib/format-duration.ts index 7de767f947b..324c3d838b4 100644 --- a/apps/web-roo-code/src/lib/format-duration.ts +++ b/apps/web-roo-code/src/lib/format-duration.ts @@ -1,4 +1,8 @@ -export const formatDuration = (durationMs: number) => { +export const formatDuration = (durationMs: number | null | undefined) => { + if (durationMs === null || durationMs === undefined) { + return "-" + } + const seconds = Math.floor(durationMs / 1000) const hours = Math.floor(seconds / 3600) const minutes = Math.floor((seconds % 3600) / 60) diff --git a/apps/web-roo-code/src/lib/format-score.ts b/apps/web-roo-code/src/lib/format-score.ts index 68568f1eeed..c14b53e7c33 100644 --- a/apps/web-roo-code/src/lib/format-score.ts +++ b/apps/web-roo-code/src/lib/format-score.ts @@ -1 +1,6 @@ -export const formatScore = (score: number) => Math.round(score * 100) +export const formatScore = (score: number | null | undefined) => { + if (score === null || score === undefined) { + return "-" + } + return Math.round(score * 100) +} diff --git a/apps/web-roo-code/src/lib/format-tokens.ts b/apps/web-roo-code/src/lib/format-tokens.ts index 1efaf034538..abc8d0e20b6 100644 --- a/apps/web-roo-code/src/lib/format-tokens.ts +++ b/apps/web-roo-code/src/lib/format-tokens.ts @@ -1,4 +1,8 @@ -export const formatTokens = (tokens: number, decimals = 0) => { +export const formatTokens = (tokens: number | null | undefined, decimals = 0) => { + if (tokens === null || tokens === undefined) { + return "-" + } + if (tokens < 1000) { return tokens.toString() } From b8463b7531a973b8c8f3791cf533ca26053a97c9 Mon Sep 17 00:00:00 2001 From: Roo Code Date: Sat, 6 Sep 2025 20:57:13 +0000 Subject: [PATCH 2/7] fix: revert formatScore change to maintain type compatibility --- apps/web-roo-code/src/lib/format-score.ts | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/apps/web-roo-code/src/lib/format-score.ts b/apps/web-roo-code/src/lib/format-score.ts index c14b53e7c33..68568f1eeed 100644 --- a/apps/web-roo-code/src/lib/format-score.ts +++ b/apps/web-roo-code/src/lib/format-score.ts @@ -1,6 +1 @@ -export const formatScore = (score: number | null | undefined) => { - if (score === null || score === undefined) { - return "-" - } - return Math.round(score * 100) -} +export const formatScore = (score: number) => Math.round(score * 100) From 994360439f5d4051da34c023095516ec9fac5851 Mon Sep 17 00:00:00 2001 From: Roo Code Date: Sat, 6 Sep 2025 21:03:55 +0000 Subject: [PATCH 3/7] refactor: make formatScore consistent with other formatters --- apps/web-roo-code/src/app/evals/evals.tsx | 12 +++++++----- apps/web-roo-code/src/lib/format-score.ts | 7 ++++++- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/apps/web-roo-code/src/app/evals/evals.tsx b/apps/web-roo-code/src/app/evals/evals.tsx index 07570599607..bdd768e7fa5 100644 --- a/apps/web-roo-code/src/app/evals/evals.tsx +++ b/apps/web-roo-code/src/app/evals/evals.tsx @@ -148,27 +148,29 @@ export function Evals({ {formatCurrency(run.taskMetrics.cost)} - {run.languageScores?.go !== undefined ? `${formatScore(run.languageScores.go)}%` : "-"} + {run.languageScores?.go !== undefined + ? `${formatScore(run.languageScores.go)}%` + : formatScore(undefined)} {run.languageScores?.java !== undefined ? `${formatScore(run.languageScores.java)}%` - : "-"} + : formatScore(undefined)} {run.languageScores?.javascript !== undefined ? `${formatScore(run.languageScores.javascript)}%` - : "-"} + : formatScore(undefined)} {run.languageScores?.python !== undefined ? `${formatScore(run.languageScores.python)}%` - : "-"} + : formatScore(undefined)} {run.languageScores?.rust !== undefined ? `${formatScore(run.languageScores.rust)}%` - : "-"} + : formatScore(undefined)} {run.score}% diff --git a/apps/web-roo-code/src/lib/format-score.ts b/apps/web-roo-code/src/lib/format-score.ts index 68568f1eeed..c14b53e7c33 100644 --- a/apps/web-roo-code/src/lib/format-score.ts +++ b/apps/web-roo-code/src/lib/format-score.ts @@ -1 +1,6 @@ -export const formatScore = (score: number) => Math.round(score * 100) +export const formatScore = (score: number | null | undefined) => { + if (score === null || score === undefined) { + return "-" + } + return Math.round(score * 100) +} From 7c7fd6e48df04465b6347c41a5814df994566fce Mon Sep 17 00:00:00 2001 From: Roo Code Date: Sat, 6 Sep 2025 21:05:02 +0000 Subject: [PATCH 4/7] fix: remove unused formatScore import and maintain type safety --- apps/web-roo-code/src/actions/evals.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/apps/web-roo-code/src/actions/evals.ts b/apps/web-roo-code/src/actions/evals.ts index c0835d408ff..181a97715ef 100644 --- a/apps/web-roo-code/src/actions/evals.ts +++ b/apps/web-roo-code/src/actions/evals.ts @@ -3,8 +3,6 @@ import { getModelId, rooCodeSettingsSchema } from "@roo-code/types" import { getRuns, getLanguageScores } from "@roo-code/evals" -import { formatScore } from "@/lib" - export async function getEvalRuns() { const languageScores = await getLanguageScores() @@ -18,7 +16,7 @@ export async function getEvalRuns() { return { ...run, label: run.description || run.model, - score: formatScore(run.passed / (run.passed + run.failed)), + score: Math.round((run.passed / (run.passed + run.failed)) * 100), languageScores: languageScores[run.id], taskMetrics: run.taskMetrics!, modelId: getModelId(settings), From 668859b1cb603e816dbd552f300967e2d05e462b Mon Sep 17 00:00:00 2001 From: Roo Code Date: Sat, 6 Sep 2025 21:07:03 +0000 Subject: [PATCH 5/7] fix: revert formatScore changes, keep it as-is from origin/main --- apps/web-roo-code/src/app/evals/evals.tsx | 12 +++++------- apps/web-roo-code/src/lib/format-score.ts | 7 +------ 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/apps/web-roo-code/src/app/evals/evals.tsx b/apps/web-roo-code/src/app/evals/evals.tsx index bdd768e7fa5..07570599607 100644 --- a/apps/web-roo-code/src/app/evals/evals.tsx +++ b/apps/web-roo-code/src/app/evals/evals.tsx @@ -148,29 +148,27 @@ export function Evals({ {formatCurrency(run.taskMetrics.cost)} - {run.languageScores?.go !== undefined - ? `${formatScore(run.languageScores.go)}%` - : formatScore(undefined)} + {run.languageScores?.go !== undefined ? `${formatScore(run.languageScores.go)}%` : "-"} {run.languageScores?.java !== undefined ? `${formatScore(run.languageScores.java)}%` - : formatScore(undefined)} + : "-"} {run.languageScores?.javascript !== undefined ? `${formatScore(run.languageScores.javascript)}%` - : formatScore(undefined)} + : "-"} {run.languageScores?.python !== undefined ? `${formatScore(run.languageScores.python)}%` - : formatScore(undefined)} + : "-"} {run.languageScores?.rust !== undefined ? `${formatScore(run.languageScores.rust)}%` - : formatScore(undefined)} + : "-"} {run.score}% diff --git a/apps/web-roo-code/src/lib/format-score.ts b/apps/web-roo-code/src/lib/format-score.ts index c14b53e7c33..68568f1eeed 100644 --- a/apps/web-roo-code/src/lib/format-score.ts +++ b/apps/web-roo-code/src/lib/format-score.ts @@ -1,6 +1 @@ -export const formatScore = (score: number | null | undefined) => { - if (score === null || score === undefined) { - return "-" - } - return Math.round(score * 100) -} +export const formatScore = (score: number) => Math.round(score * 100) From 374e9ea7b501c966de4617491df60bffe276dcae Mon Sep 17 00:00:00 2001 From: Roo Code Date: Sat, 6 Sep 2025 21:08:17 +0000 Subject: [PATCH 6/7] fix: revert evals.ts to origin/main, keep formatScore import --- apps/web-roo-code/src/actions/evals.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/web-roo-code/src/actions/evals.ts b/apps/web-roo-code/src/actions/evals.ts index 181a97715ef..c0835d408ff 100644 --- a/apps/web-roo-code/src/actions/evals.ts +++ b/apps/web-roo-code/src/actions/evals.ts @@ -3,6 +3,8 @@ import { getModelId, rooCodeSettingsSchema } from "@roo-code/types" import { getRuns, getLanguageScores } from "@roo-code/evals" +import { formatScore } from "@/lib" + export async function getEvalRuns() { const languageScores = await getLanguageScores() @@ -16,7 +18,7 @@ export async function getEvalRuns() { return { ...run, label: run.description || run.model, - score: Math.round((run.passed / (run.passed + run.failed)) * 100), + score: formatScore(run.passed / (run.passed + run.failed)), languageScores: languageScores[run.id], taskMetrics: run.taskMetrics!, modelId: getModelId(settings), From be1ef46e89c178a65badc51825de7c3a7320f877 Mon Sep 17 00:00:00 2001 From: Roo Code Date: Sat, 6 Sep 2025 21:09:53 +0000 Subject: [PATCH 7/7] fix: revert all formatScore-related changes in evals.tsx --- apps/web-roo-code/src/app/evals/evals.tsx | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/apps/web-roo-code/src/app/evals/evals.tsx b/apps/web-roo-code/src/app/evals/evals.tsx index 07570599607..26591719dbc 100644 --- a/apps/web-roo-code/src/app/evals/evals.tsx +++ b/apps/web-roo-code/src/app/evals/evals.tsx @@ -148,27 +148,19 @@ export function Evals({ {formatCurrency(run.taskMetrics.cost)} - {run.languageScores?.go !== undefined ? `${formatScore(run.languageScores.go)}%` : "-"} + {formatScore(run.languageScores?.go ?? 0)}% - {run.languageScores?.java !== undefined - ? `${formatScore(run.languageScores.java)}%` - : "-"} + {formatScore(run.languageScores?.java ?? 0)}% - {run.languageScores?.javascript !== undefined - ? `${formatScore(run.languageScores.javascript)}%` - : "-"} + {formatScore(run.languageScores?.javascript ?? 0)}% - {run.languageScores?.python !== undefined - ? `${formatScore(run.languageScores.python)}%` - : "-"} + {formatScore(run.languageScores?.python ?? 0)}% - {run.languageScores?.rust !== undefined - ? `${formatScore(run.languageScores.rust)}%` - : "-"} + {formatScore(run.languageScores?.rust ?? 0)}% {run.score}%