vibedino 0.1.0

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 ADDED
@@ -0,0 +1,226 @@
1
+ # ๐Ÿฆ• VibeDino
2
+
3
+ **A terminal T-Rex runner game for when your AI tools run out of tokens.**
4
+
5
+ Inspired by Chrome's offline dinosaur game โ€” but themed for developers. When Claude Code or GitHub Copilot hits a rate limit, VibeDino gives you something fun to do while your tokens regenerate.
6
+
7
+ ```
8
+ โ–„โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—
9
+ โ–ˆโ–ˆโ–‘โ–ˆ โ–ˆโ–ˆ โ–„โ–ˆโ–„ โ•‘node_mods/โ•‘ โ–„โ–€โ–€โ–„//TODO
10
+ โ–„ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ โ–€โ–ˆโ–ˆโ–ˆโ–€ โ•‘ โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“ โ•‘ โ–€โ–„โ–„โ–€โ–€
11
+ โ–ˆโ–„โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–€ โ–ˆ โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
12
+ โ–€โ–ˆโ–ˆโ–ˆโ–ˆโ–€ โ–ˆ
13
+ โ–ˆโ–€โ–€โ–„
14
+ โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–
15
+ HI 00350 00042
16
+ ```
17
+
18
+ ## Features
19
+
20
+ - ๐ŸŽฎ **Classic side-scroller** โ€” jump over obstacles, duck under birds, survive!
21
+ - ๐ŸŽจ **Full color** โ€” sky gradient, green dino, colored obstacles, twinkling stars
22
+ - ๐ŸŒต **Dev-themed obstacles** โ€” `node_modules` boulders, `// TODO` birds, HTTP 429 walls, merge conflicts
23
+ - ๐Ÿ“Š **Score tracking** โ€” persistent high scores saved locally
24
+ - ๐Ÿ”Œ **AI tool integration** โ€” hooks for Claude Code and GitHub Copilot CLI
25
+ - โšก **Zero dependencies** โ€” pure Node.js, ANSI rendering, works in any modern terminal
26
+ - ๐Ÿ“ฆ **Dual format** โ€” ESM + CJS, CLI + programmatic API
27
+
28
+ ## Install
29
+
30
+ ```bash
31
+ npm install -g vibedino
32
+ ```
33
+
34
+ Or run directly:
35
+
36
+ ```bash
37
+ npx vibedino
38
+ ```
39
+
40
+ ## Gameplay
41
+
42
+ ```
43
+ Controls:
44
+ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
45
+ SPACE / UP Jump
46
+ DOWN Duck
47
+ R Restart (game over)
48
+ Q / ESC Quit
49
+ ```
50
+
51
+ The game starts with a "Regenerating tokens..." progress bar, then throws increasingly difficult obstacles at you. Your score increases with time. Beat your high score!
52
+
53
+ ## Screenshots
54
+
55
+ ### Title Screen
56
+ ```
57
+ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
58
+ โ”‚ โ”‚
59
+ โ”‚ V I B E D I N O โ”‚
60
+ โ”‚ Token Exhaustion Entertainment โ”‚
61
+ โ”‚ โ”‚
62
+ โ”‚ โ–„โ–„โ–ˆโ–ˆโ–ˆโ–ˆโ–„โ–„ โ”‚
63
+ โ”‚ โ–„โ–ˆโ–ˆโ–‘โ–‘โ–ˆโ–ˆโ–„โ–ˆโ–ˆโ–ˆโ–ˆ โ”‚
64
+ โ”‚ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ โ”‚
65
+ โ”‚ โ–„โ–„ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–€โ–€ โ”‚
66
+ โ”‚ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–€ โ”‚
67
+ โ”‚ โ–€โ–€โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–€โ–€ โ”‚
68
+ โ”‚ โ–ˆโ–ˆโ–€โ–€โ–ˆโ–ˆ โ”‚
69
+ โ”‚ โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ– โ”‚
70
+ โ”‚ โ”‚
71
+ โ”‚ No tokens? No problem! โ”‚
72
+ โ”‚ โ”‚
73
+ โ”‚ โ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ•‘ โ”‚
74
+ โ”‚ Regenerating tokens... 55% โ”‚
75
+ โ”‚ โ”‚
76
+ โ”‚ SPACE/UP: Jump | DOWN: Duck | Q: Quit โ”‚
77
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
78
+ ```
79
+
80
+ ### Gameplay
81
+ ```
82
+ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
83
+ โ”‚ ยท ยท ยฐ HI 00350 00127โ”‚
84
+ โ”‚ โ–„โ–„โ–„โ–„ ยท โ”‚
85
+ โ”‚ โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€ โ”‚
86
+ โ”‚ โ–„โ–„โ–„ โ”‚
87
+ โ”‚ โ–„โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ โ–€โ–€โ–€โ–€โ–€ โ”‚
88
+ โ”‚ โ–ˆโ–ˆโ–‘โ–ˆ โ–ˆโ–ˆ โ”‚
89
+ โ”‚ โ–„ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ โ”‚
90
+ โ”‚ โ–ˆโ–„โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–€ โ–„โ–ˆโ–„ โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•— โ–„โ–€โ–€โ–„//TODOโ”‚
91
+ โ”‚ โ–€โ–ˆโ–ˆโ–ˆโ–ˆโ–€ โ–€โ–ˆโ–ˆโ–ˆโ–€ โ•‘node_mods/โ•‘ โ–€โ–„โ–„โ–€โ–€ โ”‚
92
+ โ”‚ โ–ˆโ–€โ–€โ–„ โ–ˆ โ•‘ โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“ โ•‘ โ”‚
93
+ โ”‚ โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–ˆโ–โ–โ–โ–โ–โ–โ–โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ”‚
94
+ โ”‚ ยท โˆ™ ยท โˆ™ ยท โˆ™ ยท โˆ™ ยท โˆ™ โ”‚
95
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
96
+ ```
97
+
98
+ ### Game Over
99
+ ```
100
+ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
101
+ โ”‚ โ”‚
102
+ โ”‚ โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•— โ”‚
103
+ โ”‚ โ•‘ G A M E O V E R โ•‘ โ”‚
104
+ โ”‚ โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• โ”‚
105
+ โ”‚ โ”‚
106
+ โ”‚ โ–„โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ โ”‚
107
+ โ”‚ โ–ˆโ–ˆXโ–ˆXโ–ˆโ–ˆ โ”‚
108
+ โ”‚ โ–„ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ โ”‚
109
+ โ”‚ โ–ˆโ–„โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–€ โ”‚
110
+ โ”‚ โ–€โ–ˆโ–ˆโ–ˆโ–ˆโ–€ โ”‚
111
+ โ”‚ โ–ˆโ–€ โ–ˆโ–€ โ”‚
112
+ โ”‚ โ”‚
113
+ โ”‚ Score 00127 โ”‚
114
+ โ”‚ Best 00350 โ”‚
115
+ โ”‚ โ”‚
116
+ โ”‚ Tokens still regenerating... โ”‚
117
+ โ”‚ โ”‚
118
+ โ”‚ [R] Restart [Q] Quit โ”‚
119
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
120
+ ```
121
+
122
+ ## AI Tool Integration
123
+
124
+ ### Auto-Install (Recommended)
125
+
126
+ When you install VibeDino globally, it **auto-detects** Claude Code and Copilot CLI and installs hooks automatically:
127
+
128
+ ```bash
129
+ npm install -g vibedino
130
+ # ๐Ÿฆ• VibeDino hooks installed! Play when your AI hits a token limit.
131
+ ```
132
+
133
+ No config editing needed. If you install later or want manual control, use the commands below.
134
+
135
+ ### Claude Code
136
+
137
+ ```bash
138
+ vibedino --install claude
139
+ ```
140
+
141
+ This adds a hook to `.claude/settings.json`:
142
+
143
+ ```json
144
+ {
145
+ "hooks": {
146
+ "PostToolUseFailure": [{
147
+ "matcher": "rate_limit|token_limit|quota_exceeded|overloaded",
148
+ "command": "npx vibedino --trigger claude",
149
+ "timeout": 300000
150
+ }]
151
+ }
152
+ }
153
+ ```
154
+
155
+ ### GitHub Copilot CLI
156
+
157
+ ```bash
158
+ vibedino --install copilot
159
+ ```
160
+
161
+ Installs a plugin at `~/.copilot/plugins/vibedino/plugin.json`.
162
+
163
+ ### Remove integrations
164
+
165
+ ```bash
166
+ vibedino --uninstall claude
167
+ vibedino --uninstall copilot
168
+ ```
169
+
170
+ ## Programmatic API
171
+
172
+ ```typescript
173
+ import { startGame } from 'vibedino';
174
+
175
+ const result = await startGame({
176
+ source: 'api',
177
+ reason: 'rate_limit',
178
+ });
179
+
180
+ console.log(result);
181
+ // { score: 127, highScore: 350, isNewHighScore: false, duration: 45000 }
182
+ ```
183
+
184
+ ## CLI Reference
185
+
186
+ ```
187
+ vibedino Launch the game
188
+ vibedino --trigger claude Launch with Claude-themed messages
189
+ vibedino --trigger copilot Launch with Copilot-themed messages
190
+ vibedino --install claude Install Claude Code hook
191
+ vibedino --install copilot Install Copilot CLI plugin
192
+ vibedino --uninstall claude Remove Claude Code hook
193
+ vibedino --uninstall copilot Remove Copilot CLI plugin
194
+ vibedino --scores Show high scores
195
+ vibedino --reset Reset high scores
196
+ vibedino --help Show help
197
+ vibedino --version Show version
198
+ ```
199
+
200
+ ## How it works
201
+
202
+ VibeDino is a pure Node.js terminal game with:
203
+ - **ANSI escape codes** for rendering (no dependencies)
204
+ - **Half-block pixel art** (`โ–€โ–„โ–ˆ`) for 2x vertical resolution sprites
205
+ - **24-bit RGB colors** for sky gradient, themed obstacles, and UI
206
+ - **Fixed 30fps game loop** with deterministic physics
207
+ - **Persistent scores** saved to `~/.vibedino/scores.json`
208
+
209
+ ## Development
210
+
211
+ ```bash
212
+ git clone https://github.com/annguyen209/VibeDino.git
213
+ cd VibeDino
214
+ npm install
215
+ npm run dev # Run with tsx (hot reload)
216
+ npm run build # Build for distribution
217
+ npm run typecheck # Type check
218
+ ```
219
+
220
+ ## License
221
+
222
+ MIT
223
+
224
+ ---
225
+
226
+ *Made with vibes. No tokens were harmed in the making of this game.*
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ import('../dist/main.js');