fix: make non-English (German) transcription install flow actually reachable (#36) - #38
Merged
Merged
Conversation
) The v3.5.8 installer button worked for exactly one render, then vanished. The transcribe guard persisted status='error', but the card that hosts the installer (and the auto-retry) only renders while status=='uploaded' -- so a reload left the user with no install affordance and no Retranscribe menu: the exact "can't find where to install Whisper" dead-end from #36. Auto-detect was worse -- the guard whitelisted 'auto', so it sailed past and crashed downstream with a bare 500 and no installer at all. - Guard now treats every non-'en' language (including 'auto') the same and keeps status='uploaded', so the install banner reliably reappears on every visit until Whisper is installed. - The downstream catch-all also surfaces the installer (TOCTOU defense) instead of a raw 500. - The installer is now honest and observable: stream live pip + model-download progress, drop the dead `brew install cmake` step, and pre-fetch the ~1.5GB turbo speech model during install so the first German transcription isn't a silent multi-GB "hang". Readiness now means package AND model present. - Replace the inaccurate "~200MB" copy (real cost ~2GB: engine + model) in the new-project hint and both install banners. - Add regression tests for the guard / installer contract. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ❌ Deployment failed View logs |
doza-assist | 74c8b10 | Jun 07 2026, 12:16 AM |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Issue #36 ("Needs Whisper for German transcription") was reported fixed in v3.5.8, but the fix didn't hold up. A diagnosis of the full non-English install→transcribe chain found the v3.5.8 installer button was effectively unreachable:
status='error', but the card that hosts the installer (and the auto-retry) only renders whilestatus=='uploaded'. So the moment the page reloaded, the user was left with no install affordance and no Retranscribe menu — the exact "can't find where to install Whisper" dead-end from the issue.'auto', so picking "Auto-detect" sailed past the guard and crashed downstream with a bare 500 and no installer at all.What changed
enlanguage (includingauto) the same and keepsstatus='uploaded', so the install banner reliably reappears on every visit until Whisper is installed.brew install cmakestep, and pre-fetches the ~1.5 GBturbospeech model during install — so the first German transcription is instant, not a silent multi-GB hang. Readiness now means package and model present.tests/test_whisper_install_guard.py).Testing
tests/test_whisper_install_guard.py: 10 passing — coversde/auto/fr/essurfacing the installer, status staying renderable, English unaffected, the downstream TOCTOU path,_whisper_readygating on package+model, and the progress streamer.\rtqdm +\n), endpoint idempotency, and the exact model-prefetch subprocess against the live venv.main).Closes #36.
🤖 Generated with Claude Code