Skip to content

Commit b45e11c

Browse files
ericyangpanclaude
andcommitted
feat: add benchmark display and documentation links to model pages
Model Detail Page Enhancements: - Display performance benchmarks in dedicated section - Grid layout showing all available benchmark scores - Formatted values with appropriate units (%, decimal) - Descriptive text for each benchmark type - Only shown when model has benchmark data - Add documentation URL link in additional URLs section - Add verified badge support for models - Fix navigation link to use absolute path (/models) Benchmark Display Features: - Uses benchmark utility for formatting and validation - Responsive grid: 1 column mobile, 2 columns desktop - Follows global minimalist design (sharp corners, low saturation) - Shows benchmark name, score, and description - Automatically hides benchmarks with null values Manifest Updates: - Update amazon-q-developer-cli metadata - Update cline extension metadata 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
1 parent 9ad4676 commit b45e11c

File tree

3 files changed

+45
-3
lines changed

3 files changed

+45
-3
lines changed

manifests/clis/amazon-q-developer-cli.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
}
1313
},
1414
"verified": false,
15-
"websiteUrl": "https://aws.amazon.com/developer/learning/q-developer-cli",
15+
"websiteUrl": "https://aws.amazon.com/q/developer/",
1616
"docsUrl": "https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line.html",
1717
"vendor": "AWS",
1818
"latestVersion": "v1.18.1",

manifests/extensions/cline.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"verified": false,
1212
"websiteUrl": "https://cline.bot",
1313
"docsUrl": "https://cline.bot/docs",
14-
"vendor": "Cline Bot",
14+
"vendor": "Cline",
1515
"latestVersion": "1.0.0",
1616
"githubUrl": "https://github.com/cline/cline",
1717
"license": "Apache-2.0",

src/app/[locale]/models/[slug]/page.tsx

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import Header from '@/components/Header'
77
import { JsonLd } from '@/components/JsonLd'
88
import { ProductHero } from '@/components/product'
99
import type { Locale } from '@/i18n/config'
10+
import { BENCHMARK_KEYS, formatBenchmarkValue, hasBenchmarks } from '@/lib/benchmarks'
1011
import { getModel } from '@/lib/data/fetchers'
1112
import { modelsData as models } from '@/lib/generated'
1213
import { generateModelDetailMetadata } from '@/lib/metadata'
@@ -119,6 +120,7 @@ export default async function ModelPage({
119120
vendor={model.vendor}
120121
category="MODEL"
121122
categoryLabel={t('categoryLabel')}
123+
verified={model.verified ?? false}
122124
additionalInfo={
123125
[
124126
model.size && { label: t('labels.size'), value: model.size },
@@ -133,6 +135,11 @@ export default async function ModelPage({
133135
}
134136
additionalUrls={
135137
[
138+
model.docsUrl && {
139+
label: t('labels.documentation'),
140+
url: model.docsUrl,
141+
icon: '→',
142+
},
136143
model.websiteUrl && { label: t('labels.website'), url: model.websiteUrl, icon: '↗' },
137144
model.platformUrls?.huggingface && {
138145
label: t('labels.huggingface'),
@@ -234,8 +241,43 @@ export default async function ModelPage({
234241
</div>
235242
</section>
236243

244+
{/* Performance Benchmarks */}
245+
{model.benchmarks && hasBenchmarks(model.benchmarks) && (
246+
<section className="py-[var(--spacing-lg)] border-b border-[var(--color-border)]">
247+
<div className="max-w-8xl mx-auto px-[var(--spacing-md)]">
248+
<h2 className="text-2xl font-semibold tracking-[-0.02em] mb-[var(--spacing-sm)]">
249+
{t('benchmarks.title')}
250+
</h2>
251+
252+
<div className="grid grid-cols-1 md:grid-cols-2 gap-[var(--spacing-md)] mt-[var(--spacing-lg)]">
253+
{BENCHMARK_KEYS.map(key => {
254+
const value = model.benchmarks?.[key]
255+
if (value === null || value === undefined) return null
256+
257+
return (
258+
<div
259+
key={key}
260+
className="border border-[var(--color-border)] p-[var(--spacing-md)]"
261+
>
262+
<h3 className="text-xs text-[var(--color-text-muted)] uppercase tracking-wider font-medium mb-[var(--spacing-xs)]">
263+
{t(`benchmarks.${key}`)}
264+
</h3>
265+
<p className="text-lg font-semibold tracking-tight mb-1">
266+
{formatBenchmarkValue(key, value)}
267+
</p>
268+
<p className="text-xs text-[var(--color-text-muted)]">
269+
{t(`benchmarks.${key}Desc`)}
270+
</p>
271+
</div>
272+
)
273+
})}
274+
</div>
275+
</div>
276+
</section>
277+
)}
278+
237279
{/* Navigation */}
238-
<BackToNavigation href="models" title={t('allModels')} />
280+
<BackToNavigation href="/models" title={t('allModels')} />
239281

240282
<Footer />
241283
</>

0 commit comments

Comments
 (0)