- 唯一来源是插件包内
plugin.json的version(MAJOR.MINOR.PATCH)。 索引中的versions[].version必须与它一致,CI 会解包核对(plugin.package.mismatch)。 - Git tag 名称不参与比较,
v2.0.0、release-2.0.0都可以;但一个 Release 只能对应一个版本号。 - 版本按语义化版本比较(
1.10.0>1.9.0),索引中versions保持新版本在前。 - 同一插件的版本号不能重复;已发布版本的下载包与 SHA-256 不可修改,修复只能发新版本。
每个插件保留全部历史版本,每个版本独立声明:
| 字段 | 作用 |
|---|---|
pluginAPIVersion |
该版本需要的 Lithe 插件 API 版本 |
releaseDate |
发布日期,显示在插件详情中 |
downloads[].platforms |
该版本提供哪些平台的包;每个平台在一个版本中只能出现一次 |
不同版本可以支持不同平台。例如 2.0.0 只有 macOS 包而 1.9.0 还有 Windows 包时,
Windows 用户会被安装 1.9.0。
Lithe 的 Rust Core(plugins.marketplace.validateIndex)对每个插件计算 availability:
- 从新到旧遍历
versions; - 选第一个有当前平台的包且
pluginAPIVersion不高于当前 Lithe 支持版本的版本; - 找不到时显示原因:
- 当前平台在任何版本都没有包 → “暂不支持 <平台> 平台”(
plugin.index.platformUnsupported); - 有包但都需要更新的插件 API → 提示升级 Lithe(
plugin.index.apiUnsupported)。
- 当前平台在任何版本都没有包 → “暂不支持 <平台> 平台”(
所以旧版 Lithe 用户会自动停在最后一个兼容版本,不会被推送无法运行的新版本。 这也是不能删除历史版本的原因:删掉后,旧 Lithe 用户就没有可装的版本了。
- 发现更新:Lithe 每次启动后首次打开插件页时会刷新所有已启用的插件源(也可以手动刷新),若已安装版本低于
availability.version,“已安装”标签中该插件显示“更新”按钮,详情页显示新版本号与发布日期。 - 确认更新:更新和首次安装走同一流程——下载 → 校验 SHA-256(不匹配就不解压)→ 校验声明 → 生成安装审查。若新版本新增了要运行的程序,Lithe 会再次弹窗请用户确认; 没有新增程序时直接更新。用户可以选择暂不更新,继续使用当前版本。
- 只从原来源更新:同一插件 ID 出现在多个插件源时,安装时由用户选择来源, 之后的更新只来自安装时记录的那个源,防止其他源用同名插件“劫持”更新。
- 完整性复查:安装时记录包内所有文件的内容摘要,每次加载都会重新计算,被改动的插件会被拒绝加载。
| 想做的事 | 正确做法 |
|---|---|
| 修复已发布版本的 bug | 发新的 PATCH 版本,不要替换旧 Release 的资产 |
| 新版本需要更新的 Lithe 插件 API | 在新版本 plugin.json 中提高 pluginAPIVersion;旧版本保留给旧 Lithe |
| 暂时只支持部分平台 | 只上传对应平台的 zip;其他平台用户会继续使用旧版本或看到“不支持” |
| 某个版本有严重问题 | 发修复版本,并按维护者文档申请撤回问题版本 |