From 4ad668c643efe596a2994fb6e6c3f7fc4ffb68dd Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 17 Apr 2026 22:32:05 +0800 Subject: [PATCH] feat: add featured flag to control star badge on provider presets Star badge is now driven by the `featured` field in provider-presets.json. Currently no preset has featured=true, so no stars are shown. Can be toggled on per-provider remotely without code changes. Made-with: Cursor --- core/provider_presets.go | 3 ++- web/src/api/providers.ts | 1 + web/src/pages/Providers/ProviderList.tsx | 7 ++++++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/core/provider_presets.go b/core/provider_presets.go index 6efa30f..d9a31da 100644 --- a/core/provider_presets.go +++ b/core/provider_presets.go @@ -32,7 +32,8 @@ type ProviderPreset struct { DescriptionZh string `json:"description_zh,omitempty"` Features []string `json:"features,omitempty"` Thinking string `json:"thinking,omitempty"` - Tier int `json:"tier"` // sponsor ranking: lower = higher priority + Tier int `json:"tier"` // sponsor ranking: lower = higher priority + Featured bool `json:"featured,omitempty"` // show a star badge when true Website string `json:"website,omitempty"` } diff --git a/web/src/api/providers.ts b/web/src/api/providers.ts index a842ead..8b8f0ad 100644 --- a/web/src/api/providers.ts +++ b/web/src/api/providers.ts @@ -37,6 +37,7 @@ export interface ProviderPreset { features?: string[]; thinking?: string; tier: number; + featured?: boolean; website?: string; } diff --git a/web/src/pages/Providers/ProviderList.tsx b/web/src/pages/Providers/ProviderList.tsx index bb70e48..774aa24 100644 --- a/web/src/pages/Providers/ProviderList.tsx +++ b/web/src/pages/Providers/ProviderList.tsx @@ -1,7 +1,7 @@ import { useEffect, useState, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; import { - Plug, Plus, Trash2, Pencil, ExternalLink, Sparkles, X, Eye, EyeOff, + Plug, Plus, Trash2, Pencil, ExternalLink, Star, Sparkles, X, Eye, EyeOff, } from 'lucide-react'; import { Card, Button, Badge, Modal, Input } from '@/components/ui'; import { @@ -268,6 +268,11 @@ function PresetGrid({ const added = existingNames.has(p.name); return ( + {p.featured && ( +
+ +
+ )}

{p.display_name || p.name}