Skip to content

v0.8.2 — Install wizard 2.0, migrate from Overseerr/Jellyseerr/Seerr

Choose a tag to compare

@Arediss Arediss released this 19 May 22:00

Highlights

This release is centered on the install experience. The wizard was rewritten from scratch with a guided 7-step flow, picks up where Overseerr / Jellyseerr / Seerr left off if you're migrating, and now leaves a fully-wired instance behind — no more half-finished setups landing on the home page with a noisy setup-checklist.

It also drops the post-install process restart, so Oscarr no longer needs a supervisor (docker --restart, systemd, kubernetes restartPolicy) just to come back online.

Plugin authors: @oscarr/sdk gains language + translation helpers, and registerGuards now receives the request context (tmdbId, mediaType, seasons). The Quotas plugin which requires engines.oscarr >=0.8.2 is now installable.


New

  • Install wizard 2.0 — a 7-step state machine (Secret → Admin → Path → Services → Defaults → Sync → Done) replaces the old monolithic page. Brand panel + form split, categorized service tile grid (media-server / *arr / download-client / indexer / monitoring), modal-based per-service config, and a Done step that mirrors the admin setup-checklist.
  • Migrate from Overseerr / Jellyseerr / Seerr at install — new Fresh / Migrate path picker. The Migrate path probes the source via /api/v1/settings/* and bootstraps services, default folders, locale and quality tiers in one shot. *arr API keys and the Plex token aren't exported by Seerr — the wizard flags them as manual follow-ups.
  • Import users + requests from Overseerr / Jellyseerr / Seerr (admin) — dedicated Import tab with preview, conflict resolution (link / create / skip) and TMDB-probed importable list. Status code 4 (failed/completed) now correctly maps to approved.
  • Quality auto-mapping — new POST /admin/quality-mappings/auto endpoint scans every Radarr/Sonarr service and maps profiles to Oscarr tiers via name heuristics (HDR+UHD → 4K HDR, UHD → 4K, 1080p/720p → HD, 480p → SD). Idempotent; the install wizard calls it automatically after seeding the tiers.
  • Surface undecryptable service credentials — after restoring a backup from another instance (different OSCARR_SECRET_KEY), affected services now show an explanatory banner + per-row alert instead of leaking the enc:v1:… ciphertext into the admin form.

Plugins

  • @oscarr/sdk gains i18n helpersgetLang(), useLanguage() React hook, and a t(dict, lang, key, vars?) helper with fallback chain + interpolation. Hot-switches when the user changes language in Oscarr — no react-i18next bundle to drag in.
  • Plugin guard handlers receive request contextregisterGuards() handlers now get tmdbId, mediaType and seasons alongside the user. Additive change, existing guards keep working.
  • Plugin toggle is gated — toggling an incompatible plugin (engines range mismatch) or one that failed to import now bails early with a clear error message instead of a cryptic Prisma RecordNotFound. The admin UI also disables the toggle switch.

Fixes

  • Backend no longer restarts after install — the /setup/sync handler used to process.exit(0), relying on a supervisor to respawn. Setup routes are already 403'd by the existing requireNotInstalled preHandler once the install completes, so the exit was redundant and broke dev environments + bare-metal deployments without a supervisor.
  • Seerr import status mapping + TMDB probe — completed requests (Overseerr status 4) no longer land as pending, and re-running a preview after a partial import no longer infinite-loops on dead tmdbIds.
  • docker-compose injects OSCARR_SECRET_KEY into the container — compose only interpolates .env for YAML substitution, not container env. The bundled docker-compose.yml now adds both env_file: - .env and an explicit environment: entry so fresh upgrades pass the boot-time secret check.

Internal

  • Service connectors can declare requiredForInstall: true on their ServiceDefinition — the install wizard derives required categories from this flag instead of hardcoding the list. Adding a new required connector backend-side automatically gates the wizard with no frontend edit.

🐳 Image: ghcr.io/arediss/oscarr:0.8.2