Skip to content

docs: audit mdx docs against multi-engine backend#484

Merged
jamiepine merged 4 commits intomainfrom
voicebox-new-models
Apr 19, 2026
Merged

docs: audit mdx docs against multi-engine backend#484
jamiepine merged 4 commits intomainfrom
voicebox-new-models

Conversation

@jamiepine
Copy link
Copy Markdown
Owner

@jamiepine jamiepine commented Apr 19, 2026

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 TTSBackend Protocol / ModelConfig registry):

  • developer/architecture.mdx — removed single-engine framing; now documents the Protocol + registry, thread-safe engine factory, and shipped-engine table
  • developer/tts-generation.mdx — replaced fictional TTSModel class with the real multi-engine flow; added voice-prompt patterns (A/B/C) and per-engine VRAM table
  • developer/model-management.mdx — covers all 7 TTS engines + corrected Whisper list (removed tiny, added turbo)
  • developer/transcription.mdx — removed fictional WhisperModel class; documents real MLXSTTBackend + PyTorchSTTBackend split

User-facing fixes:

  • index.mdx + overview/introduction.mdx — 5 → 7 engines; added Kokoro + Qwen CustomVoice with new Profile Type column
  • overview/installation.mdx / overview/generation-history.mdx / overview/troubleshooting.mdx / TROUBLESHOOTING.md — stale app identifier (com.voicebox.appsh.voicebox.app), stale bun run dev:serverjust dev-backend, multi-engine-aware cache paths
  • overview/remote-mode.mdx — install steps updated to include --no-deps chatterbox-tts / hume-tada; broken /guides/ link fixed

Developer-facing fixes:

  • developer/tts-engines.mdx — "Upcoming Engines" table replaced with current Tier 1–3 candidates pointing to PROJECT_STATUS.md
  • developer/setup.mdx — complete just command reference; added missing --no-deps install steps
  • developer/contributing.mdx — removed nonexistent backend/tts.py; added PROJECT_STATUS.md references; fixed broken /development/ links
  • developer/voice-profiles.mdx — generalized sample-rate claim (engine-specific, not hardcoded 24 kHz)
  • developer/history.mdxGeneration schema synced with DB (added engine, 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 chunking

ASCII diagrams removed:

  • content/docs/README.md — tree diagram replaced with bulleted structure
  • developer/stories.mdx — three ASCII timeline/track/trim diagrams replaced with prose

Also includes:

  • docs/PROJECT_STATUS.md — moved from docs/notes/ and refreshed for v0.4.1; referenced from README and CONTRIBUTING as the living engineering roadmap
  • Cleanup of obsolete docs under docs/notes/ and docs/plans/ (superseded content)

Test plan

  • cd docs && bun run dev builds without MDX syntax errors (verified locally after fixing <5 secondsunder 5 seconds in transcription.mdx)
  • Spot-check that internal cross-links resolve in the rendered site (no /development/ or /guides/ routes remain)
  • Verify engine counts and lists match backend/backends/__init__.py::TTS_ENGINES
  • Confirm sh.voicebox.app paths match tauri.conf.json identifier

🤖 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/ModelConfig registry, 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.md and links to it from README.md/CONTRIBUTING.md, while cleaning up obsolete docs/notes/* content. Also fixes stale paths/identifiers and commands across docs (e.g., com.voicebox.appsh.voicebox.app, bun run …just …, /guides//development links → 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

  • Documentation
    • Expanded TTS support from 5→7 engines (added preset and cloning options, 50+ preset voices) and converted docs to an engine-agnostic multi-engine flow; added and linked a living project-status roadmap; updated onboarding, setup, model-management, troubleshooting, and developer guides (model download/progress, commands, and platform paths).
  • Documentation Cleanup
    • Removed several obsolete planning, migration, and legacy release/status notes.

…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>
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Apr 19, 2026

Caution

Review failed

Pull request was closed or merged during review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 95de2ecb-e74a-44b2-a556-dba229054b79

📥 Commits

Reviewing files that changed from the base of the PR and between b91d5d7 and 8fcc9b6.

📒 Files selected for processing (1)
  • app/src/components/Generation/FloatingGenerateBox.tsx

📝 Walkthrough

Walkthrough

This PR is documentation-only and reorganizes docs to describe a pluggable multi-engine TTS/STT architecture, adds a living roadmap (docs/PROJECT_STATUS.md), updates contributor/README guidance, standardizes just workflows and model APIs, adjusts app paths, and removes several legacy notes/plans. One tiny frontend guard fix was applied.

Changes

Cohort / File(s) Summary
Top-level guidance
CONTRIBUTING.md, README.md
Direct contributors/readers to docs/PROJECT_STATUS.md; added DeepWiki badge and new guidance sentences.
New living roadmap
docs/PROJECT_STATUS.md
Add comprehensive project status: architecture, end-to-end /generate flow, shipped/in‑flight features, engine comparisons, bottlenecks, prioritized tiers, branch inventory, and API quick refs.
Site layout / docs shell
docs/content/docs/README.md, docs/content/docs/developer/architecture.mdx
Switch to Fumadocs layout, document new backend module layout and runtime notes (Tauri/uvicorn/just), SQLAlchemy/Pedalboard, and route→service→registry flow.
Engine & generation specs
docs/content/docs/developer/tts-generation.mdx, docs/content/docs/developer/tts-engines.mdx, docs/content/docs/developer/transcription.mdx, backend/backends/__init__.py
Document engine-agnostic TTSBackend/STTBackend Protocols, ModelConfig/TTS_ENGINES registry, engine resolution helpers, updated request/response schemas and generation pipeline.
Model management & updater
docs/content/docs/developer/model-management.mdx, docs/content/docs/developer/autoupdater.mdx
Describe config-driven model APIs (/models/load, /download, /unload), progress tracking (ProgressManager/HFProgressTracker + SSE), and archive-based CUDA download/extract flow with new endpoints.
Data model / history docs
docs/content/docs/developer/history.mdx
Document expanded Generation schema: UUID default id, required profile_id, nullable audio/duration, added engine, model_size, status, error, is_favorited, and created_at default.
Dev tooling & paths
docs/content/docs/developer/setup.mdx, docs/content/docs/TROUBLESHOOTING.md, docs/content/docs/overview/*
Replace bun commands with just targets, add granular just tasks, standardize app data paths to sh.voicebox.app, update install/troubleshooting guidance.
User-facing content
docs/content/docs/index.mdx, docs/content/docs/overview/*.mdx
Increase engine count to 7 (add Qwen CustomVoice, Kokoro), add preset/zero-shot cloning notes, expand engine/model size guidance.
Profiles / stories / audio handling
docs/content/docs/developer/voice-profiles.mdx, docs/content/docs/developer/stories.mdx
Add M4A support, clarify engine-specific resampling, timeline/trim semantics and non-destructive trimming behavior.
Removed legacy docs
docs/notes/*, docs/plans/* (multiple files deleted)
Delete obsolete notes/plans/release/migration docs (e.g., docs/notes/BACKEND_CODE_REVIEW.md, docs/notes/PROJECT_STATUS.md under notes, MIGRATION, several plans).
Small frontend fix
app/src/components/Generation/FloatingGenerateBox.tsx
Tighten profile→form engine-compatibility guard to check currentEngine truthiness before membership test to avoid accidental engine overrides.

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
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested reviewers

  • rhmod09-dev

Poem

🐰 The roadmap’s sprouted, the engines take flight,
Seven voices ready to sing through the night,
Models queue and download, progress bars aglow,
Docs hop to the top and the registries grow,
— a rabbit with earmuffs and a clipboard in tow

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title 'docs: audit mdx docs against multi-engine backend' accurately reflects the main change: a comprehensive documentation audit aligning developer and user-facing docs with the v0.4.1 multi-engine backend refactor.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch voicebox-new-models

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 | 🟡 Minor

README 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 Kokoro

Similarly 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 | 🟡 Minor

Missed app-identifier rename on line 94: com.voicebox.appsh.voicebox.app.

The Tauri bundle identifier was changed from com.voicebox.app to sh.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 | 🟡 Minor

Stale 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 via register_routers() (see backend/routes/__init__.py). The "API Development → Add Route" step telling contributors to add @app.post(...) in backend/main.py contradicts 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 in backend/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: Hardcoded cu128-v1 libs archive name will drift.

The doc hardcodes cuda-libs-cu128-v1.tar.gz in multiple places, but the backend builds this name from CUDA_LIBS_VERSION (f"cuda-libs-{CUDA_LIBS_VERSION}.tar.gz" in backend/services/cuda.py). On the next CUDA toolkit bump (e.g. cu129), these doc references will silently go stale. Consider using a placeholder like cuda-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 explicit id / created_at now that the model sets defaults.

Now that id uses default=lambda: str(uuid.uuid4()) and created_at defaults to datetime.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

📥 Commits

Reviewing files that changed from the base of the PR and between da60701 and ed19152.

📒 Files selected for processing (30)
  • CONTRIBUTING.md
  • README.md
  • docs/PROJECT_STATUS.md
  • docs/content/docs/README.md
  • docs/content/docs/TROUBLESHOOTING.md
  • docs/content/docs/developer/architecture.mdx
  • docs/content/docs/developer/autoupdater.mdx
  • docs/content/docs/developer/contributing.mdx
  • docs/content/docs/developer/history.mdx
  • docs/content/docs/developer/model-management.mdx
  • docs/content/docs/developer/setup.mdx
  • docs/content/docs/developer/stories.mdx
  • docs/content/docs/developer/transcription.mdx
  • docs/content/docs/developer/tts-engines.mdx
  • docs/content/docs/developer/tts-generation.mdx
  • docs/content/docs/developer/voice-profiles.mdx
  • docs/content/docs/index.mdx
  • docs/content/docs/overview/creating-voice-profiles.mdx
  • docs/content/docs/overview/generation-history.mdx
  • docs/content/docs/overview/installation.mdx
  • docs/content/docs/overview/introduction.mdx
  • docs/content/docs/overview/remote-mode.mdx
  • docs/content/docs/overview/troubleshooting.mdx
  • docs/notes/BACKEND_CODE_REVIEW.md
  • 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/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

Comment thread docs/content/docs/developer/architecture.mdx
Comment thread docs/content/docs/developer/model-management.mdx Outdated
Comment thread docs/content/docs/developer/model-management.mdx Outdated
Comment thread docs/content/docs/developer/tts-generation.mdx
Comment thread docs/content/docs/developer/tts-generation.mdx Outdated
Comment thread docs/PROJECT_STATUS.md Outdated
Comment thread docs/PROJECT_STATUS.md
jamiepine and others added 2 commits April 18, 2026 20:56
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>
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (1)
docs/PROJECT_STATUS.md (1)

69-83: ⚠️ Potential issue | 🟡 Minor

Fenced code block still missing a language tag (MD040).

markdownlint flags line 69. Tagging as text keeps 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

📥 Commits

Reviewing files that changed from the base of the PR and between 3412dca and b91d5d7.

📒 Files selected for processing (4)
  • docs/PROJECT_STATUS.md
  • docs/content/docs/developer/architecture.mdx
  • docs/content/docs/developer/model-management.mdx
  • docs/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>
@jamiepine jamiepine merged commit ae91aa9 into main Apr 19, 2026
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant