@ipv9/tokentracker-cli 0.39.51 → 0.39.53

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 (44) hide show
  1. package/README.md +7 -14
  2. package/dashboard/dist/assets/{Card-B8V3fjn0.js → Card-BZkG7ExP.js} +1 -1
  3. package/dashboard/dist/assets/DashboardPage-BXs8ZVPT.js +60 -0
  4. package/dashboard/dist/assets/{IpCheckPage-CiTeykAr.js → IpCheckPage-Hm0zUwdf.js} +1 -1
  5. package/dashboard/dist/assets/LimitsPage-BxsnbmDo.js +2 -0
  6. package/dashboard/dist/assets/LocalOnlyNotice-BvwC1vCO.js +1 -0
  7. package/dashboard/dist/assets/PopoverPopup-HsE_7fXK.js +1 -0
  8. package/dashboard/dist/assets/Select-7_WyWhaS.js +1 -0
  9. package/dashboard/dist/assets/SettingsPage-DbJxd3N7.js +1 -0
  10. package/dashboard/dist/assets/SkillsPage-Dae3HfP-.js +1 -0
  11. package/dashboard/dist/assets/{WrappedPage-TYb3h53L.js → WrappedPage-DZU9PYF5.js} +1 -1
  12. package/dashboard/dist/assets/{format-RxRKEKOo.js → format-DtQGOz67.js} +1 -1
  13. package/dashboard/dist/assets/limitDisplay-B1ZUkTHM.js +1 -0
  14. package/dashboard/dist/assets/main-BBQHiOju.js +610 -0
  15. package/dashboard/dist/assets/main-C7rJ1TVR.css +1 -0
  16. package/dashboard/dist/assets/{mock-data-BSY76wog.js → mock-data-Ct1Wvcew.js} +1 -1
  17. package/dashboard/dist/assets/use-limits-display-prefs-CYoiCfEE.js +1 -0
  18. package/dashboard/dist/assets/useCurrency-DGkZG989.js +12 -0
  19. package/dashboard/dist/index.html +2 -18
  20. package/package.json +2 -4
  21. package/src/cli.js +1 -1
  22. package/src/commands/sync.js +4 -0
  23. package/src/lib/local-api.js +35 -10
  24. package/src/lib/pricing/curated-overrides.json +2 -0
  25. package/src/lib/pricing/seed-snapshot.json +1 -1
  26. package/src/lib/rollout.js +429 -27
  27. package/dashboard/dist/assets/DashboardPage-CY-J38sv.js +0 -60
  28. package/dashboard/dist/assets/FadeIn-CHDoW7U_.js +0 -1
  29. package/dashboard/dist/assets/LimitsPage-CeL9bJnV.js +0 -2
  30. package/dashboard/dist/assets/LocalOnlyNotice-Ci694JEz.js +0 -1
  31. package/dashboard/dist/assets/PopoverPopup-DuOdVhwr.js +0 -1
  32. package/dashboard/dist/assets/Select-CmEJ1f4r.js +0 -1
  33. package/dashboard/dist/assets/SelectItemText-DLwQC1NR.js +0 -12
  34. package/dashboard/dist/assets/SettingsPage-BY-B7Zy8.js +0 -1
  35. package/dashboard/dist/assets/SkillsPage-Cf3XZg8f.js +0 -1
  36. package/dashboard/dist/assets/WidgetsPage-DfOgT6--.js +0 -1
  37. package/dashboard/dist/assets/arrow-up-right-B03PmH0J.js +0 -1
  38. package/dashboard/dist/assets/download-B8nNpP2e.js +0 -1
  39. package/dashboard/dist/assets/limitDisplay-DD9iY3bZ.js +0 -1
  40. package/dashboard/dist/assets/main-BHmaQn5s.js +0 -700
  41. package/dashboard/dist/assets/main-t7dbBL4x.css +0 -1
  42. package/dashboard/dist/assets/use-limits-display-prefs-E_33VGNk.js +0 -1
  43. package/dashboard/dist/assets/use-native-settings-Jtj00HqH.js +0 -1
  44. package/dashboard/dist/assets/useCurrency-BjqazQG7.js +0 -1
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  ### Know exactly what you're spending on AI — across every CLI
6
6
 
7
- Auto-collect token usage from **20+ AI coding tools**, aggregate it locally, and read real cost trends in one dashboard. No account or API key required to start — just one command.
7
+ Auto-collect token usage from **20+ AI coding tools**, aggregate it locally, and inspect real cost trends in a browser dashboard served by a loopback CLI backend. No account, hosted service, or native app required — just one command.
8
8
 
9
9
  [![npm version](https://img.shields.io/npm/v/@ipv9/tokentracker-cli.svg?color=blue)](https://www.npmjs.com/package/@ipv9/tokentracker-cli)
10
10
  [![npm downloads](https://img.shields.io/npm/dm/@ipv9/tokentracker-cli.svg?color=brightgreen)](https://www.npmjs.com/package/@ipv9/tokentracker-cli)
@@ -39,7 +39,7 @@ If you only use one tool and never care about per-project cost, the provider's o
39
39
 
40
40
  ## ⚡ Quick Start
41
41
 
42
- > **Requires** Node.js **20+**.
42
+ > **Requires** Node.js **20.18.1+**.
43
43
 
44
44
  ```bash
45
45
  npx --yes @ipv9/tokentracker-cli
@@ -61,18 +61,11 @@ tokentracker doctor # health check
61
61
 
62
62
  ---
63
63
 
64
- ## 💻 Prefer an app? There's a desktop build
64
+ ## 🌐 Product scope
65
65
 
66
- If you'd rather not keep a terminal open, both native apps are on the [Releases page](https://github.com/pitimon/TokenTracker/releases/latest):
66
+ TokenTracker is developed and released as a **local web dashboard plus loopback CLI backend**. Open the printed `localhost` or `127.0.0.1` URL in a normal browser. There is no hosted/cloud dashboard, native macOS app, or native Windows app in the active product scope.
67
67
 
68
- | Platform | Download | What it adds |
69
- |---|---|---|
70
- | **macOS 12+** | `TokenTrackerBar.dmg` | A menu-bar app — live token count in the menu bar, launch at login, sync and update from a click, plus a desktop widget. |
71
- | **Windows** | `TokenTracker-Setup.exe` | The same dashboard as a standalone app. |
72
-
73
- <img src="https://raw.githubusercontent.com/pitimon/TokenTracker/main/docs/screenshots/menubar.gif" alt="TokenTracker in the macOS menu bar" width="420" />
74
-
75
- Both bundle their own Node runtime, so there is nothing else to install. They share the same local data as the CLI — run either, or both. The desktop builds are cut less often than the npm package, so the latest release tag usually trails the npm version badge above.
68
+ Historical Swift and C# source remains in the repository as an unsupported archive; it is not tested, versioned, built, or released.
76
69
 
77
70
  ---
78
71
 
@@ -81,7 +74,7 @@ Both bundle their own Node runtime, so there is nothing else to install. They sh
81
74
  - 🔒 **Your usage data never leaves your machine.** Usage metadata only — source, model, token and conversation counts, timestamps, and derived cost; never prompts, responses, message bodies, or private user-code paths. No account, no telemetry, no analytics, no phone-home. TokenTracker does make documented outbound calls *on your behalf* (for example model prices, provider authentication/quotas, and opt-in tools); none upload token-usage metadata.
82
75
  - 📊 **One calm web dashboard.** Your whole picture in the browser at a local URL, no login — light or dark, auto-refreshing while the tab is open. [What's on it ↓](#-the-dashboard)
83
76
  - 📈 **Quota at a glance, on every card.** Live plan-quota usage (e.g. 5h + weekly) as color-coded chips right on each provider's card — see how close you are to your limits without leaving the overview. Where the provider reports countable units you get the actual number rather than a percentage to convert in your head: GitHub Copilot reads `158/300` premium requests. Full windows + reset countdowns on the Limits page. Covers Claude, Codex, Cursor, Gemini, Kimi, Z.AI, Kiro, Copilot, and Antigravity.
84
- - 💰 **Cost you can trust — and a price tag when it can't.** 2,200+ models priced from [LiteLLM](https://github.com/BerriAI/litellm) (refreshed daily) with a bundled offline snapshot, so USD totals are right even without a network. A model too new to have a price is badged **pricing missing** rather than quietly counted as $0, and prices refresh in the background instead of waiting for a restart. Cross-provider records are de-duplicated to match each provider's own billing.
77
+ - 💰 **Cost you can trust — and a price tag when it can't.** 2,200+ models priced from [LiteLLM](https://github.com/BerriAI/litellm) (refreshed daily) with a bundled offline snapshot, so USD totals are right even without a network. When Hermes has already persisted an explicitly actual per-model amount, the local dashboard uses that amount instead of guessing from the alias; it remains gateway-calculated, not a provider invoice. A model too new to have a price is badged **pricing missing** rather than quietly counted as $0, and prices refresh in the background instead of waiting for a restart. Cross-provider records are de-duplicated to match each provider's own billing.
85
78
  - 🔌 **20+ tools, zero config.** Claude Code, Codex, Cursor, Gemini, Copilot, Antigravity, OpenCode, Kiro, Zed, Goose, and more — auto-detected, hooks auto-install on first run. Zero to dashboard in ~30 seconds.
86
79
  - 🧩 **Skills tab.** Syncs 250+ public skills across your tools.
87
80
 
@@ -196,7 +189,7 @@ Browser auto-open is opt-in: `tokentracker serve --open`. Background services an
196
189
 
197
190
  ## ⏰ Always-on, without a terminal (macOS)
198
191
 
199
- If you want the dashboard up all the time but don't want the desktop app, the repo ships a launchd installer. It registers two LaunchAgents — the dashboard on port `7680`, and a periodic background sync — both pinned to a specific published version:
192
+ For an always-on local web dashboard, the repo ships a launchd installer. It registers two LaunchAgents — the browser dashboard on port `7680`, and a periodic background sync — both pinned to a specific published npm version:
200
193
 
201
194
  ```bash
202
195
  git clone https://github.com/pitimon/TokenTracker.git
@@ -1 +1 @@
1
- import{j as r}from"./main-BHmaQn5s.js";function t({children:i,title:a,subtitle:o,className:s="",bodyClassName:d=""}){return r.jsxs("div",{className:`rounded-xl border border-oai-gray-200 dark:border-oai-gray-800 bg-white dark:bg-oai-gray-900 transition-colors duration-200 ${s}`,children:[(a||o)&&r.jsxs("div",{className:"px-5 py-4 border-b border-oai-gray-200 dark:border-oai-gray-800 transition-colors duration-200",children:[a&&r.jsx("h3",{className:"text-sm font-medium text-oai-gray-500 dark:text-oai-gray-300 uppercase tracking-wide transition-colors duration-200",children:a}),o&&r.jsx("p",{className:"text-sm text-oai-gray-500 dark:text-oai-gray-300 mt-1 transition-colors duration-200",children:o})]}),r.jsx("div",{className:`p-5 ${d}`,children:i})]})}export{t as C};
1
+ import{j as r}from"./main-BBQHiOju.js";function t({children:i,title:a,subtitle:o,className:s="",bodyClassName:d=""}){return r.jsxs("div",{className:`rounded-xl border border-oai-gray-200 dark:border-oai-gray-800 bg-white dark:bg-oai-gray-900 transition-colors duration-200 ${s}`,children:[(a||o)&&r.jsxs("div",{className:"px-5 py-4 border-b border-oai-gray-200 dark:border-oai-gray-800 transition-colors duration-200",children:[a&&r.jsx("h3",{className:"text-sm font-medium text-oai-gray-500 dark:text-oai-gray-300 uppercase tracking-wide transition-colors duration-200",children:a}),o&&r.jsx("p",{className:"text-sm text-oai-gray-500 dark:text-oai-gray-300 mt-1 transition-colors duration-200",children:o})]}),r.jsx("div",{className:`p-5 ${d}`,children:i})]})}export{t as C};