返回首页

24小时热榜

86作者: nobody9999大约 16 小时前原帖
相关内容:<p><i>Archive.today 正在对我的博客发起 DDoS 攻击</i> - <a href="https://news.ycombinator.com/item?id=46843805">https://news.ycombinator.com/item?id=46843805</a> - 2026年2月(168条评论)<p><i>问HN:archive.today 的奇怪行为?</i> - <a href="https://news.ycombinator.com/item?id=46624740">https://news.ycombinator.com/item?id=46624740</a> - 2026年1月(69条评论)
33作者: IronsideXXVI大约 21 小时前原帖
嘿,HN!我为 Hacker News 构建了一个原生的 macOS 桌面客户端,并将其开源,采用 MIT 许可证。 <p>GitHub: <a href="https://github.com/IronsideXXVI/Hacker-News" rel="nofollow">https://github.com/IronsideXXVI/Hacker-News</a></p> <p>下载(已签名和公证的 DMG,适用于 macOS 14.0 及以上版本):<a href="https://github.com/IronsideXXVI/Hacker-News/releases" rel="nofollow">https://github.com/IronsideXXVI/Hacker-News/releases</a></p> <p>截图:<a href="https://github.com/IronsideXXVI/Hacker-News#screenshots" rel="nofollow">https://github.com/IronsideXXVI/Hacker-News#screenshots</a></p> <p>我花了很多时间阅读 HN——我想要一个感觉像真正的 Mac 应用程序的东西:一个用于浏览故事的侧边栏,一个集成的文章阅读器,以及评论线程——所有这些都在一个窗口中。基本上,我希望 HN 在 macOS 上感觉像一个一流的公民,而不是我访问的网站。</p> <p>它的功能:</p> - 分屏布局——左侧是故事的侧边栏,右侧是文章和评论,采用标准的 macOS NavigationSplitView 模式。 - 内置广告拦截——预编译的 WKContentRuleList 在 WebKit 层中拦截 14 个主要广告网络(如 DoubleClick、Google Syndication、Criteo、Taboola、Outbrain、亚马逊广告等)。无需扩展,设置中可切换。 - 弹窗拦截——阻止 window.open() 调用,同样可切换。 - HN 账户登录——完整的身份验证流程(登录、账户创建、密码重置)。会话存储在 macOS 钥匙串中,Cookies 注入到 WebView 中,以便您可以在保持登录状态的同时点赞、评论和提交故事。 - 书签——本地保存故事以便离线访问。使用 Codable 序列化持久化,独立可搜索和过滤。 - 搜索和过滤——由 Algolia HN API 提供支持。按内容类型(所有、提问、展示、工作、评论)、日期范围(今天、过去一周、过去一个月、所有时间)过滤,并按热门或最新排序。 - 滚动进度指示器——顶部的小橙色条通过 JavaScript 与本地消息传递跟踪您的阅读进度。 - 通过 Sparkle 自动更新,更新由 GitHub Pages 提供,并使用 EdDSA 签名。 - 深色模式——通过 CSS 和元标签注入尊重系统外观。 <p>对技术细节感兴趣的朋友:</p> 整个应用程序大约有 2050 行 Swift,分布在 16 个文件中。它使用现代的 @Observable 宏(而不是旧的 ObservableObject/Published 模式),采用结构化并发,使用 async/await 和 withThrowingTaskGroup 进行并发批量获取,并且整个应用使用 SwiftUI——除了通过 NSViewRepresentable 的 WKWebView 包装器外,没有 UIKit/AppKit 桥接。 两个 API 为数据提供支持:官方的 HN Firebase API 用于单个项目/用户的获取,以及 Algolia Search API 用于信息流、过滤和搜索。Algolia API 在这方面非常强大——它允许您进行日期范围过滤、分页和 Firebase API 不支持的全文搜索。 <p>CI/CD:</p> 发布管道是一个单一的 GitHub Actions 工作流(467 行),处理完整的 macOS 分发流程:构建和归档、使用开发者 ID 签名、通过 Apple 公证(带有 5 次重试的循环以应对票据传播延迟)、创建一个自定义 DMG,使用 AppleScript 驱动的图标定位,签名和公证 DMG,生成 EdDSA Sparkle 签名,创建 GitHub Release,并将更新的 appcast.xml 部署到 GitHub Pages。 在 CI 中让 macOS 代码签名和公证正常工作,老实说是这个项目中最困难的部分。如果有人通过 GitHub Actions 在 App Store 之外分发 macOS 应用程序,我很乐意回答问题——这个工作流是完全开源的。 整个项目采用 MIT 许可证。欢迎提交 PR 和问题:<a href="https://github.com/IronsideXXVI/Hacker-News" rel="nofollow">https://github.com/IronsideXXVI/Hacker-News</a> 我非常希望得到反馈——特别是关于您想看到的功能。我正在考虑的一些想法包括:键盘驱动的导航(使用 j/k 在故事之间移动)、一个将文章简化为文本的阅读模式,以及对评论回复的通知支持。