Skip to content

about: 区分 Squirrel(上游)更新 与 TriFecta 更新;Sparkle 更新源改为 TriFecta - #6

Closed
thesadbee wants to merge 5 commits into
mainfrom
feat/about-update-source
Closed

about: 区分 Squirrel(上游)更新 与 TriFecta 更新;Sparkle 更新源改为 TriFecta#6
thesadbee wants to merge 5 commits into
mainfrom
feat/about-update-source

Conversation

@thesadbee

@thesadbee thesadbee commented Aug 28, 2026

Copy link
Copy Markdown
Owner

摘要

修正「关于」页里更新检查的混乱:把上游 Squirrel(引擎)更新TriFecta(项目)更新两件事清晰分开。

背景/问题

设置面板「关于」页只有一个含糊的「检查更新」。实际存在两个不同的更新源:

  • Squirrel 主程序的 Sparkle 自动更新 指向 rime.github.io/release/squirrel/appcast.xml(上游 Rime/Squirrel 仓库)。因此会弹出「鼠鬚管 1.1.2 可下载」——这是上游引擎版本,与 TriFecta 仓库无关(TriFecta 最新是 v1.1.1)。
  • 原「关于」里的「检查更新」按钮其实打开的是 github.com/thesadbee/TriFecta/releases(TriFecta 仓库),但文案没写清楚。

变更内容

仅修改设置面板「关于」页(settings/Sources/TriFectaSettings/Pages/AboutPage.swift):

  • 「Squirrel 更新(上游)」卡片:明确标注这是上游 rime/鼠鬚管 引擎版本、非 TriFecta 更新;显示 当前 1.1.1 → 上游最新 x 的前后版本号;附「打开上游 Releases」按钮(实时从 api.github.com/repos/rime/squirrel/releases/latesttag_name)。
  • 「TriFecta 更新」卡片:使用 TriFecta 自身的发布版本号(v1.1.1 形式),实时从 api.github.com/repos/thesadbee/TriFecta/releases/latest 取最新 tag;显示 当前 → 最新 并在有新版本时提示「(有新版本)」;提供「检查 TriFecta 更新」按钮(点击重新拉取)。
  • 保留原有版本信息 / GitHub 仓库 / Rime Wiki 链接。

测试

  • bash settings/scripts/build-app.sh release 编译通过(无新增 warning/error)。
  • 纯设置面板 UI 修改,不影响主输入法逻辑与构建。

说明 / 建议(非本次改动)

主程序(Squirrel.app)的 Sparkle 更新源仍为 rime.github.io(上游),这意味着用户仍会收到「鼠鬚管上游 1.1.2」的自动更新提示。若 TriFecta 不希望用户被引导去装上游 Squirrel(可能覆盖本项目定制),建议后续把 resources/Info.plistSUFeedURL 改为 TriFecta 自己的更新源或关闭自动检查。本 PR 先只做设置面板的展示区分。


附:Sparkle 更新源改为 TriFecta(本次第 2 个提交)

问题:主程序(Squirrel.app)的 Sparkle 更新源原本是 rime.github.io(上游 Rime/Squirrel)。这会自动弹出「鼠鬚管 1.1.2 可下载」,且用户点「安装更新」可能用上游 Squirrel 覆盖掉 TriFecta 的定制

改动resources/Info.plist + 新增 appcast.xml):

  • SUEnableAutomaticChecksfalse:关闭 Sparkle 自动检查,不再自动弹上游更新提示(杜绝覆盖风险)。
  • SUFeedURLTriFecta 自己的源https://raw.githubusercontent.com/thesadbee/TriFecta/main/appcast.xml
  • 新增仓库根目录 appcast.xml:作为 TriFecta 更新源的占位/参考,指向 thesadbee/TriFecta 的 Release。

说明

  • 更新入口改为设置面板「关于 → 检查 TriFecta 更新」(走 GitHub Releases,已在上文实现)。
  • 若要恢复 Sparkle 自动更新,需为每个 Release 用 TriFecta 的 Sparkle EdDSA 私钥生成 sparkle:edSignature 并把 appcast 放到公网位置(本次仅做指向 + 关闭自动检查,未搭签名流水线)。

附:同步页新增「导入/导出个人配置」(本次第 3 个提交)

需求:用户从其它 Rime 系输入法(如薄荷输入法 oh-my-rime)迁移个人词库时,希望能导入/导出 Rime 个人词库配置格式。

改动settings/.../Pages/SyncPage.swift):

  • 「导出个人配置」:把用户 Rime 个人配置(*.custom.yamluser.yamlcustom_phrase.txt、用户 *.dict.yaml)打包成 zip,保存到用户指定路径。
  • 「导入个人配置」:支持从指定文件导入:
    • .zip:解压并入 ~/Library/Rime,随后自动重新部署。
    • custom_phrase.txt:拷入 ~/Library/Rime/custom_phrase.txt,并自动为 luna_pinyin_simp / luna_pinyin 补上 custom_phrase 翻译器(table_translator@custom_phrase + user_dict: custom_phrase),使其直接生效。
    • *.dict.yaml:拷入 ~/Library/Rime 作为自定义词典。
    • 导入后自动触发重新部署(Deployer.reload)。

说明

  • 迁移的可移植个人数据为 Rime 文本格式(custom_phrase.txt / *.dict.yaml / *.custom.yaml);词频的二进制 userdb 与具体 schema 强相关,跨输入法不可靠,故不纳入导出。
  • 纯设置面板功能,不影响主输入法逻辑。

@thesadbee thesadbee changed the title about: 区分 Squirrel(上游)更新 与 TriFecta 更新 about: 区分 Squirrel(上游)更新 与 TriFecta 更新;Sparkle 更新源改为 TriFecta Aug 28, 2026
@thesadbee thesadbee closed this Aug 28, 2026
@thesadbee
thesadbee deleted the feat/about-update-source branch August 28, 2026 08:37
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.

1 participant