Repository navigation
Releases
Releases · janwee-sha/SubTandem
SubTandem 0.3.0
Immutable
release. Only release title and notes can be modified.
SubTandem v0.3.0
New Features
- SubTandem now follows IINA’s interface language on IINA 1.5.0 or later, covering all 31 language variants shipped with IINA 1.5.0. Controls, status and error messages, accessibility text, and the plugin description use that language, with a right-to-left layout for Hebrew. Restart IINA after changing its application language; no separate plugin language setting is needed. Older hosts, unsupported languages, and unavailable language information use English, and missing translations fall back to English individually.
- Target languages, fonts, named color presets, and discovered models are sorted for the interface language. Custom model ID… stays first in every service’s model list. Changing the interface language preserves your translation target, font, and colors; the available subtitle translation targets remain unchanged.
- Font and color pickers follow the same interface language. System-provided picker text uses that language when macOS supplies it and otherwise falls back to an available system language.
Bug Fixes
- Fixed punctuation and reading order in right-to-left subtitle translations. Sentence-ending punctuation, parentheses, numbers, and mixed text now follow the translation target’s direction, independently of the interface language.
SubTandem 0.2.1
Immutable
release. Only release title and notes can be modified.
SubTandem v0.2.1
Improvements
- Clearer API root, Model ID, and Network route guidance across OpenAI, Claude, DeepSeek, and Ollama. The translation request address updates as you edit the API root and wraps in narrow sidebars.
- Updated model examples and guidance recommending low-effort models. You can still enter any exact Model ID.
- Changing Service type now resets Profile name to the selected service's name.
- New Profiles use Use system proxy settings by default. Saved routes and draft route choices are preserved when switching services.
- Removed the subtitle beneath New profile.
Upgrade and Compatibility Notes
- For the official OpenAI service, use
https://api.openai.comas the API root; for Claude, usehttps://api.anthropic.com. Check existing Profiles when upgrading, since saved API roots remain unchanged until you edit and save them. For compatible services, confirm the translation request URL shown in the editor.
SubTandem 0.2.0
Immutable
release. Only release title and notes can be modified.
SubTandem v0.2.0
New Features
- API keys are now stored encrypted on your Mac, protected by Secure Enclave.
- View and edit saved API keys in the Profile editor, masked by default, with Show API key and Hide API key controls. Saving an empty API key field now clears the saved key.
Improvements
- Updated the empty Profile list styling.
- Removed the extra API key save confirmation beneath the Profile list.
Bug Fixes
- Fixed startup Profile loading failures that blocked New profile.
Upgrade and Compatibility Notes
- Upgrading from v0.1.9 preserves Profile settings and a valid enabled selection, but clears saved API keys. Re-enter and save keys for services that need them. Snapshots and other backups may still contain old keys; rotate those keys with your service.
- Saving or using a nonempty API key requires a Mac with Secure Enclave. Services that do not require an API key remain supported.
- Back up the complete
credentials.json. Restoring saved API keys requires the original Mac, user account, and valid system keys, and is not guaranteed. Re-enter any key that cannot be recovered.
SubTandem 0.1.9
Immutable
release. Only release title and notes can be modified.
SubTandem v0.1.9
New Features
- Hover over a shortened name, service and model, or Endpoint line in a saved Profile to read its full text. A shortened line is also available in full when navigating the Profile with a keyboard or assistive technology; lines that fit do not show a duplicate hover hint.
Improvements
- Collapsed Profile cards now show the name, service and model, and Endpoint. Expand a card to view its Network route and API key status.
- Session now shows readable subtitle format names and places Translated cues before Total cues, with plain counts for the current session.
- Model list refreshes stop using an outdated draft when its settings change or its editor closes. Late results no longer replace the current model list or Model ID.
- Test passed now requires a complete, nonblank result for the current test sample across OpenAI, Claude, DeepSeek, and Ollama. Empty or incomplete responses report an unsupported response instead of a successful Test.
- Editing an existing Profile's Endpoint, Network route, model, name, or other settings keeps its saved API key available for Test and model refresh, including before saving the changes. Changing Service type does not reuse the previous service's API key.
- When a translation service stops because its output is too long, Test and Session report an unsupported response. An explicit refusal continues to show the refusal message.
Bug Fixes
- Successful Profile activation now clears an outdated activation timeout instead of leaving an error beside an enabled switch.
- After translations succeed, Session clears outdated service errors and reflects the current translation state.
SubTandem 0.1.8
Immutable
release. Only release title and notes can be modified.
SubTandem v0.1.8
Improvements
- Make Session failures shorter and more actionable, keep
Translation is offandTranslations are runningstable, and avoid preparing or showing subtitle details while translation remains off after restarting IINA. - Simplify Profile feedback with a single
Testing…message, a concise permanent-deletion warning, and no internal work-limit summary in Session. - Use consistent guidance for unsupported subtitle types and translation-service failures across Profile Test and Session, and provide a direct prompt when no translation service is enabled.
Bug Fixes
- Prevent supported embedded subtitles from incorrectly showing preparation failure or Retry during cold starts and rapid media or subtitle-track changes.
- Show translations sooner for OpenAI-compatible Profiles during dense dialogue instead of waiting for the cue buffer to reach 60.
SubTandem 0.1.7
SubTandem v0.1.7
Bug Fixes
- Prevent IINA startup and playback sessions from stalling or crashing when subtitle preparation completes while the player is still waiting for a helper process.
- Keep sustained subtitle translation responsive without progressive memory, thread, or CPU growth that could eventually freeze IINA.
- Prevent repeated Profile switching during active translation from crashing IINA, while ensuring only the latest selected Profile can publish translation results.
- Restore Profile toggles and subtitle preparation automatically after background helpers exit while idle, without requiring an IINA restart. A failed Profile change now becomes retryable instead of leaving its controls disabled.
SubTandem 0.1.5
SubTandem v0.1.5
New Features
- Enable, disable, or switch translation profiles using the toggle beside each profile name. At most one profile is enabled across all playback windows, and every window follows the last successfully confirmed change. Failed changes preserve the previous choice.
- Restore the enabled profile, or keep all profiles disabled, when opening another window or restarting IINA. If no global choice has been saved, all profiles start disabled. Saving changes to or deleting the enabled profile clears that choice; an unavailable or invalid saved profile is not automatically enabled.
- Keep profile activation separate from Translate: translation requires both an enabled profile and Translate to be on. Saving or testing a profile does not enable it.
- Click a profile's content area, or activate it with the keyboard, to open it for editing. The editing highlight updates immediately and stays distinct from its enabled toggle. Switching to another profile discards unsaved edits; using its toggle, Test, or Delete does not change which profile you are editing.
Improvements
- Keep Test and Delete buttons aligned and the same size while testing or deleting, with only those two actions below each profile.
- Use a red Delete button and a macOS-style confirmation that identifies the profile and explains that its settings and saved key will be permanently removed. Cancel or Escape closes the confirmation without changing the profile.
SubTandem 0.1.4
SubTandem v0.1.4
New Features
- Translate readable short, romanized, mixed-language, and unknown-source subtitle tracks without waiting for local language detection. The selected translation service now determines the source language for each subtitle within the existing translation request.
- Keep already-target-language subtitles in the normal translation flow and require the selected service to return them character for character, preserving capitalization, spacing, punctuation, and line breaks.
- Show only actionable subtitle preparation, configuration, translation, and service status in the sidebar. The previous detected-language field and language-detection states have been removed.
Upgrade and Compatibility Notes
- Short, unknown-source, mixed-language, and already-target-language text is still sent to the explicitly selected service when translation is enabled and may incur service charges.
- The selected model must be able to infer source languages, follow the exact target language or regional variant, return structured translations, and preserve already-target-language text exactly.
SubTandem 0.1.3
SubTandem v0.1.3
New Features
- Customize SubTandem's translated subtitle text from the existing Subtitle section. Font color, size, family, bold, italic, border color, border width, and background color update the current translated subtitle immediately without changing its content, timing, horizontal alignment, or saved position.
- Choose Font, Border, and Background colors from a compact palette, including transparency, or open the macOS system color panel for precise color and alpha adjustments. Each picker changes only its originating field, and closing it without a change preserves the previous value.
- Search and preview installed font families in a dedicated picker. Cancelling preserves the current font; if a saved font becomes unavailable, SubTandem temporarily uses the system font and automatically restores the selected family when it becomes available again.
- Reuse one saved subtitle style across media, playback windows, and IINA sessions. Concurrent windows merge edits to different fields, while the last valid edit wins for the same field; a failed save restores the last confirmed complete style without interrupting playback.
Upgrade and Compatibility Notes
- Text style settings affect only subtitles rendered by SubTandem. They do not modify IINA's original subtitle track, source subtitle files, translation timing, or the existing Position preference.
- Existing installations start with white system text at Size 40, a black Border at Width 3, and a transparent Background. These mapped defaults preserve the previous Size 29 and Border Width 2 rendering baseline.
SubTandem 0.1.2
SubTandem v0.1.2
New Features
- Add Claude as a dedicated translation service, listed after OpenAI, with independent profiles that can be created, tested, selected, edited, and deleted. New Claude profiles use Anthropic's official API root by default and also support compatible custom HTTP or HTTPS endpoints and existing network route options.
- Refresh models exposed by a Claude endpoint or enter an exact custom model ID. Unsupported or failed model discovery preserves the current model and custom input, while stale results cannot replace the active profile's choices.
- Translate subtitles through the Claude Messages format and display only complete, correctly matched results. Refused, truncated, empty, malformed, or mismatched responses are rejected without replacing the original subtitle or blocking playback.
- Keep Claude credentials write-only after saving and isolated to their profile. Model discovery before selection sends no subtitle text; only the explicitly selected profile revision receives nearby subtitle text for translation. Provider requests may incur charges under the service owner's terms.
Upgrade and Compatibility Notes
- Existing OpenAI, DeepSeek, and Ollama profiles, credentials, model discovery, selection, and translation behavior remain unchanged.
- Claude requires a separately supplied API key and an exact model ID. Compatible endpoints must implement the required non-streaming Claude Messages behavior; a model-list endpoint is optional when a custom model ID is used.