diff --git a/apps/web/tests/plugin-manager.e2e.ts b/apps/web/tests/plugin-manager.e2e.ts index b84e57a74b..67da5670de 100644 --- a/apps/web/tests/plugin-manager.e2e.ts +++ b/apps/web/tests/plugin-manager.e2e.ts @@ -688,6 +688,7 @@ describe('web e2e: plugin manager', () => { }) it('shows an optional feature preview before activation and leaves other plugin details unchanged', async () => { + onTestFailed(() => saveFailureShot(page, 'web-e2e-plugin-manager-preview')) const panel = await openPluginsPanel() await panel.getByRole('button', { name: '更多', exact: true }).click() await panel.getByRole('button', { name: '查看 DSH 徽章技能', exact: true }).click() diff --git a/packages/client/ui-plugin-manager/README.i18n.yaml b/packages/client/ui-plugin-manager/README.i18n.yaml index cedd5ad788..3178bf5231 100644 --- a/packages/client/ui-plugin-manager/README.i18n.yaml +++ b/packages/client/ui-plugin-manager/README.i18n.yaml @@ -54,8 +54,8 @@ en: ca75c51c89c2c9b0 zh: 2064958b0754647e /deepseek-ai-dsh-client-ui-plugin-manager/known-limitations-and-deferred-work: - en: 149c0d23a56a4944 - zh: e2feaadc871581ae + en: 344ba1e802163bb4 + zh: f3cc2e30ffb037cb /deepseek-ai-dsh-client-ui-plugin-manager/known-limitations-and-deferred-work/dev-note: en: e67f633dc6fe7773 zh: 3bb0c20c93f16f98 diff --git a/packages/client/ui-plugin-manager/README.md b/packages/client/ui-plugin-manager/README.md index 2f763bee16..fec987e497 100644 --- a/packages/client/ui-plugin-manager/README.md +++ b/packages/client/ui-plugin-manager/README.md @@ -153,6 +153,7 @@ None; this package neither assembles nor sends a provider request. ## Known Limitations and Deferred Work +- Feature previews have one image per language and no dark-theme variant, so the badge skill preview keeps its light background in dark theme. - Ping response time does not measure package-download throughput. Probes use the Host fetch route, which pnpm-specific proxy settings can differ from; users can always choose the registry manually, and installation retains its existing fallback rules. diff --git a/packages/client/ui-plugin-manager/README.zh.md b/packages/client/ui-plugin-manager/README.zh.md index b3264c38eb..002375d467 100644 --- a/packages/client/ui-plugin-manager/README.zh.md +++ b/packages/client/ui-plugin-manager/README.zh.md @@ -153,6 +153,7 @@ Host 入口通过生成的 Remote 接口暴露 `pluginRegistryProbe.fastest()` ## 已知限制与延期工作 +- 功能配图每种语言只有一张,没有深色主题版本,因此徽章技能配图在深色主题中仍为浅色背景。 - Ping 响应时间不代表包下载吞吐量。探测使用 Host fetch 的网络路径,pnpm 专用代理设置可能使用不同路径;用户始终可以手动选择安装源,安装仍遵循现有回退规则。 diff --git a/packages/client/ui-plugin-manager/src/client/PluginManagerPage.tsx b/packages/client/ui-plugin-manager/src/client/PluginManagerPage.tsx index 50ee55f037..6fb28e5bf7 100644 --- a/packages/client/ui-plugin-manager/src/client/PluginManagerPage.tsx +++ b/packages/client/ui-plugin-manager/src/client/PluginManagerPage.tsx @@ -247,10 +247,10 @@ function PackageArtwork({ src, row = false, size = row ? ROW_ARTWORK_SIZE : CARD /** A bundle's feature preview; a failed decode is reported in place without blocking management. */ function PackagePreview({ src, title, t }: { readonly src: string; readonly title: string; readonly t: Translate }): ReactNode { - const [failed, setFailed] = useState(false) - return failed + const [failedSource, setFailedSource] = useState() + return src === failedSource ?

{t('previewUnavailable')}

- : {t('previewAlt', { setFailed(true) }} /> + : {t('previewAlt', { setFailedSource(src) }} /> } /** A row's switch: locked, saying why, when the Host refuses to address the row through the profile patch. */ @@ -771,7 +771,7 @@ function PackageDetail({ {pkg.error === undefined ? null :

{t('reasonLabel')}: {managementText(pkg.error, t)}

} {pkg.readOnlyReason === undefined ? null :

{managementText({ code: pkg.readOnlyReason }, t)}

} - {preview === undefined ? null : } + {preview === undefined ? null : }
{configured ? (