agentvibes 2.1.3 โ†’ 2.1.5

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.
@@ -0,0 +1,300 @@
1
+ # macOS Testing with GitHub Actions
2
+
3
+ This document explains how AgentVibes is tested on macOS using GitHub Actions, and how you can contribute to macOS testing.
4
+
5
+ ## ๐ŸŽฏ Overview
6
+
7
+ AgentVibes uses GitHub Actions to automatically test on macOS runners, ensuring compatibility across different macOS versions and architectures (Intel and Apple Silicon).
8
+
9
+ ## ๐Ÿ“‹ Test Coverage
10
+
11
+ ### Automated Tests Run On:
12
+ - **macOS Versions**: macOS 13 (Intel), macOS 14 (M1), macOS 15 (latest)
13
+ - **Node Versions**: 18, 20, 22
14
+ - **Architectures**: x86_64 (Intel) and arm64 (Apple Silicon)
15
+
16
+ ### What Gets Tested:
17
+
18
+ 1. **Unit Tests** - All BATS test suites run on macOS
19
+ 2. **Installation Process** - npm package installation
20
+ 3. **Audio Tools** - ffmpeg, afplay, mpv availability
21
+ 4. **Piper TTS** - Binary availability for Intel/ARM architectures
22
+ 5. **ElevenLabs API** - Mock API integration tests
23
+ 6. **Python/MCP** - MCP server dependencies
24
+ 7. **Audio Generation** - Actual audio file creation using ffmpeg
25
+
26
+ ## ๐Ÿš€ Workflows
27
+
28
+ ### Main Test Workflow (`.github/workflows/test.yml`)
29
+ Runs on every push and PR to `master` branch:
30
+ - Tests on both Ubuntu and macOS
31
+ - Uses Node 18 and 20
32
+ - Fast execution for quick feedback
33
+
34
+ ### Dedicated macOS Workflow (`.github/workflows/test-macos.yml`)
35
+ More comprehensive macOS-specific testing:
36
+ - Tests on macOS 13, 14, and 15
37
+ - Tests Node 18, 20, and 22
38
+ - Detailed system information gathering
39
+ - Architecture-specific Piper TTS validation
40
+ - Audio playback tool verification
41
+
42
+ ## ๐Ÿ”ง What's Tested on macOS
43
+
44
+ ### System Compatibility
45
+ ```bash
46
+ โœ… macOS version detection (sw_vers)
47
+ โœ… Architecture detection (Intel vs Apple Silicon)
48
+ โœ… Node.js version compatibility
49
+ โœ… Shell environment (zsh/bash)
50
+ ```
51
+
52
+ ### Audio Stack
53
+ ```bash
54
+ โœ… afplay (native macOS audio player)
55
+ โœ… ffmpeg (audio conversion)
56
+ โœ… mpv (alternative audio player)
57
+ โœ… Audio device detection
58
+ โœ… Audio file generation
59
+ ```
60
+
61
+ ### Dependencies
62
+ ```bash
63
+ โœ… BATS test framework (via Homebrew)
64
+ โœ… Python 3 and pip
65
+ โœ… MCP package installation
66
+ โœ… npm dependencies
67
+ ```
68
+
69
+ ### AgentVibes Features
70
+ ```bash
71
+ โœ… ElevenLabs API integration (mock)
72
+ โœ… Piper TTS binary availability
73
+ โœ… Voice configuration
74
+ โœ… Audio file management
75
+ โœ… Installation scripts
76
+ ```
77
+
78
+ ## ๐Ÿงช Running Tests Locally on macOS
79
+
80
+ ### Prerequisites
81
+ ```bash
82
+ # Install Homebrew (if not already installed)
83
+ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
84
+
85
+ # Install BATS
86
+ brew install bats-core
87
+
88
+ # Install audio tools
89
+ brew install ffmpeg mpv
90
+ ```
91
+
92
+ ### Run Tests
93
+ ```bash
94
+ # Clone the repository
95
+ git clone https://github.com/paulpreibisch/AgentVibes.git
96
+ cd AgentVibes
97
+
98
+ # Install dependencies
99
+ npm install
100
+
101
+ # Run all tests
102
+ npm test
103
+
104
+ # Run tests with verbose output
105
+ npm run test:verbose
106
+ ```
107
+
108
+ ### Test Specific Components
109
+ ```bash
110
+ # Test play-tts functionality
111
+ bats test/unit/play-tts.bats
112
+
113
+ # Test voice management
114
+ bats test/unit/voice-manager.bats
115
+
116
+ # Test personality features
117
+ bats test/unit/personality-manager.bats
118
+
119
+ # Test provider switching
120
+ bats test/unit/provider-manager.bats
121
+ ```
122
+
123
+ ## ๐Ÿ› Debugging Test Failures
124
+
125
+ ### Check System Info
126
+ ```bash
127
+ # macOS version
128
+ sw_vers
129
+
130
+ # Architecture
131
+ uname -m
132
+
133
+ # Node version
134
+ node --version
135
+
136
+ # Check audio devices
137
+ system_profiler SPAudioDataType
138
+
139
+ # Check for audio tools
140
+ which afplay ffmpeg mpv
141
+ ```
142
+
143
+ ### Common Issues
144
+
145
+ **BATS not found:**
146
+ ```bash
147
+ brew install bats-core
148
+ ```
149
+
150
+ **ffmpeg not found:**
151
+ ```bash
152
+ brew install ffmpeg
153
+ ```
154
+
155
+ **Python MCP issues:**
156
+ ```bash
157
+ python3 -m pip install --upgrade mcp
158
+ ```
159
+
160
+ **Permission errors:**
161
+ ```bash
162
+ # Fix npm permissions
163
+ sudo chown -R $(whoami) ~/.npm
164
+ ```
165
+
166
+ ## ๐Ÿ“Š GitHub Actions Features
167
+
168
+ ### Matrix Testing
169
+ Tests run in parallel across multiple configurations:
170
+ ```yaml
171
+ strategy:
172
+ matrix:
173
+ os: [macos-13, macos-14, macos-15]
174
+ node-version: ['18', '20', '22']
175
+ ```
176
+
177
+ This creates **9 test jobs** (3 OS ร— 3 Node versions) that run simultaneously.
178
+
179
+ ### Manual Triggers
180
+ You can manually trigger the macOS test workflow:
181
+ 1. Go to **Actions** tab on GitHub
182
+ 2. Select **macOS Test Suite**
183
+ 3. Click **Run workflow**
184
+ 4. Choose branch and click **Run workflow**
185
+
186
+ ### Artifact Collection
187
+ Failed tests automatically upload:
188
+ - Audio files from `~/.claude/audio/`
189
+ - Test logs from `/tmp/test-*.log`
190
+ - Retained for 7 days for debugging
191
+
192
+ ## ๐ŸŽฏ Benefits of macOS Testing
193
+
194
+ ### Free Testing
195
+ - GitHub provides **macOS runners for free** on public repositories
196
+ - No need to rent Mac VPS or cloud services
197
+ - Automated on every commit
198
+
199
+ ### Real Hardware
200
+ - Tests run on actual macOS environments
201
+ - Intel (x86_64) and Apple Silicon (arm64) coverage
202
+ - Real filesystem and audio stack
203
+
204
+ ### Coverage
205
+ - **Intel Macs**: macOS 13 runner
206
+ - **Apple Silicon**: macOS 14/15 runners
207
+ - **Latest macOS**: Always available
208
+
209
+ ### Confidence
210
+ - Know it works before users install
211
+ - Catch macOS-specific bugs early
212
+ - Validate audio tools on macOS
213
+
214
+ ## ๐Ÿ’ก Contributing macOS Tests
215
+
216
+ ### Add New Test Cases
217
+ ```bash
218
+ # Create new test file
219
+ touch test/unit/my-feature.bats
220
+
221
+ # Add test
222
+ cat > test/unit/my-feature.bats << 'EOF'
223
+ #!/usr/bin/env bats
224
+
225
+ load ../helpers/test-helper
226
+
227
+ @test "my feature works on macOS" {
228
+ run my-command
229
+ [ "$status" -eq 0 ]
230
+ }
231
+ EOF
232
+ ```
233
+
234
+ ### Test macOS-Specific Features
235
+ ```bash
236
+ @test "uses afplay on macOS" {
237
+ [[ "$OSTYPE" == "darwin"* ]] || skip "macOS only"
238
+
239
+ run detect-audio-player
240
+ [[ "$output" == *"afplay"* ]]
241
+ }
242
+ ```
243
+
244
+ ### Submit PR with Tests
245
+ 1. Add test cases to `test/unit/*.bats`
246
+ 2. Verify tests pass locally: `npm test`
247
+ 3. Submit PR - GitHub Actions runs on macOS automatically
248
+ 4. Review test results in PR checks
249
+
250
+ ## ๐Ÿ” Viewing Test Results
251
+
252
+ ### In Pull Requests
253
+ - Check status at bottom of PR
254
+ - Click **Details** next to "Test on macos-latest"
255
+ - View full test output and system info
256
+
257
+ ### In Actions Tab
258
+ 1. Go to **Actions** tab
259
+ 2. Click on workflow run
260
+ 3. Select matrix job (e.g., "Test on macos-14")
261
+ 4. Expand test steps to see output
262
+
263
+ ### Download Artifacts
264
+ If tests fail:
265
+ 1. Scroll to bottom of failed job
266
+ 2. Click **Artifacts** section
267
+ 3. Download test logs for debugging
268
+
269
+ ## ๐Ÿšฆ Status Badges
270
+
271
+ The README shows test status:
272
+ ```markdown
273
+ [![Test Suite](https://github.com/paulpreibisch/AgentVibes/actions/workflows/test.yml/badge.svg)](https://github.com/paulpreibisch/AgentVibes/actions/workflows/test.yml)
274
+ ```
275
+
276
+ This badge shows if tests are passing on latest commit (including macOS tests).
277
+
278
+ ## ๐Ÿ“ˆ Future Improvements
279
+
280
+ Planned enhancements:
281
+ - [ ] Test actual ElevenLabs API with secrets
282
+ - [ ] Test Piper TTS full installation on macOS
283
+ - [ ] Test Claude Desktop integration
284
+ - [ ] Performance benchmarks on Apple Silicon
285
+ - [ ] Audio quality validation
286
+ - [ ] Test with different macOS audio devices
287
+
288
+ ## ๐Ÿค Community Testing
289
+
290
+ While automated tests are great, real-world testing helps:
291
+ - Test on your Mac and report issues
292
+ - Try different macOS versions
293
+ - Test with various audio setups
294
+ - Share feedback in GitHub Issues
295
+
296
+ **Your Mac testing helps make AgentVibes better for everyone!** ๐ŸŽ‰
297
+
298
+ ---
299
+
300
+ **Questions?** Open an issue: https://github.com/paulpreibisch/AgentVibes/issues
@@ -203,13 +203,16 @@ class AgentVibesServer:
203
203
  "Example: en_US-lessac-medium, en_GB-alba-medium"
204
204
  )
205
205
 
206
- # Determine provider label for display
206
+ # Determine provider label and alternative provider
207
207
  if "Piper" in provider:
208
208
  provider_label = "Piper TTS"
209
+ alternative_provider = "ElevenLabs"
209
210
  elif "ElevenLabs" in provider:
210
211
  provider_label = "ElevenLabs"
212
+ alternative_provider = "Piper"
211
213
  else:
212
214
  provider_label = "TTS"
215
+ alternative_provider = None
213
216
 
214
217
  output = f"๐ŸŽค Available {provider_label} Voices:\n"
215
218
  output += "โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\n"
@@ -217,6 +220,11 @@ class AgentVibesServer:
217
220
  marker = " โœ“ (current)" if voice == current_voice else ""
218
221
  output += f" โ€ข {voice}{marker}\n"
219
222
  output += "โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\n"
223
+
224
+ # Add provider switch hint
225
+ if alternative_provider:
226
+ output += f"\n๐Ÿ’ก Switch to {alternative_provider}? Use: set_provider(provider=\"{alternative_provider.lower()}\")\n"
227
+
220
228
  return output
221
229
  return "โŒ Failed to list voices"
222
230
 
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": "2.1.3",
4
+ "version": "2.1.5",
5
5
  "description": "Now your AI Agents can finally talk back! Professional TTS voice for Claude Code and Claude Desktop (via MCP) with multi-provider support.",
6
6
  "homepage": "https://agentvibes.org",
7
7
  "keywords": [
package/src/installer.js CHANGED
@@ -119,46 +119,31 @@ async function install(options = {}) {
119
119
  console.log(
120
120
  boxen(
121
121
  chalk.white.bold('โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•\n') +
122
- chalk.cyan.bold(' ๐Ÿ“ฆ AgentVibes v2.0.17 - Major Feature Release\n') +
122
+ chalk.cyan.bold(' ๐Ÿ“ฆ AgentVibes v2.1.5 - Critical macOS Fix\n') +
123
123
  chalk.white.bold('โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•\n\n') +
124
- chalk.green.bold('๐ŸŒŸ BREAKTHROUGH FEATURES:\n\n') +
125
- chalk.cyan('๐ŸŒ Language Learning Mode\n') +
126
- chalk.gray(' โ€ข Learn a second language while coding!\n') +
127
- chalk.gray(' โ€ข Spanish, Italian, French, Mandarin - you name it!\n') +
128
- chalk.gray(' โ€ข Dual-language TTS (English โ†’ target language)\n') +
129
- chalk.gray(' โ€ข Adjustable speech speed for comprehension\n\n') +
130
- chalk.cyan('๐ŸŽค MCP Integration (Claude Desktop + Claude Code)\n') +
131
- chalk.gray(' โ€ข Natural language control: "Switch to pirate personality"\n') +
132
- chalk.gray(' โ€ข Works in Claude Desktop, Claude Code, and Warp\n') +
133
- chalk.gray(' โ€ข No slash commands needed - just talk naturally!\n\n') +
134
- chalk.cyan('โšก Unified Speed Control\n') +
135
- chalk.gray(' โ€ข 0.5x = Slower, 2x = Faster, 3x = Very Fast\n') +
136
- chalk.gray(' โ€ข Works with BOTH ElevenLabs and Piper\n') +
137
- chalk.gray(' โ€ข Automatic tongue twister demos\n\n') +
138
- chalk.cyan('๐Ÿ”Š SSH Audio Optimization\n') +
139
- chalk.gray(' โ€ข Crystal-clear audio over VS Code Remote SSH\n') +
140
- chalk.gray(' โ€ข Auto-detects remote sessions\n\n') +
141
- chalk.cyan('๐ŸŽ›๏ธ Enhanced Multi-Provider Support\n') +
142
- chalk.gray(' โ€ข Seamless ElevenLabs โ†” Piper switching\n') +
143
- chalk.gray(' โ€ข Mixed provider support for learning mode\n\n') +
124
+ chalk.red.bold('๐Ÿ› CRITICAL macOS FIX:\n\n') +
125
+ chalk.cyan('All 23 shell scripts now use #!/usr/bin/env bash instead of\n') +
126
+ chalk.cyan('#!/bin/bash, enabling AgentVibes to work on macOS. The old\n') +
127
+ chalk.cyan('shebang forced bash 3.2 (from 2007) which doesn\'t support\n') +
128
+ chalk.cyan('associative arrays or modern bash syntax, causing complete\n') +
129
+ chalk.cyan('failure on Mac.\n\n') +
130
+ chalk.green('Mac users: brew install bash (one-time setup)\n') +
131
+ chalk.green('Then AgentVibes works perfectly!\n\n') +
132
+ chalk.white.bold('โœจ NEW FEATURES:\n\n') +
133
+ chalk.cyan('๐Ÿค– FREE GitHub Actions macOS Testing\n') +
134
+ chalk.gray(' โ€ข Tests on macOS 13/14/15 (Intel + M1/M2/M3)\n') +
135
+ chalk.gray(' โ€ข Node 18, 20, 22 tested automatically\n') +
136
+ chalk.gray(' โ€ข 13 parallel test jobs on every push\n') +
137
+ chalk.gray(' โ€ข Saves $60-276/year vs Mac VPS!\n\n') +
138
+ chalk.cyan('๐Ÿ’ก Provider Switch Hint\n') +
139
+ chalk.gray(' โ€ข Helpful hints in voice list output\n') +
140
+ chalk.gray(' โ€ข Discover ElevenLabs โ†” Piper switching\n\n') +
144
141
  chalk.white('โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\n\n') +
145
- chalk.yellow.bold('๐Ÿ› 20+ BUG FIXES:\n') +
146
- chalk.gray(' โœ“ Fixed MP3 bitrate preservation (128kbps)\n') +
147
- chalk.gray(' โœ“ Fixed audio player hanging issues\n') +
148
- chalk.gray(' โœ“ Fixed voice/provider mismatches\n') +
149
- chalk.gray(' โœ“ Fixed Windows npx execution\n') +
150
- chalk.gray(' โœ“ Fixed JSON escaping in ElevenLabs API\n\n') +
151
- chalk.white('โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\n\n') +
152
- chalk.magenta.bold('๐Ÿ“š DOCUMENTATION OVERHAUL:\n') +
153
- chalk.gray(' โ€ข 10 new documentation files\n') +
154
- chalk.gray(' โ€ข Windows Setup Guide (NPX-based)\n') +
155
- chalk.gray(' โ€ข README reduced 60% (1,285 โ†’ 502 lines)\n\n') +
156
- chalk.white('โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\n\n') +
157
- chalk.blue.bold('๐Ÿ“Š BY THE NUMBERS:\n') +
158
- chalk.gray(' โ€ข 75 commits since v2.0.16\n') +
159
- chalk.gray(' โ€ข 72 files changed (+8,652 lines)\n') +
160
- chalk.gray(' โ€ข 110 tests (79 new tests added)\n') +
161
- chalk.gray(' โ€ข 5 major features, 20+ bug fixes\n\n') +
142
+ chalk.blue.bold('๐Ÿ“Š IMPACT:\n') +
143
+ chalk.gray(' โ€ข 30 files changed\n') +
144
+ chalk.gray(' โ€ข 877 insertions, 31 deletions\n') +
145
+ chalk.gray(' โ€ข AgentVibes now works on macOS!\n') +
146
+ chalk.gray(' โ€ข FREE automated testing on all platforms\n\n') +
162
147
  chalk.white.bold('โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•\n\n') +
163
148
  chalk.green.bold('๐Ÿš€ TRY LANGUAGE LEARNING MODE:\n\n') +
164
149
  chalk.cyan(' /agent-vibes:language english\n') +
@@ -1015,46 +1000,31 @@ program
1015
1000
  console.log(
1016
1001
  boxen(
1017
1002
  chalk.white.bold('โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•\n') +
1018
- chalk.cyan.bold(' ๐Ÿ“ฆ AgentVibes v2.0.17 - Major Feature Release\n') +
1003
+ chalk.cyan.bold(' ๐Ÿ“ฆ AgentVibes v2.1.5 - Critical macOS Fix\n') +
1019
1004
  chalk.white.bold('โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•\n\n') +
1020
- chalk.green.bold('๐ŸŒŸ BREAKTHROUGH FEATURES:\n\n') +
1021
- chalk.cyan('๐ŸŒ Language Learning Mode\n') +
1022
- chalk.gray(' โ€ข Learn a second language while coding!\n') +
1023
- chalk.gray(' โ€ข Spanish, Italian, French, Mandarin - you name it!\n') +
1024
- chalk.gray(' โ€ข Dual-language TTS (English โ†’ target language)\n') +
1025
- chalk.gray(' โ€ข Adjustable speech speed for comprehension\n\n') +
1026
- chalk.cyan('๐ŸŽค MCP Integration (Claude Desktop + Claude Code)\n') +
1027
- chalk.gray(' โ€ข Natural language control: "Switch to pirate personality"\n') +
1028
- chalk.gray(' โ€ข Works in Claude Desktop, Claude Code, and Warp\n') +
1029
- chalk.gray(' โ€ข No slash commands needed - just talk naturally!\n\n') +
1030
- chalk.cyan('โšก Unified Speed Control\n') +
1031
- chalk.gray(' โ€ข 0.5x = Slower, 2x = Faster, 3x = Very Fast\n') +
1032
- chalk.gray(' โ€ข Works with BOTH ElevenLabs and Piper\n') +
1033
- chalk.gray(' โ€ข Automatic tongue twister demos\n\n') +
1034
- chalk.cyan('๐Ÿ”Š SSH Audio Optimization\n') +
1035
- chalk.gray(' โ€ข Crystal-clear audio over VS Code Remote SSH\n') +
1036
- chalk.gray(' โ€ข Auto-detects remote sessions\n\n') +
1037
- chalk.cyan('๐ŸŽ›๏ธ Enhanced Multi-Provider Support\n') +
1038
- chalk.gray(' โ€ข Seamless ElevenLabs โ†” Piper switching\n') +
1039
- chalk.gray(' โ€ข Mixed provider support for learning mode\n\n') +
1040
- chalk.white('โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\n\n') +
1041
- chalk.yellow.bold('๐Ÿ› 20+ BUG FIXES:\n') +
1042
- chalk.gray(' โœ“ Fixed MP3 bitrate preservation (128kbps)\n') +
1043
- chalk.gray(' โœ“ Fixed audio player hanging issues\n') +
1044
- chalk.gray(' โœ“ Fixed voice/provider mismatches\n') +
1045
- chalk.gray(' โœ“ Fixed Windows npx execution\n') +
1046
- chalk.gray(' โœ“ Fixed JSON escaping in ElevenLabs API\n\n') +
1047
- chalk.white('โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\n\n') +
1048
- chalk.magenta.bold('๐Ÿ“š DOCUMENTATION OVERHAUL:\n') +
1049
- chalk.gray(' โ€ข 10 new documentation files\n') +
1050
- chalk.gray(' โ€ข Windows Setup Guide (NPX-based)\n') +
1051
- chalk.gray(' โ€ข README reduced 60% (1,285 โ†’ 502 lines)\n\n') +
1005
+ chalk.red.bold('๐Ÿ› CRITICAL macOS FIX:\n\n') +
1006
+ chalk.cyan('All 23 shell scripts now use #!/usr/bin/env bash instead of\n') +
1007
+ chalk.cyan('#!/bin/bash, enabling AgentVibes to work on macOS. The old\n') +
1008
+ chalk.cyan('shebang forced bash 3.2 (from 2007) which doesn\'t support\n') +
1009
+ chalk.cyan('associative arrays or modern bash syntax, causing complete\n') +
1010
+ chalk.cyan('failure on Mac.\n\n') +
1011
+ chalk.green('Mac users: brew install bash (one-time setup)\n') +
1012
+ chalk.green('Then AgentVibes works perfectly!\n\n') +
1013
+ chalk.white.bold('โœจ NEW FEATURES:\n\n') +
1014
+ chalk.cyan('๐Ÿค– FREE GitHub Actions macOS Testing\n') +
1015
+ chalk.gray(' โ€ข Tests on macOS 13/14/15 (Intel + M1/M2/M3)\n') +
1016
+ chalk.gray(' โ€ข Node 18, 20, 22 tested automatically\n') +
1017
+ chalk.gray(' โ€ข 13 parallel test jobs on every push\n') +
1018
+ chalk.gray(' โ€ข Saves $60-276/year vs Mac VPS!\n\n') +
1019
+ chalk.cyan('๐Ÿ’ก Provider Switch Hint\n') +
1020
+ chalk.gray(' โ€ข Helpful hints in voice list output\n') +
1021
+ chalk.gray(' โ€ข Discover ElevenLabs โ†” Piper switching\n\n') +
1052
1022
  chalk.white('โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\n\n') +
1053
- chalk.blue.bold('๐Ÿ“Š BY THE NUMBERS:\n') +
1054
- chalk.gray(' โ€ข 75 commits since v2.0.16\n') +
1055
- chalk.gray(' โ€ข 72 files changed (+8,652 lines)\n') +
1056
- chalk.gray(' โ€ข 110 tests (79 new tests added)\n') +
1057
- chalk.gray(' โ€ข 5 major features, 20+ bug fixes\n\n') +
1023
+ chalk.blue.bold('๐Ÿ“Š IMPACT:\n') +
1024
+ chalk.gray(' โ€ข 30 files changed\n') +
1025
+ chalk.gray(' โ€ข 877 insertions, 31 deletions\n') +
1026
+ chalk.gray(' โ€ข AgentVibes now works on macOS!\n') +
1027
+ chalk.gray(' โ€ข FREE automated testing on all platforms\n\n') +
1058
1028
  chalk.white.bold('โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•\n\n') +
1059
1029
  chalk.green.bold('๐Ÿš€ TRY LANGUAGE LEARNING MODE:\n\n') +
1060
1030
  chalk.cyan(' /agent-vibes:language english\n') +