tokentracker-cli 0.5.9 → 0.5.12

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 (51) hide show
  1. package/dashboard/dist/assets/DashboardPage-CRoqVbH0.js +12 -0
  2. package/dashboard/dist/assets/{LeaderboardPage-BaHIGvSw.js → LeaderboardPage-B3ZnlNgw.js} +1 -1
  3. package/dashboard/dist/assets/{LeaderboardProfilePage-BCvKUQ4z.js → LeaderboardProfilePage-Cq17bu0k.js} +1 -1
  4. package/dashboard/dist/assets/{ThemeToggle-BVMjkcsk.js → ThemeToggle-D2rifL57.js} +1 -1
  5. package/dashboard/dist/assets/{leaderboard-columns-BvsbuvV1.js → leaderboard-columns-DQnk56C_.js} +1 -1
  6. package/dashboard/dist/assets/{main-Cs8rK2ak.js → main-wolIKQH9.js} +3 -3
  7. package/dashboard/dist/clawd/happy.svg +161 -0
  8. package/dashboard/dist/clawd/idle/collapse.svg +101 -0
  9. package/dashboard/dist/clawd/idle/doze.svg +72 -0
  10. package/dashboard/dist/clawd/idle/follow.svg +64 -0
  11. package/dashboard/dist/clawd/idle/living.svg +196 -0
  12. package/dashboard/dist/clawd/idle/look.svg +115 -0
  13. package/dashboard/dist/clawd/idle/yawn.svg +158 -0
  14. package/dashboard/dist/clawd/mini/alert.svg +129 -0
  15. package/dashboard/dist/clawd/mini/crabwalk.svg +76 -0
  16. package/dashboard/dist/clawd/mini/enter-sleep.svg +65 -0
  17. package/dashboard/dist/clawd/mini/enter.svg +115 -0
  18. package/dashboard/dist/clawd/mini/happy.svg +124 -0
  19. package/dashboard/dist/clawd/mini/idle.svg +83 -0
  20. package/dashboard/dist/clawd/mini/peek.svg +82 -0
  21. package/dashboard/dist/clawd/mini/sleep.svg +112 -0
  22. package/dashboard/dist/clawd/react/double.svg +108 -0
  23. package/dashboard/dist/clawd/react/drag.svg +102 -0
  24. package/dashboard/dist/clawd/react/left.svg +102 -0
  25. package/dashboard/dist/clawd/react/right.svg +102 -0
  26. package/dashboard/dist/clawd/sleep/collapse-sleep.svg +247 -0
  27. package/dashboard/dist/clawd/sleep/sleeping.svg +118 -0
  28. package/dashboard/dist/clawd/sleep/wake.svg +277 -0
  29. package/dashboard/dist/clawd/static-base.svg +21 -0
  30. package/dashboard/dist/clawd/status/disconnected.svg +136 -0
  31. package/dashboard/dist/clawd/status/error.svg +94 -0
  32. package/dashboard/dist/clawd/status/notification.svg +134 -0
  33. package/dashboard/dist/clawd/working/building.svg +231 -0
  34. package/dashboard/dist/clawd/working/carrying.svg +107 -0
  35. package/dashboard/dist/clawd/working/conducting.svg +118 -0
  36. package/dashboard/dist/clawd/working/confused.svg +113 -0
  37. package/dashboard/dist/clawd/working/debugger.svg +91 -0
  38. package/dashboard/dist/clawd/working/juggling.svg +82 -0
  39. package/dashboard/dist/clawd/working/overheated.svg +75 -0
  40. package/dashboard/dist/clawd/working/pushing.svg +125 -0
  41. package/dashboard/dist/clawd/working/sweeping.svg +79 -0
  42. package/dashboard/dist/clawd/working/thinking.svg +119 -0
  43. package/dashboard/dist/clawd/working/typing.svg +153 -0
  44. package/dashboard/dist/clawd/working/ultrathink.svg +166 -0
  45. package/dashboard/dist/clawd/working/wizard.svg +98 -0
  46. package/dashboard/dist/index.html +1 -1
  47. package/dashboard/dist/llms.txt +9 -12
  48. package/dashboard/dist/share.html +1 -1
  49. package/package.json +1 -1
  50. package/src/commands/serve.js +12 -0
  51. package/dashboard/dist/assets/DashboardPage-DEZCzCqB.js +0 -12
@@ -0,0 +1,166 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="-15 -25 45 45" width="500" height="500">
2
+ <defs>
3
+ <style>
4
+ /* Intense body trembling */
5
+ .body-shake {
6
+ transform-origin: 7.5px 15px;
7
+ animation: shake 0.15s infinite alternate ease-in-out;
8
+ }
9
+
10
+ /* Shadow vibration */
11
+ .shadow-shake {
12
+ transform-origin: 7.5px 15.5px;
13
+ animation: shadow-vib 0.15s infinite alternate ease-in-out;
14
+ }
15
+
16
+ /* Right arm tapping chin fast */
17
+ .arm-tap-fast {
18
+ transform-origin: 14px 10px;
19
+ animation: tap-fast 0.8s infinite ease-in-out;
20
+ }
21
+
22
+ /* Concentrated squint blink */
23
+ .eyes-focus {
24
+ transform-origin: 7.5px 9px;
25
+ animation: focus-blink 2s infinite;
26
+ }
27
+
28
+ /* Brain sparks rising from head */
29
+ .spark {
30
+ opacity: 0;
31
+ animation: spark-rise 1.2s infinite ease-out;
32
+ }
33
+ .sp1 { animation-delay: 0s; }
34
+ .sp2 { animation-delay: 0.3s; }
35
+ .sp3 { animation-delay: 0.6s; }
36
+ .sp4 { animation-delay: 0.9s; }
37
+
38
+ /* Loading dots spinning */
39
+ .load-dot {
40
+ opacity: 0;
41
+ animation: dot-pulse 1.6s infinite;
42
+ }
43
+ .d1 { animation-delay: 0s; }
44
+ .d2 { animation-delay: 0.4s; }
45
+ .d3 { animation-delay: 0.8s; }
46
+
47
+ /* Steam puffs */
48
+ .steam {
49
+ opacity: 0;
50
+ animation: steam-rise 2s infinite ease-out;
51
+ }
52
+ .st1 { animation-delay: 0s; }
53
+ .st2 { animation-delay: 0.7s; }
54
+ .st3 { animation-delay: 1.4s; }
55
+
56
+ /* Ultrathink letters individual pulse */
57
+ .ul { animation: text-pulse 1s infinite ease-in-out; }
58
+ .ul0 { animation-delay: 0s; }
59
+ .ul1 { animation-delay: 0.1s; }
60
+ .ul2 { animation-delay: 0.2s; }
61
+ .ul3 { animation-delay: 0.3s; }
62
+ .ul4 { animation-delay: 0.4s; }
63
+ .ul5 { animation-delay: 0.5s; }
64
+ .ul6 { animation-delay: 0.6s; }
65
+ .ul7 { animation-delay: 0.7s; }
66
+ .ul8 { animation-delay: 0.8s; }
67
+ .ul9 { animation-delay: 0.9s; }
68
+
69
+ @keyframes text-pulse {
70
+ 0%, 100% { opacity: 0.15; }
71
+ 50% { opacity: 1; }
72
+ }
73
+
74
+ @keyframes shake {
75
+ 0% { transform: translate(-0.3px, 0) rotate(-0.5deg); }
76
+ 100% { transform: translate(0.3px, 0) rotate(0.5deg); }
77
+ }
78
+
79
+ @keyframes shadow-vib {
80
+ 0% { transform: scaleX(0.98); }
81
+ 100% { transform: scaleX(1.02); }
82
+ }
83
+
84
+ @keyframes tap-fast {
85
+ 0%, 100% { transform: rotate(-125deg); }
86
+ 50% { transform: rotate(-145deg); }
87
+ }
88
+
89
+ @keyframes focus-blink {
90
+ 0%, 70%, 78%, 100% { transform: scaleY(1); }
91
+ 74% { transform: scaleY(0.1); }
92
+ }
93
+
94
+ @keyframes spark-rise {
95
+ 0% { transform: translate(0, 0) scale(1); opacity: 0; }
96
+ 15% { opacity: 1; }
97
+ 100% { transform: translate(2px, -12px) scale(0.3); opacity: 0; }
98
+ }
99
+
100
+ @keyframes dot-pulse {
101
+ 0%, 100% { opacity: 0.2; }
102
+ 25%, 75% { opacity: 1; }
103
+ }
104
+
105
+ @keyframes steam-rise {
106
+ 0% { transform: translate(0, 0) scale(0.8); opacity: 0; }
107
+ 20% { opacity: 0.6; }
108
+ 100% { transform: translate(-2px, -10px) scale(1.5); opacity: 0; }
109
+ }
110
+ </style>
111
+ </defs>
112
+
113
+ <!-- Ground Shadow -->
114
+ <rect class="shadow-shake" x="3" y="15" width="9" height="1" fill="#000000" opacity="0.5"/>
115
+
116
+ <!-- Brain Sparks (mirrored x positions around center 7.5) -->
117
+ <g fill="#FFD700">
118
+ <rect class="spark sp1" x="10" y="2" width="1" height="1"/>
119
+ <rect class="spark sp2" x="6" y="0" width="1" height="1"/>
120
+ <rect class="spark sp3" x="3" y="1" width="1" height="1"/>
121
+ <rect class="spark sp4" x="8" y="-1" width="1" height="1"/>
122
+ </g>
123
+
124
+ <!-- Steam Puffs -->
125
+ <g fill="#AAAAAA" opacity="0.5">
126
+ <g class="steam st1"><rect x="5" y="3" width="2" height="1" rx="0.5"/><rect x="4" y="2" width="1" height="1" rx="0.5"/></g>
127
+ <g class="steam st2"><rect x="9" y="2" width="2" height="1" rx="0.5"/><rect x="10" y="1" width="1" height="1" rx="0.5"/></g>
128
+ <g class="steam st3"><rect x="7" y="3" width="1" height="1" rx="0.5"/><rect x="6" y="2" width="2" height="1" rx="0.5"/></g>
129
+ </g>
130
+
131
+ <!-- Loading Dots above head -->
132
+ <g fill="#FF6B35">
133
+ <rect class="load-dot d1" x="4" y="4" width="1" height="1"/>
134
+ <rect class="load-dot d2" x="7" y="4" width="1" height="1"/>
135
+ <rect class="load-dot d3" x="10" y="4" width="1" height="1"/>
136
+ </g>
137
+
138
+ <!-- Mirrored: body + legs only -->
139
+ <g transform="translate(15, 0) scale(-1, 1)">
140
+ <g id="legs" fill="#DE886D">
141
+ <rect x="3" y="13" width="1" height="2"/>
142
+ <rect x="5" y="13" width="1" height="2"/>
143
+ <rect x="9" y="13" width="1" height="2"/>
144
+ <rect x="11" y="13" width="1" height="2"/>
145
+ </g>
146
+
147
+ <g class="body-shake">
148
+ <g fill="#DE886D">
149
+ <rect x="2" y="6" width="11" height="7"/>
150
+ <rect x="0" y="9" width="3" height="2" transform="rotate(25 1 10)"/>
151
+ <g class="arm-tap-fast">
152
+ <rect x="13" y="9" width="2" height="2"/>
153
+ </g>
154
+ </g>
155
+ <g class="eyes-focus" fill="#000000">
156
+ <rect x="5" y="7" width="1" height="2"/>
157
+ <rect x="11" y="7" width="1" height="2"/>
158
+ </g>
159
+ </g>
160
+ </g>
161
+
162
+ <!-- Ultrathink rainbow text (top layer, each letter pulses independently) -->
163
+ <text x="7.5" y="0" text-anchor="middle" font-family="'Söhne', 'Helvetica Neue', Arial, sans-serif" font-size="3.2" font-weight="600" letter-spacing="0.2">
164
+ <tspan class="ul ul0" fill="#FF5252">u</tspan><tspan class="ul ul1" fill="#FF9800">l</tspan><tspan class="ul ul2" fill="#FFC107">t</tspan><tspan class="ul ul3" fill="#4CAF50">r</tspan><tspan class="ul ul4" fill="#2196F3">a</tspan><tspan class="ul ul5" fill="#9C27B0">t</tspan><tspan class="ul ul6" fill="#FF5252">h</tspan><tspan class="ul ul7" fill="#FF9800">i</tspan><tspan class="ul ul8" fill="#4CAF50">n</tspan><tspan class="ul ul9" fill="#2196F3">k</tspan>
165
+ </text>
166
+ </svg>
@@ -0,0 +1,98 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="-15 -25 45 45" width="500" height="500">
2
+ <defs>
3
+ <style>
4
+ .body-magic {
5
+ transform-origin: 7.5px 15px;
6
+ animation: float-body 3s infinite ease-in-out;
7
+ }
8
+ .arm-wand {
9
+ transform-origin: 14px 10px;
10
+ animation: wave-wand 3s infinite ease-in-out;
11
+ }
12
+ .arm-l-magic {
13
+ transform-origin: 1px 10px;
14
+ animation: wave-magic 3s infinite ease-in-out;
15
+ }
16
+ .eyes-magic {
17
+ animation: blink-magic 3s infinite;
18
+ }
19
+ .magic-star {
20
+ opacity: 0;
21
+ animation: sparkle-magic 2s infinite ease-out;
22
+ }
23
+ .s1 { animation-delay: 0s; fill: #FFD700; }
24
+ .s2 { animation-delay: 0.5s; fill: #40C4FF; }
25
+ .s3 { animation-delay: 1s; fill: #B388FF; }
26
+ .s4 { animation-delay: 1.5s; fill: #FF8A80; }
27
+
28
+ @keyframes float-body {
29
+ 0%, 100% { transform: translateY(0); }
30
+ 50% { transform: translateY(-2px); }
31
+ }
32
+ @keyframes wave-wand {
33
+ 0%, 100% { transform: rotate(-20deg); }
34
+ 50% { transform: rotate(-120deg); }
35
+ }
36
+ @keyframes wave-magic {
37
+ 0%, 100% { transform: rotate(20deg); }
38
+ 50% { transform: rotate(120deg); }
39
+ }
40
+ @keyframes blink-magic {
41
+ 0%, 40% { transform: scaleY(0.1); }
42
+ 45%, 95% { transform: scaleY(1); }
43
+ 100% { transform: scaleY(0.1); }
44
+ }
45
+ @keyframes sparkle-magic {
46
+ 0% { transform: translate(14px, 4px) scale(0) rotate(0deg); opacity: 0; }
47
+ 20% { opacity: 1; }
48
+ 100% { transform: translate(14px, -15px) scale(1.5) rotate(180deg); opacity: 0; }
49
+ }
50
+ </style>
51
+ <g id="star">
52
+ <polygon points="0,-2 0.5,-0.5 2,0 0.5,0.5 0,2 -0.5,0.5 -2,0 -0.5,-0.5"/>
53
+ </g>
54
+ </defs>
55
+
56
+ <rect id="ground-shadow" x="3" y="15" width="9" height="1" fill="#000000" opacity="0.4"/>
57
+
58
+ <!-- Magic Stars -->
59
+ <g>
60
+ <use href="#star" class="magic-star s1"/>
61
+ <use href="#star" class="magic-star s2" transform="translate(-10, 0)"/>
62
+ <use href="#star" class="magic-star s3" transform="translate(5, -5)"/>
63
+ <use href="#star" class="magic-star s4" transform="translate(-5, -10)"/>
64
+ </g>
65
+
66
+ <g class="body-magic">
67
+ <g id="legs" fill="#DE886D">
68
+ <rect x="3" y="13" width="1" height="2"/>
69
+ <rect x="5" y="13" width="1" height="2"/>
70
+ <rect x="9" y="13" width="1" height="2"/>
71
+ <rect x="11" y="13" width="1" height="2"/>
72
+ </g>
73
+
74
+ <g id="body-color-group" fill="#DE886D">
75
+ <rect x="2" y="6" width="11" height="7"/>
76
+ <g class="arm-l-magic"><rect x="0" y="9" width="2" height="2"/></g>
77
+ </g>
78
+
79
+ <g fill="#000000" class="eyes-magic" transform-origin="7.5px 9px">
80
+ <rect x="4" y="8" width="1" height="2"/>
81
+ <rect x="10" y="8" width="1" height="2"/>
82
+ </g>
83
+
84
+ <!-- Wizard Hat -->
85
+ <g transform="translate(7.5, 6)">
86
+ <polygon points="-4,0 4,0 0,-6" fill="#673AB7"/>
87
+ <rect x="-5" y="0" width="10" height="1" fill="#512DA8"/>
88
+ <polygon points="0,-3 0.5,-2.5 1.5,-2.5 0.75,-1.75 1,-0.5 0,-1.25 -1,-0.5 -0.75,-1.75 -1.5,-2.5 -0.5,-2.5" fill="#FFC107"/>
89
+ </g>
90
+
91
+ <!-- Wand arm (on top of hat and eyes) -->
92
+ <g class="arm-wand" fill="#DE886D">
93
+ <rect x="13" y="9" width="2" height="2"/>
94
+ <rect x="13.5" y="4" width="1" height="6" fill="#8D6E63"/>
95
+ <rect x="13.5" y="4" width="1" height="1" fill="#FFD700"/>
96
+ </g>
97
+ </g>
98
+ </svg>
@@ -107,7 +107,7 @@
107
107
  ]
108
108
  }
109
109
  </script>
110
- <script type="module" crossorigin src="/assets/main-Cs8rK2ak.js"></script>
110
+ <script type="module" crossorigin src="/assets/main-wolIKQH9.js"></script>
111
111
  <link rel="stylesheet" crossorigin href="/assets/main-CJMr9zAk.css">
112
112
  </head>
113
113
  <body>
@@ -1,25 +1,22 @@
1
1
  # Token Tracker LLMs Index
2
2
 
3
- Token Tracker tracks token usage across AI coding agent clients (Codex, Claude Code, OpenCode, Gemini, OpenClaw).
3
+ Token Tracker tracks token usage across AI coding agent clients (Claude Code, Codex, Cursor, Kiro, Gemini, OpenCode, OpenClaw, Every Code).
4
4
 
5
5
  ## Canonical URL
6
- - [Homepage](https://www.tokentracker.cc/)
6
+ - [Homepage](https://token.rynn.me/)
7
7
 
8
8
  ## Priority URLs
9
- - [Homepage](https://www.tokentracker.cc/)
10
- - [Share dashboard view](https://www.tokentracker.cc/share)
11
- - [Sitemap](https://www.tokentracker.cc/sitemap.xml)
12
- - [RSS feed](https://www.tokentracker.cc/feed.xml)
9
+ - [Homepage](https://token.rynn.me/)
10
+ - [Leaderboard](https://token.rynn.me/leaderboard)
13
11
 
14
12
  ## Product
15
- - Install command: `npx --yes tokentracker init`
13
+ - Install command: `npx tokentracker-cli`
16
14
  - [NPM package](https://www.npmjs.com/package/tokentracker-cli)
17
- - [Source repository](https://github.com/mm7894215/tokentracker)
15
+ - [Source repository](https://github.com/mm7894215/TokenTracker)
18
16
 
19
17
  ## Policy and Discovery
20
- - [robots.txt](https://www.tokentracker.cc/robots.txt)
21
- - [llms.txt](https://www.tokentracker.cc/llms.txt)
22
- - Data principle: minimal data collection and auditable metrics.
18
+ - [llms.txt](https://token.rynn.me/llms.txt)
19
+ - Data principle: token counts only, never prompts or conversation content.
23
20
 
24
21
  ## Contact
25
- - [GitHub issues](https://github.com/mm7894215/tokentracker/issues)
22
+ - [GitHub issues](https://github.com/mm7894215/TokenTracker/issues)
@@ -51,7 +51,7 @@
51
51
  "description": "Shareable Token Tracker dashboard snapshot."
52
52
  }
53
53
  </script>
54
- <script type="module" crossorigin src="/assets/main-Cs8rK2ak.js"></script>
54
+ <script type="module" crossorigin src="/assets/main-wolIKQH9.js"></script>
55
55
  <link rel="stylesheet" crossorigin href="/assets/main-CJMr9zAk.css">
56
56
  </head>
57
57
  <body>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tokentracker-cli",
3
- "version": "0.5.9",
3
+ "version": "0.5.12",
4
4
  "description": "Token usage tracker for AI agent CLIs (Claude Code, Codex, Cursor, Kiro, Gemini, OpenCode, OpenClaw)",
5
5
  "main": "src/cli.js",
6
6
  "bin": {
@@ -26,6 +26,18 @@ async function cmdServe(argv) {
26
26
  }
27
27
  }
28
28
 
29
+ // 0.1 Ensure config.json baseUrl matches the canonical default
30
+ try {
31
+ const { DEFAULT_BASE_URL } = require("../lib/runtime-config");
32
+ const { readJson, writeJson } = require("../lib/fs");
33
+ const cfgPath = path.join(trackerDir, "config.json");
34
+ const cfg = await readJson(cfgPath);
35
+ if (cfg && cfg.baseUrl !== DEFAULT_BASE_URL) {
36
+ cfg.baseUrl = DEFAULT_BASE_URL;
37
+ await writeJson(cfgPath, cfg);
38
+ }
39
+ } catch { /* ignore */ }
40
+
29
41
  // 1. Optional sync
30
42
  if (opts.sync) {
31
43
  process.stdout.write("Syncing local data...\n");