vibe-coding-tracker 1.10.0__tar.gz → 1.12.0__tar.gz

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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: vibe-coding-tracker
3
- Version: 1.10.0
3
+ Version: 1.12.0
4
4
  Summary: Vibe Coding Tracker - AI coding assistant telemetry/usage parser, aggregate JSONL events into CodeAnalysis results
5
5
  Keywords: cli,ai,coding-assistant,telemetry,claude,codex,gemini,usage-tracker,analytics
6
6
  Author: Wei Lee
@@ -45,7 +45,7 @@ Description-Content-Type: text/markdown
45
45
 
46
46
  </div>
47
47
 
48
- **Track your AI coding costs in real-time.** Vibe Coding Tracker is a lightweight, high-performance CLI tool built in Rust that monitors and analyzes your Claude Code, Codex, Copilot, Gemini, OpenCode, and Cursor usage — with detailed cost breakdowns, token statistics, and code operation insights, all while keeping the memory footprint minimal.
48
+ **Track your AI coding costs in real-time.** Vibe Coding Tracker is a lightweight, high-performance CLI tool built in Rust that monitors and analyzes your Claude Code, Codex, Copilot, Gemini, OpenCode, Cursor, and Hermes usage — with detailed cost breakdowns, token statistics, and code operation insights, all while keeping the memory footprint minimal.
49
49
 
50
50
  [English](README.md) | [繁體中文](README.zh-TW.md) | [简体中文](README.zh-CN.md)
51
51
 
@@ -74,7 +74,7 @@ Choose your preferred view:
74
74
 
75
75
  ### Zero Configuration
76
76
 
77
- Automatically detects and processes logs from Claude Code, Codex, Copilot, Gemini, OpenCode, and Cursor. No setup required — just run and analyze. A `~/.vct/config.toml` is created with sensible defaults on first run if you ever want to tweak behavior (see [Configuration](#configuration)).
77
+ Automatically detects and processes logs from Claude Code, Codex, Copilot, Gemini, OpenCode, Cursor, and Hermes. No setup required — just run and analyze. A `~/.vct/config.toml` is created with sensible defaults on first run if you ever want to tweak behavior (see [Configuration](#configuration)).
78
78
 
79
79
  ### Rich Insights
80
80
 
@@ -88,15 +88,15 @@ Automatically detects and processes logs from Claude Code, Codex, Copilot, Gemin
88
88
 
89
89
  ## Key Features
90
90
 
91
- | Feature | Description |
92
- | --------------------- | ---------------------------------------------------------------------------- |
93
- | **Multi-Provider** | Claude Code, Codex, Copilot, Gemini, OpenCode, and Cursor — all in one place |
94
- | **Smart Pricing** | Fuzzy model matching + daily cache from LiteLLM |
95
- | **4 Display Modes** | Interactive TUI, static table, plain text, and JSON |
96
- | **Dual Analysis** | Token/cost stats (`usage`) + code operation stats (`analysis`) |
97
- | **Live Quota Panels** | Live remaining quota for Claude, Codex, Copilot, and Cursor |
98
- | **Ultra-Lightweight** | Under ~50 MB RSS in the TUI, streaming JSONL parse — built with Rust |
99
- | **Live Updates** | Auto-refreshing dashboard (every 10s) with change highlighting |
91
+ | Feature | Description |
92
+ | --------------------- | ------------------------------------------------------------------------------------ |
93
+ | **Multi-Provider** | Claude Code, Codex, Copilot, Gemini, OpenCode, Cursor, and Hermes — all in one place |
94
+ | **Smart Pricing** | Fuzzy model matching + daily cache from LiteLLM |
95
+ | **4 Display Modes** | Interactive TUI, static table, plain text, and JSON |
96
+ | **Dual Analysis** | Token/cost stats (`usage`) + code operation stats (`analysis`) |
97
+ | **Live Quota Panels** | Live remaining quota for Claude, Codex, Copilot, and Cursor |
98
+ | **Ultra-Lightweight** | Under ~50 MB RSS in the TUI, streaming JSONL parse — built with Rust |
99
+ | **Live Updates** | Auto-refreshing dashboard (every 10s) with change highlighting |
100
100
 
101
101
  ---
102
102
 
@@ -317,6 +317,7 @@ The tool automatically scans these directories:
317
317
  - `~/.gemini/tmp/<project_hash>/chats/*.jsonl` (Gemini CLI)
318
318
  - `~/.local/share/opencode/opencode.db` (OpenCode — SQLite database; honors `$XDG_DATA_HOME`)
319
319
  - `~/.cursor/chats/*/*/store.db` (Cursor — SQLite chat stores, used for `analysis` and a local `usage` estimate consistent with the other providers)
320
+ - `~/.hermes/state.db` (Hermes — SQLite database, honors `$HERMES_HOME`; `usage` only)
320
321
 
321
322
  ### Live Quota Panels
322
323
 
@@ -574,6 +575,13 @@ copilot = true
574
575
  gemini = true
575
576
  opencode = true
576
577
  cursor = true
578
+
579
+ [logging]
580
+ # Minimum level written to ~/.vct/logs/vct-YYYY-MM-DD.log.
581
+ # One of: "off" | "error" | "warn" | "info" | "debug" | "trace".
582
+ level = "warn"
583
+ # Days of daily log files to keep; older files are pruned on startup. 0 keeps every file.
584
+ retention_days = 7
577
585
  ```
578
586
 
579
587
  | Setting | Effect |
@@ -585,10 +593,15 @@ cursor = true
585
593
  | `usage.quota.refresh_interval` | Poll cadence for every live quota panel (seconds); higher is safer against a provider's rate limits. |
586
594
  | `analysis.refresh_interval` | Redraw cadence of the `analysis` dashboard (seconds). |
587
595
  | `providers.*` | Skip a provider entirely (no scan, no API) when `false` — handy if you don't use one. |
596
+ | `logging.level` | Minimum severity written to the log file (`off`..`trace`); never printed to the terminal. |
597
+ | `logging.retention_days` | Days of daily log files to keep; older `vct-*.log` are pruned on startup (`0` keeps all). |
588
598
 
589
599
  > [!NOTE]
590
600
  > Cursor `usage` is a **local estimate** from the chat stores, so it behaves like Claude Code / Codex / Copilot / Gemini (all computed from local session files) and needs no network. It undercounts Cursor's real spend, because much of it is billed under Cursor-internal model names the local data cannot price — treat Cursor cost as approximate.
591
601
 
602
+ > [!NOTE]
603
+ > vct writes diagnostics to `~/.vct/logs/vct-YYYY-MM-DD.log` (plain text, file only — never shown in the dashboard). It stays quiet when healthy (default level `warn`) and the file is created lazily, so a healthy run leaves nothing behind. When a quota fetch fails or a session is skipped, that is where the reason is recorded — bump `logging.level` to `debug` for the full detail.
604
+
592
605
  ### Managing the file
593
606
 
594
607
  ```bash
@@ -633,6 +646,7 @@ vct config migrate
633
646
 
634
647
  - **Beyond tokens**: Claude web-search tool calls (`server_tool_use.web_search_requests`) are billed per query on top of the token cost; every other model's per-query charge is $0.
635
648
  - **OpenCode**: a novel model name is priced from its tokens only on an **exact** LiteLLM match; with no exact match, vct trusts the assistant message's own stored cost instead of guessing from a loosely-similar name.
649
+ - **Hermes**: priced the same way as OpenCode — an **exact** LiteLLM match prices from tokens, otherwise vct uses Hermes's own stored cost.
636
650
  - **Cache is raw**: the daily cache stores the filtered upstream LiteLLM JSON (not a derived shape), so tiered / batch pricing stays available without re-fetching, and a small in-process LRU keeps repeated lookups cheap during a TUI refresh.
637
651
 
638
652
  ---
@@ -19,7 +19,7 @@
19
19
 
20
20
  </div>
21
21
 
22
- **Track your AI coding costs in real-time.** Vibe Coding Tracker is a lightweight, high-performance CLI tool built in Rust that monitors and analyzes your Claude Code, Codex, Copilot, Gemini, OpenCode, and Cursor usage — with detailed cost breakdowns, token statistics, and code operation insights, all while keeping the memory footprint minimal.
22
+ **Track your AI coding costs in real-time.** Vibe Coding Tracker is a lightweight, high-performance CLI tool built in Rust that monitors and analyzes your Claude Code, Codex, Copilot, Gemini, OpenCode, Cursor, and Hermes usage — with detailed cost breakdowns, token statistics, and code operation insights, all while keeping the memory footprint minimal.
23
23
 
24
24
  [English](README.md) | [繁體中文](README.zh-TW.md) | [简体中文](README.zh-CN.md)
25
25
 
@@ -48,7 +48,7 @@ Choose your preferred view:
48
48
 
49
49
  ### Zero Configuration
50
50
 
51
- Automatically detects and processes logs from Claude Code, Codex, Copilot, Gemini, OpenCode, and Cursor. No setup required — just run and analyze. A `~/.vct/config.toml` is created with sensible defaults on first run if you ever want to tweak behavior (see [Configuration](#configuration)).
51
+ Automatically detects and processes logs from Claude Code, Codex, Copilot, Gemini, OpenCode, Cursor, and Hermes. No setup required — just run and analyze. A `~/.vct/config.toml` is created with sensible defaults on first run if you ever want to tweak behavior (see [Configuration](#configuration)).
52
52
 
53
53
  ### Rich Insights
54
54
 
@@ -62,15 +62,15 @@ Automatically detects and processes logs from Claude Code, Codex, Copilot, Gemin
62
62
 
63
63
  ## Key Features
64
64
 
65
- | Feature | Description |
66
- | --------------------- | ---------------------------------------------------------------------------- |
67
- | **Multi-Provider** | Claude Code, Codex, Copilot, Gemini, OpenCode, and Cursor — all in one place |
68
- | **Smart Pricing** | Fuzzy model matching + daily cache from LiteLLM |
69
- | **4 Display Modes** | Interactive TUI, static table, plain text, and JSON |
70
- | **Dual Analysis** | Token/cost stats (`usage`) + code operation stats (`analysis`) |
71
- | **Live Quota Panels** | Live remaining quota for Claude, Codex, Copilot, and Cursor |
72
- | **Ultra-Lightweight** | Under ~50 MB RSS in the TUI, streaming JSONL parse — built with Rust |
73
- | **Live Updates** | Auto-refreshing dashboard (every 10s) with change highlighting |
65
+ | Feature | Description |
66
+ | --------------------- | ------------------------------------------------------------------------------------ |
67
+ | **Multi-Provider** | Claude Code, Codex, Copilot, Gemini, OpenCode, Cursor, and Hermes — all in one place |
68
+ | **Smart Pricing** | Fuzzy model matching + daily cache from LiteLLM |
69
+ | **4 Display Modes** | Interactive TUI, static table, plain text, and JSON |
70
+ | **Dual Analysis** | Token/cost stats (`usage`) + code operation stats (`analysis`) |
71
+ | **Live Quota Panels** | Live remaining quota for Claude, Codex, Copilot, and Cursor |
72
+ | **Ultra-Lightweight** | Under ~50 MB RSS in the TUI, streaming JSONL parse — built with Rust |
73
+ | **Live Updates** | Auto-refreshing dashboard (every 10s) with change highlighting |
74
74
 
75
75
  ---
76
76
 
@@ -291,6 +291,7 @@ The tool automatically scans these directories:
291
291
  - `~/.gemini/tmp/<project_hash>/chats/*.jsonl` (Gemini CLI)
292
292
  - `~/.local/share/opencode/opencode.db` (OpenCode — SQLite database; honors `$XDG_DATA_HOME`)
293
293
  - `~/.cursor/chats/*/*/store.db` (Cursor — SQLite chat stores, used for `analysis` and a local `usage` estimate consistent with the other providers)
294
+ - `~/.hermes/state.db` (Hermes — SQLite database, honors `$HERMES_HOME`; `usage` only)
294
295
 
295
296
  ### Live Quota Panels
296
297
 
@@ -548,6 +549,13 @@ copilot = true
548
549
  gemini = true
549
550
  opencode = true
550
551
  cursor = true
552
+
553
+ [logging]
554
+ # Minimum level written to ~/.vct/logs/vct-YYYY-MM-DD.log.
555
+ # One of: "off" | "error" | "warn" | "info" | "debug" | "trace".
556
+ level = "warn"
557
+ # Days of daily log files to keep; older files are pruned on startup. 0 keeps every file.
558
+ retention_days = 7
551
559
  ```
552
560
 
553
561
  | Setting | Effect |
@@ -559,10 +567,15 @@ cursor = true
559
567
  | `usage.quota.refresh_interval` | Poll cadence for every live quota panel (seconds); higher is safer against a provider's rate limits. |
560
568
  | `analysis.refresh_interval` | Redraw cadence of the `analysis` dashboard (seconds). |
561
569
  | `providers.*` | Skip a provider entirely (no scan, no API) when `false` — handy if you don't use one. |
570
+ | `logging.level` | Minimum severity written to the log file (`off`..`trace`); never printed to the terminal. |
571
+ | `logging.retention_days` | Days of daily log files to keep; older `vct-*.log` are pruned on startup (`0` keeps all). |
562
572
 
563
573
  > [!NOTE]
564
574
  > Cursor `usage` is a **local estimate** from the chat stores, so it behaves like Claude Code / Codex / Copilot / Gemini (all computed from local session files) and needs no network. It undercounts Cursor's real spend, because much of it is billed under Cursor-internal model names the local data cannot price — treat Cursor cost as approximate.
565
575
 
576
+ > [!NOTE]
577
+ > vct writes diagnostics to `~/.vct/logs/vct-YYYY-MM-DD.log` (plain text, file only — never shown in the dashboard). It stays quiet when healthy (default level `warn`) and the file is created lazily, so a healthy run leaves nothing behind. When a quota fetch fails or a session is skipped, that is where the reason is recorded — bump `logging.level` to `debug` for the full detail.
578
+
566
579
  ### Managing the file
567
580
 
568
581
  ```bash
@@ -607,6 +620,7 @@ vct config migrate
607
620
 
608
621
  - **Beyond tokens**: Claude web-search tool calls (`server_tool_use.web_search_requests`) are billed per query on top of the token cost; every other model's per-query charge is $0.
609
622
  - **OpenCode**: a novel model name is priced from its tokens only on an **exact** LiteLLM match; with no exact match, vct trusts the assistant message's own stored cost instead of guessing from a loosely-similar name.
623
+ - **Hermes**: priced the same way as OpenCode — an **exact** LiteLLM match prices from tokens, otherwise vct uses Hermes's own stored cost.
610
624
  - **Cache is raw**: the daily cache stores the filtered upstream LiteLLM JSON (not a derived shape), so tiered / batch pricing stays available without re-fetching, and a small in-process LRU keeps repeated lookups cheap during a TUI refresh.
611
625
 
612
626
  ---
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "vibe_coding_tracker"
3
- version = "1.10.0"
3
+ version = "1.12.0"
4
4
  description = "Vibe Coding Tracker - AI coding assistant telemetry/usage parser, aggregate JSONL events into CodeAnalysis results"
5
5
  authors = [
6
6
  { name = "Wei Lee", email = "mai@mai0313.com" }