Skip to content

Releases

v0.3.0 — 下载更新,不用再等 GitHub 了

Choose a tag to compare

@TonyMistark TonyMistark released this 23 Oct 11:30
96371dd

下载更新,不用再等 GitHub 了

这版给「检查更新」加了双源:GitHub 主源 + Gitee 备源(gitee.com/Micestark/openly)。GitHub 抽风或国内网络差的时候,还有 Gitee 那条路。

换个下载源

  • 检查更新时并发查两个源、都等到结果再比较,取版本更高者——Gitee 晚传了附件也漏不掉新版
  • 一个源挂了自动用另一个,全挂才报「检查失败」
  • 设置页 › 更新区新增**「换个下载源…」**菜单:每个源两条路——直接下载安装,或打开它的 Release 页自己拖
  • 主按钮(一键更新)始终走首选源(GitHub),行为不变

发布侧(对使用者透明)

每次 GitHub Release 发出后,tag、说明与 dmg 会同步到 Gitee(sync-gitee-release.sh,幂等)。README 安装节新增 Gitee 镜像入口。

顺带修的

  • 版本比较在段数不同(0.4 vs 0.4.0)时不再有越界风险
  • 更新测试体系换到 Swift Testing:新增 21 个双源用例(同版本带全源、高版本胜出哪怕来自备源、单源失败回退、全失败报错、Gitee 载荷宽容解码 + 模板拼页、换源装配守卫),全部注入式 fetch,不碰真网;「取更高版本」做过反向验证(故意取更低时用例当场变红)

升级

DMG 拖进「应用程序」覆盖安装即可;装好后应用内就能检查更新,下载源可挑。仍然未公证,Gatekeeper 放行方式同前:系统设置 › 隐私与安全性 › 仍要打开,或 xattr -cr /Applications/Openly.app。

sha256: 832d5bfefd32a82f73c2a700a92000c6bfffab5fd9ceda994f7d0f33b9ba9dcd

v0.2.0 — 能撤销,也能自己更新了

Choose a tag to compare

@TonyMistark TonyMistark released this 23 Oct 08:25

这次可以撤销,也能自己更新了

v0.1.0 是「第一次能用了」,v0.2.0 补上的是敢用——改错了能退回去,出新版不用再回来找下载页。

⌘Z 撤销 + 恢复系统默认

改错一个默认应用,以前只能凭记忆改回去。现在:

  • ⌘Z 逐条回退最近修改(单条、批量都记,栈深 50)
  • 编辑面板里新增恢复系统默认——只对「你显式设置过」的类型出现,点了就把那条记录从 Launch Services 摘掉,交还系统固有默认
  • 恢复这个动作本身也能 ⌘Z 撤回

实现上绕开了一个坑:macOS 没有「取消默认设置」的公开 API,唯一可行的路是从 com.apple.launchservices.secure.plist 摘记录,而且必须走 CFPreferences——直接改文件会被 cfprefsd 的缓存静默覆盖回去。

设置窗口(⌘, 或工具栏齿轮)

  • 语言:English / 简体中文 / 跟随系统(重启后生效)
  • 更新:自动检查开关、当前版本与系统版本、状态一句话
  • 关于:简介、仓库入口、MIT 许可证

应用内更新

有新版时「立即检查」旁出现「更新…」,一路走完:下载(带进度)→ 挂载 → 校验版本 → 旧版进废纸篓 → 原子换装 → 自动重启。

任何一步失败,已装的旧版一个字节不动,最终退路是在 Finder 里亮出 dmg 让你自己拖。检查更新 24 小时节流,失败 1 小时后重试,启动时自动查一次(可关),离线时完全静默。

修复

  • 关掉主窗口后点 Dock 图标没反应 —— SwiftUI 的 reopen 只认「上一次那扇窗」,那扇窗关了就什么都不做。现在有窗举窗、缩在 Dock 里交给系统做神灯动画、一扇不剩就开新的
  • 主界面工具栏重新排布:搜索框居中、按钮全部归右,点搜索不会再让导出/导入/刷新折叠进溢出菜单;⌘F 仍然可用

升级

DMG 拖进「应用程序」覆盖安装即可,配置和所有关联不受影响。装好之后打开设置 › 更新,以后就能在应用内升级了。

系统要求

macOS 14 及以上。

安装提示

本版未做公证(没有 Developer ID 证书),首次打开会被 Gatekeeper 拦。放行方式:系统设置 › 隐私与安全性 › 仍要打开,或执行 xattr -cr /Applications/Openly.app。

sha256: 27eb0df1efbd5c9654274e654435eea6c83a04c97abceaa3b2118567df65ceab

v0.1.0 — 第一次能用了

Choose a tag to compare

@TonyMistark TonyMistark released this 23 Oct 02:31

v0.1.0 — 第一次能用了

Openly 的第一个版本。

它只做一件事:把 macOS 里「什么文件用什么打开」这张散落在各处的表,收进一个能看、能搜、能批改、能带走的窗口。

能看

  • 首屏一张表:Launch Services 里你设过的关联,加上一份常用扩展名清单——.md、.pdf、.html、mailto:、plain-text 都在里面。每行是类型徽标、底层 UTI、默认应用的真实图标、注册应用数量
  • 左栏两个智能列表:无默认应用(红色徽标,一眼看到哪些类型没人管)、最近修改(每次「原为 X → Y」都记着,重启还在)
  • 七个文件类别按 UTType 的继承关系推导,不是硬编码映射表

能改

  • 点任意一行弹出锚定面板,列出注册过这个类型的全部应用,选一个即生效;行内图标当场更新
  • 列表里没有的应用走「浏览其他应用…」:任选一个 .app,先注册进 Launch Services 再设为默认
  • 勾选多行批量改。应用不支持的类型逐条跳过并汇总报出,不会中途断掉

能反查

  • 顶栏切「按应用」:侧栏按接管数量排出所有应用,主区列出它手里的每一个类型,还能一键「全部转移给…」。卸载或替换一个应用之前,先看清它管着什么

能带走

  • 导出 infat 兼容的 TOML([extensions] [types] [schemes] 三张表),直接进 dotfiles
  • 导入先算差异——新增 N 条、覆盖 M 条、其余一致——确认后才动手,改之前你就知道会改什么

macOS 26 上的一件事

这个版本在 macOS 26 上还能改默认应用,是因为设置路径换成了 NSWorkspace 的现代 API。旧的 LSSetDefaultRoleHandlerForContentType 在新系统上返回 noErr 但什么都写不进去——infat 的命令行在这台机器上已经改不动了。查询侧仍然走 legacy API,一切正常。

代价是:每次修改系统都会弹一次确认框,批量修改就是多次确认。这是 Apple 的机制,绕不过去,所以批量操作会提前告诉你。踩到的坑都记在 docs/LAUNCHSERVICES_NOTES.md。

还没有的

  • ⌘Z 撤销、恢复系统默认——目前只能手动改回去
  • 异常检测只做了「无默认」;「非常规占用」(比如 .html 被非浏览器接管)和「共享 UTI 联动提示」(yml / yaml 改一个影响另一个)还没做
  • 搜索不覆盖注册应用名和 bundle ID

安装

下载 Openly-0.1.0.dmg,打开后把 Openly 拖进「应用程序」。

产物是 ad-hoc 签名、未公证,新机器首次打开会被 Gatekeeper 拦下(macOS 15 起已不能用「右键 → 打开」绕过):

  • 系统设置 › 隐私与安全性 › 仍要打开;或
  • xattr -cr /Applications/Openly.app

要求 macOS 14 及以上,本版为 Apple Silicon(arm64)。27 项单元测试通过,CI 覆盖 macOS 15 与 26。