fix: avoid misleading skill card preview badge

This commit is contained in:
程序员阿江(Relakkes) 2026-07-04 22:14:03 +08:00
parent 8405314761
commit 3fc6b7f7df
7 changed files with 13 additions and 26 deletions

View File

@ -2056,8 +2056,7 @@ export const en = {
'skillCenter.marketplace.sort.updated': 'Updated',
'skillCenter.marketplace.sort.trending': 'Trending',
'skillCenter.marketplace.installedBadge': 'Installed',
'skillCenter.marketplace.previewAvailable': 'Preview',
'skillCenter.marketplace.noPreviewBadge': 'No preview',
'skillCenter.marketplace.detailsBadge': 'Details',
'skillCenter.marketplace.cardMeta.downloads': '{count} downloads',
'skillCenter.marketplace.cardMeta.stars': '{count} stars',
'skillCenter.marketplace.trust.clean': 'Clean',

View File

@ -2058,8 +2058,7 @@ export const jp: Record<TranslationKey, string> = {
'skillCenter.marketplace.sort.updated': '更新日時',
'skillCenter.marketplace.sort.trending': '人気',
'skillCenter.marketplace.installedBadge': 'インストール済み',
'skillCenter.marketplace.previewAvailable': 'プレビュー',
'skillCenter.marketplace.noPreviewBadge': 'プレビューなし',
'skillCenter.marketplace.detailsBadge': '詳細',
'skillCenter.marketplace.cardMeta.downloads': '{count} ダウンロード',
'skillCenter.marketplace.cardMeta.stars': '{count} スター',
'skillCenter.marketplace.trust.clean': '安全',

View File

@ -2058,8 +2058,7 @@ export const kr: Record<TranslationKey, string> = {
'skillCenter.marketplace.sort.updated': '업데이트',
'skillCenter.marketplace.sort.trending': '인기',
'skillCenter.marketplace.installedBadge': '설치됨',
'skillCenter.marketplace.previewAvailable': '미리보기',
'skillCenter.marketplace.noPreviewBadge': '미리보기 없음',
'skillCenter.marketplace.detailsBadge': '세부 정보',
'skillCenter.marketplace.cardMeta.downloads': '{count} 다운로드',
'skillCenter.marketplace.cardMeta.stars': '{count} 스타',
'skillCenter.marketplace.trust.clean': '안전',

View File

@ -2058,8 +2058,7 @@ export const zh: Record<TranslationKey, string> = {
'skillCenter.marketplace.sort.updated': '最近更新',
'skillCenter.marketplace.sort.trending': '熱門',
'skillCenter.marketplace.installedBadge': '已安裝',
'skillCenter.marketplace.previewAvailable': '可預覽',
'skillCenter.marketplace.noPreviewBadge': '無預覽',
'skillCenter.marketplace.detailsBadge': '檢視詳情',
'skillCenter.marketplace.cardMeta.downloads': '{count} 次下載',
'skillCenter.marketplace.cardMeta.stars': '{count} 星標',
'skillCenter.marketplace.trust.clean': '安全',

View File

@ -2058,8 +2058,7 @@ export const zh: Record<TranslationKey, string> = {
'skillCenter.marketplace.sort.updated': '最近更新',
'skillCenter.marketplace.sort.trending': '热门',
'skillCenter.marketplace.installedBadge': '已安装',
'skillCenter.marketplace.previewAvailable': '可预览',
'skillCenter.marketplace.noPreviewBadge': '无预览',
'skillCenter.marketplace.detailsBadge': '查看详情',
'skillCenter.marketplace.cardMeta.downloads': '{count} 次下载',
'skillCenter.marketplace.cardMeta.stars': '{count} 星标',
'skillCenter.marketplace.trust.clean': '安全',

View File

@ -185,7 +185,7 @@ describe('SkillCenter', () => {
})
})
it('renders marketplace cards with trust, preview, install, API key, and popularity signals', async () => {
it('renders marketplace cards with trust, details, install, API key, and popularity signals', async () => {
mockedSkillMarketApi.list.mockResolvedValue({
items: [
makeItem({
@ -227,7 +227,8 @@ describe('SkillCenter', () => {
const crmCard = within(market).getByRole('button', { name: 'CRM Sync' })
expect(vetterCard).toBeInTheDocument()
expect(within(market).getAllByText('Clean').length).toBeGreaterThan(0)
expect(within(market).getAllByText('Preview').length).toBeGreaterThan(0)
expect(within(market).queryByText('Preview')).not.toBeInTheDocument()
expect(within(vetterCard).getByText('Details')).toBeInTheDocument()
expect(within(weatherCard).getByText('Installed')).toBeInTheDocument()
expect(within(crmCard).getByText('API key')).toBeInTheDocument()
expect(within(vetterCard).getByText(/260\.9K|260,960/)).toBeInTheDocument()

View File

@ -582,7 +582,6 @@ function SkillMarketCard({
const stats = formatStats(item, t)
const sourceLabel = t(`skillCenter.marketplace.source.${item.source}`)
const summary = item.summaryZh || item.summary
const hasPreview = Boolean(item.trustSummary || item.summary || item.summaryZh)
return (
<button
@ -635,19 +634,11 @@ function SkillMarketCard({
label={t('skillCenter.marketplace.installedBadge')}
/>
) : null}
{hasPreview ? (
<StateBadge
tone="neutral"
icon={<FileText size={12} aria-hidden="true" />}
label={t('skillCenter.marketplace.previewAvailable')}
/>
) : (
<StateBadge
tone="neutral"
icon={<FileText size={12} aria-hidden="true" />}
label={t('skillCenter.marketplace.noPreviewBadge')}
/>
)}
<StateBadge
tone="neutral"
icon={<FileText size={12} aria-hidden="true" />}
label={t('skillCenter.marketplace.detailsBadge')}
/>
{item.requiresApiKey ? (
<StateBadge
tone="neutral"