You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: unify provider picker for STT, AI Formatting, and Refine
- One Provider picker in Cloud mode controls everything: OpenAI, Groq,
OpenRouter, or Custom. Removes the confusing second picker that used
to live inside the AI Formatting card.
- Picking OpenAI/Groq sets both sttProvider and gptProvider — STT,
formatting, and refine all go to the same key.
- Picking OpenRouter/Custom sets gptProvider only; sttProvider stays as
the last OpenAI/Groq value so Whisper has a fallback. Amber warning
shown when no STT-capable key exists.
- pipeline.ts: new buildGptClient() picks the right OpenAI-compatible
client per provider (OpenAI base URL, Groq, OpenRouter w/ HTTP-Referer,
or Custom with user base URL + optional JSON headers).
- callRefine(): same provider selection, falls back through other
configured keys when the chosen provider lacks one.
- New settings fields: gptProvider, openrouterKeyEncrypted,
customKeyEncrypted, customBaseUrl, customChatModel, customHeaders.
All encrypted via safeStorage (centralised in persistEncryptedKey).
- Local mode + AI Formatting: uses any cloud key fallback (Groq first
for speed) since no local LLM is bundled.
- Paste path: switched from char-by-char SendInput (slow) to clipboard
+ smart Ctrl+V / Ctrl+Shift+V keystroke detected from foreground
window class — instant regardless of text length, works in terminals.