Two bugs from real reports:
1. LLM not wired — translator._llm_client()/_llm_model() read TRANSLATE_*/OPENAI_*
directly, bypassing the LLM Providers registry (#854). So a provider set up
in Settings → LLM Providers never powered Cinematic/Autofit. Now resolves the
ACTIVE provider (base_url/key/model) via llm_providers; the 'custom' provider
still maps TRANSLATE_* so legacy env setups keep working.
2. Transcription 'missing the beginning' — the chunked dub transcribe dropped a
whole chunk's window on failure/timeout (returned empty segments, no retry).
A transient wedge on the FIRST chunk (whisperx cold-loads its model there, the
#730 hang) therefore lost the start and left only middle+end. Now retries a
failed/timed-out chunk once on a fresh pool (OMNIVOICE_TRANSCRIBE_CHUNK_ATTEMPTS,
default 2) so the recovered chunk fills the hole.
Imports + dub_transcribe/translator/llm_providers tests green.
Co-authored-by: mergetest <test@local>