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
+7 -7
View File
@@ -1,9 +1,9 @@
"""
Voicebox Cloud device login — the "Log in with browser" flow.
TalkBox Cloud device login — the "Log in with browser" flow.
The desktop opens the browser to ``{web}/connect``; the user authorizes while
signed in; the cloud redirects a single-use code back to this backend's loopback
callback. We exchange that code (server-to-server, over TLS) for a ``voicebox_…``
callback. We exchange that code (server-to-server, over TLS) for a ``talkbox_…``
API key, verify the key against the API, and store it locally. The key never
travels through a browser URL, and an unfinished flow leaves nothing behind.
@@ -97,11 +97,11 @@ async def handle_callback(db: Session, code: str, state: str) -> tuple[bool, str
payload = _json_dict(exchanged)
if payload is None:
logger.warning("cloud exchange returned a non-JSON payload")
return False, "Voicebox Cloud returned an unexpected response."
return False, "TalkBox Cloud returned an unexpected response."
api_key = payload.get("key")
device_name = payload.get("label")
if not api_key:
return False, "Voicebox Cloud did not return a key."
return False, "TalkBox Cloud did not return a key."
# Confirm the freshly minted key actually authenticates the API.
me = await client.get(
@@ -116,10 +116,10 @@ async def handle_callback(db: Session, code: str, state: str) -> tuple[bool, str
account_user_id = data.get("userId") if isinstance(data, dict) else None
except httpx.HTTPError:
logger.exception("network error during cloud exchange")
return False, "Could not reach Voicebox Cloud. Check your connection and try again."
return False, "Could not reach TalkBox Cloud. Check your connection and try again."
_store_key(db, api_key=api_key, device_name=device_name, account_user_id=account_user_id)
logger.info("connected to Voicebox Cloud as device %r", device_name)
logger.info("connected to TalkBox Cloud as device %r", device_name)
return True, "Connected"
@@ -154,7 +154,7 @@ def get_status(db: Session) -> dict:
"""Local view of the cloud link — never returns the full key."""
row = _get_or_create_row(db)
connected = bool(row.api_key)
# Prefix only: "voicebox_" (9) + 8 chars, matching the cloud's key_prefix.
# Prefix only: "talkbox_" (9) + 8 chars, matching the cloud's key_prefix.
key_prefix = row.api_key[:17] if row.api_key else None
return {
"connected": connected,
+8 -8
View File
@@ -2,7 +2,7 @@
CUDA backend download, assembly, and verification.
Downloads two archives from GitHub Releases:
1. Server core (voicebox-server-cuda.tar.gz) — the exe + non-NVIDIA deps,
1. Server core (talkbox-server-cuda.tar.gz) — the exe + non-NVIDIA deps,
versioned with the app.
2. CUDA libs (cuda-libs-{version}.tar.gz) — NVIDIA runtime libraries,
versioned independently (only redownloaded on CUDA toolkit bump).
@@ -27,7 +27,7 @@ from ..utils.progress import get_progress_manager
logger = logging.getLogger(__name__)
GITHUB_RELEASES_URL = "https://github.com/jamiepine/voicebox/releases/download"
GITHUB_RELEASES_URL = "https://github.com/jamiepine/talkbox/releases/download"
PROGRESS_KEY = "cuda-backend"
@@ -61,8 +61,8 @@ def get_cuda_dir() -> Path:
def get_cuda_exe_name() -> str:
"""Platform-specific CUDA executable filename."""
if sys.platform == "win32":
return "voicebox-server-cuda.exe"
return "voicebox-server-cuda"
return "talkbox-server-cuda.exe"
return "talkbox-server-cuda"
def is_cuda_download_supported() -> bool:
@@ -115,7 +115,7 @@ def is_cuda_active() -> bool:
The CUDA binary sets this env var on startup (see server.py).
"""
return os.environ.get("VOICEBOX_BACKEND_VARIANT") == "cuda"
return os.environ.get("TALKBOX_BACKEND_VARIANT") == "cuda"
def get_cuda_status() -> dict:
@@ -312,7 +312,7 @@ async def _download_cuda_binary_locked(version: Optional[str] = None):
)
base_url = f"{GITHUB_RELEASES_URL}/{version}"
server_archive = "voicebox-server-cuda.tar.gz"
server_archive = "talkbox-server-cuda.tar.gz"
libs_archive = f"cuda-libs-{CUDA_LIBS_VERSION}.tar.gz"
try:
@@ -394,9 +394,9 @@ def get_cuda_binary_version() -> Optional[str]:
timeout=30,
cwd=str(cuda_path.parent), # Run from the onedir directory
)
# Output format: "voicebox-server 0.3.0"
# Output format: "talkbox-server 0.3.0"
for line in result.stdout.strip().splitlines():
if "voicebox-server" in line:
if "talkbox-server" in line:
return line.split()[-1]
except Exception as e:
logger.warning(f"Could not get CUDA binary version: {e}")
+8 -8
View File
@@ -2,7 +2,7 @@
ROCm backend download, assembly, and verification.
Downloads two archives from GitHub Releases:
1. Server core (voicebox-server-rocm.tar.gz) — the exe + non-AMD deps,
1. Server core (talkbox-server-rocm.tar.gz) — the exe + non-AMD deps,
versioned with the app.
2. ROCm libs (rocm-libs-{version}.tar.gz) — AMD runtime libraries,
versioned independently (only redownloaded on ROCm toolkit bump).
@@ -28,7 +28,7 @@ from .. import __version__
logger = logging.getLogger(__name__)
GITHUB_RELEASES_URL = "https://github.com/jamiepine/voicebox/releases/download"
GITHUB_RELEASES_URL = "https://github.com/jamiepine/talkbox/releases/download"
PROGRESS_KEY = "rocm-backend"
@@ -60,8 +60,8 @@ def get_rocm_dir() -> Path:
def get_rocm_exe_name() -> str:
"""Platform-specific ROCm executable filename."""
if sys.platform == "win32":
return "voicebox-server-rocm.exe"
return "voicebox-server-rocm"
return "talkbox-server-rocm.exe"
return "talkbox-server-rocm"
def get_rocm_binary_path() -> Optional[Path]:
@@ -95,7 +95,7 @@ def is_rocm_active() -> bool:
The ROCm binary sets this env var on startup (see server.py).
"""
return os.environ.get("VOICEBOX_BACKEND_VARIANT") == "rocm"
return os.environ.get("TALKBOX_BACKEND_VARIANT") == "rocm"
def get_rocm_status() -> dict:
@@ -287,7 +287,7 @@ async def _download_rocm_binary_locked(version: Optional[str] = None):
# release tag; the libs content version is encoded in the filename only.
server_base_url = f"{GITHUB_RELEASES_URL}/{version}"
libs_base_url = server_base_url
server_archive = "voicebox-server-rocm.tar.gz"
server_archive = "talkbox-server-rocm.tar.gz"
libs_archive = f"rocm-libs-{ROCM_LIBS_VERSION}.tar.gz"
# Always stage when any download is needed, then atomically rename over
@@ -409,9 +409,9 @@ def get_rocm_binary_version() -> Optional[str]:
timeout=30,
cwd=str(rocm_path.parent), # Run from the onedir directory
)
# Output format: "voicebox-server 0.3.0"
# Output format: "talkbox-server 0.3.0"
for line in result.stdout.strip().splitlines():
if "voicebox-server" in line:
if "talkbox-server" in line:
return line.split()[-1]
except Exception as e:
logger.warning(f"Could not get ROCm binary version: {e}")