agentvibes 3.0.0 β 3.1.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.
- package/.claude/config/tts-speech-rate.txt +1 -0
- package/.claude/github-star-reminder.txt +1 -1
- package/.claude/hooks/audio-processor.sh +12 -3
- package/.claude/hooks/piper-installer.sh +17 -0
- package/.claude/hooks/play-tts-piper.sh +4 -0
- package/.claude/hooks/termux-installer.sh +224 -0
- package/README.md +89 -9
- package/RELEASE_NOTES.md +140 -249
- package/package.json +1 -1
- package/src/installer.js +64 -16
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1.3
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
20260122
|
|
@@ -306,13 +306,22 @@ main() {
|
|
|
306
306
|
IFS='|' read -r _ sox_effects background_file bg_volume <<< "$config"
|
|
307
307
|
|
|
308
308
|
# Temporary files (using explicit paths to avoid unbound variable issues)
|
|
309
|
+
# Use Termux-compatible temp directory if on Termux, otherwise standard /tmp
|
|
310
|
+
local TEMP_DIR
|
|
311
|
+
if [[ -d "/data/data/com.termux" ]]; then
|
|
312
|
+
# On Termux
|
|
313
|
+
TEMP_DIR="${TMPDIR:-${PREFIX}/tmp}"
|
|
314
|
+
else
|
|
315
|
+
# Standard Linux/macOS
|
|
316
|
+
TEMP_DIR="${TMPDIR:-/tmp}"
|
|
317
|
+
fi
|
|
309
318
|
local temp_effects
|
|
310
319
|
local temp_final
|
|
311
|
-
temp_effects="/
|
|
312
|
-
temp_final="/
|
|
320
|
+
temp_effects="$TEMP_DIR/agentvibes-effects-$$.wav"
|
|
321
|
+
temp_final="$TEMP_DIR/agentvibes-final-$$.wav"
|
|
313
322
|
|
|
314
323
|
# Clean up on exit using explicit paths
|
|
315
|
-
trap 'rm -f /
|
|
324
|
+
trap 'rm -f "'"$TEMP_DIR"'/agentvibes-effects-'"$$"'.wav" "'"$TEMP_DIR"'/agentvibes-final-'"$$"'.wav"' EXIT
|
|
316
325
|
|
|
317
326
|
# Step 1: Apply sox effects
|
|
318
327
|
if [[ -n "$sox_effects" ]]; then
|
|
@@ -58,6 +58,23 @@ echo ""
|
|
|
58
58
|
PLATFORM="$(uname -s)"
|
|
59
59
|
ARCH="$(uname -m)"
|
|
60
60
|
|
|
61
|
+
# Check if running on Termux/Android first
|
|
62
|
+
if [[ -d "/data/data/com.termux" ]]; then
|
|
63
|
+
echo "π± Detected Termux/Android"
|
|
64
|
+
echo ""
|
|
65
|
+
echo " Termux requires a special installation process using proot-distro."
|
|
66
|
+
echo " Running Termux-specific installer..."
|
|
67
|
+
echo ""
|
|
68
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
69
|
+
if [[ -f "$SCRIPT_DIR/termux-installer.sh" ]]; then
|
|
70
|
+
exec "$SCRIPT_DIR/termux-installer.sh" "$@"
|
|
71
|
+
else
|
|
72
|
+
echo "β Error: termux-installer.sh not found"
|
|
73
|
+
echo " Please download it from the AgentVibes repository"
|
|
74
|
+
exit 1
|
|
75
|
+
fi
|
|
76
|
+
fi
|
|
77
|
+
|
|
61
78
|
# Check if running on macOS, WSL, or Linux
|
|
62
79
|
if [[ "$PLATFORM" == "Darwin" ]]; then
|
|
63
80
|
IS_MACOS=true
|
|
@@ -400,6 +400,10 @@ if [[ "${AGENTVIBES_TEST_MODE:-false}" != "true" ]] && [[ "${AGENTVIBES_NO_PLAYB
|
|
|
400
400
|
# macOS: Use afplay (native macOS audio player)
|
|
401
401
|
afplay "$TEMP_FILE" >/dev/null 2>&1 &
|
|
402
402
|
PLAYER_PID=$!
|
|
403
|
+
elif [[ -n "${TERMUX_VERSION:-}" ]] || [[ -d "/data/data/com.termux" ]]; then
|
|
404
|
+
# Android/Termux: Use termux-media-player
|
|
405
|
+
termux-media-player play "$TEMP_FILE" >/dev/null 2>&1 &
|
|
406
|
+
PLAYER_PID=$!
|
|
403
407
|
else
|
|
404
408
|
# Linux/WSL: Prefer paplay (PulseAudio) for best WSL audio quality
|
|
405
409
|
(paplay "$TEMP_FILE" || mpv "$TEMP_FILE" || aplay "$TEMP_FILE") >/dev/null 2>&1 &
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
#
|
|
3
|
+
# AgentVibes Termux/Android Installer
|
|
4
|
+
# Installs Piper TTS and dependencies for Android/Termux
|
|
5
|
+
#
|
|
6
|
+
# Usage: ./termux-installer.sh [--non-interactive]
|
|
7
|
+
#
|
|
8
|
+
# Requirements:
|
|
9
|
+
# - Termux app installed
|
|
10
|
+
# - termux-api package (for audio playback)
|
|
11
|
+
#
|
|
12
|
+
|
|
13
|
+
set -euo pipefail
|
|
14
|
+
|
|
15
|
+
# Colors
|
|
16
|
+
RED='\033[0;31m'
|
|
17
|
+
GREEN='\033[0;32m'
|
|
18
|
+
YELLOW='\033[1;33m'
|
|
19
|
+
BLUE='\033[0;34m'
|
|
20
|
+
NC='\033[0m' # No Color
|
|
21
|
+
|
|
22
|
+
# Parse arguments
|
|
23
|
+
NON_INTERACTIVE=false
|
|
24
|
+
if [[ "$1" == "--non-interactive" ]]; then
|
|
25
|
+
NON_INTERACTIVE=true
|
|
26
|
+
fi
|
|
27
|
+
|
|
28
|
+
echo -e "${BLUE}"
|
|
29
|
+
echo "ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ"
|
|
30
|
+
echo "β AgentVibes Termux/Android Installer β"
|
|
31
|
+
echo "β TTS with Personality for AI Assistants β"
|
|
32
|
+
echo "ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ"
|
|
33
|
+
echo -e "${NC}"
|
|
34
|
+
|
|
35
|
+
# Detect if running on Termux
|
|
36
|
+
if [[ ! -d "/data/data/com.termux" ]]; then
|
|
37
|
+
echo -e "${RED}Error: This installer is for Termux on Android only${NC}"
|
|
38
|
+
echo "For other platforms, use the standard installer."
|
|
39
|
+
exit 1
|
|
40
|
+
fi
|
|
41
|
+
|
|
42
|
+
echo -e "${GREEN}β Detected Termux environment${NC}"
|
|
43
|
+
echo ""
|
|
44
|
+
|
|
45
|
+
# Step 1: Update packages and install dependencies
|
|
46
|
+
echo -e "${BLUE}[1/6] Installing system dependencies...${NC}"
|
|
47
|
+
|
|
48
|
+
pkg update -y 2>/dev/null || true
|
|
49
|
+
|
|
50
|
+
DEPS="proot-distro ffmpeg sox bc termux-api curl"
|
|
51
|
+
for dep in $DEPS; do
|
|
52
|
+
if ! command -v "$dep" &> /dev/null && ! pkg list-installed 2>/dev/null | grep -q "^$dep/"; then
|
|
53
|
+
echo " Installing $dep..."
|
|
54
|
+
pkg install -y "$dep" 2>/dev/null || echo " Warning: Failed to install $dep"
|
|
55
|
+
else
|
|
56
|
+
echo -e " ${GREEN}β${NC} $dep already installed"
|
|
57
|
+
fi
|
|
58
|
+
done
|
|
59
|
+
|
|
60
|
+
echo ""
|
|
61
|
+
|
|
62
|
+
# Step 2: Install proot-distro Debian
|
|
63
|
+
echo -e "${BLUE}[2/6] Setting up proot-distro Debian...${NC}"
|
|
64
|
+
|
|
65
|
+
if proot-distro list 2>/dev/null | grep -q "debian.*installed"; then
|
|
66
|
+
echo -e " ${GREEN}β${NC} Debian already installed in proot-distro"
|
|
67
|
+
else
|
|
68
|
+
echo " Installing Debian (this may take a few minutes)..."
|
|
69
|
+
proot-distro install debian 2>/dev/null || {
|
|
70
|
+
# Check if it's already installed despite error
|
|
71
|
+
if proot-distro list 2>/dev/null | grep -q "debian"; then
|
|
72
|
+
echo -e " ${GREEN}β${NC} Debian is available"
|
|
73
|
+
else
|
|
74
|
+
echo -e "${RED} Error: Failed to install Debian${NC}"
|
|
75
|
+
exit 1
|
|
76
|
+
fi
|
|
77
|
+
}
|
|
78
|
+
fi
|
|
79
|
+
|
|
80
|
+
echo ""
|
|
81
|
+
|
|
82
|
+
# Step 3: Download Piper binary inside Debian
|
|
83
|
+
echo -e "${BLUE}[3/6] Installing Piper TTS in Debian proot...${NC}"
|
|
84
|
+
|
|
85
|
+
PIPER_CHECK=$(proot-distro login debian -- ls /root/piper/piper 2>/dev/null || echo "not found")
|
|
86
|
+
if [[ "$PIPER_CHECK" != "not found" ]]; then
|
|
87
|
+
echo -e " ${GREEN}β${NC} Piper binary already installed"
|
|
88
|
+
else
|
|
89
|
+
echo " Downloading Piper TTS binary..."
|
|
90
|
+
proot-distro login debian -- bash -c "
|
|
91
|
+
mkdir -p /root/piper /root/piper-voices
|
|
92
|
+
cd /root
|
|
93
|
+
curl -L -o piper.tar.gz 'https://github.com/rhasspy/piper/releases/download/2023.11.14-2/piper_linux_aarch64.tar.gz'
|
|
94
|
+
tar -xzf piper.tar.gz
|
|
95
|
+
rm piper.tar.gz
|
|
96
|
+
echo 'Piper installed successfully'
|
|
97
|
+
" 2>/dev/null || echo -e "${YELLOW} Warning: Piper download may have issues${NC}"
|
|
98
|
+
fi
|
|
99
|
+
|
|
100
|
+
# Verify piper works
|
|
101
|
+
PIPER_TEST=$(proot-distro login debian -- /root/piper/piper --help 2>/dev/null | head -1 || echo "failed")
|
|
102
|
+
if [[ "$PIPER_TEST" == *"usage"* ]]; then
|
|
103
|
+
echo -e " ${GREEN}β${NC} Piper binary verified"
|
|
104
|
+
else
|
|
105
|
+
echo -e "${YELLOW} Warning: Piper verification failed, but may still work${NC}"
|
|
106
|
+
fi
|
|
107
|
+
|
|
108
|
+
echo ""
|
|
109
|
+
|
|
110
|
+
# Step 4: Download voice model
|
|
111
|
+
echo -e "${BLUE}[4/6] Downloading voice model...${NC}"
|
|
112
|
+
|
|
113
|
+
VOICE_MODEL="en_US-lessac-medium"
|
|
114
|
+
VOICES_DIR="$HOME/.claude/piper-voices"
|
|
115
|
+
mkdir -p "$VOICES_DIR"
|
|
116
|
+
|
|
117
|
+
if [[ -f "$VOICES_DIR/${VOICE_MODEL}.onnx" ]]; then
|
|
118
|
+
echo -e " ${GREEN}β${NC} Voice model already downloaded"
|
|
119
|
+
else
|
|
120
|
+
echo " Downloading ${VOICE_MODEL} (~63MB)..."
|
|
121
|
+
|
|
122
|
+
# Download to Termux location (accessible from both Termux and proot)
|
|
123
|
+
curl -L -o "$VOICES_DIR/${VOICE_MODEL}.onnx" \
|
|
124
|
+
"https://huggingface.co/rhasspy/piper-voices/resolve/main/en/en_US/lessac/medium/en_US-lessac-medium.onnx" \
|
|
125
|
+
2>/dev/null || echo -e "${YELLOW} Warning: Voice download may have failed${NC}"
|
|
126
|
+
|
|
127
|
+
curl -L -o "$VOICES_DIR/${VOICE_MODEL}.onnx.json" \
|
|
128
|
+
"https://huggingface.co/rhasspy/piper-voices/resolve/main/en/en_US/lessac/medium/en_US-lessac-medium.onnx.json" \
|
|
129
|
+
2>/dev/null || true
|
|
130
|
+
|
|
131
|
+
if [[ -f "$VOICES_DIR/${VOICE_MODEL}.onnx" ]]; then
|
|
132
|
+
echo -e " ${GREEN}β${NC} Voice model downloaded"
|
|
133
|
+
fi
|
|
134
|
+
fi
|
|
135
|
+
|
|
136
|
+
echo ""
|
|
137
|
+
|
|
138
|
+
# Step 5: Create piper wrapper script
|
|
139
|
+
echo -e "${BLUE}[5/6] Creating Piper wrapper for Termux...${NC}"
|
|
140
|
+
|
|
141
|
+
WRAPPER_PATH="/data/data/com.termux/files/usr/bin/piper"
|
|
142
|
+
|
|
143
|
+
cat > "$WRAPPER_PATH" << 'WRAPPER_EOF'
|
|
144
|
+
#!/bin/bash
|
|
145
|
+
#
|
|
146
|
+
# Piper TTS wrapper for Termux
|
|
147
|
+
# Runs piper through proot-distro Debian
|
|
148
|
+
#
|
|
149
|
+
|
|
150
|
+
PIPER_DIR="/root/piper"
|
|
151
|
+
|
|
152
|
+
# Build the piper command with proper quoting
|
|
153
|
+
PIPER_CMD="cd $PIPER_DIR && LD_LIBRARY_PATH=. ./piper"
|
|
154
|
+
|
|
155
|
+
# Add all arguments
|
|
156
|
+
for arg in "$@"; do
|
|
157
|
+
PIPER_CMD="$PIPER_CMD \"$arg\""
|
|
158
|
+
done
|
|
159
|
+
|
|
160
|
+
# Run piper, filtering only the proot warning
|
|
161
|
+
if [ -t 0 ]; then
|
|
162
|
+
# No stdin
|
|
163
|
+
proot-distro login debian -- bash -c "$PIPER_CMD" 2>&1 | grep -v "proot warning"
|
|
164
|
+
else
|
|
165
|
+
# With stdin - need to pass it through
|
|
166
|
+
cat | proot-distro login debian -- bash -c "$PIPER_CMD" 2>&1 | grep -v "proot warning"
|
|
167
|
+
fi
|
|
168
|
+
WRAPPER_EOF
|
|
169
|
+
|
|
170
|
+
chmod +x "$WRAPPER_PATH"
|
|
171
|
+
echo -e " ${GREEN}β${NC} Piper wrapper created at $WRAPPER_PATH"
|
|
172
|
+
|
|
173
|
+
echo ""
|
|
174
|
+
|
|
175
|
+
# Step 6: Apply Termux-specific fixes
|
|
176
|
+
echo -e "${BLUE}[6/6] Applying Termux-specific fixes...${NC}"
|
|
177
|
+
|
|
178
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
179
|
+
|
|
180
|
+
# Fix audio-processor.sh to use Termux temp directory
|
|
181
|
+
AUDIO_PROCESSOR="$SCRIPT_DIR/audio-processor.sh"
|
|
182
|
+
if [[ -f "$AUDIO_PROCESSOR" ]]; then
|
|
183
|
+
if grep -q 'temp_effects="/tmp/' "$AUDIO_PROCESSOR"; then
|
|
184
|
+
echo " Patching audio-processor.sh for Termux temp directory..."
|
|
185
|
+
sed -i 's|temp_effects="/tmp/|temp_effects="${TMPDIR:-/data/data/com.termux/files/usr/tmp}/|g' "$AUDIO_PROCESSOR"
|
|
186
|
+
sed -i 's|temp_final="/tmp/|temp_final="${TMPDIR:-/data/data/com.termux/files/usr/tmp}/|g' "$AUDIO_PROCESSOR"
|
|
187
|
+
sed -i "s|trap 'rm -f /tmp/|trap 'rm -f \"\${TMPDIR:-/data/data/com.termux/files/usr/tmp}/|g" "$AUDIO_PROCESSOR"
|
|
188
|
+
echo -e " ${GREEN}β${NC} audio-processor.sh patched"
|
|
189
|
+
else
|
|
190
|
+
echo -e " ${GREEN}β${NC} audio-processor.sh already patched"
|
|
191
|
+
fi
|
|
192
|
+
fi
|
|
193
|
+
|
|
194
|
+
# Set default voice
|
|
195
|
+
CLAUDE_DIR="$HOME/.claude"
|
|
196
|
+
mkdir -p "$CLAUDE_DIR"
|
|
197
|
+
if [[ ! -f "$CLAUDE_DIR/tts-voice.txt" ]]; then
|
|
198
|
+
echo "$VOICE_MODEL" > "$CLAUDE_DIR/tts-voice.txt"
|
|
199
|
+
echo -e " ${GREEN}β${NC} Default voice set to $VOICE_MODEL"
|
|
200
|
+
fi
|
|
201
|
+
|
|
202
|
+
# Set provider to piper
|
|
203
|
+
if [[ ! -f "$CLAUDE_DIR/tts-provider.txt" ]]; then
|
|
204
|
+
echo "piper" > "$CLAUDE_DIR/tts-provider.txt"
|
|
205
|
+
echo -e " ${GREEN}β${NC} TTS provider set to piper"
|
|
206
|
+
fi
|
|
207
|
+
|
|
208
|
+
echo ""
|
|
209
|
+
echo -e "${GREEN}ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ${NC}"
|
|
210
|
+
echo -e "${GREEN} Installation Complete!${NC}"
|
|
211
|
+
echo -e "${GREEN}ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ${NC}"
|
|
212
|
+
echo ""
|
|
213
|
+
echo " To test TTS:"
|
|
214
|
+
echo " echo 'Hello world' | piper -m ~/.claude/piper-voices/en_US-lessac-medium.onnx -f ~/test.wav"
|
|
215
|
+
echo " termux-media-player play ~/test.wav"
|
|
216
|
+
echo ""
|
|
217
|
+
echo " To enable background music:"
|
|
218
|
+
echo " .claude/hooks/background-music-manager.sh on"
|
|
219
|
+
echo ""
|
|
220
|
+
echo " Available background tracks:"
|
|
221
|
+
echo " .claude/hooks/background-music-manager.sh list"
|
|
222
|
+
echo ""
|
|
223
|
+
echo -e "${BLUE}Enjoy AgentVibes on Android! π€${NC}"
|
|
224
|
+
echo ""
|
package/README.md
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
[](https://github.com/paulpreibisch/AgentVibes/actions/workflows/publish.yml)
|
|
12
12
|
[](https://opensource.org/licenses/Apache-2.0)
|
|
13
13
|
|
|
14
|
-
**Author**: Paul Preibisch ([@997Fire](https://x.com/997Fire)) | **Version**: v3.
|
|
14
|
+
**Author**: Paul Preibisch ([@997Fire](https://x.com/997Fire)) | **Version**: v3.1.0
|
|
15
15
|
|
|
16
16
|
---
|
|
17
17
|
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
| **Install AgentVibes** (just `npx`, no git!) | [Quick Start Guide](docs/quick-start.md) |
|
|
23
23
|
| **Understand what I need** (spoiler: just Node.js!) | [Prerequisites](#-prerequisites) |
|
|
24
24
|
| **Set up on Windows (Claude Desktop)** | [Windows Setup Guide](mcp-server/WINDOWS_SETUP.md) |
|
|
25
|
+
| **Run Claude Code on Android** | [Android/Termux Setup](#-android--termux) |
|
|
25
26
|
| **Use natural language** | [MCP Setup](docs/mcp-setup.md) |
|
|
26
27
|
| **Switch voices** | [Voice Library](docs/voice-library.md) |
|
|
27
28
|
| **Learn Spanish while coding** | [Language Learning Mode](docs/language-learning-mode.md) |
|
|
@@ -115,17 +116,17 @@ All 50+ Piper voices AgentVibes provides are sourced from Hugging Face's open-so
|
|
|
115
116
|
|
|
116
117
|
## π° Latest Release
|
|
117
118
|
|
|
118
|
-
**[v3.
|
|
119
|
+
**[v3.1.0 - Android Native Support: Run Claude Code on Your Phone](https://github.com/paulpreibisch/AgentVibes/releases/tag/v3.1.0)** π€
|
|
119
120
|
|
|
120
|
-
AgentVibes v3.
|
|
121
|
+
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.
|
|
121
122
|
|
|
122
123
|
**Key Highlights:**
|
|
123
|
-
-
|
|
124
|
-
-
|
|
125
|
-
-
|
|
126
|
-
-
|
|
127
|
-
-
|
|
128
|
-
-
|
|
124
|
+
- π€ **Native Android Support** - Run Claude Code with TTS directly on Android devices via Termux
|
|
125
|
+
- π¦ **Automatic Termux Detection** - AgentVibes auto-detects Android and runs specialized installation
|
|
126
|
+
- π― **Proot-Distro Integration** - Solves glibc compatibility with proot Debian environment
|
|
127
|
+
- π **Android Audio Playback** - Uses termux-media-player for native Android audio routing
|
|
128
|
+
- π **Comprehensive Documentation** - Complete Android setup guide with troubleshooting and F-Droid instructions
|
|
129
|
+
- β
**Full Test Coverage** - All 213 BATS + 38 Node tests passing with Android compatibility
|
|
129
130
|
|
|
130
131
|
π‘ **Tip:** If `npx agentvibes` shows an older version or missing commands, clear your npm cache: `npm cache clean --force && npx agentvibes@latest --help`
|
|
131
132
|
|
|
@@ -319,6 +320,85 @@ Then follow Linux requirements above inside WSL.
|
|
|
319
320
|
- Audio routing from WSL to Windows requires PulseAudio configuration
|
|
320
321
|
- See [Windows Setup Guide](mcp-server/WINDOWS_SETUP.md) for detailed audio setup
|
|
321
322
|
|
|
323
|
+
#### π€ Android / Termux
|
|
324
|
+
|
|
325
|
+
**Running Claude Code on Your Android Using Termux**
|
|
326
|
+
|
|
327
|
+
AgentVibes fully supports Android devices through the [Termux app](https://termux.dev/). This enables you to run Claude Code with professional TTS voices directly on your Android phone or tablet!
|
|
328
|
+
|
|
329
|
+
**Quick Setup:**
|
|
330
|
+
|
|
331
|
+
```bash
|
|
332
|
+
# 1. Install Termux from F-Droid (NOT Google Play - it's outdated)
|
|
333
|
+
# Download: https://f-droid.org/en/packages/com.termux/
|
|
334
|
+
|
|
335
|
+
# 2. Install Node.js in Termux
|
|
336
|
+
pkg update && pkg upgrade
|
|
337
|
+
pkg install nodejs-lts
|
|
338
|
+
|
|
339
|
+
# 3. Install AgentVibes (auto-detects Android and runs Termux installer)
|
|
340
|
+
npx agentvibes install
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
**What Gets Installed?**
|
|
344
|
+
|
|
345
|
+
The Termux installer automatically sets up:
|
|
346
|
+
- **proot-distro** with Debian (for glibc compatibility)
|
|
347
|
+
- **Piper TTS** via proot wrapper (Android uses bionic libc, not glibc)
|
|
348
|
+
- **termux-media-player** for audio playback (`paplay` doesn't work on Android)
|
|
349
|
+
- **Audio dependencies**: ffmpeg, sox, bc for processing
|
|
350
|
+
- **termux-api** for Android-specific audio routing
|
|
351
|
+
|
|
352
|
+
**Why Termux Instead of Standard Installation?**
|
|
353
|
+
|
|
354
|
+
Android's architecture requires special handling:
|
|
355
|
+
- β Standard pip/pipx fails (missing wheels for bionic libc)
|
|
356
|
+
- β Linux binaries require glibc (Android uses bionic)
|
|
357
|
+
- β `/tmp` directory is not accessible on Android
|
|
358
|
+
- β Standard audio tools like `paplay` don't exist
|
|
359
|
+
|
|
360
|
+
β
Termux installer solves all these issues with proot-distro and Android-native audio playback!
|
|
361
|
+
|
|
362
|
+
**Requirements:**
|
|
363
|
+
- [Termux app](https://f-droid.org/en/packages/com.termux/) (from F-Droid, NOT Google Play)
|
|
364
|
+
- [Termux:API](https://f-droid.org/en/packages/com.termux.api/) (for audio playback)
|
|
365
|
+
- Android 7.0+ (recommended: Android 10+)
|
|
366
|
+
- ~500MB free storage (for Piper TTS + voice models)
|
|
367
|
+
|
|
368
|
+
**Audio Playback:**
|
|
369
|
+
- Uses `termux-media-player` instead of `paplay`
|
|
370
|
+
- Audio automatically routes through Android's media system
|
|
371
|
+
- Supports all Piper TTS voices (50+ languages)
|
|
372
|
+
|
|
373
|
+
**Verifying Your Setup:**
|
|
374
|
+
|
|
375
|
+
```bash
|
|
376
|
+
# Check Termux environment
|
|
377
|
+
echo $PREFIX # Should show /data/data/com.termux/files/usr
|
|
378
|
+
|
|
379
|
+
# Check Node.js
|
|
380
|
+
node --version # Should be β₯16.0
|
|
381
|
+
|
|
382
|
+
# Check if Piper is installed
|
|
383
|
+
which piper # Should return /data/data/com.termux/files/usr/bin/piper
|
|
384
|
+
|
|
385
|
+
# Test audio playback
|
|
386
|
+
termux-media-player play /path/to/audio.wav
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
**Troubleshooting:**
|
|
390
|
+
|
|
391
|
+
| Issue | Solution |
|
|
392
|
+
|-------|----------|
|
|
393
|
+
| "piper: not found" | Run `npx agentvibes install` - auto-detects Termux |
|
|
394
|
+
| No audio playback | Install Termux:API from F-Droid |
|
|
395
|
+
| Permission denied | Run `termux-setup-storage` to grant storage access |
|
|
396
|
+
| Slow installation | Use WiFi, not mobile data (~300MB download) |
|
|
397
|
+
|
|
398
|
+
**Why F-Droid and Not Google Play?**
|
|
399
|
+
|
|
400
|
+
Google Play's Termux version is outdated and unsupported. Always use the [F-Droid version](https://f-droid.org/en/packages/com.termux/) for the latest security updates and compatibility.
|
|
401
|
+
|
|
322
402
|
### TTS Provider Requirements
|
|
323
403
|
|
|
324
404
|
#### Piper TTS (Free, Offline)
|
package/RELEASE_NOTES.md
CHANGED
|
@@ -1,5 +1,145 @@
|
|
|
1
1
|
# AgentVibes Release Notes
|
|
2
2
|
|
|
3
|
+
## π¦ v3.1.0 - Android Native Support: Run Claude Code on Your Phone
|
|
4
|
+
|
|
5
|
+
**Release Date:** January 22, 2026
|
|
6
|
+
|
|
7
|
+
### π― Why v3.1.0?
|
|
8
|
+
|
|
9
|
+
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.
|
|
10
|
+
|
|
11
|
+
### π€ AI Summary
|
|
12
|
+
|
|
13
|
+
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.
|
|
14
|
+
|
|
15
|
+
**Key Highlights:**
|
|
16
|
+
- π€ **Native Android Support** - Run Claude Code with TTS directly on Android devices via Termux
|
|
17
|
+
- π¦ **Automatic Termux Detection** - AgentVibes auto-detects Android and runs specialized installation
|
|
18
|
+
- π― **Proot-Distro Integration** - Solves glibc compatibility with proot Debian environment
|
|
19
|
+
- π **Android Audio Playback** - Uses termux-media-player for native Android audio routing
|
|
20
|
+
- π **Comprehensive Documentation** - Complete Android setup guide with troubleshooting and F-Droid instructions
|
|
21
|
+
- β
**Full Test Coverage** - All 213 BATS + 38 Node tests passing with Android compatibility
|
|
22
|
+
|
|
23
|
+
### β¨ New Features
|
|
24
|
+
|
|
25
|
+
**Termux Installer (`.claude/hooks/termux-installer.sh`):**
|
|
26
|
+
- New 224-line installer specifically for Android/Termux environments
|
|
27
|
+
- Automatically installs proot-distro with Debian (for glibc compatibility)
|
|
28
|
+
- Downloads and configures Piper TTS binary in proot environment
|
|
29
|
+
- Creates `/usr/bin/piper` wrapper that routes through proot
|
|
30
|
+
- Installs audio dependencies: ffmpeg, sox, bc, termux-api
|
|
31
|
+
- Interactive voice selection with 50+ language options
|
|
32
|
+
- Validates Termux environment before proceeding
|
|
33
|
+
|
|
34
|
+
**Termux Detection (`src/installer.js`):**
|
|
35
|
+
- New `isTermux()` function checks for `/data/data/com.termux` directory
|
|
36
|
+
- New `detectAndNotifyTermux()` displays Android detection messages
|
|
37
|
+
- Auto-configures piper provider with Termux-compatible voice
|
|
38
|
+
- Shows Termux-specific installation instructions
|
|
39
|
+
- Piper installer automatically redirects to termux-installer.sh on Android
|
|
40
|
+
|
|
41
|
+
**Audio Processor Updates (`.claude/hooks/audio-processor.sh`):**
|
|
42
|
+
- Detects Termux environment for temp directory selection
|
|
43
|
+
- Uses `${PREFIX}/tmp` on Termux, `/tmp` on standard systems
|
|
44
|
+
- Ensures audio effects work correctly on Android
|
|
45
|
+
- Cross-platform compatibility maintained
|
|
46
|
+
|
|
47
|
+
**Piper Installer Updates (`.claude/hooks/piper-installer.sh`):**
|
|
48
|
+
- Auto-detects Termux and redirects to specialized installer
|
|
49
|
+
- Shows clear message when routing to Termux-specific setup
|
|
50
|
+
|
|
51
|
+
**Android Audio Playback (`.claude/hooks/play-tts-piper.sh`):**
|
|
52
|
+
- Detects Android/Termux environment
|
|
53
|
+
- Uses `termux-media-player` instead of `paplay` on Android
|
|
54
|
+
- Audio routes through Android's native media system
|
|
55
|
+
|
|
56
|
+
### π Documentation
|
|
57
|
+
|
|
58
|
+
**New Android Setup Section (`README.md`):**
|
|
59
|
+
- Added "π€ Android / Termux" section to System Requirements
|
|
60
|
+
- Complete 3-step installation guide for Android devices
|
|
61
|
+
- Explanation of why Termux needs special handling (bionic vs glibc)
|
|
62
|
+
- Requirements: Termux app from F-Droid, Termux:API, Android 7.0+
|
|
63
|
+
- Audio playback architecture explanation
|
|
64
|
+
- Setup verification commands
|
|
65
|
+
- Troubleshooting table for common issues
|
|
66
|
+
- Clear explanation of why F-Droid version is required (not Google Play)
|
|
67
|
+
- Updated Quick Links table with direct link to Android setup
|
|
68
|
+
|
|
69
|
+
### π Bug Fixes
|
|
70
|
+
|
|
71
|
+
- **Test #90 Fix** - Added termux-ssh provider to test cleanup list for "no providers found" edge case
|
|
72
|
+
- **Temp Directory Detection** - Fixed audio-processor.sh defaulting to Termux paths on non-Termux systems
|
|
73
|
+
- **Sonar Compliance** - Added `set -euo pipefail` strict mode to termux-installer.sh for security
|
|
74
|
+
|
|
75
|
+
### π Security & Quality
|
|
76
|
+
|
|
77
|
+
- β
All Sonar quality gates validated
|
|
78
|
+
- β
Strict mode (`set -euo pipefail`) on all new bash scripts
|
|
79
|
+
- β
No hardcoded credentials
|
|
80
|
+
- β
Proper variable quoting and input validation
|
|
81
|
+
- β
Cross-platform temp directory handling
|
|
82
|
+
- β
All 213 BATS + 38 Node tests passing
|
|
83
|
+
|
|
84
|
+
### π Changes Summary
|
|
85
|
+
|
|
86
|
+
- **Files Modified:** 7
|
|
87
|
+
- **Lines Added:** +391
|
|
88
|
+
- **Lines Removed:** -8
|
|
89
|
+
- **New Files:** 1 (termux-installer.sh)
|
|
90
|
+
- **Commits:** 8 (5 fixes, 1 feature, 1 docs, 1 merge)
|
|
91
|
+
|
|
92
|
+
### π― User Impact
|
|
93
|
+
|
|
94
|
+
**For Android Users:**
|
|
95
|
+
- Can now run Claude Code directly on Android phones/tablets
|
|
96
|
+
- Full TTS support with 50+ voices and languages
|
|
97
|
+
- No remote server required for basic usage
|
|
98
|
+
- Works offline after initial voice downloads
|
|
99
|
+
|
|
100
|
+
**For Developers:**
|
|
101
|
+
- Complete mobile development solution (native + SSH)
|
|
102
|
+
- Native Termux for local Android development
|
|
103
|
+
- Termux-SSH provider for remote server connections
|
|
104
|
+
- Seamless integration with existing AgentVibes workflows
|
|
105
|
+
|
|
106
|
+
**For Existing Users:**
|
|
107
|
+
- Zero breaking changes
|
|
108
|
+
- All existing features work exactly the same
|
|
109
|
+
- New Android support is opt-in via Termux installation
|
|
110
|
+
|
|
111
|
+
### π Migration Notes
|
|
112
|
+
|
|
113
|
+
No migration required! This is a fully backward-compatible minor release.
|
|
114
|
+
|
|
115
|
+
**To Try Android Support:**
|
|
116
|
+
1. Install [Termux from F-Droid](https://f-droid.org/en/packages/com.termux/)
|
|
117
|
+
2. Install [Termux:API](https://f-droid.org/en/packages/com.termux.api/)
|
|
118
|
+
3. In Termux: `pkg install nodejs-lts`
|
|
119
|
+
4. Run: `npx agentvibes install`
|
|
120
|
+
|
|
121
|
+
AgentVibes will auto-detect Termux and run the specialized installer.
|
|
122
|
+
|
|
123
|
+
### π¦ Full Changelog
|
|
124
|
+
|
|
125
|
+
**Feature Commits:**
|
|
126
|
+
- `e9d4cf95` feat: Add Android/Termux support for Piper TTS
|
|
127
|
+
|
|
128
|
+
**Bug Fix Commits:**
|
|
129
|
+
- `aa4d3cdd` fix: Add termux-ssh provider to test #90 cleanup list
|
|
130
|
+
- `c1b00c6d` fix: Use termux-media-player for audio playback on Android
|
|
131
|
+
- `f96ab89a` fix: Properly detect Termux environment for temp directory
|
|
132
|
+
- `e2efeb06` fix: Add strict mode to termux-installer.sh for Sonar compliance
|
|
133
|
+
|
|
134
|
+
**Documentation Commits:**
|
|
135
|
+
- `701a9412` docs: Add comprehensive Android/Termux setup section to README
|
|
136
|
+
|
|
137
|
+
**Merge Commits:**
|
|
138
|
+
- `a5d3f546` Merge feature/android-termux into master
|
|
139
|
+
- `95f04e70` Merge origin/master into feature/pulseaudio-reverse-tunnel
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
3
143
|
## π¦ v3.0.0 - Cross-Platform Remote Audio: Termux SSH Provider
|
|
4
144
|
|
|
5
145
|
**Release Date:** January 8, 2026
|
|
@@ -48,252 +188,3 @@ See the termux-ssh provider in actionβfully interactive, hands-free conversati
|
|
|
48
188
|
- Supports mixed-provider mode (Piper + Termux)
|
|
49
189
|
|
|
50
190
|
**MCP Server Integration (`mcp-server/server.py`):**
|
|
51
|
-
- Added termux-ssh to provider validation
|
|
52
|
-
- Provider name mapping: "Termux SSH"
|
|
53
|
-
- JSON schema enum includes termux-ssh
|
|
54
|
-
- Full compatibility with all slash commands
|
|
55
|
-
|
|
56
|
-
### π Documentation
|
|
57
|
-
|
|
58
|
-
**New File: `.claude/docs/TERMUX_SETUP.md`**
|
|
59
|
-
- 409 lines of comprehensive setup documentation
|
|
60
|
-
- Prerequisites for Android (Termux, termux-api, openssh)
|
|
61
|
-
- Prerequisites for server/desktop (SSH config)
|
|
62
|
-
- **Tailscale Integration Guide:**
|
|
63
|
-
- Why Tailscale solves cross-network access
|
|
64
|
-
- Step-by-step installation (Android + Server)
|
|
65
|
-
- Benefits comparison table
|
|
66
|
-
- Example configurations with sanitized IPs
|
|
67
|
-
- Multiple device configuration
|
|
68
|
-
- Custom TTS voices
|
|
69
|
-
- Security considerations
|
|
70
|
-
- Troubleshooting section
|
|
71
|
-
- Architecture diagram
|
|
72
|
-
|
|
73
|
-
### π Bug Fixes & Improvements
|
|
74
|
-
|
|
75
|
-
**Git Log Bug Fix (`src/installer.js`):**
|
|
76
|
-
- Check for .git directory before running git log
|
|
77
|
-
- Prevents showing parent repository commits
|
|
78
|
-
- Falls back to RELEASE_NOTES.md for npm installs
|
|
79
|
-
|
|
80
|
-
**Provider Timeout Fix:**
|
|
81
|
-
- Added timeout to set_provider TTS confirmation to prevent hanging
|
|
82
|
-
- Improves user experience when switching providers
|
|
83
|
-
|
|
84
|
-
**NPM Package Improvements:**
|
|
85
|
-
- Include templates/ directory in npm package for welcome audio
|
|
86
|
-
- Include RELEASE_NOTES.md in npm package
|
|
87
|
-
- Include .claude/docs/ directory for setup guides
|
|
88
|
-
- Syntax validation added to test suite
|
|
89
|
-
|
|
90
|
-
**Documentation IP Sanitization:**
|
|
91
|
-
- All example IPs changed to clearly fake: 100.100.100.x
|
|
92
|
-
- Removed potentially sensitive information from examples
|
|
93
|
-
|
|
94
|
-
**Audio Effects Handling:**
|
|
95
|
-
- Skip audio effects for termux-ssh provider (mobile devices)
|
|
96
|
-
- Skip welcome message for termux-ssh to reduce initial setup noise
|
|
97
|
-
- Optimize mobile experience with appropriate defaults
|
|
98
|
-
|
|
99
|
-
**Release Process Quality Gates:**
|
|
100
|
-
- Integrated Sonar quality gate validation into /release command
|
|
101
|
-
- Automated test suite execution before all releases
|
|
102
|
-
- Security validation for bash scripts and JavaScript code
|
|
103
|
-
|
|
104
|
-
### π§ Technical Details
|
|
105
|
-
|
|
106
|
-
**Files Changed:**
|
|
107
|
-
- `.claude/hooks/play-tts-termux-ssh.sh`: New provider implementation (+196 lines)
|
|
108
|
-
- `.claude/hooks/play-tts.sh`: Added termux-ssh routing (+6 lines)
|
|
109
|
-
- `.claude/docs/TERMUX_SETUP.md`: Complete setup guide (+409 lines)
|
|
110
|
-
- `src/installer.js`: Provider selection + SSH config + git fix (+100 lines)
|
|
111
|
-
- `mcp-server/server.py`: Provider validation updates (+8 lines)
|
|
112
|
-
- `package.json`: Version bump + docs folder inclusion
|
|
113
|
-
- `sonar-project.properties`: Version sync
|
|
114
|
-
|
|
115
|
-
**Installation:**
|
|
116
|
-
```bash
|
|
117
|
-
npx agentvibes@latest install
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
### π Impact
|
|
121
|
-
|
|
122
|
-
**User Experience:**
|
|
123
|
-
- Work on remote servers while hearing TTS on Android phone
|
|
124
|
-
- No PulseAudio or complex audio forwarding configuration
|
|
125
|
-
- Uses familiar SSH workflow
|
|
126
|
-
- Works from anywhere in the world with Tailscale VPN
|
|
127
|
-
- True location-independent development experience
|
|
128
|
-
|
|
129
|
-
**Developer Experience:**
|
|
130
|
-
- Simple SSH host alias configuration via installer
|
|
131
|
-
- Tailscale eliminates network complexity, NAT traversal, and port forwarding
|
|
132
|
-
- Native Android TTS voices with language support
|
|
133
|
-
- Full MCP integration for all workflows
|
|
134
|
-
- Seamless provider switching between local (Piper/macOS) and remote (termux-ssh)
|
|
135
|
-
|
|
136
|
-
**Use Cases:**
|
|
137
|
-
- ποΈ **Interactive Mobile Conversations** - Have true back-and-forth conversations with Claude Code using just your Android phone (no computer speakers needed)
|
|
138
|
-
- π» **Local Development with Mobile Audio** - Code on your laptop/desktop but hear and interact with Claude via your phone
|
|
139
|
-
- βοΈ **Remote Server Development** - Work on cloud servers, VPS, or corporate servers with audio delivered to your mobile device anywhere in the world
|
|
140
|
-
- πΆ **Mobile-First Workflow** - Walk around while conversing with Claude, freed from your workstation
|
|
141
|
-
- π§ **Private Conversations** - Use phone earbuds for private AI interactions in shared workspaces
|
|
142
|
-
- βΏ **Enhanced Accessibility** - Hands-free voice interaction with AI while maintaining visual focus on code
|
|
143
|
-
- π± **Distributed Teams** - Team members can hear Claude updates on their phones regardless of location or network
|
|
144
|
-
|
|
145
|
-
---
|
|
146
|
-
|
|
147
|
-
## π¦ v2.18.0 - Uninstall Command & CI Improvements
|
|
148
|
-
|
|
149
|
-
**Release Date:** December 30, 2025
|
|
150
|
-
|
|
151
|
-
### π€ AI Summary
|
|
152
|
-
|
|
153
|
-
AgentVibes v2.18.0 introduces a comprehensive uninstall command that makes it easy to cleanly remove AgentVibes from your projects. The new `agentvibes uninstall` command provides interactive confirmation, flexible removal options (project-level, global, or complete including Piper TTS), and clear documentation. This release also improves CI test reliability by adjusting timeouts for slower build environments, ensuring more consistent test results across different systems.
|
|
154
|
-
|
|
155
|
-
**Key Highlights:**
|
|
156
|
-
- ποΈ **Comprehensive Uninstall Command** - New `agentvibes uninstall` with interactive confirmation and preview of what will be removed
|
|
157
|
-
- ποΈ **Flexible Removal Options** - Support for `--yes` (auto-confirm), `--global` (remove global config), and `--with-piper` (remove TTS engine) flags
|
|
158
|
-
- π **Complete Documentation** - New uninstall section in README with examples, options, and what gets removed at each level
|
|
159
|
-
- π§ͺ **Improved CI Reliability** - Increased party-mode TTS test timeout from 10s to 15s for slower CI systems
|
|
160
|
-
|
|
161
|
-
### β¨ New Features
|
|
162
|
-
|
|
163
|
-
**Uninstall Command (`src/installer.js`):**
|
|
164
|
-
- Added `agentvibes uninstall` command with ~194 lines of new functionality
|
|
165
|
-
- Interactive confirmation prompt (skippable with `--yes` flag)
|
|
166
|
-
- Preview display showing exactly what will be removed before uninstalling
|
|
167
|
-
- Project-level uninstall (default): Removes `.claude/`, `.agentvibes/` directories
|
|
168
|
-
- Global uninstall (with `--global`): Also removes `~/.claude/`, `~/.agentvibes/`
|
|
169
|
-
- Complete uninstall (with `--with-piper`): Also removes `~/piper/` TTS engine
|
|
170
|
-
- Safety check: Verifies installation exists before proceeding
|
|
171
|
-
- Colored output with spinner, progress indicators, and feedback prompts
|
|
172
|
-
- Helpful messaging with reinstall instructions and feedback link
|
|
173
|
-
|
|
174
|
-
### π Documentation
|
|
175
|
-
|
|
176
|
-
**README.md:**
|
|
177
|
-
- Added new "ποΈ Uninstalling" section to Table of Contents
|
|
178
|
-
- Complete uninstall documentation with:
|
|
179
|
-
- Quick uninstall command: `npx agentvibes uninstall`
|
|
180
|
-
- All command options with descriptions
|
|
181
|
-
- Clear breakdown of what gets removed at each level (project/global/Piper)
|
|
182
|
-
- Tips and best practices
|
|
183
|
-
- Reinstall instructions
|
|
184
|
-
|
|
185
|
-
### π Bug Fixes & Improvements
|
|
186
|
-
|
|
187
|
-
**Test Reliability (`test/unit/party-mode-tts.bats`):**
|
|
188
|
-
- Increased timeout for party mode multi-agent TTS test from 10s to 15s
|
|
189
|
-
- Accommodates slower CI systems while still catching real performance issues
|
|
190
|
-
- Updated test comment to explain the timeout adjustment
|
|
191
|
-
|
|
192
|
-
### π§ Technical Details
|
|
193
|
-
|
|
194
|
-
**Files Changed:**
|
|
195
|
-
- `README.md`: Added uninstall documentation section (+56 lines)
|
|
196
|
-
- `src/installer.js`: Implemented uninstall command (+194 lines)
|
|
197
|
-
- `test/unit/party-mode-tts.bats`: Adjusted timeout for CI compatibility (+2 lines, -2 lines)
|
|
198
|
-
|
|
199
|
-
**Command Usage:**
|
|
200
|
-
```bash
|
|
201
|
-
# Interactive uninstall (confirms before removing)
|
|
202
|
-
npx agentvibes uninstall
|
|
203
|
-
|
|
204
|
-
# Auto-confirm (skip confirmation prompt)
|
|
205
|
-
npx agentvibes uninstall --yes
|
|
206
|
-
|
|
207
|
-
# Also remove global configuration
|
|
208
|
-
npx agentvibes uninstall --global
|
|
209
|
-
|
|
210
|
-
# Complete uninstall including Piper TTS
|
|
211
|
-
npx agentvibes uninstall --global --with-piper
|
|
212
|
-
```
|
|
213
|
-
|
|
214
|
-
### π Impact
|
|
215
|
-
|
|
216
|
-
**User Experience:**
|
|
217
|
-
- Users can now cleanly uninstall AgentVibes at their preferred scope
|
|
218
|
-
- Clear visibility into what will be removed before taking action
|
|
219
|
-
- Safety confirmation prevents accidental uninstalls
|
|
220
|
-
- Easy reinstallation path with `npx agentvibes install`
|
|
221
|
-
|
|
222
|
-
**Developer Experience:**
|
|
223
|
-
- More reliable CI builds with adjusted test timeouts
|
|
224
|
-
- Better test failure signal-to-noise ratio
|
|
225
|
-
- Clearer test comments explaining timeout rationale
|
|
226
|
-
|
|
227
|
-
---
|
|
228
|
-
|
|
229
|
-
## π¦ v2.17.9 - Documentation Accuracy Update
|
|
230
|
-
|
|
231
|
-
**Release Date:** December 20, 2024
|
|
232
|
-
|
|
233
|
-
### π€ AI Summary
|
|
234
|
-
|
|
235
|
-
AgentVibes v2.17.9 is a documentation accuracy release that removes all outdated ElevenLabs references and updates documentation to reflect the current architecture. This release corrects the voice library documentation (removing fake piper.io URLs), updates provider documentation to accurately describe Piper TTS and macOS Say (removing references to the no-longer-supported ElevenLabs provider), and completely rewrites the technical deep dive to reflect the current startup hook architecture instead of the deprecated output styles system.
|
|
236
|
-
|
|
237
|
-
**Key Highlights:**
|
|
238
|
-
- π **Voice Library Accuracy** - Replaced fake voice URLs with actual Piper TTS voice names and accurate language support (18+ languages)
|
|
239
|
-
- π§ **Provider Documentation** - Removed ElevenLabs section, added macOS Say provider details, corrected feature comparison tables
|
|
240
|
-
- ποΈ **Architecture Update** - Technical deep dive rewritten: "Output Style System" β "Startup Hook Protocol", updated from 4 to 3 core systems
|
|
241
|
-
- β
**Code Example Accuracy** - All code snippets now match current implementation (Piper TTS local generation, macOS Say integration)
|
|
242
|
-
|
|
243
|
-
### π Documentation Updates
|
|
244
|
-
|
|
245
|
-
**docs/voice-library.md:**
|
|
246
|
-
- Removed fake "piper.io/voice-library" URLs (formatted like old ElevenLabs links)
|
|
247
|
-
- Updated from "30+ languages" to accurate "18+ languages"
|
|
248
|
-
- Replaced character voice list with actual Piper voice names (en_US-lessac-medium, en_GB-alan-medium, etc.)
|
|
249
|
-
- Added commands to preview and list voices
|
|
250
|
-
|
|
251
|
-
**docs/providers.md:**
|
|
252
|
-
- Removed entire "Piper TTS (Premium AI Voices)" section with ElevenLabs references
|
|
253
|
-
- Added "macOS Say (Built-in, Free)" provider section
|
|
254
|
-
- Updated provider comparison table: Piper TTS vs macOS Say (was incorrectly "Piper TTS vs Piper TTS")
|
|
255
|
-
- Removed outdated pricing information ($0-99/month)
|
|
256
|
-
- Removed API key requirements
|
|
257
|
-
- Updated recommendations for cross-platform vs macOS-specific use cases
|
|
258
|
-
|
|
259
|
-
**docs/technical-deep-dive.md** (Major Rewrite):
|
|
260
|
-
- Architecture: Changed from "4 Core Systems" to "3 Core Systems" (removed Output Style System)
|
|
261
|
-
- System 1: "Output Style System" β "Startup Hook Protocol"
|
|
262
|
-
- Explained how `.claude/hooks/startup.sh` injects TTS instructions
|
|
263
|
-
- Removed references to `.claude/output-styles/agent-vibes.md`
|
|
264
|
-
- Added actual startup hook code examples
|
|
265
|
-
- Provider Implementation:
|
|
266
|
-
- Removed fake ElevenLabs API curl examples
|
|
267
|
-
- Removed SSH audio conversion (MP3βOGG, only needed for API streaming)
|
|
268
|
-
- Added macOS Say provider implementation with actual code
|
|
269
|
-
- Updated Piper implementation to show local voice generation
|
|
270
|
-
- Data Flow: Updated all examples to use startup hook instead of output style
|
|
271
|
-
- Installation: Removed `output-styles/` from directory structure, added `startup.sh`
|
|
272
|
-
- Performance: Updated latency numbers (removed API latency, added local generation times)
|
|
273
|
-
- Error Handling: "API Failure Handling" β "TTS Generation Failure Handling"
|
|
274
|
-
- Updated voice references from "150+ voices" to "50+ neural voices"
|
|
275
|
-
- Changed default voice from "Aria" to "en_GB-alan-medium"
|
|
276
|
-
|
|
277
|
-
### π Bug Fixes
|
|
278
|
-
|
|
279
|
-
**macOS Installation (src/installer.js):**
|
|
280
|
-
- Fixed Python installation on macOS to handle PEP 668 externally-managed environments
|
|
281
|
-
- Added `--break-system-packages` flag for Python dependencies when virtual environments aren't available
|
|
282
|
-
- Prevents installation failures on macOS systems with externally-managed Python
|
|
283
|
-
- Maintains compatibility with standard Python environments
|
|
284
|
-
|
|
285
|
-
### π§ Technical Details
|
|
286
|
-
|
|
287
|
-
**Files Changed:**
|
|
288
|
-
- `docs/voice-library.md`: Voice name and language accuracy
|
|
289
|
-
- `docs/providers.md`: Provider documentation overhaul
|
|
290
|
-
- `docs/technical-deep-dive.md`: Complete architecture rewrite
|
|
291
|
-
- `src/installer.js`: macOS Python dependency handling
|
|
292
|
-
|
|
293
|
-
### π Impact
|
|
294
|
-
|
|
295
|
-
This release ensures that all documentation accurately reflects the current AgentVibes architecture. No functionality was changed, but users will find:
|
|
296
|
-
- Accurate voice names and language support
|
|
297
|
-
- Correct provider information for making informed choices
|
|
298
|
-
- Technical documentation matching the actual codebase
|
|
299
|
-
- Better macOS installation reliability
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
3
|
"name": "agentvibes",
|
|
4
|
-
"version": "3.
|
|
4
|
+
"version": "3.1.0",
|
|
5
5
|
"description": "Now your AI Agents can finally talk back! Professional TTS voice for Claude Code and Claude Desktop (via MCP) with multi-provider support.",
|
|
6
6
|
"homepage": "https://agentvibes.org",
|
|
7
7
|
"keywords": [
|
package/src/installer.js
CHANGED
|
@@ -71,6 +71,27 @@ const packageJson = JSON.parse(
|
|
|
71
71
|
);
|
|
72
72
|
const VERSION = packageJson.version;
|
|
73
73
|
|
|
74
|
+
/**
|
|
75
|
+
* Detect if running on Android/Termux environment
|
|
76
|
+
* @returns {boolean} True if running on Termux/Android
|
|
77
|
+
*/
|
|
78
|
+
function isTermux() {
|
|
79
|
+
return fsSync.existsSync('/data/data/com.termux');
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Detect if running on Android/Termux and display message
|
|
84
|
+
* @returns {boolean} True if running on Termux/Android
|
|
85
|
+
*/
|
|
86
|
+
function detectAndNotifyTermux() {
|
|
87
|
+
if (isTermux()) {
|
|
88
|
+
console.log(chalk.green('\nπ± Android environment detected!'));
|
|
89
|
+
console.log(chalk.cyan(' Installing specialized libraries for Termux...\n'));
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
|
|
74
95
|
/**
|
|
75
96
|
* Create header and footer for installer pages
|
|
76
97
|
* @param {string} pageTitle - Title of current page
|
|
@@ -345,10 +366,23 @@ async function collectConfiguration(options = {}) {
|
|
|
345
366
|
verbosity: 'high'
|
|
346
367
|
};
|
|
347
368
|
|
|
369
|
+
// Detect Android/Termux environment
|
|
370
|
+
const isAndroid = isTermux();
|
|
371
|
+
if (isAndroid) {
|
|
372
|
+
detectAndNotifyTermux();
|
|
373
|
+
}
|
|
374
|
+
|
|
348
375
|
if (options.yes) {
|
|
349
376
|
// Non-interactive mode - use defaults
|
|
350
|
-
|
|
351
|
-
|
|
377
|
+
// On Termux, always use piper (via proot-distro)
|
|
378
|
+
if (isAndroid) {
|
|
379
|
+
config.provider = 'piper';
|
|
380
|
+
config.defaultVoice = 'en_US-lessac-medium';
|
|
381
|
+
config.isTermux = true;
|
|
382
|
+
} else {
|
|
383
|
+
config.provider = process.platform === 'darwin' ? 'macos' : 'piper';
|
|
384
|
+
config.defaultVoice = process.platform === 'darwin' ? 'Samantha' : 'en_US-ryan-high';
|
|
385
|
+
}
|
|
352
386
|
const homeDir = process.env.HOME || process.env.USERPROFILE;
|
|
353
387
|
config.piperPath = path.join(homeDir, '.claude', 'piper-voices');
|
|
354
388
|
return config;
|
|
@@ -901,19 +935,20 @@ function showWelcome() {
|
|
|
901
935
|
* Shown during install and update commands
|
|
902
936
|
*/
|
|
903
937
|
function getReleaseInfoBoxen() {
|
|
904
|
-
return chalk.cyan.bold('π¦ AgentVibes v3.
|
|
938
|
+
return chalk.cyan.bold('π¦ AgentVibes v3.1.0 - Android Native Support\n\n') +
|
|
905
939
|
chalk.green.bold('ποΈ WHAT\'S NEW:\n\n') +
|
|
906
|
-
chalk.cyan('AgentVibes v3.
|
|
907
|
-
chalk.cyan('
|
|
908
|
-
chalk.cyan('
|
|
909
|
-
chalk.cyan('
|
|
910
|
-
chalk.cyan('
|
|
940
|
+
chalk.cyan('AgentVibes v3.1.0 introduces native Android/Termux support, enabling developers to run\n') +
|
|
941
|
+
chalk.cyan('Claude Code with professional TTS voices directly on their Android devices. Through\n') +
|
|
942
|
+
chalk.cyan('automatic detection and a specialized installer, AgentVibes now runs Piper TTS via\n') +
|
|
943
|
+
chalk.cyan('proot-distro with Debian, uses termux-media-player for audio playback, and includes\n') +
|
|
944
|
+
chalk.cyan('comprehensive Android-specific documentation. Perfect for developers who want to code\n') +
|
|
945
|
+
chalk.cyan('on-the-go with their Android phone or tablet.\n\n') +
|
|
911
946
|
chalk.green.bold('β¨ KEY HIGHLIGHTS:\n\n') +
|
|
912
|
-
chalk.gray('
|
|
913
|
-
chalk.gray('
|
|
914
|
-
chalk.gray('
|
|
915
|
-
chalk.gray('
|
|
916
|
-
chalk.gray('
|
|
947
|
+
chalk.gray(' π€ Native Android Support - Run Claude Code with TTS directly on Android devices\n') +
|
|
948
|
+
chalk.gray(' π¦ Automatic Termux Detection - AgentVibes auto-detects Android environments\n') +
|
|
949
|
+
chalk.gray(' π― Proot-Distro Integration - Solves glibc compatibility issues on Android\n') +
|
|
950
|
+
chalk.gray(' π Android Audio Playback - Uses termux-media-player for native audio routing\n') +
|
|
951
|
+
chalk.gray(' π Comprehensive Documentation - Complete Android setup guide with troubleshooting\n\n') +
|
|
917
952
|
chalk.gray('π Full Release Notes: RELEASE_NOTES.md\n') +
|
|
918
953
|
chalk.gray('π Website: https://agentvibes.org\n') +
|
|
919
954
|
chalk.gray('π¦ Repository: https://github.com/paulpreibisch/AgentVibes\n\n') +
|
|
@@ -2101,7 +2136,14 @@ async function checkAndInstallPiper(targetDir, options) {
|
|
|
2101
2136
|
}
|
|
2102
2137
|
|
|
2103
2138
|
if (installPiper) {
|
|
2104
|
-
|
|
2139
|
+
// Check if we're on Termux/Android
|
|
2140
|
+
if (isTermux()) {
|
|
2141
|
+
console.log(chalk.green('\nπ± Android environment detected!'));
|
|
2142
|
+
console.log(chalk.cyan('π¦ Installing Piper TTS with Termux-specific setup...\n'));
|
|
2143
|
+
console.log(chalk.gray(' This will install proot-distro and set up Piper in a Debian environment.\n'));
|
|
2144
|
+
} else {
|
|
2145
|
+
console.log(chalk.cyan('\nπ¦ Installing Piper TTS...\n'));
|
|
2146
|
+
}
|
|
2105
2147
|
const piperInstallerPath = path.join(targetDir, '.claude', 'hooks', 'piper-installer.sh');
|
|
2106
2148
|
|
|
2107
2149
|
try {
|
|
@@ -2114,13 +2156,19 @@ async function checkAndInstallPiper(targetDir, options) {
|
|
|
2114
2156
|
console.log(chalk.yellow('\nβ οΈ Piper installation failed or was cancelled'));
|
|
2115
2157
|
console.log(chalk.gray(' You can install it later by running:'));
|
|
2116
2158
|
console.log(chalk.cyan(` ${piperInstallerPath}`));
|
|
2117
|
-
|
|
2159
|
+
if (isTermux()) {
|
|
2160
|
+
console.log(chalk.gray(' On Termux, this will use proot-distro for installation.\n'));
|
|
2161
|
+
} else {
|
|
2162
|
+
console.log(chalk.gray(' Or manually: pipx install piper-tts\n'));
|
|
2163
|
+
}
|
|
2118
2164
|
}
|
|
2119
2165
|
} else {
|
|
2120
2166
|
console.log(chalk.yellow('\nβ οΈ Skipping Piper installation'));
|
|
2121
2167
|
console.log(chalk.gray(' You can install it later by running:'));
|
|
2122
2168
|
console.log(chalk.cyan(` ${targetDir}/.claude/hooks/piper-installer.sh`));
|
|
2123
|
-
|
|
2169
|
+
if (!isTermux()) {
|
|
2170
|
+
console.log(chalk.gray(' Or manually: pipx install piper-tts\n'));
|
|
2171
|
+
}
|
|
2124
2172
|
}
|
|
2125
2173
|
}
|
|
2126
2174
|
} catch (error) {
|