Releases: opensubtitles/OpenSubtitles-Uploader-PRO
Release list
v1.8.26
v1.8.25
Version 1.8.25 - Fix Linux AppImage startup for other users
v1.8.24
New release with improvements and bug fixes. See commit history for detailed changes.
v1.8.23
Version 1.8.23 - Tauri 2.11 upgrade
Upgrades the desktop runtime from Tauri 2.7.0 to 2.11.6 and every Tauri
plugin to its latest compatible 2.x release. No application behaviour
changes; main.rs and the React sources are untouched.
Runtime:
tauri 2.7.0 -> 2.11.6
tauri-build 2.3.1 -> 2.6.3
wry 0.52.1 -> 0.55.1
tao 0.34 -> 0.35.3
Plugins (Rust / npm):
dialog 2.3.2 -> 2.7.3 / 2.3.0 -> 2.7.3
fs 2.4.1 -> 2.5.2 / 2.4.0 -> 2.5.2
http 2.5.1 -> 2.6.1 / 2.5.0 -> 2.6.1
process 2.3.0 -> 2.3.1 / 2.3.0 -> 2.3.1
shell 2.3.0 -> 2.3.6 / 2.3.0 -> 2.3.6
updater 2.9.0 -> 2.12.0 / 2.9.0 -> 2.12.0
api / 2.6.0 -> 2.11.1
cli / 2.6.2 -> 2.11.5
Security: Tauri 2.11.1 enforces ACL checks for IPC requests from remote
origins even when no AppManifest is configured. Previously custom commands
bypassed ACL entirely, letting any origin invoke them. It also corrects
.localhost suffix handling in local-origin detection on Windows and Android,
which classified remote hosts such as app.evil.com as local.
Verified building on ubuntu-22.04, macos-14 and windows-2022 with
cargo build --release --locked, which also proves the committed lockfile is
complete on every target. Locally on macOS: zero compiler warnings, .app /
.dmg / .app.tar.gz bundles produced, app launches and renders its window,
225/225 tests pass, ESLint and TypeScript error counts unchanged from the
pre-upgrade baseline.
v1.8.22
Version 1.8.22 - Session keep-alive and auth robustness
Keep the OpenSubtitles session alive while the app is open, and stop
transient network failures from logging users out.
The app stores a server-issued PHPSESSID as its session token. The server
expires it six hours after the last request (Set-Cookie Max-Age=21600),
and nothing was refreshing it.
Session keep-alive:
- Add XmlRpcService.noOperation() and an hourly keep-alive ping
- Ping is best-effort: it never mutates authentication state, because
NoOperation answers 200 OK even for tokens the server never issued - Guard against timer stacking, stale in-flight state, and hung sockets
- Revalidate with a fresh GetUserInfo on wake/refocus after an idle gap,
bypassing the one-hour user-info cache
Authentication fixes:
- checkAuthStatus no longer discards stored credentials when the server
is simply unreachable; only an actual rejection logs the user out - Return the verdict instead of stashing it on the service singleton,
which two concurrent StrictMode inits could clobber - Retry an unverified session when connectivity returns
- Await restoreAuthFromStorage; a promise is always truthy
Latent bugs found by fixing the ESLint parser:
- updateService: downloadPath/totalBytes were block-scoped to the try but
read in the catch, so the signature-validation download fallback threw
ReferenceError instead of running - DebugPanel: same pattern left the older-browser clipboard fallback dead
Security:
- Stop logging partial session ids and tokens in SessionManager,
sessionUtils, DebugPanel and TryUploadSubtitles - DebugPanel no longer copies a token prefix into the clipboard blob
- Escape the token in every XML-RPC request body
Housekeeping:
- ESLint ecmaVersion 2021 -> 2022; static class fields broke the parser,
leaving eight service files silently unlinted - Store the session under the key detectSession actually reads, and purge
the orphaned write-only opensubtitles_session_id - Collapse two XML escapers into one, and make it null-safe
- Sync Cargo.lock, stale since 1.8.18
v1.8.21
Version 1.8.21 - Fix Upload button staying disabled after Clear All
v1.8.20
Version 1.8.20 - Rank validation, large subtitle uploads, episode labels
- Gold members holding any group rank are no longer denied uploading
- Subtitles around 380 KB and up no longer fail with a stack overflow
- Episodes attached by IMDb ID label as Episode instead of Movie
v1.8.19 - Extracted MKV Subtitles Fix
🐛 Bug Fix: Extracted MKV Subtitles Classification
Fixed extracted MKV subtitles being incorrectly classified as orphaned subtitles, which prevented them from displaying episode numbers.
What was broken
- When subtitles were extracted from MKV files, they were sometimes treated as orphaned instead of paired with the source video
- Orphaned subtitles display differently in UI (without episode info from the paired video)
- This was a race condition in subtitle pairing detection
What's fixed
- Extracted subtitles now explicitly check
pairedWithMkvflag to prevent orphan classification - Subtitles extracted from MKV are now correctly recognized as paired, not orphaned
- Episode information now displays correctly for extracted subtitles
Files changed
- SubtitleUploader.jsx: Added
pairedWithMkvflag check in orphaned subtitle filter
v1.8.18
🐛 Bug Fix: Episode Display
Fixed episode numbers not displaying in video details when using the Features API data source.
What was broken
- Episodes (Season/Episode numbers) were only visible when using XML-RPC data
- When REST API (Features) data loaded, episode information disappeared from UI
- Backend was correctly detecting episodes, but UI wasn't showing them
What's fixed
- Added season/episode display to Features API rendering path
- Episodes now consistently appear for all data sources
- VideoFile component now merges episode data from GuessIt with Features API data
Files changed
- VideoFile.jsx: Added season/episode fields to Features API details section
v1.8.17
Version 1.8.17 - Episode series title fallback fix