Commit Graph
1123 Commits
Author SHA1 Message Date
Palash Debnath 2aa5f38012 Merge remote-tracking branch 'origin/main' into fix/review-2175
# Conflicts:
#	CHANGELOG.md
2026-09-17 22:25:24 +05:30
Palash Debnath 50a71fd176 Merge remote-tracking branch 'origin/main' into fix/review-2173 2026-09-17 21:32:02 +05:30
Palash Debnath 7ed58cb5b7 Merge remote-tracking branch 'origin/main' into fix/runtime-validation-2176
# Conflicts:
#	CHANGELOG.md
2026-09-17 20:42:36 +05:30
Palash Debnath ed9e40253c Merge remote-tracking branch 'origin/main' into fix/review-2175
# Conflicts:
#	CHANGELOG.md
2026-09-17 20:15:20 +05:30
Palash Debnath 8b2ec7ba51 Merge remote-tracking branch 'origin/main' into fix/voice-conversion-capability-2147
# Conflicts:
#	CHANGELOG.md
2026-09-17 20:13:37 +05:30
Palash Debnath 1ef42a6b21 Merge remote-tracking branch 'origin/main' into fix/review-2173 2026-09-17 20:12:15 +05:30
Palash Debnath 31baa43650 Merge remote-tracking branch 'origin/main' into fix/runtime-validation-2176
# Conflicts:
#	CHANGELOG.md
2026-09-17 20:12:01 +05:30
Palash Debnath 834b305c05 fix(electron): validate reused Python runtimes before startup 2026-09-17 20:11:38 +05:30
Shivendra-CoherentandClaude Opus 5 ad6dae49cd docs(changelog): correct this PR's number to #2175
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-17 19:34:14 +05:30
Shivendra-CoherentandClaude Opus 5 fbede643c1 fix(generate): name the voice profile behind a refused language
A user on mlx-audio with the language picker on "Auto" got:

    400: mlx-audio's Kokoro model doesn't support language='Persian'.
    … Pick one of those, leave language as 'Auto', or switch to a
    multilingual engine …

They had left it on Auto. The UI omits `language` entirely while its
picker reads "Auto" (useProfiles.js only appends a non-Auto value), and
#533 fills that gap from the selected voice profile. So Auto is exactly
how 'Persian' got there: the remedy the message leads with is the state
the user was already in, and nothing points at the profile that actually
supplied the language. Three generate attempts in their action log, a
detour through Settings, then the report.

Provenance was the missing fact, and only the request scope has it — the
engine adapters are handed a language with no idea who chose it. So
_resolve_profile_conditioning now reports whether it filled the language,
and /generate uses that to answer a refused profile language by naming
the profile and the remedies that exist: change the profile's language,
pick a supported one explicitly, or switch engine.

An explicitly requested language is untouched — the user really did pick
it, so blaming the profile would be a lie — and #533 still drives
generation whenever the engine can speak the profile's language.

Recognising the refusal needed one more thing: Kokoro's wording
("doesn't support language=…") matched none of #1257's signatures, so
the engine that issue was written for was the one engine its rewrite
never fired for. That wording is now recognised, but kept out of #1257's
rewrite path — it already names its engine and its languages, and
re-wrapping it only nests "Engine's own message:" twice.

No per-model language map: #1257 weighed that and chose engine-naming
over "a brittle map that goes stale on each engine update". This follows
the same principle — say where the language came from, don't enumerate.

docs/engines/mlx-audio.md repeated the same "leave language on Auto"
advice and is corrected here.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-17 18:04:51 +05:30
shivsin25 543f0f6f18 Merge branch 'main' into fix/2163-gated-install-token 2026-09-17 17:08:59 +05:30
Shivendra-CoherentandClaude Opus 5 37b498c891 fix(setup): send the HF token when installing a gated model
Installing a gated model failed the fast download path with "401
Unauthorized" even with a valid token and the licence accepted, then fell
back to snapshot_download and logged a 401 that reads like the token or
the licence grant is at fault when it is neither (#2163).

`token_resolver.resolve()` returns a ResolvedToken record, not the bearer
string. Two call sites handed that record straight to consumers typed
`token: str | None`, and both fail silently rather than loudly:

- `_segmented_snapshot` passes it to HfApi, get_hf_file_metadata and our
  own segmented_download. huggingface_hub's build_hf_headers ignores a
  non-str token and falls back to its own ambient discovery, so a token
  held only in VoiceStudio's Settings produces NO Authorization header
  and every gated file 401s. segmented_download instead interpolates it
  into `f"Bearer {token}"`, sending a malformed header that also inlines
  the raw secret into the request.
- `_step_fetch_weights` passes it to snapshot_download, so gated engine
  weights 401 the same way.

Every other resolve() caller already unwraps `.token`; these two were the
outliers. Both now unwrap once, at the seam.

The existing weights tests all stubbed resolve() to return None, so no
test ever exercised a resolved token — which is why this went unnoticed.
The new tests drive a real ResolvedToken through both seams and assert a
`str` reaches every consumer, plus an integration test that installs the
pyannote diarisation pipeline end to end: a weightless config_only repo
validates, both dependency repos are fetched, and every call carries the
bearer string.

Two catalogue invariants keep the rest of #2163 from returning by edit:
dependency repos must be revision-pinned (revision_for raises otherwise,
so an unpinned one ships an always-failing install), and a config_only
entry must declare config_required_files (without them the completeness
check can never pass and the error lists no files at all — the shape the
report hit on 0.5.2).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-17 16:50:16 +05:30
Palash Debnath e6e8f16f55 fix: guard voice conversion with active model cloning capability 2026-09-17 16:29:51 +05:30
Palash Debnath b1f900c996 test: accept startup and supervisor SIGKILL diagnostics 2026-09-17 16:28:42 +05:30
Palash Debnath 49892a6066 docs: remove duplicate release entry and enforce new CI references 2026-09-17 14:08:03 +05:30
Palash Debnath 7a7cccbea2 docs: reconcile reviewed subtitle guidance and release references 2026-09-17 13:57:28 +05:30
Palash Debnath e3d3913f52 Merge branch 'fix/review-2077' into fix/community-integration
# Conflicts:
#	CHANGELOG.md
#	docs/dubbing/translation-engines.md
2026-09-17 13:57:07 +05:30
Palash Debnath ad52d32760 fix: distinguish WebVTT identifiers and empty cue boundaries 2026-09-17 13:57:05 +05:30
Palash Debnath 6bf4316554 docs: consolidate community fix highlights 2026-09-17 12:40:10 +05:30
Palash Debnath 06389e1ae2 Merge branch 'fix/media-error-diagnostics' into fix/community-integration
# Conflicts:
#	CHANGELOG.md
#	docs/install/troubleshooting.md
2026-09-17 12:38:57 +05:30
Palash Debnath 8f06b4968f Merge branch 'fix/catalogue-install-capability' into fix/community-integration
# Conflicts:
#	CHANGELOG.md
#	docs/install/troubleshooting.md
2026-09-17 12:38:56 +05:30
Palash Debnath 020febe327 Merge branch 'fix/review-2066' into fix/community-integration
# Conflicts:
#	CHANGELOG.md
2026-09-17 12:38:56 +05:30
Palash Debnath 6a7bb1a508 Merge branch 'fix/review-2115' into fix/community-integration
# Conflicts:
#	CHANGELOG.md
2026-09-17 12:38:56 +05:30
Palash Debnath 5f519cbfd0 Merge branch 'fix/review-2085' into fix/community-integration
# Conflicts:
#	CHANGELOG.md
#	docs/install/troubleshooting.md
2026-09-17 12:38:56 +05:30
Palash Debnath e272217561 Merge branch 'fix/review-2084' into fix/community-integration
# Conflicts:
#	CHANGELOG.md
2026-09-17 12:38:56 +05:30
Palash Debnath 4002801c00 Merge branch 'fix/review-2143' into fix/community-integration
# Conflicts:
#	CHANGELOG.md
#	docs/dubbing/translation-engines.md
#	tests/test_dub_translate.py
2026-09-17 12:38:56 +05:30
Palash Debnath 645aa3d451 Merge branch 'fix/review-2077' into fix/community-integration
# Conflicts:
#	CHANGELOG.md
#	docs/dubbing/translation-engines.md
2026-09-17 12:38:37 +05:30
Palash Debnath e1e329e7f0 Merge branch 'fix/review-2073' into fix/community-integration
# Conflicts:
#	CHANGELOG.md
#	docs/install/troubleshooting.md
2026-09-17 12:38:36 +05:30
Palash Debnath 8ba4407d8a Merge branch 'fix/review-2074' into fix/community-integration
# Conflicts:
#	CHANGELOG.md
#	docs/dubbing/translation-engines.md
2026-09-17 12:38:36 +05:30
Palash Debnath 47d441311e Merge branch 'fix/review-2075' into fix/community-integration
# Conflicts:
#	CHANGELOG.md
2026-09-17 12:38:36 +05:30
Palash Debnath 9ed477c0ca Merge branch 'fix/review-2106' into fix/community-integration
# Conflicts:
#	CHANGELOG.md
2026-09-17 12:38:36 +05:30
Palash Debnath dadb642e19 Merge branch 'fix/review-2107' into fix/community-integration
# Conflicts:
#	CHANGELOG.md
#	docs/install/troubleshooting.md
2026-09-17 12:38:36 +05:30
Palash Debnath b12fa3a13c Merge branch 'fix/review-2138' into fix/community-integration
# Conflicts:
#	CHANGELOG.md
#	docs/dubbing/translation-engines.md
2026-09-17 12:38:36 +05:30
Palash Debnath 119816d2b1 Merge branch 'fix/review-2109' into fix/community-integration
# Conflicts:
#	CHANGELOG.md
#	docs/install/troubleshooting.md
2026-09-17 12:38:36 +05:30
Palash Debnath ba77bd9443 Merge branch 'fix/review-2165' into fix/community-integration 2026-09-17 12:38:36 +05:30
Palash Debnath 8e97b2bd01 Merge branch 'fix/review-2083' into fix/community-integration
# Conflicts:
#	CHANGELOG.md
#	docs/install/troubleshooting.md
2026-09-17 12:38:36 +05:30
Palash Debnath 13d3f3fb13 Merge branch 'fix/review-2072' into fix/community-integration
# Conflicts:
#	CHANGELOG.md
2026-09-17 12:38:08 +05:30
Palash Debnath 9482788898 fix(dubbing): retain actionable native failure diagnostics 2026-09-17 12:37:43 +05:30
Palash Debnath a390da1590 fix(catalogue): explain local-only native installation 2026-09-17 12:37:34 +05:30
Palash Debnath 75efda84b1 fix(sidecars): reconcile receive deadlines with outer job budgets 2026-09-17 12:27:56 +05:30
Palash Debnath 8538702ecb fix(imports): preserve legacy text encodings in Electron and web 2026-09-17 12:27:56 +05:30
Palash Debnath 11584c6f4c fix(dubbing): retain ASR model until native work finishes on disconnect 2026-09-17 12:27:30 +05:30
Palash Debnath a9d1464acb docs: preserve release notes and qualify packaged Metal availability 2026-09-17 12:18:02 +05:30
Palash Debnath 3c4c8ed679 fix: harden native repair and preserve offline Whisper fallback 2026-09-17 12:18:02 +05:30
Palash Debnath 33a6fc1d03 fix: validate WebVTT and mixed-index numeric dialogue together 2026-09-17 12:18:02 +05:30
Palash Debnath a33db40613 fix: align WebVTT detection with cue boundaries 2026-09-17 12:16:41 +05:30
Palash Debnath 8c47e8b92f fix: consolidate Argos coverage and reject silent script changes 2026-09-17 12:16:09 +05:30
Palash Debnath d6f034c754 fix: preserve numeric dialogue across mixed subtitle cue boundaries 2026-09-17 12:15:36 +05:30
Palash Debnath fc98d07b39 fix: integrate current main and finish review requirements for #2066 2026-09-17 12:10:32 +05:30
Palash Debnath 637e24d8a1 fix: integrate current main and finish review requirements for #2085 2026-09-17 12:10:27 +05:30