## Summary

The "Blocklist and search" feature is broken for all users. Clicking the blocklist button on a download (e.g. the film "Project Hail Mary", `arrQueueId: 905000340`, `arrType: radarr`) consistently returns a `403 Download not found or permission denied` error.

## Root Cause

The server-side lookup in `server/routes/dashboard.js` uses strict equality (`===`) to find the matching download:

```js
const download = allDownloads.find(d => d.arrQueueId === arrQueueId && d.arrType === arrType);
```

- `d.arrQueueId` is populated from the Radarr/Sonarr queue API response as a **number** (e.g. `905000340`).
- `arrQueueId` from `req.body` originates from the client SPA via a DOM `dataset` attribute, which is always a **string** (e.g. `"905000340"`).
- Due to the type mismatch, `905000340 === "905000340"` evaluates to `false`, so the lookup always fails and returns `403`.

## Evidence

Server log (live environment, `2026-05-24`):

```
[Blocklist] Download not found: { arrQueueId: 905000340, arrType: 'radarr' }
```

Client log confirms user clicked blocklist at `21:01:19`, `21:01:32`, and `21:02:35`.

## Steps to Reproduce

1. Open the dashboard on a Radarr or Sonarr download with a pending queue entry.
2. Click the "Blocklist and search" button.
3. The action silently fails; the download is not removed and no re-search is triggered.
4. Server logs show `[Blocklist] Download not found`.

## Proposed Fix

Cast both sides of the comparison to `String` before comparing:

```js
const download = allDownloads.find(d => d.arrQueueId != null && String(d.arrQueueId) === String(arrQueueId) && d.arrType === arrType);
```

This fix will be released in version `1.7.16`.

## Severity

**High** — The blocklist-and-search feature is completely non-functional for all users. There is no workaround within the UI.
