Skip to content

fix: make non-English (German) transcription install flow actually reachable (#36) - #38

Merged
DozaVisuals merged 2 commits into
mainfrom
fix/whisper-german-transcription-36
Jun 7, 2026
Merged

DozaVisuals merged 2 commits into
mainfrom
fix/whisper-german-transcription-36

Conversation

@DozaVisuals

Copy link
Copy Markdown
Owner

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:

  • The button vanished after one render. The transcribe guard persisted status='error', but the card that hosts the installer (and the auto-retry) only renders while status=='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-detect was worse. The guard whitelisted 'auto', so picking "Auto-detect" sailed past the guard and crashed downstream with a bare 500 and no installer at all.
  • The install "looked broken." "~200 MB" was wildly off (real cost ~2 GB: PyTorch engine + a 1.5 GB speech model), there was zero progress streaming, and the 1.5 GB model downloaded silently during the first transcription behind a fake 30-second progress bar — indistinguishable from a hang.

What changed

  • Guard 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.
  • Downstream catch-all also surfaces the installer (TOCTOU defense) instead of a raw 500.
  • Installer is honest and observable: streams live pip + model-download progress, drops the dead brew install cmake step, and pre-fetches the ~1.5 GB turbo speech model during install — so the first German transcription is instant, not a silent multi-GB hang. Readiness now means package and model present.
  • Copy fixed: "~200 MB" → realistic ~2 GB (engine + model), one time, with live progress.
  • Regression tests pin the guard / installer contract (tests/test_whisper_install_guard.py).

Testing

  • New tests/test_whisper_install_guard.py: 10 passing — covers de/auto/fr/es surfacing the installer, status staying renderable, English unaffected, the downstream TOCTOU path, _whisper_ready gating on package+model, and the progress streamer.
  • Verified the rewritten worker's helpers, streaming (\r tqdm + \n), endpoint idempotency, and the exact model-prefetch subprocess against the live venv.
  • Full suite: no new failures (pre-existing chat/DNA failures are unrelated and present on main).

Closes #36.

🤖 Generated with Claude Code

DozaVisuals and others added 2 commits June 6, 2026 20:13
)

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>
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Updated (UTC)
❌ Deployment failed
View logs
doza-assist 74c8b10 Jun 07 2026, 12:16 AM

@DozaVisuals
DozaVisuals merged commit 6e64921 into main Jun 7, 2026
2 of 3 checks passed
@DozaVisuals
DozaVisuals deleted the fix/whisper-german-transcription-36 branch June 7, 2026 00:17
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.

Needs Whisper for German transcription

1 participant