alielsokary/CaskHub
GitHub: alielsokary/CaskHub
CaskHub 是一款原生 macOS 应用,为 Homebrew Cask 提供了可视化的应用浏览、搜索、安装与卸载管理界面。
Stars: 121 | Forks: 6
# CaskHub
[](https://github.com/alielsokary/CaskHub/actions/workflows/tests.yml)
[](https://app.codacy.com/gh/alielsokary/CaskHub/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)
[](https://codecov.io/gh/alielsokary/CaskHub)
[](https://github.com/alielsokary/CaskHub/releases/latest)
[](LICENSE)
[](https://github.com/alielsokary/CaskHub/releases/latest)
**一款原生的 macOS Homebrew casks 应用商店。** 浏览、搜索、安装、更新和卸载通过 [Homebrew](https://brew.sh) 分发的数千款 Mac 应用——包含从源文件中提取的原始应用图标、分类、流行度图表以及一键操作,所有这些都集成在简洁的 SwiftUI 界面中。
CaskHub 100% 免费且开源,没有订阅、没有高级版本、没有广告,没有任何其他收费项目。
## 安装
或者使用 Homebrew 安装:
```
brew install --cask alielsokary/tap/caskhub
```
## 功能
### 探索
- **浏览** - 精选展示架和轮换精选推荐,按类别组织
- **特色推荐** - 按安装流行度排名的前 100 名 casks
- **热门排行** - 包含 30 / 90 / 365 天分析窗口的最多安装量 casks
- **最近添加** - 过去 30-90 天内新发布到 Homebrew 的 casks
- **分类** - 每个 cask 都被划分到可浏览的类别中(开发者工具、生产力、设计等)
- **搜索** - 跨名称、token 和描述的即时搜索 (⌘F)
### 管理
- **安装 / 更新 / 卸载** 支持实时进度状态和可取消的下载
- **接管应用** - 一键将你在 Homebrew 之外安装的应用(下载的 DMG、其他商店)纳入 brew 管理,且保留应用在原位置
- **引导式 Homebrew 设置** - 如果缺少 Homebrew,会引导你完成安装,支持自定义安装路径,并能在 Apple Silicon 和 Intel 上选择原生 prefix
- **智能更新检测** - 跳过自更新应用,并规范化包后缀版本差异,因此“更新”徽章只显示真正重要的更新
- **已安装资源库** - 检测 Caskroom 中已有的内容,包括从命令行安装的应用
- **原生密码提示** - 需要管理员权限的基于 pkg 的 casks 会弹出原生 macOS 对话框,而不是终端提示
- **丰富的元数据** - 原始应用图标、下载大小、安装次数、主页和版本信息
### 优化细节
- 网格和列表视图模式,灵活的排序,浅色/深色/系统主题
- 自定义设计系统与内置排版
- 内置分类数据随应用一起发布,因此浏览永远不会受制于网络
- **内置应用更新** - CaskHub 通过 [Sparkle](https://sparkle-project.org) 自行保持最新状态
## 工作原理
CaskHub 在三个层面上与 Homebrew 进行交互:
1. **目录与分析** 数据来自公开的 [Homebrew API](https://formulae.brew.sh)(`/api/cask.json` 和安装分析数据)。仅浏览不需要安装 Homebrew。
2. **已安装应用检测** 直接从你的 Caskroom(`$HOMEBREW_PREFIX/Caskroom`)读取安装凭证——速度快且无需调用 shell 命令。
3. **安装、更新和卸载** 通过你真实的 `brew` 二进制文件运行,因此 CaskHub 所做的一切都与命令行完全兼容。你在 CaskHub 中安装的任何内容都可以使用 `brew` 进行管理,反之亦然。
分类、首次出现日期和原始应用图标由配套的 [CaskFlow](https://github.com/alielsokary/CaskFlow) pipeline 生成,并通过其 GitHub Releases 使用。内置的快照随应用一起提供,因此这些功能都不会阻塞启动或需要网络连接。
## 系统要求
- **macOS 15.6** 或更高版本
- **[Homebrew](https://brew.sh)** - 安装、更新和卸载 casks 所必需(浏览不需要)
## 从源代码构建
想自己构建?你需要 Xcode 26 或更高版本:
```
git clone https://github.com/alielsokary/CaskHub.git
cd CaskHub
open CaskHub.xcodeproj
```
选择 **CaskHub** scheme 并运行 (⌘R)。Xcode 会自动解析 Swift package 依赖项([Sparkle](https://github.com/sparkle-project/Sparkle)、[Sentry](https://github.com/getsentry/sentry-cocoa) 和 [TelemetryDeck](https://github.com/TelemetryDeck/SwiftSDK))。
## 架构
- **SwiftUI + MVVM** 架构,使用 `@Observable` view models 和 `@MainActor` 隔离
- **基于协议的网络层** 以实现可测试性(`BrewAPIClientProtocol`、`NetworkServiceProtocol`),全面采用依赖注入
- **两层图标缓存**(内存 + 磁盘)以及基于 HTTP header 的下载大小解析
- **极简依赖** - 三个专用的 package:用于应用更新的 [Sparkle](https://sparkle-project.org)、用于崩溃报告的 [Sentry](https://sentry.io) 以及用于分析的 [TelemetryDeck](https://telemetrydeck.com)
## 测试与 CI
测试使用 XCTest 在向 `master` 和 `develop` 提交的 pull request 以及向 `develop` 推送时运行,测试覆盖率报告至 Codecov,静态分析由 Codacy 负责。对 `master` 的 PR 进行的发布新鲜度检查确保内置的分类数据与最新的 CaskFlow 版本保持同步。
```
xcodebuild test -project CaskHub.xcodeproj -scheme CaskHub -destination 'platform=macOS'
```
## 隐私与分析
CaskHub 通过 [TelemetryDeck](https://telemetrydeck.com)(一项隐私优先的分析服务)收集匿名的使用分析数据。没有任何个人数据或标识符会离开你的 Mac:用户 ID 在设备上进行加盐和哈希处理,并且不会跨应用或网站进行追踪。
CaskHub 还会通过 [Sentry](https://sentry.io) 发送匿名崩溃报告,以帮助诊断和修复稳定性问题。
你可以随时在 **设置 → 隐私** 中选择退出这两项。
## 贡献
有兴趣为 CaskHub 做贡献吗?我们欢迎各种形式的贡献!
- **代码贡献**:Bug 修复、新功能、改进
- **Bug 报告**:发现问题?请告诉我们
- **功能请求**:有想法?我们很乐意倾听
## 许可证
CaskHub 基于 [MIT 许可证](LICENSE) 发布。
**一款原生的 macOS Homebrew casks 应用商店。** 浏览、搜索、安装、更新和卸载通过 [Homebrew](https://brew.sh) 分发的数千款 Mac 应用——包含从源文件中提取的原始应用图标、分类、流行度图表以及一键操作,所有这些都集成在简洁的 SwiftUI 界面中。
CaskHub 100% 免费且开源,没有订阅、没有高级版本、没有广告,没有任何其他收费项目。
## 安装
或者使用 Homebrew 安装:
```
brew install --cask alielsokary/tap/caskhub
```
## 功能
### 探索
- **浏览** - 精选展示架和轮换精选推荐,按类别组织
- **特色推荐** - 按安装流行度排名的前 100 名 casks
- **热门排行** - 包含 30 / 90 / 365 天分析窗口的最多安装量 casks
- **最近添加** - 过去 30-90 天内新发布到 Homebrew 的 casks
- **分类** - 每个 cask 都被划分到可浏览的类别中(开发者工具、生产力、设计等)
- **搜索** - 跨名称、token 和描述的即时搜索 (⌘F)
### 管理
- **安装 / 更新 / 卸载** 支持实时进度状态和可取消的下载
- **接管应用** - 一键将你在 Homebrew 之外安装的应用(下载的 DMG、其他商店)纳入 brew 管理,且保留应用在原位置
- **引导式 Homebrew 设置** - 如果缺少 Homebrew,会引导你完成安装,支持自定义安装路径,并能在 Apple Silicon 和 Intel 上选择原生 prefix
- **智能更新检测** - 跳过自更新应用,并规范化包后缀版本差异,因此“更新”徽章只显示真正重要的更新
- **已安装资源库** - 检测 Caskroom 中已有的内容,包括从命令行安装的应用
- **原生密码提示** - 需要管理员权限的基于 pkg 的 casks 会弹出原生 macOS 对话框,而不是终端提示
- **丰富的元数据** - 原始应用图标、下载大小、安装次数、主页和版本信息
### 优化细节
- 网格和列表视图模式,灵活的排序,浅色/深色/系统主题
- 自定义设计系统与内置排版
- 内置分类数据随应用一起发布,因此浏览永远不会受制于网络
- **内置应用更新** - CaskHub 通过 [Sparkle](https://sparkle-project.org) 自行保持最新状态
## 工作原理
CaskHub 在三个层面上与 Homebrew 进行交互:
1. **目录与分析** 数据来自公开的 [Homebrew API](https://formulae.brew.sh)(`/api/cask.json` 和安装分析数据)。仅浏览不需要安装 Homebrew。
2. **已安装应用检测** 直接从你的 Caskroom(`$HOMEBREW_PREFIX/Caskroom`)读取安装凭证——速度快且无需调用 shell 命令。
3. **安装、更新和卸载** 通过你真实的 `brew` 二进制文件运行,因此 CaskHub 所做的一切都与命令行完全兼容。你在 CaskHub 中安装的任何内容都可以使用 `brew` 进行管理,反之亦然。
分类、首次出现日期和原始应用图标由配套的 [CaskFlow](https://github.com/alielsokary/CaskFlow) pipeline 生成,并通过其 GitHub Releases 使用。内置的快照随应用一起提供,因此这些功能都不会阻塞启动或需要网络连接。
## 系统要求
- **macOS 15.6** 或更高版本
- **[Homebrew](https://brew.sh)** - 安装、更新和卸载 casks 所必需(浏览不需要)
## 从源代码构建
想自己构建?你需要 Xcode 26 或更高版本:
```
git clone https://github.com/alielsokary/CaskHub.git
cd CaskHub
open CaskHub.xcodeproj
```
选择 **CaskHub** scheme 并运行 (⌘R)。Xcode 会自动解析 Swift package 依赖项([Sparkle](https://github.com/sparkle-project/Sparkle)、[Sentry](https://github.com/getsentry/sentry-cocoa) 和 [TelemetryDeck](https://github.com/TelemetryDeck/SwiftSDK))。
## 架构
- **SwiftUI + MVVM** 架构,使用 `@Observable` view models 和 `@MainActor` 隔离
- **基于协议的网络层** 以实现可测试性(`BrewAPIClientProtocol`、`NetworkServiceProtocol`),全面采用依赖注入
- **两层图标缓存**(内存 + 磁盘)以及基于 HTTP header 的下载大小解析
- **极简依赖** - 三个专用的 package:用于应用更新的 [Sparkle](https://sparkle-project.org)、用于崩溃报告的 [Sentry](https://sentry.io) 以及用于分析的 [TelemetryDeck](https://telemetrydeck.com)
## 测试与 CI
测试使用 XCTest 在向 `master` 和 `develop` 提交的 pull request 以及向 `develop` 推送时运行,测试覆盖率报告至 Codecov,静态分析由 Codacy 负责。对 `master` 的 PR 进行的发布新鲜度检查确保内置的分类数据与最新的 CaskFlow 版本保持同步。
```
xcodebuild test -project CaskHub.xcodeproj -scheme CaskHub -destination 'platform=macOS'
```
## 隐私与分析
CaskHub 通过 [TelemetryDeck](https://telemetrydeck.com)(一项隐私优先的分析服务)收集匿名的使用分析数据。没有任何个人数据或标识符会离开你的 Mac:用户 ID 在设备上进行加盐和哈希处理,并且不会跨应用或网站进行追踪。
CaskHub 还会通过 [Sentry](https://sentry.io) 发送匿名崩溃报告,以帮助诊断和修复稳定性问题。
你可以随时在 **设置 → 隐私** 中选择退出这两项。
## 贡献
有兴趣为 CaskHub 做贡献吗?我们欢迎各种形式的贡献!
- **代码贡献**:Bug 修复、新功能、改进
- **Bug 报告**:发现问题?请告诉我们
- **功能请求**:有想法?我们很乐意倾听
## 许可证
CaskHub 基于 [MIT 许可证](LICENSE) 发布。标签:GUI, Homebrew, SwiftUI, 应用商店, 桌面应用