diff --git a/.gemini /config.yaml b/.gemini /config.yaml
new file mode 100644
index 0000000..110d0f5
--- /dev/null
+++ b/.gemini /config.yaml
@@ -0,0 +1,11 @@
+# Referred to SkyRL
+have_fun: true # the bot sometimes adds lighthearted / fun comments.
+code_review:
+ disable: false
+ comment_severity_threshold: MEDIUM
+ max_review_comments: -1
+ pull_request_opened:
+ help: false
+ summary: false # enable PR summaries
+ code_review: false
+ignore_patterns: []
diff --git a/.github/workflows/precommit.yml b/.github/workflows/precommit.yml
new file mode 100644
index 0000000..c450db6
--- /dev/null
+++ b/.github/workflows/precommit.yml
@@ -0,0 +1,12 @@
+name: pre-commit
+on: [push, pull_request]
+jobs:
+ pre-commit:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/setup-python@v5
+ with:
+ python-version: "3.x"
+ - run: pip install pre-commit
+ - run: pre-commit run --all-files
diff --git a/.gitignore b/.gitignore
index 4d29575..e016210 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,6 +17,7 @@
.env.development.local
.env.test.local
.env.production.local
+.venv*/*
npm-debug.log*
yarn-debug.log*
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
new file mode 100644
index 0000000..6c98982
--- /dev/null
+++ b/.pre-commit-config.yaml
@@ -0,0 +1,36 @@
+repos:
+ # --- Basic hygiene ---
+ - repo: https://github.com/pre-commit/pre-commit-hooks
+ rev: v5.0.0
+ hooks:
+ - id: trailing-whitespace
+ exclude: '\\.svg$'
+ exclude_types: [svg]
+ - id: end-of-file-fixer
+ exclude: '\\.svg$'
+ exclude_types: [svg]
+ - id: check-json
+ - id: check-yaml
+ - id: check-added-large-files
+ args: ["--maxkb=2048"]
+ - id: check-merge-conflict
+ - id: check-case-conflict
+ - id: detect-private-key
+ - id: mixed-line-ending
+
+ # --- JS/HTML formatting and linting ---
+ - repo: https://github.com/pre-commit/mirrors-prettier
+ rev: v4.0.0-alpha.8
+ hooks:
+ - id: prettier
+ args: [--check]
+ additional_dependencies: [prettier@3.2.5]
+ files: '\\.(js|jsx|ts|tsx|json|css|scss|md|markdown|yml|yaml|html)$'
+
+ # --- Optional: spell check or link check ---
+ - repo: https://github.com/codespell-project/codespell
+ rev: v2.2.6
+ hooks:
+ - id: codespell
+ args: ["--ignore-words-list=teh,fo"]
+ exclude: '^package-lock\.json$'
diff --git a/README.md b/README.md
index cb9acef..4fd8dc0 100644
--- a/README.md
+++ b/README.md
@@ -155,7 +155,7 @@ If you use RouterArena in your research, please cite our paper:
```bibtex
@misc{lu2024routerarena,
- title={RouterArena: An Open Platform for Comprehensive Comparison of LLM Routers},
+ title={RouterArena: An Open Platform for Comprehensive Comparison of LLM Routers},
author={Yifan Lu and Rixin Liu and Jiayi Yuan and Xingqi Cui and Shenrun Zhang and Hongyi Liu and Jiarong Xing},
year={2024},
eprint={2510.00202},
@@ -172,4 +172,4 @@ If you use RouterArena in your research, please cite our paper:
## Acknowledgments
-We thank all contributors who have made this project possible.
\ No newline at end of file
+We thank all contributors who have made this project possible.
diff --git a/src/App.css b/src/App.css
index 212c4fa..52e4f3e 100644
--- a/src/App.css
+++ b/src/App.css
@@ -91,9 +91,9 @@ code {
.container {
padding: 0 0.75rem;
}
-
+
.btn {
padding: 0.625rem 1.25rem;
font-size: 0.9rem;
}
-}
\ No newline at end of file
+}
diff --git a/src/components/DatasetCompositionChart.tsx b/src/components/DatasetCompositionChart.tsx
index eef4d0e..ee4332e 100644
--- a/src/components/DatasetCompositionChart.tsx
+++ b/src/components/DatasetCompositionChart.tsx
@@ -88,7 +88,7 @@ const categoryColors = [
// Difficulty level colors
const difficultyColors = {
'Easy': '#22C55E',
- 'Medium': '#F59E0B',
+ 'Medium': '#F59E0B',
'Hard': '#EF4444'
};
@@ -166,7 +166,7 @@ const DatasetCompositionChart: React.FC = () => {
const CustomTooltip = ({ active, payload }: any) => {
if (active && payload && payload.length) {
const data = payload[0].payload;
-
+
// Get subcategory descriptions
const getSubcategoryDescription = (name: string, parent: string) => {
const descriptions: { [key: string]: { [key: string]: string } } = {
@@ -217,10 +217,10 @@ const DatasetCompositionChart: React.FC = () => {
'Biography and genealogy': 'Personal histories & lineages'
}
};
-
+
return descriptions[parent]?.[name] || name;
};
-
+
return (
{data.name}
@@ -257,19 +257,19 @@ const DatasetCompositionChart: React.FC = () => {
onMouseLeave={() => setHoveredSubcategory(null)}
>
{subcategoryData.map((entry, index) => (
-
|
))}
-
+
{/* Outer ring - Main categories */}
{
onMouseLeave={() => setHoveredCategory(null)}
>
{mainChartData.map((entry, index) => (
- |
))}
-
}
+
}
wrapperStyle={{ zIndex: 9999 }}
/>
-
+
{/* Independent SVG Labels Overlay */}
-