agentvibes 1.0.21 → 1.0.23

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 CHANGED
@@ -9,7 +9,7 @@
9
9
  [![Publish](https://github.com/paulpreibisch/AgentVibes/actions/workflows/publish.yml/badge.svg)](https://github.com/paulpreibisch/AgentVibes/actions/workflows/publish.yml)
10
10
  [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
11
11
 
12
- **Author**: Paul Preibisch ([@997Fire](https://x.com/997Fire)) | **Version**: v1.0.20
12
+ **Author**: Paul Preibisch ([@997Fire](https://x.com/997Fire)) | **Version**: v1.0.22
13
13
 
14
14
  ---
15
15
 
@@ -43,7 +43,7 @@
43
43
 
44
44
  ## šŸ“° Latest Release
45
45
 
46
- **[v1.0.20 - Release Notes](https://github.com/paulpreibisch/AgentVibes/releases/tag/v1.0.20)** šŸŒ
46
+ **[v1.0.22 - Release Notes](https://github.com/paulpreibisch/AgentVibes/releases/tag/v1.0.22)** šŸŒ
47
47
 
48
48
  Multilingual support is here! Speak with Claude in 30+ languages including Spanish, French, German, Italian, Portuguese, Chinese, Japanese, and more. Added 6 multilingual voices, fixed slash command discovery, and improved update experience with release notes fallback.
49
49
 
package/RELEASE_NOTES.md CHANGED
@@ -56,12 +56,22 @@ try {
56
56
  - RELEASE_NOTES.md now serves as fallback documentation
57
57
  - Better user experience for npm package installations
58
58
 
59
+ ## šŸ“ Recent Commits
60
+
61
+ ```
62
+ 456abb0 docs: Update version to v1.0.21 [skip ci]
63
+ 3dfdcb5 fix: Include RELEASE_NOTES.md in npm package for installer fallback
64
+ 96f8a9b docs: Update README and RELEASE_NOTES to v1.0.20 [skip ci]
65
+ 5e2e3cc chore: Bump version to 1.0.20 for npm publish
66
+ 1636b14 feat: Show release notes from RELEASE_NOTES.md when git is unavailable
67
+ ```
68
+
59
69
  ## šŸ“Š Release Stats
60
70
 
61
- - **2 commits** since v1.0.19
62
- - **1 file changed**: src/installer.js
63
- - **56 insertions**, **4 deletions**
64
- - **1 bug fix**: Release notes display in npx installations
71
+ - **5 commits** since v1.0.19
72
+ - **3 files changed**: .npmignore, README.md, RELEASE_NOTES.md
73
+ - **10 insertions**, **4 deletions**
74
+ - **1 bug fix**: RELEASE_NOTES.md now included in npm package
65
75
  - **0 breaking changes**
66
76
 
67
77
  ## šŸŽÆ User Experience Improvements
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "agentvibes",
4
- "version": "1.0.21",
4
+ "version": "1.0.23",
5
5
  "description": "Beautiful ElevenLabs TTS voice commands for Claude Code - Add professional narration to your AI coding sessions",
6
6
  "keywords": [
7
7
  "elevenlabs",
package/src/installer.js CHANGED
@@ -278,26 +278,34 @@ async function install(options = {}) {
278
278
  const releaseNotesPath = path.join(__dirname, '..', 'RELEASE_NOTES.md');
279
279
  const releaseNotes = await fs.readFile(releaseNotesPath, 'utf8');
280
280
 
281
- // Extract latest release section (first release in the file)
281
+ // Extract commits from "Recent Commits" section
282
282
  const lines = releaseNotes.split('\n');
283
- const releaseHeader = lines.find(line => line.startsWith('# Release v'));
284
- const summaryIndex = lines.findIndex(line => line.includes('## šŸ¤– AI Summary'));
285
-
286
- if (releaseHeader && summaryIndex > 0) {
287
- // Get the summary paragraph (next non-empty line after AI Summary)
288
- let summaryText = '';
289
- for (let i = summaryIndex + 1; i < lines.length; i++) {
290
- const line = lines[i].trim();
291
- if (line && !line.startsWith('#')) {
292
- summaryText = line;
293
- break;
283
+ const commitsIndex = lines.findIndex(line => line.includes('## šŸ“ Recent Commits'));
284
+
285
+ if (commitsIndex >= 0) {
286
+ console.log(chalk.cyan('šŸ“ Recent Changes:\n'));
287
+
288
+ // Find the code block with commits (between ``` markers)
289
+ let inCodeBlock = false;
290
+ for (let i = commitsIndex + 1; i < lines.length; i++) {
291
+ const line = lines[i];
292
+
293
+ if (line.trim() === '```') {
294
+ if (inCodeBlock) break; // End of code block
295
+ inCodeBlock = true;
296
+ continue;
294
297
  }
295
- }
296
298
 
297
- if (summaryText) {
298
- console.log(chalk.cyan(`šŸ“° ${releaseHeader.replace('# ', '')}\n`));
299
- console.log(chalk.white(` ${summaryText}\n`));
299
+ if (inCodeBlock && line.trim()) {
300
+ // Parse commit line: "hash message"
301
+ const match = line.match(/^([a-f0-9]+)\s+(.+)$/);
302
+ if (match) {
303
+ const [, hash, message] = match;
304
+ console.log(chalk.gray(` ${hash}`) + ' ' + chalk.white(message));
305
+ }
306
+ }
300
307
  }
308
+ console.log();
301
309
  }
302
310
  } catch {
303
311
  // No release notes available
@@ -422,11 +430,50 @@ program
422
430
  );
423
431
  const version = packageJson.version;
424
432
 
425
- console.log(chalk.cyan('\nšŸ”„ AgentVibes Update\n'));
426
- console.log(chalk.bold(` Version: ${version}`));
427
- console.log(chalk.gray(` Current directory: ${currentDir}`));
428
- console.log(chalk.gray(` Update location: ${targetDir}/.claude/`));
429
- console.log(chalk.gray(` Source: ${__dirname}/../\n`));
433
+ // Generate two-tone ASCII art
434
+ const agentText = figlet.textSync('Agent', {
435
+ font: 'ANSI Shadow',
436
+ horizontalLayout: 'default',
437
+ });
438
+ const vibesText = figlet.textSync('Vibes', {
439
+ font: 'ANSI Shadow',
440
+ horizontalLayout: 'default',
441
+ });
442
+
443
+ // Add blank line for spacing
444
+ console.log();
445
+
446
+ // Combine the two parts with different colors
447
+ const agentLines = agentText.split('\n');
448
+ const vibesLines = vibesText.split('\n');
449
+ const maxLength = Math.max(...agentLines.map(line => line.length));
450
+
451
+ for (let i = 0; i < agentLines.length; i++) {
452
+ const agentLine = agentLines[i].padEnd(maxLength);
453
+ const vibesLine = vibesLines[i] || '';
454
+ console.log(chalk.cyan(agentLine) + chalk.magenta(vibesLine));
455
+ }
456
+ console.log();
457
+
458
+ // Welcome box
459
+ console.log(
460
+ boxen(
461
+ chalk.white('šŸŽ¤ Beautiful ElevenLabs TTS Voice Commands for Claude Code\n\n') +
462
+ chalk.gray('Add professional text-to-speech narration to your AI coding sessions\n\n') +
463
+ chalk.cyan('šŸ“¦ https://github.com/paulpreibisch/AgentVibes'),
464
+ {
465
+ padding: 1,
466
+ margin: 1,
467
+ borderStyle: 'round',
468
+ borderColor: 'cyan',
469
+ }
470
+ )
471
+ );
472
+
473
+ console.log(chalk.cyan('šŸ“ Update Details:'));
474
+ console.log(chalk.white(` Current directory: ${currentDir}`));
475
+ console.log(chalk.white(` Update location: ${targetDir}/.claude/ (project-local)`));
476
+ console.log(chalk.white(` Package version: ${version}\n`));
430
477
 
431
478
  // Check if already installed
432
479
  const commandsDir = path.join(targetDir, '.claude', 'commands', 'agent-vibes');
@@ -442,6 +489,64 @@ program
442
489
  process.exit(1);
443
490
  }
444
491
 
492
+ // Show recent changes from git log or RELEASE_NOTES.md
493
+ try {
494
+ const { execSync } = await import('node:child_process');
495
+ const gitLog = execSync(
496
+ 'git log --oneline --no-decorate -5',
497
+ { cwd: path.join(__dirname, '..'), encoding: 'utf8' }
498
+ ).trim();
499
+
500
+ if (gitLog) {
501
+ console.log(chalk.cyan('šŸ“° Latest Release Notes:\n'));
502
+ const commits = gitLog.split('\n');
503
+ commits.forEach(commit => {
504
+ const [hash, ...messageParts] = commit.split(' ');
505
+ const message = messageParts.join(' ');
506
+ console.log(chalk.gray(` ${hash}`) + ' ' + chalk.white(message));
507
+ });
508
+ console.log();
509
+ }
510
+ } catch (error) {
511
+ // Git not available or not a git repo - try RELEASE_NOTES.md
512
+ try {
513
+ const releaseNotesPath = path.join(__dirname, '..', 'RELEASE_NOTES.md');
514
+ const releaseNotes = await fs.readFile(releaseNotesPath, 'utf8');
515
+
516
+ // Extract commits from "Recent Commits" section
517
+ const lines = releaseNotes.split('\n');
518
+ const commitsIndex = lines.findIndex(line => line.includes('## šŸ“ Recent Commits'));
519
+
520
+ if (commitsIndex >= 0) {
521
+ console.log(chalk.cyan('šŸ“° Latest Release Notes:\n'));
522
+
523
+ // Find the code block with commits (between ``` markers)
524
+ let inCodeBlock = false;
525
+ for (let i = commitsIndex + 1; i < lines.length; i++) {
526
+ const line = lines[i];
527
+
528
+ if (line.trim() === '```') {
529
+ if (inCodeBlock) break; // End of code block
530
+ inCodeBlock = true;
531
+ continue;
532
+ }
533
+
534
+ if (inCodeBlock && line.trim()) {
535
+ // Parse commit line: "hash message"
536
+ const match = line.match(/^([a-f0-9]+)\s+(.+)$/);
537
+ if (match) {
538
+ const [, hash, message] = match;
539
+ console.log(chalk.gray(` ${hash}`) + ' ' + chalk.white(message));
540
+ }
541
+ }
542
+ }
543
+ console.log();
544
+ }
545
+ } catch {
546
+ // No release notes available
547
+ }
548
+ }
549
+
445
550
  console.log(chalk.cyan('šŸ“¦ What will be updated:'));
446
551
  console.log(chalk.gray(' • Slash commands (keep your customizations)'));
447
552
  console.log(chalk.gray(' • TTS scripts'));
@@ -573,26 +678,34 @@ program
573
678
  const releaseNotesPath = path.join(__dirname, '..', 'RELEASE_NOTES.md');
574
679
  const releaseNotes = await fs.readFile(releaseNotesPath, 'utf8');
575
680
 
576
- // Extract latest release section (first release in the file)
681
+ // Extract commits from "Recent Commits" section
577
682
  const lines = releaseNotes.split('\n');
578
- const releaseHeader = lines.find(line => line.startsWith('# Release v'));
579
- const summaryIndex = lines.findIndex(line => line.includes('## šŸ¤– AI Summary'));
580
-
581
- if (releaseHeader && summaryIndex > 0) {
582
- // Get the summary paragraph (next non-empty line after AI Summary)
583
- let summaryText = '';
584
- for (let i = summaryIndex + 1; i < lines.length; i++) {
585
- const line = lines[i].trim();
586
- if (line && !line.startsWith('#')) {
587
- summaryText = line;
588
- break;
683
+ const commitsIndex = lines.findIndex(line => line.includes('## šŸ“ Recent Commits'));
684
+
685
+ if (commitsIndex >= 0) {
686
+ console.log(chalk.cyan('šŸ“ Recent Changes:\n'));
687
+
688
+ // Find the code block with commits (between ``` markers)
689
+ let inCodeBlock = false;
690
+ for (let i = commitsIndex + 1; i < lines.length; i++) {
691
+ const line = lines[i];
692
+
693
+ if (line.trim() === '```') {
694
+ if (inCodeBlock) break; // End of code block
695
+ inCodeBlock = true;
696
+ continue;
589
697
  }
590
- }
591
698
 
592
- if (summaryText) {
593
- console.log(chalk.cyan(`šŸ“° ${releaseHeader.replace('# ', '')}\n`));
594
- console.log(chalk.white(` ${summaryText}\n`));
699
+ if (inCodeBlock && line.trim()) {
700
+ // Parse commit line: "hash message"
701
+ const match = line.match(/^([a-f0-9]+)\s+(.+)$/);
702
+ if (match) {
703
+ const [, hash, message] = match;
704
+ console.log(chalk.gray(` ${hash}`) + ' ' + chalk.white(message));
705
+ }
706
+ }
595
707
  }
708
+ console.log();
596
709
  }
597
710
  } catch {
598
711
  // No release notes available