Bazarr+ v2.0.0 (Eclipse)
The first stable release as an independent hard fork. 243 commits, built from the ground up on top of upstream Bazarr with features the community has been asking for.
What's New
Provider Priority Search
Query providers in your preferred order. If the first provider returns subtitles meeting the minimum score, stop there. No more waiting for all providers when your best source already delivered. Requested upstream for 6 years (62 votes), rejected as "won't happen".
OpenSubtitles.org Web Scraper
OpenSubtitles.org shut down their API for all third-party apps. Bazarr+ ships a self-hosted FastAPI microservice that scrapes the site directly via CloudScraper with FlareSolverr fallback. No API key or VIP subscription needed.
AI Subtitle Translation (OpenRouter)
Access 300+ LLMs (Claude, Gemini, GPT, LLaMA, Grok) for subtitle translation. Dedicated settings page with model picker, pricing estimates, token usage, and speed metrics. Translate single files from the action menu or entire libraries in batch.
11 Batch Operations
Sync, translate, OCR fixes, common fixes, remove HI, remove tags, fix uppercase, reverse RTL, emoji removal, scan disk, search missing, upgrade. Supports up to 10,000 items per batch with real-time progress tracking.
Subtitle Viewer
Read-only subtitle preview with SRT/VTT/ASS parsing, cue table with timestamps, file size, and format detection.
Per-Provider Progress Tracking
Subtitle searches show which provider is being queried in real-time (e.g. "Searching opensubtitles (2/9)") in the jobs manager.
Mass Subtitle Sync
Sync entire libraries from System Tasks or the batch toolbar. Skips already-synced files. Requested upstream (249 votes), rejected.
Advanced Table Filters
Include/exclude by audio language, filter by missing subtitle language, search by title. Active filter chips with collapsible panel.
AES-256-GCM API Key Encryption
Encrypt translator API keys in transit with HMAC-SHA256 authentication and Test Connection validation.
Atmospheric Dark Theme
Navy (#121125) to cream (#fff8e1) with amber accents. Geist Sans font, grain texture, ambient glow, redesigned sidebar, ghost-style header buttons, fanart bleed effect. Full light mode support.
Security Hardening
- PBKDF2-SHA256 password hashing (600k iterations) replacing MD5
- CSRF protection with cryptographic state tokens in Plex OAuth
- SSRF blocking with DNS pinning and IP validation
- Brute-force protection (5 failed attempts = 5-minute lockout)
- Shell injection prevention with shlex.quote()
- Filesystem sandboxing (blocks /proc, /sys, /dev, /etc, /root, /tmp)
- eval() removal in throttled provider cache
- Constant-time comparison for API keys
- Per-service TLS toggle for Sonarr/Radarr/Plex
- All tracking removed (GA4 + legacy UA)
Upstream Sync
Cherry-picked 24 commits from upstream development including:
- RCE fix (pickle deserialization replaced with server-side cache)
- Scoring system refactor with score_out_of normalization
- Wait-for-completion across all job functions
- Gemini multi-key rotation and batch size config
- Two point alignment mods
- Sonarr sync optimization with garbage collection
- All frontend deps bumped (React 19, Vite 7, ESLint 10, TypeScript 5.9)
- Vendored Python libs bulk update (3229 files)
Bug Fixes
- Batch endpoint crash from jsonschema/flask_restx incompatibility
- React-router 7.13 blocker state transition error
- Provider throttling crash (time_until_midnight regression)
- Upgrade now finds current subtitle files when history path is stale
- Null score guard for manual download history entries
- Default minimum score lowered to 80% (scoring weight redistribution)
- OpenSubtitles scraper health check (shows "Unavailable" instead of silent failures)
- Announcements CDN fallback fix
Migration from Upstream Bazarr
- Back up your
/configdirectory - Replace your container image with
ghcr.io/lavx/bazarr:latest - Start the container
Config changes made by Bazarr+ are not backwards-compatible with upstream Bazarr. Keep your backup if you ever need to switch back.
Docker
docker pull ghcr.io/lavx/bazarr:latestOr with Docker Compose:
git clone --recursive https://github.com/LavX/bazarr.git
cd bazarr
docker compose up -dRuntime
- Python 3.14 (minimum 3.12)
- ESLint 10 flat config
- React 19, Vite 7, Mantine 8.3, TypeScript 5.9
Full Changelog: v1.5.6-lavx...v2.0.0
