tokentracker-cli 0.5.73 → 0.5.75

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 (24) hide show
  1. package/dashboard/dist/assets/{Card-D_q1XGfK.js → Card-D-EuRzLE.js} +1 -1
  2. package/dashboard/dist/assets/DashboardPage-DP4h327m.js +12 -0
  3. package/dashboard/dist/assets/{FadeIn-ClpHby-T.js → FadeIn-Nqb2FeSu.js} +1 -1
  4. package/dashboard/dist/assets/{IpCheckPage-B5TpHE6G.js → IpCheckPage-DKErP77B.js} +1 -1
  5. package/dashboard/dist/assets/LeaderboardPage-D_DqH7v4.js +5 -0
  6. package/dashboard/dist/assets/{LeaderboardProfilePage-C8xexZ08.js → LeaderboardProfilePage-B4U6R6TW.js} +1 -1
  7. package/dashboard/dist/assets/{LimitsPage-CERWQyIU.js → LimitsPage-WP9IFHnS.js} +1 -1
  8. package/dashboard/dist/assets/ProviderIcon-CiAX7O9R.js +1 -0
  9. package/dashboard/dist/assets/SettingsPage-BzWrP1qX.js +1 -0
  10. package/dashboard/dist/assets/{WidgetsPage-Cmr2tbD7.js → WidgetsPage-BbV32pxZ.js} +1 -1
  11. package/dashboard/dist/assets/{download-M8e1PJC-.js → download-CXIEU-zL.js} +1 -1
  12. package/dashboard/dist/assets/{leaderboard-columns-Dcg9r7R2.js → leaderboard-columns-DIsoAppd.js} +1 -1
  13. package/dashboard/dist/assets/main-DRf20yyJ.css +1 -0
  14. package/dashboard/dist/assets/{main-D1VdJk4V.js → main-_yO2TZgj.js} +12 -3
  15. package/dashboard/dist/assets/{use-limits-display-prefs-CSj55sfK.js → use-limits-display-prefs-CogaUGYH.js} +1 -1
  16. package/dashboard/dist/assets/{use-usage-limits-BuWINUAm.js → use-usage-limits-Didh7hvY.js} +1 -1
  17. package/dashboard/dist/index.html +2 -2
  18. package/dashboard/dist/share.html +2 -2
  19. package/package.json +1 -1
  20. package/src/commands/serve.js +7 -2
  21. package/dashboard/dist/assets/DashboardPage-CuBSoNgI.js +0 -12
  22. package/dashboard/dist/assets/LeaderboardPage-BOrtGeIf.js +0 -5
  23. package/dashboard/dist/assets/SettingsPage-DUwt4x-H.js +0 -1
  24. package/dashboard/dist/assets/main-CNzfq4Ln.css +0 -1
@@ -1 +1 @@
1
- import{r as a}from"./main-D1VdJk4V.js";const d=["claude","codex","cursor","gemini","kiro","copilot","antigravity"],v={claude:"Claude",codex:"Codex",cursor:"Cursor",gemini:"Gemini",kiro:"Kiro",copilot:"GitHub Copilot",antigravity:"Antigravity"},k={claude:"/brand-logos/claude-code.svg",codex:"/brand-logos/codex.svg",cursor:"/brand-logos/cursor.svg",gemini:"/brand-logos/gemini.svg",kiro:"/brand-logos/kiro.svg",copilot:"/brand-logos/copilot.svg",antigravity:"/brand-logos/antigravity.svg"},l="tt.limits.providerOrder",g="tt.limits.providerVisibility";function y(){if(typeof window>"u")return[...d];try{const r=window.localStorage.getItem(l);if(!r)return[...d];const s=JSON.parse(r);if(!Array.isArray(s))return[...d];const n=s.filter(c=>d.includes(c));for(const c of d)n.includes(c)||n.push(c);return n}catch{return[...d]}}function m(){const r=Object.fromEntries(d.map(s=>[s,!0]));if(typeof window>"u")return r;try{const s=window.localStorage.getItem(g);if(!s)return r;const n=JSON.parse(s);if(!n||typeof n!="object")return r;const c={...r};for(const u of d)typeof n[u]=="boolean"&&(c[u]=n[u]);return c}catch{return r}}function C(){const[r,s]=a.useState(y),[n,c]=a.useState(m);a.useEffect(()=>{if(!(typeof window>"u"))try{window.localStorage.setItem(l,JSON.stringify(r))}catch{}},[r]),a.useEffect(()=>{if(!(typeof window>"u"))try{window.localStorage.setItem(g,JSON.stringify(n))}catch{}},[n]),a.useEffect(()=>{if(typeof window>"u")return;const o=t=>{t.key===l&&s(y()),t.key===g&&c(m())};return window.addEventListener("storage",o),()=>window.removeEventListener("storage",o)},[]);const u=a.useCallback(o=>{c(t=>({...t,[o]:!t[o]}))},[]),b=a.useCallback(o=>{s(t=>{const e=t.indexOf(o);if(e<=0)return t;const i=[...t];return[i[e-1],i[e]]=[i[e],i[e-1]],i})},[]),p=a.useCallback(o=>{s(t=>{const e=t.indexOf(o);if(e<0||e>=t.length-1)return t;const i=[...t];return[i[e],i[e+1]]=[i[e+1],i[e]],i})},[]),O=a.useCallback((o,t)=>{o!==t&&s(e=>{const i=e.indexOf(o),w=e.indexOf(t);if(i<0||w<0)return e;const f=[...e],[E]=f.splice(i,1);return f.splice(w,0,E),f})},[]),x=a.useCallback(()=>{s([...d]),c(Object.fromEntries(d.map(o=>[o,!0])))},[]),I=a.useMemo(()=>r.filter(o=>n[o]!==!1),[r,n]);return{order:r,visibility:n,visibleOrdered:I,toggle:u,moveUp:b,moveDown:p,moveToward:O,reset:x}}export{k as L,v as a,C as u};
1
+ import{r as a}from"./main-_yO2TZgj.js";const d=["claude","codex","cursor","gemini","kiro","copilot","antigravity"],v={claude:"Claude",codex:"Codex",cursor:"Cursor",gemini:"Gemini",kiro:"Kiro",copilot:"GitHub Copilot",antigravity:"Antigravity"},k={claude:"/brand-logos/claude-code.svg",codex:"/brand-logos/codex.svg",cursor:"/brand-logos/cursor.svg",gemini:"/brand-logos/gemini.svg",kiro:"/brand-logos/kiro.svg",copilot:"/brand-logos/copilot.svg",antigravity:"/brand-logos/antigravity.svg"},l="tt.limits.providerOrder",g="tt.limits.providerVisibility";function y(){if(typeof window>"u")return[...d];try{const r=window.localStorage.getItem(l);if(!r)return[...d];const s=JSON.parse(r);if(!Array.isArray(s))return[...d];const n=s.filter(c=>d.includes(c));for(const c of d)n.includes(c)||n.push(c);return n}catch{return[...d]}}function m(){const r=Object.fromEntries(d.map(s=>[s,!0]));if(typeof window>"u")return r;try{const s=window.localStorage.getItem(g);if(!s)return r;const n=JSON.parse(s);if(!n||typeof n!="object")return r;const c={...r};for(const u of d)typeof n[u]=="boolean"&&(c[u]=n[u]);return c}catch{return r}}function C(){const[r,s]=a.useState(y),[n,c]=a.useState(m);a.useEffect(()=>{if(!(typeof window>"u"))try{window.localStorage.setItem(l,JSON.stringify(r))}catch{}},[r]),a.useEffect(()=>{if(!(typeof window>"u"))try{window.localStorage.setItem(g,JSON.stringify(n))}catch{}},[n]),a.useEffect(()=>{if(typeof window>"u")return;const o=t=>{t.key===l&&s(y()),t.key===g&&c(m())};return window.addEventListener("storage",o),()=>window.removeEventListener("storage",o)},[]);const u=a.useCallback(o=>{c(t=>({...t,[o]:!t[o]}))},[]),b=a.useCallback(o=>{s(t=>{const e=t.indexOf(o);if(e<=0)return t;const i=[...t];return[i[e-1],i[e]]=[i[e],i[e-1]],i})},[]),p=a.useCallback(o=>{s(t=>{const e=t.indexOf(o);if(e<0||e>=t.length-1)return t;const i=[...t];return[i[e],i[e+1]]=[i[e+1],i[e]],i})},[]),O=a.useCallback((o,t)=>{o!==t&&s(e=>{const i=e.indexOf(o),w=e.indexOf(t);if(i<0||w<0)return e;const f=[...e],[E]=f.splice(i,1);return f.splice(w,0,E),f})},[]),x=a.useCallback(()=>{s([...d]),c(Object.fromEntries(d.map(o=>[o,!0])))},[]),I=a.useMemo(()=>r.filter(o=>n[o]!==!1),[r,n]);return{order:r,visibility:n,visibleOrdered:I,toggle:u,moveUp:b,moveDown:p,moveToward:O,reset:x}}export{k as L,v as a,C as u};
@@ -1 +1 @@
1
- import{r,aM as l}from"./main-D1VdJk4V.js";function y(i){const[o,a]=r.useState(null),[u,s]=r.useState(null),[c,f]=r.useState(!0),n=!!i?.initialRefresh,g=r.useCallback(async()=>{try{const e=await l({refresh:!0});a(e&&typeof e=="object"?e:null),s(null)}catch(e){s(e?.message||String(e))}},[]);return r.useEffect(()=>{let e=!1;return(async()=>{try{const t=await l(n?{refresh:!0}:{});if(e)return;a(t&&typeof t=="object"?t:null),s(null)}catch(t){if(e)return;s(t?.message||String(t))}finally{e||f(!1)}})(),()=>{e=!0}},[n]),{data:o,error:u,isLoading:c,refresh:g}}export{y as u};
1
+ import{r,aM as l}from"./main-_yO2TZgj.js";function y(i){const[o,a]=r.useState(null),[u,s]=r.useState(null),[c,f]=r.useState(!0),n=!!i?.initialRefresh,g=r.useCallback(async()=>{try{const e=await l({refresh:!0});a(e&&typeof e=="object"?e:null),s(null)}catch(e){s(e?.message||String(e))}},[]);return r.useEffect(()=>{let e=!1;return(async()=>{try{const t=await l(n?{refresh:!0}:{});if(e)return;a(t&&typeof t=="object"?t:null),s(null)}catch(t){if(e)return;s(t?.message||String(t))}finally{e||f(!1)}})(),()=>{e=!0}},[n]),{data:o,error:u,isLoading:c,refresh:g}}export{y as u};
@@ -135,8 +135,8 @@
135
135
  ]
136
136
  }
137
137
  </script>
138
- <script type="module" crossorigin src="/assets/main-D1VdJk4V.js"></script>
139
- <link rel="stylesheet" crossorigin href="/assets/main-CNzfq4Ln.css">
138
+ <script type="module" crossorigin src="/assets/main-_yO2TZgj.js"></script>
139
+ <link rel="stylesheet" crossorigin href="/assets/main-DRf20yyJ.css">
140
140
  </head>
141
141
  <body>
142
142
  <main class="aeo-seed-content" aria-label="Token Tracker AI-readable summary">
@@ -51,8 +51,8 @@
51
51
  "description": "Shareable Token Tracker dashboard snapshot."
52
52
  }
53
53
  </script>
54
- <script type="module" crossorigin src="/assets/main-D1VdJk4V.js"></script>
55
- <link rel="stylesheet" crossorigin href="/assets/main-CNzfq4Ln.css">
54
+ <script type="module" crossorigin src="/assets/main-_yO2TZgj.js"></script>
55
+ <link rel="stylesheet" crossorigin href="/assets/main-DRf20yyJ.css">
56
56
  </head>
57
57
  <body>
58
58
  <main class="aeo-seed-content" aria-label="Token Tracker share page summary">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tokentracker-cli",
3
- "version": "0.5.73",
3
+ "version": "0.5.75",
4
4
  "description": "Token usage tracker for AI agent CLIs (Claude Code, Codex, Cursor, Kiro, Gemini, OpenCode, OpenClaw, Hermes, GitHub Copilot)",
5
5
  "main": "src/cli.js",
6
6
  "bin": {
@@ -10,6 +10,11 @@ const { serveStaticFile } = require("../lib/static-server");
10
10
  const { openInBrowser } = require("../lib/browser-auth");
11
11
 
12
12
  const DEFAULT_PORT = 7680;
13
+ const NPM_PACKAGE_NAME = "tokentracker-cli";
14
+
15
+ function buildPortInUseHint(port) {
16
+ return `Port ${port} is still in use after cleanup. Try: npx ${NPM_PACKAGE_NAME} serve --port ${port + 1}\n`;
17
+ }
13
18
 
14
19
  async function cmdServe(argv) {
15
20
  const opts = parseArgs(argv);
@@ -133,7 +138,7 @@ async function cmdServe(argv) {
133
138
 
134
139
  server.on("error", (e) => {
135
140
  if (e.code === "EADDRINUSE") {
136
- process.stderr.write(`Port ${port} is still in use after cleanup. Try: npx tokentracker serve --port ${port + 1}\n`);
141
+ process.stderr.write(buildPortInUseHint(port));
137
142
  } else {
138
143
  process.stderr.write(`Server error: ${e.message}\n`);
139
144
  }
@@ -221,4 +226,4 @@ function parseArgs(argv) {
221
226
  return opts;
222
227
  }
223
228
 
224
- module.exports = { cmdServe };
229
+ module.exports = { cmdServe, buildPortInUseHint, NPM_PACKAGE_NAME };