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

v1.6.1

Choose a tag to compare

@NihilDigit NihilDigit released this 02 May 19:51
· 70 commits to main since this release
v1.6.1
57dc59b

跨端只读 awareness 与全自动同步上线。

主要变化

跨端只读 awareness

一台设备正在运行番茄时,其他已登录设备打开应用会自动进入只读镜像,禁用 Start 按钮。实现为一份 30 分钟 TTL 的 KV 标记,由番茄启动、手动跳过缓冲、番茄结束三处客户端写入,并由 /api/push/fire 在每次推送链路推进时刷新。其他设备每 30 秒轮询此标记,读到非自身会话即渲染只读视图。

未引入心跳协议:推送链路本身已是天然心跳源,30 分钟 TTL 在最坏情况下也只让一份失效标记滞留半小时。

全自动同步(LWW snapshot)

登录后 Token 余额或集合长度变化将触发 2 秒防抖的 saveToCloud;应用打开时执行一次 loadFromCloud,按 savedAt 时间戳判断云端是否较新,是则全量覆盖本地。Settings 页折叠为一行状态加两个 escape hatch(立即推送 / 立即拉取),不再保留自动同步开关。

未采用事件溯源:单用户场景下"双端同时修改同一字段"的真实概率极低,事件去重与排序的工程复杂度不与之匹配。LWW 快照 + lastSavedAt 水位足以处理常见路径。

持久化 schema v3 → v4

新增 lastSavedAt 水位用于 LWW 仲裁。旧数据自动迁移,无需手动操作。

修复

  • prerender /_not-found 阶段访问 useStore.persist 时返回 undefined 导致 TypeError,使 release-deploy workflow 首次得以走完 tag → Vercel prod 部署的全链路。

工程

  • 测试套从 mock-heavy 迁移到 smoke 范式:删除 lib/kv.test.ts,app/actions/sync.test.ts 改连真 Upstash,新增 lib/snapshot-schema.test.ts 与 app/actions/active-session.test.ts。
  • UI 版本号经 release workflow 注入 NEXT_PUBLIC_APP_VERSION,告别手动维护 lib/version.ts。
  • README 重写为中文技术写作风格,加入"为何不用现有番茄钟"、"代币经济学"等设计取舍说明。