本地优先的个人时间追踪系统:菜单栏一键打点 + 浏览器控制台查看、标记、统计。
一天结束,回想起来,却说不清时间都去哪儿了;或者在专心做一件事时,被临时冒出来的事情带走,回过头来主线工作已经被耽搁。这往往是专注力在悄悄流失。
TimingButton 就是为这个问题而生的。 它只有两个核心动作:
- 一键标记时间:按
⌃⇧Space,开始一下、结束一下。全天的时间自动落在时间线上,晚上打开控制台,今天做了什么一目了然。 - 精简的 To-Do List:总有需要等待的时刻——Agent 在跑、电话在等、反馈没回。与其刷社交网络打发时间,不如在待办清单上点一下"+",把等待间隙的小任务记入当前时间段,碎片时间也用在了刀刃上。
时间不会停,但不必白白流走。它对我非常有效,说不定对您也一样。
- macOS
- Xcode Command Line Tools(
xcode-select --install) - Node.js ≥ 22.5(
brew install node)
git clone https://github.com/sparklog/timing-button.git
cd timing-button/app
./install.sh脚本自动完成:编译 Swift → 安装 web 依赖并构建前端 → 打包进应用 → 安装到 ~/Applications → 启动。
- 启动:双击
~/Applications/TimingButton.app - 打点:按
⌃⇧Space开始/结束,菜单栏显示 ○ 空闲 / ⏱ 计时中 - 控制台:点菜单栏图标 → "打开控制台",或访问
http://localhost:8787- 垂直时间线查看当天时间块,点击块可编辑(分类/内容/备注/已确认)
- 分类实时汇总(进行中的块动态计入)、一键导出 CSV
- 更新:重新运行
./install.sh - 数据:保存在
~/Documents/melonlab/10-TimeLog/(time.db,可导出time_log.csv)
- 源码结构
app/main.swift:macOS 菜单栏应用(打点、直写 SQLite、托管本地服务)web/server.js:Node 服务端(零运行时依赖,内置 node:sqlite)web/src/:SolidJS + Vite 前端app/install.sh:构建安装脚本
- 前端开发模式:
cd web && npm run dev(Vite :5173,/api代理到 :8787) - 数据结构(
blocks表):date, start, end, duration_minutes, category, activity, note, source, confirmed - 数据目录:默认
~/Documents/melonlab/10-TimeLog/,可用环境变量TIMELOG_DIR覆盖(应用与服务端通用)