{"_id":"@cacinie/cace-timer","_rev":"5-f8c6db4f968d9e7bf2a116846dcc2124","name":"@cacinie/cace-timer","dist-tags":{"latest":"1.4.2"},"versions":{"1.0.0":{"name":"@cacinie/cace-timer","version":"1.0.0","keywords":["time","tracker","cli","timer","productivity","anime","mascot"],"author":{"name":"CacinieP","email":"cacinie@gmail.com"},"license":"MIT","_id":"@cacinie/cace-timer@1.0.0","maintainers":[{"name":"cacinie","email":"cacinie@gmail.com"}],"homepage":"https://github.com/CacinieP/cace-timer#readme","bugs":{"url":"https://github.com/CacinieP/cace-timer/issues"},"bin":{"tk":"dist/index.js","cace-timer":"dist/index.js"},"dist":{"shasum":"9f434aa016a08e5419ceab45116b3f4f0ad26552","tarball":"https://registry.npmjs.org/@cacinie/cace-timer/-/cace-timer-1.0.0.tgz","fileCount":4,"integrity":"sha512-/3UpzXQ1jvqipm5nmnbkNdIgKPO78jn3sSMDr+imAlQWI8CdRWPBjIfmowTvx2aSi2bnE6sNKbmncSj9gtnrOw==","signatures":[{"sig":"MEUCIF18KoqkhfGhd8Zn/ox8WyGir44B7X8Kfq+oXwopyiUoAiEA/vcFMZkFIJtwsXKX9tLFTmFDCqqXckKR3u4pt5O4qkk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24952},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"3d1cd2b55acb46017c15acb71352fb389ee0f456","scripts":{"dev":"ts-node src/index.ts","build":"tsc","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"cacinie","email":"cacinie@gmail.com"},"repository":{"url":"git+https://github.com/CacinieP/cace-timer.git","type":"git"},"_npmVersion":"10.9.3","description":"A minimal time tracking CLI with cute anime girl mascot","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/cace-timer_1.0.0_1772435794912_0.31479664123891293","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@cacinie/cace-timer","version":"1.1.1","keywords":["time","tracker","cli","timer","productivity","anime","mascot"],"author":{"name":"CacinieP","email":"cacinie@gmail.com"},"license":"MIT","_id":"@cacinie/cace-timer@1.1.1","maintainers":[{"name":"cacinie","email":"cacinie@gmail.com"}],"homepage":"https://github.com/CacinieP/cace-timer#readme","bugs":{"url":"https://github.com/CacinieP/cace-timer/issues"},"bin":{"tk":"dist/index.js","cace-timer":"dist/index.js"},"dist":{"shasum":"24633cdb29c534837ac9113d06bb75c745cb1b5a","tarball":"https://registry.npmjs.org/@cacinie/cace-timer/-/cace-timer-1.1.1.tgz","fileCount":5,"integrity":"sha512-Vf9Pf10/44TKq6CcyXS891rY+j0QZMy2rZBUOxkkTnvaXx7HNuzVz8RixCc32a0PVrd9WzqVaKe+LFxnFumG+A==","signatures":[{"sig":"MEQCIExAv3m0TwutehTxoTkKG8bvAU4SMy/5/stqI2NgKOkgAiA2t9pH0BL6n9zAMBO47PscRzFMby1wShQK9TAacBJ7eg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24377},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"028e50137f3ed6472354f2dc681befc37c85f848","scripts":{"dev":"ts-node src/index.ts","build":"tsc","start":"node dist/index.js","prepare":"npm run build","prepublishOnly":"npm run build"},"_npmUser":{"name":"cacinie","email":"cacinie@gmail.com"},"repository":{"url":"git+https://github.com/CacinieP/cace-timer.git","type":"git"},"_npmVersion":"11.15.0","description":"A minimal time tracking CLI with cute anime girl mascot","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/cace-timer_1.1.1_1779785057912_0.7945223474692447","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@cacinie/cace-timer","version":"1.3.1","keywords":["time","tracker","cli","timer","productivity","anime","mascot"],"author":{"name":"CacinieP","email":"cacinie@gmail.com"},"license":"MIT","_id":"@cacinie/cace-timer@1.3.1","maintainers":[{"name":"cacinie","email":"cacinie@gmail.com"}],"homepage":"https://github.com/CacinieP/cace-timer#readme","bugs":{"url":"https://github.com/CacinieP/cace-timer/issues"},"bin":{"tk":"dist/index.js","cace-timer":"dist/index.js"},"dist":{"shasum":"7a87db31869bdcb94e7f80943c7657332a9a24cf","tarball":"https://registry.npmjs.org/@cacinie/cace-timer/-/cace-timer-1.3.1.tgz","fileCount":53,"integrity":"sha512-rBh3yCJl9fna3s1qw0DgRo2rwl7rAX0Fs2uHWh++GC0c/6Sya7twlkh1DKl53zRxPFm41hdIH7dvzt76C+DVyQ==","signatures":[{"sig":"MEQCIHIYciXASOP1TdK9cL/PirTksEMs9wZyeLaXibrsfgINAiAbcMNd5i43gQu3ZnuZ4tVEVkyu9iWYY+WGPYUDnBhV6w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":119137},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=20"},"gitHead":"d3ebd2a18ea979d75fdb0f5aa8d136a476bb7124","scripts":{"dev":"ts-node src/index.ts","lint":"eslint src/","test":"vitest run","build":"tsc","start":"node dist/index.js","format":"prettier --write src/","prepare":"npm run build","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"cacinie","email":"cacinie@gmail.com"},"repository":{"url":"git+https://github.com/CacinieP/cace-timer.git","type":"git"},"_npmVersion":"10.8.2","description":"A minimal time tracking CLI with cute anime girl mascot","directories":{},"_nodeVersion":"20.20.2","dependencies":{"blessed":"^0.1.81"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.4.1","vitest":"^4.1.7","ts-node":"^10.9.2","prettier":"^3.8.3","@eslint/js":"^9.0.0","typescript":"^5.3.0","@types/node":"^20.10.0","@types/blessed":"^0.1.27","typescript-eslint":"^8.60.0","eslint-config-prettier":"^10.1.8","@typescript-eslint/parser":"^8.60.0","@typescript-eslint/eslint-plugin":"^8.60.0"},"_npmOperationalInternal":{"tmp":"tmp/cace-timer_1.3.1_1786819203996_0.26158204675856167","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"@cacinie/cace-timer","version":"1.3.2","keywords":["time","tracker","cli","timer","productivity","anime","mascot"],"author":{"name":"CacinieP","email":"cacinie@gmail.com"},"license":"MIT","_id":"@cacinie/cace-timer@1.3.2","maintainers":[{"name":"cacinie","email":"cacinie@gmail.com"}],"homepage":"https://github.com/CacinieP/cace-timer#readme","bugs":{"url":"https://github.com/CacinieP/cace-timer/issues"},"bin":{"tk":"dist/index.js","cace-timer":"dist/index.js"},"dist":{"shasum":"b807b273c5e04a8feb6cb03dc799e31520b1203b","tarball":"https://registry.npmjs.org/@cacinie/cace-timer/-/cace-timer-1.3.2.tgz","fileCount":53,"integrity":"sha512-IMGbx8YaZS5usEIkKZqfXLQzvyX6smn5K7kpg6dUggVMiM05JDGN6uhX1OOt0KRbWdNnPoG2TzjpprpqxAAvhQ==","signatures":[{"sig":"MEUCIQCGZQPVnOF+xGsTT1tzMXMcjYSWBC8Jmqqqz7HKYCMpgQIgcP5HvNKj2qsZV5oilLoXu2Tam10ZMrHJuneman5Ud4s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":124301},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=20"},"gitHead":"c8404fbd2336147e50fa57d871475cd0cf5d57b1","scripts":{"dev":"ts-node src/index.ts","lint":"eslint src/","test":"vitest run","build":"tsc","start":"node dist/index.js","format":"prettier --write src/","prepare":"npm run build","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"cacinie","email":"cacinie@gmail.com"},"repository":{"url":"git+https://github.com/CacinieP/cace-timer.git","type":"git"},"_npmVersion":"10.8.2","description":"A minimal time tracking CLI with cute anime girl mascot","directories":{},"_nodeVersion":"20.20.2","dependencies":{"blessed":"^0.1.81"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.4.1","vitest":"^4.1.7","ts-node":"^10.9.2","prettier":"^3.8.3","@eslint/js":"^9.0.0","typescript":"^5.3.0","@types/node":"^20.10.0","@types/blessed":"^0.1.27","typescript-eslint":"^8.60.0","eslint-config-prettier":"^10.1.8","@typescript-eslint/parser":"^8.60.0","@typescript-eslint/eslint-plugin":"^8.60.0"},"_npmOperationalInternal":{"tmp":"tmp/cace-timer_1.3.2_1786822427877_0.4619592010732685","host":"s3://npm-registry-packages-npm-production"}},"1.4.2":{"name":"@cacinie/cace-timer","version":"1.4.2","description":"Local-first time tracking CLI with a responsive MINT character dashboard","main":"dist/index.js","bin":{"tk":"dist/index.js","cace-timer":"dist/index.js"},"scripts":{"build":"tsc","dev":"ts-node src/index.ts","start":"node dist/index.js","test":"vitest run","test:watch":"vitest","lint":"eslint src/","format":"prettier --write src/","prepublishOnly":"npm run build","prepare":"npm run build","test:cli":"npm run build && node --test scripts/cli-smoke.cjs","test:pty":"npm run build && python3 scripts/pty-smoke.py"},"keywords":["time","tracker","cli","timer","productivity","anime","mascot"],"author":{"name":"CacinieP","email":"cacinie@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/CacinieP/cace-timer.git"},"bugs":{"url":"https://github.com/CacinieP/cace-timer/issues"},"homepage":"https://github.com/CacinieP/cace-timer#readme","engines":{"node":">=20"},"publishConfig":{"access":"public"},"devDependencies":{"@eslint/js":"^9.0.0","@types/blessed":"^0.1.27","@types/node":"^20.10.0","@typescript-eslint/eslint-plugin":"^8.60.0","@typescript-eslint/parser":"^8.60.0","eslint":"^10.4.1","eslint-config-prettier":"^10.1.8","prettier":"^3.8.3","ts-node":"^10.9.2","typescript":"^5.3.0","typescript-eslint":"^8.60.0","vitest":"^4.1.7"},"types":"dist/index.d.ts","dependencies":{"blessed":"^0.1.81"},"_id":"@cacinie/cace-timer@1.4.2","gitHead":"3bc06d90b4b9190efb44c351f14a1e08086adb8c","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-Kdmg4P2zoX2s8jVuccFONve3sEQsOC7DTuVcl+WK7L8Du1dEG25rTdrtdzRWrVutsnmkqes5GPSc65KXhitozw==","shasum":"dd1190c17f5c5ca81a7005add7a4456a305a7427","tarball":"https://registry.npmjs.org/@cacinie/cace-timer/-/cace-timer-1.4.2.tgz","fileCount":69,"unpackedSize":143015,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDMAl8IO6/4c3j5E9FKizPjtaZZh22jOHGxH2ia2hoq9AIgBF3d6GCpgcpH/p0fnC7Ou89wjiitxDD+fgs05srG30s="}]},"_npmUser":{"name":"cacinie","email":"cacinie@gmail.com"},"directories":{},"maintainers":[{"name":"cacinie","email":"cacinie@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cace-timer_1.4.2_1788937893430_0.8643997941566177"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-02T07:16:34.795Z","modified":"2026-09-09T07:11:33.754Z","1.0.0":"2026-03-02T07:16:35.058Z","1.1.1":"2026-05-26T08:44:18.062Z","1.3.1":"2026-08-15T18:40:04.169Z","1.3.2":"2026-08-15T19:33:48.024Z","1.4.2":"2026-09-09T07:11:33.565Z"},"bugs":{"url":"https://github.com/CacinieP/cace-timer/issues"},"author":{"name":"CacinieP","email":"cacinie@gmail.com"},"license":"MIT","homepage":"https://github.com/CacinieP/cace-timer#readme","keywords":["time","tracker","cli","timer","productivity","anime","mascot"],"repository":{"type":"git","url":"git+https://github.com/CacinieP/cace-timer.git"},"description":"Local-first time tracking CLI with a responsive MINT character dashboard","maintainers":[{"name":"cacinie","email":"cacinie@gmail.com"}],"readme":"# cace-timer\n\n[![npm version](https://img.shields.io/npm/v/@cacinie/cace-timer.svg)](https://www.npmjs.com/package/@cacinie/cace-timer)\n[![npm downloads](https://img.shields.io/npm/dm/@cacinie/cace-timer.svg)](https://www.npmjs.com/package/@cacinie/cace-timer)\n[![Node.js](https://img.shields.io/badge/node-%3E%3D20-339933.svg)](package.json)\n[![license](https://img.shields.io/npm/l/@cacinie/cace-timer.svg)](https://github.com/CacinieP/cace-timer/blob/main/LICENSE)\n\nA gamified time-tracking CLI with an interactive TUI dashboard, points & levels, and a cute mascot.\n\n```\nnpm install -g @cacinie/cace-timer\n```\n\n```\n           _,\n          //\n       .-'/`--.\n      / //\\     \\\n     ///  \\ h*   \\\n    (|:(O')-(O'):|)\n     |:(//   //):|\n     \\: \\  v  / :/\n      '- `._.' -'\n        / >o< \\\n        '-----'\n       CACE TIMER\n```\n\n## Features\n\n- **Smart Dashboard** — run `tk` and get a context-aware interactive menu\n- **Points & Levels** — earn points for focus, level up from Lv.1 to Lv.99\n- **Daily Streaks** — consecutive days of productivity tracked with 🔥\n- **Pomodoro Timer** — full-screen TUI countdown with mascot and progress bar\n- **Quick Focus** — `tk focus 5/15/30/60` for instant timer\n- **Reflection** — record thoughts when completing tasks\n- **Statistics** — daily/weekly/monthly reports with ASCII charts\n- **Bilingual** — `--lang zh|en`, auto-detects system locale\n- **Export** — CSV or Markdown output\n- **Cloud Sync** — point data file at Dropbox/iCloud/OneDrive\n\n## Quick Start\n\n```bash\n# Open the interactive dashboard\ntk\n\n# Or use commands directly\ntk start \"写周报\" --tag work --tag daily --estimate 30\ntk mark \"完成数据分析\"\ntk status\ntk stop\n```\n\n## Smart Dashboard\n\nRunning `tk` with no arguments opens an interactive TUI dashboard:\n\n**No active task:**\n```\n  [CACE mascot — sleepy]\n  📊 Lv.2 | 20 pts | 🔥 3 day streak\n\n  [s] 🚀 Start task\n  [f] 🍅 Quick focus\n  [b] 📊 Statistics\n  [l] 📋 History\n  [?] ❓ Help\n```\n\n**Active task in progress:**\n```\n  [CACE mascot — focused]\n  📊 Lv.2 | 20 pts\n\n  🔥 In progress: 写周报 | Elapsed: 15m 30s\n\n  [m] 📍 Mark checkpoint\n  [s] ⏹  Stop task\n  [b] 📊 Statistics\n  [l] 📋 History\n  [?] ❓ Help\n```\n\n## Commands\n\n### `tk start <task> [options]`\n\nStart a new task. Supports multiple tags.\n\n| Option | Description |\n|--------|-------------|\n| `--tag <tag>` | Add tag(s). Repeatable: `--tag dev --tag api` or `--tag dev,api` |\n| `--estimate <minutes>` | Estimated duration for efficiency scoring |\n\n### `tk stop [options]`\n\nStop current task. Shows summary, efficiency score, and points earned.\n\n| Option | Description |\n|--------|-------------|\n| `--reflection <text>` | Attach a completion note |\n\nIn interactive terminals, a TUI input box appears for reflection.\n\n### `tk mark <note>`\n\nRecord a time checkpoint within the active task.\n\n### `tk status`\n\nShow current task, level, and streak.\n\n### `tk list [options]`\n\n| Option | Description |\n|--------|-------------|\n| `--today` | Today only |\n| `--tag <tag>` | Filter by tag |\n| `--limit <n>` | Limit count (default 10) |\n\n### `tk search <keyword>`\n\nSearch across task names, tags, and mark notes.\n\n### `tk summary [options]`\n\nStatistics report with ASCII charts.\n\n| Option | Description |\n|--------|-------------|\n| `--today` | Today only |\n| `--week` | This week (Monday start) |\n| `--month` | This month |\n| `--tag <tag>` | Filter by tag |\n\nShows: total sessions, total/average duration, tag distribution bars, daily hours chart (last 7 days), top 5 longest tasks.\n\n### `tk delete <id | --last>`\n\nDelete a session from history.\n\n### `tk resume <id | --last>`\n\nResume a completed task as a new session.\n\n### `tk export [options]`\n\n| Option | Description |\n|--------|-------------|\n| `--format csv\\|markdown` | Output format (default: csv) |\n| `--output <file>` | Write to file (default: stdout) |\n\n### `tk pomodoro <task> [options]`\n\nFull-screen TUI pomodoro timer with mascot, countdown, and encouragement.\n\n| Option | Description |\n|--------|-------------|\n| `--work <minutes>` | Work duration (default: 25) |\n| `--break <minutes>` | Break duration (default: 5) |\n| `--rounds <n>` | Number of rounds (default: 4) |\n| `--tag <tag>` | Add tag(s) |\n\n### `tk focus <5\\|15\\|30\\|60> [task]`\n\nQuick one-shot focus timer. Shortcut for `tk pomodoro` with 1 round.\n\n### `tk sync <path>`\n\nSet sync file path for cross-device sync.\n\n### `--lang <zh|en>`\n\nSet language. Auto-detects system locale. Persists to config.\n\n### `tk help`\n\nShow full command reference.\n\n## Gamification\n\n### Points System\n\n| Condition | Points |\n|-----------|--------|\n| Complete a task | +10 |\n| Efficiency ≥ 80% | +5 bonus |\n| Efficiency = 100% | +5 bonus |\n| Deep work (≥ 25 min) | +5 bonus |\n\n### Levels\n\nProgressive XP curve: each level requires `level × 20` more points.\n\n| Level | Total Points |\n|-------|-------------|\n| 1 | 0 |\n| 2 | 20 |\n| 3 | 60 |\n| 5 | 200 |\n| 10 | 900 |\n\n### Daily Streak\n\nConsecutive days with at least one completed task. Break a day and the streak resets.\n\n## CACE Mascot\n\nCACE uses **MINT**, a teal bob-haired girl with delicate round glasses, a slim,\nrounded jaw and 16 expressions. The dashboard and countdown blink gently;\none-shot commands print immediately. The artwork automatically steps down from\nfull to compact, tiny or text-only as the terminal shrinks.\n\n```bash\ntk mascot preview                         # live preview; n/p selects an expression\ntk mascot preview --all --no-tui           # export all 16 expressions\ntk mascot preview --size compact --ascii   # ASCII art without Unicode glyphs\ntk --no-animation                          # static mascot, live timer\ntk --no-tui                                # plain command output\ntk --color never                           # no foreground colours\ntk --theme light                           # light-terminal palette\n```\n\n`--ascii` changes mascot art; task names and translated UI text keep their original\ncharacters. Colour modes are `auto`, `always` (truecolor for plain output), `256`\nand `never`. Auto mode respects `NO_COLOR`, `TERM=dumb` and redirected output.\nThe blessed TUI maps colours to its supported terminal palette. No terminal\nbackground, shell configuration or Python runtime is required by the application.\nPreview with `--all` or an explicit `--size` is a static export. Add\n`--expression little_smile` (or another expression key) to select one portrait.\n\nCancel a countdown with q/Esc/Ctrl+C. Cancellation exits 130 and retains the\nactive record; use `tk stop` to finish it. Rendering failures exit 1 without\nadding a completed session. SIGTERM exits 143. Normal q/Esc in the dashboard or\npreview exits 0. Normal timer completion rings once in a supported TTY.\n\nFor contributors: `npm test`, `npm run test:cli`, and, on POSIX with Python 3,\n`npm run test:pty`. Tests use temporary timer files. See\n[the design and reference](docs/design/mint.md).\n\n## Data\n\nAll data stored in `~/.cace-timer.json`.\n\n```json\n{\n  \"syncPath\": \"~/Dropbox/cace-timer.json\",\n  \"lang\": \"zh\",\n  \"score\": 45,\n  \"streak\": 3,\n  \"lastActiveDate\": \"2026-05-31\",\n  \"current\": null,\n  \"history\": [\n    {\n      \"id\": \"lq3x9k2\",\n      \"task\": \"写周报\",\n      \"start\": \"2026-05-31T10:00:00.000Z\",\n      \"end\": \"2026-05-31T10:30:00.000Z\",\n      \"tags\": [\"work\", \"daily\"],\n      \"marks\": [{ \"time\": \"...\", \"note\": \"完成数据分析\" }],\n      \"estimatedMinutes\": 30,\n      \"reflection\": \"今天效率不错\",\n      \"pointsEarned\": 20\n    }\n  ]\n}\n```\n\n## Uninstall\n\n```bash\nnpm uninstall -g @cacinie/cace-timer\n```\n\n## Changelog\n\nSee [CHANGELOG.md](CHANGELOG.md) for release history.\n\n## License\n\nMIT\n\n---\n\n# cace-timer 中文说明\n\n[![npm version](https://img.shields.io/npm/v/@cacinie/cace-timer.svg)](https://www.npmjs.com/package/@cacinie/cace-timer)\n[![npm downloads](https://img.shields.io/npm/dm/@cacinie/cace-timer.svg)](https://www.npmjs.com/package/@cacinie/cace-timer)\n[![Node.js](https://img.shields.io/badge/node-%3E%3D20-339933.svg)](package.json)\n[![license](https://img.shields.io/npm/l/@cacinie/cace-timer.svg)](https://github.com/CacinieP/cace-timer/blob/main/LICENSE)\n\n游戏化时间追踪 CLI，带交互式 TUI 仪表盘、积分等级系统和可爱吉祥物。\n\n```\nnpm install -g @cacinie/cace-timer\n```\n\n## 特性\n\n- **智能仪表盘** — 输入 `tk` 即可打开上下文感知的交互菜单\n- **积分与等级** — 完成任务赚积分，从 Lv.1 升到 Lv.99\n- **每日打卡** — 连续天数追踪，显示火焰 🔥\n- **番茄钟** — 全屏 TUI 倒计时 + 吉祥物 + 进度条\n- **快捷专注** — `tk focus 5/15/30/60` 一键开始\n- **完成心得** — 任务完成时记录感想\n- **统计报表** — 日/周/月统计，ASCII 柱状图\n- **双语支持** — `--lang zh|en`，自动检测系统语言\n- **数据导出** — CSV 或 Markdown 格式\n- **云同步** — 数据文件指向 Dropbox/iCloud/OneDrive\n\n## 快速开始\n\n```bash\n# 打开交互仪表盘\ntk\n\n# 或直接用命令\ntk start \"写周报\" --tag work --tag daily --estimate 30\ntk mark \"完成数据分析\"\ntk status\ntk stop\n```\n\n## 智能仪表盘\n\n输入 `tk`（无参数）打开 TUI 仪表盘：\n\n**无活跃任务：**\n```\n  [CACE 吉祥物 — 困了]\n  📊 Lv.2 | 20 积分 | 🔥 连续 3 天\n\n  [s] 🚀 开始任务\n  [f] 🍅 快捷专注\n  [b] 📊 统计报表\n  [l] 📋 历史记录\n  [?] ❓ 帮助\n```\n\n**有活跃任务：**\n```\n  [CACE 吉祥物 — 专注中]\n  📊 Lv.2 | 20 积分\n\n  🔥 进行中: 写周报 | 已用时: 15m 30s\n\n  [m] 📍 标记进度\n  [s] ⏹  停止任务\n  [b] 📊 统计报表\n  [l] 📋 历史记录\n  [?] ❓ 帮助\n```\n\n## 命令\n\n### `tk start <任务名> [选项]`\n\n开始新任务，支持多标签。\n\n| 选项 | 说明 |\n|------|------|\n| `--tag <标签>` | 多标签：`--tag dev --tag api` 或 `--tag dev,api` |\n| `--estimate <分钟>` | 预估时长（效率评分） |\n\n### `tk stop [选项]`\n\n停止当前任务，显示摘要、效率评分、获得积分。\n\n| 选项 | 说明 |\n|------|------|\n| `--reflection <文本>` | 附加完成心得 |\n\n交互终端中会自动弹出输入框。\n\n### `tk mark <备注>`\n\n在活跃任务中记录时间节点。\n\n### `tk status`\n\n显示当前任务、等级和打卡天数。\n\n### `tk list [选项]`\n\n| 选项 | 说明 |\n|------|------|\n| `--today` | 仅今天 |\n| `--tag <标签>` | 按标签筛选 |\n| `--limit <数量>` | 限制数量（默认 10） |\n\n### `tk search <关键词>`\n\n搜索任务名称、标签和标记备注。\n\n### `tk summary [选项]`\n\n统计报表，带 ASCII 柱状图。\n\n| 选项 | 说明 |\n|------|------|\n| `--today` | 仅今天 |\n| `--week` | 本周（周一开始） |\n| `--month` | 本月 |\n| `--tag <标签>` | 按标签筛选 |\n\n### `tk delete <id | --last>`\n\n删除历史记录。\n\n### `tk resume <id | --last>`\n\n恢复已完成任务为新会话。\n\n### `tk export [选项]`\n\n| 选项 | 说明 |\n|------|------|\n| `--format csv\\|markdown` | 输出格式（默认 csv） |\n| `--output <文件>` | 输出到文件（默认 stdout） |\n\n### `tk pomodoro <任务名> [选项]`\n\n全屏 TUI 番茄钟，带吉祥物、倒计时和鼓励语。\n\n| 选项 | 说明 |\n|------|------|\n| `--work <分钟>` | 工作时长（默认 25） |\n| `--break <分钟>` | 休息时长（默认 5） |\n| `--rounds <数量>` | 轮数（默认 4） |\n| `--tag <标签>` | 添加标签 |\n\n### `tk focus <5\\|15\\|30\\|60> [任务名]`\n\n快捷专注，一键启动单轮番茄钟。\n\n### `tk sync <路径>`\n\n设置同步文件路径。\n\n### `--lang <zh|en>`\n\n设置语言，自动检测系统语言，持久化到配置。\n\n### `tk help`\n\n显示完整命令参考。\n\n## 游戏化\n\n### 积分系统\n\n| 条件 | 积分 |\n|------|------|\n| 完成任务 | +10 |\n| 效率 ≥ 80% | +5 奖励 |\n| 效率 = 100% | +5 奖励 |\n| 深度工作（≥ 25 分钟） | +5 奖励 |\n\n### 等级系统\n\n递增经验曲线：每级需要 `等级 × 20` 积分。\n\n| 等级 | 总积分 |\n|------|--------|\n| 1 | 0 |\n| 2 | 20 |\n| 3 | 60 |\n| 5 | 200 |\n| 10 | 900 |\n\n### 每日打卡\n\n连续每天完成至少一个任务。中断一天则重新计数。\n\n## CACE 吉祥物\n\nCACE 采用 **MINT 蓝绿短 bob 女孩**：细圆框、大眼、平顺内收的下颌与小圆下巴，\n无鼻子、无手部，共 16 种表情。仪表盘与番茄钟自然眨眼；开始/恢复等一次性命令即时输出。\n终端缩小时自动切换完整、紧凑、迷你或纯文字布局。\n\n```bash\ntk mascot preview                         # 动态预览，n/p 切换表情\ntk mascot preview --all --no-tui           # 静态输出 16 种表情\ntk mascot preview --size compact --ascii   # 纯 ASCII 角色\ntk --no-animation                          # 关闭动画，计时继续\ntk --no-tui                                # 普通命令输出\ntk --color never                           # 无颜色\ntk --theme light                           # 浅色终端配色\n```\n\n`--ascii` 只替换角色字符，任务名和中文文案保留原文。颜色支持 `auto|always|256|never`；\n自动模式尊重 `NO_COLOR`、`TERM=dumb` 和输出重定向。TUI 颜色适配 blessed 支持的终端调色板。\n应用不需要 Python，也不修改终端背景或 shell 配置。\n\n番茄钟中 q/Esc/Ctrl+C 取消并返回 130，当前记录保留，可用 `tk stop` 结束；\n渲染错误返回 1，不写入已完成历史；SIGTERM 返回 143。仪表盘和预览中 q/Esc 正常退出。\n`--all` 或显式 `--size` 为静态导出，可加 `--expression <表情名称>` 指定单张。\n\n## 数据\n\n所有数据存储在 `~/.cace-timer.json`。\n\n## 卸载\n\n```bash\nnpm uninstall -g @cacinie/cace-timer\n```\n\n## 更新日志\n\n详见 [CHANGELOG.md](CHANGELOG.md)。\n\n## 许可\n\nMIT\n","readmeFilename":"README.md"}