tokentracker-cli 0.88.8 → 0.89.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/README.de.md +4 -4
  2. package/README.ja.md +3 -3
  3. package/README.ko.md +3 -3
  4. package/README.md +6 -5
  5. package/README.zh-CN.md +5 -4
  6. package/dashboard/dist/assets/{AchievementBadge-CzfK_8kl.js → AchievementBadge-BpDy2XSt.js} +1 -1
  7. package/dashboard/dist/assets/{AchievementsPage-PVft5lyI.js → AchievementsPage-Z3rNbZAL.js} +2 -2
  8. package/dashboard/dist/assets/{AchievementsSection-DyzHGzys.js → AchievementsSection-Cawmrzgp.js} +1 -1
  9. package/dashboard/dist/assets/{BadgeDetailModal-CFsRpXG1.js → BadgeDetailModal-D8IPOyzs.js} +1 -1
  10. package/dashboard/dist/assets/{Card-Bi9dmQTP.js → Card-Bco5i8Fn.js} +1 -1
  11. package/dashboard/dist/assets/{ClawdAnimated-BxcZjV9b.js → ClawdAnimated-RQvg50Wr.js} +1 -1
  12. package/dashboard/dist/assets/{CommandPalette-DHVK5yTu.js → CommandPalette-DWLyd7P_.js} +1 -1
  13. package/dashboard/dist/assets/{CommunityStatsModal-BmMh7Avp.js → CommunityStatsModal-DfjsjuRG.js} +1 -1
  14. package/dashboard/dist/assets/{ConfirmModal-BjTQXMg4.js → ConfirmModal-DNuSWkt3.js} +1 -1
  15. package/dashboard/dist/assets/{Controls-CZUbEggT.js → Controls-DdLHdkEz.js} +1 -1
  16. package/dashboard/dist/assets/{DashboardPage-C3x4Hew6.js → DashboardPage-DN54xqEE.js} +1 -1
  17. package/dashboard/dist/assets/{DevicePage-1qf6aiEH.js → DevicePage-ydAtX5oZ.js} +1 -1
  18. package/dashboard/dist/assets/{DialogClose-CRrlkVf0.js → DialogClose-C40Az_dd.js} +1 -1
  19. package/dashboard/dist/assets/DialogDescription-CNfc42U-.js +1 -0
  20. package/dashboard/dist/assets/{DialogTitle-DhGyZ0Ue.js → DialogTitle-CCg6RvL8.js} +1 -1
  21. package/dashboard/dist/assets/{FadeIn-M8ECNbPG.js → FadeIn-a7dOxD0I.js} +1 -1
  22. package/dashboard/dist/assets/{HeaderGithubStar-BKtQc1Si.js → HeaderGithubStar-DmH6JYQF.js} +1 -1
  23. package/dashboard/dist/assets/{HoverTooltip-Bo1zVtke.js → HoverTooltip-D3yTRqfx.js} +1 -1
  24. package/dashboard/dist/assets/{IpCheckPage-B78HcgA1.js → IpCheckPage-DH4av7RV.js} +1 -1
  25. package/dashboard/dist/assets/{LandingPage-DSlanH3Y.js → LandingPage-B1fuvkPh.js} +2 -2
  26. package/dashboard/dist/assets/{LeaderboardAvatar-Cs4IYwTC.js → LeaderboardAvatar-C-tKTfIs.js} +1 -1
  27. package/dashboard/dist/assets/{LeaderboardPage-DXlo-PNE.js → LeaderboardPage-CL7Cre5j.js} +2 -2
  28. package/dashboard/dist/assets/{LeaderboardProfileModal-CVM6FjLt.js → LeaderboardProfileModal-CqRvLdEB.js} +3 -3
  29. package/dashboard/dist/assets/{LeaderboardProfilePage-BO-MTMcH.js → LeaderboardProfilePage-BDjW5z87.js} +1 -1
  30. package/dashboard/dist/assets/{LimitsPage-BohIYn9J.js → LimitsPage-D533J_we.js} +1 -1
  31. package/dashboard/dist/assets/{LocalOnlyNotice-BQ7eYwB8.js → LocalOnlyNotice-CQDKfXwB.js} +1 -1
  32. package/dashboard/dist/assets/{LoginCard-DhOJyCcc.js → LoginCard-CptsVdtq.js} +1 -1
  33. package/dashboard/dist/assets/{LoginModal-Dfo2DSA9.js → LoginModal-8V4Vsgpr.js} +1 -1
  34. package/dashboard/dist/assets/{LoginPage-CN-cXdsD.js → LoginPage-DIwzC_95.js} +1 -1
  35. package/dashboard/dist/assets/{PetPage-CQY2YUNm.js → PetPage-CXSq_C6b.js} +1 -1
  36. package/dashboard/dist/assets/{PopoverPopup-D0bYgqkq.js → PopoverPopup-C_6kkB4_.js} +1 -1
  37. package/dashboard/dist/assets/{ProviderIcon-BfiriW8d.js → ProviderIcon-BKGMzdEg.js} +1 -1
  38. package/dashboard/dist/assets/{ResetPasswordPage-CQyX1BF6.js → ResetPasswordPage-BThSQVj7.js} +1 -1
  39. package/dashboard/dist/assets/{SegmentedControl-DWhf_XGR.js → SegmentedControl-DdIw-7OY.js} +1 -1
  40. package/dashboard/dist/assets/{Select-Dy6krqIZ.js → Select-BuxVjVTV.js} +1 -1
  41. package/dashboard/dist/assets/{SelectItemText-D1296h92.js → SelectItemText-B7AP9a2t.js} +1 -1
  42. package/dashboard/dist/assets/{ServiceStatusPage-BgC3i1y-.js → ServiceStatusPage-Db6XpKGJ.js} +1 -1
  43. package/dashboard/dist/assets/{SessionsPage-Dyq0Q8tm.js → SessionsPage-CIvvinQm.js} +1 -1
  44. package/dashboard/dist/assets/{SettingsPage-QCZksfny.js → SettingsPage-DZo5FGJE.js} +1 -1
  45. package/dashboard/dist/assets/{SkillsPage-BUWMr2_o.js → SkillsPage-2rr2nzvc.js} +1 -1
  46. package/dashboard/dist/assets/{TokenGalaxy-BHauFZfa.js → TokenGalaxy-WS2JBmzs.js} +1 -1
  47. package/dashboard/dist/assets/{ToolbarRootContext-1sViYfay.js → ToolbarRootContext-B5s-ucZR.js} +1 -1
  48. package/dashboard/dist/assets/{TrendMonitor-DM26Zn7d.js → TrendMonitor-DfgZi0b3.js} +1 -1
  49. package/dashboard/dist/assets/{WidgetsPage-DhjPczRN.js → WidgetsPage-WWaK3S0S.js} +1 -1
  50. package/dashboard/dist/assets/{WrappedPage-BsEFzfrx.js → WrappedPage-C3C85NLm.js} +1 -1
  51. package/dashboard/dist/assets/{__vite-browser-external-BW4ueyBB.js → __vite-browser-external-B-CAZ5HB.js} +2 -2
  52. package/dashboard/dist/assets/{agent-logos-IRTgTlkV.js → agent-logos-Do1kFgsi.js} +1 -1
  53. package/dashboard/dist/assets/{arrow-up-right-BapNuXPQ.js → arrow-up-right-DbomORWZ.js} +1 -1
  54. package/dashboard/dist/assets/{check-lpIv67Hh.js → check-DzEvx9pJ.js} +1 -1
  55. package/dashboard/dist/assets/{chevron-right-jYAPg2OX.js → chevron-right-DZTnF2NM.js} +1 -1
  56. package/dashboard/dist/assets/{copy-CEdsXYF2.js → copy-BS7rQ_jR.js} +1 -1
  57. package/dashboard/dist/assets/{download-CGJA0mZj.js → download-DlWVR14_.js} +1 -1
  58. package/dashboard/dist/assets/{external-link-DTmmieCB.js → external-link-CtVBRLbf.js} +1 -1
  59. package/dashboard/dist/assets/{flame-C-orSEmd.js → flame-Bd3FUTdZ.js} +1 -1
  60. package/dashboard/dist/assets/{format-tokens-BQuK3UBV.js → format-tokens--QLNTkZB.js} +1 -1
  61. package/dashboard/dist/assets/{icons-DuVOMXCd.js → icons-Cs8SXqmU.js} +1 -1
  62. package/dashboard/dist/assets/{index-CKG-dDk-.js → index-CfS3tuU1.js} +1 -1
  63. package/dashboard/dist/assets/{index-5hluBV6Y.js → index-Cj7qHXa4.js} +1 -1
  64. package/dashboard/dist/assets/{index-DvLGX2GN.js → index-DoTYGePn.js} +1 -1
  65. package/dashboard/dist/assets/{info-EKHZ3tlo.js → info-CsAt6S8y.js} +1 -1
  66. package/dashboard/dist/assets/{limits-providers-DgnwvabV.js → limits-providers-Czh_yu22.js} +1 -1
  67. package/dashboard/dist/assets/{link-2-A2f7492I.js → link-2-CjC85wrH.js} +1 -1
  68. package/dashboard/dist/assets/{loader-circle-DiBM_0cy.js → loader-circle-Cf0h8jN7.js} +1 -1
  69. package/dashboard/dist/assets/{maximize-2-CmJrrSbJ.js → maximize-2-DSLJns7Q.js} +1 -1
  70. package/dashboard/dist/assets/{modifiers.esm-v5P5znue.js → modifiers.esm-2DRBUt-i.js} +1 -1
  71. package/dashboard/dist/assets/{monitor-smartphone-jmB0EaLx.js → monitor-smartphone-DitUxFt7.js} +1 -1
  72. package/dashboard/dist/assets/{provider-display-BJXN_8Ft.js → provider-display-Dm_uiVV1.js} +1 -1
  73. package/dashboard/dist/assets/{react-DRhZt4b6.js → react-CExpcnBO.js} +1 -1
  74. package/dashboard/dist/assets/{search-D9j_51N0.js → search-S2Q8oj2Y.js} +1 -1
  75. package/dashboard/dist/assets/{skills-api-Dywy4E7M.js → skills-api-C3mlKc8x.js} +1 -1
  76. package/dashboard/dist/assets/{sortable.esm-BYYlH2M3.js → sortable.esm-22qRLWIc.js} +1 -1
  77. package/dashboard/dist/assets/{store-Dt6GNo2E.js → store-DktMCl4T.js} +1 -1
  78. package/dashboard/dist/assets/{terminal-BfWjr1gW.js → terminal-DS6Tqgok.js} +1 -1
  79. package/dashboard/dist/assets/{trash-2-Ceal5Y6z.js → trash-2-BHgzn2Bd.js} +1 -1
  80. package/dashboard/dist/assets/{use-community-stats-2G4i1ZwJ.js → use-community-stats-DqQQKHPK.js} +1 -1
  81. package/dashboard/dist/assets/{use-limits-display-prefs--qpfQM72.js → use-limits-display-prefs-C2fbOm_s.js} +1 -1
  82. package/dashboard/dist/assets/{use-ordered-list-BRg8W35v.js → use-ordered-list-BnIpnofG.js} +1 -1
  83. package/dashboard/dist/assets/use-reduced-motion-oDsUC_PJ.js +1 -0
  84. package/dashboard/dist/assets/{use-session-efficiency-pref-DHwJtj_8.js → use-session-efficiency-pref-B78vQ2pp.js} +1 -1
  85. package/dashboard/dist/assets/{use-transform-DaIhV0Zy.js → use-transform-DJeSBZmb.js} +1 -1
  86. package/dashboard/dist/assets/{use-usage-limits-COggDJdz.js → use-usage-limits-BkSQGzCV.js} +1 -1
  87. package/dashboard/dist/assets/{useCurrency-0g-kQuZf.js → useCurrency-BY7ZJ-XD.js} +1 -1
  88. package/dashboard/dist/assets/{useScrollLock-CMMjcyJf.js → useScrollLock-CHsj-WN5.js} +1 -1
  89. package/dashboard/dist/assets/{useTokenFormat-BuVZXkVC.js → useTokenFormat-CVJJAs3R.js} +1 -1
  90. package/dashboard/dist/assets/{zap-BhYCdFZP.js → zap-Dtudxu92.js} +1 -1
  91. package/dashboard/dist/index.html +28 -25
  92. package/dashboard/dist/ip-check.html +1 -1
  93. package/dashboard/dist/leaderboard.html +1 -1
  94. package/dashboard/dist/llms.txt +3 -2
  95. package/dashboard/dist/share.html +1 -1
  96. package/package.json +2 -2
  97. package/src/commands/init.js +1 -0
  98. package/src/commands/sync.js +3 -1
  99. package/src/lib/local-api.js +3 -0
  100. package/src/lib/pricing/seed-snapshot.json +1 -1
  101. package/src/lib/rollout.js +23 -10
  102. package/dashboard/dist/assets/DialogDescription-tD0gEESM.js +0 -1
  103. package/dashboard/dist/assets/use-reduced-motion-BDYfqZDy.js +0 -1
@@ -1,7 +1,7 @@
1
1
  # Token Tracker LLMs Index
2
2
 
3
3
  Token Tracker is a free, open-source, local-first AI coding usage and cost
4
- tracker for 30 tools. Its distinctive desktop experience includes a pixel pet
4
+ tracker for 31 tools. Its distinctive desktop experience includes a pixel pet
5
5
  powered by real token activity, four desktop widgets, and achievements. The
6
6
  same data powers a cross-platform CLI, a native macOS menu bar app, a native
7
7
  Windows system tray app, and a dashboard. It records token counts and
@@ -23,7 +23,7 @@ timestamps, never prompts, responses, or source code.
23
23
  - [npm package](https://www.npmjs.com/package/tokentracker-cli)
24
24
  - [Latest release](https://github.com/xiufengsun/TokenTracker/releases/latest)
25
25
 
26
- ## Supported AI coding tools (30)
26
+ ## Supported AI coding tools (31)
27
27
  - Claude Code
28
28
  - Codex CLI
29
29
  - Cursor
@@ -54,6 +54,7 @@ timestamps, never prompts, responses, or source code.
54
54
  - Qoder
55
55
  - AnythingLLM Desktop
56
56
  - Claude Science
57
+ - DeepSeek Harness
57
58
 
58
59
  ## Capabilities
59
60
  - Desktop pet that reacts to real token burn, streaks, and rest
@@ -75,7 +75,7 @@
75
75
  "description": "Shareable Token Tracker dashboard snapshot."
76
76
  }
77
77
  </script>
78
- <script type="module" crossorigin src="/assets/__vite-browser-external-BW4ueyBB.js"></script>
78
+ <script type="module" crossorigin src="/assets/__vite-browser-external-B-CAZ5HB.js"></script>
79
79
  <link rel="stylesheet" crossorigin href="/assets/__vite-browser-external-CRYifSM4.css">
80
80
  </head>
81
81
  <body>
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "tokentracker-cli",
3
- "version": "0.88.8",
4
- "description": "Local-first AI coding token usage and cost tracker for 30 tools, with a dashboard, desktop pet, widgets, achievements, and native macOS/Windows apps.",
3
+ "version": "0.89.0",
4
+ "description": "Local-first AI coding token usage and cost tracker for 31 tools, with a dashboard, desktop pet, widgets, achievements, and native macOS/Windows apps.",
5
5
  "main": "src/cli.js",
6
6
  "bin": {
7
7
  "tokentracker-cli": "bin/tracker.js",
@@ -134,6 +134,7 @@ const SUPPORTED_PROVIDERS = [
134
134
  "Qoder",
135
135
  "AnythingLLM Desktop",
136
136
  "Claude Science",
137
+ "DeepSeek Harness",
137
138
  ];
138
139
 
139
140
  async function cmdInit(argv) {
@@ -363,7 +363,7 @@ async function acquireSyncLock(
363
363
  priorityPollMs = PRIORITY_LOCK_POLL_MS,
364
364
  } = {},
365
365
  ) {
366
- const waitsForPriority = Boolean(opts.drain || opts.publishAccount);
366
+ const waitsForPriority = Boolean(opts.waitForLock || opts.drain || opts.publishAccount);
367
367
  let lock = await openLock(lockPath, {
368
368
  quietIfLocked: opts.auto || waitsForPriority,
369
369
  });
@@ -2835,6 +2835,7 @@ function parseArgs(argv) {
2835
2835
  fromOpenclaw: false,
2836
2836
  source: null,
2837
2837
  drain: false,
2838
+ waitForLock: false,
2838
2839
  background: false,
2839
2840
  publishAccount: false,
2840
2841
  allLocalSources: false,
@@ -2852,6 +2853,7 @@ function parseArgs(argv) {
2852
2853
  }
2853
2854
  else if (a.startsWith("--source=")) out.source = normalizeSyncSource(a.slice("--source=".length));
2854
2855
  else if (a === "--drain") out.drain = true;
2856
+ else if (a === "--wait-for-lock") out.waitForLock = true;
2855
2857
  else if (a === "--background" || a === "--lightweight") out.background = true;
2856
2858
  else if (a === "--publish-account") out.publishAccount = true;
2857
2859
  else if (a === "--all-local-sources") out.allLocalSources = true;
@@ -880,6 +880,7 @@ function runSyncCommand(extraEnv = {}, opts = {}) {
880
880
  if (opts.publishAccount === true) args.push("--publish-account");
881
881
  if (opts.allLocalSources === true) args.push("--all-local-sources");
882
882
  if (opts.drain === true) args.push("--drain");
883
+ if (opts.waitForLock === true) args.push("--wait-for-lock");
883
884
  const child = spawn(process.execPath, args, {
884
885
  env: { ...process.env, ...extraEnv },
885
886
  stdio: ["ignore", "pipe", "pipe"],
@@ -1971,6 +1972,8 @@ function createLocalApiHandler({ queuePath }) {
1971
1972
  background,
1972
1973
  publishAccount,
1973
1974
  allLocalSources,
1975
+ waitForLock:
1976
+ !drain && !background && Boolean(extraEnv.TOKENTRACKER_DEVICE_TOKEN),
1974
1977
  });
1975
1978
  try {
1976
1979
  const { resetUsageLimitsCache } = require("./usage-limits");