v1.2.0: Bazarr+ subtitle providers via the Provider Hub - #3
Merged
Conversation
LavX
commented
Jul 6, 2026
OwnerAuthor
Code reviewStrict review (6 independent reviewers + per-issue confidence scoring). Found 4 issues, most-confident first:
arrstack/src/wiring/bazarr-providerhub.ts Lines 51 to 58 in 151614a
arrstack/src/wiring/bazarr-providerhub.ts Lines 99 to 104 in 151614a
arrstack/src/wiring/bazarr-providerhub.ts Lines 113 to 118 in 151614a
arrstack/src/usecase/install.ts Lines 550 to 552 in 151614a arrstack/src/usecase/update.ts Lines 136 to 138 in 151614a Filtered out below the confidence bar: manifest |
- Readiness gate: call waitForBazarrApiReady before the Provider Hub calls so the wiring waits out Bazarr+'s post-restart DB-migration 500s (the update path only gates on /api/system/ping) instead of silently no-opping. Switch the catalog GET to fetchWithRetry (forgives transient 500/401) and check res.ok. - Add AbortSignal.timeout to every Provider Hub fetch so a wedged Bazarr can't hang an unattended install/update. - waitForInstalled tolerates a transient GET /providers error mid-build instead of dropping the provider on a single blip. - Only pass flaresolverr_url when flaresolverr is actually enabled. - Export + parameterize waitForBazarrApiReady's poll interval; add a test for the 500-during-migration window. 319 tests pass, typecheck clean.
The POST /installations call blocks while the Hub downloads the provider bundle and builds its venv; heavy providers (opensubtitles) exceed the 15s per-request timeout, which falsely reported them as failed and skipped their enable+config PATCH. Give the install POST a 180s cap; keep 15s for the quick catalog/list/ patch calls. Verified end-to-end on a live Bazarr+ 2.4.0: all 5 providers install + enable and opensubtitles gets its flaresolverr_url.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Migrates arrstack's default Bazarr+ subtitle providers from the built-in providers to the Provider Hub (Bazarr+ 2.4.0's plugin system; the built-in providers are being retired), and drops the standalone opensubtitles-scraper container. FlareSolverr stays as the Cloudflare fallback.
Stacked on the v1.1.1 branch (PR #2), so this diff is only the v1.2.0 commits.
Changes
opensubtitles-scraperservice (catalog + wizard bundle + bazarrdependsOn/env). The OpenSubtitles.org scraper now lives in the catalog'sopensubtitlesprovider (native ai-cloudscraper + FlareSolverr fallback).podnapisi(dead, not in the catalog) fromenabled_providers; remove the deadopensubtitles: { scraper_service_url }block.wiring/bazarr-providerhub.ts: after Bazarr+ is healthy, install + enable the migrated default set via the Provider Hub REST API (GET /catalogfor the manifest,POST /installations, poll,PATCH /providers/<id>). Idempotent + best-effort per provider.opensubtitlesgetsflaresolverr_url;opensubtitlescom/addic7edare enabled but left credential-less for the user.installandupdate.Verification
bun test: 318 pass / 0 failbun run typecheck: cleanDesign/plan: docs/superpowers/specs/2026-07-06-bazarr-provider-hub-migration-design.md (local).