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.
- package/README.de.md +4 -4
- package/README.ja.md +3 -3
- package/README.ko.md +3 -3
- package/README.md +6 -5
- package/README.zh-CN.md +5 -4
- package/dashboard/dist/assets/{AchievementBadge-CzfK_8kl.js → AchievementBadge-BpDy2XSt.js} +1 -1
- package/dashboard/dist/assets/{AchievementsPage-PVft5lyI.js → AchievementsPage-Z3rNbZAL.js} +2 -2
- package/dashboard/dist/assets/{AchievementsSection-DyzHGzys.js → AchievementsSection-Cawmrzgp.js} +1 -1
- package/dashboard/dist/assets/{BadgeDetailModal-CFsRpXG1.js → BadgeDetailModal-D8IPOyzs.js} +1 -1
- package/dashboard/dist/assets/{Card-Bi9dmQTP.js → Card-Bco5i8Fn.js} +1 -1
- package/dashboard/dist/assets/{ClawdAnimated-BxcZjV9b.js → ClawdAnimated-RQvg50Wr.js} +1 -1
- package/dashboard/dist/assets/{CommandPalette-DHVK5yTu.js → CommandPalette-DWLyd7P_.js} +1 -1
- package/dashboard/dist/assets/{CommunityStatsModal-BmMh7Avp.js → CommunityStatsModal-DfjsjuRG.js} +1 -1
- package/dashboard/dist/assets/{ConfirmModal-BjTQXMg4.js → ConfirmModal-DNuSWkt3.js} +1 -1
- package/dashboard/dist/assets/{Controls-CZUbEggT.js → Controls-DdLHdkEz.js} +1 -1
- package/dashboard/dist/assets/{DashboardPage-C3x4Hew6.js → DashboardPage-DN54xqEE.js} +1 -1
- package/dashboard/dist/assets/{DevicePage-1qf6aiEH.js → DevicePage-ydAtX5oZ.js} +1 -1
- package/dashboard/dist/assets/{DialogClose-CRrlkVf0.js → DialogClose-C40Az_dd.js} +1 -1
- package/dashboard/dist/assets/DialogDescription-CNfc42U-.js +1 -0
- package/dashboard/dist/assets/{DialogTitle-DhGyZ0Ue.js → DialogTitle-CCg6RvL8.js} +1 -1
- package/dashboard/dist/assets/{FadeIn-M8ECNbPG.js → FadeIn-a7dOxD0I.js} +1 -1
- package/dashboard/dist/assets/{HeaderGithubStar-BKtQc1Si.js → HeaderGithubStar-DmH6JYQF.js} +1 -1
- package/dashboard/dist/assets/{HoverTooltip-Bo1zVtke.js → HoverTooltip-D3yTRqfx.js} +1 -1
- package/dashboard/dist/assets/{IpCheckPage-B78HcgA1.js → IpCheckPage-DH4av7RV.js} +1 -1
- package/dashboard/dist/assets/{LandingPage-DSlanH3Y.js → LandingPage-B1fuvkPh.js} +2 -2
- package/dashboard/dist/assets/{LeaderboardAvatar-Cs4IYwTC.js → LeaderboardAvatar-C-tKTfIs.js} +1 -1
- package/dashboard/dist/assets/{LeaderboardPage-DXlo-PNE.js → LeaderboardPage-CL7Cre5j.js} +2 -2
- package/dashboard/dist/assets/{LeaderboardProfileModal-CVM6FjLt.js → LeaderboardProfileModal-CqRvLdEB.js} +3 -3
- package/dashboard/dist/assets/{LeaderboardProfilePage-BO-MTMcH.js → LeaderboardProfilePage-BDjW5z87.js} +1 -1
- package/dashboard/dist/assets/{LimitsPage-BohIYn9J.js → LimitsPage-D533J_we.js} +1 -1
- package/dashboard/dist/assets/{LocalOnlyNotice-BQ7eYwB8.js → LocalOnlyNotice-CQDKfXwB.js} +1 -1
- package/dashboard/dist/assets/{LoginCard-DhOJyCcc.js → LoginCard-CptsVdtq.js} +1 -1
- package/dashboard/dist/assets/{LoginModal-Dfo2DSA9.js → LoginModal-8V4Vsgpr.js} +1 -1
- package/dashboard/dist/assets/{LoginPage-CN-cXdsD.js → LoginPage-DIwzC_95.js} +1 -1
- package/dashboard/dist/assets/{PetPage-CQY2YUNm.js → PetPage-CXSq_C6b.js} +1 -1
- package/dashboard/dist/assets/{PopoverPopup-D0bYgqkq.js → PopoverPopup-C_6kkB4_.js} +1 -1
- package/dashboard/dist/assets/{ProviderIcon-BfiriW8d.js → ProviderIcon-BKGMzdEg.js} +1 -1
- package/dashboard/dist/assets/{ResetPasswordPage-CQyX1BF6.js → ResetPasswordPage-BThSQVj7.js} +1 -1
- package/dashboard/dist/assets/{SegmentedControl-DWhf_XGR.js → SegmentedControl-DdIw-7OY.js} +1 -1
- package/dashboard/dist/assets/{Select-Dy6krqIZ.js → Select-BuxVjVTV.js} +1 -1
- package/dashboard/dist/assets/{SelectItemText-D1296h92.js → SelectItemText-B7AP9a2t.js} +1 -1
- package/dashboard/dist/assets/{ServiceStatusPage-BgC3i1y-.js → ServiceStatusPage-Db6XpKGJ.js} +1 -1
- package/dashboard/dist/assets/{SessionsPage-Dyq0Q8tm.js → SessionsPage-CIvvinQm.js} +1 -1
- package/dashboard/dist/assets/{SettingsPage-QCZksfny.js → SettingsPage-DZo5FGJE.js} +1 -1
- package/dashboard/dist/assets/{SkillsPage-BUWMr2_o.js → SkillsPage-2rr2nzvc.js} +1 -1
- package/dashboard/dist/assets/{TokenGalaxy-BHauFZfa.js → TokenGalaxy-WS2JBmzs.js} +1 -1
- package/dashboard/dist/assets/{ToolbarRootContext-1sViYfay.js → ToolbarRootContext-B5s-ucZR.js} +1 -1
- package/dashboard/dist/assets/{TrendMonitor-DM26Zn7d.js → TrendMonitor-DfgZi0b3.js} +1 -1
- package/dashboard/dist/assets/{WidgetsPage-DhjPczRN.js → WidgetsPage-WWaK3S0S.js} +1 -1
- package/dashboard/dist/assets/{WrappedPage-BsEFzfrx.js → WrappedPage-C3C85NLm.js} +1 -1
- package/dashboard/dist/assets/{__vite-browser-external-BW4ueyBB.js → __vite-browser-external-B-CAZ5HB.js} +2 -2
- package/dashboard/dist/assets/{agent-logos-IRTgTlkV.js → agent-logos-Do1kFgsi.js} +1 -1
- package/dashboard/dist/assets/{arrow-up-right-BapNuXPQ.js → arrow-up-right-DbomORWZ.js} +1 -1
- package/dashboard/dist/assets/{check-lpIv67Hh.js → check-DzEvx9pJ.js} +1 -1
- package/dashboard/dist/assets/{chevron-right-jYAPg2OX.js → chevron-right-DZTnF2NM.js} +1 -1
- package/dashboard/dist/assets/{copy-CEdsXYF2.js → copy-BS7rQ_jR.js} +1 -1
- package/dashboard/dist/assets/{download-CGJA0mZj.js → download-DlWVR14_.js} +1 -1
- package/dashboard/dist/assets/{external-link-DTmmieCB.js → external-link-CtVBRLbf.js} +1 -1
- package/dashboard/dist/assets/{flame-C-orSEmd.js → flame-Bd3FUTdZ.js} +1 -1
- package/dashboard/dist/assets/{format-tokens-BQuK3UBV.js → format-tokens--QLNTkZB.js} +1 -1
- package/dashboard/dist/assets/{icons-DuVOMXCd.js → icons-Cs8SXqmU.js} +1 -1
- package/dashboard/dist/assets/{index-CKG-dDk-.js → index-CfS3tuU1.js} +1 -1
- package/dashboard/dist/assets/{index-5hluBV6Y.js → index-Cj7qHXa4.js} +1 -1
- package/dashboard/dist/assets/{index-DvLGX2GN.js → index-DoTYGePn.js} +1 -1
- package/dashboard/dist/assets/{info-EKHZ3tlo.js → info-CsAt6S8y.js} +1 -1
- package/dashboard/dist/assets/{limits-providers-DgnwvabV.js → limits-providers-Czh_yu22.js} +1 -1
- package/dashboard/dist/assets/{link-2-A2f7492I.js → link-2-CjC85wrH.js} +1 -1
- package/dashboard/dist/assets/{loader-circle-DiBM_0cy.js → loader-circle-Cf0h8jN7.js} +1 -1
- package/dashboard/dist/assets/{maximize-2-CmJrrSbJ.js → maximize-2-DSLJns7Q.js} +1 -1
- package/dashboard/dist/assets/{modifiers.esm-v5P5znue.js → modifiers.esm-2DRBUt-i.js} +1 -1
- package/dashboard/dist/assets/{monitor-smartphone-jmB0EaLx.js → monitor-smartphone-DitUxFt7.js} +1 -1
- package/dashboard/dist/assets/{provider-display-BJXN_8Ft.js → provider-display-Dm_uiVV1.js} +1 -1
- package/dashboard/dist/assets/{react-DRhZt4b6.js → react-CExpcnBO.js} +1 -1
- package/dashboard/dist/assets/{search-D9j_51N0.js → search-S2Q8oj2Y.js} +1 -1
- package/dashboard/dist/assets/{skills-api-Dywy4E7M.js → skills-api-C3mlKc8x.js} +1 -1
- package/dashboard/dist/assets/{sortable.esm-BYYlH2M3.js → sortable.esm-22qRLWIc.js} +1 -1
- package/dashboard/dist/assets/{store-Dt6GNo2E.js → store-DktMCl4T.js} +1 -1
- package/dashboard/dist/assets/{terminal-BfWjr1gW.js → terminal-DS6Tqgok.js} +1 -1
- package/dashboard/dist/assets/{trash-2-Ceal5Y6z.js → trash-2-BHgzn2Bd.js} +1 -1
- package/dashboard/dist/assets/{use-community-stats-2G4i1ZwJ.js → use-community-stats-DqQQKHPK.js} +1 -1
- package/dashboard/dist/assets/{use-limits-display-prefs--qpfQM72.js → use-limits-display-prefs-C2fbOm_s.js} +1 -1
- package/dashboard/dist/assets/{use-ordered-list-BRg8W35v.js → use-ordered-list-BnIpnofG.js} +1 -1
- package/dashboard/dist/assets/use-reduced-motion-oDsUC_PJ.js +1 -0
- package/dashboard/dist/assets/{use-session-efficiency-pref-DHwJtj_8.js → use-session-efficiency-pref-B78vQ2pp.js} +1 -1
- package/dashboard/dist/assets/{use-transform-DaIhV0Zy.js → use-transform-DJeSBZmb.js} +1 -1
- package/dashboard/dist/assets/{use-usage-limits-COggDJdz.js → use-usage-limits-BkSQGzCV.js} +1 -1
- package/dashboard/dist/assets/{useCurrency-0g-kQuZf.js → useCurrency-BY7ZJ-XD.js} +1 -1
- package/dashboard/dist/assets/{useScrollLock-CMMjcyJf.js → useScrollLock-CHsj-WN5.js} +1 -1
- package/dashboard/dist/assets/{useTokenFormat-BuVZXkVC.js → useTokenFormat-CVJJAs3R.js} +1 -1
- package/dashboard/dist/assets/{zap-BhYCdFZP.js → zap-Dtudxu92.js} +1 -1
- package/dashboard/dist/index.html +28 -25
- package/dashboard/dist/ip-check.html +1 -1
- package/dashboard/dist/leaderboard.html +1 -1
- package/dashboard/dist/llms.txt +3 -2
- package/dashboard/dist/share.html +1 -1
- package/package.json +2 -2
- package/src/commands/init.js +1 -0
- package/src/commands/sync.js +3 -1
- package/src/lib/local-api.js +3 -0
- package/src/lib/pricing/seed-snapshot.json +1 -1
- package/src/lib/rollout.js +23 -10
- package/dashboard/dist/assets/DialogDescription-tD0gEESM.js +0 -1
- package/dashboard/dist/assets/use-reduced-motion-BDYfqZDy.js +0 -1
package/dashboard/dist/llms.txt
CHANGED
|
@@ -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
|
|
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 (
|
|
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-
|
|
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.
|
|
4
|
-
"description": "Local-first AI coding token usage and cost tracker for
|
|
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",
|
package/src/commands/init.js
CHANGED
package/src/commands/sync.js
CHANGED
|
@@ -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;
|
package/src/lib/local-api.js
CHANGED
|
@@ -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");
|