Skip to content

Latest commit

 

History

History
55 lines (41 loc) · 3.42 KB

versioning-and-updates.md

File metadata and controls

55 lines (41 loc) · 3.42 KB

版本追踪与用户更新

版本号从哪里来

  • 唯一来源是插件包内 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 如何选择可安装的版本

Lithe 的 Rust Core(plugins.marketplace.validateIndex)对每个插件计算 availability:

  1. 从新到旧遍历 versions;
  2. 选第一个有当前平台的包且 pluginAPIVersion 不高于当前 Lithe 支持版本的版本;
  3. 找不到时显示原因:
    • 当前平台在任何版本都没有包 → “暂不支持 <平台> 平台”(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;其他平台用户会继续使用旧版本或看到“不支持”
某个版本有严重问题 发修复版本,并按维护者文档申请撤回问题版本