fix: Update project branding and improve documentation links

This commit is contained in:
kite 2026-05-28 14:47:53 +08:00
parent 2305d4b923
commit 95b77e2b48
12 changed files with 38 additions and 28 deletions

View file

@ -38,6 +38,7 @@ jobs:
run: |
mkdir -p _site
cp -r pages/dist/* _site/
cp pages/logo.svg _site/logo.svg
- uses: actions/upload-pages-artifact@v3
with:

View file

@ -1,5 +1,5 @@
<p align="center">
<a href="https://github.com/alibaba/open-code-review">
<a href="https://alibaba.github.io/open-code-review/">
<img src="imgs/logo.svg" alt="OpenCodeReview logo" width="240" height="240">
</a>
</p>

View file

@ -1,5 +1,5 @@
<p align="center">
<a href="https://github.com/alibaba/open-code-review">
<a href="https://alibaba.github.io/open-code-review/">
<img src="imgs/logo.svg" alt="OpenCodeReview logo" width="240" height="240">
</a>
</p>

View file

@ -4,7 +4,7 @@
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>open-code-review — Agent Native Code Review</title>
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><defs><linearGradient id='g' x1='0' y1='0' x2='1' y2='1'><stop offset='0%25' stop-color='%234ade80'/><stop offset='100%25' stop-color='%2316a34a'/></linearGradient></defs><rect width='32' height='32' rx='6' fill='url(%23g)'/><path d='M16 10c-4.4 0-8 3.6-8 6s3.6 6 8 6 8-3.6 8-6-3.6-6-8-6zm0 9.5a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-5.5a2 2 0 1 0 0 4 2 2 0 0 0 0-4z' fill='%230f172a'/></svg>" />
<link rel="icon" type="image/svg+xml" href="/logo.svg" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet" />

1
pages/logo.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.3 KiB

4
pages/src/assets.d.ts vendored Normal file
View file

@ -0,0 +1,4 @@
declare module '*.svg' {
const src: string;
export default src;
}

View file

@ -23,7 +23,7 @@ const leaderboardData: LeaderboardEntry[] = [
medal: 'gold',
model: 'Claude-4.6-Opus',
provider: 'Anthropic',
source: 'open-code-review',
source: 'Open Code Review',
sourceType: 'ocr',
version: 'AVG (10)',
f1: '26.1%',
@ -38,7 +38,7 @@ const leaderboardData: LeaderboardEntry[] = [
medal: 'silver',
model: 'Qwen-3.6-Plus',
provider: 'Alibaba',
source: 'open-code-review',
source: 'Open Code Review',
sourceType: 'ocr',
version: 'AVG (3)',
f1: '21.9%',
@ -53,7 +53,7 @@ const leaderboardData: LeaderboardEntry[] = [
medal: 'bronze',
model: 'GLM-4.7',
provider: 'Zhipu AI',
source: 'open-code-review',
source: 'Open Code Review',
sourceType: 'ocr',
version: 'AVG (2)',
f1: '20.1%',
@ -68,7 +68,7 @@ const leaderboardData: LeaderboardEntry[] = [
medal: undefined,
model: 'Qwen3.5-27b-dense',
provider: 'Alibaba',
source: 'open-code-review',
source: 'Open Code Review',
sourceType: 'ocr',
version: 'AVG (3)',
f1: '19.5%',

View file

@ -1,6 +1,7 @@
import React, { useState, useEffect } from 'react';
import { Link, useLocation, useNavigate } from 'react-router-dom';
import { useTranslation } from '../i18n';
import logoSvg from '../../logo.svg';
const Navbar: React.FC = () => {
const [isScrolled, setIsScrolled] = useState(false);
@ -52,11 +53,9 @@ const Navbar: React.FC = () => {
<div className="max-w-7xl mx-auto px-6 py-4 flex items-center justify-between">
<Link to="/" className="flex items-center gap-3">
<div className="w-8 h-8 rounded-lg bg-gradient-to-br from-brand-400 to-green-600 flex items-center justify-center glow-green-sm">
<i className="fa-solid fa-eye text-dark-900 text-sm"></i>
</div>
<img src={logoSvg} alt="OpenCodeReview" className="w-8 h-8 rounded-lg" />
<span className="font-bold text-lg tracking-tight">
<span className="text-white">open-code-review</span>
<span className="text-white">Open Code Review</span>
</span>
</Link>

View file

@ -11,7 +11,7 @@ export const en: TranslationKeys = {
// Hero
'hero.title': 'AI Code Review',
'hero.titleHighlight': 'Validated on Millions of Real-World Tasks',
'hero.description': 'open-code-review brings Alibaba\'s battle-tested code review Agent into your workflow. Connect any LLM, keep data fully private, and get review comments developers actually adopt.',
'hero.description': 'Open Code Review brings Alibaba\'s battle-tested code review Agent into your workflow. Connect any LLM, keep data fully private, and get review comments developers actually adopt.',
'hero.pill1': 'Adoption Rate > 30%',
'hero.pill2': 'Data Stays Local',
'hero.pill3': 'Token Cost Only 1/5',
@ -24,9 +24,9 @@ export const en: TranslationKeys = {
// Why Section
'why.sectionLabel': 'Use Cases',
'why.title': 'Who Is open-code-review For?',
'why.title': 'Who Is Open Code Review For?',
'why.case1Title': 'Individual Developers',
'why.case1Desc': 'Embed open-code-review in your local AI-assisted development workflow for instant, high-quality code review feedback.',
'why.case1Desc': 'Embed Open Code Review in your local AI-assisted development workflow for instant, high-quality code review feedback.',
'why.case2Title': 'Platform Teams',
'why.case2Desc': 'Seamlessly integrate into your internal systems with full control over data flow and review policies.',
'why.case3Title': 'ML Researchers',
@ -52,8 +52,8 @@ export const en: TranslationKeys = {
// Benchmark Section
'benchmark.sectionLabel': 'Open Benchmark',
'benchmark.title': 'Cross-Validated by 80+ Senior Engineers',
'benchmark.subtitle': 'A real-world CodeReview benchmark cross-annotated by 80+ senior engineers. open-code-review leads across F1, Precision, and Recall over generic Agent approaches.',
'benchmark.legendOcr': 'open-code-review',
'benchmark.subtitle': 'A real-world CodeReview benchmark cross-annotated by 80+ senior engineers. Open Code Review leads across F1, Precision, and Recall over generic Agent approaches.',
'benchmark.legendOcr': 'Open Code Review',
'benchmark.legendClaude': 'Claude Code + Skills (Generic)',
'benchmark.colRank': 'Rank',
'benchmark.colModel': 'Model',
@ -77,7 +77,7 @@ export const en: TranslationKeys = {
'quickstart.step3Title': 'Run Review',
'quickstart.step3Desc': 'Start your first code review.',
'quickstart.zeroCfgTitle': 'Already using Claude Code? Zero extra config',
'quickstart.zeroCfgDesc': 'If you\'ve already configured Claude Code environment variables (ANTHROPIC_BASE_URL / ANTHROPIC_AUTH_TOKEN / ANTHROPIC_MODEL), open-code-review reads them automatically — no additional setup needed.',
'quickstart.zeroCfgDesc': 'If you\'ve already configured Claude Code environment variables (ANTHROPIC_BASE_URL / ANTHROPIC_AUTH_TOKEN / ANTHROPIC_MODEL), Open Code Review reads them automatically — no additional setup needed.',
'quickstart.copy': 'Copy',
// Docs Page
@ -156,7 +156,7 @@ export const en: TranslationKeys = {
'docs.viewerNote': 'After running, a local HTTP server starts providing a visual interface for browsing review results.',
'docs.envTitle': 'Claude Code Integration',
'docs.envDesc': 'If you are already a Claude Code user with the following environment variables configured, <code>open-code-review</code> will recognize them automatically — no extra configuration needed:',
'docs.envDesc': 'If you are already a Claude Code user with the following environment variables configured, Open Code Review will recognize them automatically — no extra configuration needed:',
'docs.envNote': 'You can also use <code>ocr config</code> to override or supplement these settings.',
'docs.copy': 'Copy',
@ -164,5 +164,5 @@ export const en: TranslationKeys = {
'quickstart.commentReview': '# Review current changes',
'quickstart.commentBranch': '# Review diff between branches',
'quickstart.commentCommit': '# Review a specific commit',
'quickstart.commentEnvAuto': '# open-code-review auto-detects these variables',
'quickstart.commentEnvAuto': '# Open Code Review auto-detects these variables',
};

View file

@ -11,7 +11,7 @@ export const zh: TranslationKeys = {
// Hero
'hero.title': 'AI 代码评审',
'hero.titleHighlight': '数百万真实场景任务的验证',
'hero.description': 'open-code-review 将阿里巴巴经大规模生产验证的代码评审 Agent 带入你的工作流。接入任意 LLM数据完全私有获得开发者真正愿意采纳的评审意见。',
'hero.description': 'Open Code Review 将阿里巴巴经大规模生产验证的代码评审 Agent 带入你的工作流。接入任意 LLM数据完全私有获得开发者真正愿意采纳的评审意见。',
'hero.pill1': '采纳率 > 30%',
'hero.pill2': '数据本地闭环',
'hero.pill3': 'Token 消耗仅 1/5',
@ -24,9 +24,9 @@ export const zh: TranslationKeys = {
// Why Section
'why.sectionLabel': '适用场景',
'why.title': 'open-code-review 适合谁?',
'why.title': 'Open Code Review 适合谁?',
'why.case1Title': '个人开发者',
'why.case1Desc': '将 open-code-review 嵌入本地 AI 辅助研发工作流,获得即时、高质量的代码评审反馈。',
'why.case1Desc': '将 Open Code Review 嵌入本地 AI 辅助研发工作流,获得即时、高质量的代码评审反馈。',
'why.case2Title': '平台团队',
'why.case2Desc': '无缝集成至您的内部系统,完全掌控数据流向与评审策略。',
'why.case3Title': '模型训练研究者',
@ -52,8 +52,8 @@ export const zh: TranslationKeys = {
// Benchmark Section
'benchmark.sectionLabel': '开放基准测试',
'benchmark.title': '80+ 位资深工程师交叉标注验证',
'benchmark.subtitle': '基于真实场景的 CodeReview 基准测试,由 80+ 位资深工程师交叉标注。open-code-review 在 F1、精确率、召回率上全面领先通用 Agent 方案。',
'benchmark.legendOcr': 'open-code-review',
'benchmark.subtitle': '基于真实场景的 CodeReview 基准测试,由 80+ 位资深工程师交叉标注。Open Code Review 在 F1、精确率、召回率上全面领先通用 Agent 方案。',
'benchmark.legendOcr': 'Open Code Review',
'benchmark.legendClaude': 'Claude Code + Skills通用方案',
'benchmark.colRank': '排名',
'benchmark.colModel': '模型',
@ -77,7 +77,7 @@ export const zh: TranslationKeys = {
'quickstart.step3Title': '运行评审',
'quickstart.step3Desc': '开始你的第一次代码评审。',
'quickstart.zeroCfgTitle': '已在使用 Claude Code零额外配置',
'quickstart.zeroCfgDesc': '如果你已经配置了 Claude Code 的环境变量ANTHROPIC_BASE_URL / ANTHROPIC_AUTH_TOKEN / ANTHROPIC_MODELopen-code-review 会自动读取这些配置,无需任何额外设置即可直接使用。',
'quickstart.zeroCfgDesc': '如果你已经配置了 Claude Code 的环境变量ANTHROPIC_BASE_URL / ANTHROPIC_AUTH_TOKEN / ANTHROPIC_MODELOpen Code Review 会自动读取这些配置,无需任何额外设置即可直接使用。',
'quickstart.copy': '复制',
// Docs Page
@ -156,7 +156,7 @@ export const zh: TranslationKeys = {
'docs.viewerNote': '运行后会在本地启动一个 HTTP 服务器,提供可视化的评审结果浏览界面。',
'docs.envTitle': '适配 Claude Code',
'docs.envDesc': '如果你已经是 Claude Code 用户并配置了以下环境变量,<code>open-code-review</code> 会自动识别,无需任何额外配置:',
'docs.envDesc': '如果你已经是 Claude Code 用户并配置了以下环境变量,Open Code Review 会自动识别,无需任何额外配置:',
'docs.envNote': '此外,工具也支持通过 <code>ocr config</code> 命令来覆盖或补充这些配置。',
'docs.copy': '复制',
@ -164,5 +164,5 @@ export const zh: TranslationKeys = {
'quickstart.commentReview': '# 评审当前变更',
'quickstart.commentBranch': '# 评审分支间的差异',
'quickstart.commentCommit': '# 评审指定提交',
'quickstart.commentEnvAuto': '# open-code-review 自动识别这些变量',
'quickstart.commentEnvAuto': '# Open Code Review 自动识别这些变量',
};

View file

@ -180,7 +180,7 @@ const DocsPage: React.FC = () => {
{/* Overview */}
<DocSection id="overview" title={t('docs.overviewTitle')}>
<p className="text-slate-300 leading-relaxed mb-4">
<code className="text-brand-400 bg-dark-800/50 px-1.5 py-0.5 rounded text-sm font-mono">open-code-review</code>{' '}
<code className="text-brand-400 bg-dark-800/50 px-1.5 py-0.5 rounded text-sm font-mono">Open Code Review</code>{' '}
<span dangerouslySetInnerHTML={{ __html: t('docs.overviewDesc') }} />
</p>
<div className="glass rounded-xl p-5 mb-6">

View file

@ -28,6 +28,10 @@ module.exports = {
{
test: /\.css$/,
use: ['style-loader', 'css-loader', 'postcss-loader']
},
{
test: /\.svg$/,
type: 'asset/resource'
}
]
},
@ -36,6 +40,7 @@ module.exports = {
},
devServer: {
port: 3030,
static: { directory: __dirname },
historyApiFallback: {
index: '/index.html',
rewrites: [{ from: /^\/_p\/\d+\//, to: '/index.html' }]