Releases: ZionDoki/InkTimer
Release list
InkTimer 0.3.3
InkTimer 0.3.3 是一次备份体验更新:原生端的默认封存与默认收录现在真正指向同一个固定文件,Web 则保持符合浏览器能力的直接下载与文件选择流程。
主要变化
原生端:默认封存与收录对称
点击「封存备份」或「收录备份」后,会以 240 ms 的平滑高度与透明度动画展开位置选项,并且一次只展开一处:
- 封存备份:默认位置 / 另选位置
- 收录备份:默认位置 / 另选文件
默认封存与默认收录共用固定文件名:
inktimer-backup.json
重复默认封存会覆盖旧文件,不再产生带日期或 -2、-3 后缀的副本,因此默认位置始终只保留最新一份。
更安全的默认写入
默认封存先写入临时文件,刷新到磁盘后再原子替换正式备份,降低写入中断损坏已有备份的风险。界面会显示默认位置是否已有备份,以及最后封存时间。
另选位置仍然可用;对于只返回目标路径、没有实际写入内容的桌面文件选择器,应用会自动补写文件。
Web:直接操作,不伪装默认位置
浏览器没有应用可回读的固定目录,因此 Web 不显示「默认位置」或二级位置菜单:
- 点击「封存备份」:直接下载
inktimer-backup.json - 点击「收录备份」:直接打开备份文件选择器
升级兼容
- 版本:
0.3.3+4 - bundle ID、Android application ID、存储键及备份格式标识符保持不变
- 可直接覆盖安装 0.3.2,现有数据与旧备份不受影响
- 备份数据格式仍为 v2,本次只调整文件位置、命名与交互流程
原生端的「默认位置」属于当前应用可读写的文档目录。在部分移动平台和沙箱平台中,该目录可能不直接显示在系统文件管理器中;需要保存在明确可见的位置时,请选择「另选位置」。
下载
| 平台 | 文件 | 大小 |
|---|---|---|
| Android | inktimer-0.3.3-android.apk |
51 MB |
| macOS | inktimer-0.3.3-macos.zip |
18 MB |
| Web | inktimer-0.3.3-web.zip |
14 MB |
校验和见 SHA256SUMS。
Android
最低 Android 7.0(API 24)。APK 与 0.3.2 使用相同证书签名,可直接覆盖升级;从 GitHub 安装时需允许相应来源安装应用。
macOS
解压后将 uptimer.app 移入「应用程序」。本包为 ad-hoc 签名,首次运行可能需要右键点击 →「打开」,或在「系统设置 → 隐私与安全性」中允许。
Web
解压并部署到任意静态服务器。本地预览:
unzip inktimer-0.3.3-web.zip
cd web
python3 -m http.server 8080iOS
本次未提供 iOS 安装包。当前 Xcode 可列出 iOS 26.5 SDK,但设备平台组件仍被判定为未安装,flutter build ios --release --no-codesign 因此无法选择通用 iOS 目标。
验证
dart format:通过flutter analyze:零问题flutter test:212 项全部通过- Android Release APK:构建成功,版本
0.3.3 (4),签名校验通过 - macOS Release:构建成功,归档解包后签名与版本校验通过
- Web Release:构建成功,Wasm dry run 通过
- 两个 ZIP:压缩数据完整性检查通过
- 三份发布包:SHA-256 校验通过
InkTimer 0.3.2
水墨风专注计时器,番茄钟 / 间歇训练 / 累计三种模式,附带一套安静的成长系统。
本次是激励系统的一次完整重构:经验值不再由事后操作决定,而是由每次专注当时的客观质量冻结下来。
主要变化
专注质量监控
自动记录手动暂停、取消长按、应用内跳转、后台离开,据此给出 40–100 的质量分。
完成后以中性方式展示,例如「定 92 · 本次 +24」,没有红色或惩罚性视觉。
经验值冻结
每次专注结束立即冻结 XP。之后回填感受、关联事项、修改进度、归档或删除事项,都不再改动历史经验。
生命周期精确追踪
inactive 状态先进入 2 秒观察期,快速返回(如下拉通知栏又收起)不计为离开。
确认离开后,返回时按模板阶段精确计算这段时间里有多少秒本应处于专注状态,休息阶段不计入。
新等级曲线
ceil(60 × (level − 1)^1.65)
| 等级 | 所需经验 |
|---|---|
| Lv2 | 60 |
| Lv10 | 2,253 |
| Lv50 | 36,896 |
| Lv99 | 115,791 |
升级间距收窄,质量差异更可感知。
连续天数门槛
单日需至少 150 秒专注才计入,避免一秒打卡。内置 Tabata(160 秒专注)符合门槛。
其他改进
- 事项关联与进度记录合并为单一「专注于」流程
- 完成态球体与「成」印一同上移,下方详情区可滚动,横屏与极矮视口不再溢出
- 悟解锁记录时间戳
- 备份升级至 v2 并包含成长数据,仍可导入 v1 备份
- 计时界面补全语义化控件,辅助技术可触发开始 / 暂停 / 继续 / 重置 / 停止
修复
- 可变字体字重未生效:Cormorant 与 Noto Serif SC 的 wght 轴此前停在默认值(300 / 200),
中文正文笔画发虚。现已用FontVariation驱动真实字重 - 持久化队列单次写失败不再永久阻塞后续保存
- 自动完成时先确保会话落盘,再清除恢复检查点
- 本地已迁移的冻结经验不会被无奖励的旧备份覆盖
从 0.3.0 升级
数据自动迁移,无需手动操作:
- 历史记录分配冻结 milli-XP,标记为未测量质量(
scoringVersion 0) - 总经验映射到新等级曲线,不会降级
- 已解锁的悟获得稳定时间戳
英文项目名由 UpTimer 改为 InkTimer,中文名「成时」不变。
bundle ID、存储键与备份格式标识符保持不变,已安装版本可直接覆盖升级,旧备份仍可导入。
升级后导出的 v2 备份无法被 0.3.0 导入,建议升级前先备份。
下载
| 平台 | 文件 | 大小 |
|---|---|---|
| Android | inktimer-0.3.2-android.apk |
51 MB |
| macOS | inktimer-0.3.2-macos.zip |
54 MB |
| Web | inktimer-0.3.2-web.zip |
14 MB |
校验和见 SHA256SUMS。
Android 最低 5.0 (API 21)。需允许未知来源安装。
macOS 最低 10.14,未签名。首次运行需右键点击 → 打开,或在「系统设置 → 隐私与安全性」中允许。
Web 解压后部署到任意静态服务器。本地预览:
unzip inktimer-0.3.2-web.zip && cd web
python3 -m http.server 8080iOS 本次未提供,构建环境缺少 iOS SDK 26.5。
已知限制
Flutter 的生命周期信号无法可靠区分锁屏、切换应用、通知中心、系统弹窗、来电等场景,
不同平台的映射也不一致。因此后台离开的判定在各平台表现可能有差异,Web 端受浏览器
Page Visibility API 限制尤为明显,仅供参考。
Android 与 iOS 实机的锁屏、应用切换、短通话、计时结束后返回等场景仍建议自行验证。