From 74bbd14425123d76867527afb632a0ec2dd3c90e Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Mon, 9 Feb 2026 15:31:56 -0800 Subject: [PATCH 1/2] hidemetadata --- kernelboard/api/leaderboard.py | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/kernelboard/api/leaderboard.py b/kernelboard/api/leaderboard.py index eb475b7..a739940 100644 --- a/kernelboard/api/leaderboard.py +++ b/kernelboard/api/leaderboard.py @@ -281,21 +281,22 @@ def get_ai_trend(leaderboard_id: int): def parse_model_from_filename(file_name: str) -> str: """ - Extract model name from file names ending with ka_submission.py: - - trimul_H100_claude-opus-4.5_ka_submission.py -> claude-opus-4.5 + Extract model name - the segment right before _ka_submission.py + Examples: + - matmul_py_H100_claude-opus-4.5_ka_submission.py -> claude-opus-4.5 - trimul_H100_gpt-52_ka_submission.py -> gpt-52 - - trimul_H100_gpt-5_ka_submission.py -> gpt-5 Returns None if file doesn't match pattern. """ - if not file_name or not file_name.endswith("_ka_submission.py"): + suffix = "_ka_submission.py" + if not file_name or not file_name.endswith(suffix): return None - # Extract model name: everything between last GPU type and _ka_submission - # Pattern: {anything}_{gpu}_{model}_ka_submission.py - pattern = r"^.+_[A-Za-z0-9]+_(.+?)_ka_submission\.py$" - match = re.match(pattern, file_name) - if match: - return match.group(1) + # Remove the suffix and get everything before it + base = file_name[:-len(suffix)] + # Split by underscore and get the last segment + parts = base.rsplit("_", 1) + if len(parts) == 2: + return parts[1] return None From 4a9933130c98cb02ee7d79aa144928ed004ec0d5 Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Mon, 9 Feb 2026 17:02:43 -0800 Subject: [PATCH 2/2] hidemetadata --- .../leaderboard/components/AiTrendChart.tsx | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/frontend/src/pages/leaderboard/components/AiTrendChart.tsx b/frontend/src/pages/leaderboard/components/AiTrendChart.tsx index a11c10d..8ce7bf3 100644 --- a/frontend/src/pages/leaderboard/components/AiTrendChart.tsx +++ b/frontend/src/pages/leaderboard/components/AiTrendChart.tsx @@ -6,6 +6,7 @@ import { formatMicrosecondsNum, formatMicroseconds, } from "../../../lib/utils/ranking"; +import { useThemeStore } from "../../../lib/store/themeStore"; interface AiTrendChartProps { leaderboardId: string; @@ -31,6 +32,9 @@ export default function AiTrendChart({ leaderboardId }: AiTrendChartProps) { const [data, setData] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); + const resolvedMode = useThemeStore((state) => state.resolvedMode); + const isDark = resolvedMode === "dark"; + const textColor = isDark ? "#e0e0e0" : "#333"; useEffect(() => { const loadData = async () => { @@ -153,6 +157,7 @@ export default function AiTrendChart({ leaderboardId }: AiTrendChartProps) { textStyle: { fontSize: 16, fontWeight: "bold", + color: textColor, }, }, tooltip: { @@ -172,6 +177,9 @@ export default function AiTrendChart({ leaderboardId }: AiTrendChartProps) { legend: { data: Object.keys(h100Data), bottom: 0, + textStyle: { + color: textColor, + }, }, grid: { left: "3%", @@ -185,21 +193,44 @@ export default function AiTrendChart({ leaderboardId }: AiTrendChartProps) { name: "Submission Time", nameLocation: "middle", nameGap: 30, + nameTextStyle: { + color: textColor, + }, axisLabel: { + color: textColor, formatter: (value: number) => { const date = new Date(value); return `${date.getMonth() + 1}/${date.getDate()}`; }, }, + axisLine: { + lineStyle: { + color: textColor, + }, + }, }, yAxis: { type: "value", name: "Score (lower is better)", nameLocation: "middle", nameGap: 70, + nameTextStyle: { + color: textColor, + }, axisLabel: { + color: textColor, formatter: (value: number) => `${formatMicrosecondsNum(value)}μs`, }, + axisLine: { + lineStyle: { + color: textColor, + }, + }, + splitLine: { + lineStyle: { + color: isDark ? "#444" : "#ccc", + }, + }, }, series, };