agentvibes 2.0.9 → 2.0.12

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 (152) hide show
  1. package/.claude/commands/agent-vibes/bmad.md +203 -0
  2. package/.claude/github-star-reminder.txt +1 -0
  3. package/.claude/hooks/bmad-tts-injector.sh +333 -0
  4. package/.claude/hooks/bmad-voice-manager.sh +34 -0
  5. package/.claude/hooks/check-output-style.sh +2 -2
  6. package/.claude/hooks/github-star-reminder.sh +94 -0
  7. package/.claude/hooks/personality-manager.sh +2 -2
  8. package/.claude/hooks/piper-installer.sh +194 -0
  9. package/.claude/hooks/play-tts-elevenlabs.sh +30 -3
  10. package/.claude/hooks/play-tts-local-wrapper.sh +44 -0
  11. package/.claude/hooks/play-tts-piper.sh +10 -2
  12. package/.claude/hooks/play-tts-remote.sh +81 -0
  13. package/.claude/hooks/play-tts.sh +34 -0
  14. package/.claude/hooks/provider-commands.sh +30 -1
  15. package/.claude/hooks/voice-manager.sh +2 -2
  16. package/.claude/output-styles/agent-vibes.md +52 -36
  17. package/README.md +2 -2
  18. package/RELEASE_NOTES.md +412 -0
  19. package/agentvibes.org/.claude/commands/agent-vibes/add.md +21 -0
  20. package/agentvibes.org/.claude/commands/agent-vibes/agent-vibes.md +68 -0
  21. package/agentvibes.org/.claude/commands/agent-vibes/commands.json +53 -0
  22. package/agentvibes.org/.claude/commands/agent-vibes/get.md +9 -0
  23. package/agentvibes.org/.claude/commands/agent-vibes/list.md +13 -0
  24. package/agentvibes.org/.claude/commands/agent-vibes/personality.md +79 -0
  25. package/agentvibes.org/.claude/commands/agent-vibes/preview.md +16 -0
  26. package/agentvibes.org/.claude/commands/agent-vibes/provider.md +54 -0
  27. package/agentvibes.org/.claude/commands/agent-vibes/replay.md +19 -0
  28. package/agentvibes.org/.claude/commands/agent-vibes/sample.md +12 -0
  29. package/agentvibes.org/.claude/commands/agent-vibes/sentiment.md +52 -0
  30. package/agentvibes.org/.claude/commands/agent-vibes/set-language.md +47 -0
  31. package/agentvibes.org/.claude/commands/agent-vibes/set-pretext.md +65 -0
  32. package/agentvibes.org/.claude/commands/agent-vibes/switch.md +53 -0
  33. package/agentvibes.org/.claude/commands/agent-vibes/update.md +20 -0
  34. package/agentvibes.org/.claude/commands/agent-vibes/version.md +10 -0
  35. package/agentvibes.org/.claude/commands/agent-vibes/whoami.md +7 -0
  36. package/agentvibes.org/.claude/hooks/bmad-voice-manager.sh +278 -0
  37. package/agentvibes.org/.claude/hooks/language-manager.sh +190 -0
  38. package/agentvibes.org/.claude/hooks/personality-manager.sh +279 -0
  39. package/agentvibes.org/.claude/hooks/piper-download-voices.sh +133 -0
  40. package/agentvibes.org/.claude/hooks/piper-voice-manager.sh +227 -0
  41. package/agentvibes.org/.claude/hooks/play-tts-elevenlabs.sh +201 -0
  42. package/agentvibes.org/.claude/hooks/play-tts-piper.sh +175 -0
  43. package/agentvibes.org/.claude/hooks/play-tts.sh +138 -0
  44. package/agentvibes.org/.claude/hooks/provider-commands.sh +374 -0
  45. package/agentvibes.org/.claude/hooks/provider-manager.sh +196 -0
  46. package/agentvibes.org/.claude/hooks/sentiment-manager.sh +163 -0
  47. package/agentvibes.org/.claude/hooks/voice-manager.sh +349 -0
  48. package/agentvibes.org/.claude/hooks/voices-config.sh +33 -0
  49. package/agentvibes.org/.claude/journal/2025-10-07.html +373 -0
  50. package/agentvibes.org/.claude/journal/index.html +91 -0
  51. package/agentvibes.org/.claude/output-styles/agent-vibes.md +203 -0
  52. package/agentvibes.org/.claude/personalities/angry.md +16 -0
  53. package/agentvibes.org/.claude/personalities/annoying.md +16 -0
  54. package/agentvibes.org/.claude/personalities/crass.md +16 -0
  55. package/agentvibes.org/.claude/personalities/dramatic.md +16 -0
  56. package/agentvibes.org/.claude/personalities/dry-humor.md +52 -0
  57. package/agentvibes.org/.claude/personalities/flirty.md +22 -0
  58. package/agentvibes.org/.claude/personalities/funny.md +16 -0
  59. package/agentvibes.org/.claude/personalities/grandpa.md +34 -0
  60. package/agentvibes.org/.claude/personalities/millennial.md +16 -0
  61. package/agentvibes.org/.claude/personalities/moody.md +16 -0
  62. package/agentvibes.org/.claude/personalities/normal.md +18 -0
  63. package/agentvibes.org/.claude/personalities/pirate.md +16 -0
  64. package/agentvibes.org/.claude/personalities/poetic.md +16 -0
  65. package/agentvibes.org/.claude/personalities/professional.md +16 -0
  66. package/agentvibes.org/.claude/personalities/robot.md +16 -0
  67. package/agentvibes.org/.claude/personalities/sarcastic.md +40 -0
  68. package/agentvibes.org/.claude/personalities/sassy.md +16 -0
  69. package/agentvibes.org/.claude/personalities/surfer-dude.md +16 -0
  70. package/agentvibes.org/.claude/personalities/zen.md +16 -0
  71. package/agentvibes.org/.mcp-minimal.json +60 -0
  72. package/agentvibes.org/CHANGELOG.md +56 -0
  73. package/agentvibes.org/README.md +93 -0
  74. package/agentvibes.org/app/(auth)/layout.tsx +15 -0
  75. package/agentvibes.org/app/(auth)/reset-password/page.tsx +45 -0
  76. package/agentvibes.org/app/(auth)/signin/page.tsx +82 -0
  77. package/agentvibes.org/app/(auth)/signup/page.tsx +104 -0
  78. package/agentvibes.org/app/(default)/layout.tsx +31 -0
  79. package/agentvibes.org/app/(default)/page.tsx +20 -0
  80. package/agentvibes.org/app/api/hello/route.ts +3 -0
  81. package/agentvibes.org/app/css/additional-styles/theme.css +82 -0
  82. package/agentvibes.org/app/css/additional-styles/utility-patterns.css +55 -0
  83. package/agentvibes.org/app/css/style.css +100 -0
  84. package/agentvibes.org/app/layout.tsx +63 -0
  85. package/agentvibes.org/components/cta.tsx +58 -0
  86. package/agentvibes.org/components/features.tsx +256 -0
  87. package/agentvibes.org/components/hero-home.tsx +133 -0
  88. package/agentvibes.org/components/modal-video.tsx +137 -0
  89. package/agentvibes.org/components/page-illustration.tsx +55 -0
  90. package/agentvibes.org/components/spotlight.tsx +77 -0
  91. package/agentvibes.org/components/testimonials.tsx +282 -0
  92. package/agentvibes.org/components/ui/footer.tsx +82 -0
  93. package/agentvibes.org/components/ui/header.tsx +53 -0
  94. package/agentvibes.org/components/ui/logo.tsx +10 -0
  95. package/agentvibes.org/components/workflows.tsx +176 -0
  96. package/agentvibes.org/next.config.js +4 -0
  97. package/agentvibes.org/package-lock.json +1974 -0
  98. package/agentvibes.org/package.json +30 -0
  99. package/agentvibes.org/pnpm-lock.yaml +1141 -0
  100. package/agentvibes.org/postcss.config.js +5 -0
  101. package/agentvibes.org/public/audio/02-sarcastic.mp3 +0 -0
  102. package/agentvibes.org/public/audio/03-angry.mp3 +0 -0
  103. package/agentvibes.org/public/audio/04-grandpa.mp3 +0 -0
  104. package/agentvibes.org/public/audio/05-sarcastic-example2.mp3 +0 -0
  105. package/agentvibes.org/public/audio/french-rachel.mp3 +0 -0
  106. package/agentvibes.org/public/audio/spanish-antoni.mp3 +0 -0
  107. package/agentvibes.org/public/favicon.ico +0 -0
  108. package/agentvibes.org/public/fonts/nacelle-italic.woff2 +0 -0
  109. package/agentvibes.org/public/fonts/nacelle-regular.woff2 +0 -0
  110. package/agentvibes.org/public/fonts/nacelle-semibold.woff2 +0 -0
  111. package/agentvibes.org/public/fonts/nacelle-semibolditalic.woff2 +0 -0
  112. package/agentvibes.org/public/images/blurred-shape-gray.svg +1 -0
  113. package/agentvibes.org/public/images/blurred-shape.svg +1 -0
  114. package/agentvibes.org/public/images/client-logo-01.svg +1 -0
  115. package/agentvibes.org/public/images/client-logo-02.svg +1 -0
  116. package/agentvibes.org/public/images/client-logo-03.svg +1 -0
  117. package/agentvibes.org/public/images/client-logo-04.svg +1 -0
  118. package/agentvibes.org/public/images/client-logo-05.svg +1 -0
  119. package/agentvibes.org/public/images/client-logo-06.svg +1 -0
  120. package/agentvibes.org/public/images/client-logo-07.svg +1 -0
  121. package/agentvibes.org/public/images/client-logo-08.svg +1 -0
  122. package/agentvibes.org/public/images/client-logo-09.svg +1 -0
  123. package/agentvibes.org/public/images/features.png +0 -0
  124. package/agentvibes.org/public/images/footer-illustration.svg +1 -0
  125. package/agentvibes.org/public/images/hero-image-01.jpg +0 -0
  126. package/agentvibes.org/public/images/logo.svg +1 -0
  127. package/agentvibes.org/public/images/page-illustration.svg +1 -0
  128. package/agentvibes.org/public/images/secondary-illustration.svg +1 -0
  129. package/agentvibes.org/public/images/testimonial-01.jpg +0 -0
  130. package/agentvibes.org/public/images/testimonial-02.jpg +0 -0
  131. package/agentvibes.org/public/images/testimonial-03.jpg +0 -0
  132. package/agentvibes.org/public/images/testimonial-04.jpg +0 -0
  133. package/agentvibes.org/public/images/testimonial-05.jpg +0 -0
  134. package/agentvibes.org/public/images/testimonial-06.jpg +0 -0
  135. package/agentvibes.org/public/images/testimonial-07.jpg +0 -0
  136. package/agentvibes.org/public/images/testimonial-08.jpg +0 -0
  137. package/agentvibes.org/public/images/testimonial-09.jpg +0 -0
  138. package/agentvibes.org/public/images/workflow-01.png +0 -0
  139. package/agentvibes.org/public/images/workflow-02.png +0 -0
  140. package/agentvibes.org/public/images/workflow-03.png +0 -0
  141. package/agentvibes.org/public/videos/video.mp4 +0 -0
  142. package/agentvibes.org/tsconfig.json +28 -0
  143. package/agentvibes.org/utils/useMasonry.tsx +67 -0
  144. package/agentvibes.org/utils/useMousePosition.tsx +27 -0
  145. package/docs/REMOTE_TTS_SETUP.md +190 -0
  146. package/package.json +2 -2
  147. package/src/installer.js +193 -9
  148. package/test/helpers/test-helper.bash +4 -2
  149. package/test/unit/personality-manager.bats +16 -4
  150. package/test/unit/personality-voice-mapping.bats +15 -6
  151. package/test/unit/play-tts.bats +0 -9
  152. package/.claude/commands/agent-vibes-bmad.md +0 -132
@@ -0,0 +1,33 @@
1
+ #!/bin/bash
2
+ # Single source of truth for ElevenLabs voice IDs
3
+ # This file is sourced by both voice-manager.sh and play-tts.sh
4
+
5
+ declare -A VOICES=(
6
+ ["Amy"]="bhJUNIXWQQ94l8eI2VUf"
7
+ ["Antoni"]="ErXwobaYiN019PkySvjV"
8
+ ["Archer"]="L0Dsvb3SLTyegXwtm47J"
9
+ ["Aria"]="TC0Zp7WVFzhA8zpTlRqV"
10
+ ["Bella"]="EXAVITQu4vr4xnSDxMaL"
11
+ ["Burt Reynolds"]="4YYIPFl9wE5c4L2eu2Gb"
12
+ ["Charlotte"]="XB0fDUnXU5powFXDhCwa"
13
+ ["Cowboy Bob"]="KTPVrSVAEUSJRClDzBw7"
14
+ ["Demon Monster"]="vfaqCOvlrKi4Zp7C2IAm"
15
+ ["Domi"]="AZnzlk1XvdvUeBnXmlld"
16
+ ["Dr. Von Fusion"]="yjJ45q8TVCrtMhEKurxY"
17
+ ["Drill Sergeant"]="vfaqCOvlrKi4Zp7C2IAm"
18
+ ["Grandpa Spuds Oxley"]="NOpBlnGInO9m6vDvFkFC"
19
+ ["Grandpa Werthers"]="MKlLqCItoCkvdhrxgtLv"
20
+ ["Jessica Anne Bogart"]="flHkNRp1BlvT73UL6gyz"
21
+ ["Juniper"]="aMSt68OGf4xUZAnLpTU8"
22
+ ["Lutz Laugh"]="9yzdeviXkFddZ4Oz8Mok"
23
+ ["Matilda"]="XrExE9yKIg1WjnnlVkGX"
24
+ ["Matthew Schmitz"]="0SpgpJ4D3MpHCiWdyTg3"
25
+ ["Michael"]="U1Vk2oyatMdYs096Ety7"
26
+ ["Ms. Walker"]="DLsHlh26Ugcm6ELvS0qi"
27
+ ["Northern Terry"]="wo6udizrrtpIxWGp2qJk"
28
+ ["Pirate Marshal"]="PPzYpIqttlTYA83688JI"
29
+ ["Rachel"]="21m00Tcm4TlvDq8ikWAM"
30
+ ["Ralf Eisend"]="A9evEp8yGjv4c3WsIKuY"
31
+ ["Tiffany"]="6aDn1KB0hjpdcocrUkmq"
32
+ ["Tom"]="DYkrAHD8iwork3YSUBbs"
33
+ )
@@ -0,0 +1,373 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title>Claude Transcript - 2025-10-07</title>
6
+ <style>
7
+ body {
8
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
9
+ margin: 0;
10
+ padding: 0;
11
+ background: #f5f5f5;
12
+ display: flex;
13
+ }
14
+ .sidebar {
15
+ width: 200px;
16
+ background: white;
17
+ padding: 20px;
18
+ height: 100vh;
19
+ position: sticky;
20
+ top: 0;
21
+ box-shadow: 2px 0 4px rgba(0,0,0,0.1);
22
+ overflow-y: auto;
23
+ }
24
+ .sidebar h3 {
25
+ margin-top: 0;
26
+ color: #667eea;
27
+ }
28
+ .sidebar a {
29
+ display: block;
30
+ padding: 8px 12px;
31
+ margin: 5px 0;
32
+ text-decoration: none;
33
+ color: #333;
34
+ border-radius: 5px;
35
+ transition: background 0.2s;
36
+ cursor: pointer;
37
+ }
38
+ .sidebar a:hover {
39
+ background: #f0f0f0;
40
+ }
41
+ .sidebar a.active {
42
+ background: #667eea;
43
+ color: white;
44
+ }
45
+ .spinner {
46
+ position: fixed;
47
+ top: 50%;
48
+ left: 50%;
49
+ transform: translate(-50%, -50%);
50
+ border: 4px solid #f3f3f3;
51
+ border-top: 4px solid #667eea;
52
+ border-radius: 50%;
53
+ width: 50px;
54
+ height: 50px;
55
+ animation: spin 1s linear infinite;
56
+ display: none;
57
+ z-index: 1000;
58
+ }
59
+ @keyframes spin {
60
+ 0% { transform: translate(-50%, -50%) rotate(0deg); }
61
+ 100% { transform: translate(-50%, -50%) rotate(360deg); }
62
+ }
63
+ .loading {
64
+ pointer-events: none;
65
+ opacity: 0.6;
66
+ }
67
+ .main-content {
68
+ flex: 1;
69
+ max-width: 900px;
70
+ margin: 0 auto;
71
+ padding: 20px;
72
+ }
73
+ .header {
74
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
75
+ color: white;
76
+ padding: 30px;
77
+ border-radius: 10px;
78
+ margin-bottom: 30px;
79
+ position: relative;
80
+ }
81
+ .report-btn {
82
+ position: absolute;
83
+ top: 30px;
84
+ right: 30px;
85
+ background: rgba(255,255,255,0.2);
86
+ border: 2px solid white;
87
+ color: white;
88
+ padding: 10px 20px;
89
+ border-radius: 5px;
90
+ cursor: pointer;
91
+ font-size: 14px;
92
+ font-weight: 500;
93
+ transition: all 0.3s;
94
+ }
95
+ .report-btn:hover {
96
+ background: white;
97
+ color: #667eea;
98
+ }
99
+ .report-btn:disabled {
100
+ opacity: 0.5;
101
+ cursor: not-allowed;
102
+ }
103
+ .report-status {
104
+ margin-top: 15px;
105
+ padding: 10px;
106
+ border-radius: 5px;
107
+ background: rgba(255,255,255,0.1);
108
+ display: none;
109
+ }
110
+ .report-status.show {
111
+ display: block;
112
+ }
113
+ .message {
114
+ background: white;
115
+ border-radius: 8px;
116
+ padding: 20px;
117
+ margin: 15px 0;
118
+ box-shadow: 0 2px 4px rgba(0,0,0,0.1);
119
+ }
120
+ .user {
121
+ border-left: 4px solid #667eea;
122
+ background: white;
123
+ }
124
+ .assistant {
125
+ border-left: 4px solid #764ba2;
126
+ background: #f8f8f8;
127
+ }
128
+ .content {
129
+ word-wrap: break-word;
130
+ line-height: 1.6;
131
+ }
132
+ .content code {
133
+ background: #f0f0f0;
134
+ padding: 2px 6px;
135
+ border-radius: 3px;
136
+ font-family: 'Courier New', monospace;
137
+ font-size: 0.9em;
138
+ }
139
+ .content pre {
140
+ background: #2d2d2d;
141
+ color: #f8f8f8;
142
+ padding: 15px;
143
+ border-radius: 5px;
144
+ overflow-x: auto;
145
+ margin: 10px 0;
146
+ }
147
+ .content pre code {
148
+ background: none;
149
+ color: inherit;
150
+ padding: 0;
151
+ }
152
+ .content a {
153
+ color: #667eea;
154
+ text-decoration: none;
155
+ }
156
+ .content a:hover {
157
+ text-decoration: underline;
158
+ }
159
+ .content strong {
160
+ font-weight: 600;
161
+ }
162
+ .timestamp {
163
+ color: #666;
164
+ font-size: 0.85em;
165
+ margin-bottom: 10px;
166
+ }
167
+ .audio-player {
168
+ margin-top: 10px;
169
+ padding: 10px;
170
+ background: #f0f0f0;
171
+ border-radius: 5px;
172
+ }
173
+ audio {
174
+ width: 100%;
175
+ max-width: 400px;
176
+ }
177
+ .summary {
178
+ background: #e3f2fd;
179
+ padding: 15px;
180
+ border-radius: 5px;
181
+ margin-bottom: 20px;
182
+ }
183
+ </style>
184
+ </head>
185
+ <body>
186
+ <div class="spinner" id="spinner"></div>
187
+ <div class="sidebar"><h3>📅 Journal</h3><a href="2025-10-07.html" class="active">Oct 07</a></div>
188
+ <div class="main-content">
189
+ <div class="header">
190
+ <h1>📝 Claude Code Journal</h1>
191
+ <p>2025-10-07</p>
192
+ <button id="generate-report-btn" class="report-btn">
193
+ 📊 Generate AI Report
194
+ </button>
195
+ <div id="report-status" class="report-status"></div>
196
+ </div>
197
+
198
+ <div class="message user">
199
+ <div class="timestamp">👤 06:20 PM</div>
200
+ <div class="content"><p>On the website, make special mention that we used the BMAD method and linked to the BMAD method GitHub. https://github.com/bmad-code-org/BMAD-METHOD</p>
201
+ </div>
202
+ </div>
203
+
204
+ <div class="message assistant">
205
+ <div class="timestamp">🤖 06:20 PM</div>
206
+ <div class="content"><p>I'll help you add a mention of the BMAD method with a link to the GitHub repository on the website. Let me first explore the codebase structure to find the appropriate place to add this.</p>
207
+ </div>
208
+ </div>
209
+
210
+ <div class="message assistant">
211
+ <div class="timestamp">🤖 06:20 PM</div>
212
+ <div class="content"><p>Let me look at the main page and key components to understand where to add the BMAD method mention:</p>
213
+ </div>
214
+ </div>
215
+
216
+ <div class="message assistant">
217
+ <div class="timestamp">🤖 06:20 PM</div>
218
+ <div class="content"><p>I can see the website already has a &quot;BMAD Plugin Integration&quot; feature mentioned in the Features section at line 161-166 of <code>components/features.tsx</code>. I'll update this to add a link to the BMAD method GitHub repository and make the mention more prominent. Let me also check if there are other suitable places to add this information.</p>
219
+ </div>
220
+ </div>
221
+
222
+ <div class="message assistant">
223
+ <div class="timestamp">🤖 06:20 PM</div>
224
+ <div class="content"><p>Perfect! I've added a link to the BMAD method GitHub repository in the Features section. The &quot;BMAD agents&quot; text is now a clickable link that opens https://github.com/bmad-code-org/BMAD-METHOD in a new tab. The link is styled to stand out with an indigo color and underline, matching the site's design aesthetic.</p>
225
+ </div>
226
+ </div>
227
+
228
+ <div class="message user">
229
+ <div class="timestamp">👤 06:37 PM</div>
230
+ <div class="content"><p>get rid of the watch demo on wegsite</p>
231
+ </div>
232
+ </div>
233
+
234
+ <div class="message assistant">
235
+ <div class="timestamp">🤖 06:37 PM</div>
236
+ <div class="content"><p>I'll remove the demo video section from the website.</p>
237
+ </div>
238
+ </div>
239
+
240
+ <div class="message assistant">
241
+ <div class="timestamp">🤖 06:37 PM</div>
242
+ <div class="content"><p>Done! I've removed the watch demo/modal video section from the website. The imports for <code>VideoThumb</code> and <code>ModalVideo</code> have been removed, and the <code>&lt;ModalVideo&gt;</code> component has been deleted from the hero section.</p>
243
+ </div>
244
+ </div>
245
+
246
+ <div class="message user">
247
+ <div class="timestamp">👤 06:38 PM</div>
248
+ <div class="content"><p>get rid of the X and medium icons ion the footer</p>
249
+ </div>
250
+ </div>
251
+
252
+ <div class="message assistant">
253
+ <div class="timestamp">🤖 06:38 PM</div>
254
+ <div class="content"><p>Done! I've removed the X (Twitter) and Medium icons from the footer, keeping only the GitHub icon.</p>
255
+ </div>
256
+ </div>
257
+
258
+ <div class="message user">
259
+ <div class="timestamp">👤 06:48 PM</div>
260
+ <div class="content"><p>install the vercel mcp in .mcp-minimal.json https://vercel.com/docs/mcp/vercel-mcp</p>
261
+ </div>
262
+ </div>
263
+
264
+ <div class="message assistant">
265
+ <div class="timestamp">🤖 06:48 PM</div>
266
+ <div class="content"><p>I'll install the Vercel MCP by adding it to the <code>.mcp-minimal.json</code> configuration file.</p>
267
+ </div>
268
+ </div>
269
+
270
+ <div class="message assistant">
271
+ <div class="timestamp">🤖 06:48 PM</div>
272
+ <div class="content"><p>Done! I've added the Vercel MCP server to <code>.mcp-minimal.json</code>. The configuration uses:</p>
273
+ <ul>
274
+ <li><code>npx</code> with <code>-y</code> flag to auto-confirm installation</li>
275
+ <li><code>@vercel/mcp-server</code> package</li>
276
+ <li><code>VERCEL_API_TOKEN</code> environment variable for authentication</li>
277
+ </ul>
278
+ <p>You'll need to set the <code>VERCEL_API_TOKEN</code> environment variable with your Vercel API token for it to work.</p>
279
+ </div>
280
+ </div>
281
+
282
+ <div class="message user">
283
+ <div class="timestamp">👤 06:49 PM</div>
284
+ <div class="content"><p>please look in ~/.zshrc</p>
285
+ </div>
286
+ </div>
287
+
288
+ <div class="message assistant">
289
+ <div class="timestamp">🤖 06:50 PM</div>
290
+ <div class="content"><p>I can see your <code>~/.zshrc</code> file. I notice you have a <code>VERCEL_TOKEN</code> environment variable defined on line 484. For the Vercel MCP to work, it needs <code>VERCEL_API_TOKEN</code> (not <code>VERCEL_TOKEN</code>). Let me update the <code>.mcp-minimal.json</code> to use the existing token variable name, or you can add a new <code>VERCEL_API_TOKEN</code> variable to your <code>.zshrc</code>.</p>
291
+ <p>Would you like me to:</p>
292
+ <ol>
293
+ <li>Add <code>export VERCEL_API_TOKEN=&quot;${VERCEL_TOKEN}&quot;</code> to your <code>.zshrc</code> to alias the existing token, or</li>
294
+ <li>Keep the MCP config as-is and you manually add <code>VERCEL_API_TOKEN</code> to your environment variables?</li>
295
+ </ol>
296
+ <p>The current value I see is: <code>VERCEL_TOKEN=&quot;Qfd1W7PKsXUbIQTGORh4T1yi&quot;</code></p>
297
+ </div>
298
+ </div>
299
+
300
+ <div class="message user">
301
+ <div class="timestamp">👤 06:51 PM</div>
302
+ <div class="content"><p>change this to Xc7to03gFud0y1bHzKVwqCzO and call it AGENT_VIBES_VERCEL_TOKEN</p>
303
+ </div>
304
+ </div>
305
+
306
+ <div class="message assistant">
307
+ <div class="timestamp">🤖 06:51 PM</div>
308
+ <div class="content"><p>Now let me update the <code>.mcp-minimal.json</code> to use this new environment variable:</p>
309
+ </div>
310
+ </div>
311
+
312
+ <div class="message assistant">
313
+ <div class="timestamp">🤖 06:51 PM</div>
314
+ <div class="content"><p>Done! I've:</p>
315
+ <ol>
316
+ <li>Added <code>export AGENT_VIBES_VERCEL_TOKEN=&quot;Xc7to03gFud0y1bHzKVwqCzO&quot;</code> to your <code>~/.zshrc</code></li>
317
+ <li>Updated <code>.mcp-minimal.json</code> to use <code>${AGENT_VIBES_VERCEL_TOKEN}</code> for the Vercel MCP server</li>
318
+ </ol>
319
+ <p>You'll need to restart your terminal or run <code>source ~/.zshrc</code> for the new environment variable to take effect.</p>
320
+ </div>
321
+ </div>
322
+
323
+ </div>
324
+ <script>
325
+ // Add spinner to sidebar links
326
+ document.querySelectorAll('.sidebar a').forEach(link => {
327
+ link.addEventListener('click', (e) => {
328
+ document.getElementById('spinner').style.display = 'block';
329
+ document.querySelector('.main-content').classList.add('loading');
330
+ });
331
+ });
332
+
333
+ // Report generation button
334
+ const reportBtn = document.getElementById('generate-report-btn');
335
+ const reportStatus = document.getElementById('report-status');
336
+
337
+ if (reportBtn) {
338
+ reportBtn.addEventListener('click', async () => {
339
+ reportBtn.disabled = true;
340
+ reportBtn.textContent = '⏳ Generating...';
341
+ reportStatus.classList.add('show');
342
+ reportStatus.textContent = 'Analyzing conversation with OpenAI GPT-4o...';
343
+
344
+ try {
345
+ // Get current page date from title
346
+ const pageTitle = document.title;
347
+ const dateMatch = pageTitle.match(/\d{{4}}-\d{{2}}-\d{{2}}/);
348
+ const date = dateMatch ? dateMatch[0] : 'unknown';
349
+
350
+ // Call report generation script via file:// protocol won't work
351
+ // Instead, show instructions
352
+ reportStatus.innerHTML = `
353
+ <strong>To generate a report for this session:</strong><br><br>
354
+ Run this command in your terminal:<br>
355
+ <code style="background: rgba(0,0,0,0.3); padding: 5px 10px; border-radius: 3px; display: block; margin-top: 5px;">
356
+ /report
357
+ </code><br>
358
+ <em>Or if you know the transcript path:</em><br>
359
+ <code style="background: rgba(0,0,0,0.3); padding: 5px 10px; border-radius: 3px; display: block; margin-top: 5px;">
360
+ ~/.claude/UsefulClaudeCustomizations/.claude/hooks/generate-session-report.sh TRANSCRIPT_PATH
361
+ </code>
362
+ `;
363
+ reportBtn.textContent = '📋 See Instructions';
364
+ } catch (error) {
365
+ reportStatus.textContent = 'Error: ' + error.message;
366
+ } finally {
367
+ reportBtn.disabled = false;
368
+ }
369
+ });
370
+ }
371
+ </script>
372
+ </body>
373
+ </html>
@@ -0,0 +1,91 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title>Claude Journal Calendar</title>
6
+ <style>
7
+ body {
8
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
9
+ max-width: 1200px;
10
+ margin: 0 auto;
11
+ padding: 20px;
12
+ background: #f5f5f5;
13
+ }
14
+ .header {
15
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
16
+ color: white;
17
+ padding: 40px;
18
+ border-radius: 10px;
19
+ margin-bottom: 30px;
20
+ text-align: center;
21
+ }
22
+ .calendar {
23
+ display: grid;
24
+ grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
25
+ gap: 20px;
26
+ }
27
+ .day-card {
28
+ background: white;
29
+ border-radius: 8px;
30
+ padding: 20px;
31
+ text-decoration: none;
32
+ color: inherit;
33
+ box-shadow: 0 2px 4px rgba(0,0,0,0.1);
34
+ transition: transform 0.2s, box-shadow 0.2s;
35
+ }
36
+ .day-card:hover {
37
+ transform: translateY(-2px);
38
+ box-shadow: 0 4px 8px rgba(0,0,0,0.15);
39
+ }
40
+ .day-date {
41
+ font-size: 1.2em;
42
+ font-weight: bold;
43
+ color: #667eea;
44
+ margin-bottom: 5px;
45
+ }
46
+ .spinner {
47
+ position: fixed;
48
+ top: 50%;
49
+ left: 50%;
50
+ transform: translate(-50%, -50%);
51
+ border: 4px solid #f3f3f3;
52
+ border-top: 4px solid #667eea;
53
+ border-radius: 50%;
54
+ width: 50px;
55
+ height: 50px;
56
+ animation: spin 1s linear infinite;
57
+ display: none;
58
+ z-index: 1000;
59
+ }
60
+ @keyframes spin {
61
+ 0% { transform: translate(-50%, -50%) rotate(0deg); }
62
+ 100% { transform: translate(-50%, -50%) rotate(360deg); }
63
+ }
64
+ .loading {
65
+ pointer-events: none;
66
+ opacity: 0.6;
67
+ }
68
+ </style>
69
+ </head>
70
+ <body>
71
+ <div class="spinner" id="spinner"></div>
72
+ <div class="header">
73
+ <h1>📅 Claude Code Journal</h1>
74
+ <p>Your daily conversation transcripts</p>
75
+ </div>
76
+ <div class="calendar" id="calendar">
77
+
78
+ <a href="2025-10-07.html" class="day-card" onclick="showSpinner(event)">
79
+ <div class="day-date">📝 October 07, 2025</div>
80
+ <div>Tuesday</div>
81
+ </a>
82
+
83
+ </div>
84
+ <script>
85
+ function showSpinner(event) {
86
+ document.getElementById('spinner').style.display = 'block';
87
+ document.getElementById('calendar').classList.add('loading');
88
+ }
89
+ </script>
90
+ </body>
91
+ </html>