vibestats 1.0.2 → 1.0.4
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.
- package/README.md +54 -35
- package/dist/index.js +3 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,79 +1,98 @@
|
|
|
1
|
-
#
|
|
1
|
+
# vibestats
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
AI coding stats CLI for **Claude Code** and **OpenAI Codex**. Track your usage and generate annual "Spotify Wrapped" style summaries.
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
npm install -g
|
|
8
|
+
npm install -g vibestats
|
|
9
|
+
# or run directly
|
|
10
|
+
npx vibestats
|
|
9
11
|
```
|
|
10
12
|
|
|
11
13
|
## Usage
|
|
12
14
|
|
|
13
15
|
```bash
|
|
14
|
-
|
|
16
|
+
# Usage stats (default)
|
|
17
|
+
vibestats # Daily usage table
|
|
18
|
+
vibestats --monthly # Monthly aggregation
|
|
19
|
+
vibestats --model # Aggregate by model
|
|
20
|
+
vibestats --total # Show only totals
|
|
21
|
+
|
|
22
|
+
# Wrapped summary
|
|
23
|
+
vibestats --wrapped # Annual wrapped summary
|
|
15
24
|
```
|
|
16
25
|
|
|
17
|
-
|
|
26
|
+
## CLI Flags
|
|
18
27
|
|
|
19
|
-
|
|
20
|
-
- Longest and current coding streaks
|
|
21
|
-
- Peak coding hour and favorite day
|
|
22
|
-
- Model usage breakdown
|
|
23
|
-
- Words generated estimate
|
|
24
|
-
- Shareable URL to view your wrapped online
|
|
28
|
+
### Usage Mode (default)
|
|
25
29
|
|
|
26
|
-
|
|
30
|
+
| Flag | Description |
|
|
31
|
+
|------|-------------|
|
|
32
|
+
| `--monthly` | Aggregate by month |
|
|
33
|
+
| `--model` | Aggregate by model |
|
|
34
|
+
| `--total` | Show only totals |
|
|
35
|
+
| `--since YYYY-MM-DD` | Filter from date |
|
|
36
|
+
| `--until YYYY-MM-DD` | Filter to date |
|
|
37
|
+
| `--compact`, `-c` | Compact table (hide cache columns) |
|
|
38
|
+
| `--json` | Output raw JSON |
|
|
39
|
+
|
|
40
|
+
### Wrapped Mode
|
|
27
41
|
|
|
28
42
|
| Flag | Description |
|
|
29
43
|
|------|-------------|
|
|
44
|
+
| `--wrapped` | Generate wrapped summary |
|
|
30
45
|
| `--json` | Output raw JSON stats |
|
|
31
46
|
| `--quiet`, `-q` | Only output the shareable URL |
|
|
32
|
-
| `--
|
|
33
|
-
| `--init` | Create a default config file |
|
|
34
|
-
| `--config` | Show current config location and values |
|
|
47
|
+
| `--no-short` | Disable shortlink generation |
|
|
35
48
|
|
|
36
|
-
|
|
49
|
+
### Data Source
|
|
37
50
|
|
|
38
|
-
|
|
51
|
+
| Flag | Description |
|
|
52
|
+
|------|-------------|
|
|
53
|
+
| `--codex` | OpenAI Codex only |
|
|
54
|
+
| `--combined` | Claude + Codex combined |
|
|
55
|
+
|
|
56
|
+
### Config
|
|
57
|
+
|
|
58
|
+
| Flag | Description |
|
|
59
|
+
|------|-------------|
|
|
60
|
+
| `--init` | Create config file |
|
|
61
|
+
| `--config` | Show current config |
|
|
62
|
+
| `--url <url>` | Custom base URL |
|
|
63
|
+
|
|
64
|
+
## Config File
|
|
39
65
|
|
|
40
66
|
```bash
|
|
41
|
-
|
|
67
|
+
vibestats --init
|
|
42
68
|
```
|
|
43
69
|
|
|
44
|
-
|
|
70
|
+
Creates `~/.vibestats.json`:
|
|
45
71
|
|
|
46
72
|
```json
|
|
47
73
|
{
|
|
48
|
-
"baseUrl": "https://
|
|
74
|
+
"baseUrl": "https://vibestats.wolfai.dev",
|
|
49
75
|
"outputFormat": "normal",
|
|
50
|
-
"theme": {
|
|
51
|
-
"enabled": true
|
|
52
|
-
},
|
|
76
|
+
"theme": { "enabled": true },
|
|
53
77
|
"hideCost": false
|
|
54
78
|
}
|
|
55
79
|
```
|
|
56
80
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
| Option | Type | Default | Description |
|
|
60
|
-
|--------|------|---------|-------------|
|
|
61
|
-
| `baseUrl` | string | `https://wrapped.wolfai.dev` | Base URL for shareable links |
|
|
62
|
-
| `outputFormat` | `"normal"` \| `"json"` \| `"quiet"` | `"normal"` | Default output format |
|
|
63
|
-
| `theme.enabled` | boolean | `true` | Enable terminal colors |
|
|
64
|
-
| `statsCachePath` | string | `~/.claude/stats-cache.json` | Custom stats file path |
|
|
65
|
-
| `hideCost` | boolean | `false` | Hide cost from output |
|
|
81
|
+
## Data Sources
|
|
66
82
|
|
|
67
|
-
|
|
83
|
+
| Source | Location |
|
|
84
|
+
|--------|----------|
|
|
85
|
+
| Claude Code | `~/.claude/projects/**/*.jsonl` |
|
|
86
|
+
| OpenAI Codex | `~/.codex/sessions/*.jsonl` |
|
|
68
87
|
|
|
69
88
|
## Requirements
|
|
70
89
|
|
|
71
90
|
- Node.js 18+
|
|
72
|
-
- Claude Code
|
|
91
|
+
- Claude Code or OpenAI Codex CLI usage data
|
|
73
92
|
|
|
74
93
|
## View Online
|
|
75
94
|
|
|
76
|
-
Visit [
|
|
95
|
+
Visit [vibestats.wolfai.dev](https://vibestats.wolfai.dev) to view your wrapped in the browser.
|
|
77
96
|
|
|
78
97
|
## License
|
|
79
98
|
|
package/dist/index.js
CHANGED
|
@@ -1370,7 +1370,7 @@ var dayToNumber = {
|
|
|
1370
1370
|
Friday: 5,
|
|
1371
1371
|
Saturday: 6
|
|
1372
1372
|
};
|
|
1373
|
-
function encodeStatsToUrl(stats, baseUrl = "https://
|
|
1373
|
+
function encodeStatsToUrl(stats, baseUrl = "https://vibestats.wolfai.dev") {
|
|
1374
1374
|
const params = new URLSearchParams();
|
|
1375
1375
|
params.set("s", stats.sessions.toString());
|
|
1376
1376
|
params.set("t", formatCompactNumber(stats.totalTokens));
|
|
@@ -1567,7 +1567,7 @@ import { homedir as homedir4 } from "os";
|
|
|
1567
1567
|
import { join as join4 } from "path";
|
|
1568
1568
|
var CONFIG_PATH = join4(homedir4(), ".vibestats.json");
|
|
1569
1569
|
var DEFAULT_CONFIG = {
|
|
1570
|
-
baseUrl: "https://
|
|
1570
|
+
baseUrl: "https://vibestats.wolfai.dev",
|
|
1571
1571
|
outputFormat: "normal",
|
|
1572
1572
|
theme: {
|
|
1573
1573
|
enabled: true
|
|
@@ -1603,7 +1603,7 @@ function initConfig() {
|
|
|
1603
1603
|
return;
|
|
1604
1604
|
}
|
|
1605
1605
|
const defaultConfig = {
|
|
1606
|
-
baseUrl: "https://
|
|
1606
|
+
baseUrl: "https://vibestats.wolfai.dev",
|
|
1607
1607
|
outputFormat: "normal",
|
|
1608
1608
|
theme: {
|
|
1609
1609
|
enabled: true
|