【文章标题】:Show HN: Kadō – open-source habit tracker, with non-binary habit score, for iOS 【文章标题】:展示HN:Kadō——开源的iOS习惯追踪应用,采用非二元习惯评分系统
【文章正文】: A privacy-first habit tracker for iPhone and iPad. 一款以隐私为先的iPhone和iPad习惯追踪工具。
Non-binary habit score · Offline-first · Open source (MIT) · No account, no subscription, no telemetry. 非二元习惯评分·离线优先·开源(MIT协议)·无需账户/订阅/数据收集
Kadō is an iOS habit tracker with three commitments: Kadō作为iOS习惯追踪器做出三项承诺:
-
A score, not a streak. The habit score — inspired by Loop Habit Tracker on Android — is a non-binary exponential moving average of your completions. One missed day doesn’t wipe your progress. You see a trend, not a fragile chain.
-
采用评分制而非连续打卡。受Android平台Loop Habit Tracker启发,习惯评分采用非二元的指数移动平均值计算。遗漏一天不会清零进度,您看到的是趋势曲线而非脆弱的打卡链条。
-
Your data stays yours. No account, no analytics, no third-party SDKs. Storage is local (SwiftData), sync is optional through your own iCloud (CloudKit private database). Export is lossless, in JSON or CSV, whenever you want it. See PRIVACY.md .
-
数据完全自主。无需账户/分析工具/第三方SDK。本地存储(SwiftData),可选iCloud同步(CloudKit私有数据库)。支持随时无损导出JSON或CSV格式。详见PRIVACY.md文件。
-
Native to Apple. SwiftUI, @Observable , SwiftData, CloudKit, WidgetKit, App Intents — no cross-platform layer, no third-party dependencies.
-
纯苹果原生技术栈。采用SwiftUI/@Observable/SwiftData/CloudKit/WidgetKit/App Intents,无跨平台层/第三方依赖。
Why another habit tracker? The market gap is spelled out in docs/PRODUCT.md: the reference open-source tracker (Loop) is Android-only; the reference iOS tracker (Streaks) is closed source and uses a binary streak; the most visible modern iOS open source attempt (Teymia) is freemium. Kadō takes Loop’s algorithm to native iOS — MIT, free, no account, no subscription. 为何再造习惯追踪器?如docs/PRODUCT.md所述市场空白:标杆开源应用Loop仅限Android;iOS标杆应用Streaks闭源且采用二元打卡制;知名现代iOS开源尝试Teymia采用免费增值模式。Kadō将Loop算法移植至原生iOS平台——MIT协议/完全免费/无需账户/无订阅。
Features: 核心功能:
-
Today view — habits due today, tap to complete, long-press for partial / note / timer, drag to reorder (the order syncs via iCloud).
-
今日视图:展示当日待办习惯,点击完成/长按记录部分完成/备注/计时/拖拽排序(顺序通过iCloud同步)
-
Habit detail — monthly calendar with month-by-month navigation, current streak, best streak, habit score with an info popover explaining the math. Edit any past day straight from the calendar, including days before the habit existed.
-
习惯详情:支持逐月浏览的月历视图,显示当前连续记录/最佳记录/习惯评分(含数学公式说明弹窗),可直接编辑日历中任意历史日期(包括该习惯创建前的日期)
-
Per-day notes — a short note on any day’s completion, carried through export and import.
-
每日备注:为任何完成日添加简短注释,支持导入导出保留
-
Overview — habits × days matrix with score-shaded cells, the Loop / Way of Life pattern with Kadō’s score DNA. Completions logged off-schedule show up too, instead of hiding as rest days.
-
总览视图:习惯×日期矩阵带评分色阶,融合Loop/Way of Life设计理念与Kadō评分基因。非常规时段完成的记录也会显示(而非隐藏为休息日)
-
Flexible schedules — daily, N days per week, specific weekdays, every N days (the cycle re-anchors on each completion, so finishing early never costs you a day). Binary, counter, or timer habit types.
-
灵活排期:支持每日/每周N天/特定工作日/每N天(周期在每次完成时重置锚点,提前完成不会损失天数)。支持二元/计数/计时型习惯
-
Day starts at — push the day rollover as late as 6 AM, so late-night logging still lands on the day you mean. Changing it never re-buckets history.
-
自定义日切时间:最迟可设为凌晨6点,深夜记录仍归属预期日期。修改设置不会重排历史数据
-
Widgets — Home Screen (small / medium / large) and Lock Screen (rectangular / circular / inline). Quick-complete via AppIntent .
-
小组件:主屏幕(小/中/大尺寸)+锁屏(矩形/圆形/内联样式),支持通过AppIntent快速完成
-
Siri and Shortcuts — complete a habit, log a value, or ask for a score and streak, hands-free. Also available as Home Screen actions and Shortcuts automations.
-
Siri与快捷指令:免提完成习惯/记录数值/查询评分与连续记录,支持主屏幕动作与快捷指令自动化
-
Reminders — per-habit local notifications with recurring schedules and check / skip quick actions.
-
提醒功能:每个习惯可设置循环本地通知,含检查/跳过快速操作
-
iCloud sync — optional, opt-in, goes only through the user’s private CloudKit database. Settings shows live sync state, including when sync isn’t working.
-
iCloud同步:可选功能,仅通过用户私有CloudKit数据库同步。设置页实时显示同步状态(含异常情况)
-
JSON and CSV export / import — lossless backup of your data, in both formats, round-trip tested. Open a CSV backup in Numbers or Excel, edit it, bring it back in.
-
JSON与CSV导入导出:双格式无损备份数据(经往返测试),可在Numbers/Excel编辑CSV备份后重新导入
-
Tip Jar — entirely optional, unlocks nothing. The whole app stays free, with no ads, no subscription, and no tracking.
-
小费罐:完全可选,不解锁任何功能。应用永久免费,无广告/订阅/追踪
-
Accessibility — Dynamic Type up to XXXL, VoiceOver labels on every surface, full Dark Mode.
-
无障碍支持:XXXL级动态字体/全界面VoiceOver标签/完整深色模式
-
Localization — English and native French (not machine-translated).
-
本地化:英语与原生法语(非机翻)
Release History: 版本历程:
| Version | Highlights |
|---|---|
| 1.0 | 首发版本——评分系统,今日/总览/详情视图,小组件,iCloud同步,提醒,JSON导出,英法双语 |
| 1.1 | 新增Siri与快捷指令;日历直接编辑历史日期 |
| 1.2 | 每日备注;回溯补录;月份导航 |
| 1.3 | 拖拽排序习惯;温和的一次性评分提示 |
| 1.4 | 提升iCloud同步可靠性——修复iPad崩溃问题,真实同步状态显示 |
| 1.5 | 小费罐(StoreKit 2实现),完全可选不解锁功能 |
| 1.6 | 自定义日切时间;修复每周N天评分问题;总览视图显示非计划完成记录 |
| 1.7 | CSV往返导入导出;“每N天”模式在完成时重置周期锚点 |
Not planned. A native Apple Watch app and HealthKit auto-completion were scoped for v0.3 and have been descoped — no user has asked for either since launch. Both stay listed in docs/ROADMAP.md under “Descoped”, and would be reconsidered on real demand. 未规划项:原生Apple Watch应用与HealthKit自动完成原定v0.3版本现已取消——发布后无用户需求。两者仍列于docs/ROADMAP.md”Descoped”章节,将根据实际需求重新评估。
Next — Live Activities and Dynamic Island for timer habits, then the remaining v1.x polish (themes, biometrics, categories, backup files). Full roadmap in docs/ROADMAP.md. 下一步——为计时习惯添加Live Activities与Dynamic Island支持,继而完善v1.x剩余功能(主题/生物识别/分类/备份文件)。完整路线图见docs/ROADMAP.md。
Tech Stack: 技术栈:
-
SwiftUI with @Observable (iOS 17+) for state — no Combine.
-
状态管理采用SwiftUI+@Observable(iOS17+),未使用Combine
-
SwiftData for local persistence, with VersionedSchema +SchemaMigrationPlan wired from day one.
-
本地存储使用SwiftData,自初始版本即配置VersionedSchema+SchemaMigrationPlan
-
CloudKit via SwiftData (cloudKitDatabase: .private(…) ) for multi-device sync.
-
通过SwiftData的CloudKit私有数据库实现多设备同步
-
WidgetKit + an App Group JSON snapshot for extension surfaces (the widget process never opens SwiftData — see CLAUDE.md for why).
-
小组件采用WidgetKit+App Group的JSON快照机制(组件进程绝不直接访问SwiftData,详见CLAUDE.md说明)
-
App Intents for widget quick-complete, Siri, and Shortcuts.
-
小组件快速完成/Siri/快捷指令通过App Intents实现
-
StoreKit 2 for the Tip Jar.
-
小费罐采用StoreKit 2
-
Swift Testing for unit tests, XCTest for UI tests and for the App Store screenshot run.
-
单元测试用Swift Testing,UI测试与应用商店截图流程用XCTest