rebrand: rename VoiceBox to TalkBox throughout codebase
CI / frontend-quality (push) Canceled after 0s

- All 'voicebox'/'Voicebox'/'VOICEBOX' strings replaced with 'talkbox'/'TalkBox'/'TALKBOX'
- Port changed from 17493 to 17494 (avoids conflict with upstream VoiceBox)
- MCP tool namespace: voicebox.* -> talkbox.*
- App bundle ID: sh.voicebox.app -> com.talkbox.app
- Binary names: voicebox-server -> talkbox-server, voicebox-mcp -> talkbox-mcp
- Docker user/group: voicebox -> talkbox
- Database: voicebox.db -> talkbox.db
- Env vars: VOICEBOX_* -> TALKBOX_*
- Asset files renamed: voicebox-logo.* -> talkbox-logo.*, etc.
- External binaries in tauri.conf.json updated to talkbox-server/talkbox-mcp
This commit is contained in:
2026-08-24 19:45:56 -07:00
parent eaef8dd838
commit b8815e94ea
205 changed files with 1593 additions and 1593 deletions
+3 -3
View File
@@ -6,7 +6,7 @@ set -e
# Determine platform
PLATFORM=$(rustc --print host-tuple 2>/dev/null || echo "unknown")
echo "Building Voicebox sidecars for platform: $PLATFORM"
echo "Building TalkBox sidecars for platform: $PLATFORM"
# Build Python binary
# Resolve PATH to absolute paths before changing directory
@@ -39,9 +39,9 @@ copy_sidecar() {
}
python build_binary.py
copy_sidecar voicebox-server
copy_sidecar talkbox-server
python build_binary.py --shim
copy_sidecar voicebox-mcp
copy_sidecar talkbox-mcp
echo "Build complete!"
+5 -5
View File
@@ -6,7 +6,7 @@ set -e
echo "Generating OpenAPI client..."
# Check if backend is running
if ! curl -s http://localhost:17493/openapi.json > /dev/null 2>&1; then
if ! curl -s http://localhost:17494/openapi.json > /dev/null 2>&1; then
echo "Backend not running. Starting backend..."
cd backend
@@ -26,19 +26,19 @@ if ! curl -s http://localhost:17493/openapi.json > /dev/null 2>&1; then
# Start backend in background
echo "Starting backend server..."
uvicorn main:app --port 17493 & # Keep the generator on the app's documented local backend port.
uvicorn main:app --port 17494 & # Keep the generator on the app's documented local backend port.
BACKEND_PID=$!
# Wait for server to be ready
echo "Waiting for server to start..."
for _ in {1..30}; do
if curl -s http://localhost:17493/openapi.json > /dev/null 2>&1; then
if curl -s http://localhost:17494/openapi.json > /dev/null 2>&1; then
break
fi
sleep 1
done
if ! curl -s http://localhost:17493/openapi.json > /dev/null 2>&1; then
if ! curl -s http://localhost:17494/openapi.json > /dev/null 2>&1; then
echo "Error: Backend failed to start"
kill $BACKEND_PID 2>/dev/null || true
exit 1
@@ -52,7 +52,7 @@ fi
# Download OpenAPI schema
echo "Downloading OpenAPI schema..."
curl -s http://localhost:17493/openapi.json > app/openapi.json
curl -s http://localhost:17494/openapi.json > app/openapi.json
# Check if openapi-typescript-codegen is installed
if ! bunx --bun openapi-typescript-codegen --version > /dev/null 2>&1; then
+8 -8
View File
@@ -2,14 +2,14 @@
Package the PyInstaller --onedir CUDA build into two archives.
Takes the PyInstaller --onedir output directory and splits it into:
1. voicebox-server-cuda.tar.gz — server core (exe + non-NVIDIA deps)
1. talkbox-server-cuda.tar.gz — server core (exe + non-NVIDIA deps)
2. cuda-libs-cu128.tar.gz — NVIDIA runtime libraries only
3. cuda-libs.json — version manifest for the CUDA libs
Usage:
python scripts/package_cuda.py backend/dist/voicebox-server-cuda/
python scripts/package_cuda.py backend/dist/voicebox-server-cuda/ --output release-assets/
python scripts/package_cuda.py backend/dist/voicebox-server-cuda/ --cuda-libs-version cu128-v1
python scripts/package_cuda.py backend/dist/talkbox-server-cuda/
python scripts/package_cuda.py backend/dist/talkbox-server-cuda/ --output release-assets/
python scripts/package_cuda.py backend/dist/talkbox-server-cuda/ --cuda-libs-version cu128-v1
"""
import argparse
@@ -140,14 +140,14 @@ def package(
# Create server core archive
# Files are stored relative to the archive root (no parent directory prefix)
# so extracting to backends/cuda/ puts everything at the right level.
server_archive = output_dir / "voicebox-server-cuda.tar.gz"
server_archive = output_dir / "talkbox-server-cuda.tar.gz"
print(f"\nCreating server core archive: {server_archive.name}")
with tarfile.open(server_archive, "w:gz") as tar:
for rel_str, full_path in core_files:
tar.add(full_path, arcname=rel_str)
server_sha = sha256_file(server_archive)
(output_dir / "voicebox-server-cuda.tar.gz.sha256").write_text(
f"{server_sha} voicebox-server-cuda.tar.gz\n"
(output_dir / "talkbox-server-cuda.tar.gz.sha256").write_text(
f"{server_sha} talkbox-server-cuda.tar.gz\n"
)
print(f" Size: {server_archive.stat().st_size / (1024**2):.1f} MB")
print(f" SHA-256: {server_sha[:16]}...")
@@ -197,7 +197,7 @@ def main():
parser.add_argument(
"input",
type=Path,
help="Path to PyInstaller --onedir output directory (e.g. backend/dist/voicebox-server-cuda/)",
help="Path to PyInstaller --onedir output directory (e.g. backend/dist/talkbox-server-cuda/)",
)
parser.add_argument(
"--output",
+8 -8
View File
@@ -2,7 +2,7 @@
Package the PyInstaller --onedir ROCm build into two archives.
Takes the PyInstaller --onedir output directory and splits it into:
1. voicebox-server-rocm.tar.gz — server core (exe + non-AMD deps)
1. talkbox-server-rocm.tar.gz — server core (exe + non-AMD deps)
2. rocm-libs-{version}.tar.gz — AMD/ROCm runtime libraries only
3. rocm-libs.json — version manifest for the ROCm libs
@@ -11,9 +11,9 @@ every app update while the much larger ROCm runtime stays cached until the
toolkit version bumps.
Usage:
python scripts/package_rocm.py backend/dist/voicebox-server-rocm/
python scripts/package_rocm.py backend/dist/voicebox-server-rocm/ --output release-assets/
python scripts/package_rocm.py backend/dist/voicebox-server-rocm/ --rocm-libs-version rocm7.2-v1
python scripts/package_rocm.py backend/dist/talkbox-server-rocm/
python scripts/package_rocm.py backend/dist/talkbox-server-rocm/ --output release-assets/
python scripts/package_rocm.py backend/dist/talkbox-server-rocm/ --rocm-libs-version rocm7.2-v1
"""
import argparse
@@ -159,14 +159,14 @@ def package(
# Create server core archive. Files are stored relative to the archive root
# (no parent prefix) so extracting to backends/rocm/ lands at the right level.
server_archive = output_dir / "voicebox-server-rocm.tar.gz"
server_archive = output_dir / "talkbox-server-rocm.tar.gz"
print(f"\nCreating server core archive: {server_archive.name}")
with tarfile.open(server_archive, "w:gz") as tar:
for rel_str, full_path in core_files:
tar.add(full_path, arcname=rel_str)
server_sha = sha256_file(server_archive)
(output_dir / "voicebox-server-rocm.tar.gz.sha256").write_text(
f"{server_sha} voicebox-server-rocm.tar.gz\n"
(output_dir / "talkbox-server-rocm.tar.gz.sha256").write_text(
f"{server_sha} talkbox-server-rocm.tar.gz\n"
)
print(f" Size: {server_archive.stat().st_size / (1024**2):.1f} MB")
print(f" SHA-256: {server_sha[:16]}...")
@@ -216,7 +216,7 @@ def main():
parser.add_argument(
"input",
type=Path,
help="Path to PyInstaller --onedir output directory (e.g. backend/dist/voicebox-server-rocm/)",
help="Path to PyInstaller --onedir output directory (e.g. backend/dist/talkbox-server-rocm/)",
)
parser.add_argument(
"--output",
+7 -7
View File
@@ -7,14 +7,14 @@ set -e
echo "🔑 Checking for signing keys..."
if [ ! -f ~/.tauri/voicebox.key ]; then
echo "❌ Private key not found at ~/.tauri/voicebox.key"
echo "Run: cd tauri && bun tauri signer generate -w ~/.tauri/voicebox.key"
if [ ! -f ~/.tauri/talkbox.key ]; then
echo "❌ Private key not found at ~/.tauri/talkbox.key"
echo "Run: cd tauri && bun tauri signer generate -w ~/.tauri/talkbox.key"
exit 1
fi
if [ ! -f ~/.tauri/voicebox.key.pub ]; then
echo "❌ Public key not found at ~/.tauri/voicebox.key.pub"
if [ ! -f ~/.tauri/talkbox.key.pub ]; then
echo "❌ Public key not found at ~/.tauri/talkbox.key.pub"
exit 1
fi
@@ -27,14 +27,14 @@ if grep -q "REPLACE_WITH_YOUR_PUBLIC_KEY" tauri/src-tauri/tauri.conf.json; then
echo ""
echo "Add this to tauri/src-tauri/tauri.conf.json:"
echo ""
cat ~/.tauri/voicebox.key.pub
cat ~/.tauri/talkbox.key.pub
echo ""
exit 1
fi
echo "🔧 Setting up environment..."
export TAURI_SIGNING_PRIVATE_KEY="$(cat ~/.tauri/voicebox.key)"
export TAURI_SIGNING_PRIVATE_KEY="$(cat ~/.tauri/talkbox.key)"
export TAURI_SIGNING_PRIVATE_KEY_PASSWORD=""
echo "✅ Environment configured"
+2 -2
View File
@@ -10,6 +10,6 @@ for dev in /dev/kfd /dev/dri/render*; do
grp="gpu$gid"
groupadd -g "$gid" "$grp"
}
usermod -aG "$grp" voicebox
usermod -aG "$grp" talkbox
done
exec gosu voicebox "$@"
exec gosu talkbox "$@"
+2 -2
View File
@@ -47,7 +47,7 @@ function getTargetTriple() {
// Create a minimal executable for the platform. ``baseName`` is the
// sidecar identifier as declared in tauri.conf.json's ``externalBin``
// (e.g. "voicebox-server", "voicebox-mcp"). Tauri appends the target
// (e.g. "talkbox-server", "talkbox-mcp"). Tauri appends the target
// triple to that name at compile time.
function createPlaceholderBinary(targetTriple, baseName) {
const isWindows = targetTriple.includes('windows');
@@ -369,7 +369,7 @@ exit 1
// Every sidecar listed in tauri.conf.json's ``externalBin`` needs a
// file on disk at compile time, even in dev. Add to this list whenever
// a new sidecar is introduced.
const SIDECAR_BASE_NAMES = ['voicebox-server', 'voicebox-mcp'];
const SIDECAR_BASE_NAMES = ['talkbox-server', 'talkbox-mcp'];
function main() {
const targetTriple = getTargetTriple();
+24 -24
View File
@@ -6,15 +6,15 @@ set -e
cd "$(dirname "$0")/.."
EXPORTS_DIR="tauri/assets/voicebox_exports"
ICON_BUNDLE="tauri/assets/voicebox.icon"
EXPORTS_DIR="tauri/assets/talkbox_exports"
ICON_BUNDLE="tauri/assets/talkbox.icon"
ASSETS_DIR="$ICON_BUNDLE/Assets"
ICONS_DIR="tauri/src-tauri/icons"
LANDING_LOGO="landing/public/voicebox-logo.png"
LANDING_LOGO="landing/public/talkbox-logo.png"
LANDING_PUBLIC="landing/public"
SOURCE_ICON="$EXPORTS_DIR/voice[email protected]"
SOURCE_ICON="$EXPORTS_DIR/talk[email protected]"
echo "🎨 Updating all Voicebox icons from exports..."
echo "🎨 Updating all TalkBox icons from exports..."
echo ""
# Check if source exists
@@ -31,7 +31,7 @@ echo "📦 Part 1: Compiling Liquid Glass Icon Bundle"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
echo "Compiling voicebox.icon with actool..."
echo "Compiling talkbox.icon with actool..."
# Remove old generated icons to force rebuild
rm -rf tauri/src-tauri/gen/*.icns tauri/src-tauri/gen/Assets.car 2>/dev/null
@@ -39,10 +39,10 @@ cd tauri/src-tauri
cargo build 2>/dev/null || echo " ⚠ Cargo build had warnings (this is normal)"
cd ../..
if [ -f "tauri/src-tauri/gen/voicebox.icns" ]; then
echo " ✓ voicebox.icns generated"
if [ -f "tauri/src-tauri/gen/talkbox.icns" ]; then
echo " ✓ talkbox.icns generated"
else
echo " ⚠ Warning: voicebox.icns not generated (will use fallback)"
echo " ⚠ Warning: talkbox.icns not generated (will use fallback)"
fi
echo ""
@@ -67,24 +67,24 @@ sips -s format png -z 512 512 "$SOURCE_ICON" --out "$ICONS_DIR/icon.png" 2>/dev/
# Copy Liquid Glass compiled ICNS or generate fallback
echo "Copying icon.icns..."
if [ -f "tauri/src-tauri/gen/voicebox.icns" ]; then
cp tauri/src-tauri/gen/voicebox.icns "$ICONS_DIR/icon.icns"
if [ -f "tauri/src-tauri/gen/talkbox.icns" ]; then
cp tauri/src-tauri/gen/talkbox.icns "$ICONS_DIR/icon.icns"
echo " ✓ Copied Liquid Glass compiled icon.icns"
else
echo " ⚠ Liquid Glass icon not found, generating fallback icon.icns..."
mkdir -p /tmp/voicebox-iconset.iconset
sips -s format png -z 16 16 "$SOURCE_ICON" --out /tmp/voicebox-iconset.iconset/icon_16x16.png 2>/dev/null
sips -s format png -z 32 32 "$SOURCE_ICON" --out /tmp/voicebox-iconset.iconset/[email protected] 2>/dev/null
sips -s format png -z 32 32 "$SOURCE_ICON" --out /tmp/voicebox-iconset.iconset/icon_32x32.png 2>/dev/null
sips -s format png -z 64 64 "$SOURCE_ICON" --out /tmp/voicebox-iconset.iconset/[email protected] 2>/dev/null
sips -s format png -z 128 128 "$SOURCE_ICON" --out /tmp/voicebox-iconset.iconset/icon_128x128.png 2>/dev/null
sips -s format png -z 256 256 "$SOURCE_ICON" --out /tmp/voicebox-iconset.iconset/[email protected] 2>/dev/null
sips -s format png -z 256 256 "$SOURCE_ICON" --out /tmp/voicebox-iconset.iconset/icon_256x256.png 2>/dev/null
sips -s format png -z 512 512 "$SOURCE_ICON" --out /tmp/voicebox-iconset.iconset/[email protected] 2>/dev/null
sips -s format png -z 512 512 "$SOURCE_ICON" --out /tmp/voicebox-iconset.iconset/icon_512x512.png 2>/dev/null
sips -s format png -z 1024 1024 "$SOURCE_ICON" --out /tmp/voicebox-iconset.iconset/[email protected] 2>/dev/null
iconutil -c icns /tmp/voicebox-iconset.iconset -o "$ICONS_DIR/icon.icns"
rm -rf /tmp/voicebox-iconset.iconset
mkdir -p /tmp/talkbox-iconset.iconset
sips -s format png -z 16 16 "$SOURCE_ICON" --out /tmp/talkbox-iconset.iconset/icon_16x16.png 2>/dev/null
sips -s format png -z 32 32 "$SOURCE_ICON" --out /tmp/talkbox-iconset.iconset/[email protected] 2>/dev/null
sips -s format png -z 32 32 "$SOURCE_ICON" --out /tmp/talkbox-iconset.iconset/icon_32x32.png 2>/dev/null
sips -s format png -z 64 64 "$SOURCE_ICON" --out /tmp/talkbox-iconset.iconset/[email protected] 2>/dev/null
sips -s format png -z 128 128 "$SOURCE_ICON" --out /tmp/talkbox-iconset.iconset/icon_128x128.png 2>/dev/null
sips -s format png -z 256 256 "$SOURCE_ICON" --out /tmp/talkbox-iconset.iconset/[email protected] 2>/dev/null
sips -s format png -z 256 256 "$SOURCE_ICON" --out /tmp/talkbox-iconset.iconset/icon_256x256.png 2>/dev/null
sips -s format png -z 512 512 "$SOURCE_ICON" --out /tmp/talkbox-iconset.iconset/[email protected] 2>/dev/null
sips -s format png -z 512 512 "$SOURCE_ICON" --out /tmp/talkbox-iconset.iconset/icon_512x512.png 2>/dev/null
sips -s format png -z 1024 1024 "$SOURCE_ICON" --out /tmp/talkbox-iconset.iconset/[email protected] 2>/dev/null
iconutil -c icns /tmp/talkbox-iconset.iconset -o "$ICONS_DIR/icon.icns"
rm -rf /tmp/talkbox-iconset.iconset
echo " ✓ Generated fallback icon.icns"
fi