{"record":{"id":"78336ec37d7df113","repo":"Zackriya-Solutions/meetily","slug":"retranscription-requires-whisper-current-provider","errorCode":null,"errorMessage":"Retranscription requires Whisper. Current provider '{}' does not support retranscription with language selection.","messagePattern":"Retranscription requires Whisper\\. Current provider '(.+?)' does not support retranscription with language selection\\.","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"frontend/src-tauri/src/audio/retranscription.rs","lineNumber":612,"sourceCode":"        \"SELECT provider, model FROM transcript_settings WHERE id = '1'\"\n    )\n    .fetch_optional(app_state.db_manager.pool())\n    .await\n    .map_err(|e| {\n        error!(\"Failed to query transcript config: {}\", e);\n        anyhow!(\"Failed to query transcript config: {}\", e)\n    })?;\n\n    match result {\n        Some((provider, model)) => {\n            info!(\"Found transcript config: provider={}, model={}\", provider, model);\n\n            // Check if provider is Whisper-based\n            if provider == \"localWhisper\" || provider == \"whisper\" {\n                Ok(model)\n            } else {\n                error!(\"Retranscription requires Whisper provider, but configured provider is: {}\", provider);\n                Err(anyhow!(\"Retranscription requires Whisper. Current provider '{}' does not support retranscription with language selection.\", provider))\n            }\n        },\n        None => {\n            // Default to configured Whisper model if no config exists\n            warn!(\"No transcript config found, using default model '{}'\", DEFAULT_WHISPER_MODEL);\n            Ok(DEFAULT_WHISPER_MODEL.to_string())\n        }\n    }\n}\n\n/// Get or initialize the Parakeet engine, auto-loading the model if needed\nasync fn get_or_init_parakeet<R: Runtime>(\n    app: &AppHandle<R>,\n    requested_model: Option<&str>,\n) -> Result<Arc<ParakeetEngine>> {\n    use crate::parakeet_engine::commands::PARAKEET_ENGINE;\n\n    let engine = {","sourceCodeStart":594,"sourceCodeEnd":630,"githubUrl":"https://github.com/Zackriya-Solutions/meetily/blob/0281737d87d26352fb0adc78c8c0975f691b23d1/frontend/src-tauri/src/audio/retranscription.rs#L594-L630","documentation":"The transcript_settings row (id='1') has a provider that is neither 'localWhisper' nor 'whisper' - for example a cloud API provider or 'parakeet' - so there is no local Whisper model name to resolve for retranscription with language selection. This is a configuration gate: language-selected retranscription is local-Whisper-only by design.","triggerScenarios":"Calling retranscription with language=Some(...) and model=None while the app's configured transcription provider is a cloud API or Parakeet.","commonSituations":"User switched transcription provider to a cloud service in Settings, then later uses 'Retranscribe with language' which is local-only; provider string case or naming mismatch after a settings migration.","solutions":["Pass an explicit model (and provider='whisper') when invoking start_retranscription - the explicit model bypasses get_configured_whisper_model and its provider check.","Or switch the transcription provider back to Local Whisper in Settings.","Or use plain retranscription without language selection.","If you believe the provider IS whisper-based, check the stored string in transcript_settings for typos/case (accepted values: 'localWhisper', 'whisper')."],"exampleFix":"// frontend: bypass the config-provider gate with explicit args\n// before\nawait invoke('start_retranscription', { meetingId, meetingFolderPath, language: 'en' });\n// after\nawait invoke('start_retranscription', {\n  meetingId,\n  meetingFolderPath,\n  language: 'en',\n  model: 'base',\n  provider: 'whisper',\n});","handlingStrategy":"validation","validationCode":"// Frontend: check provider compatibility before opening the language dialog\nconst settings = await invoke('get_transcript_settings');\nconst canRetranscribeWithLanguage =\n  settings.provider === 'localWhisper' || settings.provider === 'whisper';\nif (!canRetranscribeWithLanguage) disableLanguageRetranscribeUI();","typeGuard":null,"tryCatchPattern":"// Branch on the provider message and guide the user\nif (String(err).includes('Retranscription requires Whisper')) {\n  showInfo('Switch the transcription provider to Local Whisper, or pass a model explicitly.');\n}","preventionTips":["Gate the 'Retranscribe with language' UI on the configured provider being local Whisper.","Pass explicit model and provider arguments for programmatic retranscription.","Keep provider strings exactly 'localWhisper'/'whisper' in the settings row."],"tags":["configuration","provider-mismatch","whisper","retranscription"],"backgroundTag":"provider-mismatch","analyzedSha":"0281737d87d26352fb0adc78c8c0975f691b23d1","analyzedAt":"2026-08-16T20:57:52.567Z","schemaVersion":2},"datasetVersion":"2026-08-16T23:17:17.608Z"}