Changelog
Upcoming features: add AI polishing for translated subtitles.
- 2026.07.11: Model lineup refresh; several providers no longer expose temperature.
- Model updates: OpenAI moves to the GPT-5.6 family (sol / terra / luna, with a new
maxreasoning effort tier; luna is the default low-cost high-volume pick), Claude switches to Opus 4.8 / Sonnet 5 / Fable 5 (adaptive thinking) plus Haiku 4.5 (extended thinking), Qwen defaults to 3.7 Plus, with Kimi and Gemini updated in step - Temperature control hidden per provider: OpenAI (GPT-5.x is reasoning-only and returns 400 on non-default values), Claude (the adaptive generation rejects temperature), Gemini (3.x officially recommends keeping the default 1.0), Moonshot Kimi (k2.x locks it), and Azure OpenAI. These no longer send the parameter and the input is hidden — steer tone via the system prompt or thinking effort instead
- Model updates: OpenAI moves to the GPT-5.6 family (sol / terra / luna, with a new
- 2026.06.30: Locatable failures and targeted retries.
- Real source line numbers: the failure panel now reports the actual line number in your source file (previously the in-batch index), so subtitle / Markdown / JSON failures can be checked in place
- Retry only failed languages: when whole languages fail in a multi-language run, retry just those — the successful ones aren't billed again
- Fixes: GTX now throws when the
translationsarray comes back short or holey instead of silently blanking those lines; context-mode extraction is guarded against cross-line source echoes
- 2026.06.29: Visual ASS style configuration for subtitles; much faster cache-hit reruns.
- ASS style drawer: 4 presets (Default / Large / Cinematic / Boxed) plus a persisted Custom slot; configurable font (can read installed system fonts), size, text color, outline color, outline, shadow, alignment, and vertical margin, with independent box color and opacity for boxed styles
- "Restyle" for native ASS bilingual: optionally discard the source styles, rebuild the header from your own ASS style, and strip every inline override tag (dialogue-only subtitles).
.ssasources are written out as.assafter restyling - Smart export filenames: the default is now the clean
{name}.{ext};_{lang}is auto-injected only when one run targets multiple languages and the pattern lacks{lang}, so single-language exports stay tidy - Faster cache-hit reruns: batched IndexedDB reads, adaptive auto-retry, and throttling skipped on cache hits
- Context lines default 100 → 50: an over-long context made models more likely to treat context as content and shift the output by a line
- Fixes: TranslateGemma bounds its output by input length so local models can't loop into a timeout; local-model (llm / translategemma) timeouts now show a method-specific hint
- 2026.06.11: New LiteLLM self-hosted gateway; API Relay fully user-controlled with self-hosted relay support.
- New LiteLLM provider: one self-hosted OpenAI-compatible proxy fronting 100+ upstream models, with its own config slot (no need to occupy Custom). The URL is the credential (default
127.0.0.1:4000), API Key optional (master key); the model field can stay empty when the proxy is started withlitellm --model— it follows the server default - Tencent Hunyuan works in browsers again: the official endpoint currently rejects CORS preflights (direct calls always fail), so it now routes through API Relay by default and works out of the box; the switch stays available to flip back to direct once Tencent fixes it
- API Relay fully user-controlled: YandexGPT moved from forced relay to "on by default, can be turned off"; all 12 relay-capable providers now accept a self-hosted relay address — the precedence is fixed at custom URL > relay switch > official direct, and the switch grays out with a note while a URL is filled in
- The relay now passes through the server's
Retry-Afterheader — rate-limit auto-slowdown through the relay is exactly as precise as direct calls - Fix: CORS failures on Firefox / Safari now show the actionable "enable API Relay" hint too (previously only Chrome's error wording was recognized, burning 3 useless retries); all relay-related hints are localized into the 18 UI languages
- New LiteLLM provider: one self-hosted OpenAI-compatible proxy fronting 100+ upstream models, with its own config slot (no need to occupy Custom). The URL is the credential (default
- 2026.06.10: Free machine translation overhaul — GTX gateway migration + new Edge (Free) + concurrency fix.
- GTX migrated to a new gateway: the old
translate.googleapis.com/translate_aendpoint was tightened by Google's anti-abuse (many IPs redirected to a captcha page, reported as CORS in the browser). It now uses the gateway behind Google's web-translate widget,translate-pa.googleapis.com— CORS-correct with better availability. The old endpoint stays as a Legacy gtx fallback; you can also paste a self-hosted mirror URL (protocol auto-detected from the address shape) - New Edge API (Free): Microsoft Edge's built-in translator backend (Azure engine) — zero-config and free, on a completely different route from GTX, so if one can't connect you switch to the other. Free machine translation now has three options: GTX / Edge / DeepLX
- GTX concurrency fix: now translates in batched chunks (~5000 chars/block, one request per block), cutting request volume sharply versus line-by-line so everyday use rarely hits rate limits; the projection-style progress preview stays live in chunked mode
- Fix: removed TranslateGemma's redundant
/modelshealth check — some LM Studio builds don't route that endpoint, causing "Test connection works but actual translation is blocked"; it now takes the exact same request path as the Test button
- GTX migrated to a new gateway: the old
- 2026.06.10: Adaptive rate limiting + fully localized error hints.
- Adaptive 429 slowdown: when any service gets rate-limited, all of its requests pause and resume automatically (honoring the server's
Retry-After, otherwise 1s→60s exponential backoff, with jittered resume to avoid a second burst), with a "Rate limited — pausing briefly" notice. GTX Free keeps its fast default concurrency — full speed normally, automatic duty-cycling under throttling - Fully localized error hints: HTTP status codes (invalid key, insufficient balance, model not found, unsupported parameter, rate limit, quota exhausted, server errors — 11 classes) now map to actionable hints in all 18 UI languages; the failure panel, tool error toasts, and Test buttons uniformly show "raw reason + hint"; network errors and timeouts get localized copy instead of raw "Failed to fetch"
- Test Connection timeout now follows the "Request timeout" setting (was a fixed 30s): slow local thinking models no longer fail the test while translating fine; test timeouts are classified separately
- Fix: TranslateGemma's preflight check now normalizes URLs the same way the translation service does — bare LAN addresses (e.g.
http://192.168.x.x:1234) no longer "pass the test but get blocked when translating"
- Adaptive 429 slowdown: when any service gets rate-limited, all of its requests pause and resume automatically (honoring the server's
- 2026.06.10: New Glossary feature.
- Pin fixed translations for names and domain terms, applied per target language; multiple presets (one per show / project), TSV bulk import/export (optional third column for a target language code — one file imports terms for several languages), editor with search / duplicate warnings / pagination
- Multi-layer enforcement: LLMs get only the terms hit by the current text injected per request (no token waste); Qwen-MT uses the official native
translation_options.termsparameter; lines that ignore a required term are retried once with a stricter instruction; a post-hoc replacement net guarantees terms land on every service - Coverage: all LLM services + Qwen-MT; plain MT APIs (GTX / Google / DeepL / Azure / TranslateGemma) have no in-model term channel, so the glossary card is hidden there
- New glossary status chip next to the API status badge showing on/off state and term count — click to jump to settings
- 2026.06.09: Stability and accessibility hardening.
- An adversarial-review hardening pass across the translation engine and the subtitle / Markdown / JSON / text tool groups: placeholder and code-fence protection, format edge cases, and explicit errors for invalid paths / regexes instead of silent no-ops
- Subtitle alignment fix: when batch markers go missing, lines are no longer guessed by position — no more shifted translations
- Accessibility: skip-to-content link and navigation landmarks added; all tool controls are now keyboard-operable
- 2026.06.06: Added YandexGPT (AI Studio).
- New LLM provider YandexGPT (AI Studio): authenticates with API key + Folder ID; ships YandexGPT 5.1 / Alice AI / Qwen3 / DeepSeek / GPT-OSS SKUs, or paste a full
gpt://model URI; the official API sends no CORS headers, so requests route through the built-in proxy - TranslateGemma gains an optional API key for gated deployments (LM Studio's "require API key", vLLM's
--api-key, or a reverse-proxy auth layer)
- New LLM provider YandexGPT (AI Studio): authenticates with API key + Folder ID; ships YandexGPT 5.1 / Alice AI / Qwen3 / DeepSeek / GPT-OSS SKUs, or paste a full
- 2026.06.01: Added GitHub Models; thinking-control overhaul.
- New LLM provider GitHub Models: authenticates with a GitHub PAT (
models:readscope), with a free tier tiered per model (GPT-4.1 / 4.1 Mini / 4o Mini, Mistral Medium 3, Phi-4, Llama 3.3 70B) — a good no-cost entry point for users without a paid key. The gateway doesn't support reasoning params, so no thinking toggle is shown. - Thinking-control overhaul: Mistral (Medium 3.5 / Small 4) and Cohere Command A Reasoning move from always-on to an off / on toggle; Perplexity Sonar Deep Research gains off / low / medium / high.
- Custom (unlisted) models on a thinking-capable provider get a new three-state off / on / auto control: off explicitly disables, on enables, auto omits the param to follow the model's default (a fallback for strict providers that error on non-thinking models); defaults to off.
- Fix: provider selection guard is now purely derived, so a stale bundle no longer silently overrides the user's choice.
- New LLM provider GitHub Models: authenticates with a GitHub PAT (
- 2026.05.26: Translation engine deep-tuning.
- New opt-in
maxTokenscap for Custom (OpenAI-compatible) to prevent local small-model repetition loops;finish_reason=lengthtruncation detection added to Claude / Gemini / OpenAI-compat - Default
contextWindowfor Custom local LLM lowered from 100 to 30 to match the behavior of models under 14B - Failure handling: failed lines now auto-fill with original text (output always usable); whole-language failures in multi-language mode aggregate into a dedicated panel with one-click copy-target-language for retry
- SRT / VTT bilingual mode adds an ASS output option with separate Default / Secondary styles for original and translation — independent font/color/size tweaks in any subtitle editor
- Friendly error messages for NetworkError / timeout / cascaded abort — no more raw "Failed to fetch"
- Thinking mode toggle now stored per model; UI auto-distinguishes three-level (off/low/med/high) / binary (off/on) / low-high-only effort variants; intrinsic-thinking SKUs no longer show a useless toggle
- Language picker overhaul: 122 languages grouped by geography + speaker count; multi-language mode adds Top 10 / Europe / East Asia / Indian Subcontinent presets; single-language mode remembers the last 5 picks; mobile collapses to a single column
- DeepLX moved below DeepL in the service dropdown (brand-grouped, stable version first)
- New opt-in
- 2026.05.06: Service catalog v2 — major release.
- New MT service: TranslateGemma (Google's translation-specialized Gemma derivative, self-hosted)
- New LLM providers: MiniMax, Tencent Hunyuan, Baidu ERNIE (Qianfan), Cohere
- Quick-pick regional endpoints across providers (Mainland CN / International / US, etc.)
- Thinking mode + reasoning effort (low / medium / high) for DeepSeek, NVIDIA NIM, Claude, etc.
- New "skip system message" toggle for Custom (OpenAI-compatible), compatible with Gemma chat templates
- URL field auto-completes
/v1/chat/completionson blur — guards against misusing Responses / legacy completions - Standalone Prompt preset management (decoupled from LLM API presets, freely combinable)
- Main page now shows an API Status badge plus a one-click source/target language swap
- Fixed: cache writes were happening even when caching was disabled; LLM-backed MT (Qwen-MT, TranslateGemma) retry behavior now aligns with LLM
- 2025.07.29: Added context-aware translation for AI mode.
- 2025.03.20: Completed i18n (internationalization); fixed known bugs including cache key issues; project open-sourced.
- 2025.02.28: Added support for custom system and user prompts for LLM model translations.
- 2025.02.27: Enhanced timeline compatibility for bilingual subtitles, supporting formats that omit the default hour, exceed 100 hours, and display 1 to 3 millisecond digits.
- 2025.02.21: Added support for batch translating into multiple languages at once.
- 2025.02.08: Fixed encoding detection issue in multi-file mode; added interfaces for OpenAI and Groq (feedback for other interfaces is welcome).
- 2025.02.06: Added Siliconflow API; added
temperaturesetting for LLM models to control AI translation randomness. - 2025.02.05: Fixed an issue where blank lines and DeepLX line breaks were ignored during chunked translation; added separate chunk translation parameters for different APIs.
- 2025.01.18: Added support for automatic encoding detection for uploaded files; added an option to display translated content above or below the original subtitle line.
- 2025.01.13: Added a self-hosted DeepLX interface; refactored translation API settings into a separate component to simplify frontend logic.
- 2025.01.10: Added DeepSeek translation interface. Fixed DeepLX subtitle line break issue; improved translation language search and detection (added support for searching in Chinese/English).
- 2024.12.19: Added automatic detection for single-file vs. multi-file mode; added automatic source language detection; improved file export naming convention for single-file translations.
- 2024.12.12: Used p-limit to restrict concurrency, significantly reducing errors with free APIs.
- 2024.10.12: Added a custom delay setting for the GTX API. (Based on feedback, the previous setting could easily hit the limit after 150 requests, while lower numbers didn't require adjustment).
- 2024.09.08: Added batch translation limits for the GTX API to ensure stability. Added support for Traditional Chinese.
- 2024.09.07: Improved recognition of WebVTT format; set
.assas the default format for bilingual subtitles and added compatibility for multi-line bilingual processing. - 2024.09.06: Added local caching for translation results to speed up the translation of repeated content.
- 2024.09.05: Added functionality to skip purely numeric or character-based content to avoid unnecessary translations.
- 2024.08.13: Added bilingual subtitle output feature.
- 2024.07.11: Added automatic subtitle format matching in single-file mode.
- 2024.07.06: Added support for
.vttand.asssubtitle formats. - 2024.07.05: Expanded supported languages for subtitle translation to 35.
- 2024.06.26: Added a feature to extract only the subtitle content.

