From b1405ee71f31ac95a15118ca3cb32d0232d002ed Mon Sep 17 00:00:00 2001 From: Rick Ye Date: Fri, 11 Sep 2026 17:53:35 +0800 Subject: [PATCH] =?UTF-8?q?feat(settings/plugins):=20=E3=80=8C=E5=85=A8?= =?UTF-8?q?=E9=83=A8=E3=80=8D=E4=BD=9C=E7=94=A8=E5=9F=9F=20+=20=E6=B5=8F?= =?UTF-8?q?=E8=A7=88=E5=99=A8=E7=8B=AC=E7=AB=8B=E5=9B=BE=E6=A0=87=20+=20?= =?UTF-8?q?=E6=B5=8F=E8=A7=88=E5=99=A8=E8=AE=BE=E7=BD=AE=E9=A1=B5=E6=96=87?= =?UTF-8?q?=E6=A1=88=E7=B2=BE=E7=AE=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/plugins/builtin/browser.ts | 3 +- .../renderer/src/components/SettingsModal.tsx | 30 +++++++++++++------ .../components/browser/BrowserImportForm.tsx | 4 +-- .../components/browser/BrowserProxyForm.tsx | 4 --- packages/plugin-template/manifest.json | 2 +- 5 files changed, 26 insertions(+), 17 deletions(-) diff --git a/apps/desktop/src/main/plugins/builtin/browser.ts b/apps/desktop/src/main/plugins/builtin/browser.ts index 53087e0..311a01a 100644 --- a/apps/desktop/src/main/plugins/builtin/browser.ts +++ b/apps/desktop/src/main/plugins/builtin/browser.ts @@ -15,7 +15,8 @@ export const browserPlugin: BuiltinPlugin = { minContract: '0.1.0', panel: true, order: 10, - description: '受管浏览器' + description: '受管浏览器', + icon: 'Globe' }, /** 宿主专属二级设置页(代理设置 + 登录态导入;见 SettingsModal 插件页特判) */ settingsPage: true, diff --git a/apps/desktop/src/renderer/src/components/SettingsModal.tsx b/apps/desktop/src/renderer/src/components/SettingsModal.tsx index 6390779..de46b6a 100644 --- a/apps/desktop/src/renderer/src/components/SettingsModal.tsx +++ b/apps/desktop/src/renderer/src/components/SettingsModal.tsx @@ -776,7 +776,7 @@ function PluginsPanel({ onNavToggle: (pluginId: string, on: boolean) => void }): ReactNode { const plugins = usePluginList() - const [scope, setScope] = useState<'user' | 'project' | 'builtin'>('user') + const [scope, setScope] = useState<'all' | 'user' | 'project' | 'builtin'>('all') /** 全局插件重载进行中(重扫目录 + 重建运行时;期间刷新按钮禁用旋转) */ const [reloading, setReloading] = useState(false) const [dirs, setDirs] = useState<{ user: string[]; project: string[]; global: string[] }>({ @@ -798,17 +798,23 @@ function PluginsPanel({ }, []) const scoped = - scope === 'builtin' - ? plugins.filter((p) => p.source === 'builtin') - : plugins.filter((p) => p.source === 'external' && (scope === 'project' ? p.origin === 'project' : p.origin !== 'project')) + scope === 'all' + ? plugins + : scope === 'builtin' + ? plugins.filter((p) => p.source === 'builtin') + : plugins.filter((p) => + p.source === 'external' ? (scope === 'project' ? p.origin === 'project' : p.origin !== 'project') : false + ) const scopedDirs = scope === 'user' ? dirs.global : scope === 'project' ? dirs.project : [] const scopedHints = scope === 'user' ? ['全局'] : ['项目'] + const originLabel = (p: PluginInfo): string => + p.source === 'builtin' ? '内置' : p.origin === 'project' ? '项目' : '全局' return (
- {(['user', 'project', 'builtin'] as const).map((s) => ( + {(['all', 'user', 'project', 'builtin'] as const).map((s) => ( ))}
@@ -839,9 +845,15 @@ function PluginsPanel({ {scoped.length === 0 ? (
- {scope === 'builtin' ? '暂无内置插件' : devBuild ? '暂无第三方插件' : '第三方插件装载已关闭(用户版构建)'} + {scope === 'all' + ? '暂无插件' + : scope === 'builtin' + ? '暂无内置插件' + : devBuild + ? '暂无第三方插件' + : '第三方插件装载已关闭(用户版构建)'}
- {scope !== 'builtin' && devBuild && ( + {(scope === 'user' || scope === 'project') && devBuild && (
把含 manifest.json 的插件目录放入 {scope === 'user' ? '全局(~/.pi/agent/extensions)' : '项目 .pi/extensions/'}即可自动识别 @@ -883,7 +895,7 @@ function PluginsPanel({
{p.manifest.name} - {scope === 'builtin' ? '内置' : scope === 'user' ? '全局' : '项目'} v{p.manifest.version} + {originLabel(p)} v{p.manifest.version} {p.dependencies.length > 0 && }
diff --git a/apps/desktop/src/renderer/src/components/browser/BrowserImportForm.tsx b/apps/desktop/src/renderer/src/components/browser/BrowserImportForm.tsx index 207ac07..f5bc5d8 100644 --- a/apps/desktop/src/renderer/src/components/browser/BrowserImportForm.tsx +++ b/apps/desktop/src/renderer/src/components/browser/BrowserImportForm.tsx @@ -66,8 +66,8 @@ export function BrowserImportForm(): JSX.Element { return (

- 选择本机浏览器的一个配置(Profile),把其中各网站的登录态(Cookie / Local Storage)导入到内置受管浏览器。 - 导入前请完全退出该浏览器,并关闭本面板的所有标签页。 + 迁移 Cookie / Local Storage 登录态。导入前请 + 完全退出源浏览器,并关闭本面板所有标签页。

{state?.imported && ( diff --git a/apps/desktop/src/renderer/src/components/browser/BrowserProxyForm.tsx b/apps/desktop/src/renderer/src/components/browser/BrowserProxyForm.tsx index 63fa989..9272f6c 100644 --- a/apps/desktop/src/renderer/src/components/browser/BrowserProxyForm.tsx +++ b/apps/desktop/src/renderer/src/components/browser/BrowserProxyForm.tsx @@ -68,10 +68,6 @@ export function BrowserProxyForm(): JSX.Element { return (
-

- 代理只作用于内置受管浏览器(不影响应用其他部分与系统设置),保存后立即生效。 -

-
{PROXY_MODES.map((m) => (