github Listenarrs/Listenarr v1.3.11-canary
Canary 1.3.11

pre-release6 hours ago

🔍 The Problem

On the Wanted page, the "Search All" button initiated a sequential release grab for every missing audiobook in the library at one request per second without user confirmation, ignoring visual filter text, re-searching books with active downloads in progress, remaining enabled when zero audiobooks matched, and leaking background searches across view unmounts.

Root cause analysis identified two architectural gaps across the frontend and backend:

  1. In fe/src/views/content/WantedView.vue, the display table rendered items from filteredWanted (scoped to filterText), but the searchMissing action iterated over categorizedWanted.value.missing. This collection mismatch caused the button to bypass visual filters entirely. In addition, categorizedWanted.missing only excluded items currently searching in the local UI state rather than checking activeDownloadsByAudiobook / hasActiveDownload(item), causing books with downloads in progress to be re-grabbed. The button's :disabled attribute evaluated categorizedWanted.missing.length === 0 rather than the filtered collection, leaving it enabled even when filtering yielded zero matches. Furthermore, searchMissing executed immediately upon click without confirmation, lacked abort capabilities, and lacked an onBeforeUnmount lifecycle hook to clear active delay timers or stop pending iterations when navigating away.

  2. In listenarr.application/Downloads/Submission/DownloadService.cs, SearchAndDownloadAsync queried external indexers before checking if an active download already existed for the target audiobook, placing unnecessary load on indexers and risking account suspension. Additionally, when SendToDownloadClientAsync returned an empty download identifier (indicating a duplicate download was suppressed), DownloadService still proceeded to log history and returned a false positive success status.

🛠️ The Solution

  • Scoped Actionable Collection: Replaced `c...

Automated Canary build

Don't miss a new Listenarr release

NewReleases is sending notifications on new releases.