Improvements:
-
Changed default API key rotation frequency to "Per Batch": When enabling Gemini API key rotation, the default rotation frequency is now "Per Batch" (rotates key for each translation batch) instead of "Per Request" (once per file). This provides better rate limit distribution across multiple API keys. "Per Batch" is now also listed first in the dropdown as the recommended option.
-
Centralized shared subtitle helper functions: Refactored
createEpisodeNotFoundSubtitleandcreateZipTooLargeSubtitlefrom duplicate local implementations in each provider (subsource.js,subdl.js,opensubtitles.js,opensubtitles-v3.js,subsRo.js) into a single shared implementation inarchiveExtractor.js. This eliminates ~500 lines of duplicated code while maintaining all functionality including episode number extraction, season pack detection, and user-friendly error messages. -
Centralized response content analysis: Moved
analyzeResponseContentfunction fromsubsource.jsto the sharedresponseAnalyzer.jsutility. All providers (SubSource, SubDL, OpenSubtitles, OpenSubtitles V3, Subs.ro) now use the centralized version for consistent detection of HTML error pages, Cloudflare blocks, CAPTCHA pages, JSON errors, gzip responses, and other non-subtitle content. -
Enhanced response analysis patterns: Improved the
analyzeResponseContentfunction with additional detection patterns: added 'challenge' keyword detection for CAPTCHA challenges, added 'failed' keyword detection for error responses, and added detection forstatus: 'error'string patterns in JSON responses. -
Improved SCS timeout warning: Added debug logging when the user's configured timeout is too low for Stremio Community Subtitles (SCS). SCS requires ~30 seconds due to server-side hash matching. When timeout is below 28s, a debug message now suggests increasing the timeout for reliable SCS results.
-
Enhanced SCS performance logging: Added detailed timing logs for SCS search and download operations, making it easier to diagnose slow SCS responses and understand performance characteristics.
Cleanup:
-
Removed Sentry debug endpoints: Removed
/debug-sentryand/api/sentry-testendpoints that were only used for verifying Sentry integration during initial setup. Core Sentry error tracking remains active for production error monitoring. -
Removed Gemini 2.5 Pro from model selection: Removed
gemini-2.5-profrom the Translation Model dropdown. Gemini 3.0 Pro remains available for users who need a Pro-tier model. -
Removed duplicate subtitle helper functions from providers: Cleaned up ~500 lines of duplicated code by removing local copies of
createEpisodeNotFoundSubtitle,createZipTooLargeSubtitle, andanalyzeResponseContentfromsubsource.js,subdl.js,opensubtitles.js,opensubtitles-v3.js, andsubsRo.js. These providers now import the shared implementations fromarchiveExtractor.jsandresponseAnalyzer.js. -
Removed spurious auto-save on Learn Mode toggle: Fixed Learn Mode toggle and radio buttons triggering
saveConfig()on every change. These controls now only updatecurrentConfigwithout saving, consistent with other config page controls that require explicit save.
Bug Fixes:
-
Fixed OpenSubtitles config section padding asymmetry: The OpenSubtitles provider section had asymmetric padding (only bottom padding), causing it to appear closer to the section above compared to other provider entries. Changed to symmetric padding matching other providers.
-
Fixed createInvalidResponseSubtitle signature: Updated the function signature in
responseAnalyzer.jsto makeresponseSizeparameter optional with a default of 0, preventing errors when providers call it without the size argument. -
Fixed UTF-8 BOM in subtitles.js: Removed UTF-8 BOM character from the beginning of
src/handlers/subtitles.jsthat was causing potential parsing issues.