Skip to content

Deep Audit Correction v1.21: pt/el Translations + Whisper WASM STT Download#89

Merged
qnbs merged 8 commits into
mainfrom
feat/deep-audit-correction-v1.21
Jun 8, 2026
Merged

Deep Audit Correction v1.21: pt/el Translations + Whisper WASM STT Download#89
qnbs merged 8 commits into
mainfrom
feat/deep-audit-correction-v1.21

Conversation

@qnbs

@qnbs qnbs commented Jun 8, 2026

Copy link
Copy Markdown
Owner

User description

Summary

This PR implements the following items from the Deep Audit Correction plan:

P1-5: pt/el Translations (COMPLETED)

  • Completed Portuguese (pt) translations for all 15 locale modules
  • Completed Greek (el) translations for all 15 locale modules
  • All 11 locales now have 2346 keys with full parity
  • i18n bundles rebuilt and validated

P1-2: Whisper WASM STT Model Download (COMPLETED)

  • Implemented downloadVoiceModels() function in voiceCommandService.ts
  • Wired VoiceModelDownloadModal to trigger actual model downloads via @huggingface/transformers
  • Added WASM model download UI to VoiceSettingsSection with download button
  • Added voice.wasmModels i18n keys to all locales
  • Added voiceWasmDownloadError to VoiceSettings type

Changes

  • services/voice/voiceCommandService.ts - Added downloadVoiceModels function
  • components/voice/VoiceModelDownloadModal.tsx - Wired to actual download function
  • components/settings/VoiceSettingsSection.tsx - Added WASM model download UI
  • types.ts - Added voiceWasmDownloadError field
  • All locale files updated with new voice.wasmModels keys

Validation

  • Build completes successfully
  • Lint passes with no errors
  • i18n parity verified (2346 keys × 11 locales)

CodeAnt-AI Description

Add voice model downloads in settings and refresh locale text

What Changed

  • Voice settings now include a download option for local speech models, with progress shown while the models are fetched and a clear error message if the download fails
  • The voice model download flow now works for both speech-to-text and text-to-speech models instead of leaving the button inactive
  • App text was updated across supported languages, including corrected wording in Japanese and Greek voice, export, and help screens
  • Large AI-related code is kept out of the app’s offline cache so the app can load and update more reliably

Impact

✅ Easier setup for offline voice features
✅ Clearer voice download status and failures
✅ Fewer broken or untranslated labels

💡 Usage Guide

Checking Your Pull Request

Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.

Talking to CodeAnt AI

Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:

@codeant-ai ask: Your question here

This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.

Example

@codeant-ai ask: Can you suggest a safer alternative to storing this secret?

Preserve Org Learnings with CodeAnt

You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:

@codeant-ai: Your feedback here

This helps CodeAnt AI learn and adapt to your team's coding style and standards.

Example

@codeant-ai: Do not flag unused imports.

Retrigger review

Ask CodeAnt AI to review the PR again, by typing:

@codeant-ai: review

Check Your Repository Health

To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.

- Add downloadVoiceModels function to voiceCommandService.ts
- Wire VoiceModelDownloadModal to trigger actual model downloads via @huggingface/transformers
- Add WASM model download UI to VoiceSettingsSection with download button
- Add voice.wasmModels i18n keys to all locales (en, de, fr, es, it, ar, he, ja, zh, pt, el)
- Add voiceWasmDownloadError to VoiceSettings type
- Build completes successfully, i18n parity verified (2346 keys × 11 locales)
@codeant-ai

codeant-ai Bot commented Jun 8, 2026

Copy link
Copy Markdown

CodeAnt AI is reviewing your PR.


Thanks for using CodeAnt! 🎉

We're free for open-source projects. if you're enjoying it, help us grow by sharing.

Share on X ·
Reddit ·
LinkedIn

@vercel

vercel Bot commented Jun 8, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
storycraft-studio Ready Ready Preview, Comment Jun 8, 2026 11:24pm

@codeant-ai codeant-ai Bot added the size:XXL This PR changes 1000+ lines, ignoring generated files label Jun 8, 2026
Comment thread locales/ja/writer.json Outdated
Comment thread components/settings/VoiceSettingsSection.tsx Outdated
Comment thread components/voice/VoiceModelDownloadModal.tsx Outdated
@codeant-ai

codeant-ai Bot commented Jun 8, 2026

Copy link
Copy Markdown

CodeAnt AI finished reviewing your PR.

qnbs and others added 7 commits June 9, 2026 00:36
CodeAnt finding 1 — ja/writer.json broken interpolation (HIGH):
- Restore canonical {{title}} and {{selection}} placeholders that were
  accidentally localised to {{タイトル}} / {{選択内容}} — calling code
  still passes English variable names so localised names render as
  literal strings.

CodeAnt finding 2 — VoiceSettingsSection TTS path unreachable:
- Add dedicated "Download TTS Model" button alongside the STT button;
  previously hardcoded to 'stt' so Kokoro download was unreachable.
- State var downloadModelType threads the choice into VoiceModelDownloadModal.

CodeAnt finding 3 — VoiceModelDownloadModal non-abortable download:
- Wire AbortController in VoiceModelDownloadModal; handleCancel calls
  abort() so closing/cancelling stops the in-flight fetch.
- downloadVoiceModels(modelType, signal) in voiceCommandService already
  accepts and respects the AbortSignal at every checkpoint.

Additional (same branch pass):
- CloudSyncBackend LWW metadata envelope (P2-1): wrap save payloads in
  {data, meta:{lastModified,deviceId,version}} for conflict resolution;
  update cloudSyncBackend tests (+8 tests, 19 total pass).
- pandocTauri test: +3 edge-case assertions.
- Locale sweep (pt/el/ja/zh/de/fr/es/it/ar/he): translation quality
  corrections across 10 languages; rebuild all 11 public/locales bundles.
- CLAUDE.md: update Beta locale count and i18n rebuild note.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
VoiceModelDownloadModal uses useAppSelector/useAppDispatch; the
VoiceSettingsSection test renders it without a Redux Provider → all 9
tests threw "could not find react-redux context value". Fix: mock the
modal component entirely (returns a sentinel div when open); no
Provider needed.

docs: update AUDIT.md, README.md, docs/VOICE_MASTER_PLAN.md for v1.21 —
2348 keys × 11 locales, v1.21.0 version badge, Voice Phase 3 model
download UI marked complete, AUDIT.md v1.21 delivery table added.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…tion pending

VoiceModelDownloadModal (STT + TTS, AbortController) shipped in v1.21.
Remaining P1-2 work: VAD → Inference → Transcript pipeline integration.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
lib-* chunks are Rolldown vendor bundles (< 7000 KB vendor limit).
Only index-* is the real entry point. The lib- detection was left
from an unfinished bundle optimization session and caused a false
budget breach (5906 KB against the 4500 KB entry limit).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…nload-artifact

All three SHA pins were invalid (unresolvable commits) causing every manual
Stryker run to abort at "Set up job" within ~17s. Updated to SHAs matching
the working ci.yml:
  actions/cache         5a3ec84… → 27d5ce7f… (v5.0.5)
  actions/upload-artifact 4cec3d8… → 043fb46d… (v7.0.1)
  actions/download-artifact cc203385… → 3e5f45b2… (v8)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@qnbs
qnbs enabled auto-merge (squash) June 8, 2026 23:24
@qnbs
qnbs merged commit e8cddcb into main Jun 8, 2026
16 checks passed
@qnbs
qnbs deleted the feat/deep-audit-correction-v1.21 branch June 8, 2026 23:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL This PR changes 1000+ lines, ignoring generated files

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant