Skip to content
This repository was archived by the owner on May 22, 2026. It is now read-only.

v1.7.1

Choose a tag to compare

@NihilDigit NihilDigit released this 03 May 05:41
· 66 commits to main since this release
v1.7.1
5382fa5

引导从"按 user 幂等 + auth-gated"改为按浏览器幂等,文案剔除 AI 模板;连同 v1.7 未发出的版本说明一起补上。

主要变化

H 计分改为纯正向

结算时 H gain 现在以 0 为下限:熬夜仍能抹平当日 H 奖励,但不再从已有余额上再扣。第三步显示的扣减量是被 cap 后的有效值,整页配色保持鼠尾草绿,不出现负值红字。

未保留可负扣减的取舍是:单用户 ADHD 场景下,"罚"的代价(自责、决策回避、第二天的逃避结算)显著高于一次罚分换来的边际行为约束;把丢分换成"今日机会归零"的正向语义更贴系统的整体设计意图。

6 项 H 行为重写

替换为:进行健身 / 完成 50 分钟健身 / 睡足 8 小时 / 0 点前入睡 / 未加餐 / 饮食健康。条目按使用者实际复盘节奏排列,去掉了几条与考研生活接不上的旧项。

第二步替换为「昨日回顾」

原"今日词汇"步骤被取消。此栏在系统层面是冗余的:数学 tag 的 F 增量已在 endSession 中实时记入,结算页再次呈现并不会改变账面,反而把"早晨打开应用"的语义从回看变成了重复操作。

新的回顾步骤把昨日的番茄数做 count-up 动效呈现,并按 5 / 7 / 9 / 11 的数学里程碑阶梯依次点亮(已达成的挡位高亮)。词汇 toggle 仍保留在下方作为补录入口,但默认不再是主动作。

附带新增 yesterdayKey() helper,与 todayKey() 共用 UTC+8 / 4am 切日的语义。

首次使用引导(WelcomeGuideSheet)

新设备打开应用时弹出一份双栏说明:左栏列系统会管的高刺激消遣(外卖 / 熬夜 / 刷手机 / 打游戏 / 看剧),右栏列系统刻意不管的低刺激日常(读书 / 运动 / 线下社交 / 正常聚餐)。Settings 页提供「入门指南」入口可随时重看。

边界讲清楚的目的,是让使用者第一次想"也把读书记一下"时能按设计取舍来理解,而不是当作系统的不完整。引导内容与 README 新增的「系统边界」章节互为镜像。

幂等以 localStorage flag (tokmato:guide-seen) 实现,按浏览器一次,与 auth 解耦。v1.7 首发以 guideSeenUserIds 按 user 幂等并 gate 在 status === "authenticated",导致未登录访客与无痕窗口都看不到引导;本版改回按浏览器,"首次访问"的定义更直观。

README 与 CLAUDE.md 拆分,新增「系统边界」章节

README 此前是 CLAUDE.md 的 symlink,本版拆为独立文件并面向人;CLAUDE.md 保留工程文档定位。README 在「为何不用现有番茄钟」与「代币经济学」之间补入「系统边界」一节,明确正向行为不进系统的两层理由:奖励化会把内驱滑成外驱;记账成本只在收益足够大的高刺激消遣场景才划得来。

持久化 schema v4 → v6

  • v4 → v5 引入 guideSeenUserIds(v1.7)。
  • v5 → v6 退役该字段,迁移时为已有 welcomeGrantedUserIds 或 guideSeenUserIds 的设备写入 localStorage flag,避免 v1.7 的老用户被回溯打扰。

云端 schema 把 guideSeenUserIds 标为 optional 以兼容 v1.7 客户端遗留的快照,新写入不再 emit 该字段,云端 key 会随时间自然萎缩。

修复

  • WelcomeGuideSheet 触发依赖登录(components/providers.tsx 在 v1.7 中 gate 在 status === "authenticated"),影响未登录访客与无痕窗口。已改为按 tokmato:guide-seen localStorage flag 触发,与 auth 解耦;grantWelcomeBonus 仍保留 auth gate 于独立 effect。
  • WelcomeGuideSheet 文案中三处属于 AI 模板("中心点 · 解释"):description"先看这一页 · 之后从设置可再次打开"、intro"把娱乐换算成今日产出 · 用来约束容易上头的消遣,而不是给所有行为打分"、footer"低刺激的正常生活不需要代币管制 · 让它们留在系统外,避免把好习惯变成「任务」"。已全部删除。两栏卡(系统管 / 系统不管)独立成立,rationalization 留在 README。

工程

  • lib/store.test.ts 新增 yesterdayKey 单元覆盖;markGuideSeen 测试随字段退役一并删除。
  • lib/snapshot-schema.test.ts 新增 v1.7 兼容用例:含 guideSeenUserIds 的快照仍能通过 .strict() 校验。