diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 9dca11d8..241a703c 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.4.4 +current_version = 0.4.5 commit = True tag = True tag_name = v{new_version} diff --git a/CHANGELOG.md b/CHANGELOG.md index be48b6a9..1559d692 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,15 @@ ## [Unreleased] +## [0.4.5] - 2026-04-22 + +Second hotfix for the "offline mode is enabled" crash on model load. 0.4.4 reverted the inference-path offline guards but kept the same trap on the load path, so users who updated to 0.4.4 kept hitting the exact error the release was supposed to fix ([#526](https://github.com/jamiepine/voicebox/issues/526)). This release removes the load-path guards and patches the transformers tokenizer load to be robust to HuggingFace metadata failures at the source, so the class of bug can't recur. + +### Reliability + +- **Load no longer fails with "offline mode is enabled"** ([#530](https://github.com/jamiepine/voicebox/pull/530), fixes [#526](https://github.com/jamiepine/voicebox/issues/526)). transformers 4.57.x added an unconditional `huggingface_hub.model_info()` call inside `AutoTokenizer.from_pretrained` (via `_patch_mistral_regex`) that runs for every non-local repo load, regardless of cache state or whether the target model is actually a Mistral variant. The load-time `HF_HUB_OFFLINE` guard from 0.4.2 turned that into a hard crash for cached online users the moment 0.4.4 removed the inference-path guard that had been masking the problem. Fix wraps `_patch_mistral_regex` so any exception from the HF metadata check is caught and the tokenizer is returned unchanged — matching the success-path behavior for non-Mistral repos. The wrapper installs at `backend.backends` import time so it covers Qwen Base, Qwen CustomVoice, TADA, and every other transformers-backed engine on Windows, Linux, and CUDA alike. The load-time `force_offline_if_cached` guards were removed — with the wrapper in place they provide zero value and only risk re-introducing the same failure mode. +- **No more 30s pause when generating without a network.** The HuggingFace metadata timeout called out as a known caveat in 0.4.4 is covered by the same patch; offline users no longer wait for the check to time out before load completes. + ## [0.4.4] - 2026-04-21 Hotfix for a regression in 0.4.3 where generation and transcription could fail outright with "offline mode is enabled" even when the user was online. @@ -648,7 +657,8 @@ The first public release of Voicebox — an open-source voice synthesis studio p Tauri v2, React, TypeScript, Tailwind CSS, FastAPI, Qwen3-TTS, Whisper, SQLite -[Unreleased]: https://github.com/jamiepine/voicebox/compare/v0.4.4...HEAD +[Unreleased]: https://github.com/jamiepine/voicebox/compare/v0.4.5...HEAD +[0.4.5]: https://github.com/jamiepine/voicebox/compare/v0.4.4...v0.4.5 [0.4.4]: https://github.com/jamiepine/voicebox/compare/v0.4.3...v0.4.4 [0.4.3]: https://github.com/jamiepine/voicebox/compare/v0.4.2...v0.4.3 [0.4.2]: https://github.com/jamiepine/voicebox/compare/v0.4.1...v0.4.2 diff --git a/app/package.json b/app/package.json index f149fb1a..a94b30b6 100644 --- a/app/package.json +++ b/app/package.json @@ -1,6 +1,6 @@ { "name": "@voicebox/app", - "version": "0.4.4", + "version": "0.4.5", "private": true, "type": "module", "scripts": { diff --git a/backend/__init__.py b/backend/__init__.py index 8cad287e..63f7c5fb 100644 --- a/backend/__init__.py +++ b/backend/__init__.py @@ -1,3 +1,3 @@ # Backend package -__version__ = "0.4.4" +__version__ = "0.4.5" diff --git a/landing/package.json b/landing/package.json index 31d0bd69..b2cbe986 100644 --- a/landing/package.json +++ b/landing/package.json @@ -1,6 +1,6 @@ { "name": "@voicebox/landing", - "version": "0.4.4", + "version": "0.4.5", "description": "Landing page for voicebox.sh", "scripts": { "dev": "next dev --turbo", diff --git a/package.json b/package.json index faee3526..9415f61a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "voicebox", - "version": "0.4.4", + "version": "0.4.5", "private": true, "workspaces": [ "app", diff --git a/tauri/package.json b/tauri/package.json index e2354229..a7b273f8 100644 --- a/tauri/package.json +++ b/tauri/package.json @@ -1,7 +1,7 @@ { "name": "@voicebox/tauri", "private": true, - "version": "0.4.4", + "version": "0.4.5", "type": "module", "scripts": { "dev": "vite", diff --git a/tauri/src-tauri/Cargo.toml b/tauri/src-tauri/Cargo.toml index adc480f0..acc021bd 100644 --- a/tauri/src-tauri/Cargo.toml +++ b/tauri/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "voicebox" -version = "0.4.4" +version = "0.4.5" description = "A production-quality desktop app for Qwen3-TTS voice cloning and generation" authors = ["you"] license = "" diff --git a/tauri/src-tauri/tauri.conf.json b/tauri/src-tauri/tauri.conf.json index 9cb3efb6..85b7a4f9 100644 --- a/tauri/src-tauri/tauri.conf.json +++ b/tauri/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "Voicebox", - "version": "0.4.4", + "version": "0.4.5", "identifier": "sh.voicebox.app", "build": { "beforeDevCommand": "bun run dev", diff --git a/web/package.json b/web/package.json index ff8b2668..b8bb5ee2 100644 --- a/web/package.json +++ b/web/package.json @@ -1,7 +1,7 @@ { "name": "@voicebox/web", "private": true, - "version": "0.4.4", + "version": "0.4.5", "type": "module", "scripts": { "dev": "vite",