@boshu2/vibe-check 1.5.0 → 1.6.1

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 (148) hide show
  1. package/.agents/bundles/insight-mining-dashboard-research-2025-11-30.md +400 -0
  2. package/.agents/bundles/storage-enhancement-research-2025-11-30.md +292 -0
  3. package/.agents/bundles/timeline-feature-research-complete-2025-11-30.md +301 -0
  4. package/.agents/plans/insight-dashboard-plan-2025-11-30.md +1130 -0
  5. package/.agents/plans/json-storage-enhancement-plan.md +717 -0
  6. package/.agents/plans/storage-hardening-and-cache-plan.md +592 -0
  7. package/.agents/plans/test-coverage-gaps-plan.md +1117 -0
  8. package/.agents/plans/timeline-feature-plan.md +193 -0
  9. package/.agents/plans/vibe_timeline_research_findings.md +553 -0
  10. package/.claude/settings.local.json +1 -0
  11. package/.vibe-check/.gitignore +6 -0
  12. package/CHANGELOG.md +46 -0
  13. package/CLAUDE.md +24 -0
  14. package/CONTRIBUTING.md +227 -0
  15. package/README.md +165 -144
  16. package/claude-progress.json +191 -9
  17. package/claude-progress.txt +257 -0
  18. package/dashboard/app.js +75 -2
  19. package/dashboard/dashboard-data.json +653 -0
  20. package/dashboard/index.html +13 -0
  21. package/dashboard/styles.css +61 -0
  22. package/dist/analysis/cross-session-analysis.d.ts +68 -0
  23. package/dist/analysis/cross-session-analysis.d.ts.map +1 -0
  24. package/dist/analysis/cross-session-analysis.js +174 -0
  25. package/dist/analysis/cross-session-analysis.js.map +1 -0
  26. package/dist/analysis/index.d.ts +2 -0
  27. package/dist/analysis/index.d.ts.map +1 -0
  28. package/dist/analysis/index.js +12 -0
  29. package/dist/analysis/index.js.map +1 -0
  30. package/dist/cli.js +10 -1
  31. package/dist/cli.js.map +1 -1
  32. package/dist/commands/analyze.d.ts +2 -0
  33. package/dist/commands/analyze.d.ts.map +1 -1
  34. package/dist/commands/analyze.js +105 -2
  35. package/dist/commands/analyze.js.map +1 -1
  36. package/dist/commands/cache.d.ts +6 -0
  37. package/dist/commands/cache.d.ts.map +1 -0
  38. package/dist/commands/cache.js +168 -0
  39. package/dist/commands/cache.js.map +1 -0
  40. package/dist/commands/dashboard.d.ts +8 -0
  41. package/dist/commands/dashboard.d.ts.map +1 -0
  42. package/dist/commands/dashboard.js +109 -0
  43. package/dist/commands/dashboard.js.map +1 -0
  44. package/dist/commands/index.d.ts +3 -0
  45. package/dist/commands/index.d.ts.map +1 -1
  46. package/dist/commands/index.js +8 -1
  47. package/dist/commands/index.js.map +1 -1
  48. package/dist/commands/timeline.d.ts +14 -0
  49. package/dist/commands/timeline.d.ts.map +1 -0
  50. package/dist/commands/timeline.js +462 -0
  51. package/dist/commands/timeline.js.map +1 -0
  52. package/dist/git.d.ts +24 -0
  53. package/dist/git.d.ts.map +1 -1
  54. package/dist/git.js +94 -0
  55. package/dist/git.js.map +1 -1
  56. package/dist/insights/generators.d.ts +44 -0
  57. package/dist/insights/generators.d.ts.map +1 -0
  58. package/dist/insights/generators.js +289 -0
  59. package/dist/insights/generators.js.map +1 -0
  60. package/dist/insights/index.d.ts +16 -0
  61. package/dist/insights/index.d.ts.map +1 -0
  62. package/dist/insights/index.js +171 -0
  63. package/dist/insights/index.js.map +1 -0
  64. package/dist/insights/types.d.ts +93 -0
  65. package/dist/insights/types.d.ts.map +1 -0
  66. package/dist/insights/types.js +6 -0
  67. package/dist/insights/types.js.map +1 -0
  68. package/dist/output/timeline-html.d.ts +6 -0
  69. package/dist/output/timeline-html.d.ts.map +1 -0
  70. package/dist/output/timeline-html.js +389 -0
  71. package/dist/output/timeline-html.js.map +1 -0
  72. package/dist/output/timeline-markdown.d.ts +6 -0
  73. package/dist/output/timeline-markdown.d.ts.map +1 -0
  74. package/dist/output/timeline-markdown.js +167 -0
  75. package/dist/output/timeline-markdown.js.map +1 -0
  76. package/dist/output/timeline.d.ts +9 -0
  77. package/dist/output/timeline.d.ts.map +1 -0
  78. package/dist/output/timeline.js +318 -0
  79. package/dist/output/timeline.js.map +1 -0
  80. package/dist/patterns/detour.d.ts +32 -0
  81. package/dist/patterns/detour.d.ts.map +1 -0
  82. package/dist/patterns/detour.js +137 -0
  83. package/dist/patterns/detour.js.map +1 -0
  84. package/dist/patterns/flow-state.d.ts +16 -0
  85. package/dist/patterns/flow-state.d.ts.map +1 -0
  86. package/dist/patterns/flow-state.js +40 -0
  87. package/dist/patterns/flow-state.js.map +1 -0
  88. package/dist/patterns/index.d.ts +8 -0
  89. package/dist/patterns/index.d.ts.map +1 -0
  90. package/dist/patterns/index.js +22 -0
  91. package/dist/patterns/index.js.map +1 -0
  92. package/dist/patterns/intervention-effectiveness.d.ts +42 -0
  93. package/dist/patterns/intervention-effectiveness.d.ts.map +1 -0
  94. package/dist/patterns/intervention-effectiveness.js +196 -0
  95. package/dist/patterns/intervention-effectiveness.js.map +1 -0
  96. package/dist/patterns/late-night.d.ts +30 -0
  97. package/dist/patterns/late-night.d.ts.map +1 -0
  98. package/dist/patterns/late-night.js +141 -0
  99. package/dist/patterns/late-night.js.map +1 -0
  100. package/dist/patterns/post-delete-sprint.d.ts +28 -0
  101. package/dist/patterns/post-delete-sprint.d.ts.map +1 -0
  102. package/dist/patterns/post-delete-sprint.js +85 -0
  103. package/dist/patterns/post-delete-sprint.js.map +1 -0
  104. package/dist/patterns/spiral-regression.d.ts +49 -0
  105. package/dist/patterns/spiral-regression.d.ts.map +1 -0
  106. package/dist/patterns/spiral-regression.js +219 -0
  107. package/dist/patterns/spiral-regression.js.map +1 -0
  108. package/dist/patterns/thrashing.d.ts +25 -0
  109. package/dist/patterns/thrashing.d.ts.map +1 -0
  110. package/dist/patterns/thrashing.js +111 -0
  111. package/dist/patterns/thrashing.js.map +1 -0
  112. package/dist/storage/atomic.d.ts +40 -0
  113. package/dist/storage/atomic.d.ts.map +1 -0
  114. package/dist/storage/atomic.js +155 -0
  115. package/dist/storage/atomic.js.map +1 -0
  116. package/dist/storage/commit-log.d.ts +35 -0
  117. package/dist/storage/commit-log.d.ts.map +1 -0
  118. package/dist/storage/commit-log.js +128 -0
  119. package/dist/storage/commit-log.js.map +1 -0
  120. package/dist/storage/index.d.ts +5 -0
  121. package/dist/storage/index.d.ts.map +1 -0
  122. package/dist/storage/index.js +33 -0
  123. package/dist/storage/index.js.map +1 -0
  124. package/dist/storage/schema.d.ts +32 -0
  125. package/dist/storage/schema.d.ts.map +1 -0
  126. package/dist/storage/schema.js +37 -0
  127. package/dist/storage/schema.js.map +1 -0
  128. package/dist/storage/timeline-store.d.ts +117 -0
  129. package/dist/storage/timeline-store.d.ts.map +1 -0
  130. package/dist/storage/timeline-store.js +438 -0
  131. package/dist/storage/timeline-store.js.map +1 -0
  132. package/dist/types.d.ts +96 -0
  133. package/dist/types.d.ts.map +1 -1
  134. package/docs/ARCHITECTURE.md +458 -0
  135. package/docs/DATA-ARCHITECTURE.md +565 -0
  136. package/docs/GAMIFICATION.md +564 -0
  137. package/docs/JSON-STORAGE-PATTERNS.md +512 -0
  138. package/docs/METRICS-EXPLAINED.md +394 -0
  139. package/docs/UNIFIED-ECOSYSTEM.md +560 -0
  140. package/docs/VIBE-ECOSYSTEM.md +406 -0
  141. package/docs/images/dashboard.png +0 -0
  142. package/feature-list.json +48 -0
  143. package/package.json +2 -1
  144. package/vitest.config.ts +1 -5
  145. package/.vibe-check/calibration.json +0 -38
  146. package/.vibe-check/latest.json +0 -114
  147. package/.vibe-check/sessions.json +0 -44
  148. package/PLAN-ultimate-game.md +0 -1362
@@ -0,0 +1,653 @@
1
+ {
2
+ "version": "1.0.0",
3
+ "generatedAt": "2025-11-30T19:02:12.770Z",
4
+ "repo": "/Users/fullerbt/workspaces/personal/vibe-check",
5
+ "profile": {
6
+ "level": 6,
7
+ "levelName": "Grandmaster",
8
+ "levelIcon": "🏔️",
9
+ "xp": {
10
+ "current": 140,
11
+ "next": 3000,
12
+ "total": 2140
13
+ },
14
+ "streak": {
15
+ "current": 2,
16
+ "longest": 2
17
+ },
18
+ "achievementCount": 6,
19
+ "totalAchievements": 19
20
+ },
21
+ "stats": {
22
+ "current": {
23
+ "vibeScore": 80,
24
+ "rating": "ELITE"
25
+ },
26
+ "averages": {
27
+ "day7": 85,
28
+ "day30": 85,
29
+ "allTime": 85
30
+ },
31
+ "totals": {
32
+ "sessions": 28,
33
+ "commits": 62,
34
+ "spirals": 0,
35
+ "features": 101
36
+ }
37
+ },
38
+ "charts": {
39
+ "scoreTrend": [
40
+ {
41
+ "date": "2025-11-29",
42
+ "score": 89,
43
+ "rating": "ELITE"
44
+ },
45
+ {
46
+ "date": "2025-11-29",
47
+ "score": 89,
48
+ "rating": "ELITE"
49
+ },
50
+ {
51
+ "date": "2025-11-29",
52
+ "score": 90,
53
+ "rating": "ELITE"
54
+ },
55
+ {
56
+ "date": "2025-11-29",
57
+ "score": 88,
58
+ "rating": "ELITE"
59
+ },
60
+ {
61
+ "date": "2025-11-29",
62
+ "score": 88,
63
+ "rating": "ELITE"
64
+ },
65
+ {
66
+ "date": "2025-11-29",
67
+ "score": 88,
68
+ "rating": "ELITE"
69
+ },
70
+ {
71
+ "date": "2025-11-29",
72
+ "score": 88,
73
+ "rating": "ELITE"
74
+ },
75
+ {
76
+ "date": "2025-11-29",
77
+ "score": 87,
78
+ "rating": "ELITE"
79
+ },
80
+ {
81
+ "date": "2025-11-29",
82
+ "score": 71,
83
+ "rating": "ELITE"
84
+ },
85
+ {
86
+ "date": "2025-11-29",
87
+ "score": 96,
88
+ "rating": "ELITE"
89
+ },
90
+ {
91
+ "date": "2025-11-29",
92
+ "score": 79,
93
+ "rating": "ELITE"
94
+ },
95
+ {
96
+ "date": "2025-11-29",
97
+ "score": 75,
98
+ "rating": "ELITE"
99
+ },
100
+ {
101
+ "date": "2025-11-29",
102
+ "score": 87,
103
+ "rating": "ELITE"
104
+ },
105
+ {
106
+ "date": "2025-11-29",
107
+ "score": 93,
108
+ "rating": "ELITE"
109
+ },
110
+ {
111
+ "date": "2025-11-29",
112
+ "score": 82,
113
+ "rating": "ELITE"
114
+ },
115
+ {
116
+ "date": "2025-11-29",
117
+ "score": 95,
118
+ "rating": "ELITE"
119
+ },
120
+ {
121
+ "date": "2025-11-29",
122
+ "score": 90,
123
+ "rating": "ELITE"
124
+ },
125
+ {
126
+ "date": "2025-11-29",
127
+ "score": 88,
128
+ "rating": "ELITE"
129
+ },
130
+ {
131
+ "date": "2025-11-29",
132
+ "score": 75,
133
+ "rating": "ELITE"
134
+ },
135
+ {
136
+ "date": "2025-11-29",
137
+ "score": 91,
138
+ "rating": "ELITE"
139
+ },
140
+ {
141
+ "date": "2025-11-29",
142
+ "score": 88,
143
+ "rating": "ELITE"
144
+ },
145
+ {
146
+ "date": "2025-11-30",
147
+ "score": 95,
148
+ "rating": "ELITE"
149
+ },
150
+ {
151
+ "date": "2025-11-30",
152
+ "score": 75,
153
+ "rating": "ELITE"
154
+ },
155
+ {
156
+ "date": "2025-11-30",
157
+ "score": 81,
158
+ "rating": "ELITE"
159
+ },
160
+ {
161
+ "date": "2025-11-30",
162
+ "score": 85,
163
+ "rating": "ELITE"
164
+ },
165
+ {
166
+ "date": "2025-11-30",
167
+ "score": 75,
168
+ "rating": "ELITE"
169
+ },
170
+ {
171
+ "date": "2025-11-30",
172
+ "score": 75,
173
+ "rating": "ELITE"
174
+ },
175
+ {
176
+ "date": "2025-11-30",
177
+ "score": 80,
178
+ "rating": "ELITE"
179
+ }
180
+ ],
181
+ "ratingDistribution": {
182
+ "ELITE": 28,
183
+ "HIGH": 0,
184
+ "MEDIUM": 0,
185
+ "LOW": 0
186
+ },
187
+ "hourlyActivity": {
188
+ "0": 1,
189
+ "8": 2,
190
+ "9": 5,
191
+ "10": 5,
192
+ "11": 3,
193
+ "12": 14,
194
+ "13": 13,
195
+ "15": 2,
196
+ "16": 3,
197
+ "17": 4,
198
+ "18": 5,
199
+ "19": 2,
200
+ "20": 2,
201
+ "22": 1
202
+ },
203
+ "scopeHealth": [
204
+ {
205
+ "scope": "(no scope)",
206
+ "commits": 36,
207
+ "fixRatio": 6
208
+ },
209
+ {
210
+ "scope": "timeline",
211
+ "commits": 5,
212
+ "fixRatio": 0
213
+ },
214
+ {
215
+ "scope": "storage",
216
+ "commits": 2,
217
+ "fixRatio": 0
218
+ },
219
+ {
220
+ "scope": "v1.4",
221
+ "commits": 2,
222
+ "fixRatio": 0
223
+ },
224
+ {
225
+ "scope": "gamification",
226
+ "commits": 2,
227
+ "fixRatio": 0
228
+ },
229
+ {
230
+ "scope": "ux",
231
+ "commits": 2,
232
+ "fixRatio": 50
233
+ },
234
+ {
235
+ "scope": "release",
236
+ "commits": 2,
237
+ "fixRatio": 0
238
+ },
239
+ {
240
+ "scope": "v1.5",
241
+ "commits": 1,
242
+ "fixRatio": 0
243
+ },
244
+ {
245
+ "scope": "v1.3",
246
+ "commits": 1,
247
+ "fixRatio": 0
248
+ },
249
+ {
250
+ "scope": "hook",
251
+ "commits": 1,
252
+ "fixRatio": 100
253
+ }
254
+ ]
255
+ },
256
+ "insights": [
257
+ {
258
+ "id": "recent-achievement",
259
+ "category": "celebration",
260
+ "severity": "success",
261
+ "icon": "📊",
262
+ "title": "Achievement Unlocked!",
263
+ "message": "Getting Started: Complete 10 vibe-check sessions",
264
+ "source": "profile",
265
+ "priority": 8
266
+ },
267
+ {
268
+ "id": "improvement-streak",
269
+ "category": "growth",
270
+ "severity": "success",
271
+ "icon": "🎯",
272
+ "title": "Improvement Streak",
273
+ "message": "2-week improvement streak! Your spiral rate keeps dropping.",
274
+ "metric": "improvement_weeks",
275
+ "value": 2,
276
+ "source": "timeline.trends",
277
+ "priority": 7
278
+ },
279
+ {
280
+ "id": "peak-hours",
281
+ "category": "productivity",
282
+ "severity": "info",
283
+ "icon": "⏰",
284
+ "title": "Peak Productivity",
285
+ "message": "You're most productive around 12pm (23% of commits)",
286
+ "metric": "peak_hour",
287
+ "value": 12,
288
+ "action": "Protect this time for deep work",
289
+ "source": "commits",
290
+ "priority": 5
291
+ },
292
+ {
293
+ "id": "best-day",
294
+ "category": "productivity",
295
+ "severity": "info",
296
+ "icon": "📅",
297
+ "title": "Best Coding Day",
298
+ "message": "Saturday is your most productive day (44% of commits)",
299
+ "metric": "best_day",
300
+ "value": 6,
301
+ "source": "commits",
302
+ "priority": 4
303
+ }
304
+ ],
305
+ "sessions": [
306
+ {
307
+ "date": "2025-11-30",
308
+ "vibeScore": 80,
309
+ "rating": "ELITE",
310
+ "commits": 4,
311
+ "spirals": 0,
312
+ "xpEarned": 70
313
+ },
314
+ {
315
+ "date": "2025-11-30",
316
+ "vibeScore": 75,
317
+ "rating": "ELITE",
318
+ "commits": 2,
319
+ "spirals": 0,
320
+ "xpEarned": 70
321
+ },
322
+ {
323
+ "date": "2025-11-30",
324
+ "vibeScore": 75,
325
+ "rating": "ELITE",
326
+ "commits": 3,
327
+ "spirals": 0,
328
+ "xpEarned": 70
329
+ },
330
+ {
331
+ "date": "2025-11-30",
332
+ "vibeScore": 85,
333
+ "rating": "ELITE",
334
+ "commits": 40,
335
+ "spirals": 0,
336
+ "xpEarned": 85
337
+ },
338
+ {
339
+ "date": "2025-11-30",
340
+ "vibeScore": 81,
341
+ "rating": "ELITE",
342
+ "commits": 1,
343
+ "spirals": 0,
344
+ "xpEarned": 70
345
+ },
346
+ {
347
+ "date": "2025-11-30",
348
+ "vibeScore": 75,
349
+ "rating": "ELITE",
350
+ "commits": 2,
351
+ "spirals": 0,
352
+ "xpEarned": 70
353
+ },
354
+ {
355
+ "date": "2025-11-30",
356
+ "vibeScore": 95,
357
+ "rating": "ELITE",
358
+ "commits": 2,
359
+ "spirals": 0,
360
+ "xpEarned": 70
361
+ },
362
+ {
363
+ "date": "2025-11-29",
364
+ "vibeScore": 88,
365
+ "rating": "ELITE",
366
+ "commits": 2,
367
+ "spirals": 0,
368
+ "xpEarned": 65
369
+ },
370
+ {
371
+ "date": "2025-11-29",
372
+ "vibeScore": 91,
373
+ "rating": "ELITE",
374
+ "commits": 2,
375
+ "spirals": 0,
376
+ "xpEarned": 65
377
+ },
378
+ {
379
+ "date": "2025-11-29",
380
+ "vibeScore": 75,
381
+ "rating": "ELITE",
382
+ "commits": 2,
383
+ "spirals": 0,
384
+ "xpEarned": 65
385
+ },
386
+ {
387
+ "date": "2025-11-29",
388
+ "vibeScore": 88,
389
+ "rating": "ELITE",
390
+ "commits": 2,
391
+ "spirals": 0,
392
+ "xpEarned": 65
393
+ },
394
+ {
395
+ "date": "2025-11-29",
396
+ "vibeScore": 90,
397
+ "rating": "ELITE",
398
+ "commits": 2,
399
+ "spirals": 0,
400
+ "xpEarned": 65
401
+ },
402
+ {
403
+ "date": "2025-11-29",
404
+ "vibeScore": 95,
405
+ "rating": "ELITE",
406
+ "commits": 2,
407
+ "spirals": 0,
408
+ "xpEarned": 65
409
+ },
410
+ {
411
+ "date": "2025-11-29",
412
+ "vibeScore": 82,
413
+ "rating": "ELITE",
414
+ "commits": 5,
415
+ "spirals": 0,
416
+ "xpEarned": 65
417
+ },
418
+ {
419
+ "date": "2025-11-29",
420
+ "vibeScore": 93,
421
+ "rating": "ELITE",
422
+ "commits": 3,
423
+ "spirals": 0,
424
+ "xpEarned": 65
425
+ },
426
+ {
427
+ "date": "2025-11-29",
428
+ "vibeScore": 87,
429
+ "rating": "ELITE",
430
+ "commits": 2,
431
+ "spirals": 0,
432
+ "xpEarned": 65
433
+ },
434
+ {
435
+ "date": "2025-11-29",
436
+ "vibeScore": 75,
437
+ "rating": "ELITE",
438
+ "commits": 2,
439
+ "spirals": 0,
440
+ "xpEarned": 65
441
+ },
442
+ {
443
+ "date": "2025-11-29",
444
+ "vibeScore": 79,
445
+ "rating": "ELITE",
446
+ "commits": 2,
447
+ "spirals": 0,
448
+ "xpEarned": 65
449
+ },
450
+ {
451
+ "date": "2025-11-29",
452
+ "vibeScore": 96,
453
+ "rating": "ELITE",
454
+ "commits": 2,
455
+ "spirals": 0,
456
+ "xpEarned": 90
457
+ },
458
+ {
459
+ "date": "2025-11-29",
460
+ "vibeScore": 71,
461
+ "rating": "ELITE",
462
+ "commits": 2,
463
+ "spirals": 0,
464
+ "xpEarned": 65
465
+ },
466
+ {
467
+ "date": "2025-11-29",
468
+ "vibeScore": 87,
469
+ "rating": "ELITE",
470
+ "commits": 21,
471
+ "spirals": 0,
472
+ "xpEarned": 80
473
+ },
474
+ {
475
+ "date": "2025-11-29",
476
+ "vibeScore": 88,
477
+ "rating": "ELITE",
478
+ "commits": 20,
479
+ "spirals": 0,
480
+ "xpEarned": 105
481
+ },
482
+ {
483
+ "date": "2025-11-29",
484
+ "vibeScore": 88,
485
+ "rating": "ELITE",
486
+ "commits": 19,
487
+ "spirals": 0,
488
+ "xpEarned": 80
489
+ },
490
+ {
491
+ "date": "2025-11-29",
492
+ "vibeScore": 88,
493
+ "rating": "ELITE",
494
+ "commits": 19,
495
+ "spirals": 0,
496
+ "xpEarned": 105
497
+ },
498
+ {
499
+ "date": "2025-11-29",
500
+ "vibeScore": 88,
501
+ "rating": "ELITE",
502
+ "commits": 19,
503
+ "spirals": 0,
504
+ "xpEarned": 80
505
+ },
506
+ {
507
+ "date": "2025-11-29",
508
+ "vibeScore": 90,
509
+ "rating": "ELITE",
510
+ "commits": 18,
511
+ "spirals": 0,
512
+ "xpEarned": 105
513
+ },
514
+ {
515
+ "date": "2025-11-29",
516
+ "vibeScore": 89,
517
+ "rating": "ELITE",
518
+ "commits": 15,
519
+ "spirals": 0,
520
+ "xpEarned": 80
521
+ },
522
+ {
523
+ "date": "2025-11-29",
524
+ "vibeScore": 89,
525
+ "rating": "ELITE",
526
+ "commits": 14,
527
+ "spirals": 0,
528
+ "xpEarned": 130
529
+ }
530
+ ],
531
+ "achievements": [
532
+ {
533
+ "id": "first_check",
534
+ "name": "First Blood",
535
+ "icon": "🩸",
536
+ "description": "Run your first vibe-check",
537
+ "unlockedAt": "2025-11-29T13:55:52.777Z"
538
+ },
539
+ {
540
+ "id": "week_warrior",
541
+ "name": "Week Warrior",
542
+ "icon": "⚔️",
543
+ "description": "Maintain a 7-day streak"
544
+ },
545
+ {
546
+ "id": "fortnight_force",
547
+ "name": "Fortnight Force",
548
+ "icon": "🛡️",
549
+ "description": "Maintain a 14-day streak"
550
+ },
551
+ {
552
+ "id": "monthly_master",
553
+ "name": "Monthly Master",
554
+ "icon": "👑",
555
+ "description": "Maintain a 30-day streak"
556
+ },
557
+ {
558
+ "id": "elite_vibes",
559
+ "name": "Elite Vibes",
560
+ "icon": "✨",
561
+ "description": "Achieve ELITE rating in a session",
562
+ "unlockedAt": "2025-11-29T13:55:52.777Z"
563
+ },
564
+ {
565
+ "id": "consistent_high",
566
+ "name": "High Roller",
567
+ "icon": "🎰",
568
+ "description": "Get HIGH or better for 5 consecutive sessions",
569
+ "unlockedAt": "2025-11-29T17:08:30.842Z"
570
+ },
571
+ {
572
+ "id": "perfect_week",
573
+ "name": "Perfect Week",
574
+ "icon": "💎",
575
+ "description": "ELITE rating every day for a week",
576
+ "unlockedAt": "2025-11-29T17:27:50.140Z"
577
+ },
578
+ {
579
+ "id": "score_90",
580
+ "name": "Ninety Club",
581
+ "icon": "🏅",
582
+ "description": "Achieve a Vibe Score of 90% or higher",
583
+ "unlockedAt": "2025-11-29T17:05:57.830Z"
584
+ },
585
+ {
586
+ "id": "ten_sessions",
587
+ "name": "Getting Started",
588
+ "icon": "📊",
589
+ "description": "Complete 10 vibe-check sessions",
590
+ "unlockedAt": "2025-11-29T18:43:25.127Z"
591
+ },
592
+ {
593
+ "id": "fifty_sessions",
594
+ "name": "Regular",
595
+ "icon": "📈",
596
+ "description": "Complete 50 vibe-check sessions"
597
+ },
598
+ {
599
+ "id": "hundred_sessions",
600
+ "name": "Centurion",
601
+ "icon": "💯",
602
+ "description": "Complete 100 vibe-check sessions"
603
+ },
604
+ {
605
+ "id": "zen_master",
606
+ "name": "Zen Master",
607
+ "icon": "🧘",
608
+ "description": "0 debug spirals in a 50+ commit session"
609
+ },
610
+ {
611
+ "id": "trust_builder",
612
+ "name": "Trust Builder",
613
+ "icon": "🏗️",
614
+ "description": "Maintain 90%+ Trust Pass Rate for 10 sessions"
615
+ },
616
+ {
617
+ "id": "comeback_kid",
618
+ "name": "Comeback Kid",
619
+ "icon": "🔄",
620
+ "description": "Go from LOW to ELITE in the same week"
621
+ },
622
+ {
623
+ "id": "early_bird",
624
+ "name": "Early Bird",
625
+ "icon": "🌅",
626
+ "description": "Run vibe-check before 7 AM"
627
+ },
628
+ {
629
+ "id": "night_owl",
630
+ "name": "Night Owl",
631
+ "icon": "🦉",
632
+ "description": "Run vibe-check after midnight"
633
+ },
634
+ {
635
+ "id": "thousand_commits",
636
+ "name": "Thousand Strong",
637
+ "icon": "🎯",
638
+ "description": "Analyze 1000 total commits"
639
+ },
640
+ {
641
+ "id": "perfect_score",
642
+ "name": "???",
643
+ "icon": "🌟",
644
+ "description": "Achieve a perfect 100% Vibe Score"
645
+ },
646
+ {
647
+ "id": "spiral_survivor",
648
+ "name": "???",
649
+ "icon": "🌀",
650
+ "description": "Recover from 5+ spirals to ELITE in same session"
651
+ }
652
+ ]
653
+ }
@@ -164,6 +164,19 @@
164
164
  </div>
165
165
  </div>
166
166
  </div>
167
+
168
+ <!-- Insights Section -->
169
+ <div class="recent-section" id="insightsSection">
170
+ <div class="section-header">
171
+ <h3>Insights</h3>
172
+ </div>
173
+ <div class="insights-list" id="insightsList">
174
+ <div class="empty-state">
175
+ <span class="empty-icon">💡</span>
176
+ <p>Run <code>vibe-check dashboard</code> to generate insights</p>
177
+ </div>
178
+ </div>
179
+ </div>
167
180
  </section>
168
181
 
169
182
  <!-- History Page -->