Prowlarr Integration & Indexer-Aware Rate Limiting (Feature #8)
- ProwlarrConfig model — singleton-per-user connection settings with Fernet-encrypted API key
- ProwlarrClient — reads indexer configs, application mappings, usage stats, and circuit-breaker status from Prowlarr API v1
- IndexerRateLimitService — resolves effective rate limit per instance by matching to Prowlarr apps via tag intersection, computing remaining per-indexer budgets (hourly/daily aware), and excluding circuit-broken indexers
- Search execution integration — caps max_items_per_run based on Prowlarr indexer budget; early-returns when budget is 0
- Settings UI — Prowlarr connection config with test button
- Dashboard widget — Indexer health table showing per-indexer usage vs limits
Season Pack Intelligence, Sonarr Only (Feature #9)
- Per-queue config — season_pack_enabled toggle + season_pack_threshold (2-50, default 3)
- Search execution — groups missing episodes by (series, season), issues SeasonSearch when group >= threshold, counts as 1 API call
- Queue modal — season pack toggle only shown for Sonarr instances
- Search log — shows "Season Pack" action with episode count
Bug Fix
- Season 0 (specials) excluded from season pack grouping
Stats
- 69 new tests, 731 total passing
- 10 new files (5 source + 5 test)
- +4,289 lines added
Full Changelog: v0.3.1...v0.4.0