github webtor-io/self-hosted v2.1.0

5 hours ago

Subtitles become a feature, not an afterthought: the player can now find tracks on OpenSubtitles and translate any track into your language with AI — both opt-in, both off until you bring a key. Under the hood, a week of seek-accuracy work in the transcoder and the player ships with it.

New

  • AI subtitles (subtitle-translate, new service): a "Translate to " track in the subtitle picker, translating embedded tracks, uploaded files and OpenSubtitles finds progressively while you watch. Finished translations persist in the embedded S3, so a film is translated once. Needs SUBTITLE_TRANSLATE_ENABLED=true and ANTHROPIC_API_KEY — calls are billed to the key, so both halves are deliberate, and docker logs names whichever half is missing.
  • OpenSubtitles tracks (video-info, new service): subtitles found for the exact file by hash, offered in every language OpenSubtitles has. Enabled by OSDB_API_KEY alone (a free consumer key is enough); search answers and fetched files are cached in Redis and the embedded S3, so a key's quota is spent once per film. Without the key, exports simply carry no subtitles leg.
  • content-transcoder: seeking got honest — the playlist reports where the run actually starts (keyframe, not the 30-second grid), and the player uses it to keep subtitles in sync after a seek.
  • web-ui: the player waits for subtitles to catch up after a seek instead of playing over their silence — with a visible banner and a working "keep waiting" choice; AI translation polls survive throttling; restored subtitle selections survive track wipes on seek.

Fixes

  • video-info: died at startup when probes are off (USE_PROBE=false) — a typed-nil probe hidden inside an interface; production never saw it, this image would have.
  • content-transcoder: the legacy /index.m3u8 route answers again, serving the master playlist inline without spawning FFmpeg.

Upgrade

No schema migrations. All new variables are optional and off by default: SUBTITLE_TRANSLATE_ENABLED + ANTHROPIC_API_KEY (+ SUBTITLE_TRANSLATE_MODEL) for AI subtitles, OSDB_API_KEY (+ OSDB_USER/OSDB_PASS/OSDB_RATE) for OpenSubtitles — see the README's "Configuring OpenSubtitles" and "Configuring AI features". Existing .env files keep working. docker pull ghcr.io/webtor-io/self-hosted:2.1.0.

Don't miss a new self-hosted release

NewReleases is sending notifications on new releases.