agentvibes 5.3.0 β†’ 5.5.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.
Files changed (222) hide show
  1. package/.agentvibes/LITE-MODE.md +236 -0
  2. package/.agentvibes/README.md +136 -0
  3. package/.agentvibes/backup/session-start-tts.sh.20251210_212814 +141 -0
  4. package/.agentvibes/backups/agents/analyst_20260204_144958.md +78 -0
  5. package/.agentvibes/backups/agents/architect_20260204_144958.md +72 -0
  6. package/.agentvibes/backups/agents/dev_20260204_144958.md +74 -0
  7. package/.agentvibes/backups/agents/pm_20260204_144958.md +72 -0
  8. package/.agentvibes/backups/agents/quick-flow-solo-dev_20260204_144958.md +64 -0
  9. package/.agentvibes/backups/agents/sm_20260204_144958.md +87 -0
  10. package/.agentvibes/backups/agents/tea_20260204_144958.md +79 -0
  11. package/.agentvibes/backups/agents/tech-writer_20260204_144958.md +82 -0
  12. package/.agentvibes/backups/agents/ux-designer_20260204_144958.md +80 -0
  13. package/.agentvibes/bmad/bmad-voices.md +69 -69
  14. package/.agentvibes/config/README-personality-defaults.md +162 -0
  15. package/.agentvibes/config/mode.txt +1 -0
  16. package/.agentvibes/config/personality-voice-defaults.default.json +21 -0
  17. package/.agentvibes/config/save-audio.txt +1 -0
  18. package/.agentvibes/config/voice-metadata.json +160 -0
  19. package/.agentvibes/config.json +24 -15
  20. package/.agentvibes/hooks/help.sh +191 -0
  21. package/.agentvibes/hooks/post-tool-use-lite.sh +111 -0
  22. package/.agentvibes/hooks/save-audio-manager.sh +162 -0
  23. package/.agentvibes/hooks/session-start-full-optimized.sh +102 -0
  24. package/.agentvibes/hooks/session-start-full.sh +142 -0
  25. package/.agentvibes/hooks/session-start-lite-v2.sh +34 -0
  26. package/.agentvibes/hooks/session-start-lite.sh +29 -0
  27. package/.agentvibes/hooks/stop-lite.sh +115 -0
  28. package/.agentvibes/hooks/switch-mode.sh +215 -0
  29. package/.agentvibes/output-styles/audio-summary.md +30 -0
  30. package/.claude/activation-instructions +54 -54
  31. package/.claude/audio/voice-samples/piper/alan.wav +0 -0
  32. package/.claude/audio/voice-samples/piper/amy.wav +0 -0
  33. package/.claude/audio/voice-samples/piper/charlotte.wav +0 -0
  34. package/.claude/audio/voice-samples/piper/joe.wav +0 -0
  35. package/.claude/audio/voice-samples/piper/john.wav +0 -0
  36. package/.claude/audio/voice-samples/piper/katherine.wav +0 -0
  37. package/.claude/audio/voice-samples/piper/kristin.wav +0 -0
  38. package/.claude/audio/voice-samples/piper/linda.wav +0 -0
  39. package/.claude/audio/voice-samples/piper/marcus.wav +0 -0
  40. package/.claude/audio/voice-samples/piper/ryan.wav +0 -0
  41. package/.claude/commands/agent-vibes/add.md +21 -21
  42. package/.claude/commands/agent-vibes/agent-vibes.md +101 -101
  43. package/.claude/commands/agent-vibes/agent.md +79 -79
  44. package/.claude/commands/agent-vibes/background-music.md +111 -111
  45. package/.claude/commands/agent-vibes/bmad.md +198 -198
  46. package/.claude/commands/agent-vibes/clean.md +18 -18
  47. package/.claude/commands/agent-vibes/cleanup.md +18 -18
  48. package/.claude/commands/agent-vibes/commands.json +145 -145
  49. package/.claude/commands/agent-vibes/effects.md +97 -97
  50. package/.claude/commands/agent-vibes/get.md +9 -9
  51. package/.claude/commands/agent-vibes/hide.md +91 -91
  52. package/.claude/commands/agent-vibes/language.md +23 -23
  53. package/.claude/commands/agent-vibes/learn.md +67 -67
  54. package/.claude/commands/agent-vibes/list.md +13 -13
  55. package/.claude/commands/agent-vibes/mute.md +37 -37
  56. package/.claude/commands/agent-vibes/preview.md +17 -17
  57. package/.claude/commands/agent-vibes/provider.md +68 -68
  58. package/.claude/commands/agent-vibes/replay-target.md +14 -14
  59. package/.claude/commands/agent-vibes/sample.md +12 -12
  60. package/.claude/commands/agent-vibes/set-favorite-voice.md +84 -84
  61. package/.claude/commands/agent-vibes/set-pretext.md +65 -65
  62. package/.claude/commands/agent-vibes/set-speed.md +41 -41
  63. package/.claude/commands/agent-vibes/show.md +84 -84
  64. package/.claude/commands/agent-vibes/switch.md +87 -87
  65. package/.claude/commands/agent-vibes/target-voice.md +26 -26
  66. package/.claude/commands/agent-vibes/target.md +30 -30
  67. package/.claude/commands/agent-vibes/translate.md +68 -68
  68. package/.claude/commands/agent-vibes/unmute.md +45 -45
  69. package/.claude/commands/agent-vibes/whoami.md +7 -7
  70. package/.claude/commands/agent-vibes-bmad-voices.md +117 -117
  71. package/.claude/commands/agent-vibes-rdp.md +24 -24
  72. package/.claude/config/audio-effects.cfg +16 -11
  73. package/.claude/config/audio-effects.cfg.sample +52 -52
  74. package/.claude/config/background-music-position.txt +27 -0
  75. package/.claude/config/background-music-volume.txt +1 -1
  76. package/.claude/config/background-music.cfg +1 -0
  77. package/.claude/config/background-music.txt +1 -0
  78. package/.claude/config/tts-speech-rate.txt +1 -4
  79. package/.claude/config/tts-verbosity.txt +1 -0
  80. package/.claude/docs/TERMUX_SETUP.md +408 -408
  81. package/.claude/github-star-reminder.txt +1 -1
  82. package/.claude/hooks/README-TTS-QUEUE.md +135 -135
  83. package/.claude/hooks/audio-cache-utils.sh +0 -0
  84. package/.claude/hooks/audio-processor.sh +60 -14
  85. package/.claude/hooks/background-music-manager.sh +0 -0
  86. package/.claude/hooks/bmad-party-manager.sh +225 -0
  87. package/.claude/hooks/bmad-party-speak.sh +0 -0
  88. package/.claude/hooks/bmad-speak-enhanced.sh +0 -0
  89. package/.claude/hooks/bmad-speak.sh +12 -15
  90. package/.claude/hooks/bmad-tts-injector.sh +0 -0
  91. package/.claude/hooks/bmad-voice-manager.sh +0 -0
  92. package/.claude/hooks/clawdbot-receiver-SECURE.sh +25 -23
  93. package/.claude/hooks/clawdbot-receiver.sh +4 -28
  94. package/.claude/hooks/clean-audio-cache.sh +0 -0
  95. package/.claude/hooks/cleanup-cache.sh +0 -0
  96. package/.claude/hooks/configure-rdp-mode.sh +0 -0
  97. package/.claude/hooks/download-extra-voices.sh +0 -0
  98. package/.claude/hooks/effects-manager.sh +0 -0
  99. package/.claude/hooks/github-star-reminder.sh +0 -0
  100. package/.claude/hooks/language-manager.sh +0 -0
  101. package/.claude/hooks/learn-manager.sh +0 -0
  102. package/.claude/hooks/macos-voice-manager.sh +0 -0
  103. package/.claude/hooks/migrate-background-music.sh +0 -0
  104. package/.claude/hooks/migrate-to-agentvibes.sh +0 -0
  105. package/.claude/hooks/optimize-background-music.sh +0 -0
  106. package/.claude/hooks/personality-manager.sh +0 -0
  107. package/.claude/hooks/piper-download-voices.sh +0 -0
  108. package/.claude/hooks/piper-installer.sh +1 -1
  109. package/.claude/hooks/piper-multispeaker-registry.sh +0 -0
  110. package/.claude/hooks/piper-voice-manager.sh +0 -0
  111. package/.claude/hooks/play-tts-enhanced.sh +0 -0
  112. package/.claude/hooks/play-tts-macos.sh +6 -12
  113. package/.claude/hooks/play-tts-piper.sh +52 -81
  114. package/.claude/hooks/play-tts-soprano.sh +9 -43
  115. package/.claude/hooks/play-tts-ssh-remote.sh +43 -215
  116. package/.claude/hooks/play-tts-termux-ssh.sh +0 -0
  117. package/.claude/hooks/play-tts.sh +41 -20
  118. package/.claude/hooks/post-response.sh +41 -0
  119. package/.claude/hooks/prepare-release.sh +0 -0
  120. package/.claude/hooks/provider-commands.sh +0 -0
  121. package/.claude/hooks/provider-manager.sh +0 -0
  122. package/.claude/hooks/replay-target-audio.sh +0 -0
  123. package/.claude/hooks/requirements.txt +6 -6
  124. package/.claude/hooks/sentiment-manager.sh +0 -0
  125. package/.claude/hooks/session-start-tts.sh +56 -39
  126. package/.claude/hooks/soprano-gradio-synth.py +139 -139
  127. package/.claude/hooks/speed-manager.sh +0 -0
  128. package/.claude/hooks/stop.sh +63 -0
  129. package/.claude/hooks/termux-installer.sh +0 -0
  130. package/.claude/hooks/translate-manager.sh +0 -0
  131. package/.claude/hooks/translator.py +237 -237
  132. package/.claude/hooks/tts-queue-worker.sh +0 -0
  133. package/.claude/hooks/tts-queue.sh +0 -0
  134. package/.claude/hooks/verbosity-manager.sh +0 -0
  135. package/.claude/hooks/voice-manager.sh +26 -4
  136. package/.claude/hooks-windows/audio-cache-utils.ps1 +119 -119
  137. package/.claude/hooks-windows/bmad-party-speak.ps1 +278 -278
  138. package/.claude/hooks-windows/bmad-speak.ps1 +264 -264
  139. package/.claude/hooks-windows/clean-audio-cache.ps1 +53 -53
  140. package/.claude/hooks-windows/effects-manager.ps1 +294 -294
  141. package/.claude/hooks-windows/language-manager.ps1 +193 -193
  142. package/.claude/hooks-windows/learn-manager.ps1 +241 -241
  143. package/.claude/hooks-windows/personality-manager.ps1 +266 -266
  144. package/.claude/hooks-windows/play-tts-soprano.ps1 +5 -5
  145. package/.claude/hooks-windows/play-tts-termux-ssh.ps1 +138 -138
  146. package/.claude/hooks-windows/play-tts-windows-piper.ps1 +178 -0
  147. package/.claude/hooks-windows/play-tts-windows-sapi.ps1 +108 -0
  148. package/.claude/hooks-windows/play-tts.ps1 +265 -507
  149. package/.claude/hooks-windows/provider-manager.ps1 +158 -192
  150. package/.claude/hooks-windows/session-start-tts.ps1 +55 -46
  151. package/.claude/hooks-windows/soprano-gradio-synth.py +153 -153
  152. package/.claude/hooks-windows/speed-manager.ps1 +166 -166
  153. package/.claude/hooks-windows/voice-manager-windows.ps1 +176 -260
  154. package/.claude/output-styles/agent-vibes.md +202 -202
  155. package/.claude/personalities/angry.md +14 -14
  156. package/.claude/personalities/annoying.md +14 -14
  157. package/.claude/personalities/crass.md +14 -14
  158. package/.claude/personalities/dramatic.md +14 -14
  159. package/.claude/personalities/dry-humor.md +50 -50
  160. package/.claude/personalities/flirty.md +20 -20
  161. package/.claude/personalities/funny.md +14 -14
  162. package/.claude/personalities/grandpa.md +32 -32
  163. package/.claude/personalities/millennial.md +14 -14
  164. package/.claude/personalities/moody.md +14 -14
  165. package/.claude/personalities/normal.md +16 -16
  166. package/.claude/personalities/pirate.md +14 -14
  167. package/.claude/personalities/poetic.md +14 -14
  168. package/.claude/personalities/professional.md +14 -14
  169. package/.claude/personalities/rapper.md +55 -55
  170. package/.claude/personalities/robot.md +14 -14
  171. package/.claude/personalities/sarcastic.md +38 -38
  172. package/.claude/personalities/sassy.md +14 -14
  173. package/.claude/personalities/surfer-dude.md +14 -14
  174. package/.claude/personalities/zen.md +14 -14
  175. package/.claude/piper-voices-dir.txt +1 -0
  176. package/.claude/settings.json +25 -15
  177. package/.claude/verbosity.txt +1 -1
  178. package/.clawdbot/README.md +105 -105
  179. package/.clawdbot/skill/SKILL.md +149 -145
  180. package/.mcp.json +30 -11
  181. package/CLAUDE.md +170 -215
  182. package/README.md +207 -521
  183. package/RELEASE_NOTES.md +1172 -1976
  184. package/WINDOWS-SETUP.md +208 -208
  185. package/bin/agent-vibes +0 -0
  186. package/bin/agentvibes-voice-browser.js +64 -1289
  187. package/bin/agentvibes.js +28 -0
  188. package/bin/ensure-soprano-running.sh +43 -0
  189. package/bin/mcp-server.js +121 -121
  190. package/bin/mcp-server.sh +0 -0
  191. package/bin/test-bmad-pr +78 -78
  192. package/mcp-server/QUICK_START.md +203 -203
  193. package/mcp-server/README.md +345 -345
  194. package/mcp-server/WINDOWS_SETUP.md +260 -260
  195. package/mcp-server/docs/troubleshooting-audio.md +313 -313
  196. package/mcp-server/examples/claude_desktop_config.json +11 -11
  197. package/mcp-server/examples/claude_desktop_config_piper.json +9 -9
  198. package/mcp-server/examples/custom_instructions.md +169 -169
  199. package/mcp-server/install-deps.js +130 -130
  200. package/mcp-server/pyproject.toml +52 -52
  201. package/mcp-server/requirements.txt +2 -2
  202. package/mcp-server/server.py +1467 -1578
  203. package/mcp-server/test_server.py +395 -395
  204. package/package.json +1 -3
  205. package/setup-windows.ps1 +815 -815
  206. package/src/console/tabs/music-tab.js +5 -2
  207. package/src/console/tabs/voices-tab.js +71 -37
  208. package/src/installer.js +52 -5
  209. package/src/services/llm-provider-service.js +1 -1
  210. package/templates/agentvibes-receiver.sh +158 -483
  211. package/templates/audio/welcome-music.mp3 +0 -0
  212. package/.agentvibes/bmad-voice-map.json +0 -104
  213. package/.agentvibes/copilot-sessions.log +0 -4
  214. package/.claude/config/audio-effects-bmad.cfg +0 -50
  215. package/.claude/config/intro-text.txt +0 -1
  216. package/.claude/config/personality.txt +0 -1
  217. package/.claude/config/piper-speech-rate.txt +0 -4
  218. package/.claude/config/piper-target-speech-rate.txt +0 -1
  219. package/.claude/config/reverb-level.txt +0 -1
  220. package/.claude/config/tts-target-speech-rate.txt +0 -1
  221. package/voice-assignments.json +0 -8245
  222. /package/{.claude β†’ .agentvibes}/config/agentvibes.json +0 -0
package/RELEASE_NOTES.md CHANGED
@@ -1,1976 +1,1172 @@
1
- # AgentVibes Release Notes
2
-
3
- ## 🎯 v5.3.0 β€” Take Control of Remote Voices
4
-
5
- **Release Date:** April 2026
6
-
7
- If you're using AgentVibes to send voice announcements from a server to
8
- your phone, laptop, or another machine, this release puts you in the
9
- driver's seat. Every call can now pick its own voice, background music,
10
- intro phrase, reverb, volume, and speed β€” right from the command line,
11
- for just that one message.
12
-
13
- ### ✨ What's New
14
-
15
- #### You can now customize every announcement individually
16
-
17
- Before, if you wanted a different voice or music for one specific
18
- message, you had to change a config file (and remember to change it
19
- back). Now you just add a flag to the command.
20
-
21
- Want Winston to speak in his British accent with jazz playing for this
22
- one deploy notification? Easy:
23
-
24
- ```bash
25
- bash .claude/hooks/play-tts-ssh-remote.sh \
26
- --text "Deploy complete" \
27
- --voice "en_US-ryan-high" \
28
- --pretext "Winston here" \
29
- --music "Late Night Hip Hop Groove.mp3" \
30
- --volume 0.25
31
- ```
32
-
33
- Anything you don't specify falls back to your normal settings. Want to
34
- skip the intro phrase just this once? Pass `--pretext ""` and it stays
35
- silent before the message.
36
-
37
- **Available flags:**
38
- - `--voice` β€” which Piper voice to use
39
- - `--pretext` β€” the intro phrase before the message (pass `""` to skip it)
40
- - `--music` β€” background music track (filenames with spaces now work!)
41
- - `--volume` β€” how loud the background music is (0.0 to 1.0)
42
- - `--effects` β€” sound effects chain like reverb
43
- - `--speed` β€” how fast the voice speaks
44
- - `--provider` β€” which TTS engine to use
45
- - `--agent` β€” which agent personality to use
46
-
47
- The old way of calling the script still works, so nothing you've already
48
- set up will break.
49
-
50
- ### πŸ›  Reliability Fixes
51
-
52
- - **Long messages and special characters no longer get cut off.** On
53
- Windows, long announcements or text with quotes, apostrophes, or
54
- emoji were getting mangled before they reached the voice engine.
55
- Fixed β€” your message now arrives exactly as you sent it, no matter
56
- how long or weird.
57
-
58
- - **Voice announcements now work on Windows servers with no monitor.**
59
- Windows refuses to play audio in the "service" session that SSH
60
- normally uses. A small background helper now runs in your regular
61
- user session and picks up announcements from a queue, so audio plays
62
- correctly even on headless servers.
63
-
64
- - **Voice preview in the TUI works on remote servers.** Before, if you
65
- previewed a voice from a server with no speakers, it would try to
66
- play locally (and fail). Now it correctly streams to whatever remote
67
- device you've configured.
68
-
69
- - **No more double intro phrases.** If you set a pretext on both the
70
- sending server and the receiving machine, you used to hear it twice.
71
- The sender's version wins now β€” the receiver won't add its own on top.
72
-
73
- - **Remote streaming settings now actually stick.** A recent change
74
- accidentally caused remote-streaming setups (`ssh-remote`,
75
- `agentvibes-receiver`) to get overridden and fall back to local
76
- playback. Fixed.
77
-
78
- - **Long announcements don't get killed mid-sentence.** The safety
79
- timeout that stops stuck audio was too aggressive for long messages.
80
- It's now generous enough to handle paragraph-length announcements.
81
-
82
- - **Cleaner installer state** β€” when you install AgentVibes for Claude
83
- Code, it now writes its TTS provider file explicitly instead of
84
- relying on implicit state.
85
-
86
- ### πŸ§ͺ Testing
87
-
88
- 55 new tests make sure BMAD party mode keeps working: each agent gets
89
- their unique voice and music, agents don't accidentally share the same
90
- Piper speaker ID, and the installer always points party mode at the
91
- cross-platform entry point.
92
-
93
- ---
94
-
95
- ## 🎯 v5.2.1 β€” Multi-LLM Identity & Install Polish
96
-
97
- **Release Date:** April 2026
98
-
99
- Polished LLM routing for Copilot/Codex and refined the setup experience.
100
-
101
- ### ✨ What's New
102
-
103
- #### Multi-LLM Identity Routing
104
-
105
- - **GitHub Copilot now gets its own voice, pretext, and background music** β€” fully distinct from Claude Code and Codex. Say hello to "Copilot here" with bossa nova on the way in.
106
-
107
- - **Per-tool MCP configs with explicit identity** β€” each AI tool (`.vscode/mcp.json`, `.codex/config.toml`, `~/.copilot/mcp-config.json`) sets its own `AGENTVIBES_LLM` so routing is deterministic.
108
-
109
- - **`get_config` MCP tool now returns the detected LLM** β€” so the calling assistant can confirm its routing and respond with the right voice out of the gate.
110
-
111
- - **Linux compatibility refinements** β€” CRLF line endings, permissions, and transport provider override handling.
112
-
113
- #### Setup Flow Improvements
114
-
115
- - **Keyboard navigation flow** β€” pressing Enter through the Install buttons (Claude β†’ Copilot β†’ Codex) now jumps to **Claude Configure** next, letting you walk all three Configures in order before landing on Default.
116
-
117
- - **Down-arrow skips the Default row** from Install/Remove columns (consistent with info-box dismiss nav).
118
-
119
- - **Partial install success messaging** β€” if file copies succeed but MCP config needs a nudge, you'll see a clear warning instead of a generic failure.
120
-
121
- #### Defaults
122
-
123
- - **Claude Code default background music** set to Chillwave (`agent_vibes_chillwave_v2_loop.mp3`).
124
-
125
- #### Under the Hood
126
-
127
- - LLM key validation tightened for safer env var handling.
128
- - Improved error logging for edge cases in Copilot CLI config writes.
129
- - Known limitation documented: if you launch VS Code from a Claude-Code-started terminal, `CLAUDECODE=1` can leak β€” workaround is to `unset CLAUDECODE` first.
130
-
131
- ---
132
-
133
- ## 🎯 v5.2.0 β€” Remote Voice Preview + Caveman Mode + Voice Ratings
134
-
135
- **Release Date:** April 2026
136
-
137
- This release adds remote TTS preview support, a new ultra-terse verbosity mode, and thumbs up/down voice ratings across the TUI.
138
-
139
- ### New Features
140
-
141
- - **Caveman verbosity mode** β€” New `caveman` verbosity level for ultra-terse TTS output. Fragments instead of sentences. Set via `/agent-vibes:verbosity caveman` or the MCP `set_verbosity` tool. Auto-downloads a voice on fresh install if none are present.
142
-
143
- - **Thumbs up/down voice ratings** β€” Replace the old star favorites with πŸ‘/πŸ‘Ž ratings. Press `+` to thumbs up, `-` to thumbs down in both the Voices tab and the voice picker (Setup tab). Ratings persist across sessions and are shared between all voice selection UIs.
144
-
145
- - **Remote voice preview** β€” Voice preview in the TUI Voices tab, voice picker, and voice browser now works on headless servers. When the active provider is `ssh-remote` or `agentvibes-receiver`, preview routes through `play-tts.sh` to play audio on the remote receiver instead of requiring local Piper + audio player. Platform-aware: uses PowerShell on Windows, bash on Linux.
146
-
147
- - **SSH receiver provider routing** β€” `ssh-remote` and `agentvibes-receiver` are now first-class providers in `play-tts.sh`. Both the `speak_text()` function and the main routing case statement support them, eliminating "Unknown provider" errors.
148
-
149
- ### Fixes
150
-
151
- - **Auto-patch LibriTTS speaker names** β€” Voice download now auto-patches LibriTTS speaker names so multi-speaker voices work correctly out of the box.
152
-
153
- - **Voice validation regex hardened** β€” The VOICE parameter regex in `play-tts-ssh-remote.sh` and `play-tts-agentvibes-receiver.sh` now allows `::` (multi-speaker), `.` (locale), and spaces (speaker names) without accepting backslash (injection risk). Linux and Windows receiver templates updated to match.
154
-
155
- - **`base64` cross-platform compatibility** β€” `play-tts-agentvibes-receiver.sh` now probes for GNU `base64 -w 0`, falls back to BSD `-b 0`, then `tr -d '\n'`. Fixes script abort on macOS/BSD systems.
156
-
157
- - **Audio effects double-processing fix** β€” `play-tts-piper.ps1` skips its own audio-processor call when `AGENTVIBES_NO_PLAY` is set, preventing reverb/music from being applied twice.
158
-
159
- - **Exit code leak fix** β€” `play-tts.ps1` now exits with code 0 explicitly, preventing native command exit codes (piper, ffmpeg, sox) from leaking through and causing false TTS failure reports.
160
-
161
- - **Windows receiver-tab platform support** β€” Tailscale IP detection, local IP via PowerShell, sshd_config reading, and clipboard copy all work natively on Windows now.
162
-
163
- - **`llm:default` audio effects row** β€” New default row in `audio-effects.cfg` ensures remote receivers get reverb, music, and pretext even without a per-LLM config entry.
164
-
165
- - **Preview sample text** β€” Changed from "Here is a preview of your audio settings" to avoid Piper pronunciation glitch on the word "preview".
166
-
167
- ---
168
-
169
- ## πŸ›‘οΈ v5.1.4 β€” TTS Resilience Overhaul + Default LLM Provider + Per-Client Routing
170
-
171
- **Release Date:** April 2026
172
-
173
- This release closes a long-running cluster of bugs around per-LLM TTS routing, parallel audio playback, stuck-process deadlocks, and stale-audio replay. It also adds a new "Default" provider slot in the Setup tab for fallback audio configuration, and switches to a per-client config scheme that correctly routes Claude Code, GitHub Copilot (Chat + CLI), and OpenAI Codex to their own voices and pretexts.
174
-
175
- ### New Features
176
-
177
- - **Default LLM provider** β€” New entry at the bottom of Setup β†’ Providers. Config-only (no install/remove buttons) with a Configure button that opens the standard per-LLM audio modal. When any tool calls TTS without identifying its LLM, the `llm:default` row in `audio-effects.cfg` provides the fallback voice, pretext, music, reverb, and engine. Empty pretext by default β€” users opt in.
178
-
179
- - **Per-LLM background music now auto-enables** β€” Setting a `bg_track` on any per-LLM Configure modal now actually plays that track. Previously you also had to toggle the global `backgroundMusic.enabled` flag, which made the per-LLM bg track field silently dead.
180
-
181
- - **Copilot CLI support** β€” `installCopilotMcp` now writes BOTH `.vscode/mcp.json` (for VS Code Copilot Chat) AND `~/.copilot/mcp-config.json` (for the standalone `copilot` CLI, which is a different product). Fresh installs support both tools automatically.
182
-
183
- ### Per-Client Routing Architecture
184
-
185
- Previously `AGENTVIBES_LLM=claude-code` was set in `.mcp.json`, which broke Copilot CLI because Copilot CLI also reads `.mcp.json` with precedence over its own `~/.copilot/mcp-config.json` β€” so it adopted Claude Code's env and mis-routed.
186
-
187
- The new architecture splits per-LLM identification per-client:
188
-
189
- - `.mcp.json` (project) has **no `AGENTVIBES_LLM` env block**
190
- - `~/.copilot/mcp-config.json` sets `AGENTVIBES_LLM=copilot` for GitHub Copilot CLI
191
- - `~/.codex/config.toml` sets `AGENTVIBES_LLM=codex` for OpenAI Codex
192
- - The MCP server (`mcp-server/server.py`) **auto-detects Claude Code** via the `CLAUDECODE=1` env var that Claude Code sets on every subprocess it spawns. Copilot CLI and Codex don't set this var, so each client reliably routes to its own config.
193
-
194
- Upgrade path: re-run the AgentVibes installer in any existing project. The new `installClaudeMcp` auto-strips any stale `AGENTVIBES_LLM` env block from existing `.mcp.json` files so Copilot CLI stops mis-routing.
195
-
196
- ### TTS Resilience Overhaul (`play-tts.ps1`)
197
-
198
- - **Cross-process playback mutex** β€” `AgentVibesPlaybackLock` (named mutex) serializes playback across all callers: Claude Code hooks, MCP `text_to_speech`, direct CLI, party mode. No more overlapping or parallel audio when multiple LLMs run in the same project.
199
-
200
- - **Self-healing on mutex timeout** β€” When the 15-second mutex acquisition fails, the new code queries `Win32_Process` for any stuck `play-tts.ps1` process older than 20 seconds, calls `Stop-Process -Force` on each, and logs the kill to stderr. The next TTS call succeeds immediately β€” no manual `taskkill` needed.
201
-
202
- - **25-second script watchdog** β€” A sibling PowerShell job force-kills `play-tts.ps1` after 25 seconds regardless of where it's stuck (SoundPlayer deadlock, locked audio device, zombie ffmpeg). Guarantees forward progress.
203
-
204
- - **Hard error on mutex timeout** β€” Replaces the old "play anyway" fallback which just stacked more stuck processes behind the first. Now exits cleanly with code 2 and a diagnostic message.
205
-
206
- - **Exact filename capture from provider stdout** β€” `play-tts.ps1` parses the `[OK] Saved to: <path>` line from `play-tts-piper.ps1` and uses that exact file. Replaces the old "pick most recent `tts-*.wav` in the audio dir" heuristic which silently replayed stale audio from earlier sessions whenever synthesis failed. Root cause of the "Codex speaks Claude Code's audio" bug.
207
-
208
- - **Synthesis-failure hard error** β€” When the provider doesn't produce an output file, `play-tts.ps1` exits with code 3 and a loud error instead of falling back to any older file in the cache.
209
-
210
- - **Scratch file rename** β€” Reverb post-processing now writes to `av-reverbed-scratch.wav` and mix post-processing writes to `av-mixed-scratch.wav`. Fixed names outside the `tts-XXXXXXXX` random namespace so the file lookup can never pick them up as a synth input. Eliminates the compound `tts-xxx.wav.effected-mixed-mixed-mixed-mixed.wav` chain that accumulated on every run.
211
-
212
- - **Per-LLM voice overrides explicit `VoiceOverride`** β€” LLMs call `get_config` at session start and echo the returned voice back on every `text_to_speech` call as an explicit MCP parameter. With the old "explicit wins" priority, that global voice overrode per-LLM routing. Now the `llm:<key>` voice row always wins when `-llm` is set.
213
-
214
- - **`$LlmBgTrack` and `$LlmBgVolume` parsed from cfg row** β€” Previously fields 2 and 3 of the `llm:<key>` line were ignored in the PowerShell version (the bash version already parsed them).
215
-
216
- - **Per-LLM `bg_track` force-enables `$BgEnabled`** β€” When a per-LLM row specifies a background track, it's auto-enabled regardless of the global `backgroundMusic.enabled` flag.
217
-
218
- - **ASCII-only encoding** β€” Removed em-dash `β€”` and right-arrow `β†’` from `play-tts.ps1`. PowerShell on some Windows locales loads scripts in CP1252 and choked on the UTF-8 bytes with a misleading "Missing closing `}`" parse error.
219
-
220
- - **`lessac-medium` β†’ `lessac-high` default for codex** β€” `en_US-lessac-medium` silently fails to synthesize on some Windows Piper installs (loads the model, exits with empty output). `lessac-high` works reliably and is the new default in `DEFAULT_LLM_CONFIGS.codex` and the packaged `audio-effects.cfg`.
221
-
222
- ### UX Improvements
223
-
224
- - **Setup β†’ Providers Install confirmation** β€” Pressing Enter to dismiss the post-install confirmation page now advances focus to the NEXT provider row's same-column button (Install β†’ Install, Configure β†’ Configure), instead of snapping back to Claude Code's Install. Installing all three providers is now a natural Enter-Enter-Enter flow.
225
-
226
- ### Testing & Hardening
227
-
228
- - **30 new/updated regression tests** in `test/unit/llm-provider-mcp-routing.test.js` and `test/unit/windows-tts.test.js` covering:
229
- - Default LLM provider config shape + setup-tab wiring
230
- - `CLAUDECODE` auto-detection in `server.py`
231
- - `.mcp.json` template MUST NOT contain `AGENTVIBES_LLM`
232
- - `~/.copilot/mcp-config.json` writer in `installCopilotMcp`
233
- - `play-tts.ps1` PowerShell-parseable (catches em-dash / encoding regressions via `[System.Management.Automation.Language.Parser]`)
234
-
235
- ### How to Update
236
-
237
- ```
238
- npm cache clean --force
239
- npx --yes agentvibes@5.1.4
240
- ```
241
-
242
- If you have any existing project with AgentVibes installed, re-run the installer there once so the per-client config migration takes effect. The `.mcp.json` in each project will be auto-upgraded to strip the stale `AGENTVIBES_LLM` env block, and `~/.copilot/mcp-config.json` will be created if you have the Copilot provider enabled.
243
-
244
- ---
245
-
246
- ## πŸ›‘οΈ v5.1.3 β€” Hardening Pass (Adversarial Review Followup)
247
-
248
- **Release Date:** April 2026
249
-
250
- This release addresses HIGH/MEDIUM findings from a parallel adversarial review (Blind Hunter + Edge Case Hunter) of the v5.1.2 hotfix.
251
-
252
- ### Bug Fixes
253
-
254
- - **Existing `.mcp.json` is now auto-migrated** β€” v5.1.2's installer detected an existing `.mcp.json` and printed instructions to fix it manually. Result: anyone upgrading from v5.1.0/v5.1.1 was still broken after `npm i -g agentvibes@5.1.2`. v5.1.3 detects an existing config, merges the `AGENTVIBES_LLM` env var (and the rest of the agentvibes server entry) in-place, and shows a green "βœ… MCP Configuration Updated" message. Existing user `env` keys are preserved.
255
-
256
- - **`AGENTVIBES_LLM` is now validated** before being forwarded to the child shell. The bash version of `play-tts.sh` already validated `^[a-zA-Z0-9_-]+$` and rejected weird values; the Python `mcp-server/server.py` and the Windows `play-tts.ps1` did not. Now all three do, with the same regex. Invalid values are logged to stderr and treated as "unset" so TTS still works (falls back to default config).
257
-
258
- ### Testing & Hardening
259
-
260
- - **`npm pack` content guard now hard-fails on `packError`** instead of silently returning early. The previous v5.1.2 implementation had `if (packError) return;` in 6 of 8 tests, which meant a real `npm pack` failure surfaced as one failed test and SIX false-greens β€” defeating the entire purpose of the publish guard.
261
-
262
- - **Dirty-tree check now uses `git status --porcelain`** instead of `git diff HEAD`. The previous implementation only caught modified-but-uncommitted tracked files; it missed brand-new untracked files in publishable directories (e.g. a `play-tts.ps1.new` someone forgot to delete). The v5.1.0 disaster could just as easily have shipped via an untracked stray file.
263
-
264
- - **`npm pack` exec timeout** β€” added explicit 60-second timeout with `SIGKILL` so the publish guard can't hang CI on a stuck registry call.
265
-
266
- - **`git status` failures hard-fail** instead of silently skipping. A missing git binary in CI was previously treated as "no findings" β€” that's exactly the opposite of what a security guard should do. Now it fails loudly with a message explaining the guard requires git.
267
-
268
- - **3 new regression tests** for the new validations and migration logic.
269
-
270
- ### How to Update
271
-
272
- ```
273
- npm cache clean --force
274
- npx --yes agentvibes@5.1.3
275
- ```
276
-
277
- If you upgraded from v5.1.0 or v5.1.1, **re-run the AgentVibes installer once** so the new in-place migration touches your existing `.mcp.json` / `.codex/config.toml` / `.vscode/mcp.json`.
278
-
279
- ---
280
-
281
- ## πŸ”€ v5.1.2 β€” MCP Per-LLM Routing Hotfix
282
-
283
- **Release Date:** April 2026
284
-
285
- ### Bug Fixes
286
-
287
- - **MCP server no longer hardcodes `-llm copilot`** β€” `mcp-server/server.py` was passing `-llm copilot` for every caller, regardless of whether the actual client was Codex, Copilot, or Claude Code. This meant per-LLM voice/pretext/music routing in `audio-effects.cfg` was effectively broken: all three providers fell through to the same `llm:copilot` lookup (or worse, the global default config). The server now reads `AGENTVIBES_LLM` from the environment and forwards that as the `-llm` value, falling back to no `-llm` flag if unset.
288
-
289
- - **MCP launcher templates set `AGENTVIBES_LLM`** β€” Each provider's MCP config now sets the env var so the server knows which LLM is calling:
290
- - Codex: `.codex/config.toml` β†’ `env = { AGENTVIBES_LLM = "codex" }`
291
- - Copilot: `.vscode/mcp.json` β†’ `"env": { "AGENTVIBES_LLM": "copilot" }`
292
- - Claude Code: `.mcp.json` β†’ `"env": { "AGENTVIBES_LLM": "claude-code" }`
293
-
294
- Both freshly-installed configs and the manual-instruction snippets shown by the installer include the env var.
295
-
296
- ### Testing & Hardening
297
-
298
- - **24 new regression tests** in `test/unit/llm-provider-mcp-routing.test.js` and `test/unit/npm-pack-contents.test.js` enforce the contract end-to-end:
299
- - Each MCP launcher template MUST set `AGENTVIBES_LLM` to the correct value
300
- - `mcp-server/server.py` MUST read `AGENTVIBES_LLM` from env and MUST NOT hardcode `-llm copilot`
301
- - `play-tts.ps1` MUST declare its `$llm` parameter, contain per-LLM lookup logic, export `AGENTVIBES_LLM_KEY`, and be at least 400 lines (catches the v5.1.0 mass-deletion regression)
302
- - `play-tts.sh` MUST parse `--llm` and do per-LLM lookup against `audio-effects.cfg`
303
- - **Working tree must be clean** before publishing (the v5.1.0 disaster guard β€” `npm publish` packs the working tree, not the git tag, so any uncommitted local edits get shipped)
304
-
305
- - The contract tests are **mutation-tested**: temporarily replacing `play-tts.ps1` with a broken stub fires 4 assertions with clear messages, proving the exact v5.1.0 regression would now block publish.
306
-
307
- ### How to Update
308
-
309
- ```
310
- npm cache clean --force
311
- npx --yes agentvibes@5.1.2
312
- ```
313
-
314
- If you already have AgentVibes installed for one or more providers, re-run the installer's per-provider configure step (or manually add `"env": { "AGENTVIBES_LLM": "<your-llm>" }` to your `.mcp.json` / `.vscode/mcp.json` / `.codex/config.toml`).
315
-
316
- ---
317
-
318
- ## 🩹 v5.1.1 β€” Windows TTS Hook Hotfix
319
-
320
- **Release Date:** April 2026
321
-
322
- ### Bug Fixes
323
-
324
- - **Windows `play-tts.ps1` `-llm` parameter restored** β€” A regression caused the npm-published v5.1.0 package to ship a `play-tts.ps1` that lacked the `-llm` parameter and the per-LLM config lookup. Per-LLM TTS routing on Windows failed with `A parameter cannot be found that matches parameter name 'llm'`. This affected:
325
- - **Setup tab Preview button** for any provider configured with per-LLM voice/effects
326
- - **agentvibes MCP `text_to_speech` tool** when called from Codex / Copilot / Claude Code
327
- - Any code path that invokes `play-tts.ps1 ... -llm <provider>`
328
-
329
- The git tag `v5.1.0` had the correct file all along β€” only the npm tarball was affected, because `npm publish` packs the working tree (which contained an uncommitted local regression) instead of the git tag.
330
-
331
- ### How to Update
332
-
333
- If you installed v5.1.0 from npm and hit the `-llm` error, clear your npx cache and reinstall:
334
-
335
- ```
336
- npm cache clean --force
337
- npx --yes agentvibes@5.1.1
338
- ```
339
-
340
- ### Note for Maintainers
341
-
342
- To prevent this kind of working-tree-vs-tag drift in future releases, the release workflow should run `npm publish` from a freshly checked-out clone of the tag, not from the development working directory.
343
-
344
- ---
345
-
346
- ## πŸŽ™οΈ v5.1.0 β€” Voice Picker Overhaul + Auto-Save Agent Modal
347
-
348
- **Release Date:** April 2026
349
-
350
- ### New Features
351
-
352
- - **Auto-save in agent edit modal** β€” Per-agent voice/personality/music/reverb/pretext changes now save automatically as you edit them. The explicit Save button is gone; a brief "βœ“ Saved!" toast confirms each change. Cancel and Reset to Defaults still behave as before.
353
-
354
- - **Unique LibriTTS speaker names** β€” The 904 LibriTTS speakers no longer show as "Anna", "Anna-2", "Anna-3", … "Anna-16". Each gets a deterministic surname from a 16-name pool: **Anna Bell**, **Anna Carter**, **Anna Davis**, …, **Anna Quinn**. Underlying voice IDs are unchanged so existing user configs still resolve.
355
-
356
- - **Pink/blue gender symbols** β€” Female voices show **♀** in pink (magenta), male voices show **β™‚** in light blue (bright-cyan), unknown shows `β€”`. Header `Gender` column replaced with colored `♀/β™‚` (10 β†’ 4 chars wide), freeing room for longer names. Applied to the main Voices tab AND all 3 voice picker modals (Setup, Agents, Settings).
357
-
358
- - **First-letter quick jump in voice pickers** β€” Press any letter `a`–`z` to jump to the first voice starting with that letter. Reserved keys (`q`, `j`, `k`, `g`, `h`, `l`) are blocked so they keep their cancel / vi-nav meanings.
359
-
360
- - **Page navigation in voice pickers** β€” `PgUp`, `PgDn`, `Home`, `End` now work in all voice picker modals.
361
-
362
- - **3 new background music tracks** β€” `Late Night Hip Hop Groove`, `Drifting Down the Hall` (90s vibes), and `Midnight Charleston Stomp` (swing). Track count goes from 15 β†’ 18.
363
-
364
- ### Improvements
365
-
366
- - **Voice picker search bar removed** β€” Replaced with first-letter quick jump. The old search textbox had focus issues that swallowed nav keys. The jump is faster for typical "find voice X" use.
367
-
368
- - **Track list sorting fixed** β€” Tracks with emoji prefixes (e.g. `🎀 Late Night Hip Hop Groove`) now sort by the alphabetic part of the name, not the emoji codepoint. Order is consistent across Node/ICU versions.
369
-
370
- - **Favorite hotkey is now `*` only** β€” Removed the duplicate `f` binding for marking favorites in voice pickers and the main Voices tab. `f` is now free for first-letter jump (e.g. jumping to Frank or Felix). The `*` marker remains the canonical way to toggle favorites.
371
-
372
- ### Bug Fixes
373
-
374
- - **Voices tab uninstalled rows no longer corrupt** β€” Selecting an uninstalled voice was visually deleting its Provider column due to a regex strip that over-matched the row's `bright-black-fg` wrapper. Replaced with a precise hint anchor that only strips the exact hint text.
375
-
376
- - **Music tab + Voices tab blink artifacts gone** β€” `β–ˆ` cursors no longer leave stray blocks behind when scrolling rapidly through the list. Both tabs now use a precise blink-strip helper instead of the fragile position-based slicer.
377
-
378
- - **Setup tab no longer silently fails** β€” `_renderScreen3` was wrapping the entire `setupCompleted` write block in a single empty `try/catch {}`. Corrupt local config files are now backed up to `config.json.bak` and rewritten fresh, with errors logged to stderr β€” no more "stuck repeating setup" with no explanation.
379
-
380
- - **Voice picker `q` cancel now works** β€” The new first-letter jump was swallowing `q` (and other vi nav keys). Reserved key blocklist added.
381
-
382
- - **Track picker case-insensitive sort** β€” New tracks with Title Case names (`Late Night Hip Hop Groove.mp3`) no longer jump to the top of the list above the lowercase `agent_vibes_*` tracks.
383
-
384
- ### User Impact
385
-
386
- - Editing an agent's voice or settings is now faster β€” no need to remember to click Save
387
- - The voice picker is dramatically less cluttered with 904 LibriTTS speakers all having unique, friendly names
388
- - Gender at a glance via colored symbols
389
- - Three new music tracks for variety
390
- - Blink/scroll artifacts gone in both Voices and Music tabs
391
-
392
- ---
393
-
394
- ## πŸš€ v5.0.0 β€” Multi-Provider Support: Claude Code + Copilot + Codex
395
-
396
- **Release Date:** April 2026
397
-
398
- ### New Features
399
-
400
- - **GitHub Copilot Support in VS Code** β€” Install and configure AgentVibes for GitHub Copilot directly from the TUI. Creates `.vscode/mcp.json` and `.github/copilot-instructions.md`.
401
-
402
- - **OpenAI Codex Support in VS Code** β€” Full Codex integration with `.codex/config.toml`, `AGENTS.md` TTS protocol, and init hooks.
403
-
404
- - **Unified Setup Tab** β€” The old 5-screen Install wizard and separate LLM Providers tab are merged into a single Setup tab. First-run shows a 4-step wizard (Language β†’ Dependencies β†’ TTS Engine β†’ Providers); returning users skip straight to the Providers screen.
405
-
406
- - **Per-Provider Audio Config** β€” Each LLM provider (Claude Code, Copilot, Codex) gets its own TTS Engine, Voice, Reverb, Background Music, and Pretext via a Configure modal.
407
-
408
- - **TTS Engine Selection Screen** β€” New wizard step shows OS-aware engine list (Piper, Soprano, Windows SAPI, macOS Say) with Install buttons for missing engines.
409
-
410
- - **Settings Tab Redesigned** β€” Replaced the 5-sub-tab layout with a clean flat list: Interface Language, Default TTS Engine, Default Voice, Verbosity, Audio Destination, Config Storage, and Re-run Setup Wizard.
411
-
412
- ### Improvements
413
-
414
- - **Voice picker upgraded everywhere** β€” 3-column display (Name, Gender, Provider), Space bar preview with synthesis + playback, scroll position preserved during preview.
415
-
416
- - **Hint text artifacts fixed** β€” Moving between rows in Agents and Music tabs no longer leaves ghost text on previous rows.
417
-
418
- - **Codex voice routing corrected** β€” `AGENTS.md` now instructs Codex to use `play-tts` for normal speech and `bmad-speak` only during BMAD party mode.
419
-
420
- ### User Impact
421
-
422
- - AgentVibes now works with Claude Code, GitHub Copilot, AND OpenAI Codex
423
- - Streamlined setup experience β€” one tab for all provider management
424
- - Per-provider voice customization without editing config files
425
- - Settings page is dramatically simpler and faster to navigate
426
-
427
- ---
428
-
429
- ## πŸ› v4.6.8 β€” Fresh Install Crash Fix
430
-
431
- **Release Date:** April 2026
432
-
433
- ### Bug Fixes
434
-
435
- - **Settings tab no longer crashes on fresh install** β€” `parseMultiSpeaker()` called `.includes()` on a null voice ID when no voice was configured yet. Added a null guard that returns a safe default object. Reported by a user hitting this immediately after the install wizard completed.
436
-
437
- - **macOS /var symlink in replay test** β€” Fixed test assertion that failed on macOS where `/var` is a symlink to `/private/var`, causing replay path comparisons to break.
438
-
439
- - **BMAD voices pretext parsing** β€” `bmad-voices.md` pretext lines are now correctly parsed and markdown is stripped more thoroughly before TTS synthesis.
440
-
441
- ### User Impact
442
-
443
- - New users no longer crash when navigating to Settings after a fresh install
444
- - Test suite passes reliably on macOS
445
-
446
- ---
447
-
448
- ## πŸŽ™οΈ v4.6.7 β€” Party Mode TTS Fixes
449
-
450
- **Release Date:** April 2026
451
-
452
- ### Bug Fixes
453
-
454
- - **Party mode pretext now spoken** β€” Agent pretexts (e.g. "John, Product Manager here") were silently dropped. The pre-synthesis step ran on the response text only; when `bmad-speak.ps1` later prepended the pretext, `play-tts.ps1` skipped synthesis because a pre-synthesized WAV was already set. Pre-synthesis now includes the pretext so it's always spoken.
455
-
456
- - **Markdown stripped in party mode** β€” Agents were speaking asterisks, hashes, and backticks literally. `bmad-party-speak.ps1` now strips bold, italic, headings, inline code, links, and bullet markers before TTS β€” consistent with `bmad-speak.ps1`.
457
-
458
- - **Session start hook outputs proper JSON + BMAD routing (Windows)** β€” `session-start-tts.ps1` was using plain `Write-Output` text which isn't reliably injected as `additionalContext`. Now outputs `hookSpecificOutput` JSON (matching the bash version) and includes BMAD agent voice routing instructions so party mode / single agent mode TTS works correctly on Windows.
459
-
460
- - **PreToolUse hook no longer errors on grep/regex commands** β€” The git-push guard hook used `-match` (regex) which crashed on commands containing `\*`, `\|`, etc. Switched to `-like` wildcard and wrapped in `try/catch` so it exits silently on any non-matching command.
461
-
462
- ### User Impact
463
-
464
- - Party mode agents speak their configured pretext introductions
465
- - No more spoken asterisks or markdown syntax in party mode
466
- - Windows TTS now reliably activates on session start
467
-
468
- ---
469
-
470
- ## 🧭 v4.6.6 β€” Natural TUI Navigation
471
-
472
- **Release Date:** April 2026
473
-
474
- ### Improvements
475
-
476
- The Settings TUI now navigates the way you'd expect. Arrow keys flow naturally top-to-bottom through the interface β€” main header β†’ sub-tab bar β†’ content β†’ footer β€” with no surprising jumps or dead ends.
477
-
478
- - **Down from the main header** lands on the active sub-tab bar item, so you're always oriented before pressing further.
479
- - **Down through content** moves row-by-row within the current tab, reaching Full Preview and the Save buttons at the bottom. It no longer auto-jumps to the next sub-tab.
480
- - **Up from the first content row** returns you to the current sub-tab (not always Voice).
481
- - **Left/Right in the sub-tab bar** is the natural way to switch between Voice, Effects, Personality, Output, and Language tabs.
482
- - **Left/Right in the footer** moves between Full Preview, Save Globally, Save Locally, and Cancel Changes.
483
- - **Language tab** now has a proper scrollable list β€” arrow down to enter it, Up/Down to select a language, Enter to apply, Down past the last item to reach the footer.
484
- - **Readme tab** falls back to the AgentVibes package README when opened in a project folder that has no README of its own.
485
- - **Escape from the installer** now navigates cleanly to Settings instead of getting stuck.
486
-
487
- ---
488
-
489
- ## πŸ”§ v4.6.5 β€” Patch Release
490
-
491
- **Release Date:** April 2026
492
-
493
- ### Improvements
494
-
495
- - **TUI non-interactive hint** β€” Installer header now shows a two-tone hint on row 2: `Skip this TUI?` (white) + `npx agentvibes install --non-interactive` (yellow), with a sponsor link on the right. Useful for CI/CD pipelines and scripted installs.
496
-
497
- - **`--non-interactive` routing fix** β€” `npx agentvibes install --non-interactive` (and `--yes`/`-y`) now correctly bypasses the TUI and routes directly to the CLI installer. Previously the TUI would still launch.
498
-
499
- - **Sponsor link in TUI header** β€” Row 2 of the header now shows a `β™‘ Sponsor this Developer github.com/sponsors/paulpreibisch` link on the right side, alongside the non-interactive hint on the left.
500
-
501
- - **Consistent line endings via `.gitattributes`** β€” Added `.gitattributes` to enforce `LF` for shell scripts, JS, JSON, and markdown, and `CRLF` for PowerShell scripts. Prevents spurious `bin/` file modifications showing as dirty on Windows due to CRLF noise.
502
-
503
- - **`bin/` execute bits restored** β€” Re-indexed `bin/agent-vibes`, `bin/agentvibes-voice-browser.js`, `bin/mcp-server.js`, and `bin/test-bmad-pr` to ensure consistent line endings; verified all four retain `chmod +x` (`100755` mode).
504
-
505
-
506
- ### User Impact
507
-
508
- - No functional changes β€” infrastructure and tooling improvements only
509
-
510
- ---
511
-
512
- ## πŸ› v4.6.4 β€” Patch Release
513
-
514
- **Release Date:** April 2026
515
-
516
- ### Bug Fixes
517
-
518
- - **CI green on macOS** β€” `mktemp` with a file extension suffix (e.g. `tts-XXXXXX.wav`) works on Linux (GNU mktemp) but silently fails on macOS (BSD mktemp), which requires `XXXXXX` to be at the very end of the template. Fixed all 12 occurrences across `play-tts-piper.sh`, `play-tts-soprano.sh`, `play-tts-macos.sh`, and `audio-processor.sh` by creating the temp file without extension then renaming to add `.wav`/`.aiff`.
519
-
520
- - **macOS path symlink in test 213** β€” macOS transparently resolves `/var/folders/...` to `/private/var/folders/...` via a symlink. The voice-manager replay test was comparing against the unresolved path and failing. Fixed by using `cd && pwd` to get the real path before asserting.
521
-
522
- - **`bmad-party-speak.sh` execute permission** β€” The bash hook lost its `+x` bit, causing `party mode scripts ship with the package` CI test to fail. Restored `100755` mode via `git update-index`.
523
-
524
- ### User Impact
525
-
526
- - No user-facing changes β€” CI infrastructure fixes only
527
-
528
- ---
529
-
530
- ## πŸ› v4.6.3 β€” Patch Release
531
-
532
- **Release Date:** April 2026
533
-
534
- ### Bug Fixes
535
-
536
- - **Party mode pre-synthesis uses wrong speaker for every agent** β€” `bmad-party-speak.ps1` extracted the trailing number from the display name suffix (e.g. `14` from `Yara-14`) and passed it directly as the piper `--speaker` index. The display suffix is a human-readable disambiguator, not the model index. `Yara-14` is speaker 860, but the bug caused piper to speak as speaker 14 ("Ivy") instead. Every configured agent was silently playing a completely different voice. The fix looks up the full speaker name in `speaker_id_map` from the `.onnx.json` file, matching what `play-tts-piper.ps1` already does correctly. Fixes [#165](https://github.com/paulpreibisch/AgentVibes/issues/165).
537
-
538
- ### Testing
539
-
540
- - **New cross-platform test: `bmad-party-speak-speaker-id.test.js`** β€” 15 tests covering correct `speaker_id_map` lookup for all 8 configured agents, plain names without suffixes (e.g. `Evan`), missing model graceful degradation, and a regression suite that verifies the correct index disagrees with the naive suffix extraction for every agent.
541
-
542
- ### User Impact
543
-
544
- - Party mode agents now speak with their correct configured voices (the voices shown in the BMAD Agents tab)
545
- - No configuration changes needed β€” the fix is automatic
546
-
547
- ---
548
-
549
- ## πŸ› v4.6.2 β€” Patch Release
550
-
551
- **Release Date:** April 2026
552
-
553
- ### Bug Fixes
554
-
555
- - **BMAD party mode: agents now speak with their unique voices** β€” The party mode `SKILL.md` was missing TTS wiring entirely. It now creates `.bmad-agent-context` on activation, calls `bmad-speak.ps1` sequentially per agent after each round, and cleans up on exit. When BMAD and AgentVibes are both installed, AgentVibes' skill now correctly overrides the BMAD version.
556
-
557
- - **LibriTTS speaker IDs resolved correctly on Windows** β€” `play-tts-piper.ps1` was extracting the speaker index via a regex on the voice name suffix (e.g. `Holly-7` β†’ `7`). That suffix is a disambiguation counter, not the Piper speaker index. `Holly-7` is actually speaker 322. The script now looks up the real index from `voice-assignments.json`, with a fallback to the patched `.onnx.json`.
558
-
559
- - **LibriTTS `parseMultiSpeaker` fallback for unpatched models** β€” `voices-tab.js` now falls back to `voice-assignments.json` when the `.onnx.json` speaker map hasn't been patched yet with friendly names, preventing silent fallback to speaker 0 (often male) on fresh installs.
560
-
561
- - **Agent pretext spoken on Windows** β€” `bmad-speak.ps1` never read or applied the agent's configured pretext. It now reads `pretext` from the voice map profile, and falls back to the default `"DisplayName, Title here."` computed from the agent manifest β€” matching the behaviour of `bmad-speak.sh` and `AgentVoiceStore.getDefaultPretext()`.
562
-
563
- ### User Impact
564
-
565
- - Party mode agents will introduce themselves by role before speaking and use their individually configured voices throughout the conversation
566
- - LibriTTS multi-speaker voices now reliably map to the correct speaker on first install (no manual patching required)
567
- - No breaking changes β€” all fixes are silent fallbacks or missing behaviours being added
568
-
569
- ---
570
-
571
- ## ✨ v4.6.0 β€” Minor Release
572
-
573
- **Release Date:** April 2026
574
-
575
- ### New Features
576
-
577
- - **BMAD party mode TTS auto-installs for all platforms** β€” The installer now automatically copies `bmad-party-speak.sh` (Linux/macOS/WSL) or `bmad-party-speak.ps1` (Windows) to `~/.claude/hooks/` and registers a `PostToolUse` hook in `~/.claude/settings.json`. Party mode agents now speak out of the box in any BMAD project without manual setup. Both scripts are included in critical hooks so `npx agentvibes update` keeps them fresh.
578
-
579
- ### Bug Fixes
580
-
581
- - **Background music volume default** β€” All volume defaults lowered from 70% to 20% across the UI (settings tab, agents tab, music tab, track picker) and scripts (`audio-processor.sh`, `bmad-speak.sh`, `bmad-speak.ps1`). New installs and newly configured agents default to a much more reasonable level.
582
- - **bmad-speak volume inheritance** β€” `bmad-speak.sh` and `bmad-speak.ps1` now read the global `background-music-volume.txt` config file as the fallback volume instead of a hardcoded value.
583
- - **Installer wizard left arrow** β€” Pressing ← on the completion screen (screen 5) to move from Done-Quit to Done-Customize More no longer jumps back to the installation step.
584
-
585
- ### Tests
586
-
587
- - 29 new tests: volume default regression guards across all affected files, `configurePartyModeHook` installer coverage (idempotency, settings.json registration, script copying, hook preservation), and a regression test for the screen 5 navigation fix.
588
-
589
- ---
590
-
591
- ## πŸ› v4.5.7 β€” Patch Release
592
-
593
- **Release Date:** April 2026
594
-
595
- ### Bug Fixes
596
-
597
- - **Background music volume default** β€” All volume defaults lowered from 70% to 20% across the UI (settings tab, agents tab, music tab, track picker). New installs and newly configured agents will default to a much more reasonable background music level.
598
- - **bmad-speak volume inheritance** β€” `bmad-speak.sh` and `bmad-speak.ps1` now read the global `background-music-volume.txt` config file as the fallback volume instead of a hardcoded value. Per-agent background music volume now correctly inherits the global setting when no explicit per-agent override is saved.
599
-
600
- ---
601
-
602
- ## πŸ› v4.5.1 β€” Patch Release
603
-
604
- **Release Date:** April 2026
605
-
606
- ### Bug Fix
607
-
608
- - **Music tab preview** β€” Pressing Space on a track in the Music tab now plays correctly
609
- when running `npx agentvibes` from a fresh directory. Previously, if `.claude/audio/tracks/`
610
- didn't exist in the current working directory, the track list showed built-in tracks but
611
- Space did nothing (the player was spawned against a non-existent path). Now falls back to
612
- the package-bundled tracks directory automatically.
613
-
614
- ---
615
-
616
- ## 🌍 v4.5.0 β€” "Speak Every Language" Release
617
-
618
- **Release Date:** April 2026
619
-
620
- Full multilingual TUI support across all 9 languages, complete Windows security hardening, and zero failing tests.
621
-
622
- ### 🌍 Multilingual TUI β€” 9 Languages
623
-
624
- Every screen, tab, button, and label in the `npx agentvibes` TUI is now fully translated:
625
-
626
- - **English, Spanish, French, German, Portuguese, Japanese, Korean, Chinese (Simplified), Italian**
627
- - Language selection on first launch (Screen 0 of the installer wizard)
628
- - Language sub-tab in Settings β€” switch language live without restarting
629
- - All tab bar labels, button text, footer hints, and status messages translated
630
- - BMAD tab and SSH Receiver tab fully localized
631
- - Per-language i18n files (`src/i18n/en.js`, `es.js`, `fr.js`, ...) with English fallback
632
-
633
- ### πŸͺŸ Windows Security & Bug Fixes
634
-
635
- - **Temp filenames** β€” All `Date.now()` temp filenames replaced with `randomUUID()` across JS and PowerShell (unpredictable, prevents temp file hijacking)
636
- - **Shell injection** β€” `execSync('which ...', { shell: true })` replaced with `spawnSync` (no shell expansion)
637
- - **Music player** β€” Hardcoded `ffplay` on Windows replaced with `detectMp3Player()` (respects user's installed player)
638
- - **Boolean coercion** β€” `isWindowsTerminal` now correctly returns `true/false` instead of leaking `WT_SESSION` UUID string
639
- - **Network mount detection** β€” `.match()` result properly coerced to boolean
640
-
641
- ### πŸŽ™οΈ Cross-Platform BMAD Speak
642
-
643
- BMAD (Build More Architect Dreams) is an AI multi-agent framework where specialized agents β€” Architect, PM, Developer, QA, and Analyst β€” collaborate to build software. With this release, every agent in a BMAD party mode session now speaks aloud with their own unique voice, personality, and music on Windows β€” making each role instantly recognizable.
644
-
645
- ## πŸ› v4.5.1 β€” Patch Release
646
-
647
- **Release Date:** April 2026
648
-
649
- ### Bug Fix
650
-
651
- - **Music tab preview** β€” Pressing Space on a track in the Music tab now plays correctly
652
- when running `npx agentvibes` from a fresh directory. Previously, if `.claude/audio/tracks/`
653
- didn't exist in the current working directory, the track list showed built-in tracks but
654
- Space did nothing (the player was spawned against a non-existent path). Now falls back to
655
- the package-bundled tracks directory automatically.
656
-
657
- ---
658
-
659
- - `bin/bmad-speak.js` β€” cross-platform entry point for BMAD agent speech
660
- - `.claude/hooks-windows/bmad-speak.ps1` β€” native Windows BMAD speak with per-agent personality routing
661
-
662
- ### πŸ§ͺ Test Suite
663
-
664
- - 600 tests, 0 failures
665
- - Full cross-platform coverage (Windows path separators, chmod skip, provider file restore)
666
-
667
- ---
668
-
669
- ## πŸŽ‰ v4.4.0 β€” "Full Platform Parity" Release
670
-
671
- **Release Date:** March 2026
672
-
673
- The biggest AgentVibes release since the TUI launched in v4.0. Three headline features: **BMAD Party Mode** gives every agent their own voice and music, **Windows Parity** brings full feature support to native Windows, and the **SSH Receiver** lets you hear your headless server speak on your local machine. Plus two rounds of adversarial code review hardening with 17+ security fixes.
674
-
675
- ### πŸͺŸ Windows Parity β€” First-Class Windows Support
676
-
677
- AgentVibes now runs natively on Windows with full feature parity:
678
-
679
- - **Background music on Windows** β€” New `background-music-manager.ps1`, full port of the Linux bash manager
680
- - **play-tts.ps1** reads `audio-effects.cfg` with per-agent track support, same as Linux
681
- - **ffmpeg auto-install** via `winget` during installer, PATH auto-refresh (no shell restart)
682
- - **Piper TTS native** β€” `piper.exe` resolved from `LOCALAPPDATA`, no WSL/bash needed
683
- - **Voice selection works** β€” `play-tts-windows-piper.ps1` reads `tts-voice.txt` set by TUI
684
- - **Multi-speaker models** β€” voices like libritts-high pass `--speaker` flag to Piper on Windows
685
- - **Windows SSH Receiver** β€” `setup-ssh-receiver.ps1` + `agentvibes-receiver.ps1` templates with hardened `sshd_config`
686
- - **TUI color contrast** β€” fixed for Windows Terminal (green focus, layout consistency)
687
- - **Music preview overlap** β€” switching tracks kills previous player via `taskkill`
688
- - **MCP Server** β€” strips `\r\n` line endings, accepts `[OK]` markers for PowerShell 5.1 compatibility
689
-
690
- ### 🎭 BMAD Party Mode β€” Every Agent Has Its Own Voice
691
-
692
- When BMAD's party mode runs a multi-agent discussion, every agent speaks with their own individually configured voice, background music, reverb, and personality β€” making the Architect, PM, Developer, QA, and Analyst immediately recognizable.
693
-
694
- **Per-agent configuration:**
695
- - πŸŽ™οΈ **Voice** β€” 914 voices, gender-aware auto-assign
696
- - 🎡 **Background Music** β€” Unique ambient track per agent (cinematic, lo-fi, jazz...)
697
- - 🎚️ **Music Volume** β€” Per-agent level, or bulk-set all at once
698
- - πŸŽ›οΈ **Reverb** β€” none / room / hall / cathedral / studio
699
- - πŸ’¬ **Pretext** β€” Custom intro phrase ("Winston says:..." before every line)
700
- - 🎭 **Personality** β€” sarcastic, dramatic, pirate, cheerful, and more
701
- - πŸ”‡ **No overlap** β€” speech lock serializes agents (mkdir-based, portable across platforms)
702
- - ✨ **Markdown stripped** β€” asterisks, emojis, and formatting removed before TTS
703
-
704
- ### πŸŽ›οΈ BMad Tab β€” Full Visual Agent Configurator
705
-
706
- New **BMad Tab** (`B` key) in `npx agentvibes` for managing every agent visually:
707
-
708
- - Voice, Gender, Provider, Reverb, Music, Vol, and Pretext columns
709
- - Voice names auto-beautified: `16Speakers::Rose_Ibex` β†’ `Rose Ibex`
710
- - `Space` to preview with full profile (animated braille spinner while playing)
711
- - `Enter` to configure, `A` to auto-assign, `B` for bulk edit, `X` to reset
712
-
713
- ### πŸ–₯️ SSH Receiver Tab β€” Hear Your Headless Server
714
-
715
- New **Receiver Tab** streams TTS from voiceless remote servers to your local machine over TCP β€” perfect for cloud dev boxes, WSL2, and SSH sessions. Multi-provider TTS support, color-coded log columns, and platform-aware setup guide.
716
-
717
- ### ⚑ Performance & UX
718
- - **TTS latency reduced ~1s** β€” batched 6 Node.js calls into 1, inotifywait queue worker, background cache cleanup
719
- - **ANSI colors restored** to TTS banner via `AGENTVIBES_WAV_OUTPATH` sidecar file
720
- - **Banner toggle** β€” hide TTS info without muting: `touch ~/.agentvibes/banner-disabled`
721
- - **`bin/agent-vibes` routes to blessed TUI** instead of old CLI installer
722
- - **Global hooks updated on upgrade** β€” `~/.claude/hooks/` synced automatically (#141)
723
- - **Markdown stripping in stop hook** β€” no more "asterisk asterisk" spoken aloud
724
-
725
- ### πŸ”Œ Windows MCP Parity β€” 27/27 Tools Working (#157)
726
-
727
- All MCP tools now work natively on Windows (previously 12 silently failed):
728
-
729
- - **6 new PowerShell scripts** β€” personality-manager, speed-manager, language-manager, learn-manager, verbosity-manager, clean-audio-cache
730
- - **Unified provider naming** β€” `piper` and `sapi` on all platforms (no more `windows-piper`/`windows-sapi`)
731
- - **replay command** added to voice-manager for Windows
732
- - **28 new tests** β€” script parity, effects round-trip, provider management, naming consistency
733
- - **Feature-platform matrix** β€” `docs/feature-platform-matrix.md` tracks all 85 features across 4 platforms
734
- - **Adversarial review** found 24 issues, 10 fixed in this release
735
-
736
- **HIGH bug fixes:**
737
- - ffmpeg stderr redirected to temp file instead of literal `"NUL"` file on disk
738
- - `AGENTVIBES_NO_PLAY` env var properly cleaned up on error/kill paths
739
- - `PIPER_SPEAKER` env var no longer leaks between voice switches
740
- - Provider config now uses project-local `.claude` directory
741
- - Text over-sanitization fixed β€” `$50 (USD)` no longer becomes `50 USD`
742
-
743
- ### πŸ”§ Code Hardening (Adversarial Review)
744
-
745
- Three rounds of adversarial code review with 27+ fixes across HIGH and MEDIUM severity:
746
-
747
- **Round 3 (v4.4.0 β€” Windows parity):**
748
- - 6 CRITICAL missing script gaps closed (#157)
749
- - 4 HIGH severity bugs fixed (NUL redirect, env var leaks, config scope, speaker leak)
750
- - 3 MEDIUM fixes (text sanitization, error handling, provider naming)
751
-
752
- **Round 2 (v4.4.0 β€” agents tab):**
753
- - Temp file leak on piper error β€” cleanup added to error handler (#151)
754
- - Orphaned player process β€” generation counter gates player spawn (#152)
755
- - Duplicate piper resolution β€” extracted `_resolvePiperBin()` shared helper (#153)
756
- - Race condition in process handoff β€” double generation check (#154)
757
- - Voice reuse modulo bug β€” per-group round-robin counter (#155)
758
- - Ambiguous gender names removed from hardcoded map (#156)
759
-
760
- **Round 1 (earlier commits):**
761
- - 11 receiver-tab security findings addressed
762
- - All HIGH and MEDIUM issues from agents-tab review fixed
763
- - Portable speech lock (mkdir instead of flock)
764
- - Path traversal prevention, credential masking, resource cleanup throughout
765
-
766
- ### πŸ›‘οΈ Quality
767
- - 639 Node unit tests passing, 213 BATS tests passing
768
- - 28 new Windows-specific platform parity tests
769
- - Sonar quality gates validated across all changed files
770
- - JS syntax verified on all modules
771
-
772
- **Previous release:** [v4.0.0](https://github.com/paulpreibisch/AgentVibes/releases/tag/v4.0.0)
773
-
774
- ---
775
-
776
- ## πŸŽ‰ v4.2 β€” "Party Mode" Release
777
-
778
- **Release Date:** March 2026
779
-
780
- This is the biggest AgentVibes release since the TUI launched in v4.0. Two headline features: **BMAD Party Mode** gives every agent their own voice and music, and the **SSH Receiver** lets you hear your headless server speak on your local machine.
781
-
782
- ### πŸ€– What is BMAD?
783
-
784
- The BMad Method (Build More Architect Dreams) is an AI-driven development framework module within the BMad Method Ecosystem that helps you build software through the whole process from ideation and planning all the way through agentic implementation. It provides specialized AI agents, guided workflows, and intelligent planning that adapts to your project's complexity, whether you're fixing a bug or building an enterprise platform.
785
-
786
- ### 🎭 BMAD Party Mode β€” Every Agent Has Its Own Voice
787
-
788
- When BMAD's party mode runs a multi-agent discussion, every agent now speaks with their own individually configured voice, background music, reverb, and personality β€” making the Architect, PM, Developer, QA, and Analyst immediately recognizable the moment they speak.
789
-
790
- ```bash
791
- /agent-vibes:bmad-party enable
792
- ```
793
-
794
- **Per-agent configuration:**
795
- - πŸŽ™οΈ **Voice** β€” 914 voices to choose from, auto-assigned gender-aware
796
- - 🎡 **Background Music** β€” Unique ambient track per agent (cinematic, lo-fi, jazz...)
797
- - 🎚️ **Music Volume** β€” Per-agent level, or bulk-set all at once
798
- - πŸŽ›οΈ **Reverb** β€” none / room / hall / cathedral / studio
799
- - πŸ’¬ **Pretext** β€” Custom intro phrase ("Winston says:..." before every line)
800
- - 🎭 **Personality** β€” sarcastic, dramatic, pirate, cheerful, and more
801
- - πŸ”‡ **No overlap** β€” speech lock held until audio fully completes
802
- - ✨ **Markdown stripped** β€” asterisks and formatting removed before TTS
803
-
804
- **Configuration stored in:** `~/.agentvibes/bmad-voice-map.json`
805
-
806
- ### πŸŽ›οΈ BMad Tab β€” Full Visual Agent Configurator
807
-
808
- New **BMad Tab** in `npx agentvibes` for managing every agent visually β€” built with the same polish as the Voices tab:
809
-
810
- ```bash
811
- npx agentvibes # Press B to open BMad Tab
812
- ```
813
-
814
- The agent table shows **Voice, Gender, Provider, Reverb, Music, Vol, and Pretext** columns. Voice names are automatically beautified: `16Speakers::Rose_Ibex` β†’ `Rose Ibex`, `en_US-kusal-medium` β†’ `Kusal`.
815
-
816
- | Key | Action |
817
- |-----|--------|
818
- | `↑↓` / `jk` | Navigate agents |
819
- | `Space` | Preview agent with full profile (animated spinner while playing) |
820
- | `Enter` | Configure voice, music, volume, reverb, personality, pretext |
821
- | `A` | Auto-assign unique voices to all agents (gender-aware, no repeats) |
822
- | `B` | Bulk Edit β€” set music / volume / pretext / reverb for all agents |
823
- | `X` | Reset agent to defaults |
824
-
825
- **BMad Tab highlights:**
826
- - Inline row hints β€” navigate to any agent and see `[Space] Preview [Enter] Configure` on the row
827
- - Animated `β ‹β ™β Ήβ Έ` braille spinner while audio plays
828
- - Gender & Provider columns β€” same metadata as the Voices tab
829
-
830
- ### πŸ–₯️ SSH Receiver Tab β€” Hear Your Headless Server
831
-
832
- New **Receiver Tab** streams TTS from voiceless remote servers to your local machine over TCP β€” perfect for cloud dev boxes (AWS, GCP, Azure), WSL2, and SSH sessions.
833
-
834
- ```bash
835
- # On local machine: open TUI β†’ Receiver tab β†’ Start
836
- npx agentvibes
837
-
838
- # Remote server auto-detects the receiver and streams audio to you
839
- ```
840
-
841
- ### ⚑ TTS Latency Reduced ~1 Second
842
-
843
- - **Batched Node.js profile reads** β€” 6 `node -e` calls collapsed into 1 (~900ms saved per speech)
844
- - **inotifywait queue worker** β€” file-event-driven queue, no polling delay
845
- - **Background cache cleanup** β€” off the critical path every 10th call
846
-
847
- ### 🎨 ANSI Colors Restored to Banner
848
-
849
- Full ANSI color in the TTS banner (gold voice, cyan reverb, traffic-light cache size), fixed via `AGENTVIBES_WAV_OUTPATH` sidecar file.
850
-
851
- ### πŸ”• Banner Toggle
852
-
853
- Hide TTS info banner without muting: `touch ~/.agentvibes/banner-disabled` or say "turn off the TTS banner" via MCP.
854
-
855
- ### πŸ›‘οΈ Security
856
-
857
- - Adversarial code review β€” 58 issues identified and addressed
858
- - Agent ID injection prevention, PID-scoped temp profile files
859
- - Env-var-based Node.js JSON reads (no shell interpolation)
860
-
861
- **Full Changelog**: https://github.com/paulpreibisch/AgentVibes/compare/v4.0.1...v4.2
862
-
863
- ---
864
-
865
- ## ✨ v3.5.10 - Soprano Detection Fixes & Enhanced Installer Features
866
-
867
- **Release Date:** February 14, 2026
868
-
869
- ### 🎯 Summary
870
-
871
- Production release combining critical bug fixes and new installer features. Fixed Soprano TTS detection for pipx installations (the core issue reported by users), resolved 5 execSync API misuse bugs that were breaking Python package detection, and eliminated 100+ lines of code duplication. Introduces new installer features: custom music track support with preview functionality, personality emoji mapping for better visual recognition, and pretext configuration allowing users to customize agent introductions.
872
-
873
- ### ✨ Key Features & Fixes
874
-
875
- **πŸ”§ Critical Bug Fixes:**
876
- - **Soprano TTS Detection:** Fixed detection when installed via pipx (was showing "not installed" despite working)
877
- - **execSync API Bugs:** Fixed 5 locations using incorrect API signature (array args with execSync)
878
- - **Code Duplication:** Eliminated 100+ lines of duplicate code between Soprano and Piper validators
879
- - **API Consistency:** All provider validation functions now return consistent response structures
880
- - **Python Package Detection:** Fixed broken Python pip detection that was silently failing
881
-
882
- **🎨 New Installer Features:**
883
- - **Custom Music Tracks:** Users can now upload and preview their own background music
884
- - **Personality Emojis:** Visual recognition mapping (😊 for none, 🎭 for dramatic, πŸ’ for sassy, etc.)
885
- - **Pretext Configuration:** Custom agent introductions (e.g., "FireBot: " prefix for all messages)
886
- - **Track Preview:** Audio preview with support for ffplay, sox, and mpv players
887
-
888
- **πŸ›‘οΈ Security & Quality:**
889
- - Improved path traversal protection in provider validation
890
- - Enhanced error handling and logging
891
- - Reduced code complexity by 29% through deduplication
892
- - Test coverage improved: 56.61% β†’ 63.67%
893
-
894
- ### πŸ“Š Technical Details
895
-
896
- **Soprano Detection Improvements:**
897
- - Checks command in PATH first (most reliable for pipx)
898
- - Falls back to ~/.local/bin directory check
899
- - Checks pipx venv directory for installation
900
- - Final fallback to Python pip package detection
901
- - Consistent error messages showing all checked locations
902
-
903
- **Code Quality Metrics:**
904
- - File size reduced by 145 lines (-29%)
905
- - Code duplication eliminated (was ~100 lines)
906
- - Test coverage improved +7.06%
907
- - All 114 tests passing
908
- - Provider validator now 63.67% covered (up from 56.61%)
909
-
910
- **Installer Enhancements:**
911
- - Added personality emoji mapping (26 personalities)
912
- - Custom track upload with validation
913
- - File type restrictions (.mp3, .wav, .ogg, .m4a)
914
- - Registry storage in ~/.agentvibes/custom-tracks.json
915
- - Audio preview before finalizing selection
916
-
917
- ### πŸ”’ Security Notes
918
-
919
- - All spawnSync calls now use correct array argument form
920
- - Path traversal prevention maintained in all operations
921
- - HOME injection protection via os.homedir()
922
- - No hardcoded credentials introduced
923
- - Input validation for file uploads and track selection
924
-
925
- ### πŸ› Known Limitations
926
-
927
- - Audio preview requires ffplay, sox, or mpv (feature gracefully degrades if unavailable)
928
- - Custom track registry is stored locally per user
929
- - Some legacy bash scripts still lack strict mode (pre-existing, low risk)
930
-
931
- ### πŸ™ Acknowledgments
932
-
933
- This release includes fixes identified through adversarial code review, ensuring production-quality reliability and security alignment with CLAUDE.md standards.
934
-
935
- ---
936
-
937
- ## πŸ›‘οΈ v3.5.8 - Provider Validation Security & UX Improvements
938
-
939
- **Release Date:** February 12, 2026
940
-
941
- ### 🎯 Summary
942
-
943
- Critical security and reliability update for provider detection. Fixes command injection vulnerabilities in validation code, prevents HOME directory injection attacks, and improves UX with explicit provider detection messaging. Soprano TTS installed via pipx is now correctly detected (previously showed "not installed" due to ES module import error). All 8 critical code review issues resolved with comprehensive security hardening and enhanced error reporting.
944
-
945
- ### ✨ Key Improvements
946
-
947
- - **πŸ” Security Fixes:** Fixed command injection vulnerability (template strings β†’ array form), prevented HOME injection attacks, added path traversal protection
948
- - **βœ… Provider Detection:** Soprano via pipx now correctly detected; added checkedLocations tracking for transparency
949
- - **πŸ’¬ Better Messaging:** Explicit "Detected and selected!" confirmation; detailed error messages showing what was checked
950
- - **πŸ§ͺ Test Coverage:** Enhanced tests verify actual detection values, not just types
951
- - **πŸ› Debugging:** Added [DEBUG] logging for troubleshooting provider issues
952
-
953
- ### πŸ”΄ Critical Fixes
954
-
955
- 1. **Command Injection Prevention** - All execSync calls now use array form (security: CLAUDE.md)
956
- 2. **HOME Directory Injection** - Switched to os.homedir() instead of process.env.HOME
957
- 3. **Path Traversal Protection** - Added path.resolve() validation for pipx venv directories
958
-
959
- ### 🟑 Medium Fixes
960
-
961
- 4. **Pipx Logic Improved** - Tracks checked locations even on success (transparency)
962
- 5. **Silent Failures Eliminated** - Added [DEBUG] error logging for diagnostics
963
- 6. **Test Quality Enhanced** - Verify message content, not just types
964
- 7. **Documentation** - Added JSDoc comments explaining security-critical imports
965
- 8. **Error Differentiation** - Better distinction between different failure types
966
-
967
- ### πŸ“Š Technical Impact
968
-
969
- - Soprano detection now works reliably for both pip and pipx installations
970
- - Reduced false negatives in provider validation
971
- - Enhanced security posture aligned with CLAUDE.md security mandates
972
- - Improved debuggability with explicit error messages
973
-
974
- ---
975
-
976
- ## πŸ”§ v3.5.7 - CLI Fix: npx Command Output & Startup Hooks
977
-
978
- **Release Date:** February 12, 2026
979
-
980
- Fixes critical bug where `npx agent-vibes install` and other commands produced no output, making CLI unusable. Root cause: bin/agent-vibes used dynamic import without passing arguments to installer.js on local execution. Also removed broken hook configurations (pre_compact.py, notification.ts) that didn't exist and caused startup errors in Claude Code settings.
981
-
982
- ### 🎯 What's Fixed
983
-
984
- - **npx agent-vibes now works** - `npx agent-vibes install`, `npx agent-vibes --help`, all commands produce proper output
985
- - **Startup hook errors gone** - Removed non-existent hook references from settings.json (pre_compact.py, notification.ts)
986
- - **CLI execution proper** - Both npx and local execution now use execFileSync with proper argument passing
987
-
988
- ### πŸš€ Technical Details
989
-
990
- **Before v3.5.7:**
991
- ```javascript
992
- // bin/agent-vibes (local execution path)
993
- import('../src/installer.js'); // ❌ No args, doesn't await
994
- ```
995
-
996
- **After v3.5.7:**
997
- ```javascript
998
- // bin/agent-vibes (all execution paths)
999
- execFileSync('node', [installerPath, ...arguments_], {
1000
- stdio: 'inherit',
1001
- cwd: isNpxExecution ? path.dirname(__dirname) : process.cwd(),
1002
- }); // βœ… Passes args, proper I/O
1003
- ```
1004
-
1005
- ---
1006
-
1007
- ## πŸ”§ v3.5.6 - Bug Fix: Bash Hook Parameter Handling
1008
-
1009
- **Release Date:** February 11, 2026
1010
-
1011
- Fixes critical regression in v3.5.5 where bash hooks failed with unbound variable errors when called with optional parameters under strict mode. Affects `play-tts.sh` and `provider-manager.sh`.
1012
-
1013
- ---
1014
-
1015
- ## πŸ“¦ v3.5.5 - Native Windows Support: Soprano, Piper & SAPI Providers
1016
-
1017
- **Release Date:** February 12, 2026
1018
-
1019
- ### 🎯 Why v3.5.5?
1020
-
1021
- v3.5.5 brings **native Windows support** to AgentVibes with a full-featured PowerShell installer and three TTS providers. Windows users no longer need WSL - AgentVibes runs natively with Soprano (neural), Piper (offline neural), or Windows SAPI (zero-setup) voices. The installer also adds **background music selection** (16 genre tracks), **reverb/audio effects** (via ffmpeg aecho), and **verbosity control** for the TTS experience.
1022
-
1023
- ### πŸš€ Key Highlights
1024
-
1025
- #### πŸ–₯️ Native Windows TTS (NEW!)
1026
- - **3 providers**: Soprano (ultra-fast neural), Piper (offline neural), Windows SAPI (built-in)
1027
- - **Beautiful PowerShell installer** with figlet banner and interactive setup
1028
- - **8 hook scripts** for complete TTS functionality on Windows
1029
- - **MCP server** auto-resolves `.sh` to `.ps1` on Windows
1030
- - **46 Windows-specific unit tests** with full coverage
1031
-
1032
- #### 🎡 Background Music Selection
1033
- - **16 genre tracks**: Flamenco, Bachata, Bossa Nova, City Pop, Chillwave, and more
1034
- - **Interactive picker** in the installer with descriptions
1035
- - **ffmpeg mixing**: 2s intro, voice over music, 2s fade-out outro
1036
-
1037
- #### πŸŽ›οΈ Reverb / Audio Effects
1038
- - **5 reverb levels**: Off, Light, Medium, Heavy, Cathedral
1039
- - **ffmpeg aecho filter** (no SOX dependency on Windows)
1040
- - Applied before background music mixing for clean layering
1041
-
1042
- #### πŸ”Š Verbosity Control
1043
- - **3 levels**: High (full reasoning), Medium (key updates), Low (essential only)
1044
- - Integrates with session-start-tts.ps1 protocol instructions
1045
-
1046
- ### πŸ€– AI Summary
1047
-
1048
- AgentVibes v3.5.5 delivers native Windows support with a polished PowerShell installer offering three TTS providers (Soprano neural, Piper offline, Windows SAPI), background music selection from 16 genre tracks, reverb effects via ffmpeg aecho filter, and verbosity control. The release includes 8 Windows hook scripts, MCP server platform detection for automatic .sh-to-.ps1 resolution, and 46 new unit tests. Security hardening adds path traversal prevention with regex allowlisting and path containment checks, reverb config allowlist validation, and strict mode compliance across all scripts. Cross-platform test fixes ensure the full 93-test suite passes on both Windows and Unix.
1049
-
1050
- ---
1051
-
1052
- ## ✨ New Features
1053
-
1054
- ### Native Windows TTS
1055
- - Full PowerShell installer (`setup-windows.ps1`) with figlet banner and interactive UX
1056
- - Soprano provider (`play-tts-soprano.ps1`) with Gradio WebUI integration
1057
- - Piper provider (`play-tts-windows-piper.ps1`) with auto-download of voices from HuggingFace
1058
- - Windows SAPI provider (`play-tts-windows-sapi.ps1`) with zero-setup built-in voices
1059
- - TTS router (`play-tts.ps1`) with mute support, background music mixing, and reverb
1060
- - Provider manager, voice manager, audio cache utils, and session-start hook scripts
1061
- - MCP server `.sh` to `.ps1` auto-resolution on Windows
1062
-
1063
- ### Installer Enhancements
1064
- - Background music selection with 16 genre tracks and interactive picker
1065
- - Reverb/audio effects selection (Off/Light/Medium/Heavy/Cathedral)
1066
- - Verbosity control (High/Medium/Low) for TTS protocol instructions
1067
- - Updated completion screen showing all 4 settings (provider, background, reverb, verbosity)
1068
-
1069
- ---
1070
-
1071
- ## πŸ› Bug Fixes
1072
-
1073
- ### Security Fixes
1074
- - Fix path traversal in background music config reader (regex allowlist + path containment)
1075
- - Add allowlist validation for reverb-level.txt config (prevent invalid values)
1076
- - Add `set -euo pipefail` strict mode to `play-tts.sh` for Sonar compliance
1077
-
1078
- ### Cross-Platform Fixes
1079
- - Fix self-copy error when setup-windows.ps1 runs from project root
1080
- - Fix test executable permission checks on Windows (skip Unix mode bits)
1081
- - Fix test path separator comparison in uninstall test (use `path.join` not hardcoded `/`)
1082
-
1083
- ---
1084
-
1085
- ## πŸ—οΈ Improvements
1086
-
1087
- ### Code Quality
1088
- - Reverb config uses switch-as-allowlist pattern - file content never flows into commands
1089
- - All SoundPlayer instances wrapped in try/finally for resource disposal
1090
- - Environment variable cleanup (`AGENTVIBES_NO_PLAY`) on all exit paths
1091
- - Input validation with regex + range checks for all installer prompts
1092
-
1093
- ### Testing
1094
- - 46 new Windows-specific unit tests (hook scripts, providers, security, encoding)
1095
- - 3 cross-platform test fixes for Windows compatibility
1096
- - Full suite: 93 Node tests passing on Windows
1097
-
1098
- ---
1099
-
1100
- ## πŸ“Š Statistics
1101
-
1102
- - **7 commits** since v3.4.1
1103
- - **3,769 lines added**, 211 removed across 24 files
1104
- - **9 new PowerShell scripts** for Windows TTS
1105
- - **93 tests passing** (46 Windows + 47 cross-platform)
1106
- - **24/24 Sonar quality gates** passing
1107
- - **Security score**: All path traversal and injection vectors reviewed
1108
-
1109
- ---
1110
-
1111
- ## πŸ”§ Technical Details
1112
-
1113
- ### Files Added
1114
- - `.claude/hooks-windows/play-tts.ps1`: TTS router with reverb and background music
1115
- - `.claude/hooks-windows/play-tts-soprano.ps1`: Soprano neural TTS provider
1116
- - `.claude/hooks-windows/play-tts-windows-piper.ps1`: Piper offline TTS provider
1117
- - `.claude/hooks-windows/play-tts-windows-sapi.ps1`: Windows SAPI built-in voices
1118
- - `.claude/hooks-windows/provider-manager.ps1`: Provider switching
1119
- - `.claude/hooks-windows/voice-manager-windows.ps1`: Voice browsing and selection
1120
- - `.claude/hooks-windows/audio-cache-utils.ps1`: Cache management
1121
- - `.claude/hooks-windows/session-start-tts.ps1`: Auto-activates TTS on Claude start
1122
- - `setup-windows.ps1`: Full Windows installer with 4 interactive sections
1123
- - `test/unit/windows-tts.test.js`: 46 Windows-specific unit tests
1124
-
1125
- ### Breaking Changes
1126
- None - all changes are backward compatible. Existing Unix/macOS installations are unaffected.
1127
-
1128
- ---
1129
-
1130
- ## πŸŽ“ Migration Notes
1131
-
1132
- ### For New Windows Users
1133
- 1. Run `npx agentvibes install` (Node.js) or `.\setup-windows.ps1` (PowerShell)
1134
- 2. Follow the interactive setup
1135
- 3. Choose provider (Soprano, Piper, or SAPI)
1136
- 4. Select background music, reverb, and verbosity
1137
- 5. TTS works automatically in Claude Code sessions
1138
-
1139
- ### For Existing Unix/macOS Users
1140
- - No changes required - your setup continues working
1141
- - All Unix bash hooks remain untouched
1142
- - Only `play-tts.sh` gained `set -euo pipefail` (strict mode)
1143
-
1144
- ---
1145
-
1146
- ## πŸ™ Acknowledgments
1147
-
1148
- ### Project Lead
1149
- - **[@paulpreibisch](https://github.com/paulpreibisch)** (Paul Preibisch) β€” Creator and maintainer of AgentVibes
1150
-
1151
- ### Community Contributors
1152
- - **[@nathanchase](https://github.com/nathanchase)** β€” For contributing the Soprano TTS provider in v3.4.0, whose ultra-fast neural engine is now one of the three Windows-native providers
1153
- - **[@alexeyv](https://github.com/alexeyv)** β€” For suggesting native Windows support and recommending Windows SAPI as a zero-dependency provider
1154
- - **[@bmadcode](https://github.com/bmadcode)** (Brian Madison) β€” Creator of the [BMAD Method](https://github.com/bmadcode/BMAD-METHOD), used daily for planning and building AgentVibes features
1155
-
1156
- ### Quality Assurance
1157
- - **Adversarial Security Review**: Path traversal, injection, and resource disposal all validated
1158
- - **Testing**: 93/93 tests passing (100% suite coverage)
1159
- - **Quality Gates**: 24/24 Sonar requirements validated
1160
- - **Co-Authored-By**: Claude Opus 4.6
1161
-
1162
- ---
1163
-
1164
- **Full Changelog**: https://github.com/paulpreibisch/AgentVibes/compare/v3.4.1...v3.5.5
1165
-
1166
- ---
1167
-
1168
- ## πŸ“¦ v3.4.0 - Soprano TTS, Security Hardening & Environment Intelligence
1169
-
1170
- **Release Date:** February 10, 2026
1171
-
1172
- ### 🎯 Why v3.4.0?
1173
-
1174
- v3.4.0 introduces **Soprano TTS** - an ultra-fast neural TTS provider with GPU acceleration, comprehensive **security hardening** across the codebase, and **intelligent environment detection** that recognizes PulseAudio tunnels for remote audio scenarios.
1175
-
1176
- ### πŸš€ Key Highlights
1177
-
1178
- #### ⚑ Soprano TTS Provider (NEW!)
1179
- - **80M parameter neural model** with premium female English voice
1180
- - **20x CPU speed** (vs Piper), **2000x GPU speed** with CUDA
1181
- - **3 synthesis modes**: WebUI (Gradio), API (OpenAI-compatible), CLI (fallback)
1182
- - **Auto-detection**: Checks for running Gradio server, falls back gracefully
1183
- - **<1GB memory footprint** - perfect for low-RAM systems
1184
- - **Provider-aware voice management**: Auto-selects single voice, shows model specs
1185
- - **Thanks to [@nathanchase](https://github.com/nathanchase)** for this contribution! ([see acknowledgments](#-acknowledgments))
1186
-
1187
- #### πŸ›‘οΈ Security Hardening (9.5/10 Score)
1188
- - **Timeouts on system commands**: Prevents installer hangs (nvidia-smi, sysctl, meminfo)
1189
- - **Bounds checking**: Validates array access before parsing system output
1190
- - **NaN validation**: Prevents crashes from malformed memory/GPU detection
1191
- - **Case-insensitive checks**: PulseAudio tunnel detection handles TCP: and tcp:
1192
- - **Code duplication eliminated**: Extracted PulseAudio helper function (DRY)
1193
-
1194
- #### 🌐 Environment Intelligence
1195
- - **PulseAudio tunnel detection**: Recognizes `PULSE_SERVER=tcp:*` as working audio
1196
- - **Context-aware messaging**:
1197
- - "🌐 PulseAudio Tunnel Detected!" for SSH + tunnel setups
1198
- - "πŸ”Š Audio Output Detected!" for local speakers
1199
- - Distinguishes local/tunnel/hybrid configurations
1200
- - **Smart environment classification**:
1201
- - DESKTOP: Local audio OR active PulseAudio tunnel
1202
- - VOICELESS: No audio AND no tunnel
1203
- - PHONE: Termux/Android devices
1204
-
1205
- #### 🎀 Installer Enhancements
1206
- - **Provider-aware voice pages**: Soprano shows model specs, Piper shows 50+ voices
1207
- - **Auto-selection logic**: Soprano (1 voice) auto-selects, no manual choice needed
1208
- - **GPU-based recommendations**: "Your GPU will run Soprano 2000x faster!"
1209
- - **RAM-based suggestions**: Low memory systems see "Soprano uses <1GB" message
1210
- - **Better RAM display**: Shows "512MB" instead of "0GB" for sub-1GB systems
1211
-
1212
- ### πŸ€– AI Summary
1213
-
1214
- AgentVibes v3.4.0 brings Soprano TTS - an 80M parameter neural provider offering 20x CPU and 2000x GPU acceleration with sub-1GB memory footprint - plus comprehensive security hardening (timeouts, bounds checking, NaN validation) and intelligent environment detection that recognizes PulseAudio tunnels as working audio for remote scenarios. The enhanced installer provides context-aware messaging distinguishing local speakers from SSH tunnels, GPU-based provider recommendations (Soprano for CUDA users, macOS Say for Apple, Piper for versatility), and provider-specific voice pages that auto-select Soprano's single voice while showcasing model specifications. This release achieves a 9.5/10 security score through systematic defensive programming, making AgentVibes production-ready for enterprise deployments while expanding TTS provider options for diverse hardware configurations.
1215
-
1216
- ---
1217
-
1218
- ## ✨ New Features
1219
-
1220
- ### Soprano TTS Provider
1221
- - Add Soprano TTS provider script with 3 synthesis modes (WebUI, API, CLI) (#95)
1222
- - Integrate Soprano into TTS router and provider manager
1223
- - Add soprano-gradio-synth.py helper for WebUI/SSE protocol
1224
- - Provider-aware voice selection page with model specifications
1225
- - Auto-select single Soprano voice with performance details
1226
-
1227
- ### Installer Intelligence
1228
- - Add `detectSystemCapabilities()` for GPU/RAM detection
1229
- - Add `hasPulseAudioTunnel()` helper function
1230
- - Context-aware audio detection messaging (tunnel vs local)
1231
- - GPU-based provider ordering (Soprano first for CUDA users)
1232
- - RAM-based recommendations (<4GB systems see Soprano first)
1233
- - Provider-specific intro messages (Soprano vs Piper vs macOS)
1234
-
1235
- ### Environment Detection
1236
- - PulseAudio tunnel recognition via PULSE_SERVER env var
1237
- - Case-insensitive TCP protocol detection
1238
- - Smart DESKTOP classification (local audio OR tunnel)
1239
- - Improved VOICELESS detection (no audio AND no tunnel)
1240
-
1241
- ---
1242
-
1243
- ## πŸ› Bug Fixes
1244
-
1245
- ### Security Fixes
1246
- - Add 5s timeout to nvidia-smi to prevent GPU detection hangs
1247
- - Add 3s timeout to sysctl/meminfo to prevent memory detection hangs
1248
- - Add bounds checking before parsing sysctl output (macOS)
1249
- - Add bounds checking before parsing /proc/meminfo (Linux)
1250
- - Add NaN validation for parseInt() memory size parsing
1251
- - Fix case sensitivity in PULSE_SERVER detection (handles TCP: and tcp:)
1252
-
1253
- ### Test Fixes
1254
- - Fix provider-manager test #90: Add soprano and ssh-remote to cleanup list
1255
- - Ensure zero-provider edge case properly simulates empty state
1256
-
1257
- ### User Experience
1258
- - Fix RAM display for <1GB systems (show "512MB" not "0GB")
1259
- - Fix PulseAudio selection triggering wrong setup flow
1260
- - Separate PulseAudio tunnel setup from SSH receiver setup
1261
-
1262
- ---
1263
-
1264
- ## πŸ—οΈ Improvements
1265
-
1266
- ### Code Quality
1267
- - Extract PulseAudio detection to helper function (DRY principle)
1268
- - Implement system capabilities caching (eliminates duplicate calls)
1269
- - Add comprehensive error handling in detectSystemCapabilities()
1270
- - Improve code comments for security-critical sections
1271
-
1272
- ### Performance
1273
- - Cache system detection results (prevents duplicate nvidia-smi calls)
1274
- - Add timeouts to prevent indefinite hangs
1275
- - Optimize provider detection with early returns
1276
-
1277
- ### Documentation
1278
- - Add comprehensive commit message documenting all changes
1279
- - Document security improvements (timeouts, bounds checking, NaN validation)
1280
- - Explain PulseAudio tunnel detection architecture
1281
- - Detail environment classification logic
1282
-
1283
- ---
1284
-
1285
- ## πŸ“Š Statistics
1286
-
1287
- - **91 commits** since v3.3.0
1288
- - **817 lines added** in merge to master
1289
- - **6 files modified** in core integration
1290
- - **260 tests passing** (213 BATS + 47 Node)
1291
- - **Security score**: 7.5/10 β†’ 9.5/10
1292
- - **Test coverage**: 100% pass rate
1293
-
1294
- ---
1295
-
1296
- ## πŸ”§ Technical Details
1297
-
1298
- ### Files Modified
1299
- - `src/installer.js`: +335 lines (security fixes, environment detection, Soprano integration)
1300
- - `test/unit/provider-manager.bats`: +4 lines (fix edge case test)
1301
- - `.claude/hooks/play-tts-soprano.sh`: +320 lines (new provider)
1302
- - `.claude/hooks/soprano-gradio-synth.py`: +139 lines (new helper)
1303
- - `.claude/hooks/provider-manager.sh`: +17 lines (Soprano support)
1304
- - `.claude/hooks/play-tts.sh`: +6 lines (route to Soprano)
1305
-
1306
- ### Breaking Changes
1307
- None - all changes are backward compatible.
1308
-
1309
- ### Dependencies
1310
- - **New**: `soprano-tts` (Python package, optional)
1311
- - **Recommended**: CUDA-capable GPU for 2000x speedup (optional)
1312
- - **Compatible**: Works on CPU-only systems (20x vs Piper)
1313
-
1314
- ---
1315
-
1316
- ## πŸŽ“ Migration Notes
1317
-
1318
- ### For New Users
1319
- 1. Run `npx agentvibes install`
1320
- 2. Installer auto-detects your hardware (GPU, RAM, platform)
1321
- 3. Soprano appears as option if you have working audio
1322
- 4. Select Soprano for ultra-fast TTS with GPU acceleration
1323
-
1324
- ### For Existing Users
1325
- 1. Update: `npx agentvibes update`
1326
- 2. Switch provider: `/agent-vibes:provider switch soprano`
1327
- 3. Test: `/agent-vibes:sample soprano-default`
1328
- 4. Optionally install soprano-tts: `pip install soprano-tts`
1329
-
1330
- ### PulseAudio Tunnel Users
1331
- - Installer now auto-detects your tunnel configuration
1332
- - Shows "🌐 PulseAudio Tunnel Detected!" instead of "speakers"
1333
- - Provides DESKTOP mode options (Soprano, Piper, macOS Say)
1334
- - No manual configuration needed
1335
-
1336
- ---
1337
-
1338
- ## πŸ™ Acknowledgments
1339
-
1340
- ### Special Thanks
1341
-
1342
- **πŸŽ‰ [@nathanchase](https://github.com/nathanchase)** - For contributing the Soprano TTS Provider integration (PR #95)! Nathan's work brings ultra-fast neural TTS with GPU acceleration to AgentVibes, offering 20x CPU and 2000x GPU performance improvements. The comprehensive integration includes WebUI, API, and CLI synthesis modes with intelligent auto-detection and graceful fallback. Thank you for this outstanding contribution! πŸš€
1343
-
1344
- ### Quality Assurance
1345
-
1346
- - **Security Review**: Adversarial code review achieved 9.5/10 score
1347
- - **Testing**: All 260 tests pass (100% suite coverage)
1348
- - **Quality Gates**: All Sonar requirements validated
1349
- - **Co-Authored-By**: Claude Sonnet 4.5
1350
-
1351
- ---
1352
-
1353
- ## πŸ“š Additional Resources
1354
-
1355
- - [Soprano TTS Documentation](https://github.com/paulpreibisch/AgentVibes/blob/master/docs/providers.md#soprano-tts)
1356
- - [PulseAudio Tunnel Setup](https://github.com/paulpreibisch/AgentVibes/blob/master/docs/SSH_REMOTE_SETUP.md)
1357
- - [Security Hardening Guide](https://github.com/paulpreibisch/AgentVibes/blob/master/docs/security-hardening-guide.md)
1358
- - [Provider Comparison](https://github.com/paulpreibisch/AgentVibes/blob/master/docs/providers.md)
1359
-
1360
- ---
1361
-
1362
- **Full Changelog**: https://github.com/paulpreibisch/AgentVibes/compare/v3.3.0...v3.4.0
1363
-
1364
- ---
1365
-
1366
- ## πŸ“¦ v3.3.0 - Remote TTS, Smart Installer, OpenClaw Receiver & Cache Management
1367
-
1368
- **Release Date:** February 5, 2026
1369
-
1370
- ### 🎯 Why v3.3.0?
1371
-
1372
- v3.3.0 transforms AgentVibes into a **universal TTS platform** for any environment:
1373
-
1374
- - **SSH-Remote Provider** - Generate TTS on servers, receive audio on your phone/computer
1375
- - **Termux/Android Support** - Native Piper TTS on mobile devices
1376
- - **OpenClaw Integration** - Turn voiceless servers into Siri-like conversational AI
1377
- - **AgentVibes Receiver** - Receive and play audio from remote servers on your device
1378
- - **Smart Installer** - Auto-detects your environment (voiceless, GUI, Termux, SSH)
1379
- - **Intelligent Cache Management** - Real-time tracking and auto-cleanup prevents disk bloat
1380
-
1381
- #### 🌐 Real-World Use Case: OpenClaw + AgentVibes Receiver
1382
-
1383
- You deploy OpenClaw on a voiceless Mac mini (or remote server) where users message you via WhatsApp, Telegram, or Discord. With v3.3.0:
1384
-
1385
- **Before AgentVibes Receiver:**
1386
- - User messages: "Tell me a joke"
1387
- - Mac mini processes request
1388
- - Text response appears in chat
1389
- - 😞 No audio - silent experience
1390
-
1391
- **After AgentVibes Receiver:**
1392
- 1. **Install AgentVibes** on your Mac mini (or remote server)
1393
- 2. **Install AgentVibes Receiver** on your phone/iPad/laptop
1394
- 3. **Connect via Tailscale** (one-time setup)
1395
- 4. **User messages:** "Tell me a joke"
1396
- 5. **Mac mini generates TTS** with your configured voice
1397
- 6. **Audio streams to your device** via SSH tunnel
1398
- 7. **Your speakers play:** πŸ”Š "Why did the AI go to school? To improve its learning model!"
1399
- 8. **User in WhatsApp also hears** the audio playing (Siri-like experience)
1400
-
1401
- Result: OpenClaw transforms from **silent text AI** β†’ **Conversational AI with voice**
1402
-
1403
- Perfect for:
1404
- - πŸ–₯️ Mac mini with OpenClaw
1405
- - πŸ–₯️ Remote servers (AWS, DigitalOcean, Linode)
1406
- - πŸ—οΈ Container deployments (Docker)
1407
- - πŸ”§ WSL (Windows Subsystem for Linux)
1408
- - πŸ“± Any voiceless environment needing audio
1409
-
1410
- ### πŸ€– AI Summary
1411
-
1412
- AgentVibes v3.3.0 unleashes the platform across new frontiers: remote servers via SSH-PulseAudio tunneling, Android/Termux environments with native Piper support, and OpenClaw (formerly Clawdbot) multi-agent orchestration. The redesigned smart installer detects your environment (voiceless, GUI, SSH, Termux) and shows only relevant options, plus optional BMAD personality injection for advanced users. Every TTS output now displays real-time cache metrics (file count/size with dynamic colors) plus intelligent size-based auto-cleanup that deletes oldest files when the cache exceeds threshold. The release includes comprehensive TTS queue management to prevent audio overlap, audio effects support across all providers, and full MCP tool integration for programmatic control. This release transforms AgentVibes into a universal TTS platform.
1413
-
1414
- **Key Highlights:**
1415
- - 🌍 **SSH-Remote TTS** - Remote device playback via PulseAudio tunneling (servers, containers, WSL)
1416
- - πŸ“± **Android/Termux Support** - Native Piper TTS on Android with termux-media-player integration
1417
- - πŸ€– **OpenClaw Receiver** (formerly Clawdbot) - AgentVibes Receiver for receiving TTS from voiceless servers
1418
- - 🧠 **Smart Installer** - Voiceless environment detection + personality injection for BMAD
1419
- - πŸ“Š **Real-Time Cache Tracking** - File count and size on every output with dynamic colors
1420
- - 🧹 **Intelligent Auto-Cleanup** - Size-based threshold (15MB default) prevents storage bloat
1421
- - 🎡 **Queue Management** - Prevents TTS audio overlap via centralized queue system
1422
- - βš™οΈ **Audio Effects** - Full support across SSH-remote, Termux-ssh, and local providers
1423
- - πŸ“ **Uninstall Command** - Comprehensive cleanup with full documentation
1424
- - βœ… **96 Commits** - Massive feature expansion with 213 BATS tests passing
1425
-
1426
- ### ✨ New Features
1427
-
1428
- #### 🌍 Remote SSH TTS Support
1429
-
1430
- **SSH-Remote Provider:**
1431
- - Play TTS on remote servers via SSH + PulseAudio tunneling
1432
- - Zero-dependency for audio output (uses PulseAudio network tunnel)
1433
- - Perfect for deployed Claude Code on servers, containers, WSL
1434
- - Auto-configuration of PulseAudio TCP module
1435
- - Fallback to local playback if SSH unavailable
1436
- - Full compatibility with all voice selection and audio effects
1437
-
1438
- **SSH-PulseAudio Integration:**
1439
- - Automatic SSH connection detection and setup
1440
- - Secure TCP tunnel for audio stream transmission
1441
- - Support for both interactive and batch TTS operations
1442
- - Persistent audio configuration per SSH session
1443
-
1444
- #### πŸ“± Android/Termux Support
1445
-
1446
- **Termux-SSH Provider:**
1447
- - Native Piper TTS on Android via Termux environment
1448
- - Uses termux-media-player for audio playback
1449
- - Full voice selection and effects support
1450
- - Automatic temp directory detection
1451
- - Integration with Tailscale for secure remote access
1452
- - Comprehensive setup guide with QR codes
1453
-
1454
- **Android Installation:**
1455
- - Self-contained Termux installer script
1456
- - One-command setup: `curl https://agentvibes.org/install-android | bash`
1457
- - Automatic dependency detection and installation
1458
- - Piper voice download management
1459
-
1460
- #### πŸŽ™οΈ OpenClaw Integration & AgentVibes Receiver
1461
-
1462
- **What is AgentVibes Receiver?**
1463
-
1464
- AgentVibes Receiver is a **lightweight audio client** that receives and plays TTS audio from remote servers where OpenClaw is installed. It runs on your phone, tablet, or personal computer and connects to voiceless servers via SSH tunnel.
1465
-
1466
- **The Problem It Solves:**
1467
- - OpenClaw running on Mac mini/remote server has no audio output
1468
- - Users message via WhatsApp/Telegram/Discord - get text responses only
1469
- - 😞 No voice = Less engaging AI experience
1470
-
1471
- **AgentVibes Receiver Solution:**
1472
- 1. **Lightweight client** runs on your device (phone/tablet/laptop)
1473
- 2. **SSH tunnel** securely connects to your voiceless server
1474
- 3. **Audio streams** from server to your device via PulseAudio
1475
- 4. **Auto-plays** on your speakers when OpenClaw responds
1476
- 5. **Siri-like experience** - Text + Voice in one flow
1477
-
1478
- **How It Works:**
1479
-
1480
- ```
1481
- β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
1482
- β”‚ Your Mac mini / Server β”‚
1483
- β”‚ (OpenClaw + AgentVibes) β”‚
1484
- β”‚ β”œβ”€ No audio output β”‚
1485
- β”‚ β”œβ”€ Generates TTS β”‚
1486
- β”‚ └─ Sends via SSH tunnel β”‚
1487
- β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
1488
- ↓ SSH Tunnel (encrypted)
1489
- β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
1490
- β”‚ Your Phone / Laptop β”‚
1491
- β”‚ (AgentVibes Receiver) β”‚
1492
- β”‚ β”œβ”€ Receives audio stream β”‚
1493
- β”‚ β”œβ”€ Plays on speakers β”‚
1494
- β”‚ └─ You hear OpenClaw speak β”‚
1495
- β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
1496
- ```
1497
-
1498
- **Example Flow:**
1499
- ```
1500
- WhatsApp: "Tell me a joke"
1501
- ↓
1502
- Mac mini: Processes with Claude
1503
- ↓
1504
- Generates TTS: "Why did the AI... [audio file]"
1505
- ↓ SSH tunnel
1506
- Your Phone: Plays audio πŸ”Š
1507
- ↓
1508
- You hear: "Why did the AI go to school?"
1509
- ```
1510
-
1511
- **AgentVibes Receiver Features:**
1512
- - **One-Time Setup** - Pair with server via SSH key
1513
- - **Automatic Connection** - Reconnects if interrupted
1514
- - **Real-Time Streaming** - Low latency audio playback
1515
- - **SSH Encryption** - Secure tunnel for audio
1516
- - **Tailscale Support** - Easy VPN for remote servers
1517
- - **Multiple Servers** - Connect to different OpenClaw instances
1518
- - **Voice Control** - Full voice selection on the server side
1519
- - **Cache Metrics** - Monitor audio generation and cleanup
1520
-
1521
- **OpenClaw Skill Integration:**
1522
- - Installed automatically with AgentVibes on OpenClaw server
1523
- - Full feature access:
1524
- - Voice selection (50+ voices)
1525
- - Personality/sentiment (sarcastic, flirty, etc.)
1526
- - Audio effects (reverb, echo, pitch)
1527
- - Speech speed (0.5x - 3.0x)
1528
- - Language translation (speak in different languages)
1529
- - Real-time cache tracking
1530
- - Automatic cleanup of old audio files
1531
-
1532
- #### 🧠 Smart Installer Enhancements
1533
-
1534
- **Voiceless Environment Detection:**
1535
- - Auto-detects if GUI audio is unavailable (headless servers, containers)
1536
- - Offers SSH-remote TTS as alternative for voiceless environments
1537
- - Prevents installation of unnecessary audio dependencies
1538
-
1539
- **Personality Injection (BMAD):**
1540
- - Interactive prompt during install for BMAD users
1541
- - Optional TTS personality configuration
1542
- - Sentiment/personality selection built into setup flow
1543
- - Skipped for non-BMAD environments
1544
-
1545
- **Provider Auto-Selection:**
1546
- - Intelligent detection of available providers:
1547
- - macOS Say (macOS systems)
1548
- - Piper TTS (all systems)
1549
- - SSH-remote (if SSH available)
1550
- - Termux-ssh (Android/Termux)
1551
- - Shows only relevant providers in installation
1552
-
1553
- **Better UX:**
1554
- - Clear descriptions of each provider
1555
- - Setup URLs for complex providers (Tailscale)
1556
- - Comprehensive help text for each option
1557
- - Git log integration for recent changes
1558
-
1559
- #### πŸ“Š Real-Time TTS Cache Tracking & Intelligent Auto-Cleanup
1560
-
1561
- **Why Cache Management Matters:**
1562
- - TTS audio files accumulate quickly
1563
- - Server deployments can run out of disk space silently
1564
- - Users have no visibility into cache size or cleanup status
1565
- - Manual cleanup is inconvenient and error-prone
1566
-
1567
- **Cache Display on Every Output:**
1568
- Every time you generate TTS, you see real-time cache metrics:
1569
- ```
1570
- πŸ’Ύ Saved to: /home/user/.claude/audio/tts-1770274925.wav πŸ“¦ 28 20.9MB 🧹[15mb]
1571
- ```
1572
-
1573
- What you see:
1574
- - πŸ’Ύ **Full path** - Clickable file for replay or sharing
1575
- - πŸ“¦ **28** - File count in cache
1576
- - **20.9MB** - Total cache size (color-coded):
1577
- - 🟒 Green: <500MB
1578
- - 🟑 Yellow: 500MB-3GB
1579
- - πŸ”΄ Red: >3GB
1580
- - 🧹 **[15mb]** - Auto-cleanup threshold
1581
-
1582
- **Intelligent Size-Based Auto-Cleanup:**
1583
- - Deletes oldest files when cache exceeds threshold (default: 15MB)
1584
- - Silent operation (no blocking prompts)
1585
- - Write-lock protection prevents conflicts with TTS generation
1586
- - Respects active TTS (won't delete while generating)
1587
-
1588
- **Configuration:**
1589
- ```bash
1590
- # Per-project threshold override
1591
- echo "50" > .claude/tts-auto-clean-threshold.txt # 50MB limit
1592
-
1593
- # Or disable cleanup
1594
- echo "0" > .claude/tts-auto-clean-threshold.txt # Disable
1595
- ```
1596
-
1597
- **Manual Cleanup:**
1598
- ```bash
1599
- # Non-interactive cleanup
1600
- /agent-vibes:clean
1601
-
1602
- # Or programmatically via MCP
1603
- await agent_vibes.clean_audio_cache()
1604
- ```
1605
-
1606
- #### 🎡 TTS Queue Management
1607
-
1608
- **Overlap Prevention:**
1609
- - Centralized queue system for TTS operations
1610
- - Prevents simultaneous audio playback
1611
- - Critical for Clawdbot multi-agent scenarios
1612
- - Atomic queue operations ensure consistency
1613
-
1614
- **Queue Integration:**
1615
- - Automatic in OpenClaw Receiver
1616
- - Optional in standalone environments
1617
- - Fallback to sequential playback
1618
-
1619
- #### βš™οΈ Audio Effects Across All Providers
1620
-
1621
- **Effects Support:**
1622
- - Reverb, echo, pitch, EQ available
1623
- - SSH-remote provider: Full effects support
1624
- - Termux-ssh provider: Full effects support
1625
- - All local providers: Unchanged effects behavior
1626
-
1627
- **Configuration:**
1628
- - Per-session override via environment variables
1629
- - Project-local settings via config files
1630
- - Persistent across TTS operations
1631
-
1632
- #### πŸ“ Comprehensive Uninstall Command
1633
-
1634
- **`/agent-vibes:uninstall` Skill:**
1635
- - Complete removal of AgentVibes and dependencies
1636
- - Interactive prompts for user confirmation
1637
- - Option to preserve configuration
1638
- - Detailed removal logs
1639
- - Full documentation included
1640
-
1641
- ### πŸ› Bug Fixes
1642
-
1643
- - **TTS Overlap** - Fixed audio overlapping via queue management
1644
- - **Termux Audio** - Proper detection and use of termux-media-player
1645
- - **SSH Detection** - Improved SSH environment detection logic
1646
- - **Race Conditions** - Write-lock mechanism prevents cleanup conflicts
1647
- - **Temp Directory** - Proper Termux temp directory handling
1648
- - **Color Codes** - Fixed GOLD color (256-color \033[38;5;226m)
1649
- - **Stat Compatibility** - BSD/GNU stat detection with proper output suppression
1650
- - **Syntax Validation** - Fixed installer.js syntax errors
1651
- - **Coverage Testing** - Proper coverage file generation for CI/CD
1652
-
1653
- ### πŸ”’ Security & Quality
1654
-
1655
- - **No Hardcoded Credentials** - All secure operations use environment variables
1656
- - **SSH Safety** - Secure PulseAudio tunnel authentication
1657
- - **Atomic Operations** - Queue and receiver use atomic file operations
1658
- - **Input Validation** - All external inputs validated
1659
- - **Pre-existing Limitations** - TTS scripts lack `set -euo pipefail` (pre-existing)
1660
- - **Sonar Compliance** - Security hotspots resolved, quality gates passing
1661
- - **Test Coverage** - 213 BATS tests + 47 Node unit tests
1662
-
1663
- ### βœ… Testing & Validation
1664
-
1665
- - **213 BATS Tests** - Core functionality validation
1666
- - **47 Node Tests** - JavaScript/installer validation
1667
- - **Cross-Platform** - Piper, macOS, SSH-remote, Termux-ssh
1668
- - **Environment Tests** - Voiceless, GUI, SSH, Termux detection
1669
- - **Audio Effects** - All providers tested
1670
- - **Backwards Compatible** - No breaking changes to existing code
1671
-
1672
- ---
1673
-
1674
- ## πŸ“¦ v3.2.0 - Clawdbot Integration: AI Assistants on Any Messenger
1675
-
1676
- **Release Date:** January 27, 2026
1677
-
1678
- ### 🎯 Why v3.2.0?
1679
-
1680
- This minor release adds **native Clawdbot integration** to AgentVibes, bringing professional TTS to the revolutionary AI assistant you can access via any instant messenger. Clawdbot connects Claude AI to WhatsApp, Telegram, Discord, and moreβ€”and now with AgentVibes, your Clawdbot can speak with 50+ professional voices in 30+ languages. This release also includes SonarCloud quality gate improvements and CI/CD workflow enhancements.
1681
-
1682
- ### πŸ€– AI Summary
1683
-
1684
- AgentVibes v3.2.0 introduces seamless integration with Clawdbot, the revolutionary AI assistant accessible via any instant messenger. With this release, Clawdbot users get professional TTS with 50+ voices, remote SSH audio support for server deployments, and zero-configuration setupβ€”just install AgentVibes and the Clawdbot skill is ready. The release also includes quality improvements: SonarCloud workflow fixes, enhanced documentation for disabling quality gate checks, and improved test coverage validation.
1685
-
1686
- **Key Highlights:**
1687
- - πŸ€– **Clawdbot Integration** - Native TTS support for Clawdbot AI assistant framework
1688
- - πŸ’¬ **Messenger Platforms** - Works with WhatsApp, Telegram, Discord via Clawdbot
1689
- - πŸ”Š **Remote SSH Audio** - Perfect for Clawdbot on remote servers with PulseAudio tunneling
1690
- - πŸ“¦ **Simple Install** - Just `npx agentvibes install` and it works
1691
- - πŸ›‘οΈ **SonarCloud Fixes** - Quality gate workflow improvements and documentation
1692
- - βœ… **Full Test Coverage** - All 213 BATS + 47 Node tests passing
1693
-
1694
- ### ✨ New Features
1695
-
1696
- **Clawdbot Skill (`.clawdbot/`):**
1697
- - New `.clawdbot/` directory with skill integration files
1698
- - `README.md` - Clawdbot integration overview and setup guide
1699
- - `skill/SKILL.md` - Comprehensive skill documentation with voice selection, background music, effects, personalities, and remote SSH audio setup
1700
- - Automatically distributed via npm package
1701
- - Zero-configuration when AgentVibes is installed
1702
-
1703
- **README Updates:**
1704
- - Added "πŸ€– Clawdbot Integration" section with full documentation
1705
- - Updated header to include Clawdbot alongside Claude Code, Claude Desktop, and Warp Terminal
1706
- - Added Clawdbot to Quick Links table
1707
- - Clawdbot description: "A revolutionary AI assistant you can access via any instant messenger"
1708
- - Website link: https://clawd.bot
1709
-
1710
- **package.json Updates:**
1711
- - Added `.clawdbot/` to npm files array for distribution
1712
- - Added `clawdbot` to keywords for npm discoverability
1713
- - Updated description to mention Clawdbot support
1714
-
1715
- ### πŸ› Bug Fixes
1716
-
1717
- - **SonarCloud Quality Gate** - Disabled quality gate status reporting to GitHub to prevent false CI failures
1718
- - **Coverage File Generation** - Ensured coverage file is generated before SonarCloud scan
1719
- - **CLI Test Coverage** - Added CLI tests and excluded CLI entry point from coverage requirements
1720
- - **macOS Runner** - Removed macos-15-large runner to avoid GitHub billing limits
1721
- - **Piper Voice Test** - Updated installation test to match current voice list
1722
-
1723
- ### πŸ“š Documentation
1724
-
1725
- - Added step-by-step SonarCloud dashboard configuration guide
1726
- - Added guide to disable SonarCloud GitHub App checks
1727
- - Comprehensive Clawdbot integration documentation with SSH audio examples
1728
-
1729
- ### πŸ”’ Security & Quality
1730
-
1731
- - βœ… All Sonar quality gates validated
1732
- - βœ… No hardcoded credentials in changes
1733
- - βœ… New Clawdbot files are documentation only (no executable code)
1734
- - βœ… All 213 BATS + 47 Node tests passing
1735
-
1736
- ### πŸ“Š Changes Summary
1737
-
1738
- - **Files Added:** 2 (`.clawdbot/README.md`, `.clawdbot/skill/SKILL.md`)
1739
- - **Files Modified:** 2 (`README.md`, `package.json`)
1740
- - **Commits Since v3.1.0:** 11 (5 fixes, 4 docs, 1 test, 1 debug)
1741
-
1742
- ### 🎯 User Impact
1743
-
1744
- **For Clawdbot Users:**
1745
- - Professional TTS with 50+ voices in 30+ languages
1746
- - Works on remote servers with SSH audio tunneling
1747
- - Zero API costsβ€”Piper TTS is free and offline
1748
- - Automatic integration when AgentVibes is installed
1749
-
1750
- **For Existing Users:**
1751
- - Zero breaking changes
1752
- - All existing features work exactly the same
1753
- - Clawdbot support is additive
1754
-
1755
- ### πŸš€ Migration Notes
1756
-
1757
- No migration required! This is a fully backward-compatible minor release.
1758
-
1759
- **To Use with Clawdbot:**
1760
- 1. Install: `npx agentvibes install`
1761
- 2. Speak: `npx agentvibes speak "Hello!"`
1762
-
1763
- ### πŸ“¦ Full Changelog
1764
-
1765
- **Feature Commits:**
1766
- - `(pending)` feat: Add Clawdbot integration
1767
-
1768
- **Bug Fix Commits:**
1769
- - `5cd97d52` fix: Disable SonarCloud quality gate status reporting to GitHub
1770
- - `12f822e6` fix: Disable quality gate failure in SonarCloud workflow
1771
- - `0d26ccc2` fix: Ensure coverage file is generated before SonarCloud scan
1772
- - `c2465508` fix: Add CLI tests and exclude CLI entry point from coverage
1773
- - `c673afe1` fix: Remove macos-15-large runner to avoid GitHub billing limits
1774
- - `92271732` fix: Update Piper installation test to match current voice list
1775
-
1776
- **Documentation Commits:**
1777
- - `f72dd977` docs: Add guide to disable SonarCloud GitHub App checks
1778
- - `6587519b` docs: Add step-by-step SonarCloud dashboard configuration guide
1779
- - `ba765f50` docs: Add SonarCloud quality gate configuration guidance
1780
-
1781
- **Test Commits:**
1782
- - `47f08a79` test: Trigger workflow to verify SonarCloud quality gate fix
1783
-
1784
- **Debug Commits:**
1785
- - `84945d25` debug: Add coverage file verification to SonarCloud workflow
1786
-
1787
- ---
1788
-
1789
- ## πŸ“¦ v3.1.0 - Android Native Support: Run Claude Code on Your Phone
1790
-
1791
- **Release Date:** January 22, 2026
1792
-
1793
- ### 🎯 Why v3.1.0?
1794
-
1795
- This minor release brings **native Android support** to AgentVibes, enabling developers to run Claude Code with professional TTS voices directly on Android devices via Termux. No SSH required, no remote server neededβ€”just install Termux on your Android phone or tablet and get the full AgentVibes experience locally. This complements the v3.0.0 termux-ssh provider by offering a **complete mobile development solution**: use native Termux for local Android development, or use termux-ssh when connecting to remote servers.
1796
-
1797
- ### πŸ€– AI Summary
1798
-
1799
- AgentVibes v3.1.0 introduces native Android/Termux support, enabling developers to run Claude Code with professional TTS voices directly on their Android devices. Through automatic detection and a specialized installer, AgentVibes now runs Piper TTS via proot-distro with Debian (solving Android's glibc compatibility issues), uses termux-media-player for audio playback, and includes comprehensive Android-specific documentation. Perfect for developers who want to code on-the-go with their Android phone or tablet using the full power of Claude Code and AgentVibes.
1800
-
1801
- **Key Highlights:**
1802
- - πŸ€– **Native Android Support** - Run Claude Code with TTS directly on Android devices via Termux
1803
- - πŸ“¦ **Automatic Termux Detection** - AgentVibes auto-detects Android and runs specialized installation
1804
- - 🎯 **Proot-Distro Integration** - Solves glibc compatibility with proot Debian environment
1805
- - πŸ”Š **Android Audio Playback** - Uses termux-media-player for native Android audio routing
1806
- - πŸ“š **Comprehensive Documentation** - Complete Android setup guide with troubleshooting and F-Droid instructions
1807
- - βœ… **Full Test Coverage** - All 213 BATS + 38 Node tests passing with Android compatibility
1808
-
1809
- ### ✨ New Features
1810
-
1811
- **Termux Installer (`.claude/hooks/termux-installer.sh`):**
1812
- - New 224-line installer specifically for Android/Termux environments
1813
- - Automatically installs proot-distro with Debian (for glibc compatibility)
1814
- - Downloads and configures Piper TTS binary in proot environment
1815
- - Creates `/usr/bin/piper` wrapper that routes through proot
1816
- - Installs audio dependencies: ffmpeg, sox, bc, termux-api
1817
- - Interactive voice selection with 50+ language options
1818
- - Validates Termux environment before proceeding
1819
-
1820
- **Termux Detection (`src/installer.js`):**
1821
- - New `isTermux()` function checks for `/data/data/com.termux` directory
1822
- - New `detectAndNotifyTermux()` displays Android detection messages
1823
- - Auto-configures piper provider with Termux-compatible voice
1824
- - Shows Termux-specific installation instructions
1825
- - Piper installer automatically redirects to termux-installer.sh on Android
1826
-
1827
- **Audio Processor Updates (`.claude/hooks/audio-processor.sh`):**
1828
- - Detects Termux environment for temp directory selection
1829
- - Uses `${PREFIX}/tmp` on Termux, `/tmp` on standard systems
1830
- - Ensures audio effects work correctly on Android
1831
- - Cross-platform compatibility maintained
1832
-
1833
- **Piper Installer Updates (`.claude/hooks/piper-installer.sh`):**
1834
- - Auto-detects Termux and redirects to specialized installer
1835
- - Shows clear message when routing to Termux-specific setup
1836
-
1837
- **Android Audio Playback (`.claude/hooks/play-tts-piper.sh`):**
1838
- - Detects Android/Termux environment
1839
- - Uses `termux-media-player` instead of `paplay` on Android
1840
- - Audio routes through Android's native media system
1841
-
1842
- ### πŸ“š Documentation
1843
-
1844
- **New Android Setup Section (`README.md`):**
1845
- - Added "πŸ€– Android / Termux" section to System Requirements
1846
- - Complete 3-step installation guide for Android devices
1847
- - Explanation of why Termux needs special handling (bionic vs glibc)
1848
- - Requirements: Termux app from F-Droid, Termux:API, Android 7.0+
1849
- - Audio playback architecture explanation
1850
- - Setup verification commands
1851
- - Troubleshooting table for common issues
1852
- - Clear explanation of why F-Droid version is required (not Google Play)
1853
- - Updated Quick Links table with direct link to Android setup
1854
-
1855
- ### πŸ› Bug Fixes
1856
-
1857
- - **Test #90 Fix** - Added termux-ssh provider to test cleanup list for "no providers found" edge case
1858
- - **Temp Directory Detection** - Fixed audio-processor.sh defaulting to Termux paths on non-Termux systems
1859
- - **Sonar Compliance** - Added `set -euo pipefail` strict mode to termux-installer.sh for security
1860
-
1861
- ### πŸ”’ Security & Quality
1862
-
1863
- - βœ… All Sonar quality gates validated
1864
- - βœ… Strict mode (`set -euo pipefail`) on all new bash scripts
1865
- - βœ… No hardcoded credentials
1866
- - βœ… Proper variable quoting and input validation
1867
- - βœ… Cross-platform temp directory handling
1868
- - βœ… All 213 BATS + 38 Node tests passing
1869
-
1870
- ### πŸ“Š Changes Summary
1871
-
1872
- - **Files Modified:** 7
1873
- - **Lines Added:** +391
1874
- - **Lines Removed:** -8
1875
- - **New Files:** 1 (termux-installer.sh)
1876
- - **Commits:** 8 (5 fixes, 1 feature, 1 docs, 1 merge)
1877
-
1878
- ### 🎯 User Impact
1879
-
1880
- **For Android Users:**
1881
- - Can now run Claude Code directly on Android phones/tablets
1882
- - Full TTS support with 50+ voices and languages
1883
- - No remote server required for basic usage
1884
- - Works offline after initial voice downloads
1885
-
1886
- **For Developers:**
1887
- - Complete mobile development solution (native + SSH)
1888
- - Native Termux for local Android development
1889
- - Termux-SSH provider for remote server connections
1890
- - Seamless integration with existing AgentVibes workflows
1891
-
1892
- **For Existing Users:**
1893
- - Zero breaking changes
1894
- - All existing features work exactly the same
1895
- - New Android support is opt-in via Termux installation
1896
-
1897
- ### πŸš€ Migration Notes
1898
-
1899
- No migration required! This is a fully backward-compatible minor release.
1900
-
1901
- **To Try Android Support:**
1902
- 1. Install [Termux from F-Droid](https://f-droid.org/en/packages/com.termux/)
1903
- 2. Install [Termux:API](https://f-droid.org/en/packages/com.termux.api/)
1904
- 3. In Termux: `pkg install nodejs-lts`
1905
- 4. Run: `npx agentvibes install`
1906
-
1907
- AgentVibes will auto-detect Termux and run the specialized installer.
1908
-
1909
- ### πŸ“¦ Full Changelog
1910
-
1911
- **Feature Commits:**
1912
- - `e9d4cf95` feat: Add Android/Termux support for Piper TTS
1913
-
1914
- **Bug Fix Commits:**
1915
- - `aa4d3cdd` fix: Add termux-ssh provider to test #90 cleanup list
1916
- - `c1b00c6d` fix: Use termux-media-player for audio playback on Android
1917
- - `f96ab89a` fix: Properly detect Termux environment for temp directory
1918
- - `e2efeb06` fix: Add strict mode to termux-installer.sh for Sonar compliance
1919
-
1920
- **Documentation Commits:**
1921
- - `701a9412` docs: Add comprehensive Android/Termux setup section to README
1922
-
1923
- **Merge Commits:**
1924
- - `a5d3f546` Merge feature/android-termux into master
1925
- - `95f04e70` Merge origin/master into feature/pulseaudio-reverse-tunnel
1926
-
1927
- ---
1928
-
1929
- ## πŸ“¦ v3.0.0 - Cross-Platform Remote Audio: Termux SSH Provider
1930
-
1931
- **Release Date:** January 8, 2026
1932
-
1933
- ### 🎯 Why v3.0.0?
1934
-
1935
- This major release marks a significant milestone in AgentVibes' evolution, introducing **mobile-first interactive AI conversations**. The termux-ssh provider enables a revolutionary workflow: **have fully interactive, hands-free conversations with Claude Code using just your mobile device**β€”whether you're coding locally on your laptop with audio routed to your phone, or working on remote servers from anywhere in the world. This architectural breakthrough represents a new paradigm: **"Code with your hands, converse with your voice."**
1936
-
1937
- ### πŸ€– AI Summary
1938
-
1939
- AgentVibes v3.0.0 introduces the termux-ssh TTS provider, enabling **true mobile-first interactive conversations with Claude Code**. Route TTS audio to your Android device via SSHβ€”whether coding locally on your laptop or on remote serversβ€”and have hands-free, voice-driven conversations with Claude using just your phone. This major release includes comprehensive Tailscale VPN setup documentation for internet-wide access, full MCP server integration, and transforms how developers interact with AI assistants. Perfect for developers who want to experience AI conversations naturally through their mobile device while their hands stay on the keyboard.
1940
-
1941
- **Key Highlights:**
1942
- - πŸ“± **Mobile-First AI Conversations** - Have fully interactive, hands-free conversations with Claude Code using just your Android device
1943
- - πŸ’» **Local + Remote Development** - Works for both local coding (laptop β†’ phone audio) and remote server development
1944
- - 🌐 **Tailscale Integration** - Comprehensive guide for internet-wide device access without port forwarding or firewall configuration
1945
- - πŸ”§ **Enhanced Installer** - Interactive SSH host configuration with validation and clear use-case guidance
1946
- - 🎯 **Full MCP Compatibility** - Complete integration with all MCP commands and workflows
1947
- - πŸ›‘οΈ **Quality Gates Integration** - Automated security validation in release process
1948
-
1949
- ### πŸŽ₯ Demo Video
1950
-
1951
- **Watch it in action:** [Mobile-First AI Conversations with Claude Code](https://youtu.be/ngLiA_KQtTA?si=wTwS4CJidIxWqLIP)
1952
-
1953
- See the termux-ssh provider in actionβ€”fully interactive, hands-free conversations with Claude Code using just your Android device.
1954
-
1955
- ### ✨ New Features
1956
-
1957
- **Termux SSH TTS Provider (`.claude/hooks/play-tts-termux-ssh.sh`):**
1958
- - New TTS provider for Android via SSH connection
1959
- - Routes text to `termux-tts-speak` on remote Android device
1960
- - Configuration priority: env var β†’ project β†’ global
1961
- - Secure quote escaping for safe text transmission
1962
- - 196 lines of fully documented code
1963
-
1964
- **Installer Updates (`src/installer.js`):**
1965
- - Added termux-ssh to provider selection menu
1966
- - Interactive SSH host alias configuration with validation
1967
- - Saves host alias to `.claude/termux-ssh-host.txt`
1968
- - Clear use case description: "Only choose if your project is on a remote server and you want audio sent to your Android device"
1969
- - Documentation link to TERMUX_SETUP.md
1970
-
1971
- **TTS Router Updates (`.claude/hooks/play-tts.sh`):**
1972
- - Added termux-ssh provider routing in two locations
1973
- - Full integration with existing provider detection
1974
- - Supports mixed-provider mode (Piper + Termux)
1975
-
1976
- **MCP Server Integration (`mcp-server/server.py`):**
1
+ # AgentVibes Release Notes
2
+
3
+ ## 🎡 v5.5.0 β€” Per-LLM Audio Routing & Windows Installer Resilience
4
+
5
+ **Released:** 2026-04-27
6
+
7
+ ### πŸ†• Per-LLM Audio Routing
8
+ Each LLM (Claude Code, Copilot, Codex) can now have its own voice, pretext, reverb, and
9
+ background-music settings. The MCP server passes `--llm <key>` to both `play-tts.sh`
10
+ (Linux/macOS) and `play-tts.ps1` (Windows), and the scripts look up `llm:<key>` rows in
11
+ `audio-effects.cfg`. Default rows for `claude-code`, `copilot`, and `codex` ship out of the
12
+ box; configure them via **Setup β†’ Default β†’ Configure** in the TUI.
13
+
14
+ ### πŸ› Windows Installer Crash Fix
15
+ Fixed `spinner.info is not a function` error that crashed AgentVibes **reinstalls** on Windows
16
+ when users had an older global install. All 10 file-copy functions in the installer now wrap
17
+ their spinner with `createRobustSpinner()` so stale callers can never cause a crash regardless
18
+ of which methods they expose.
19
+
20
+ ### 🎢 Windows Background Music Parity
21
+ Windows TTS playback now prefers `ffplay` (sinc resampling, no artefacts) over the low-quality
22
+ WinMM `SoundPlayer` resampler. The new `Invoke-AudioPlay` helper handles the fallback
23
+ transparently β€” if `ffplay` is unavailable, `SoundPlayer` is used as before.
24
+
25
+ ### πŸŽ‰ Party Mode Cross-Platform Entry Point
26
+ BMAD party mode step files and the Copilot skill now consistently reference
27
+ `node bin/bmad-speak.js` β€” the single cross-platform entry point that delegates to
28
+ `bmad-speak.ps1` on Windows and `bmad-speak.sh` elsewhere.
29
+
30
+ ### πŸ”§ Other Fixes
31
+ - `play-tts.sh` now accepts a named `--llm <key>` flag in addition to the `LLM_PROVIDER` env var
32
+ - `mcp-server/server.py` routes `AGENTVIBES_LLM` β†’ `CLAUDECODE=1` β†’ `AGENTVIBES_MCP_FALLBACK`
33
+ priority chain and forwards the resolved key as `-llm`/`--llm` to TTS scripts
34
+ - Added `audio-effects.cfg` rows for `llm:claude-code`, `llm:copilot`, `llm:codex`
35
+ - Added `command-routing.test.js` and `ConfigService` unit tests
36
+ - npm pack content guard now catches untracked publishable files
37
+
38
+ ### πŸ“Š Technical
39
+ - 231 tests passing (0 failures)
40
+
41
+ ---
42
+
43
+ ## πŸŽ›οΈ v5.4.0 β€” TUI Installer, Spinner Fix & Dependency Cleanup
44
+
45
+ **Released:** 2026-04-22
46
+
47
+ ### ✨ New
48
+ - **TUI Installer**: Interactive terminal UI for guided installation β€” browse voices, configure providers, enable BMAD party mode, all from a beautiful terminal interface
49
+ - **Cross-Platform Spinner Fix**: Resolved `spinner.info is not a function` crash on WSL/Linux that blocked installation
50
+
51
+ ### πŸ› Bug Fixes
52
+ - **Removed circular self-dependency**: `package.json` was depending on `agentvibes@^3.5.9` (itself), causing npm to shadow the fixed binary with the old buggy one β€” the silent cause of the spinner crash on repeat installs
53
+ - **Restored background music volume fallback**: `audio-processor.sh` `bg_volume="0.20"` fallback lost in merge was restored
54
+ - **Fixed PROJECT_ROOT detection in `play-tts.sh`**: Walk-up logic was going 2 levels too far, causing TTS to use global `~/.agentvibes` config instead of project config
55
+
56
+ ### πŸ”§ Technical
57
+ - 706/738 tests passing
58
+
59
+ ---
60
+
61
+ ## ✨ v3.5.10 - Soprano Detection Fixes & Enhanced Installer Features
62
+
63
+ **Release Date:** February 14, 2026
64
+
65
+ ### 🎯 Summary
66
+
67
+ Production release combining critical bug fixes and new installer features. Fixed Soprano TTS detection for pipx installations (the core issue reported by users), resolved 5 execSync API misuse bugs that were breaking Python package detection, and eliminated 100+ lines of code duplication. Introduces new installer features: custom music track support with preview functionality, personality emoji mapping for better visual recognition, and pretext configuration allowing users to customize agent introductions.
68
+
69
+ ### ✨ Key Features & Fixes
70
+
71
+ **πŸ”§ Critical Bug Fixes:**
72
+ - **Soprano TTS Detection:** Fixed detection when installed via pipx (was showing "not installed" despite working)
73
+ - **execSync API Bugs:** Fixed 5 locations using incorrect API signature (array args with execSync)
74
+ - **Code Duplication:** Eliminated 100+ lines of duplicate code between Soprano and Piper validators
75
+ - **API Consistency:** All provider validation functions now return consistent response structures
76
+ - **Python Package Detection:** Fixed broken Python pip detection that was silently failing
77
+
78
+ **🎨 New Installer Features:**
79
+ - **Custom Music Tracks:** Users can now upload and preview their own background music
80
+ - **Personality Emojis:** Visual recognition mapping (😊 for none, 🎭 for dramatic, πŸ’ for sassy, etc.)
81
+ - **Pretext Configuration:** Custom agent introductions (e.g., "FireBot: " prefix for all messages)
82
+ - **Track Preview:** Audio preview with support for ffplay, sox, and mpv players
83
+
84
+ **πŸ›‘οΈ Security & Quality:**
85
+ - Improved path traversal protection in provider validation
86
+ - Enhanced error handling and logging
87
+ - Reduced code complexity by 29% through deduplication
88
+ - Test coverage improved: 56.61% β†’ 63.67%
89
+
90
+ ### πŸ“Š Technical Details
91
+
92
+ **Soprano Detection Improvements:**
93
+ - Checks command in PATH first (most reliable for pipx)
94
+ - Falls back to ~/.local/bin directory check
95
+ - Checks pipx venv directory for installation
96
+ - Final fallback to Python pip package detection
97
+ - Consistent error messages showing all checked locations
98
+
99
+ **Code Quality Metrics:**
100
+ - File size reduced by 145 lines (-29%)
101
+ - Code duplication eliminated (was ~100 lines)
102
+ - Test coverage improved +7.06%
103
+ - All 114 tests passing
104
+ - Provider validator now 63.67% covered (up from 56.61%)
105
+
106
+ **Installer Enhancements:**
107
+ - Added personality emoji mapping (26 personalities)
108
+ - Custom track upload with validation
109
+ - File type restrictions (.mp3, .wav, .ogg, .m4a)
110
+ - Registry storage in ~/.agentvibes/custom-tracks.json
111
+ - Audio preview before finalizing selection
112
+
113
+ ### πŸ”’ Security Notes
114
+
115
+ - All spawnSync calls now use correct array argument form
116
+ - Path traversal prevention maintained in all operations
117
+ - HOME injection protection via os.homedir()
118
+ - No hardcoded credentials introduced
119
+ - Input validation for file uploads and track selection
120
+
121
+ ### πŸ› Known Limitations
122
+
123
+ - Audio preview requires ffplay, sox, or mpv (feature gracefully degrades if unavailable)
124
+ - Custom track registry is stored locally per user
125
+ - Some legacy bash scripts still lack strict mode (pre-existing, low risk)
126
+
127
+ ### πŸ™ Acknowledgments
128
+
129
+ This release includes fixes identified through adversarial code review, ensuring production-quality reliability and security alignment with CLAUDE.md standards.
130
+
131
+ ---
132
+
133
+ ## πŸ›‘οΈ v3.5.8 - Provider Validation Security & UX Improvements
134
+
135
+ **Release Date:** February 12, 2026
136
+
137
+ ### 🎯 Summary
138
+
139
+ Critical security and reliability update for provider detection. Fixes command injection vulnerabilities in validation code, prevents HOME directory injection attacks, and improves UX with explicit provider detection messaging. Soprano TTS installed via pipx is now correctly detected (previously showed "not installed" due to ES module import error). All 8 critical code review issues resolved with comprehensive security hardening and enhanced error reporting.
140
+
141
+ ### ✨ Key Improvements
142
+
143
+ - **πŸ” Security Fixes:** Fixed command injection vulnerability (template strings β†’ array form), prevented HOME injection attacks, added path traversal protection
144
+ - **βœ… Provider Detection:** Soprano via pipx now correctly detected; added checkedLocations tracking for transparency
145
+ - **πŸ’¬ Better Messaging:** Explicit "Detected and selected!" confirmation; detailed error messages showing what was checked
146
+ - **πŸ§ͺ Test Coverage:** Enhanced tests verify actual detection values, not just types
147
+ - **πŸ› Debugging:** Added [DEBUG] logging for troubleshooting provider issues
148
+
149
+ ### πŸ”΄ Critical Fixes
150
+
151
+ 1. **Command Injection Prevention** - All execSync calls now use array form (security: CLAUDE.md)
152
+ 2. **HOME Directory Injection** - Switched to os.homedir() instead of process.env.HOME
153
+ 3. **Path Traversal Protection** - Added path.resolve() validation for pipx venv directories
154
+
155
+ ### 🟑 Medium Fixes
156
+
157
+ 4. **Pipx Logic Improved** - Tracks checked locations even on success (transparency)
158
+ 5. **Silent Failures Eliminated** - Added [DEBUG] error logging for diagnostics
159
+ 6. **Test Quality Enhanced** - Verify message content, not just types
160
+ 7. **Documentation** - Added JSDoc comments explaining security-critical imports
161
+ 8. **Error Differentiation** - Better distinction between different failure types
162
+
163
+ ### πŸ“Š Technical Impact
164
+
165
+ - Soprano detection now works reliably for both pip and pipx installations
166
+ - Reduced false negatives in provider validation
167
+ - Enhanced security posture aligned with CLAUDE.md security mandates
168
+ - Improved debuggability with explicit error messages
169
+
170
+ ---
171
+
172
+ ## πŸ”§ v3.5.7 - CLI Fix: npx Command Output & Startup Hooks
173
+
174
+ **Release Date:** February 12, 2026
175
+
176
+ Fixes critical bug where `npx agent-vibes install` and other commands produced no output, making CLI unusable. Root cause: bin/agent-vibes used dynamic import without passing arguments to installer.js on local execution. Also removed broken hook configurations (pre_compact.py, notification.ts) that didn't exist and caused startup errors in Claude Code settings.
177
+
178
+ ### 🎯 What's Fixed
179
+
180
+ - **npx agent-vibes now works** - `npx agent-vibes install`, `npx agent-vibes --help`, all commands produce proper output
181
+ - **Startup hook errors gone** - Removed non-existent hook references from settings.json (pre_compact.py, notification.ts)
182
+ - **CLI execution proper** - Both npx and local execution now use execFileSync with proper argument passing
183
+
184
+ ### πŸš€ Technical Details
185
+
186
+ **Before v3.5.7:**
187
+ ```javascript
188
+ // bin/agent-vibes (local execution path)
189
+ import('../src/installer.js'); // ❌ No args, doesn't await
190
+ ```
191
+
192
+ **After v3.5.7:**
193
+ ```javascript
194
+ // bin/agent-vibes (all execution paths)
195
+ execFileSync('node', [installerPath, ...arguments_], {
196
+ stdio: 'inherit',
197
+ cwd: isNpxExecution ? path.dirname(__dirname) : process.cwd(),
198
+ }); // βœ… Passes args, proper I/O
199
+ ```
200
+
201
+ ---
202
+
203
+ ## πŸ”§ v3.5.6 - Bug Fix: Bash Hook Parameter Handling
204
+
205
+ **Release Date:** February 11, 2026
206
+
207
+ Fixes critical regression in v3.5.5 where bash hooks failed with unbound variable errors when called with optional parameters under strict mode. Affects `play-tts.sh` and `provider-manager.sh`.
208
+
209
+ ---
210
+
211
+ ## πŸ“¦ v3.5.5 - Native Windows Support: Soprano, Piper & SAPI Providers
212
+
213
+ **Release Date:** February 12, 2026
214
+
215
+ ### 🎯 Why v3.5.5?
216
+
217
+ v3.5.5 brings **native Windows support** to AgentVibes with a full-featured PowerShell installer and three TTS providers. Windows users no longer need WSL - AgentVibes runs natively with Soprano (neural), Piper (offline neural), or Windows SAPI (zero-setup) voices. The installer also adds **background music selection** (16 genre tracks), **reverb/audio effects** (via ffmpeg aecho), and **verbosity control** for the TTS experience.
218
+
219
+ ### πŸš€ Key Highlights
220
+
221
+ #### πŸ–₯️ Native Windows TTS (NEW!)
222
+ - **3 providers**: Soprano (ultra-fast neural), Piper (offline neural), Windows SAPI (built-in)
223
+ - **Beautiful PowerShell installer** with figlet banner and interactive setup
224
+ - **8 hook scripts** for complete TTS functionality on Windows
225
+ - **MCP server** auto-resolves `.sh` to `.ps1` on Windows
226
+ - **46 Windows-specific unit tests** with full coverage
227
+
228
+ #### 🎡 Background Music Selection
229
+ - **16 genre tracks**: Flamenco, Bachata, Bossa Nova, City Pop, Chillwave, and more
230
+ - **Interactive picker** in the installer with descriptions
231
+ - **ffmpeg mixing**: 2s intro, voice over music, 2s fade-out outro
232
+
233
+ #### πŸŽ›οΈ Reverb / Audio Effects
234
+ - **5 reverb levels**: Off, Light, Medium, Heavy, Cathedral
235
+ - **ffmpeg aecho filter** (no SOX dependency on Windows)
236
+ - Applied before background music mixing for clean layering
237
+
238
+ #### πŸ”Š Verbosity Control
239
+ - **3 levels**: High (full reasoning), Medium (key updates), Low (essential only)
240
+ - Integrates with session-start-tts.ps1 protocol instructions
241
+
242
+ ### πŸ€– AI Summary
243
+
244
+ AgentVibes v3.5.5 delivers native Windows support with a polished PowerShell installer offering three TTS providers (Soprano neural, Piper offline, Windows SAPI), background music selection from 16 genre tracks, reverb effects via ffmpeg aecho filter, and verbosity control. The release includes 8 Windows hook scripts, MCP server platform detection for automatic .sh-to-.ps1 resolution, and 46 new unit tests. Security hardening adds path traversal prevention with regex allowlisting and path containment checks, reverb config allowlist validation, and strict mode compliance across all scripts. Cross-platform test fixes ensure the full 93-test suite passes on both Windows and Unix.
245
+
246
+ ---
247
+
248
+ ## ✨ New Features
249
+
250
+ ### Native Windows TTS
251
+ - Full PowerShell installer (`setup-windows.ps1`) with figlet banner and interactive UX
252
+ - Soprano provider (`play-tts-soprano.ps1`) with Gradio WebUI integration
253
+ - Piper provider (`play-tts-windows-piper.ps1`) with auto-download of voices from HuggingFace
254
+ - Windows SAPI provider (`play-tts-windows-sapi.ps1`) with zero-setup built-in voices
255
+ - TTS router (`play-tts.ps1`) with mute support, background music mixing, and reverb
256
+ - Provider manager, voice manager, audio cache utils, and session-start hook scripts
257
+ - MCP server `.sh` to `.ps1` auto-resolution on Windows
258
+
259
+ ### Installer Enhancements
260
+ - Background music selection with 16 genre tracks and interactive picker
261
+ - Reverb/audio effects selection (Off/Light/Medium/Heavy/Cathedral)
262
+ - Verbosity control (High/Medium/Low) for TTS protocol instructions
263
+ - Updated completion screen showing all 4 settings (provider, background, reverb, verbosity)
264
+
265
+ ---
266
+
267
+ ## πŸ› Bug Fixes
268
+
269
+ ### Security Fixes
270
+ - Fix path traversal in background music config reader (regex allowlist + path containment)
271
+ - Add allowlist validation for reverb-level.txt config (prevent invalid values)
272
+ - Add `set -euo pipefail` strict mode to `play-tts.sh` for Sonar compliance
273
+
274
+ ### Cross-Platform Fixes
275
+ - Fix self-copy error when setup-windows.ps1 runs from project root
276
+ - Fix test executable permission checks on Windows (skip Unix mode bits)
277
+ - Fix test path separator comparison in uninstall test (use `path.join` not hardcoded `/`)
278
+
279
+ ---
280
+
281
+ ## πŸ—οΈ Improvements
282
+
283
+ ### Code Quality
284
+ - Reverb config uses switch-as-allowlist pattern - file content never flows into commands
285
+ - All SoundPlayer instances wrapped in try/finally for resource disposal
286
+ - Environment variable cleanup (`AGENTVIBES_NO_PLAY`) on all exit paths
287
+ - Input validation with regex + range checks for all installer prompts
288
+
289
+ ### Testing
290
+ - 46 new Windows-specific unit tests (hook scripts, providers, security, encoding)
291
+ - 3 cross-platform test fixes for Windows compatibility
292
+ - Full suite: 93 Node tests passing on Windows
293
+
294
+ ---
295
+
296
+ ## πŸ“Š Statistics
297
+
298
+ - **7 commits** since v3.4.1
299
+ - **3,769 lines added**, 211 removed across 24 files
300
+ - **9 new PowerShell scripts** for Windows TTS
301
+ - **93 tests passing** (46 Windows + 47 cross-platform)
302
+ - **24/24 Sonar quality gates** passing
303
+ - **Security score**: All path traversal and injection vectors reviewed
304
+
305
+ ---
306
+
307
+ ## πŸ”§ Technical Details
308
+
309
+ ### Files Added
310
+ - `.claude/hooks-windows/play-tts.ps1`: TTS router with reverb and background music
311
+ - `.claude/hooks-windows/play-tts-soprano.ps1`: Soprano neural TTS provider
312
+ - `.claude/hooks-windows/play-tts-windows-piper.ps1`: Piper offline TTS provider
313
+ - `.claude/hooks-windows/play-tts-windows-sapi.ps1`: Windows SAPI built-in voices
314
+ - `.claude/hooks-windows/provider-manager.ps1`: Provider switching
315
+ - `.claude/hooks-windows/voice-manager-windows.ps1`: Voice browsing and selection
316
+ - `.claude/hooks-windows/audio-cache-utils.ps1`: Cache management
317
+ - `.claude/hooks-windows/session-start-tts.ps1`: Auto-activates TTS on Claude start
318
+ - `setup-windows.ps1`: Full Windows installer with 4 interactive sections
319
+ - `test/unit/windows-tts.test.js`: 46 Windows-specific unit tests
320
+
321
+ ### Breaking Changes
322
+ None - all changes are backward compatible. Existing Unix/macOS installations are unaffected.
323
+
324
+ ---
325
+
326
+ ## πŸŽ“ Migration Notes
327
+
328
+ ### For New Windows Users
329
+ 1. Run `npx agentvibes install` (Node.js) or `.\setup-windows.ps1` (PowerShell)
330
+ 2. Follow the interactive setup
331
+ 3. Choose provider (Soprano, Piper, or SAPI)
332
+ 4. Select background music, reverb, and verbosity
333
+ 5. TTS works automatically in Claude Code sessions
334
+
335
+ ### For Existing Unix/macOS Users
336
+ - No changes required - your setup continues working
337
+ - All Unix bash hooks remain untouched
338
+ - Only `play-tts.sh` gained `set -euo pipefail` (strict mode)
339
+
340
+ ---
341
+
342
+ ## πŸ™ Acknowledgments
343
+
344
+ ### Project Lead
345
+ - **[@paulpreibisch](https://github.com/paulpreibisch)** (Paul Preibisch) β€” Creator and maintainer of AgentVibes
346
+
347
+ ### Community Contributors
348
+ - **[@nathanchase](https://github.com/nathanchase)** β€” For contributing the Soprano TTS provider in v3.4.0, whose ultra-fast neural engine is now one of the three Windows-native providers
349
+ - **[@alexeyv](https://github.com/alexeyv)** β€” For suggesting native Windows support and recommending Windows SAPI as a zero-dependency provider
350
+ - **[@bmadcode](https://github.com/bmadcode)** (Brian Madison) β€” Creator of the [BMAD Method](https://github.com/bmadcode/BMAD-METHOD), used daily for planning and building AgentVibes features
351
+
352
+ ### Quality Assurance
353
+ - **Adversarial Security Review**: Path traversal, injection, and resource disposal all validated
354
+ - **Testing**: 93/93 tests passing (100% suite coverage)
355
+ - **Quality Gates**: 24/24 Sonar requirements validated
356
+ - **Co-Authored-By**: Claude Opus 4.6
357
+
358
+ ---
359
+
360
+ **Full Changelog**: https://github.com/paulpreibisch/AgentVibes/compare/v3.4.1...v3.5.5
361
+
362
+ ---
363
+
364
+ ## πŸ“¦ v3.4.0 - Soprano TTS, Security Hardening & Environment Intelligence
365
+
366
+ **Release Date:** February 10, 2026
367
+
368
+ ### 🎯 Why v3.4.0?
369
+
370
+ v3.4.0 introduces **Soprano TTS** - an ultra-fast neural TTS provider with GPU acceleration, comprehensive **security hardening** across the codebase, and **intelligent environment detection** that recognizes PulseAudio tunnels for remote audio scenarios.
371
+
372
+ ### πŸš€ Key Highlights
373
+
374
+ #### ⚑ Soprano TTS Provider (NEW!)
375
+ - **80M parameter neural model** with premium female English voice
376
+ - **20x CPU speed** (vs Piper), **2000x GPU speed** with CUDA
377
+ - **3 synthesis modes**: WebUI (Gradio), API (OpenAI-compatible), CLI (fallback)
378
+ - **Auto-detection**: Checks for running Gradio server, falls back gracefully
379
+ - **<1GB memory footprint** - perfect for low-RAM systems
380
+ - **Provider-aware voice management**: Auto-selects single voice, shows model specs
381
+ - **Thanks to [@nathanchase](https://github.com/nathanchase)** for this contribution! ([see acknowledgments](#-acknowledgments))
382
+
383
+ #### πŸ›‘οΈ Security Hardening (9.5/10 Score)
384
+ - **Timeouts on system commands**: Prevents installer hangs (nvidia-smi, sysctl, meminfo)
385
+ - **Bounds checking**: Validates array access before parsing system output
386
+ - **NaN validation**: Prevents crashes from malformed memory/GPU detection
387
+ - **Case-insensitive checks**: PulseAudio tunnel detection handles TCP: and tcp:
388
+ - **Code duplication eliminated**: Extracted PulseAudio helper function (DRY)
389
+
390
+ #### 🌐 Environment Intelligence
391
+ - **PulseAudio tunnel detection**: Recognizes `PULSE_SERVER=tcp:*` as working audio
392
+ - **Context-aware messaging**:
393
+ - "🌐 PulseAudio Tunnel Detected!" for SSH + tunnel setups
394
+ - "πŸ”Š Audio Output Detected!" for local speakers
395
+ - Distinguishes local/tunnel/hybrid configurations
396
+ - **Smart environment classification**:
397
+ - DESKTOP: Local audio OR active PulseAudio tunnel
398
+ - VOICELESS: No audio AND no tunnel
399
+ - PHONE: Termux/Android devices
400
+
401
+ #### 🎀 Installer Enhancements
402
+ - **Provider-aware voice pages**: Soprano shows model specs, Piper shows 50+ voices
403
+ - **Auto-selection logic**: Soprano (1 voice) auto-selects, no manual choice needed
404
+ - **GPU-based recommendations**: "Your GPU will run Soprano 2000x faster!"
405
+ - **RAM-based suggestions**: Low memory systems see "Soprano uses <1GB" message
406
+ - **Better RAM display**: Shows "512MB" instead of "0GB" for sub-1GB systems
407
+
408
+ ### πŸ€– AI Summary
409
+
410
+ AgentVibes v3.4.0 brings Soprano TTS - an 80M parameter neural provider offering 20x CPU and 2000x GPU acceleration with sub-1GB memory footprint - plus comprehensive security hardening (timeouts, bounds checking, NaN validation) and intelligent environment detection that recognizes PulseAudio tunnels as working audio for remote scenarios. The enhanced installer provides context-aware messaging distinguishing local speakers from SSH tunnels, GPU-based provider recommendations (Soprano for CUDA users, macOS Say for Apple, Piper for versatility), and provider-specific voice pages that auto-select Soprano's single voice while showcasing model specifications. This release achieves a 9.5/10 security score through systematic defensive programming, making AgentVibes production-ready for enterprise deployments while expanding TTS provider options for diverse hardware configurations.
411
+
412
+ ---
413
+
414
+ ## ✨ New Features
415
+
416
+ ### Soprano TTS Provider
417
+ - Add Soprano TTS provider script with 3 synthesis modes (WebUI, API, CLI) (#95)
418
+ - Integrate Soprano into TTS router and provider manager
419
+ - Add soprano-gradio-synth.py helper for WebUI/SSE protocol
420
+ - Provider-aware voice selection page with model specifications
421
+ - Auto-select single Soprano voice with performance details
422
+
423
+ ### Installer Intelligence
424
+ - Add `detectSystemCapabilities()` for GPU/RAM detection
425
+ - Add `hasPulseAudioTunnel()` helper function
426
+ - Context-aware audio detection messaging (tunnel vs local)
427
+ - GPU-based provider ordering (Soprano first for CUDA users)
428
+ - RAM-based recommendations (<4GB systems see Soprano first)
429
+ - Provider-specific intro messages (Soprano vs Piper vs macOS)
430
+
431
+ ### Environment Detection
432
+ - PulseAudio tunnel recognition via PULSE_SERVER env var
433
+ - Case-insensitive TCP protocol detection
434
+ - Smart DESKTOP classification (local audio OR tunnel)
435
+ - Improved VOICELESS detection (no audio AND no tunnel)
436
+
437
+ ---
438
+
439
+ ## πŸ› Bug Fixes
440
+
441
+ ### Security Fixes
442
+ - Add 5s timeout to nvidia-smi to prevent GPU detection hangs
443
+ - Add 3s timeout to sysctl/meminfo to prevent memory detection hangs
444
+ - Add bounds checking before parsing sysctl output (macOS)
445
+ - Add bounds checking before parsing /proc/meminfo (Linux)
446
+ - Add NaN validation for parseInt() memory size parsing
447
+ - Fix case sensitivity in PULSE_SERVER detection (handles TCP: and tcp:)
448
+
449
+ ### Test Fixes
450
+ - Fix provider-manager test #90: Add soprano and ssh-remote to cleanup list
451
+ - Ensure zero-provider edge case properly simulates empty state
452
+
453
+ ### User Experience
454
+ - Fix RAM display for <1GB systems (show "512MB" not "0GB")
455
+ - Fix PulseAudio selection triggering wrong setup flow
456
+ - Separate PulseAudio tunnel setup from SSH receiver setup
457
+
458
+ ---
459
+
460
+ ## πŸ—οΈ Improvements
461
+
462
+ ### Code Quality
463
+ - Extract PulseAudio detection to helper function (DRY principle)
464
+ - Implement system capabilities caching (eliminates duplicate calls)
465
+ - Add comprehensive error handling in detectSystemCapabilities()
466
+ - Improve code comments for security-critical sections
467
+
468
+ ### Performance
469
+ - Cache system detection results (prevents duplicate nvidia-smi calls)
470
+ - Add timeouts to prevent indefinite hangs
471
+ - Optimize provider detection with early returns
472
+
473
+ ### Documentation
474
+ - Add comprehensive commit message documenting all changes
475
+ - Document security improvements (timeouts, bounds checking, NaN validation)
476
+ - Explain PulseAudio tunnel detection architecture
477
+ - Detail environment classification logic
478
+
479
+ ---
480
+
481
+ ## πŸ“Š Statistics
482
+
483
+ - **91 commits** since v3.3.0
484
+ - **817 lines added** in merge to master
485
+ - **6 files modified** in core integration
486
+ - **260 tests passing** (213 BATS + 47 Node)
487
+ - **Security score**: 7.5/10 β†’ 9.5/10
488
+ - **Test coverage**: 100% pass rate
489
+
490
+ ---
491
+
492
+ ## πŸ”§ Technical Details
493
+
494
+ ### Files Modified
495
+ - `src/installer.js`: +335 lines (security fixes, environment detection, Soprano integration)
496
+ - `test/unit/provider-manager.bats`: +4 lines (fix edge case test)
497
+ - `.claude/hooks/play-tts-soprano.sh`: +320 lines (new provider)
498
+ - `.claude/hooks/soprano-gradio-synth.py`: +139 lines (new helper)
499
+ - `.claude/hooks/provider-manager.sh`: +17 lines (Soprano support)
500
+ - `.claude/hooks/play-tts.sh`: +6 lines (route to Soprano)
501
+
502
+ ### Breaking Changes
503
+ None - all changes are backward compatible.
504
+
505
+ ### Dependencies
506
+ - **New**: `soprano-tts` (Python package, optional)
507
+ - **Recommended**: CUDA-capable GPU for 2000x speedup (optional)
508
+ - **Compatible**: Works on CPU-only systems (20x vs Piper)
509
+
510
+ ---
511
+
512
+ ## πŸŽ“ Migration Notes
513
+
514
+ ### For New Users
515
+ 1. Run `npx agentvibes install`
516
+ 2. Installer auto-detects your hardware (GPU, RAM, platform)
517
+ 3. Soprano appears as option if you have working audio
518
+ 4. Select Soprano for ultra-fast TTS with GPU acceleration
519
+
520
+ ### For Existing Users
521
+ 1. Update: `npx agentvibes update`
522
+ 2. Switch provider: `/agent-vibes:provider switch soprano`
523
+ 3. Test: `/agent-vibes:sample soprano-default`
524
+ 4. Optionally install soprano-tts: `pip install soprano-tts`
525
+
526
+ ### PulseAudio Tunnel Users
527
+ - Installer now auto-detects your tunnel configuration
528
+ - Shows "🌐 PulseAudio Tunnel Detected!" instead of "speakers"
529
+ - Provides DESKTOP mode options (Soprano, Piper, macOS Say)
530
+ - No manual configuration needed
531
+
532
+ ---
533
+
534
+ ## πŸ™ Acknowledgments
535
+
536
+ ### Special Thanks
537
+
538
+ **πŸŽ‰ [@nathanchase](https://github.com/nathanchase)** - For contributing the Soprano TTS Provider integration (PR #95)! Nathan's work brings ultra-fast neural TTS with GPU acceleration to AgentVibes, offering 20x CPU and 2000x GPU performance improvements. The comprehensive integration includes WebUI, API, and CLI synthesis modes with intelligent auto-detection and graceful fallback. Thank you for this outstanding contribution! πŸš€
539
+
540
+ ### Quality Assurance
541
+
542
+ - **Security Review**: Adversarial code review achieved 9.5/10 score
543
+ - **Testing**: All 260 tests pass (100% suite coverage)
544
+ - **Quality Gates**: All Sonar requirements validated
545
+ - **Co-Authored-By**: Claude Sonnet 4.5
546
+
547
+ ---
548
+
549
+ ## πŸ“š Additional Resources
550
+
551
+ - [Soprano TTS Documentation](https://github.com/paulpreibisch/AgentVibes/blob/master/docs/providers.md#soprano-tts)
552
+ - [PulseAudio Tunnel Setup](https://github.com/paulpreibisch/AgentVibes/blob/master/docs/SSH_REMOTE_SETUP.md)
553
+ - [Security Hardening Guide](https://github.com/paulpreibisch/AgentVibes/blob/master/docs/security-hardening-guide.md)
554
+ - [Provider Comparison](https://github.com/paulpreibisch/AgentVibes/blob/master/docs/providers.md)
555
+
556
+ ---
557
+
558
+ **Full Changelog**: https://github.com/paulpreibisch/AgentVibes/compare/v3.3.0...v3.4.0
559
+
560
+ ---
561
+
562
+ ## πŸ“¦ v3.3.0 - Remote TTS, Smart Installer, OpenClaw Receiver & Cache Management
563
+
564
+ **Release Date:** February 5, 2026
565
+
566
+ ### 🎯 Why v3.3.0?
567
+
568
+ v3.3.0 transforms AgentVibes into a **universal TTS platform** for any environment:
569
+
570
+ - **SSH-Remote Provider** - Generate TTS on servers, receive audio on your phone/computer
571
+ - **Termux/Android Support** - Native Piper TTS on mobile devices
572
+ - **OpenClaw Integration** - Turn voiceless servers into Siri-like conversational AI
573
+ - **AgentVibes Receiver** - Receive and play audio from remote servers on your device
574
+ - **Smart Installer** - Auto-detects your environment (voiceless, GUI, Termux, SSH)
575
+ - **Intelligent Cache Management** - Real-time tracking and auto-cleanup prevents disk bloat
576
+
577
+ #### 🌐 Real-World Use Case: OpenClaw + AgentVibes Receiver
578
+
579
+ You deploy OpenClaw on a voiceless Mac mini (or remote server) where users message you via WhatsApp, Telegram, or Discord. With v3.3.0:
580
+
581
+ **Before AgentVibes Receiver:**
582
+ - User messages: "Tell me a joke"
583
+ - Mac mini processes request
584
+ - Text response appears in chat
585
+ - 😞 No audio - silent experience
586
+
587
+ **After AgentVibes Receiver:**
588
+ 1. **Install AgentVibes** on your Mac mini (or remote server)
589
+ 2. **Install AgentVibes Receiver** on your phone/iPad/laptop
590
+ 3. **Connect via Tailscale** (one-time setup)
591
+ 4. **User messages:** "Tell me a joke"
592
+ 5. **Mac mini generates TTS** with your configured voice
593
+ 6. **Audio streams to your device** via SSH tunnel
594
+ 7. **Your speakers play:** πŸ”Š "Why did the AI go to school? To improve its learning model!"
595
+ 8. **User in WhatsApp also hears** the audio playing (Siri-like experience)
596
+
597
+ Result: OpenClaw transforms from **silent text AI** β†’ **Conversational AI with voice**
598
+
599
+ Perfect for:
600
+ - πŸ–₯️ Mac mini with OpenClaw
601
+ - πŸ–₯️ Remote servers (AWS, DigitalOcean, Linode)
602
+ - πŸ—οΈ Container deployments (Docker)
603
+ - πŸ”§ WSL (Windows Subsystem for Linux)
604
+ - πŸ“± Any voiceless environment needing audio
605
+
606
+ ### πŸ€– AI Summary
607
+
608
+ AgentVibes v3.3.0 unleashes the platform across new frontiers: remote servers via SSH-PulseAudio tunneling, Android/Termux environments with native Piper support, and OpenClaw (formerly Clawdbot) multi-agent orchestration. The redesigned smart installer detects your environment (voiceless, GUI, SSH, Termux) and shows only relevant options, plus optional BMAD personality injection for advanced users. Every TTS output now displays real-time cache metrics (file count/size with dynamic colors) plus intelligent size-based auto-cleanup that deletes oldest files when the cache exceeds threshold. The release includes comprehensive TTS queue management to prevent audio overlap, audio effects support across all providers, and full MCP tool integration for programmatic control. This release transforms AgentVibes into a universal TTS platform.
609
+
610
+ **Key Highlights:**
611
+ - 🌍 **SSH-Remote TTS** - Remote device playback via PulseAudio tunneling (servers, containers, WSL)
612
+ - πŸ“± **Android/Termux Support** - Native Piper TTS on Android with termux-media-player integration
613
+ - πŸ€– **OpenClaw Receiver** (formerly Clawdbot) - AgentVibes Receiver for receiving TTS from voiceless servers
614
+ - 🧠 **Smart Installer** - Voiceless environment detection + personality injection for BMAD
615
+ - πŸ“Š **Real-Time Cache Tracking** - File count and size on every output with dynamic colors
616
+ - 🧹 **Intelligent Auto-Cleanup** - Size-based threshold (15MB default) prevents storage bloat
617
+ - 🎡 **Queue Management** - Prevents TTS audio overlap via centralized queue system
618
+ - βš™οΈ **Audio Effects** - Full support across SSH-remote, Termux-ssh, and local providers
619
+ - πŸ“ **Uninstall Command** - Comprehensive cleanup with full documentation
620
+ - βœ… **96 Commits** - Massive feature expansion with 213 BATS tests passing
621
+
622
+ ### ✨ New Features
623
+
624
+ #### 🌍 Remote SSH TTS Support
625
+
626
+ **SSH-Remote Provider:**
627
+ - Play TTS on remote servers via SSH + PulseAudio tunneling
628
+ - Zero-dependency for audio output (uses PulseAudio network tunnel)
629
+ - Perfect for deployed Claude Code on servers, containers, WSL
630
+ - Auto-configuration of PulseAudio TCP module
631
+ - Fallback to local playback if SSH unavailable
632
+ - Full compatibility with all voice selection and audio effects
633
+
634
+ **SSH-PulseAudio Integration:**
635
+ - Automatic SSH connection detection and setup
636
+ - Secure TCP tunnel for audio stream transmission
637
+ - Support for both interactive and batch TTS operations
638
+ - Persistent audio configuration per SSH session
639
+
640
+ #### πŸ“± Android/Termux Support
641
+
642
+ **Termux-SSH Provider:**
643
+ - Native Piper TTS on Android via Termux environment
644
+ - Uses termux-media-player for audio playback
645
+ - Full voice selection and effects support
646
+ - Automatic temp directory detection
647
+ - Integration with Tailscale for secure remote access
648
+ - Comprehensive setup guide with QR codes
649
+
650
+ **Android Installation:**
651
+ - Self-contained Termux installer script
652
+ - One-command setup: `curl https://agentvibes.org/install-android | bash`
653
+ - Automatic dependency detection and installation
654
+ - Piper voice download management
655
+
656
+ #### πŸŽ™οΈ OpenClaw Integration & AgentVibes Receiver
657
+
658
+ **What is AgentVibes Receiver?**
659
+
660
+ AgentVibes Receiver is a **lightweight audio client** that receives and plays TTS audio from remote servers where OpenClaw is installed. It runs on your phone, tablet, or personal computer and connects to voiceless servers via SSH tunnel.
661
+
662
+ **The Problem It Solves:**
663
+ - OpenClaw running on Mac mini/remote server has no audio output
664
+ - Users message via WhatsApp/Telegram/Discord - get text responses only
665
+ - 😞 No voice = Less engaging AI experience
666
+
667
+ **AgentVibes Receiver Solution:**
668
+ 1. **Lightweight client** runs on your device (phone/tablet/laptop)
669
+ 2. **SSH tunnel** securely connects to your voiceless server
670
+ 3. **Audio streams** from server to your device via PulseAudio
671
+ 4. **Auto-plays** on your speakers when OpenClaw responds
672
+ 5. **Siri-like experience** - Text + Voice in one flow
673
+
674
+ **How It Works:**
675
+
676
+ ```
677
+ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
678
+ β”‚ Your Mac mini / Server β”‚
679
+ β”‚ (OpenClaw + AgentVibes) β”‚
680
+ β”‚ β”œβ”€ No audio output β”‚
681
+ β”‚ β”œβ”€ Generates TTS β”‚
682
+ β”‚ └─ Sends via SSH tunnel β”‚
683
+ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
684
+ ↓ SSH Tunnel (encrypted)
685
+ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
686
+ β”‚ Your Phone / Laptop β”‚
687
+ β”‚ (AgentVibes Receiver) β”‚
688
+ β”‚ β”œβ”€ Receives audio stream β”‚
689
+ β”‚ β”œβ”€ Plays on speakers β”‚
690
+ β”‚ └─ You hear OpenClaw speak β”‚
691
+ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
692
+ ```
693
+
694
+ **Example Flow:**
695
+ ```
696
+ WhatsApp: "Tell me a joke"
697
+ ↓
698
+ Mac mini: Processes with Claude
699
+ ↓
700
+ Generates TTS: "Why did the AI... [audio file]"
701
+ ↓ SSH tunnel
702
+ Your Phone: Plays audio πŸ”Š
703
+ ↓
704
+ You hear: "Why did the AI go to school?"
705
+ ```
706
+
707
+ **AgentVibes Receiver Features:**
708
+ - **One-Time Setup** - Pair with server via SSH key
709
+ - **Automatic Connection** - Reconnects if interrupted
710
+ - **Real-Time Streaming** - Low latency audio playback
711
+ - **SSH Encryption** - Secure tunnel for audio
712
+ - **Tailscale Support** - Easy VPN for remote servers
713
+ - **Multiple Servers** - Connect to different OpenClaw instances
714
+ - **Voice Control** - Full voice selection on the server side
715
+ - **Cache Metrics** - Monitor audio generation and cleanup
716
+
717
+ **OpenClaw Skill Integration:**
718
+ - Installed automatically with AgentVibes on OpenClaw server
719
+ - Full feature access:
720
+ - Voice selection (50+ voices)
721
+ - Personality/sentiment (sarcastic, flirty, etc.)
722
+ - Audio effects (reverb, echo, pitch)
723
+ - Speech speed (0.5x - 3.0x)
724
+ - Language translation (speak in different languages)
725
+ - Real-time cache tracking
726
+ - Automatic cleanup of old audio files
727
+
728
+ #### 🧠 Smart Installer Enhancements
729
+
730
+ **Voiceless Environment Detection:**
731
+ - Auto-detects if GUI audio is unavailable (headless servers, containers)
732
+ - Offers SSH-remote TTS as alternative for voiceless environments
733
+ - Prevents installation of unnecessary audio dependencies
734
+
735
+ **Personality Injection (BMAD):**
736
+ - Interactive prompt during install for BMAD users
737
+ - Optional TTS personality configuration
738
+ - Sentiment/personality selection built into setup flow
739
+ - Skipped for non-BMAD environments
740
+
741
+ **Provider Auto-Selection:**
742
+ - Intelligent detection of available providers:
743
+ - macOS Say (macOS systems)
744
+ - Piper TTS (all systems)
745
+ - SSH-remote (if SSH available)
746
+ - Termux-ssh (Android/Termux)
747
+ - Shows only relevant providers in installation
748
+
749
+ **Better UX:**
750
+ - Clear descriptions of each provider
751
+ - Setup URLs for complex providers (Tailscale)
752
+ - Comprehensive help text for each option
753
+ - Git log integration for recent changes
754
+
755
+ #### πŸ“Š Real-Time TTS Cache Tracking & Intelligent Auto-Cleanup
756
+
757
+ **Why Cache Management Matters:**
758
+ - TTS audio files accumulate quickly
759
+ - Server deployments can run out of disk space silently
760
+ - Users have no visibility into cache size or cleanup status
761
+ - Manual cleanup is inconvenient and error-prone
762
+
763
+ **Cache Display on Every Output:**
764
+ Every time you generate TTS, you see real-time cache metrics:
765
+ ```
766
+ πŸ’Ύ Saved to: /home/user/.claude/audio/tts-1770274925.wav πŸ“¦ 28 20.9MB 🧹[15mb]
767
+ ```
768
+
769
+ What you see:
770
+ - πŸ’Ύ **Full path** - Clickable file for replay or sharing
771
+ - πŸ“¦ **28** - File count in cache
772
+ - **20.9MB** - Total cache size (color-coded):
773
+ - 🟒 Green: <500MB
774
+ - 🟑 Yellow: 500MB-3GB
775
+ - πŸ”΄ Red: >3GB
776
+ - 🧹 **[15mb]** - Auto-cleanup threshold
777
+
778
+ **Intelligent Size-Based Auto-Cleanup:**
779
+ - Deletes oldest files when cache exceeds threshold (default: 15MB)
780
+ - Silent operation (no blocking prompts)
781
+ - Write-lock protection prevents conflicts with TTS generation
782
+ - Respects active TTS (won't delete while generating)
783
+
784
+ **Configuration:**
785
+ ```bash
786
+ # Per-project threshold override
787
+ echo "50" > .claude/tts-auto-clean-threshold.txt # 50MB limit
788
+
789
+ # Or disable cleanup
790
+ echo "0" > .claude/tts-auto-clean-threshold.txt # Disable
791
+ ```
792
+
793
+ **Manual Cleanup:**
794
+ ```bash
795
+ # Non-interactive cleanup
796
+ /agent-vibes:clean
797
+
798
+ # Or programmatically via MCP
799
+ await agent_vibes.clean_audio_cache()
800
+ ```
801
+
802
+ #### 🎡 TTS Queue Management
803
+
804
+ **Overlap Prevention:**
805
+ - Centralized queue system for TTS operations
806
+ - Prevents simultaneous audio playback
807
+ - Critical for Clawdbot multi-agent scenarios
808
+ - Atomic queue operations ensure consistency
809
+
810
+ **Queue Integration:**
811
+ - Automatic in OpenClaw Receiver
812
+ - Optional in standalone environments
813
+ - Fallback to sequential playback
814
+
815
+ #### βš™οΈ Audio Effects Across All Providers
816
+
817
+ **Effects Support:**
818
+ - Reverb, echo, pitch, EQ available
819
+ - SSH-remote provider: Full effects support
820
+ - Termux-ssh provider: Full effects support
821
+ - All local providers: Unchanged effects behavior
822
+
823
+ **Configuration:**
824
+ - Per-session override via environment variables
825
+ - Project-local settings via config files
826
+ - Persistent across TTS operations
827
+
828
+ #### πŸ“ Comprehensive Uninstall Command
829
+
830
+ **`/agent-vibes:uninstall` Skill:**
831
+ - Complete removal of AgentVibes and dependencies
832
+ - Interactive prompts for user confirmation
833
+ - Option to preserve configuration
834
+ - Detailed removal logs
835
+ - Full documentation included
836
+
837
+ ### πŸ› Bug Fixes
838
+
839
+ - **TTS Overlap** - Fixed audio overlapping via queue management
840
+ - **Termux Audio** - Proper detection and use of termux-media-player
841
+ - **SSH Detection** - Improved SSH environment detection logic
842
+ - **Race Conditions** - Write-lock mechanism prevents cleanup conflicts
843
+ - **Temp Directory** - Proper Termux temp directory handling
844
+ - **Color Codes** - Fixed GOLD color (256-color \033[38;5;226m)
845
+ - **Stat Compatibility** - BSD/GNU stat detection with proper output suppression
846
+ - **Syntax Validation** - Fixed installer.js syntax errors
847
+ - **Coverage Testing** - Proper coverage file generation for CI/CD
848
+
849
+ ### πŸ”’ Security & Quality
850
+
851
+ - **No Hardcoded Credentials** - All secure operations use environment variables
852
+ - **SSH Safety** - Secure PulseAudio tunnel authentication
853
+ - **Atomic Operations** - Queue and receiver use atomic file operations
854
+ - **Input Validation** - All external inputs validated
855
+ - **Pre-existing Limitations** - TTS scripts lack `set -euo pipefail` (pre-existing)
856
+ - **Sonar Compliance** - Security hotspots resolved, quality gates passing
857
+ - **Test Coverage** - 213 BATS tests + 47 Node unit tests
858
+
859
+ ### βœ… Testing & Validation
860
+
861
+ - **213 BATS Tests** - Core functionality validation
862
+ - **47 Node Tests** - JavaScript/installer validation
863
+ - **Cross-Platform** - Piper, macOS, SSH-remote, Termux-ssh
864
+ - **Environment Tests** - Voiceless, GUI, SSH, Termux detection
865
+ - **Audio Effects** - All providers tested
866
+ - **Backwards Compatible** - No breaking changes to existing code
867
+
868
+ ---
869
+
870
+ ## πŸ“¦ v3.2.0 - Clawdbot Integration: AI Assistants on Any Messenger
871
+
872
+ **Release Date:** January 27, 2026
873
+
874
+ ### 🎯 Why v3.2.0?
875
+
876
+ This minor release adds **native Clawdbot integration** to AgentVibes, bringing professional TTS to the revolutionary AI assistant you can access via any instant messenger. Clawdbot connects Claude AI to WhatsApp, Telegram, Discord, and moreβ€”and now with AgentVibes, your Clawdbot can speak with 50+ professional voices in 30+ languages. This release also includes SonarCloud quality gate improvements and CI/CD workflow enhancements.
877
+
878
+ ### πŸ€– AI Summary
879
+
880
+ AgentVibes v3.2.0 introduces seamless integration with Clawdbot, the revolutionary AI assistant accessible via any instant messenger. With this release, Clawdbot users get professional TTS with 50+ voices, remote SSH audio support for server deployments, and zero-configuration setupβ€”just install AgentVibes and the Clawdbot skill is ready. The release also includes quality improvements: SonarCloud workflow fixes, enhanced documentation for disabling quality gate checks, and improved test coverage validation.
881
+
882
+ **Key Highlights:**
883
+ - πŸ€– **Clawdbot Integration** - Native TTS support for Clawdbot AI assistant framework
884
+ - πŸ’¬ **Messenger Platforms** - Works with WhatsApp, Telegram, Discord via Clawdbot
885
+ - πŸ”Š **Remote SSH Audio** - Perfect for Clawdbot on remote servers with PulseAudio tunneling
886
+ - πŸ“¦ **Simple Install** - Just `npx agentvibes install` and it works
887
+ - πŸ›‘οΈ **SonarCloud Fixes** - Quality gate workflow improvements and documentation
888
+ - βœ… **Full Test Coverage** - All 213 BATS + 47 Node tests passing
889
+
890
+ ### ✨ New Features
891
+
892
+ **Clawdbot Skill (`.clawdbot/`):**
893
+ - New `.clawdbot/` directory with skill integration files
894
+ - `README.md` - Clawdbot integration overview and setup guide
895
+ - `skill/SKILL.md` - Comprehensive skill documentation with voice selection, background music, effects, personalities, and remote SSH audio setup
896
+ - Automatically distributed via npm package
897
+ - Zero-configuration when AgentVibes is installed
898
+
899
+ **README Updates:**
900
+ - Added "πŸ€– Clawdbot Integration" section with full documentation
901
+ - Updated header to include Clawdbot alongside Claude Code, Claude Desktop, and Warp Terminal
902
+ - Added Clawdbot to Quick Links table
903
+ - Clawdbot description: "A revolutionary AI assistant you can access via any instant messenger"
904
+ - Website link: https://clawd.bot
905
+
906
+ **package.json Updates:**
907
+ - Added `.clawdbot/` to npm files array for distribution
908
+ - Added `clawdbot` to keywords for npm discoverability
909
+ - Updated description to mention Clawdbot support
910
+
911
+ ### πŸ› Bug Fixes
912
+
913
+ - **SonarCloud Quality Gate** - Disabled quality gate status reporting to GitHub to prevent false CI failures
914
+ - **Coverage File Generation** - Ensured coverage file is generated before SonarCloud scan
915
+ - **CLI Test Coverage** - Added CLI tests and excluded CLI entry point from coverage requirements
916
+ - **macOS Runner** - Removed macos-15-large runner to avoid GitHub billing limits
917
+ - **Piper Voice Test** - Updated installation test to match current voice list
918
+
919
+ ### πŸ“š Documentation
920
+
921
+ - Added step-by-step SonarCloud dashboard configuration guide
922
+ - Added guide to disable SonarCloud GitHub App checks
923
+ - Comprehensive Clawdbot integration documentation with SSH audio examples
924
+
925
+ ### πŸ”’ Security & Quality
926
+
927
+ - βœ… All Sonar quality gates validated
928
+ - βœ… No hardcoded credentials in changes
929
+ - βœ… New Clawdbot files are documentation only (no executable code)
930
+ - βœ… All 213 BATS + 47 Node tests passing
931
+
932
+ ### πŸ“Š Changes Summary
933
+
934
+ - **Files Added:** 2 (`.clawdbot/README.md`, `.clawdbot/skill/SKILL.md`)
935
+ - **Files Modified:** 2 (`README.md`, `package.json`)
936
+ - **Commits Since v3.1.0:** 11 (5 fixes, 4 docs, 1 test, 1 debug)
937
+
938
+ ### 🎯 User Impact
939
+
940
+ **For Clawdbot Users:**
941
+ - Professional TTS with 50+ voices in 30+ languages
942
+ - Works on remote servers with SSH audio tunneling
943
+ - Zero API costsβ€”Piper TTS is free and offline
944
+ - Automatic integration when AgentVibes is installed
945
+
946
+ **For Existing Users:**
947
+ - Zero breaking changes
948
+ - All existing features work exactly the same
949
+ - Clawdbot support is additive
950
+
951
+ ### πŸš€ Migration Notes
952
+
953
+ No migration required! This is a fully backward-compatible minor release.
954
+
955
+ **To Use with Clawdbot:**
956
+ 1. Install: `npx agentvibes install`
957
+ 2. Speak: `npx agentvibes speak "Hello!"`
958
+
959
+ ### πŸ“¦ Full Changelog
960
+
961
+ **Feature Commits:**
962
+ - `(pending)` feat: Add Clawdbot integration
963
+
964
+ **Bug Fix Commits:**
965
+ - `5cd97d52` fix: Disable SonarCloud quality gate status reporting to GitHub
966
+ - `12f822e6` fix: Disable quality gate failure in SonarCloud workflow
967
+ - `0d26ccc2` fix: Ensure coverage file is generated before SonarCloud scan
968
+ - `c2465508` fix: Add CLI tests and exclude CLI entry point from coverage
969
+ - `c673afe1` fix: Remove macos-15-large runner to avoid GitHub billing limits
970
+ - `92271732` fix: Update Piper installation test to match current voice list
971
+
972
+ **Documentation Commits:**
973
+ - `f72dd977` docs: Add guide to disable SonarCloud GitHub App checks
974
+ - `6587519b` docs: Add step-by-step SonarCloud dashboard configuration guide
975
+ - `ba765f50` docs: Add SonarCloud quality gate configuration guidance
976
+
977
+ **Test Commits:**
978
+ - `47f08a79` test: Trigger workflow to verify SonarCloud quality gate fix
979
+
980
+ **Debug Commits:**
981
+ - `84945d25` debug: Add coverage file verification to SonarCloud workflow
982
+
983
+ ---
984
+
985
+ ## πŸ“¦ v3.1.0 - Android Native Support: Run Claude Code on Your Phone
986
+
987
+ **Release Date:** January 22, 2026
988
+
989
+ ### 🎯 Why v3.1.0?
990
+
991
+ This minor release brings **native Android support** to AgentVibes, enabling developers to run Claude Code with professional TTS voices directly on Android devices via Termux. No SSH required, no remote server neededβ€”just install Termux on your Android phone or tablet and get the full AgentVibes experience locally. This complements the v3.0.0 termux-ssh provider by offering a **complete mobile development solution**: use native Termux for local Android development, or use termux-ssh when connecting to remote servers.
992
+
993
+ ### πŸ€– AI Summary
994
+
995
+ AgentVibes v3.1.0 introduces native Android/Termux support, enabling developers to run Claude Code with professional TTS voices directly on their Android devices. Through automatic detection and a specialized installer, AgentVibes now runs Piper TTS via proot-distro with Debian (solving Android's glibc compatibility issues), uses termux-media-player for audio playback, and includes comprehensive Android-specific documentation. Perfect for developers who want to code on-the-go with their Android phone or tablet using the full power of Claude Code and AgentVibes.
996
+
997
+ **Key Highlights:**
998
+ - πŸ€– **Native Android Support** - Run Claude Code with TTS directly on Android devices via Termux
999
+ - πŸ“¦ **Automatic Termux Detection** - AgentVibes auto-detects Android and runs specialized installation
1000
+ - 🎯 **Proot-Distro Integration** - Solves glibc compatibility with proot Debian environment
1001
+ - πŸ”Š **Android Audio Playback** - Uses termux-media-player for native Android audio routing
1002
+ - πŸ“š **Comprehensive Documentation** - Complete Android setup guide with troubleshooting and F-Droid instructions
1003
+ - βœ… **Full Test Coverage** - All 213 BATS + 38 Node tests passing with Android compatibility
1004
+
1005
+ ### ✨ New Features
1006
+
1007
+ **Termux Installer (`.claude/hooks/termux-installer.sh`):**
1008
+ - New 224-line installer specifically for Android/Termux environments
1009
+ - Automatically installs proot-distro with Debian (for glibc compatibility)
1010
+ - Downloads and configures Piper TTS binary in proot environment
1011
+ - Creates `/usr/bin/piper` wrapper that routes through proot
1012
+ - Installs audio dependencies: ffmpeg, sox, bc, termux-api
1013
+ - Interactive voice selection with 50+ language options
1014
+ - Validates Termux environment before proceeding
1015
+
1016
+ **Termux Detection (`src/installer.js`):**
1017
+ - New `isTermux()` function checks for `/data/data/com.termux` directory
1018
+ - New `detectAndNotifyTermux()` displays Android detection messages
1019
+ - Auto-configures piper provider with Termux-compatible voice
1020
+ - Shows Termux-specific installation instructions
1021
+ - Piper installer automatically redirects to termux-installer.sh on Android
1022
+
1023
+ **Audio Processor Updates (`.claude/hooks/audio-processor.sh`):**
1024
+ - Detects Termux environment for temp directory selection
1025
+ - Uses `${PREFIX}/tmp` on Termux, `/tmp` on standard systems
1026
+ - Ensures audio effects work correctly on Android
1027
+ - Cross-platform compatibility maintained
1028
+
1029
+ **Piper Installer Updates (`.claude/hooks/piper-installer.sh`):**
1030
+ - Auto-detects Termux and redirects to specialized installer
1031
+ - Shows clear message when routing to Termux-specific setup
1032
+
1033
+ **Android Audio Playback (`.claude/hooks/play-tts-piper.sh`):**
1034
+ - Detects Android/Termux environment
1035
+ - Uses `termux-media-player` instead of `paplay` on Android
1036
+ - Audio routes through Android's native media system
1037
+
1038
+ ### πŸ“š Documentation
1039
+
1040
+ **New Android Setup Section (`README.md`):**
1041
+ - Added "πŸ€– Android / Termux" section to System Requirements
1042
+ - Complete 3-step installation guide for Android devices
1043
+ - Explanation of why Termux needs special handling (bionic vs glibc)
1044
+ - Requirements: Termux app from F-Droid, Termux:API, Android 7.0+
1045
+ - Audio playback architecture explanation
1046
+ - Setup verification commands
1047
+ - Troubleshooting table for common issues
1048
+ - Clear explanation of why F-Droid version is required (not Google Play)
1049
+ - Updated Quick Links table with direct link to Android setup
1050
+
1051
+ ### πŸ› Bug Fixes
1052
+
1053
+ - **Test #90 Fix** - Added termux-ssh provider to test cleanup list for "no providers found" edge case
1054
+ - **Temp Directory Detection** - Fixed audio-processor.sh defaulting to Termux paths on non-Termux systems
1055
+ - **Sonar Compliance** - Added `set -euo pipefail` strict mode to termux-installer.sh for security
1056
+
1057
+ ### πŸ”’ Security & Quality
1058
+
1059
+ - βœ… All Sonar quality gates validated
1060
+ - βœ… Strict mode (`set -euo pipefail`) on all new bash scripts
1061
+ - βœ… No hardcoded credentials
1062
+ - βœ… Proper variable quoting and input validation
1063
+ - βœ… Cross-platform temp directory handling
1064
+ - βœ… All 213 BATS + 38 Node tests passing
1065
+
1066
+ ### πŸ“Š Changes Summary
1067
+
1068
+ - **Files Modified:** 7
1069
+ - **Lines Added:** +391
1070
+ - **Lines Removed:** -8
1071
+ - **New Files:** 1 (termux-installer.sh)
1072
+ - **Commits:** 8 (5 fixes, 1 feature, 1 docs, 1 merge)
1073
+
1074
+ ### 🎯 User Impact
1075
+
1076
+ **For Android Users:**
1077
+ - Can now run Claude Code directly on Android phones/tablets
1078
+ - Full TTS support with 50+ voices and languages
1079
+ - No remote server required for basic usage
1080
+ - Works offline after initial voice downloads
1081
+
1082
+ **For Developers:**
1083
+ - Complete mobile development solution (native + SSH)
1084
+ - Native Termux for local Android development
1085
+ - Termux-SSH provider for remote server connections
1086
+ - Seamless integration with existing AgentVibes workflows
1087
+
1088
+ **For Existing Users:**
1089
+ - Zero breaking changes
1090
+ - All existing features work exactly the same
1091
+ - New Android support is opt-in via Termux installation
1092
+
1093
+ ### πŸš€ Migration Notes
1094
+
1095
+ No migration required! This is a fully backward-compatible minor release.
1096
+
1097
+ **To Try Android Support:**
1098
+ 1. Install [Termux from F-Droid](https://f-droid.org/en/packages/com.termux/)
1099
+ 2. Install [Termux:API](https://f-droid.org/en/packages/com.termux.api/)
1100
+ 3. In Termux: `pkg install nodejs-lts`
1101
+ 4. Run: `npx agentvibes install`
1102
+
1103
+ AgentVibes will auto-detect Termux and run the specialized installer.
1104
+
1105
+ ### πŸ“¦ Full Changelog
1106
+
1107
+ **Feature Commits:**
1108
+ - `e9d4cf95` feat: Add Android/Termux support for Piper TTS
1109
+
1110
+ **Bug Fix Commits:**
1111
+ - `aa4d3cdd` fix: Add termux-ssh provider to test #90 cleanup list
1112
+ - `c1b00c6d` fix: Use termux-media-player for audio playback on Android
1113
+ - `f96ab89a` fix: Properly detect Termux environment for temp directory
1114
+ - `e2efeb06` fix: Add strict mode to termux-installer.sh for Sonar compliance
1115
+
1116
+ **Documentation Commits:**
1117
+ - `701a9412` docs: Add comprehensive Android/Termux setup section to README
1118
+
1119
+ **Merge Commits:**
1120
+ - `a5d3f546` Merge feature/android-termux into master
1121
+ - `95f04e70` Merge origin/master into feature/pulseaudio-reverse-tunnel
1122
+
1123
+ ---
1124
+
1125
+ ## πŸ“¦ v3.0.0 - Cross-Platform Remote Audio: Termux SSH Provider
1126
+
1127
+ **Release Date:** January 8, 2026
1128
+
1129
+ ### 🎯 Why v3.0.0?
1130
+
1131
+ This major release marks a significant milestone in AgentVibes' evolution, introducing **mobile-first interactive AI conversations**. The termux-ssh provider enables a revolutionary workflow: **have fully interactive, hands-free conversations with Claude Code using just your mobile device**β€”whether you're coding locally on your laptop with audio routed to your phone, or working on remote servers from anywhere in the world. This architectural breakthrough represents a new paradigm: **"Code with your hands, converse with your voice."**
1132
+
1133
+ ### πŸ€– AI Summary
1134
+
1135
+ AgentVibes v3.0.0 introduces the termux-ssh TTS provider, enabling **true mobile-first interactive conversations with Claude Code**. Route TTS audio to your Android device via SSHβ€”whether coding locally on your laptop or on remote serversβ€”and have hands-free, voice-driven conversations with Claude using just your phone. This major release includes comprehensive Tailscale VPN setup documentation for internet-wide access, full MCP server integration, and transforms how developers interact with AI assistants. Perfect for developers who want to experience AI conversations naturally through their mobile device while their hands stay on the keyboard.
1136
+
1137
+ **Key Highlights:**
1138
+ - πŸ“± **Mobile-First AI Conversations** - Have fully interactive, hands-free conversations with Claude Code using just your Android device
1139
+ - πŸ’» **Local + Remote Development** - Works for both local coding (laptop β†’ phone audio) and remote server development
1140
+ - 🌐 **Tailscale Integration** - Comprehensive guide for internet-wide device access without port forwarding or firewall configuration
1141
+ - πŸ”§ **Enhanced Installer** - Interactive SSH host configuration with validation and clear use-case guidance
1142
+ - 🎯 **Full MCP Compatibility** - Complete integration with all MCP commands and workflows
1143
+ - πŸ›‘οΈ **Quality Gates Integration** - Automated security validation in release process
1144
+
1145
+ ### πŸŽ₯ Demo Video
1146
+
1147
+ **Watch it in action:** [Mobile-First AI Conversations with Claude Code](https://youtu.be/ngLiA_KQtTA?si=wTwS4CJidIxWqLIP)
1148
+
1149
+ See the termux-ssh provider in actionβ€”fully interactive, hands-free conversations with Claude Code using just your Android device.
1150
+
1151
+ ### ✨ New Features
1152
+
1153
+ **Termux SSH TTS Provider (`.claude/hooks/play-tts-termux-ssh.sh`):**
1154
+ - New TTS provider for Android via SSH connection
1155
+ - Routes text to `termux-tts-speak` on remote Android device
1156
+ - Configuration priority: env var β†’ project β†’ global
1157
+ - Secure quote escaping for safe text transmission
1158
+ - 196 lines of fully documented code
1159
+
1160
+ **Installer Updates (`src/installer.js`):**
1161
+ - Added termux-ssh to provider selection menu
1162
+ - Interactive SSH host alias configuration with validation
1163
+ - Saves host alias to `.claude/termux-ssh-host.txt`
1164
+ - Clear use case description: "Only choose if your project is on a remote server and you want audio sent to your Android device"
1165
+ - Documentation link to TERMUX_SETUP.md
1166
+
1167
+ **TTS Router Updates (`.claude/hooks/play-tts.sh`):**
1168
+ - Added termux-ssh provider routing in two locations
1169
+ - Full integration with existing provider detection
1170
+ - Supports mixed-provider mode (Piper + Termux)
1171
+
1172
+ **MCP Server Integration (`mcp-server/server.py`):**