Merge remote-tracking branch 'origin/main' into feat/support-agent-sandbox

# Conflicts:
#	web/app/components/header/account-setting/model-provider-page/model-selector/popup-item.tsx
#	web/package.json
This commit is contained in:
yyh
2026-01-21 10:52:43 +08:00
282 changed files with 1329 additions and 1002 deletions

View File

@ -81,7 +81,7 @@ vi.mock('@/app/components/base/app-icon', () => ({
data-size={size}
data-icon-type={iconType}
>
{innerIcon && <div data-testid="inner-icon">{innerIcon}</div>}
{!!innerIcon && <div data-testid="inner-icon">{innerIcon}</div>}
</div>
),
}))

View File

@ -95,7 +95,7 @@ const Card = ({
text={getLocalizedText(brief)}
descriptionLineRows={descriptionLineRows}
/>
{footer && <div>{footer}</div>}
{!!footer && <div>{footer}</div>}
</div>
{limitedInstall
&& (

View File

@ -32,7 +32,7 @@ vi.mock('../../../card', () => ({
default: ({ payload, titleLeft }: { payload: Plugin, titleLeft?: React.ReactNode }) => (
<div data-testid="plugin-card">
<span data-testid="card-name">{payload.name}</span>
{titleLeft && <span data-testid="title-left">{titleLeft}</span>}
{!!titleLeft && <span data-testid="title-left">{titleLeft}</span>}
</div>
),
}))

View File

@ -118,7 +118,7 @@ vi.mock('../../../card', () => ({
<div data-testid="plugin-card">
<span data-testid="card-payload-name">{payload?.name}</span>
<span data-testid="card-limited-install">{limitedInstall ? 'true' : 'false'}</span>
{titleLeft && <div data-testid="card-title-left">{titleLeft}</div>}
{!!titleLeft && <div data-testid="card-title-left">{titleLeft}</div>}
</div>
),
}))

View File

@ -279,7 +279,7 @@ vi.mock('@/app/components/plugins/card', () => ({
default: ({ payload, footer }: { payload: Plugin, footer?: React.ReactNode }) => (
<div data-testid={`card-${payload.name}`}>
<div data-testid="card-name">{payload.name}</div>
{footer && <div data-testid="card-footer">{footer}</div>}
{!!footer && <div data-testid="card-footer">{footer}</div>}
</div>
),
}))

View File

@ -126,7 +126,7 @@ vi.mock('@/app/components/plugins/card', () => ({
<div data-testid={`card-${payload.name}`}>
<div data-testid="card-name">{payload.name}</div>
<div data-testid="card-label">{payload.label?.['en-US'] || payload.name}</div>
{footer && <div data-testid="card-footer">{footer}</div>}
{!!footer && <div data-testid="card-footer">{footer}</div>}
</div>
),
}))

View File

@ -229,7 +229,7 @@ const DetailHeader = ({
<div className="flex h-5 items-center">
<Title title={label[locale]} />
{verified && !isReadmeView && <Verified className="ml-0.5 h-4 w-4" text={t('marketplace.verifiedTip', { ns: 'plugin' })} />}
{version && (
{!!version && (
<PluginVersionPicker
disabled={!isFromMarketplace || isReadmeView}
isShow={isShow}
@ -297,7 +297,7 @@ const DetailHeader = ({
orgName={author}
packageName={name?.includes('/') ? (name.split('/').pop() || '') : name}
/>
{source && (
{!!source && (
<>
<div className="system-xs-regular ml-1 mr-0.5 text-text-quaternary">·</div>
{source === PluginSource.marketplace && (

View File

@ -196,7 +196,7 @@ vi.mock('@/app/components/base/modal/modal', () => ({
{extraButtonText}
</button>
)}
{bottomSlot && <div data-testid="modal-bottom-slot">{bottomSlot}</div>}
{!!bottomSlot && <div data-testid="modal-bottom-slot">{bottomSlot}</div>}
</div>
),
}))

View File

@ -78,7 +78,7 @@ vi.mock('@/app/components/base/app-icon', () => ({
data-size={size}
data-icon-type={iconType}
>
{innerIcon && <div data-testid="inner-icon">{innerIcon}</div>}
{!!innerIcon && <div data-testid="inner-icon">{innerIcon}</div>}
</div>
),
}))