Skip to content

v2.15.0 - MINOR - Usenet fallback through SABnzbd, faster metadata and reads, and user-reported fixes

Latest

Choose a tag to compare

@HabiRabbu HabiRabbu released this 20 Sep 01:49
· 4 commits to main since this release

v2.15.0 (2026-09-20)

New Features

  • When DroppedNeedle can't fetch an NZB itself - an indexer only SABnzbd can reach - it now hands SABnzbd the URL instead of failing the download. Definitive indexer errors still fail fast. (#457) (@daranto)

Fixes

  • Finamp can stream again: PlaybackInfo responses now carry every source field its parser requires, instead of crashing playback on a missing key. (#438)
  • A transient stall mid-scan no longer fails the whole run. The scope is re-walked within the shared restart budget, and only a still-wedged walk fails. (#444)
  • "Retry all failed" now retries only the newest failure per album or track instead of re-dispatching every historical failure.
  • Library Management previews no longer show a stale banner while still planning, and when inputs do change the preview names the changed files (up to five) plus a count.
  • Long planning runs no longer fail with a stale-input error just because unrelated catalog maintenance touched other albums: previews are now sealed against their own selected inputs. (#475) (@alceasan)
  • Files sitting in .recycle no longer resurface as separate albums: the default recycle bin directory is now excluded from scans. (#471) (@andysom25)
  • Holding a verified edition-conversion candidate for review no longer crashes; it is held as intended. (#469) (@andysom25)
  • Feishin works with transcoding disabled again: a max bitrate of 0 is treated as unset, per OpenSubsonic. (#468) (@andysom25)
  • AudioDB toggle labels in settings no longer overlap their descriptions. (#472) (@andysom25)
  • Newznab releases whose password status is unknown (negative values from aggregators) are no longer rejected as protected; only a positive flag blocks them. (#456) (@daranto)
  • The cache stats view loads again: the cache service is now built with its response store instead of raising a TypeError. (#443) (@Barrykilby)

Performance

  • MusicBrainz lookups now pre-resolve merged-entity redirects from a persisted local map instead of re-issuing the same requests, and upstream rate limits now surface as proper 429 responses with Retry-After.
  • Artist discography warming polls stop after about 60 seconds per mount instead of polling forever when the backend is stuck.
  • Database reads reuse one SQLite connection per thread instead of re-parsing the schema on every operation. (#470) (@funkypenguin)

Docs & Chores

  • Routine dependency bumps across the frontend and backend, including FastAPI 0.118.3 to 0.141.1 (route-allowlist tests now read the flattened OpenAPI surface) and eslint 9 to 10.