跳转到内容

下载 Termii · v0.4.5

三分钟,装进你的 Dock

原生构建,包体仅数 MB。应用内自动更新,始终新鲜。

安装说明

macOS:若提示「无法打开」,在终端执行 xattr -dr com.apple.quarantine /Applications/Termii.app。Windows:首次运行可能触发 SmartScreen,选择「仍要运行」即可。

发布上架

本文面向第三方插件作者:如何把插件打包、签名并提交到插件目录。 官方插件的发布流程见 官方插件开发与发布。

构建出 tar.gz,目录根 = 插件目录(包含 plugin.json 与 main.js, 即「从磁盘安装」选中的那个目录):

Terminal window
tar -czf my-plugin-0.1.0.tar.gz -C . my-plugin

安装时宿主校验包内恰好一个插件目录(不允许杂散的顶层文件), plugin.json 的 id 必须与目录名一致。

macOS 用户注意:带扩展属性的文件会被系统 tar 写成 ._* AppleDouble 伴随文件(含顶层 ._<id>),在 Windows 解压会触发「杂散顶层文件」 校验失败。打包时禁用:COPYFILE_DISABLE=1 tar -czf …。

无签名可以安装,但会走信任确认弹窗(见 信任模型与安全边界)。

  • 签名复用 Tauri updater 的 minisign 信任根:公钥即宿主 tauri.conf.json 的 plugins.updater.pubkey,私钥 ~/.tauri/termii.key(带密码,永不进仓库)。
  • 签名对象是 tar.gz 包字节本身;签名文件是 base64 编码的 minisign 文本(tauri signer sign 输出与 updater signature 字段同格式):
Terminal window
cargo tauri signer sign -f ~/.tauri/termii.key my-plugin-0.1.0.tar.gz
# → 生成 my-plugin-0.1.0.tar.gz.sig(托管地址即目录条目里的 sigUrl)

签名流程与官方发布脚本 scripts/publish-plugins.sh 的做法一致 (该脚本会自动完成构建 → 打包 → 签名 → 生成目录条目)。

向 Termii-App/plugins 提交 PR: 在仓库根 catalog.json 的 plugins 数组加一条(schema v1,详见该仓库 README 与 scripts/build-catalog.mjs 头部注释)。合并后自动部署到 https://plugins.termii.meowdream.cn/catalog.json(Cloudflare Pages, 与官网同 CDN,下载流量不走 GitHub)。

条目字段:

字段 说明
id 与 plugin.json 一致(kebab-case,校验较严:^[a-z0-9]+(?:-[a-z0-9]+)*$)
name / version 与 plugin.json 一致(version 为 semver)
description / author 展示用
apiVersion 与 plugin.json 的 apiVersion 同语义
minAppVersion 要求宿主最低版本
capabilities 与 plugin.json 的能力声明一致
downloadUrl tar.gz 的托管地址(http(s) 绝对地址)
sigUrl 签名文件地址(可选;有则安装时必验签,缺失会导致安装失败,不能静默降级)
official 仅官方插件为 true(第三方不要写,写了也会被安装时剥离)
  • 从 URL 安装:设置 → 插件 → 从 URL 安装(粘贴 downloadUrl,或 粘贴目录条目地址)。前端下载字节后经宿主落盘,带签名则验签(签名 失效 → 拒绝安装),无签名可装(走信任弹窗)。
  • 更新检查:已装插件的更新检查是手动的(目录条目 vs 已装版本, 复用宿主 update 模块的版本比较);不做自动更新 / 付费 / 评论 / 搜索分类。
  • 应用内市场:设置 → 插件 → 插件市场展示目录条目(官方条目带 「官方」徽标)。
  1. 升级 plugin.json 的 version(及 minAppVersion 如需要), 同步 bundle 内 manifest(模板的 src/manifest.js);
  2. 重新构建 main.js、重新打包 tar.gz、重新签名;
  3. 更新 catalog.json 条目;宿主比对版本后提示用户更新。