Skip to content

插件端确认兼容 2.0.0.0,已下调版本下限。 - #19

Open
opencode-agent[bot] wants to merge 1 commit into
masterfrom
opencode/issue9-20260901130835
Open

插件端确认兼容 2.0.0.0,已下调版本下限。#19
opencode-agent[bot] wants to merge 1 commit into
masterfrom
opencode/issue9-20260901130835

Conversation

@opencode-agent

@opencode-agent opencode-agent Bot commented Sep 1, 2026

Copy link
Copy Markdown

已完成。按要求「不只是这个仓库」,我深入研究了 CI 端插件(SECTL/ClassIsland-SecAgent-Plugin)对低宿主版本(ClassIsland 2.0.0.0)的兼容性,并参考了 ClassIsland 主仓库(HelloWRC/ClassIsland)的源码。

插件端兼容性研究结论(参考 CI 源码)

结论:ClassIsland-SecAgent-Plugin 与 ClassIsland 2.0.0.0 完全兼容,2.0.0.0 就是真实下限。 依据如下:

  1. 插件清单声明的 API 版本恰好满足宿主要求

    • 插件 manifest.yml 声明 apiVersion: 2.0.0.0
    • ClassIsland 2.0.0.0 标签本身git show 2.0.0.0:ClassIsland/Services/PluginService.cs)在 InitializePlugins 中强制 apiVersion < new Version(2,0,0,0) 的插件直接拒绝加载——2.0.0.0 恰好通过。
    • 市场过滤(PluginMarketService.cs)同样要求 version >= Version.Parse("2.0.0.0"),该逻辑在 2.0.0.0 标签已存在。
  2. 插件用到的全部宿主 API 在 2.0.0.0 都存在且未变化

    • 逐项核对了 Plugin.cs/SecAgentSettingsPage 使用的 API:AppBaseAppVersionAppStoppingCurrent.BuildType 等)、IAppHostHost/GetService/TryGetService)、IProfileService.CurrentProfilePathIComponentsService.CurrentComponents/RefreshConfigsIExactTimeService.GetCurrentLocalDateTime()ComponentSettingsCommonDirectories.AppRootFolderPathAddSettingsPage<T>SettingsPageBase[SettingsPageInfo]、XAML 命名空间 http://classisland.tech/schemas/xaml/core——均在 tag 2.0.0.0 中存在。
    • 插件所依赖的 SDK ClassIsland.PluginSdk 1.7.106.2-dev-v2(构建自 commit 27e93bb)是 2.0.0.0 的祖先提交;两者之间仅 8 个提交改动 SDK 项目,且只涉及自动化服务内部实现、UI 动画控件与构建配置,没有触及插件的 API 面
    • 插件 csproj 对 SDK 使用 ExcludeAssets=runtime;native,运行时绑定到宿主的 ClassIsland.Core/Shared 程序集,不存在版本不匹配加载失败的问题。
  3. 更低的 1.x 旧版不适用(符合预期):1.7.x 是 WPF/Material Design 的 v1 插件体系,本插件是 v2(Avalonia)体系,只能跑在 2.0.0.0+,用户要求的就是「2.0.0.0 以上」,与结论一致。

本仓库代码改动

文件 改动
src/classisland.ts MIN_CLASSISLAND_VERSION2.1.1.0 下调为 2.0.0.0,并加注释说明兼容性依据
src/renderer/src/components/OobeWizard.tsx 错误提示同步改为「低于 2.0.0.0」
src/classisland.test.ts 最低版本测试改为 2.0.0.0;「过旧」测试数据改为 1.9.0.0/1.9.0.9;新增断言确认 2.0.4.0(报障用户版本)现被识别为兼容

验证

  • npm run build:cli(tsc 全量编译)通过
  • node --test dist/classisland.test.js:16/16 通过
  • npm test:129 项,128 通过、1 跳过(原有 skip)、0 失败

已提交到当前分支 opencode/issue9-20260901130835(commit 9402ac9)。注:仓库中已存在一个未合并的 PR #15 做了类似的版本下调,本次 PR 在其基础上补充了插件端源码验证依据(classisland.ts 注释、测试断言),可作为其替代/升级版。

Closes #9

New%20session%20-%202026-09-01T13%3A08%3A34.456Z
opencode session  |  github run

将 MIN_CLASSISLAND_VERSION 从 2.1.1.0 下调到 2.0.0.0。依据 ClassIsland
(HelloWRC/ClassIsland) 源码验证:
- 插件 manifest.yml 声明 apiVersion: 2.0.0.0,正好满足 ClassIsland
  2.0.0.0 起在 PluginService.InitializePlugins 中强制要求的
  apiVersion >= 2.0.0.0,也满足 PluginMarketService 的市场显示过滤;
- 插件用到的宿主 API(AppBase、IAppHost、IProfileService、
  IComponentsService、IExactTimeService、ComponentSettings、
  CommonDirectories、AddSettingsPage 等)在 2.0.0.0 标签均存在且未变化。

同步更新 OobeWizard 错误提示与 classisland 测试。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ClassIsland 端联动插件要求的宿主版本过高

0 participants