docs: audit mdx docs against multi-engine backend#484
Conversation
…ontent Rewrote developer-facing docs that predated the TTSBackend Protocol / ModelConfig registry refactor (architecture, tts-generation, model-management, transcription). Updated user-facing docs to reflect all seven shipped engines (Qwen, Qwen CustomVoice, LuxTTS, Chatterbox, Chatterbox Turbo, TADA, Kokoro) instead of the outdated "5 engines" claim. Also fixes: - Stale app identifier (com.voicebox.app → sh.voicebox.app) - CUDA backend update flow (now two-archive split, not N-way chunks) - Whisper model list (removed tiny, added turbo) - Broken /development/ and /guides/ route links - Stale just commands and install steps (missing --no-deps chatterbox/tada) - Removed ASCII art diagrams from README and stories.mdx - History Generation schema sync with DB model Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Caution Review failedPull request was closed or merged during review No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughThis PR is documentation-only and reorganizes docs to describe a pluggable multi-engine TTS/STT architecture, adds a living roadmap ( Changes
Sequence Diagram(s)sequenceDiagram
participant Client
participant API as Backend API
participant Service as Generation Service
participant Registry as Model Registry
participant Engine as TTS/STT Backend
participant DB as Database
Client->>API: POST /generate {text, engine?}
API->>Service: validate & enqueue request
Service->>Registry: resolve ModelConfig(engine, model_size)
Registry->>Engine: is_loaded? / load_model(model_size)
alt model not loaded
Engine->>Registry: download/load (SSE progress)
Registry->>Service: notify ready
end
Service->>Engine: generate(text, voice_prompt)
Engine->>Service: return audio bytes + metadata
Service->>DB: persist generation record (engine, model_size, status)
Service->>API: return generation_id / status
Client->>API: GET /audio/{generation_id} -> audio stream
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 7
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (3)
README.md (1)
62-73:⚠️ Potential issue | 🟡 MinorREADME still advertises "5 TTS engines" — out of sync with the 7-engine docs update.
The PR description states "engine count updated to 7; added Kokoro and Qwen CustomVoice", and
docs/content/docs/index.mdx(line 11) now lists all 7 engines. README.md still says "5 TTS engines" on lines 62 and 65, and the feature table (lines 94–104) and Tech Stack row (line 239) omit Kokoro and Qwen CustomVoice. This is the most visible project entry-point and will confuse users landing here first.Suggested fix
-Voicebox is a **local-first voice cloning studio** — a free and open-source alternative to ElevenLabs. Clone voices from a few seconds of audio, generate speech in 23 languages across 5 TTS engines, apply post-processing effects, and compose multi-voice projects with a timeline editor. +Voicebox is a **local-first voice cloning studio** — a free and open-source alternative to ElevenLabs. Clone voices from a few seconds of audio, generate speech in 23 languages across 7 TTS engines, apply post-processing effects, and compose multi-voice projects with a timeline editor. - **Complete privacy** — models and voice data stay on your machine -- **5 TTS engines** — Qwen3-TTS, LuxTTS, Chatterbox Multilingual, Chatterbox Turbo, and HumeAI TADA +- **7 TTS engines** — Qwen3-TTS, Qwen CustomVoice, LuxTTS, Chatterbox Multilingual, Chatterbox Turbo, HumeAI TADA, and KokoroSimilarly update the "Multi-Engine Voice Cloning" table (lines 94–104) and the "TTS Engines" row in the Tech Stack table (line 239) to include Kokoro and Qwen CustomVoice, and consider extending the "Emotions & Paralinguistic Tags" note (lines 106–110) with the Qwen CustomVoice instruct/delivery-control feature already documented in
docs/content/docs/index.mdx.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@README.md` around lines 62 - 73, The README still says "5 TTS engines" and omits Kokoro and Qwen CustomVoice; update the phrase "5 TTS engines" to "7 TTS engines", add Kokoro and Qwen CustomVoice to the bulleted engines list (currently listing Qwen3-TTS, LuxTTS, Chatterbox Multilingual, Chatterbox Turbo, and HumeAI TADA), update the "Multi-Engine Voice Cloning" table to include Kokoro and Qwen CustomVoice entries, update the "TTS Engines" row in the Tech Stack table to list all seven engines, and extend the "Emotions & Paralinguistic Tags" note to mention Qwen CustomVoice's instruct/delivery-control feature as documented in docs/content/docs/index.mdx.CONTRIBUTING.md (1)
94-94:⚠️ Potential issue | 🟡 MinorMissed app-identifier rename on line 94:
com.voicebox.app→sh.voicebox.app.The Tauri bundle identifier was changed from
com.voicebox.apptosh.voicebox.app, and this was updated across overview docs (installation, generation-history, troubleshooting). Line 94 still references the old identifier in%APPDATA%/com.voicebox.app/backends/, which will point users to a stale directory.Suggested fix
-This builds the CPU sidecar (bundled with the app), the CUDA binary (placed in `%APPDATA%/com.voicebox.app/backends/` for runtime GPU switching), and the installable Tauri app. +This builds the CPU sidecar (bundled with the app), the CUDA binary (placed in `%APPDATA%/sh.voicebox.app/backends/` for runtime GPU switching), and the installable Tauri app.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@CONTRIBUTING.md` at line 94, Replace the outdated bundle identifier "com.voicebox.app" with the new identifier "sh.voicebox.app" in the sentence that references the runtime GPU switching directory (the phrase "%APPDATA%/com.voicebox.app/backends/") so it reads "%APPDATA%/sh.voicebox.app/backends/"; ensure only that identifier text is updated and surrounding phrasing remains unchanged.docs/content/docs/developer/contributing.mdx (1)
236-247:⚠️ Potential issue | 🟡 MinorStale guidance: the "Add Route" step still points at
backend/main.py.The updated Project Structure (lines 176-186) and the backend refactor both move route handlers into the
backend/routes/package with auto-dispatch viaregister_routers()(seebackend/routes/__init__.py). The "API Development → Add Route" step telling contributors to add@app.post(...)inbackend/main.pycontradicts that and will lead new contributors to put endpoints in the wrong place.Consider updating to direct contributors to add a router module under
backend/routes/(and register it inbackend/routes/__init__.py), matching the actual structure documented elsewhere in this file.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/content/docs/developer/contributing.mdx` around lines 236 - 247, The "Add Route" step is stale and instructs contributors to add endpoints in backend/main.py; update it to instruct adding a new router module under the backend/routes package and registering it via register_routers() in backend/routes/__init__.py; specifically, replace the example that shows defining `@app.post`(...) in backend/main.py with guidance to create a new router file (e.g., new_route.py) exporting a FastAPI APIRouter, add route handlers to that APIRouter, and ensure register_routers() picks up or is updated to include the new router so the endpoint is auto-dispatched.
🧹 Nitpick comments (2)
docs/content/docs/developer/autoupdater.mdx (1)
157-160: Hardcodedcu128-v1libs archive name will drift.The doc hardcodes
cuda-libs-cu128-v1.tar.gzin multiple places, but the backend builds this name fromCUDA_LIBS_VERSION(f"cuda-libs-{CUDA_LIBS_VERSION}.tar.gz"inbackend/services/cuda.py). On the next CUDA toolkit bump (e.g. cu129), these doc references will silently go stale. Consider using a placeholder likecuda-libs-<CUDA_LIBS_VERSION>.tar.gz(as you already do for the storage layout on line 183-186 with{data_dir}) and only mentioning a concrete version once as "current: cu128-v1". Non-blocking.Also applies to: 215-217
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/content/docs/developer/autoupdater.mdx` around lines 157 - 160, The docs hardcode the archive name `cuda-libs-cu128-v1.tar.gz` which will drift relative to the runtime name built from CUDA_LIBS_VERSION in backend/services/cuda.py (f"cuda-libs-{CUDA_LIBS_VERSION}.tar.gz"); update the doc text to use a placeholder like `cuda-libs-<CUDA_LIBS_VERSION>.tar.gz` wherever the concrete name is currently used (including the other occurrences noted) and optionally mention the current value once as "current: cu128-v1" so the docs stay correct when CUDA_LIBS_VERSION changes.docs/content/docs/developer/history.mdx (1)
65-75: Example can drop the explicitid/created_atnow that the model sets defaults.Now that
idusesdefault=lambda: str(uuid.uuid4())andcreated_atdefaults todatetime.utcnow, the example code still passes both explicitly, which conflicts with the point the updated schema documents above. Optional tidy-up for consistency with the new model definition.♻️ Proposed tweak
db_generation = DBGeneration( - id=str(uuid.uuid4()), profile_id=profile_id, text=text, language=language, audio_path=audio_path, duration=duration, seed=seed, instruct=instruct, - created_at=datetime.utcnow(), )🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/content/docs/developer/history.mdx` around lines 65 - 75, The example instantiates DBGeneration with explicit id and created_at even though DBGeneration now provides defaults; remove the id=str(uuid.uuid4()) and created_at=datetime.utcnow() arguments from the DBGeneration(...) call so the model defaults are used, leaving profile_id, text, language, audio_path, duration, seed, and instruct intact; ensure the example still constructs DBGeneration and assigns it to db_generation.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@docs/content/docs/developer/architecture.mdx`:
- Around line 84-93: Remove the two non-existent backend entries qwen_backend.py
and tada_backend.py from the listed file tree (the <File name="qwen_backend.py"
/> and <File name="tada_backend.py" /> lines) in the architecture document;
optionally add the existing but unlisted hume_backend.py as <File
name="hume_backend.py" /> if that backend is supported, ensuring the remaining
entries (pytorch_backend.py, mlx_backend.py, qwen_custom_voice_backend.py,
luxtts_backend.py, chatterbox_backend.py, chatterbox_turbo_backend.py,
kokoro_backend.py) stay unchanged.
In `@docs/content/docs/developer/model-management.mdx`:
- Line 29: Kokoro's language count in the docs is inconsistent—update the
documentation to match the canonical source by checking the
ModelConfig.languages list used by the Kokoro backend (see
backend/backends/__init__.py or the Kokoro backend implementation) and reconcile
the value: either correct the docs
(docs/content/docs/developer/model-management.mdx, docs/PROJECT_STATUS.md, and
the landscape table) to the number in ModelConfig.languages or, if ModelConfig
is wrong, update ModelConfig.languages in the Kokoro backend to include the
missing language(s); ensure all three doc locations and the backend agree on the
final integer and run a quick search for any other occurrences of "Kokoro" to
keep them consistent.
- Line 62: The docs reference for ProgressManager is pointing to the wrong
module; update the doc line that currently says "backend/services/progress.py"
to the correct module path "backend/utils/progress.py" (the class is
ProgressManager in backend/utils/progress.py, sibling to HFProgressTracker in
backend/utils/hf_progress.py) so the documentation correctly reflects where
ProgressManager is implemented.
In `@docs/content/docs/developer/tts-generation.mdx`:
- Line 226: The heading "### Per-engine VRAM (approximate, 1080p samples)"
incorrectly references "1080p" (video); update that heading to remove or replace
the video-specific qualifier—for example change it to "### Per-engine VRAM
(approximate)" or "### Per-engine VRAM (approximate, on CUDA)"—so the text
accurately reflects audio-related VRAM estimates; modify the heading string in
the docs file where "Per-engine VRAM (approximate, 1080p samples)" appears.
- Around line 43-54: The ModelConfig dataclass in the docs uses a mutable
default for the languages field which will raise a ValueError; update the
languages field in ModelConfig to use dataclasses.field with a default_factory
(e.g., field(default_factory=lambda: ["en"])) instead of a plain list literal so
the dataclass can be instantiated safely; ensure you import field from
dataclasses if not present and leave other fields (model_name, display_name,
engine, hf_repo_id, model_size, size_mb, needs_trim, supports_instruct)
unchanged.
In `@docs/PROJECT_STATUS.md`:
- Line 22: The fenced code blocks containing the ASCII diagram and the flow
pseudocode in PROJECT_STATUS.md are missing a language tag (MD040); update those
fenced blocks (the ASCII diagram block around the "Tauri Shell (Rust)" diagram
and the flow pseudocode block later in the file) to use a neutral language tag
such as text by changing ``` to ```text so markdownlint no longer flags them.
- Line 220: Update the Kokoro row in the
docs/content/docs/developer/model-management.mdx table to show 8 supported
languages (en, es, fr, hi, it, pt, ja, zh) to match the backend ModelConfig's
language array in ModelConfig (backend/backends/__init__.py) and the
docs/PROJECT_STATUS.md entry; locate the Kokoro table row in
model-management.mdx and change the language count/label from 9 to 8 so all
three sources are consistent.
---
Outside diff comments:
In `@CONTRIBUTING.md`:
- Line 94: Replace the outdated bundle identifier "com.voicebox.app" with the
new identifier "sh.voicebox.app" in the sentence that references the runtime GPU
switching directory (the phrase "%APPDATA%/com.voicebox.app/backends/") so it
reads "%APPDATA%/sh.voicebox.app/backends/"; ensure only that identifier text is
updated and surrounding phrasing remains unchanged.
In `@docs/content/docs/developer/contributing.mdx`:
- Around line 236-247: The "Add Route" step is stale and instructs contributors
to add endpoints in backend/main.py; update it to instruct adding a new router
module under the backend/routes package and registering it via
register_routers() in backend/routes/__init__.py; specifically, replace the
example that shows defining `@app.post`(...) in backend/main.py with guidance to
create a new router file (e.g., new_route.py) exporting a FastAPI APIRouter, add
route handlers to that APIRouter, and ensure register_routers() picks up or is
updated to include the new router so the endpoint is auto-dispatched.
In `@README.md`:
- Around line 62-73: The README still says "5 TTS engines" and omits Kokoro and
Qwen CustomVoice; update the phrase "5 TTS engines" to "7 TTS engines", add
Kokoro and Qwen CustomVoice to the bulleted engines list (currently listing
Qwen3-TTS, LuxTTS, Chatterbox Multilingual, Chatterbox Turbo, and HumeAI TADA),
update the "Multi-Engine Voice Cloning" table to include Kokoro and Qwen
CustomVoice entries, update the "TTS Engines" row in the Tech Stack table to
list all seven engines, and extend the "Emotions & Paralinguistic Tags" note to
mention Qwen CustomVoice's instruct/delivery-control feature as documented in
docs/content/docs/index.mdx.
---
Nitpick comments:
In `@docs/content/docs/developer/autoupdater.mdx`:
- Around line 157-160: The docs hardcode the archive name
`cuda-libs-cu128-v1.tar.gz` which will drift relative to the runtime name built
from CUDA_LIBS_VERSION in backend/services/cuda.py
(f"cuda-libs-{CUDA_LIBS_VERSION}.tar.gz"); update the doc text to use a
placeholder like `cuda-libs-<CUDA_LIBS_VERSION>.tar.gz` wherever the concrete
name is currently used (including the other occurrences noted) and optionally
mention the current value once as "current: cu128-v1" so the docs stay correct
when CUDA_LIBS_VERSION changes.
In `@docs/content/docs/developer/history.mdx`:
- Around line 65-75: The example instantiates DBGeneration with explicit id and
created_at even though DBGeneration now provides defaults; remove the
id=str(uuid.uuid4()) and created_at=datetime.utcnow() arguments from the
DBGeneration(...) call so the model defaults are used, leaving profile_id, text,
language, audio_path, duration, seed, and instruct intact; ensure the example
still constructs DBGeneration and assigns it to db_generation.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 6abb6c45-e673-4e82-9074-dd7e027f2025
📒 Files selected for processing (30)
CONTRIBUTING.mdREADME.mddocs/PROJECT_STATUS.mddocs/content/docs/README.mddocs/content/docs/TROUBLESHOOTING.mddocs/content/docs/developer/architecture.mdxdocs/content/docs/developer/autoupdater.mdxdocs/content/docs/developer/contributing.mdxdocs/content/docs/developer/history.mdxdocs/content/docs/developer/model-management.mdxdocs/content/docs/developer/setup.mdxdocs/content/docs/developer/stories.mdxdocs/content/docs/developer/transcription.mdxdocs/content/docs/developer/tts-engines.mdxdocs/content/docs/developer/tts-generation.mdxdocs/content/docs/developer/voice-profiles.mdxdocs/content/docs/index.mdxdocs/content/docs/overview/creating-voice-profiles.mdxdocs/content/docs/overview/generation-history.mdxdocs/content/docs/overview/installation.mdxdocs/content/docs/overview/introduction.mdxdocs/content/docs/overview/remote-mode.mdxdocs/content/docs/overview/troubleshooting.mdxdocs/notes/BACKEND_CODE_REVIEW.mddocs/notes/MIGRATION.mddocs/notes/PROJECT_STATUS.mddocs/notes/RELEASE_v0.2.0.mddocs/notes/issue-pain-points.mddocs/plans/API_REFACTOR_PLAN.mddocs/plans/CUDA_LIBS_ADDON.md
💤 Files with no reviewable changes (7)
- docs/notes/MIGRATION.md
- docs/notes/PROJECT_STATUS.md
- docs/notes/RELEASE_v0.2.0.md
- docs/notes/issue-pain-points.md
- docs/plans/API_REFACTOR_PLAN.md
- docs/notes/BACKEND_CODE_REVIEW.md
- docs/plans/CUDA_LIBS_ADDON.md
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- architecture.mdx: fix backends/ file list (remove nonexistent qwen_backend.py, rename tada_backend.py → hume_backend.py) - model-management.mdx: Kokoro language count 9 → 8 (matches ModelConfig) - model-management.mdx: ProgressManager path services/ → utils/ - tts-generation.mdx: ModelConfig example uses field(default_factory=...) — mutable default would raise at runtime - tts-generation.mdx: "1080p samples" → "on CUDA" (1080p is video, not audio) - PROJECT_STATUS.md: replace ASCII architecture diagram with prose (matches no-ASCII-art rule) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
♻️ Duplicate comments (1)
docs/PROJECT_STATUS.md (1)
69-83:⚠️ Potential issue | 🟡 MinorFenced code block still missing a language tag (MD040).
markdownlint flags line 69. Tagging as
textkeeps the pseudo-flow rendered as-is and silences the rule.📝 Proposed fix
-``` +```text POST /generate 1. Look up voice profile from DB🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/PROJECT_STATUS.md` around lines 69 - 83, The fenced code block containing the POST /generate sequence lacks a language tag; update the opening fence from ``` to ```text so the block is treated as plain text (e.g., change the block that starts with "POST /generate" and the numbered steps to begin with ```text and end with ```), which will satisfy markdownlint MD040 and preserve the pseudo-flow rendering.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Duplicate comments:
In `@docs/PROJECT_STATUS.md`:
- Around line 69-83: The fenced code block containing the POST /generate
sequence lacks a language tag; update the opening fence from ``` to ```text so
the block is treated as plain text (e.g., change the block that starts with
"POST /generate" and the numbered steps to begin with ```text and end with ```),
which will satisfy markdownlint MD040 and preserve the pseudo-flow rendering.
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: f21c9efa-7b8b-42c2-a018-d8c07e1e463d
📒 Files selected for processing (4)
docs/PROJECT_STATUS.mddocs/content/docs/developer/architecture.mdxdocs/content/docs/developer/model-management.mdxdocs/content/docs/developer/tts-generation.mdx
…t check
form.getValues('engine') returns string | undefined; Set<string>.has()
rejects undefined under strict mode. Added a truthy guard before the
preset lookup.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Summary
Documentation audit pass — brings the docs back in line with the v0.4.1 codebase after the multi-engine backend refactor.
Rewrites (docs that predated the
TTSBackendProtocol /ModelConfigregistry):developer/architecture.mdx— removed single-engine framing; now documents the Protocol + registry, thread-safe engine factory, and shipped-engine tabledeveloper/tts-generation.mdx— replaced fictionalTTSModelclass with the real multi-engine flow; added voice-prompt patterns (A/B/C) and per-engine VRAM tabledeveloper/model-management.mdx— covers all 7 TTS engines + corrected Whisper list (removedtiny, addedturbo)developer/transcription.mdx— removed fictionalWhisperModelclass; documents realMLXSTTBackend+PyTorchSTTBackendsplitUser-facing fixes:
index.mdx+overview/introduction.mdx— 5 → 7 engines; added Kokoro + Qwen CustomVoice with new Profile Type columnoverview/installation.mdx/overview/generation-history.mdx/overview/troubleshooting.mdx/TROUBLESHOOTING.md— stale app identifier (com.voicebox.app→sh.voicebox.app), stalebun run dev:server→just dev-backend, multi-engine-aware cache pathsoverview/remote-mode.mdx— install steps updated to include--no-deps chatterbox-tts/hume-tada; broken/guides/link fixedDeveloper-facing fixes:
developer/tts-engines.mdx— "Upcoming Engines" table replaced with current Tier 1–3 candidates pointing toPROJECT_STATUS.mddeveloper/setup.mdx— completejustcommand reference; added missing--no-depsinstall stepsdeveloper/contributing.mdx— removed nonexistentbackend/tts.py; addedPROJECT_STATUS.mdreferences; fixed broken/development/linksdeveloper/voice-profiles.mdx— generalized sample-rate claim (engine-specific, not hardcoded 24 kHz)developer/history.mdx—Generationschema synced with DB (addedengine,model_size,status,error,is_favorited)developer/autoupdater.mdx— CUDA section rewritten for the two-archive split (server core + CUDA libs) instead of N-way chunkingASCII diagrams removed:
content/docs/README.md— tree diagram replaced with bulleted structuredeveloper/stories.mdx— three ASCII timeline/track/trim diagrams replaced with proseAlso includes:
docs/PROJECT_STATUS.md— moved fromdocs/notes/and refreshed for v0.4.1; referenced from README and CONTRIBUTING as the living engineering roadmapdocs/notes/anddocs/plans/(superseded content)Test plan
cd docs && bun run devbuilds without MDX syntax errors (verified locally after fixing<5 seconds→under 5 secondsin transcription.mdx)/development/or/guides/routes remain)backend/backends/__init__.py::TTS_ENGINESsh.voicebox.apppaths matchtauri.conf.jsonidentifier🤖 Generated with Claude Code
Note
Low Risk
Low risk: documentation-only changes plus removal/addition of markdown files; no runtime code paths are modified.
Overview
Updates the documentation set to match the v0.4.1 multi-engine reality (7 TTS engines,
TTSBackend/ModelConfigregistry, MLX vs PyTorch STT split), rewriting several developer guides (architecture,tts-generation,model-management,transcription) and refreshing user-facing pages to reflect new engine options and behaviors.Adds a new top-level living roadmap
docs/PROJECT_STATUS.mdand links to it fromREADME.md/CONTRIBUTING.md, while cleaning up obsoletedocs/notes/*content. Also fixes stale paths/identifiers and commands across docs (e.g.,com.voicebox.app→sh.voicebox.app,bun run …→just …,/guides//developmentlinks → current routes) and updates CUDA backend update docs to describe the two-archive split.Reviewed by Cursor Bugbot for commit ed19152. Configure here.
Summary by CodeRabbit