vibe-coding-tracker 1.7.1__tar.gz → 1.8.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.7.1
3
+ Version: 1.8.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
@@ -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.
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)).
78
78
 
79
79
  ### Rich Insights
80
80
 
@@ -175,6 +175,7 @@ Commands:
175
175
  version Display version information
176
176
  update Update to the latest version from GitHub releases
177
177
  fetch Fetch a provider's raw quota/usage API response
178
+ config Show or edit the persistent settings file (~/.vct/config.toml)
178
179
  help Print this message or the help of the given subcommand(s)
179
180
  ```
180
181
 
@@ -237,7 +238,7 @@ vct usage --table --merge-providers
237
238
  > Model rows are sorted by cost in ascending order, so the highest-spending model is listed last (right above the `TOTAL` row in `--table`). This applies to the interactive dashboard, `--table`, and `--text` output; `--json` preserves the same order. The interactive dashboard also hides models with zero usage in the selected range.
238
239
 
239
240
  > [!TIP]
240
- > The same model can show up as several rows when it is routed under different provider prefixes (`openai/gpt-5.5`, `azure/gpt-5.5`, plain `gpt-5.5`). `--merge-providers` collapses rows that share the base name after the first `/` (versions like `gpt-5.5` vs `gpt-5.4` stay separate) and sums their already-priced cost. In the interactive dashboard, press `m` to toggle it live; `--merge-providers` opens the dashboard already merged. `--json` is left as the raw per-model export.
241
+ > The same model can show up as several rows when it is routed under different provider prefixes (`openai/gpt-5.5`, `azure/gpt-5.5`, plain `gpt-5.5`). `--merge-providers` collapses rows that share the base name after the first `/` (versions like `gpt-5.5` vs `gpt-5.4` stay separate) and sums their already-priced cost. In the interactive dashboard, press `m` to toggle it live (the choice is saved to `~/.vct/config.toml`, so the next launch remembers it); `--merge-providers` opens the dashboard already merged. `--json` is left as the raw per-model export.
241
242
 
242
243
  ### Preview: Interactive Dashboard (`vct usage`)
243
244
 
@@ -258,7 +259,7 @@ vct usage --table --merge-providers
258
259
  ┌─────────────────────────────────────────────────────────────────────────────────────────────┐
259
260
  │ Total Cost: $79.33 | Total Tokens: 49.3M | Models: 3 | Memory: 42.8 MB │
260
261
  └─────────────────────────────────────────────────────────────────────────────────────────────┘
261
- ↑/↓ scroll PgUp/PgDn page g/G top/end m merge r refresh q quit | ★ github.com/Mai0313/VibeCodingTracker
262
+ ↑/↓ scroll m merge r refresh q quit | ★ github.com/Mai0313/VibeCodingTracker
262
263
  ```
263
264
 
264
265
  ### Preview: Table & JSON (`vct usage`)
@@ -315,11 +316,11 @@ The tool automatically scans these directories:
315
316
  - `~/.copilot/session-state/<sessionId>/events.jsonl` (Copilot CLI)
316
317
  - `~/.gemini/tmp/<project_hash>/chats/*.jsonl` (Gemini CLI)
317
318
  - `~/.local/share/opencode/opencode.db` (OpenCode — SQLite database; honors `$XDG_DATA_HOME`)
318
- - `~/.cursor/chats/*/*/store.db` (Cursor — SQLite chat stores, for `analysis`) and Cursor's dashboard usage API (for `usage` tokens + cost, via the local session token; approximated from local context data when offline)
319
+ - `~/.cursor/chats/*/*/store.db` (Cursor — SQLite chat stores, used for `analysis` and a local `usage` estimate consistent with the other providers)
319
320
 
320
321
  ### Live Quota Panels
321
322
 
322
- `vct usage` shows **live remaining quota for Claude Code, Codex, GitHub Copilot, and Cursor right in the dashboard — with zero setup.** No status-line hook, no config file: vct reads each provider's own credentials, calls its usage API on a background thread, and keeps the panels current while you work.
323
+ `vct usage` shows **live remaining quota for Claude Code, Codex, GitHub Copilot, and Cursor right in the dashboard — with zero setup.** No status-line hook, no credentials to enter: vct reads each provider's own credentials, calls its usage API on a background thread, and keeps the panels current while you work. (Prefer a quieter dashboard? Trim `quota_panels` in [`config.toml`](#configuration), or set it to `[]` to hide the band.)
323
324
 
324
325
  ```
325
326
  ┌ Claude ─────────────────┐┌ Codex ──────────────────┐┌ Copilot ────────────────┐┌ Cursor ─────────────────┐
@@ -409,7 +410,7 @@ vct analysis --output today.json --daily
409
410
  ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
410
411
  │ Total Lines: 16.1K | Total Tools: 619 | Models: 3 | Memory: 41.2 MB │
411
412
  └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
412
- ↑/↓ scroll PgUp/PgDn page g/G top/end r refresh q quit | ★ github.com/Mai0313/VibeCodingTracker
413
+ ↑/↓ scroll r refresh q quit | ★ github.com/Mai0313/VibeCodingTracker
413
414
  ```
414
415
 
415
416
  ### Preview: Table & JSON (`vct analysis`)
@@ -534,6 +535,68 @@ vct fetch copilot --table
534
535
 
535
536
  ---
536
537
 
538
+ ## Configuration
539
+
540
+ vct keeps its user settings in `~/.vct/config.toml`. The file is **created with defaults on first run**, so you never have to write it by hand — edit it only when you want to change a default.
541
+
542
+ ```toml
543
+ [general]
544
+ # Default time range when no --daily/--weekly/--monthly/--all flag is given.
545
+ # one of: "daily" | "weekly" | "monthly" | "all"
546
+ default_time_range = "all"
547
+
548
+ [usage]
549
+ # Start the usage dashboard with models merged across provider prefixes.
550
+ # Toggled live with `m`; the last state is saved back here.
551
+ merge_models = false
552
+ # Which live quota panels to show in the usage TUI. Remove a name to hide that
553
+ # panel; use an empty list ([]) to hide the whole band.
554
+ quota_panels = ["claude", "codex", "copilot", "cursor"]
555
+ # Seconds between automatic refreshes of the usage TUI (minimum 1).
556
+ refresh_interval_secs = 10
557
+
558
+ [analysis]
559
+ # Seconds between automatic refreshes of the analysis TUI (minimum 1).
560
+ refresh_interval_secs = 10
561
+
562
+ [providers]
563
+ # Include each provider's sessions in usage / analysis. Set a provider to false
564
+ # to skip it entirely (no directory scan, no API).
565
+ claude = true
566
+ codex = true
567
+ copilot = true
568
+ gemini = true
569
+ opencode = true
570
+ cursor = true
571
+ ```
572
+
573
+ | Setting | Effect |
574
+ | -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
575
+ | `general.default_time_range` | Period used when you pass no `--daily/--weekly/--monthly/--all`. An explicit flag always wins. |
576
+ | `usage.merge_models` | Seeds the dashboard merged; the `m` toggle saves your last choice back here. `--merge-providers` forces on. |
577
+ | `usage.quota_panels` | Which quota panels to show (`claude` / `codex` / `copilot` / `cursor`); drop a name to hide it, `[]` to hide the whole band. |
578
+ | `usage.refresh_interval_secs` | Auto-refresh cadence of the `usage` dashboard (seconds). |
579
+ | `analysis.refresh_interval_secs` | Auto-refresh cadence of the `analysis` dashboard (seconds). |
580
+ | `providers.*` | Skip a provider entirely (no scan, no API) when `false` — handy if you don't use one. |
581
+
582
+ > [!NOTE]
583
+ > 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.
584
+
585
+ ### Managing the file
586
+
587
+ ```bash
588
+ # Print the config file path
589
+ vct config path
590
+
591
+ # Print the current settings
592
+ vct config show
593
+
594
+ # Open the file in $VISUAL / $EDITOR (falls back to vi / notepad)
595
+ vct config edit
596
+ ```
597
+
598
+ ---
599
+
537
600
  ## Smart Pricing System
538
601
 
539
602
  ### How It Works
@@ -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.
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)).
52
52
 
53
53
  ### Rich Insights
54
54
 
@@ -149,6 +149,7 @@ Commands:
149
149
  version Display version information
150
150
  update Update to the latest version from GitHub releases
151
151
  fetch Fetch a provider's raw quota/usage API response
152
+ config Show or edit the persistent settings file (~/.vct/config.toml)
152
153
  help Print this message or the help of the given subcommand(s)
153
154
  ```
154
155
 
@@ -211,7 +212,7 @@ vct usage --table --merge-providers
211
212
  > Model rows are sorted by cost in ascending order, so the highest-spending model is listed last (right above the `TOTAL` row in `--table`). This applies to the interactive dashboard, `--table`, and `--text` output; `--json` preserves the same order. The interactive dashboard also hides models with zero usage in the selected range.
212
213
 
213
214
  > [!TIP]
214
- > The same model can show up as several rows when it is routed under different provider prefixes (`openai/gpt-5.5`, `azure/gpt-5.5`, plain `gpt-5.5`). `--merge-providers` collapses rows that share the base name after the first `/` (versions like `gpt-5.5` vs `gpt-5.4` stay separate) and sums their already-priced cost. In the interactive dashboard, press `m` to toggle it live; `--merge-providers` opens the dashboard already merged. `--json` is left as the raw per-model export.
215
+ > The same model can show up as several rows when it is routed under different provider prefixes (`openai/gpt-5.5`, `azure/gpt-5.5`, plain `gpt-5.5`). `--merge-providers` collapses rows that share the base name after the first `/` (versions like `gpt-5.5` vs `gpt-5.4` stay separate) and sums their already-priced cost. In the interactive dashboard, press `m` to toggle it live (the choice is saved to `~/.vct/config.toml`, so the next launch remembers it); `--merge-providers` opens the dashboard already merged. `--json` is left as the raw per-model export.
215
216
 
216
217
  ### Preview: Interactive Dashboard (`vct usage`)
217
218
 
@@ -232,7 +233,7 @@ vct usage --table --merge-providers
232
233
  ┌─────────────────────────────────────────────────────────────────────────────────────────────┐
233
234
  │ Total Cost: $79.33 | Total Tokens: 49.3M | Models: 3 | Memory: 42.8 MB │
234
235
  └─────────────────────────────────────────────────────────────────────────────────────────────┘
235
- ↑/↓ scroll PgUp/PgDn page g/G top/end m merge r refresh q quit | ★ github.com/Mai0313/VibeCodingTracker
236
+ ↑/↓ scroll m merge r refresh q quit | ★ github.com/Mai0313/VibeCodingTracker
236
237
  ```
237
238
 
238
239
  ### Preview: Table & JSON (`vct usage`)
@@ -289,11 +290,11 @@ The tool automatically scans these directories:
289
290
  - `~/.copilot/session-state/<sessionId>/events.jsonl` (Copilot CLI)
290
291
  - `~/.gemini/tmp/<project_hash>/chats/*.jsonl` (Gemini CLI)
291
292
  - `~/.local/share/opencode/opencode.db` (OpenCode — SQLite database; honors `$XDG_DATA_HOME`)
292
- - `~/.cursor/chats/*/*/store.db` (Cursor — SQLite chat stores, for `analysis`) and Cursor's dashboard usage API (for `usage` tokens + cost, via the local session token; approximated from local context data when offline)
293
+ - `~/.cursor/chats/*/*/store.db` (Cursor — SQLite chat stores, used for `analysis` and a local `usage` estimate consistent with the other providers)
293
294
 
294
295
  ### Live Quota Panels
295
296
 
296
- `vct usage` shows **live remaining quota for Claude Code, Codex, GitHub Copilot, and Cursor right in the dashboard — with zero setup.** No status-line hook, no config file: vct reads each provider's own credentials, calls its usage API on a background thread, and keeps the panels current while you work.
297
+ `vct usage` shows **live remaining quota for Claude Code, Codex, GitHub Copilot, and Cursor right in the dashboard — with zero setup.** No status-line hook, no credentials to enter: vct reads each provider's own credentials, calls its usage API on a background thread, and keeps the panels current while you work. (Prefer a quieter dashboard? Trim `quota_panels` in [`config.toml`](#configuration), or set it to `[]` to hide the band.)
297
298
 
298
299
  ```
299
300
  ┌ Claude ─────────────────┐┌ Codex ──────────────────┐┌ Copilot ────────────────┐┌ Cursor ─────────────────┐
@@ -383,7 +384,7 @@ vct analysis --output today.json --daily
383
384
  ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
384
385
  │ Total Lines: 16.1K | Total Tools: 619 | Models: 3 | Memory: 41.2 MB │
385
386
  └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
386
- ↑/↓ scroll PgUp/PgDn page g/G top/end r refresh q quit | ★ github.com/Mai0313/VibeCodingTracker
387
+ ↑/↓ scroll r refresh q quit | ★ github.com/Mai0313/VibeCodingTracker
387
388
  ```
388
389
 
389
390
  ### Preview: Table & JSON (`vct analysis`)
@@ -508,6 +509,68 @@ vct fetch copilot --table
508
509
 
509
510
  ---
510
511
 
512
+ ## Configuration
513
+
514
+ vct keeps its user settings in `~/.vct/config.toml`. The file is **created with defaults on first run**, so you never have to write it by hand — edit it only when you want to change a default.
515
+
516
+ ```toml
517
+ [general]
518
+ # Default time range when no --daily/--weekly/--monthly/--all flag is given.
519
+ # one of: "daily" | "weekly" | "monthly" | "all"
520
+ default_time_range = "all"
521
+
522
+ [usage]
523
+ # Start the usage dashboard with models merged across provider prefixes.
524
+ # Toggled live with `m`; the last state is saved back here.
525
+ merge_models = false
526
+ # Which live quota panels to show in the usage TUI. Remove a name to hide that
527
+ # panel; use an empty list ([]) to hide the whole band.
528
+ quota_panels = ["claude", "codex", "copilot", "cursor"]
529
+ # Seconds between automatic refreshes of the usage TUI (minimum 1).
530
+ refresh_interval_secs = 10
531
+
532
+ [analysis]
533
+ # Seconds between automatic refreshes of the analysis TUI (minimum 1).
534
+ refresh_interval_secs = 10
535
+
536
+ [providers]
537
+ # Include each provider's sessions in usage / analysis. Set a provider to false
538
+ # to skip it entirely (no directory scan, no API).
539
+ claude = true
540
+ codex = true
541
+ copilot = true
542
+ gemini = true
543
+ opencode = true
544
+ cursor = true
545
+ ```
546
+
547
+ | Setting | Effect |
548
+ | -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
549
+ | `general.default_time_range` | Period used when you pass no `--daily/--weekly/--monthly/--all`. An explicit flag always wins. |
550
+ | `usage.merge_models` | Seeds the dashboard merged; the `m` toggle saves your last choice back here. `--merge-providers` forces on. |
551
+ | `usage.quota_panels` | Which quota panels to show (`claude` / `codex` / `copilot` / `cursor`); drop a name to hide it, `[]` to hide the whole band. |
552
+ | `usage.refresh_interval_secs` | Auto-refresh cadence of the `usage` dashboard (seconds). |
553
+ | `analysis.refresh_interval_secs` | Auto-refresh cadence of the `analysis` dashboard (seconds). |
554
+ | `providers.*` | Skip a provider entirely (no scan, no API) when `false` — handy if you don't use one. |
555
+
556
+ > [!NOTE]
557
+ > 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.
558
+
559
+ ### Managing the file
560
+
561
+ ```bash
562
+ # Print the config file path
563
+ vct config path
564
+
565
+ # Print the current settings
566
+ vct config show
567
+
568
+ # Open the file in $VISUAL / $EDITOR (falls back to vi / notepad)
569
+ vct config edit
570
+ ```
571
+
572
+ ---
573
+
511
574
  ## Smart Pricing System
512
575
 
513
576
  ### How It Works
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "vibe_coding_tracker"
3
- version = "1.7.1"
3
+ version = "1.8.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" }